[gimp] Meson port.
- From: Jehan <jehanp src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp] Meson port.
- Date: Wed, 11 Sep 2019 15:06:00 +0000 (UTC)
commit 65eff6f15049f183a9c0fe82594997e071a50b99
Author: Félix Piédallu <felix piedallu me>
Date: Wed Nov 1 14:27:13 2017 +0100
Meson port.
app-tools/meson.build | 15 +
app/actions/meson.build | 104 ++
app/config/meson.build | 74 ++
app/core/meson.build | 263 ++++
app/dialogs/meson.build | 64 +
app/display/meson.build | 108 ++
app/file-data/meson.build | 21 +
app/file/meson.build | 16 +
app/gegl/meson.build | 33 +
app/git-version.h.in | 5 +
app/gui/meson.build | 35 +
app/menus/meson.build | 20 +
app/meson.build | 191 +++
app/operations/layer-modes-legacy/meson.build | 29 +
app/operations/layer-modes/meson.build | 27 +
app/operations/meson.build | 62 +
app/operations/tests/meson.build | 10 +
app/paint/meson.build | 58 +
app/pdb/meson.build | 85 ++
app/plug-in/meson.build | 51 +
app/propgui/meson.build | 31 +
app/tests/create_test_env.sh | 29 +
app/tests/meson.build | 91 ++
app/text/meson.build | 36 +
app/tools/meson.build | 131 ++
app/vectors/meson.build | 26 +
app/widgets/meson.build | 237 ++++
app/xcf/meson.build | 18 +
build/windows/installer/lang/extractlang.sh | 11 +
build/windows/installer/lang/meson.build | 61 +
build/windows/installer/meson.build | 1 +
build/windows/meson.build | 13 +
cursors/dummy_file.xml | 1 +
cursors/meson.build | 214 ++++
data/brushes/Basic/meson.build | 12 +
data/brushes/Fun/meson.build | 5 +
data/brushes/Legacy/meson.build | 5 +
data/brushes/Media/meson.build | 13 +
data/brushes/Sketch/meson.build | 12 +
data/brushes/Splatters/meson.build | 10 +
data/brushes/Texture/meson.build | 15 +
data/brushes/meson.build | 17 +
data/dynamics/Basic/meson.build | 10 +
data/dynamics/FX/meson.build | 5 +
data/dynamics/meson.build | 26 +
data/environ/meson.build | 5 +
data/gradients/meson.build | 93 ++
data/images/meson.build | 11 +
data/interpreters/meson.build | 3 +
data/meson.build | 16 +
data/palettes/meson.build | 47 +
data/patterns/Animal/meson.build | 4 +
data/patterns/Fabric/meson.build | 3 +
data/patterns/Food/meson.build | 4 +
data/patterns/Legacy/meson.build | 17 +
data/patterns/Paper/meson.build | 4 +
data/patterns/Plant/meson.build | 3 +
data/patterns/Sky/meson.build | 5 +
data/patterns/Stone/meson.build | 17 +
data/patterns/Water/meson.build | 6 +
data/patterns/Wood/meson.build | 15 +
data/patterns/meson.build | 20 +
data/tags/meson.build | 30 +
data/tips/meson.build | 43 +
data/tool-presets/Crop/meson.build | 9 +
data/tool-presets/FX/meson.build | 10 +
data/tool-presets/Paint/meson.build | 18 +
data/tool-presets/Selection/meson.build | 4 +
data/tool-presets/Sketch/meson.build | 8 +
data/tool-presets/meson.build | 15 +
desktop/meson.build | 125 ++
devel-docs/app/meson.build | 98 ++
devel-docs/libgimp/meson.build | 49 +
devel-docs/libgimpbase/meson.build | 39 +
devel-docs/libgimpcolor/meson.build | 21 +
devel-docs/libgimpconfig/meson.build | 30 +
devel-docs/libgimpmath/meson.build | 14 +
devel-docs/libgimpmodule/meson.build | 23 +
devel-docs/libgimpthumb/meson.build | 28 +
devel-docs/libgimpwidgets/meson.build | 81 ++
devel-docs/meson.build | 32 +
devel-docs/tools/meson.build | 28 +
docs/meson.build | 63 +
etc/meson.build | 20 +
icons/Color/meson.build | 84 ++
icons/Legacy/meson.build | 556 ++++++++
icons/Symbolic/meson.build | 84 ++
icons/meson.build | 1613 ++++++++++++++++++++++++
libgimp/meson.build | 381 ++++++
libgimpbase/gimpversion.h.in | 68 +
libgimpbase/meson.build | 134 ++
libgimpcolor/meson.build | 76 ++
libgimpconfig/meson.build | 79 ++
libgimpmath/meson.build | 46 +
libgimpmodule/meson.build | 37 +
libgimpthumb/meson.build | 95 ++
libgimpwidgets/meson.build | 206 +++
m4macros/meson.build | 5 +
menus/meson.build | 69 +
meson.build | 1578 +++++++++++++++++++++++
meson.make | 29 +
meson_options.txt | 60 +
modules/meson.build | 95 ++
pdb/meson.build | 147 +++
plug-ins/common/meson.build | 180 +++
plug-ins/file-bmp/meson.build | 40 +
plug-ins/file-dds/meson.build | 45 +
plug-ins/file-exr/meson.build | 43 +
plug-ins/file-faxg3/meson.build | 39 +
plug-ins/file-fits/meson.build | 39 +
plug-ins/file-fli/meson.build | 39 +
plug-ins/file-ico/meson.build | 41 +
plug-ins/file-jpeg/meson.build | 43 +
plug-ins/file-psd/meson.build | 44 +
plug-ins/file-raw/meson.build | 60 +
plug-ins/file-sgi/meson.build | 39 +
plug-ins/file-tiff/meson.build | 41 +
plug-ins/file-webp/meson.build | 45 +
plug-ins/flame/meson.build | 41 +
plug-ins/fractal-explorer/examples/meson.build | 37 +
plug-ins/fractal-explorer/meson.build | 41 +
plug-ins/gfig/gfig-examples/meson.build | 14 +
plug-ins/gfig/images/meson.build | 24 +
plug-ins/gfig/meson.build | 57 +
plug-ins/gimpressionist/Brushes/meson.build | 66 +
plug-ins/gimpressionist/Paper/meson.build | 16 +
plug-ins/gimpressionist/Presets/meson.build | 32 +
plug-ins/gimpressionist/meson.build | 65 +
plug-ins/goat-exercises/meson.build | 66 +
plug-ins/gradient-flare/flares/meson.build | 11 +
plug-ins/gradient-flare/meson.build | 40 +
plug-ins/help-browser/meson.build | 47 +
plug-ins/help/meson.build | 53 +
plug-ins/ifs-compose/meson.build | 40 +
plug-ins/imagemap/images/meson.build | 16 +
plug-ins/imagemap/meson.build | 161 +++
plug-ins/lighting/images/meson.build | 18 +
plug-ins/lighting/meson.build | 47 +
plug-ins/map-object/meson.build | 48 +
plug-ins/meson.build | 36 +
plug-ins/metadata/meson.build | 94 ++
plug-ins/pagecurl/meson.build | 71 ++
plug-ins/print/meson.build | 49 +
plug-ins/pygimp/doc/meson.build | 25 +
plug-ins/pygimp/meson.build | 155 +++
plug-ins/pygimp/plug-ins/meson.build | 27 +
plug-ins/python/meson.build | 53 +
plug-ins/python/python-console/meson.build | 5 +
plug-ins/screenshot/meson.build | 38 +
plug-ins/script-fu/ftx/meson.build | 12 +
plug-ins/script-fu/meson.build | 63 +
plug-ins/script-fu/scripts/images/meson.build | 9 +
plug-ins/script-fu/scripts/meson.build | 68 +
plug-ins/script-fu/tinyscheme/meson.build | 16 +
plug-ins/selection-to-path/meson.build | 49 +
plug-ins/twain/meson.build | 39 +
plug-ins/ui/meson.build | 13 +
po-libgimp/meson.build | 1 +
po-plug-ins/meson.build | 1 +
po-python/meson.build | 1 +
po-script-fu/meson.build | 1 +
po-tags/meson.build | 1 +
po-tips/meson.build | 2 +
po-windows-installer/meson.build | 2 +
po/meson.build | 2 +
themes/meson.build | 11 +
tools/generate_changelog.sh | 35 +
tools/meson.build | 37 +
168 files changed, 11398 insertions(+)
---
diff --git a/app-tools/meson.build b/app-tools/meson.build
new file mode 100644
index 0000000000..40f1add71a
--- /dev/null
+++ b/app-tools/meson.build
@@ -0,0 +1,15 @@
+
+gimp_debug_tool = executable('gimp-debug-tool',
+ 'gimp-debug-tool.c',
+ include_directories: rootInclude,
+ dependencies: [
+ fontconfig,
+ gio,
+ gegl,
+ gtk3,
+ ],
+ link_with: [
+ libapp,
+ libappwidgets,
+ ],
+)
diff --git a/app/actions/meson.build b/app/actions/meson.build
new file mode 100644
index 0000000000..0bc17c3df1
--- /dev/null
+++ b/app/actions/meson.build
@@ -0,0 +1,104 @@
+libappactions_sources = [
+ 'actions.c',
+ 'brush-editor-actions.c',
+ 'brushes-actions.c',
+ 'buffers-actions.c',
+ 'buffers-commands.c',
+ 'channels-actions.c',
+ 'channels-commands.c',
+ 'colormap-actions.c',
+ 'colormap-commands.c',
+ 'context-actions.c',
+ 'context-commands.c',
+ 'cursor-info-actions.c',
+ 'cursor-info-commands.c',
+ 'dashboard-actions.c',
+ 'dashboard-commands.c',
+ 'data-commands.c',
+ 'data-editor-commands.c',
+ 'debug-actions.c',
+ 'debug-commands.c',
+ 'dialogs-actions.c',
+ 'dialogs-commands.c',
+ 'dock-actions.c',
+ 'dock-commands.c',
+ 'dockable-actions.c',
+ 'dockable-commands.c',
+ 'documents-actions.c',
+ 'documents-commands.c',
+ 'drawable-actions.c',
+ 'drawable-commands.c',
+ 'dynamics-actions.c',
+ 'dynamics-editor-actions.c',
+ 'edit-actions.c',
+ 'edit-commands.c',
+ 'error-console-actions.c',
+ 'error-console-commands.c',
+ 'file-actions.c',
+ 'file-commands.c',
+ 'filters-actions.c',
+ 'filters-commands.c',
+ 'fonts-actions.c',
+ 'gimpgeglprocedure.c',
+ 'gradient-editor-actions.c',
+ 'gradient-editor-commands.c',
+ 'gradients-actions.c',
+ 'gradients-commands.c',
+ 'help-actions.c',
+ 'help-commands.c',
+ 'image-actions.c',
+ 'image-commands.c',
+ 'images-actions.c',
+ 'images-commands.c',
+ 'items-actions.c',
+ 'items-commands.c',
+ 'layers-actions.c',
+ 'layers-commands.c',
+ 'mypaint-brushes-actions.c',
+ 'palette-editor-actions.c',
+ 'palette-editor-commands.c',
+ 'palettes-actions.c',
+ 'palettes-commands.c',
+ 'patterns-actions.c',
+ 'plug-in-actions.c',
+ 'plug-in-commands.c',
+ 'procedure-commands.c',
+ 'quick-mask-actions.c',
+ 'quick-mask-commands.c',
+ 'sample-points-actions.c',
+ 'sample-points-commands.c',
+ 'select-actions.c',
+ 'select-commands.c',
+ 'templates-actions.c',
+ 'templates-commands.c',
+ 'text-editor-actions.c',
+ 'text-editor-commands.c',
+ 'text-tool-actions.c',
+ 'text-tool-commands.c',
+ 'tool-options-actions.c',
+ 'tool-options-commands.c',
+ 'tool-preset-editor-actions.c',
+ 'tool-preset-editor-commands.c',
+ 'tool-presets-actions.c',
+ 'tool-presets-commands.c',
+ 'tools-actions.c',
+ 'tools-commands.c',
+ 'vectors-actions.c',
+ 'vectors-commands.c',
+ 'view-actions.c',
+ 'view-commands.c',
+ 'window-actions.c',
+ 'window-commands.c',
+ 'windows-actions.c',
+ 'windows-commands.c',
+]
+
+
+libappactions = static_library('appactions',
+ libappactions_sources,
+ include_directories: [ rootInclude, rootAppInclude, ],
+ c_args: '-DG_LOG_DOMAIN="Gimp-Actions"',
+ dependencies: [
+ gegl, gdk_pixbuf, gtk3,
+ ],
+)
diff --git a/app/config/meson.build b/app/config/meson.build
new file mode 100644
index 0000000000..4b675e7549
--- /dev/null
+++ b/app/config/meson.build
@@ -0,0 +1,74 @@
+
+appconfigenums = custom_target('config-enums.c',
+ input : [ 'config-enums.h', ],
+ output: [ 'config-enums.c', ],
+ command: app_mkenums_custom_target_command,
+ capture: true,
+)
+
+libappconfig_sources = [
+ 'gimpconfig-dump.c',
+ 'gimpconfig-file.c',
+ 'gimpconfig-utils.c',
+ 'gimpcoreconfig.c',
+ 'gimpdialogconfig.c',
+ 'gimpdisplayconfig.c',
+ 'gimpdisplayoptions.c',
+ 'gimpgeglconfig.c',
+ 'gimpguiconfig.c',
+ 'gimplangrc.c',
+ 'gimppluginconfig.c',
+ 'gimprc-deserialize.c',
+ 'gimprc-serialize.c',
+ 'gimprc-unknown.c',
+ 'gimprc.c',
+ 'gimpxmlparser.c',
+ appconfigenums,
+]
+
+libappconfig = static_library('appconfig',
+ libappconfig_sources,
+ include_directories: [ rootInclude, rootAppInclude, ],
+ c_args: '-DG_LOG_DOMAIN="Gimp-Config"',
+ dependencies: [
+ cairo, gegl, gdk_pixbuf, gio, gio_specific, gtk3, libmypaint,
+ ],
+)
+
+test('app-config',
+ executable('test-config',
+ [ 'test-config.c', app_debug_files, ],
+ include_directories: [ rootInclude, rootAppInclude, ],
+
+ dependencies: [
+ gegl, gio, gio_specific,
+ appstream_glib,
+ ],
+ link_with: [
+ libgimpbase,
+ libgimpconfig,
+ libgimpcolor,
+ libgimpmath,
+ libgimpmodule,
+ libgimpthumb,
+
+ libappcore,
+ libappconfig,
+ libappfile,
+ libappfiledata,
+ libappgegl,
+ libappinternalprocs,
+ libapplayermodes,
+ libapplayermodeslegacy,
+ libappoperations,
+ libapppaint,
+ libapppdb,
+ libappplugin,
+ libapptext,
+ libappvectors,
+ libappxcf,
+ ],
+ install: false,
+ ),
+ suite: 'app'
+)
diff --git a/app/core/meson.build b/app/core/meson.build
new file mode 100644
index 0000000000..007ec8c9e3
--- /dev/null
+++ b/app/core/meson.build
@@ -0,0 +1,263 @@
+
+appcoreenums = custom_target('core-enums',
+ input : [ 'core-enums.h', ],
+ output: [ 'core-enums.c', ],
+ command: app_mkenums_custom_target_command,
+ capture: true,
+)
+
+appcoremarshal = gnome.genmarshal('gimpmarshal',
+ prefix: 'gimp_marshal',
+ sources: 'gimpmarshal.list',
+ install_header: false,
+)
+
+
+
+libappcore_sources = [
+ 'gimp-atomic.c',
+ 'gimp-batch.c',
+ 'gimp-cairo.c',
+ 'gimp-contexts.c',
+ 'gimp-data-factories.c',
+ 'gimp-edit.c',
+ 'gimp-filter-history.c',
+ 'gimp-gradients.c',
+ 'gimp-gui.c',
+ 'gimp-internal-data.c',
+ 'gimp-memsize.c',
+ 'gimp-modules.c',
+ 'gimp-palettes.c',
+ 'gimp-parallel.cc',
+ 'gimp-parasites.c',
+ 'gimp-spawn.c',
+ 'gimp-tags.c',
+ 'gimp-templates.c',
+ 'gimp-transform-resize.c',
+ 'gimp-transform-utils.c',
+ 'gimp-units.c',
+ 'gimp-user-install.c',
+ 'gimp-utils.c',
+ 'gimp.c',
+ 'gimpasync.c',
+ 'gimpasyncset.c',
+ 'gimpauxitem.c',
+ 'gimpauxitemundo.c',
+ 'gimpbacktrace-linux.c',
+ 'gimpbacktrace-none.c',
+ 'gimpbacktrace-windows.c',
+ 'gimpbezierdesc.c',
+ 'gimpboundary.c',
+ 'gimpbrush-boundary.c',
+ 'gimpbrush-load.c',
+ 'gimpbrush-save.c',
+ 'gimpbrush-transform.cc',
+ 'gimpbrush.c',
+ 'gimpbrushcache.c',
+ 'gimpbrushclipboard.c',
+ 'gimpbrushgenerated-load.c',
+ 'gimpbrushgenerated-save.c',
+ 'gimpbrushgenerated.c',
+ 'gimpbrushpipe-load.c',
+ 'gimpbrushpipe-save.c',
+ 'gimpbrushpipe.c',
+ 'gimpbuffer.c',
+ 'gimpcancelable.c',
+ 'gimpchannel-combine.c',
+ 'gimpchannel-select.c',
+ 'gimpchannel.c',
+ 'gimpchannelpropundo.c',
+ 'gimpchannelundo.c',
+ 'gimpchunkiterator.c',
+ 'gimpcontainer-filter.c',
+ 'gimpcontainer.c',
+ 'gimpcontext.c',
+ 'gimpcoords-interpolate.c',
+ 'gimpcoords.c',
+ 'gimpcurve-load.c',
+ 'gimpcurve-map.c',
+ 'gimpcurve-save.c',
+ 'gimpcurve.c',
+ 'gimpdashpattern.c',
+ 'gimpdata.c',
+ 'gimpdatafactory.c',
+ 'gimpdataloaderfactory.c',
+ 'gimpdisplay.c',
+ 'gimpdocumentlist.c',
+ 'gimpdrawable-bucket-fill.c',
+ 'gimpdrawable-combine.c',
+ 'gimpdrawable-edit.c',
+ 'gimpdrawable-equalize.c',
+ 'gimpdrawable-fill.c',
+ 'gimpdrawable-filters.c',
+ 'gimpdrawable-floating-selection.c',
+ 'gimpdrawable-foreground-extract.c',
+ 'gimpdrawable-gradient.c',
+ 'gimpdrawable-histogram.c',
+ 'gimpdrawable-levels.c',
+ 'gimpdrawable-offset.c',
+ 'gimpdrawable-operation.c',
+ 'gimpdrawable-preview.c',
+ 'gimpdrawable-shadow.c',
+ 'gimpdrawable-stroke.c',
+ 'gimpdrawable-transform.c',
+ 'gimpdrawable.c',
+ 'gimpdrawablefilter.c',
+ 'gimpdrawablemodundo.c',
+ 'gimpdrawablepropundo.c',
+ 'gimpdrawablestack.c',
+ 'gimpdrawableundo.c',
+ 'gimpdynamics-load.c',
+ 'gimpdynamics-save.c',
+ 'gimpdynamics.c',
+ 'gimpdynamicsoutput.c',
+ 'gimperror.c',
+ 'gimpextension-error.c',
+ 'gimpextension.c',
+ 'gimpextensionmanager.c',
+ 'gimpfilloptions.c',
+ 'gimpfilter.c',
+ 'gimpfilteredcontainer.c',
+ 'gimpfilterstack.c',
+ 'gimpfloatingselectionundo.c',
+ 'gimpgradient-load.c',
+ 'gimpgradient-save.c',
+ 'gimpgradient.c',
+ 'gimpgrid.c',
+ 'gimpgrouplayer.c',
+ 'gimpgrouplayerundo.c',
+ 'gimpguide.c',
+ 'gimpguideundo.c',
+ 'gimphistogram.c',
+ 'gimpidtable.c',
+ 'gimpimage-arrange.c',
+ 'gimpimage-color-profile.c',
+ 'gimpimage-colormap.c',
+ 'gimpimage-convert-indexed.c',
+ 'gimpimage-convert-precision.c',
+ 'gimpimage-convert-type.c',
+ 'gimpimage-crop.c',
+ 'gimpimage-duplicate.c',
+ 'gimpimage-flip.c',
+ 'gimpimage-grid.c',
+ 'gimpimage-guides.c',
+ 'gimpimage-item-list.c',
+ 'gimpimage-merge.c',
+ 'gimpimage-metadata.c',
+ 'gimpimage-new.c',
+ 'gimpimage-pick-color.c',
+ 'gimpimage-pick-item.c',
+ 'gimpimage-preview.c',
+ 'gimpimage-quick-mask.c',
+ 'gimpimage-resize.c',
+ 'gimpimage-rotate.c',
+ 'gimpimage-sample-points.c',
+ 'gimpimage-scale.c',
+ 'gimpimage-snap.c',
+ 'gimpimage-symmetry.c',
+ 'gimpimage-transform.c',
+ 'gimpimage-undo-push.c',
+ 'gimpimage-undo.c',
+ 'gimpimage.c',
+ 'gimpimagefile.c',
+ 'gimpimageundo.c',
+ 'gimpimageviewable.c',
+ 'gimpitem-exclusive.c',
+ 'gimpitem-linked.c',
+ 'gimpitem-preview.c',
+ 'gimpitem.c',
+ 'gimpitempropundo.c',
+ 'gimpitemstack.c',
+ 'gimpitemtree.c',
+ 'gimpitemundo.c',
+ 'gimplayer-floating-selection.c',
+ 'gimplayer-new.c',
+ 'gimplayer.c',
+ 'gimplayermask.c',
+ 'gimplayermaskpropundo.c',
+ 'gimplayermaskundo.c',
+ 'gimplayerpropundo.c',
+ 'gimplayerstack.c',
+ 'gimplayerundo.c',
+ 'gimplineart.c',
+ 'gimplist.c',
+ 'gimpmaskundo.c',
+ 'gimpmybrush-load.c',
+ 'gimpmybrush.c',
+ 'gimpobject.c',
+ 'gimpobjectqueue.c',
+ 'gimppaintinfo.c',
+ 'gimppalette-import.c',
+ 'gimppalette-load.c',
+ 'gimppalette-save.c',
+ 'gimppalette.c',
+ 'gimppalettemru.c',
+ 'gimpparamspecs-desc.c',
+ 'gimpparamspecs-duplicate.c',
+ 'gimpparamspecs.c',
+ 'gimpparasitelist.c',
+ 'gimppattern-load.c',
+ 'gimppattern-save.c',
+ 'gimppattern.c',
+ 'gimppatternclipboard.c',
+ 'gimppdbprogress.c',
+ 'gimppickable-auto-shrink.c',
+ 'gimppickable-contiguous-region.cc',
+ 'gimppickable.c',
+ 'gimpprogress.c',
+ 'gimpprojectable.c',
+ 'gimpprojection.c',
+ 'gimpsamplepoint.c',
+ 'gimpsamplepointundo.c',
+ 'gimpscanconvert.c',
+ 'gimpselection.c',
+ 'gimpsettings.c',
+ 'gimpstrokeoptions.c',
+ 'gimpsubprogress.c',
+ 'gimpsymmetry-mandala.c',
+ 'gimpsymmetry-mirror.c',
+ 'gimpsymmetry-tiling.c',
+ 'gimpsymmetry.c',
+ 'gimptag.c',
+ 'gimptagcache.c',
+ 'gimptagged.c',
+ 'gimptaggedcontainer.c',
+ 'gimptempbuf.c',
+ 'gimptemplate.c',
+ 'gimptilehandlerprojectable.c',
+ 'gimptoolinfo.c',
+ 'gimptooloptions.c',
+ 'gimptoolpreset-load.c',
+ 'gimptoolpreset-save.c',
+ 'gimptoolpreset.c',
+ 'gimptreehandler.c',
+ 'gimptriviallycancelablewaitable.c',
+ 'gimpuncancelablewaitable.c',
+ 'gimpundo.c',
+ 'gimpundostack.c',
+ 'gimpunit.c',
+ 'gimpviewable.c',
+ 'gimpwaitable.c',
+ appcoreenums,
+ appcoremarshal,
+ cursors_sources,
+ pickers_sources,
+ icons_core_sources,
+]
+
+libappcore = static_library('appcore',
+ libappcore_sources,
+ include_directories: [ rootInclude, rootAppInclude, ],
+ c_args: '-DG_LOG_DOMAIN="Gimp-Core"',
+ dependencies: [
+ cairo,
+ gegl,
+ gdk_pixbuf,
+ libmypaint,
+ gexiv2,
+ appstream_glib,
+ math,
+ dl,
+ libunwind,
+ ],
+)
diff --git a/app/dialogs/meson.build b/app/dialogs/meson.build
new file mode 100644
index 0000000000..c6281767c4
--- /dev/null
+++ b/app/dialogs/meson.build
@@ -0,0 +1,64 @@
+libappdialogs_sources = [
+ 'about-dialog.c',
+ 'action-search-dialog.c',
+ 'channel-options-dialog.c',
+ 'color-profile-dialog.c',
+ 'color-profile-import-dialog.c',
+ 'convert-indexed-dialog.c',
+ 'convert-precision-dialog.c',
+ 'data-delete-dialog.c',
+ 'dialogs-constructors.c',
+ 'dialogs.c',
+ 'extensions-dialog.c',
+ 'file-open-dialog.c',
+ 'file-open-location-dialog.c',
+ 'file-save-dialog.c',
+ 'fill-dialog.c',
+ 'grid-dialog.c',
+ 'image-merge-layers-dialog.c',
+ 'image-new-dialog.c',
+ 'image-properties-dialog.c',
+ 'image-scale-dialog.c',
+ 'input-devices-dialog.c',
+ 'item-options-dialog.c',
+ 'keyboard-shortcuts-dialog.c',
+ 'layer-add-mask-dialog.c',
+ 'layer-options-dialog.c',
+ 'lebl-dialog.c',
+ 'module-dialog.c',
+ 'palette-import-dialog.c',
+ 'preferences-dialog-utils.c',
+ 'preferences-dialog.c',
+ 'print-size-dialog.c',
+ 'quit-dialog.c',
+ 'resize-dialog.c',
+ 'resolution-calibrate-dialog.c',
+ 'scale-dialog.c',
+ 'stroke-dialog.c',
+ 'template-options-dialog.c',
+ 'tips-dialog.c',
+ 'tips-parser.c',
+ 'user-install-dialog.c',
+ 'vectors-export-dialog.c',
+ 'vectors-import-dialog.c',
+ 'vectors-options-dialog.c',
+ gitversion_h,
+]
+
+# Auto-generated sources
+libappdialogs_sources += [
+ custom_target('authors.h',
+ input : [ 'authors.xsl', meson.source_root() / 'authors.xml' ],
+ output: [ 'authors.h' ],
+ command: [ xsltproc, '-o', '@OUTPUT@', '@INPUT0@', '@INPUT1@' ],
+ )
+]
+
+libappdialogs = static_library('appdialogs',
+ libappdialogs_sources,
+ include_directories: [ rootInclude, rootAppInclude, ],
+ c_args: '-DG_LOG_DOMAIN="Gimp-Dialogs"',
+ dependencies: [
+ gegl, gtk3,
+ ],
+)
diff --git a/app/display/meson.build b/app/display/meson.build
new file mode 100644
index 0000000000..05a8494dab
--- /dev/null
+++ b/app/display/meson.build
@@ -0,0 +1,108 @@
+
+appdisplayenums = custom_target('display-enums.c',
+ input : [ 'display-enums.h', ],
+ output: [ 'display-enums.c', ],
+ command: app_mkenums_custom_target_command,
+ capture: true,
+)
+
+libappdisplay_sources = [
+ 'gimpcanvas-style.c',
+ 'gimpcanvas.c',
+ 'gimpcanvasarc.c',
+ 'gimpcanvasboundary.c',
+ 'gimpcanvasbufferpreview.c',
+ 'gimpcanvascanvasboundary.c',
+ 'gimpcanvascorner.c',
+ 'gimpcanvascursor.c',
+ 'gimpcanvasgrid.c',
+ 'gimpcanvasgroup.c',
+ 'gimpcanvasguide.c',
+ 'gimpcanvashandle.c',
+ 'gimpcanvasitem-utils.c',
+ 'gimpcanvasitem.c',
+ 'gimpcanvaslayerboundary.c',
+ 'gimpcanvasline.c',
+ 'gimpcanvaspassepartout.c',
+ 'gimpcanvaspath.c',
+ 'gimpcanvaspen.c',
+ 'gimpcanvaspolygon.c',
+ 'gimpcanvasprogress.c',
+ 'gimpcanvasproxygroup.c',
+ 'gimpcanvasrectangle.c',
+ 'gimpcanvasrectangleguides.c',
+ 'gimpcanvassamplepoint.c',
+ 'gimpcanvastextcursor.c',
+ 'gimpcanvastransformguides.c',
+ 'gimpcanvastransformpreview.c',
+ 'gimpcursorview.c',
+ 'gimpdisplay-foreach.c',
+ 'gimpdisplay-handlers.c',
+ 'gimpdisplay.c',
+ 'gimpdisplayshell-actions.c',
+ 'gimpdisplayshell-appearance.c',
+ 'gimpdisplayshell-autoscroll.c',
+ 'gimpdisplayshell-callbacks.c',
+ 'gimpdisplayshell-close.c',
+ 'gimpdisplayshell-cursor.c',
+ 'gimpdisplayshell-dnd.c',
+ 'gimpdisplayshell-draw.c',
+ 'gimpdisplayshell-expose.c',
+ 'gimpdisplayshell-filter-dialog.c',
+ 'gimpdisplayshell-filter.c',
+ 'gimpdisplayshell-grab.c',
+ 'gimpdisplayshell-handlers.c',
+ 'gimpdisplayshell-icon.c',
+ 'gimpdisplayshell-items.c',
+ 'gimpdisplayshell-layer-select.c',
+ 'gimpdisplayshell-profile.c',
+ 'gimpdisplayshell-progress.c',
+ 'gimpdisplayshell-render.c',
+ 'gimpdisplayshell-rotate-dialog.c',
+ 'gimpdisplayshell-rotate.c',
+ 'gimpdisplayshell-rulers.c',
+ 'gimpdisplayshell-scale-dialog.c',
+ 'gimpdisplayshell-scale.c',
+ 'gimpdisplayshell-scroll.c',
+ 'gimpdisplayshell-scrollbars.c',
+ 'gimpdisplayshell-selection.c',
+ 'gimpdisplayshell-title.c',
+ 'gimpdisplayshell-tool-events.c',
+ 'gimpdisplayshell-transform.c',
+ 'gimpdisplayshell-utils.c',
+ 'gimpdisplayshell.c',
+ 'gimpimagewindow.c',
+ 'gimpmotionbuffer.c',
+ 'gimpmultiwindowstrategy.c',
+ 'gimpnavigationeditor.c',
+ 'gimpscalecombobox.c',
+ 'gimpsinglewindowstrategy.c',
+ 'gimpstatusbar.c',
+ 'gimptoolcompass.c',
+ 'gimptooldialog.c',
+ 'gimptoolgui.c',
+ 'gimptoolgyroscope.c',
+ 'gimptoolhandlegrid.c',
+ 'gimptoolline.c',
+ 'gimptoolpath.c',
+ 'gimptoolpolygon.c',
+ 'gimptoolrectangle.c',
+ 'gimptoolrotategrid.c',
+ 'gimptoolsheargrid.c',
+ 'gimptooltransformgrid.c',
+ 'gimptoolwidget.c',
+ 'gimptoolwidgetgroup.c',
+ appdisplayenums,
+ gitversion_h,
+
+ appcoremarshal,
+]
+
+libappdisplay = static_library('appdisplay',
+ libappdisplay_sources,
+ include_directories: [ rootInclude, rootAppInclude, ],
+ c_args: '-DG_LOG_DOMAIN="Gimp-Display"',
+ dependencies: [
+ gegl, gtk3,
+ ],
+)
diff --git a/app/file-data/meson.build b/app/file-data/meson.build
new file mode 100644
index 0000000000..8a21f3c14a
--- /dev/null
+++ b/app/file-data/meson.build
@@ -0,0 +1,21 @@
+
+libappfiledata_sources = [
+ 'file-data-gbr.c',
+ 'file-data-gex.c',
+ 'file-data-gih.c',
+ 'file-data-pat.c',
+ 'file-data.c',
+]
+
+libappfiledata = static_library('appfiledata',
+ libappfiledata_sources,
+ include_directories: [ rootInclude, rootAppInclude, ],
+ c_args: '-DG_LOG_DOMAIN="Gimp-File-Data"',
+ dependencies: [
+ appstream_glib,
+ cairo,
+ gdk_pixbuf,
+ gegl,
+ libarchive,
+ ],
+)
diff --git a/app/file/meson.build b/app/file/meson.build
new file mode 100644
index 0000000000..5ed43957f2
--- /dev/null
+++ b/app/file/meson.build
@@ -0,0 +1,16 @@
+libappfile_sources = [
+ 'file-import.c',
+ 'file-open.c',
+ 'file-remote.c',
+ 'file-save.c',
+ 'file-utils.c',
+]
+
+libappfile = static_library('appfile',
+ libappfile_sources,
+ include_directories: [ rootInclude, rootAppInclude, ],
+ c_args: '-DG_LOG_DOMAIN="Gimp-File"',
+ dependencies: [
+ gegl, gdk_pixbuf,
+ ],
+)
diff --git a/app/gegl/meson.build b/app/gegl/meson.build
new file mode 100644
index 0000000000..50ef7a096a
--- /dev/null
+++ b/app/gegl/meson.build
@@ -0,0 +1,33 @@
+
+appgeglenums = custom_target('gimp-gegl-enums.c',
+ input : [ 'gimp-gegl-enums.h', ],
+ output: [ 'gimp-gegl-enums.c', ],
+ command: app_mkenums_custom_target_command,
+ capture: true,
+)
+
+libappgegl_sources = [
+ 'gimp-babl-compat.c',
+ 'gimp-babl.c',
+ 'gimp-gegl-apply-operation.c',
+ 'gimp-gegl-loops-sse2.c',
+ 'gimp-gegl-loops.cc',
+ 'gimp-gegl-mask-combine.cc',
+ 'gimp-gegl-mask.c',
+ 'gimp-gegl-nodes.c',
+ 'gimp-gegl-tile-compat.c',
+ 'gimp-gegl-utils.c',
+ 'gimp-gegl.c',
+ 'gimpapplicator.c',
+ 'gimptilehandlervalidate.c',
+ appgeglenums,
+]
+
+libappgegl = static_library('appgegl',
+ libappgegl_sources,
+ include_directories: [ rootInclude, rootAppInclude, ],
+ c_args: '-DG_LOG_DOMAIN="Gimp-GEGL"',
+ dependencies: [
+ cairo, gegl, gdk_pixbuf,
+ ],
+)
diff --git a/app/git-version.h.in b/app/git-version.h.in
new file mode 100644
index 0000000000..2adb4479f6
--- /dev/null
+++ b/app/git-version.h.in
@@ -0,0 +1,5 @@
+#pragma once
+
+#define GIMP_GIT_VERSION "@GIMP_GIT_VERSION@"
+#define GIMP_GIT_VERSION_ABBREV "@GIMP_GIT_VERSION_ABBREV@"
+#define GIMP_GIT_LAST_COMMIT_YEAR "@GIMP_GIT_LAST_COMMIT_YEAR@"
diff --git a/app/gui/meson.build b/app/gui/meson.build
new file mode 100644
index 0000000000..25f56fcccb
--- /dev/null
+++ b/app/gui/meson.build
@@ -0,0 +1,35 @@
+
+gimpdbusservice_gen = gnome.gdbus_codegen(
+ 'gimpdbusservice-generated',
+ 'dbus-service.xml',
+ interface_prefix: 'org.gimp.GIMP.',
+ namespace: 'GimpDBusService',
+)
+
+libappgui_sources = [
+ 'gimpdbusservice.c',
+ 'gimpuiconfigurer.c',
+ 'gui-message.c',
+ 'gui-unique.c',
+ 'gui-vtable.c',
+ 'gui.c',
+ 'icon-themes.c',
+ 'session.c',
+ 'splash.c',
+ 'themes.c',
+ gimpdbusservice_gen,
+]
+
+# Workaround for generated header included in other directories.
+configInclude = include_directories('.')
+
+
+libappgui = static_library('appgui',
+ libappgui_sources,
+ include_directories: [ rootInclude, rootAppInclude, ],
+ c_args: '-DG_LOG_DOMAIN="Gimp-GUI"',
+ dependencies: [
+ cairo, dbus_glib, gegl, gdk_pixbuf, gio_specific, gtk3
+ ],
+ install: false,
+)
diff --git a/app/menus/meson.build b/app/menus/meson.build
new file mode 100644
index 0000000000..3f406698e8
--- /dev/null
+++ b/app/menus/meson.build
@@ -0,0 +1,20 @@
+libappmenus_sources = [
+ 'dockable-menu.c',
+ 'file-menu.c',
+ 'filters-menu.c',
+ 'image-menu.c',
+ 'menus.c',
+ 'plug-in-menus.c',
+ 'tool-options-menu.c',
+ 'window-menu.c',
+ 'windows-menu.c',
+]
+
+libappmenus = static_library('appmenus',
+ libappmenus_sources,
+ include_directories: [ rootInclude, rootAppInclude, ],
+ c_args: '-DG_LOG_DOMAIN="Gimp-Menus"',
+ dependencies: [
+ gegl, gtk3
+ ],
+)
diff --git a/app/meson.build b/app/meson.build
new file mode 100644
index 0000000000..1a387eea3e
--- /dev/null
+++ b/app/meson.build
@@ -0,0 +1,191 @@
+rootAppInclude = include_directories('.')
+
+app_mkenums_custom_target_command = [
+ gimp_mkenums,
+ '--fhead','#include "config.h"\n'
+ + '#include <gio/gio.h>\n'
+ + '#include "libgimpbase/gimpbase.h"\n'
+ + '#include "core/core-enums.h"\n'
+ + '#include "@INPUT@"\n'
+ + '#include "gimp-intl.h"\n',
+ gimp_mkenums_custom_target_commonargs,
+]
+
+subdir('actions')
+subdir('core')
+subdir('dialogs')
+subdir('display')
+subdir('file')
+subdir('file-data')
+subdir('gegl')
+subdir('gui')
+subdir('menus')
+subdir('operations')
+subdir('paint')
+subdir('pdb')
+subdir('plug-in')
+subdir('propgui')
+subdir('text')
+subdir('tools')
+subdir('vectors')
+subdir('widgets')
+subdir('xcf')
+
+
+# For app/config
+app_debug_files = files(
+ 'gimp-debug.c',
+ 'gimp-log.c',
+)
+
+# Top-level library
+
+libapp_sources = [
+ 'app.c',
+ 'errors.c',
+ 'gimp-debug.c',
+ 'gimp-log.c',
+ 'gimp-version.c',
+ 'language.c',
+ 'sanity.c',
+ 'signals.c',
+ 'tests.c',
+ 'unique.c',
+ gitversion_h,
+ gimpdbusservice_gen,
+]
+
+libapp = static_library('app',
+ libapp_sources,
+ include_directories: [ rootInclude, rootAppInclude, configInclude, ],
+ c_args: [ '-DG_LOG_DOMAIN="Gimp"', '-DGIMP_APP_GLUE_COMPILATION', ],
+ dependencies: [
+ gegl, gdk_pixbuf, gtk3,
+ ],
+)
+
+
+# Those subdirs need to link againts the first ones
+subdir('config')
+# subdir('tests')
+
+
+
+app_links = [
+ libappconfig,
+ libappcore,
+ libappfile,
+ libappfiledata,
+ libappgegl,
+ libappinternalprocs,
+ libapplayermodes,
+ libapplayermodeslegacy,
+ libappoperations,
+ libapppaint,
+ libapppdb,
+ libappplugin,
+ libapptext,
+ libappvectors,
+ libappxcf,
+ libgimpbase,
+ libgimpcolor,
+ libgimpconfig,
+ libgimpmath,
+ libgimpmodule,
+ libgimpthumb,
+]
+
+app_gui_links = [
+ libappactions,
+ libappdialogs,
+ libappdisplay,
+ libappgui,
+ libappmenus,
+ libapppropgui,
+ libapptools,
+ libappwidgets,
+ libgimpwidgets,
+]
+
+app_deps = [
+ gio, gtk3, pangocairo, pangoft2, gegl, lcms, gexiv2, drmingw, rpc, dbghelp,
+]
+
+# Executables
+
+if platform_windows
+ console_rc_name = 'gimp-console-'+ gimp_app_version
+ gimp_app_console_rc = configure_file(
+ input : gimp_plugins_rc,
+ output: console_rc_name + '.rc',
+ copy: true,
+ )
+ console_rc_file = windows.compile_resources(
+ gimp_app_console_rc,
+ args: [
+ '--define', 'ORIGINALFILENAME_STR="@0@"'.format(console_rc_name+'.exe'),
+ '--define', 'INTERNALNAME_STR="@0@"' .format(console_rc_name),
+ '--define', 'TOP_SRCDIR="@0@"' .format(meson.source_root()),
+ ],
+ include_directories: [
+ rootInclude, appInclude,
+ ],
+ )
+
+ gui_rc_name = 'gimp-'+ gimp_app_version
+ gimp_app_gui_rc = configure_file(
+ input : gimp_plugins_rc,
+ output: gui_rc_name + '.rc',
+ copy: true,
+ )
+ gui_rc_file = windows.compile_resources(
+ gimp_app_rc,
+ args: [
+ '--define', 'ORIGINALFILENAME_STR="@0@"'.format(gui_rc_name+'.exe'),
+ '--define', 'INTERNALNAME_STR="@0@"' .format(gui_rc_name),
+ '--define', 'TOP_SRCDIR="@0@"' .format(meson.source_root()),
+ ],
+ include_directories: [
+ rootInclude, appInclude,
+ ],
+ )
+
+else
+ console_rc_file = []
+ gui_rc_file = []
+endif
+
+
+gimpconsole_exe = executable('gimp-console-'+gimp_app_version,
+ 'main.c',
+ libapp_sources,
+ console_rc_file,
+ c_args: [
+ '-DG_LOG_DOMAIN="Gimp"',
+ '-DGIMP_APP_GLUE_COMPILATION',
+ '-DGIMP_CONSOLE_COMPILATION',
+ ],
+ include_directories: rootInclude,
+ dependencies: app_deps,
+ link_with: [
+ app_links,
+ ],
+ install: true,
+)
+
+gimpmain_exe = executable('gimp-'+gimp_app_version,
+ 'main.c',
+ libapp_sources,
+ gui_rc_file,
+ c_args: [
+ '-DG_LOG_DOMAIN="Gimp"',
+ '-DGIMP_APP_GLUE_COMPILATION',
+ ],
+ include_directories: rootInclude,
+ dependencies: app_deps,
+ link_with: [
+ app_links,
+ app_gui_links,
+ ],
+ install: true,
+)
diff --git a/app/operations/layer-modes-legacy/meson.build b/app/operations/layer-modes-legacy/meson.build
new file mode 100644
index 0000000000..7fa8409fbc
--- /dev/null
+++ b/app/operations/layer-modes-legacy/meson.build
@@ -0,0 +1,29 @@
+libapplayermodeslegacy_sources = [
+ 'gimpoperationadditionlegacy.c',
+ 'gimpoperationburnlegacy.c',
+ 'gimpoperationdarkenonlylegacy.c',
+ 'gimpoperationdifferencelegacy.c',
+ 'gimpoperationdividelegacy.c',
+ 'gimpoperationdodgelegacy.c',
+ 'gimpoperationgrainextractlegacy.c',
+ 'gimpoperationgrainmergelegacy.c',
+ 'gimpoperationhardlightlegacy.c',
+ 'gimpoperationhslcolorlegacy.c',
+ 'gimpoperationhsvhuelegacy.c',
+ 'gimpoperationhsvsaturationlegacy.c',
+ 'gimpoperationhsvvaluelegacy.c',
+ 'gimpoperationlightenonlylegacy.c',
+ 'gimpoperationmultiplylegacy.c',
+ 'gimpoperationscreenlegacy.c',
+ 'gimpoperationsoftlightlegacy.c',
+ 'gimpoperationsubtractlegacy.c',
+]
+
+libapplayermodeslegacy = static_library('applayermodeslegacy',
+ libapplayermodeslegacy_sources,
+ include_directories: [ rootInclude, rootAppInclude, ],
+ c_args: '-DG_LOG_DOMAIN="Gimp-Layer-Modes-Legacy"',
+ dependencies: [
+ cairo, gegl, gdk_pixbuf,
+ ],
+)
diff --git a/app/operations/layer-modes/meson.build b/app/operations/layer-modes/meson.build
new file mode 100644
index 0000000000..5031c4a344
--- /dev/null
+++ b/app/operations/layer-modes/meson.build
@@ -0,0 +1,27 @@
+libapplayermodes_sources = [
+ 'gimp-layer-modes.c',
+ 'gimpoperationantierase.c',
+ 'gimpoperationbehind.c',
+ 'gimpoperationdissolve.c',
+ 'gimpoperationerase.c',
+ 'gimpoperationlayermode-blend.c',
+ 'gimpoperationlayermode-composite-sse2.c',
+ 'gimpoperationlayermode-composite.c',
+ 'gimpoperationlayermode.c',
+ 'gimpoperationmerge.c',
+ 'gimpoperationnormal-sse2.c',
+ 'gimpoperationnormal-sse4.c',
+ 'gimpoperationnormal.c',
+ 'gimpoperationpassthrough.c',
+ 'gimpoperationreplace.c',
+ 'gimpoperationsplit.c',
+]
+
+libapplayermodes = static_library('applayermodes',
+ libapplayermodes_sources,
+ include_directories: [ rootInclude, rootAppInclude, ],
+ c_args: '-DG_LOG_DOMAIN="Gimp-Layer-Modes"',
+ dependencies: [
+ cairo, gegl, gdk_pixbuf,
+ ],
+)
diff --git a/app/operations/meson.build b/app/operations/meson.build
new file mode 100644
index 0000000000..40ec2707a0
--- /dev/null
+++ b/app/operations/meson.build
@@ -0,0 +1,62 @@
+
+appoperationsenums = custom_target('operations-enums.c',
+ input : [ 'operations-enums.h', ],
+ output: [ 'operations-enums.c', ],
+ command: app_mkenums_custom_target_command,
+ capture: true,
+)
+
+
+libappoperations_sources = [
+ 'gimp-operation-config.c',
+ 'gimp-operations.c',
+ 'gimpbrightnesscontrastconfig.c',
+ 'gimpcageconfig.c',
+ 'gimpcolorbalanceconfig.c',
+ 'gimpcurvesconfig.c',
+ 'gimphuesaturationconfig.c',
+ 'gimplevelsconfig.c',
+ 'gimpoperationborder.c',
+ 'gimpoperationbrightnesscontrast.c',
+ 'gimpoperationbuffersourcevalidate.c',
+ 'gimpoperationcagecoefcalc.c',
+ 'gimpoperationcagetransform.c',
+ 'gimpoperationcolorbalance.c',
+ 'gimpoperationcolorize.c',
+ 'gimpoperationcomposecrop.c',
+ 'gimpoperationcurves.c',
+ 'gimpoperationdesaturate.c',
+ 'gimpoperationequalize.c',
+ 'gimpoperationfillsource.c',
+ 'gimpoperationflood.c',
+ 'gimpoperationgradient.c',
+ 'gimpoperationgrow.c',
+ 'gimpoperationhistogramsink.c',
+ 'gimpoperationhuesaturation.c',
+ 'gimpoperationlevels.c',
+ 'gimpoperationmaskcomponents.cc',
+ 'gimpoperationoffset.c',
+ 'gimpoperationpointfilter.c',
+ 'gimpoperationposterize.c',
+ 'gimpoperationprofiletransform.c',
+ 'gimpoperationscalarmultiply.c',
+ 'gimpoperationsemiflatten.c',
+ 'gimpoperationsetalpha.c',
+ 'gimpoperationshrink.c',
+ 'gimpoperationthreshold.c',
+ 'gimpoperationthresholdalpha.c',
+ appoperationsenums
+]
+
+libappoperations = static_library('appoperations',
+ libappoperations_sources,
+ include_directories: [ rootInclude, rootAppInclude, ],
+ c_args: '-DG_LOG_DOMAIN="Gimp-Operations"',
+ dependencies: [
+ cairo, gegl, gdk_pixbuf,
+ ],
+)
+
+subdir('layer-modes')
+subdir('layer-modes-legacy')
+subdir('tests')
diff --git a/app/operations/tests/meson.build b/app/operations/tests/meson.build
new file mode 100644
index 0000000000..65bc8b6d18
--- /dev/null
+++ b/app/operations/tests/meson.build
@@ -0,0 +1,10 @@
+
+executable('test-operations',
+ 'test-operations.c',
+ include_directories: [ rootInclude, rootAppInclude, ],
+
+ dependencies: [
+ cairo, gegl, gdk_pixbuf, glib, pangocairo, pangoft2,
+ ],
+ build_by_default: false,
+)
diff --git a/app/paint/meson.build b/app/paint/meson.build
new file mode 100644
index 0000000000..c9d014f8a4
--- /dev/null
+++ b/app/paint/meson.build
@@ -0,0 +1,58 @@
+
+apppaintenums = custom_target('paint-enums.c',
+ input : [ 'paint-enums.h', ],
+ output: [ 'paint-enums.c', ],
+ command: app_mkenums_custom_target_command,
+ capture: true,
+)
+
+
+libapppaint_sources = [
+ 'gimp-paint.c',
+ 'gimpairbrush.c',
+ 'gimpairbrushoptions.c',
+ 'gimpbrushcore-loops.cc',
+ 'gimpbrushcore.c',
+ 'gimpclone.c',
+ 'gimpcloneoptions.c',
+ 'gimpconvolve.c',
+ 'gimpconvolveoptions.c',
+ 'gimpdodgeburn.c',
+ 'gimpdodgeburnoptions.c',
+ 'gimperaser.c',
+ 'gimperaseroptions.c',
+ 'gimpheal.c',
+ 'gimpink-blob.c',
+ 'gimpink.c',
+ 'gimpinkoptions.c',
+ 'gimpinkundo.c',
+ 'gimpmybrushcore.c',
+ 'gimpmybrushoptions.c',
+ 'gimpmybrushsurface.c',
+ 'gimppaintbrush.c',
+ 'gimppaintcore-loops.cc',
+ 'gimppaintcore-stroke.c',
+ 'gimppaintcore.c',
+ 'gimppaintcoreundo.c',
+ 'gimppaintoptions.c',
+ 'gimppencil.c',
+ 'gimppenciloptions.c',
+ 'gimpperspectiveclone.c',
+ 'gimpperspectivecloneoptions.c',
+ 'gimpsmudge.c',
+ 'gimpsmudgeoptions.c',
+ 'gimpsourcecore.c',
+ 'gimpsourceoptions.c',
+ apppaintenums,
+
+ appcoremarshal,
+]
+
+libapppaint = static_library('apppaint',
+ libapppaint_sources,
+ include_directories: [ rootInclude, rootAppInclude, ],
+ c_args: '-DG_LOG_DOMAIN="Gimp-Paint"',
+ dependencies: [
+ cairo, gegl, gdk_pixbuf, libmypaint,
+ ],
+)
diff --git a/app/pdb/meson.build b/app/pdb/meson.build
new file mode 100644
index 0000000000..5e871ed352
--- /dev/null
+++ b/app/pdb/meson.build
@@ -0,0 +1,85 @@
+libapppdb_sources = [
+ 'gimp-pdb-compat.c',
+ 'gimppdb-query.c',
+ 'gimppdb-utils.c',
+ 'gimppdb.c',
+ 'gimppdbcontext.c',
+ 'gimppdberror.c',
+ 'gimpprocedure.c',
+]
+libappinternalprocs_sources = [
+ 'brush-cmds.c',
+ 'brush-select-cmds.c',
+ 'brushes-cmds.c',
+ 'buffer-cmds.c',
+ 'channel-cmds.c',
+ 'context-cmds.c',
+ 'debug-cmds.c',
+ 'display-cmds.c',
+ 'drawable-cmds.c',
+ 'drawable-color-cmds.c',
+ 'drawable-edit-cmds.c',
+ 'dynamics-cmds.c',
+ 'edit-cmds.c',
+ 'fileops-cmds.c',
+ 'floating-sel-cmds.c',
+ 'font-select-cmds.c',
+ 'fonts-cmds.c',
+ 'gimp-cmds.c',
+ 'gimprc-cmds.c',
+ 'gradient-cmds.c',
+ 'gradient-select-cmds.c',
+ 'gradients-cmds.c',
+ 'help-cmds.c',
+ 'image-cmds.c',
+ 'image-color-profile-cmds.c',
+ 'image-convert-cmds.c',
+ 'image-grid-cmds.c',
+ 'image-guides-cmds.c',
+ 'image-sample-points-cmds.c',
+ 'image-select-cmds.c',
+ 'image-transform-cmds.c',
+ 'image-undo-cmds.c',
+ 'internal-procs.c',
+ 'item-cmds.c',
+ 'item-transform-cmds.c',
+ 'layer-cmds.c',
+ 'message-cmds.c',
+ 'paint-tools-cmds.c',
+ 'palette-cmds.c',
+ 'palette-select-cmds.c',
+ 'palettes-cmds.c',
+ 'pattern-cmds.c',
+ 'pattern-select-cmds.c',
+ 'patterns-cmds.c',
+ 'pdb-cmds.c',
+ 'plug-in-cmds.c',
+ 'plug-in-compat-cmds.c',
+ 'progress-cmds.c',
+ 'selection-cmds.c',
+ 'text-layer-cmds.c',
+ 'text-tool-cmds.c',
+ 'unit-cmds.c',
+ 'vectors-cmds.c',
+
+ appcoremarshal,
+]
+
+libapppdb = static_library('apppdb',
+ libapppdb_sources,
+ include_directories: [ rootInclude, rootAppInclude, ],
+ c_args: '-DG_LOG_DOMAIN="Gimp-PDB"',
+ dependencies: [
+ cairo, gegl, gdk_pixbuf,
+ ],
+)
+
+
+libappinternalprocs = static_library('appinternalprocs',
+ libappinternalprocs_sources,
+ include_directories: [ rootInclude, rootAppInclude, ],
+ c_args: '-DG_LOG_DOMAIN="Gimp-PDB"',
+ dependencies: [
+ cairo, gegl, gdk_pixbuf,
+ ],
+)
diff --git a/app/plug-in/meson.build b/app/plug-in/meson.build
new file mode 100644
index 0000000000..486896d427
--- /dev/null
+++ b/app/plug-in/meson.build
@@ -0,0 +1,51 @@
+
+apppluginenums = custom_target('plug-in-enums.c',
+ input : [ 'plug-in-enums.h', ],
+ output: [ 'plug-in-enums.c', ],
+ command: app_mkenums_custom_target_command,
+ capture: true,
+)
+
+
+libappplugin_sources = [
+ 'gimpenvirontable.c',
+ 'gimpgpparams.c',
+ 'gimpinterpreterdb.c',
+ 'gimpplugin-cleanup.c',
+ 'gimpplugin-context.c',
+ 'gimpplugin-message.c',
+ 'gimpplugin-proc.c',
+ 'gimpplugin-progress.c',
+ 'gimpplugin.c',
+ 'gimpplugindebug.c',
+ 'gimpplugindef.c',
+ 'gimppluginerror.c',
+ 'gimppluginmanager-call.c',
+ 'gimppluginmanager-data.c',
+ 'gimppluginmanager-file-procedure.c',
+ 'gimppluginmanager-file.c',
+ 'gimppluginmanager-help-domain.c',
+ 'gimppluginmanager-locale-domain.c',
+ 'gimppluginmanager-menu-branch.c',
+ 'gimppluginmanager-query.c',
+ 'gimppluginmanager-restore.c',
+ 'gimppluginmanager.c',
+ 'gimppluginprocedure.c',
+ 'gimppluginprocframe.c',
+ 'gimppluginshm.c',
+ 'gimptemporaryprocedure.c',
+ 'plug-in-menu-path.c',
+ 'plug-in-rc.c',
+ apppluginenums,
+
+ appcoremarshal,
+]
+
+libappplugin = static_library('appplug-in',
+ libappplugin_sources,
+ include_directories: [ rootInclude, rootAppInclude, ],
+ c_args: '-DG_LOG_DOMAIN="Gimp-Plug-In"',
+ dependencies: [
+ cairo, gegl, gdk_pixbuf,
+ ],
+)
diff --git a/app/propgui/meson.build b/app/propgui/meson.build
new file mode 100644
index 0000000000..724a0dd430
--- /dev/null
+++ b/app/propgui/meson.build
@@ -0,0 +1,31 @@
+libapppropgui_sources = [
+ 'gimppropgui-channel-mixer.c',
+ 'gimppropgui-color-balance.c',
+ 'gimppropgui-color-rotate.c',
+ 'gimppropgui-color-to-alpha.c',
+ 'gimppropgui-convolution-matrix.c',
+ 'gimppropgui-diffraction-patterns.c',
+ 'gimppropgui-eval.c',
+ 'gimppropgui-generic.c',
+ 'gimppropgui-hue-saturation.c',
+ 'gimppropgui-motion-blur-circular.c',
+ 'gimppropgui-motion-blur-linear.c',
+ 'gimppropgui-motion-blur-zoom.c',
+ 'gimppropgui-newsprint.c',
+ 'gimppropgui-panorama-projection.c',
+ 'gimppropgui-recursive-transform.c',
+ 'gimppropgui-shadows-highlights.c',
+ 'gimppropgui-spiral.c',
+ 'gimppropgui-supernova.c',
+ 'gimppropgui-utils.c',
+ 'gimppropgui.c',
+]
+
+libapppropgui = static_library('apppropgui',
+ libapppropgui_sources,
+ include_directories: [ rootInclude, rootAppInclude, ],
+ c_args: '-DG_LOG_DOMAIN="Gimp-PropGUI"',
+ dependencies: [
+ gegl, gtk3,
+ ],
+)
diff --git a/app/tests/create_test_env.sh b/app/tests/create_test_env.sh
new file mode 100644
index 0000000000..4bf5bfd458
--- /dev/null
+++ b/app/tests/create_test_env.sh
@@ -0,0 +1,29 @@
+#!/bin/bash
+
+# Copy tests resources
+for dir in files gimpdir gimpdir-empty; do
+ rm -rf "${MESON_BUILD_ROOT}/${MESON_SUBDIR}/${dir}"
+ cp -r "${MESON_SOURCE_ROOT}/${MESON_SUBDIR}/${dir}" \
+ "${MESON_BUILD_ROOT}/${MESON_SUBDIR}"
+done
+
+# Link to Color icon theme for tests
+IconsRoot="${MESON_SOURCE_ROOT}/icons/Color"
+IconsDirs=$(find "${IconsRoot}" -name [0-9]* -type d -printf '%f\n' | sort -n)
+for dir in ${IconsDirs} ; do
+ mkdir "${MESON_BUILD_ROOT}/${MESON_SUBDIR}/gimp-test-icon-theme/hicolor/${dir}x${dir}" -p
+ LnName="${MESON_BUILD_ROOT}/${MESON_SUBDIR}/gimp-test-icon-theme/hicolor/${dir}x${dir}/apps"
+ rm -rf "${LnName}"
+ ln -s "${IconsRoot}/${dir}" "${LnName}"
+done
+
+LnName="${MESON_BUILD_ROOT}/${MESON_SUBDIR}/gimp-test-icon-theme/hicolor/index.theme"
+rm -rf "${LnName}"
+ln -s "${IconsRoot}/index.theme" "${LnName}"
+
+
+# Create output dirs
+rm -rf "${MESON_BUILD_ROOT}/${MESON_SUBDIR}/gimpdir-output"
+for dir in brushes gradients patterns; do
+ mkdir -p "${MESON_BUILD_ROOT}/${MESON_SUBDIR}/gimpdir-output/${dir}"
+done
diff --git a/app/tests/meson.build b/app/tests/meson.build
new file mode 100644
index 0000000000..9d456b46e5
--- /dev/null
+++ b/app/tests/meson.build
@@ -0,0 +1,91 @@
+
+apptests_includes = [
+ rootInclude, rootAppInclude
+]
+apptests_deps = [
+ pangocairo, pangoft2, gtk3, dbus_glib, gegl, appstream_glib,
+]
+apptests_links = [
+ libapp,
+ libappactions,
+ libappconfig,
+ libappcore,
+ libappdialogs,
+ libappdialogs,
+ libappdisplay,
+ libappfile,
+ libappgegl,
+ libappgui,
+ libappinternalprocs,
+ libapplayermodes,
+ libapplayermodeslegacy,
+ libappmenus,
+ libappoperations,
+ libapppaint,
+ libapppdb,
+ libappplugin,
+ libapppropgui,
+ libapptext,
+ libapptools,
+ libappvectors,
+ libappwidgets,
+ libappxcf,
+ libgimpbase,
+ libgimpcolor,
+ libgimpconfig,
+ libgimpmath,
+ libgimpmodule,
+ libgimpthumb,
+ libgimpwidgets,
+]
+
+
+libapptestutils_sources = [
+ 'gimp-app-test-utils.c',
+ 'gimp-test-session-utils.c',
+]
+
+libapptestutils = static_library('apptestutils',
+ libapptestutils_sources,
+ include_directories: apptests_includes,
+ dependencies: apptests_deps,
+ link_with: apptests_links,
+)
+
+apptests_links += libapptestutils
+
+
+app_tests = [
+ 'core',
+ 'gimpidtable',
+ 'save-and-export',
+ 'session-2-8-compatibility-multi-window',
+ 'session-2-8-compatibility-single-window',
+ 'single-window-mode',
+ # 'tools',
+ 'ui',
+ 'xcf',
+]
+
+foreach test_name : app_tests
+ test_exe = executable(test_name,
+ 'test-@0@.c'.format(test_name),
+ include_directories: apptests_includes,
+ dependencies: apptests_deps,
+ link_with: apptests_links,
+ )
+
+ test(test_name,
+ test_exe,
+ env: [
+ 'GIMP_TESTING_ABS_TOP_SRCDIR=' + meson.build_root(),
+ 'GIMP_TESTING_ABS_TOP_BUILDDIR='+ meson.build_root(),
+ 'GIMP_TESTING_PLUGINDIRS=' + meson.build_root()/'plug-ins'/'common',
+ 'GIMP_TESTING_PLUGINDIRS_BASENAME_IGNORES=mkgen.pl',
+ ],
+ suite: 'app',
+ )
+
+endforeach
+
+run_target('create_test_env', command: find_program('create_test_env.sh'))
diff --git a/app/text/meson.build b/app/text/meson.build
new file mode 100644
index 0000000000..d3cf312ecc
--- /dev/null
+++ b/app/text/meson.build
@@ -0,0 +1,36 @@
+
+apptextenums = custom_target('text-enums.c',
+ input : [ 'text-enums.h', ],
+ output: [ 'text-enums.c', ],
+ command: app_mkenums_custom_target_command,
+ capture: true,
+)
+
+libapptext_sources = [
+ 'gimpfont.c',
+ 'gimpfontfactory.c',
+ 'gimptext-compat.c',
+ 'gimptext-parasite.c',
+ 'gimptext-vectors.c',
+ 'gimptext-xlfd.c',
+ 'gimptext.c',
+ 'gimptextlayer-transform.c',
+ 'gimptextlayer-xcf.c',
+ 'gimptextlayer.c',
+ 'gimptextlayout-render.c',
+ 'gimptextlayout.c',
+ 'gimptextundo.c',
+ apptextenums,
+
+ appcoremarshal,
+]
+
+
+libapptext = static_library('apptext',
+ libapptext_sources,
+ include_directories: [ rootInclude, rootAppInclude, ],
+ c_args: '-DG_LOG_DOMAIN="Gimp-Text"',
+ dependencies: [
+ gegl, gdk_pixbuf, harfbuzz, pangocairo, pangoft2,
+ ],
+)
diff --git a/app/tools/meson.build b/app/tools/meson.build
new file mode 100644
index 0000000000..fa0bdb96fd
--- /dev/null
+++ b/app/tools/meson.build
@@ -0,0 +1,131 @@
+
+apptoolsenums = custom_target('tools-enums.c',
+ input : [ 'tools-enums.h', ],
+ output: [ 'tools-enums.c', ],
+ command: app_mkenums_custom_target_command,
+ capture: true,
+)
+
+libapptools_sources = [
+ 'gimp-tools.c',
+ 'gimp-tool-options-manager.c',
+ 'gimpairbrushtool.c',
+ 'gimpalignoptions.c',
+ 'gimpaligntool.c',
+ 'gimpbrightnesscontrasttool.c',
+ 'gimpbrushtool.c',
+ 'gimpbucketfilloptions.c',
+ 'gimpbucketfilltool.c',
+ 'gimpbycolorselecttool.c',
+ 'gimpcageoptions.c',
+ 'gimpcagetool.c',
+ 'gimpcloneoptions-gui.c',
+ 'gimpclonetool.c',
+ 'gimpcoloroptions.c',
+ 'gimpcolorpickeroptions.c',
+ 'gimpcolorpickertool.c',
+ 'gimpcolortool.c',
+ 'gimpconvolvetool.c',
+ 'gimpcropoptions.c',
+ 'gimpcroptool.c',
+ 'gimpcurvestool.c',
+ 'gimpdodgeburntool.c',
+ 'gimpdrawtool.c',
+ 'gimpeditselectiontool.c',
+ 'gimpellipseselecttool.c',
+ 'gimperasertool.c',
+ 'gimpfilteroptions.c',
+ 'gimpfiltertool-settings.c',
+ 'gimpfiltertool-widgets.c',
+ 'gimpfiltertool.c',
+ 'gimpflipoptions.c',
+ 'gimpfliptool.c',
+ 'gimpforegroundselectoptions.c',
+ 'gimpforegroundselecttool.c',
+ 'gimpforegroundselecttoolundo.c',
+ 'gimpfreeselecttool.c',
+ 'gimpfuzzyselecttool.c',
+ 'gimpgegltool.c',
+ 'gimpgenerictransformtool.c',
+ 'gimpgradientoptions.c',
+ 'gimpgradienttool-editor.c',
+ 'gimpgradienttool.c',
+ 'gimpguidetool.c',
+ 'gimphandletransformoptions.c',
+ 'gimphandletransformtool.c',
+ 'gimphealtool.c',
+ 'gimphistogramoptions.c',
+ 'gimpinkoptions-gui.c',
+ 'gimpinktool.c',
+ 'gimpiscissorsoptions.c',
+ 'gimpiscissorstool.c',
+ 'gimplevelstool.c',
+ 'gimpmagnifyoptions.c',
+ 'gimpmagnifytool.c',
+ 'gimpmeasureoptions.c',
+ 'gimpmeasuretool.c',
+ 'gimpmoveoptions.c',
+ 'gimpmovetool.c',
+ 'gimpmybrushoptions-gui.c',
+ 'gimpmybrushtool.c',
+ 'gimpnpointdeformationoptions.c',
+ 'gimpnpointdeformationtool.c',
+ 'gimpoffsettool.c',
+ 'gimpoperationtool.c',
+ 'gimppaintbrushtool.c',
+ 'gimppaintoptions-gui.c',
+ 'gimppainttool-paint.c',
+ 'gimppainttool.c',
+ 'gimppenciltool.c',
+ 'gimpperspectiveclonetool.c',
+ 'gimpperspectivetool.c',
+ 'gimppolygonselecttool.c',
+ 'gimprectangleoptions.c',
+ 'gimprectangleselectoptions.c',
+ 'gimprectangleselecttool.c',
+ 'gimpregionselectoptions.c',
+ 'gimpregionselecttool.c',
+ 'gimprotatetool.c',
+ 'gimpsamplepointtool.c',
+ 'gimpscaletool.c',
+ 'gimpseamlesscloneoptions.c',
+ 'gimpseamlessclonetool.c',
+ 'gimpselectionoptions.c',
+ 'gimpselectiontool.c',
+ 'gimpsheartool.c',
+ 'gimpsmudgetool.c',
+ 'gimpsourcetool.c',
+ 'gimptextoptions.c',
+ 'gimptexttool-editor.c',
+ 'gimptexttool.c',
+ 'gimpthresholdtool.c',
+ 'gimptilehandleriscissors.c',
+ 'gimptool-progress.c',
+ 'gimptool.c',
+ 'gimptoolcontrol.c',
+ 'gimptooloptions-gui.c',
+ 'gimptools-utils.c',
+ 'gimptransformgridoptions.c',
+ 'gimptransformgridtool.c',
+ 'gimptransformgridtoolundo.c',
+ 'gimptransformoptions.c',
+ 'gimptransformtool.c',
+ 'gimpunifiedtransformtool.c',
+ 'gimpvectoroptions.c',
+ 'gimpvectortool.c',
+ 'gimpwarpoptions.c',
+ 'gimpwarptool.c',
+ 'tool_manager.c',
+ apptoolsenums,
+
+ appcoremarshal,
+]
+
+libapptools = static_library('apptools',
+ libapptools_sources,
+ include_directories: [ rootInclude, rootAppInclude, ],
+ c_args: '-DG_LOG_DOMAIN="Gimp-Tools"',
+ dependencies: [
+ gegl, gtk3,
+ ],
+)
diff --git a/app/vectors/meson.build b/app/vectors/meson.build
new file mode 100644
index 0000000000..d517bee916
--- /dev/null
+++ b/app/vectors/meson.build
@@ -0,0 +1,26 @@
+libappvectors_sources = [
+ 'gimpanchor.c',
+ 'gimpbezierstroke.c',
+ 'gimpstroke-new.c',
+ 'gimpstroke.c',
+ 'gimpvectors-compat.c',
+ 'gimpvectors-export.c',
+ 'gimpvectors-import.c',
+ 'gimpvectors-preview.c',
+ 'gimpvectors-warp.c',
+ 'gimpvectors.c',
+ 'gimpvectorsmodundo.c',
+ 'gimpvectorspropundo.c',
+ 'gimpvectorsundo.c',
+
+ appcoremarshal,
+]
+
+libappvectors = static_library('appvectors',
+ libappvectors_sources,
+ include_directories: [ rootInclude, rootAppInclude, ],
+ c_args: '-DG_LOG_DOMAIN="Gimp-Vectors"',
+ dependencies: [
+ cairo, gegl, gdk_pixbuf,
+ ],
+)
diff --git a/app/widgets/meson.build b/app/widgets/meson.build
new file mode 100644
index 0000000000..52aa3009c9
--- /dev/null
+++ b/app/widgets/meson.build
@@ -0,0 +1,237 @@
+
+appwidgetsenums = custom_target('widgets-enums.c',
+ input : [ 'widgets-enums.h', ],
+ output: [ 'widgets-enums.c', ],
+ command: app_mkenums_custom_target_command,
+ capture: true,
+)
+
+
+libappwidgets_sources = [
+ 'gimpaction-history.c',
+ 'gimpaction.c',
+ 'gimpactioneditor.c',
+ 'gimpactionfactory.c',
+ 'gimpactiongroup.c',
+ 'gimpactionimpl.c',
+ 'gimpactionview.c',
+ 'gimpblobeditor.c',
+ 'gimpbrusheditor.c',
+ 'gimpbrushfactoryview.c',
+ 'gimpbrushselect.c',
+ 'gimpbuffersourcebox.c',
+ 'gimpbufferview.c',
+ 'gimpcairo-wilber.c',
+ 'gimpcellrendererbutton.c',
+ 'gimpcellrendererdashes.c',
+ 'gimpcellrendererviewable.c',
+ 'gimpchanneltreeview.c',
+ 'gimpcircle.c',
+ 'gimpclipboard.c',
+ 'gimpcolorbar.c',
+ 'gimpcolordialog.c',
+ 'gimpcolordisplayeditor.c',
+ 'gimpcoloreditor.c',
+ 'gimpcolorframe.c',
+ 'gimpcolorhistory.c',
+ 'gimpcolormapeditor.c',
+ 'gimpcolormapselection.c',
+ 'gimpcolorpanel.c',
+ 'gimpcolorselectorpalette.c',
+ 'gimpcombotagentry.c',
+ 'gimpcomponenteditor.c',
+ 'gimpcontainerbox.c',
+ 'gimpcontainercombobox.c',
+ 'gimpcontainereditor.c',
+ 'gimpcontainerentry.c',
+ 'gimpcontainericonview.c',
+ 'gimpcontainerpopup.c',
+ 'gimpcontainertreestore.c',
+ 'gimpcontainertreeview-dnd.c',
+ 'gimpcontainertreeview.c',
+ 'gimpcontainerview-utils.c',
+ 'gimpcontainerview.c',
+ 'gimpcontrollereditor.c',
+ 'gimpcontrollerinfo.c',
+ 'gimpcontrollerkeyboard.c',
+ 'gimpcontrollerlist.c',
+ 'gimpcontrollermouse.c',
+ 'gimpcontrollers.c',
+ 'gimpcontrollerwheel.c',
+ 'gimpcriticaldialog.c',
+ 'gimpcursor.c',
+ 'gimpcurveview.c',
+ 'gimpdashboard.c',
+ 'gimpdasheditor.c',
+ 'gimpdataeditor.c',
+ 'gimpdatafactoryview.c',
+ 'gimpdeviceeditor.c',
+ 'gimpdeviceinfo-coords.c',
+ 'gimpdeviceinfo.c',
+ 'gimpdeviceinfoeditor.c',
+ 'gimpdevicemanager.c',
+ 'gimpdevices.c',
+ 'gimpdevicestatus.c',
+ 'gimpdial.c',
+ 'gimpdialogfactory.c',
+ 'gimpdnd-xds.c',
+ 'gimpdnd.c',
+ 'gimpdock.c',
+ 'gimpdockable.c',
+ 'gimpdockbook.c',
+ 'gimpdockcolumns.c',
+ 'gimpdockcontainer.c',
+ 'gimpdocked.c',
+ 'gimpdockwindow.c',
+ 'gimpdocumentview.c',
+ 'gimpdrawabletreeview.c',
+ 'gimpdynamicseditor.c',
+ 'gimpdynamicsfactoryview.c',
+ 'gimpdynamicsoutputeditor.c',
+ 'gimpeditor.c',
+ 'gimpenumaction.c',
+ 'gimperrorconsole.c',
+ 'gimperrordialog.c',
+ 'gimpexportdialog.c',
+ 'gimpextensionlist.c',
+ 'gimpextensiondetails.c',
+ 'gimpfgbgeditor.c',
+ 'gimpfgbgview.c',
+ 'gimpfiledialog.c',
+ 'gimpfileprocview.c',
+ 'gimpfilleditor.c',
+ 'gimpfontfactoryview.c',
+ 'gimpfontselect.c',
+ 'gimpgradienteditor.c',
+ 'gimpgradientselect.c',
+ 'gimpgrideditor.c',
+ 'gimphandlebar.c',
+ 'gimphelp.c',
+ 'gimphistogrambox.c',
+ 'gimphistogrameditor.c',
+ 'gimphistogramview.c',
+ 'gimpiconpicker.c',
+ 'gimpimagecommenteditor.c',
+ 'gimpimageeditor.c',
+ 'gimpimageparasiteview.c',
+ 'gimpimageprofileview.c',
+ 'gimpimagepropview.c',
+ 'gimpimageview.c',
+ 'gimpitemtreeview.c',
+ 'gimplanguagecombobox.c',
+ 'gimplanguageentry.c',
+ 'gimplanguagestore-parser.c',
+ 'gimplanguagestore.c',
+ 'gimplayermodebox.c',
+ 'gimplayermodecombobox.c',
+ 'gimplayertreeview.c',
+ 'gimpmenudock.c',
+ 'gimpmenufactory.c',
+ 'gimpmessagebox.c',
+ 'gimpmessagedialog.c',
+ 'gimpmeter.c',
+ 'gimpnavigationview.c',
+ 'gimpopendialog.c',
+ 'gimpoverlaybox.c',
+ 'gimpoverlaychild.c',
+ 'gimpoverlaydialog.c',
+ 'gimpoverlayframe.c',
+ 'gimppaletteeditor.c',
+ 'gimppaletteselect.c',
+ 'gimppaletteview.c',
+ 'gimppanedbox.c',
+ 'gimppatternfactoryview.c',
+ 'gimppatternselect.c',
+ 'gimppdbdialog.c',
+ 'gimppickablebutton.c',
+ 'gimppickablepopup.c',
+ 'gimppixbuf.c',
+ 'gimppluginview.c',
+ 'gimppolar.c',
+ 'gimppopup.c',
+ 'gimpprefsbox.c',
+ 'gimpprocedureaction.c',
+ 'gimpprogressbox.c',
+ 'gimpprogressdialog.c',
+ 'gimppropwidgets.c',
+ 'gimpradioaction.c',
+ 'gimprender.c',
+ 'gimpsamplepointeditor.c',
+ 'gimpsavedialog.c',
+ 'gimpsearchpopup.c',
+ 'gimpselectiondata.c',
+ 'gimpselectioneditor.c',
+ 'gimpsessioninfo-aux.c',
+ 'gimpsessioninfo-book.c',
+ 'gimpsessioninfo-dock.c',
+ 'gimpsessioninfo-dockable.c',
+ 'gimpsessioninfo.c',
+ 'gimpsessionmanaged.c',
+ 'gimpsettingsbox.c',
+ 'gimpsettingseditor.c',
+ 'gimpsizebox.c',
+ 'gimpspinscale.c',
+ 'gimpstringaction.c',
+ 'gimpstrokeeditor.c',
+ 'gimpsymmetryeditor.c',
+ 'gimptagentry.c',
+ 'gimptagpopup.c',
+ 'gimptemplateeditor.c',
+ 'gimptemplateview.c',
+ 'gimptextbuffer-serialize.c',
+ 'gimptextbuffer.c',
+ 'gimptexteditor.c',
+ 'gimptextproxy.c',
+ 'gimptextstyleeditor.c',
+ 'gimptexttag.c',
+ 'gimpthumbbox.c',
+ 'gimptoggleaction.c',
+ 'gimptoolbox-color-area.c',
+ 'gimptoolbox-dnd.c',
+ 'gimptoolbox-image-area.c',
+ 'gimptoolbox-indicator-area.c',
+ 'gimptoolbox.c',
+ 'gimptooleditor.c',
+ 'gimptooloptionseditor.c',
+ 'gimptoolpalette.c',
+ 'gimptoolpreseteditor.c',
+ 'gimptoolpresetfactoryview.c',
+ 'gimptranslationstore.c',
+ 'gimpuimanager.c',
+ 'gimpundoeditor.c',
+ 'gimpvectorstreeview.c',
+ 'gimpview-popup.c',
+ 'gimpview.c',
+ 'gimpviewablebox.c',
+ 'gimpviewablebutton.c',
+ 'gimpviewabledialog.c',
+ 'gimpviewrenderer-frame.c',
+ 'gimpviewrenderer-utils.c',
+ 'gimpviewrenderer.c',
+ 'gimpviewrendererbrush.c',
+ 'gimpviewrendererbuffer.c',
+ 'gimpviewrendererdrawable.c',
+ 'gimpviewrenderergradient.c',
+ 'gimpviewrendererimage.c',
+ 'gimpviewrendererimagefile.c',
+ 'gimpviewrendererlayer.c',
+ 'gimpviewrendererpalette.c',
+ 'gimpviewrenderervectors.c',
+ 'gimpwidgets-constructors.c',
+ 'gimpwidgets-utils.c',
+ 'gimpwindow.c',
+ 'gimpwindowstrategy.c',
+ appwidgetsenums,
+
+ appcoremarshal,
+]
+
+
+libappwidgets = static_library('appwidgets',
+ libappwidgets_sources,
+ include_directories: [ rootInclude, rootAppInclude, ],
+ c_args: '-DG_LOG_DOMAIN="Gimp-Widgets"',
+ dependencies: [
+ gegl, gtk3,
+ ],
+)
diff --git a/app/xcf/meson.build b/app/xcf/meson.build
new file mode 100644
index 0000000000..44198e92dc
--- /dev/null
+++ b/app/xcf/meson.build
@@ -0,0 +1,18 @@
+libappxcf_sources = [
+ 'xcf-load.c',
+ 'xcf-read.c',
+ 'xcf-save.c',
+ 'xcf-seek.c',
+ 'xcf-utils.c',
+ 'xcf-write.c',
+ 'xcf.c',
+]
+
+libappxcf = static_library('appxcf',
+ libappxcf_sources,
+ include_directories: [ rootInclude, rootAppInclude, ],
+ c_args: '-DG_LOG_DOMAIN="Gimp-XCF"',
+ dependencies: [
+ cairo, gegl, gdk_pixbuf, zlib
+ ],
+)
diff --git a/build/windows/installer/lang/extractlang.sh b/build/windows/installer/lang/extractlang.sh
new file mode 100644
index 0000000000..a1cad742da
--- /dev/null
+++ b/build/windows/installer/lang/extractlang.sh
@@ -0,0 +1,11 @@
+#!/bin/bash
+prefix=$1
+encoding=$2
+infile=$3
+
+#replace [] with \[\]
+prefix=$(echo "$prefix" | sed 's/[][]/\\\0/g')
+
+#echo to stdout
+sed '/^\w\+'"$prefix"'=/{s/\(.\)'"$prefix"'/\1/;n};/^\w.*=/d' "$infile" \
+| iconv -f UTF-8 -t "$encoding"
diff --git a/build/windows/installer/lang/meson.build b/build/windows/installer/lang/meson.build
new file mode 100644
index 0000000000..c86aeabf66
--- /dev/null
+++ b/build/windows/installer/lang/meson.build
@@ -0,0 +1,61 @@
+isl_input = custom_target('setup.isl',
+ input : 'setup.isl.in',
+ output: 'setup.isl',
+ command: [
+ intltool_merge,
+ '--desktop-style',
+ '--utf8',
+ '--multiple-output',
+ '--cache=' + '@OUTDIR@' / 'intltool-merge-cache',
+ po_windows_installer_dir,
+ '@INPUT@',
+ '@OUTPUT@',
+ ]
+)
+
+languages = [
+ { 'code': 'ca', },
+ { 'code': 'cs', 'encoding': 'WINDOWS-1250', },
+ { 'code': 'da', },
+ { 'code': 'de', },
+ { 'code': 'el', 'encoding': 'WINDOWS-1253', },
+ { 'code': 'en', 'prefix': '', },
+ { 'code': 'eo', 'encoding': 'ISO-8859-3', },
+ { 'code': 'es', },
+ { 'code': 'eu', },
+ { 'code': 'fr', },
+ { 'code': 'hu', 'encoding': 'WINDOWS-1250', },
+ { 'code': 'id', 'encoding': 'ISO-8859-1', },
+ { 'code': 'is', },
+ { 'code': 'it', },
+ { 'code': 'ko', 'encoding': 'EUC-KR', },
+ { 'code': 'lv', 'encoding': 'ISO-8859-13', },
+ { 'code': 'nl', },
+ { 'code': 'pl', 'encoding': 'WINDOWS-1250', },
+ { 'code': 'pt_BR', },
+ { 'code': 'ru', 'encoding': 'WINDOWS-1251', },
+ { 'code': 'sl', 'encoding': 'WINDOWS-1250', },
+ { 'code': 'sv', },
+ { 'code': 'tr', 'encoding': 'WINDOWS-1254', },
+ { 'code': 'zh_CN', 'encoding': 'WINDOWS-936', },
+ { 'code': 'zh_TW', 'encoding': 'CP950', },
+]
+
+extractlang = find_program('extractlang.sh')
+
+all_isl = []
+foreach language : languages
+ lang_code = language.get('code')
+ lang_prefix = language.get('prefix', '[@0@]'.format(code))
+ lang_encoding= language.get('encoding', 'WINDOWS-1252')
+
+ islfile = '@0 setup isl'.format(lang_code)
+
+ all_isl += custom_target(islfile,
+ input : isl_input,
+ output: islfile,
+ command: [ extractlang, lang_prefix, lang_encoding, '@INPUT@' ],
+ capture: true,
+ build_by_default: true,
+ )
+endforeach
diff --git a/build/windows/installer/meson.build b/build/windows/installer/meson.build
new file mode 100644
index 0000000000..55564fb4b4
--- /dev/null
+++ b/build/windows/installer/meson.build
@@ -0,0 +1 @@
+subdir('lang')
diff --git a/build/windows/meson.build b/build/windows/meson.build
new file mode 100644
index 0000000000..28362f6e10
--- /dev/null
+++ b/build/windows/meson.build
@@ -0,0 +1,13 @@
+# Windows specific
+
+gimp_plugins_rc = configure_file(
+ input : 'gimp-plug-ins.rc.in',
+ output: 'gimp-plug-ins.rc',
+ configuration: versionconfig,
+)
+
+gimp_app_rc = configure_file(
+ input : 'gimp.rc.in',
+ output: 'gimp.rc',
+ configuration: versionconfig,
+)
diff --git a/cursors/dummy_file.xml b/cursors/dummy_file.xml
new file mode 100644
index 0000000000..460d12560c
--- /dev/null
+++ b/cursors/dummy_file.xml
@@ -0,0 +1 @@
+@DATA@
diff --git a/cursors/meson.build b/cursors/meson.build
new file mode 100644
index 0000000000..2f08b2f7a0
--- /dev/null
+++ b/cursors/meson.build
@@ -0,0 +1,214 @@
+tool_cursors = [
+ 'cursor-bad.png',
+ 'cursor-bad-x2.png',
+ 'cursor-color-picker.png',
+ 'cursor-color-picker-x2.png',
+ 'cursor-corner-bottom-left.png',
+ 'cursor-corner-bottom-left-x2.png',
+ 'cursor-corner-bottom-right.png',
+ 'cursor-corner-bottom-right-x2.png',
+ 'cursor-corner-bottom.png',
+ 'cursor-corner-bottom-x2.png',
+ 'cursor-corner-left.png',
+ 'cursor-corner-left-x2.png',
+ 'cursor-corner-right.png',
+ 'cursor-corner-right-x2.png',
+ 'cursor-corner-top-left.png',
+ 'cursor-corner-top-left-x2.png',
+ 'cursor-corner-top-right.png',
+ 'cursor-corner-top-right-x2.png',
+ 'cursor-corner-top.png',
+ 'cursor-corner-top-x2.png',
+ 'cursor-crosshair-small.png',
+ 'cursor-crosshair-small-x2.png',
+ 'cursor-crosshair.png',
+ 'cursor-crosshair-x2.png',
+ 'cursor-mouse.png',
+ 'cursor-mouse-x2.png',
+ 'cursor-move.png',
+ 'cursor-move-x2.png',
+ 'cursor-none.png',
+ 'cursor-none-x2.png',
+ 'cursor-side-bottom-left.png',
+ 'cursor-side-bottom-left-x2.png',
+ 'cursor-side-bottom-right.png',
+ 'cursor-side-bottom-right-x2.png',
+ 'cursor-side-bottom.png',
+ 'cursor-side-bottom-x2.png',
+ 'cursor-side-left.png',
+ 'cursor-side-left-x2.png',
+ 'cursor-side-right.png',
+ 'cursor-side-right-x2.png',
+ 'cursor-side-top-left.png',
+ 'cursor-side-top-left-x2.png',
+ 'cursor-side-top-right.png',
+ 'cursor-side-top-right-x2.png',
+ 'cursor-side-top.png',
+ 'cursor-side-top-x2.png',
+ 'cursor-zoom.png',
+ 'cursor-zoom-x2.png',
+
+ 'modifier-anchor.png',
+ 'modifier-anchor-x2.png',
+ 'modifier-background.png',
+ 'modifier-background-x2.png',
+ 'modifier-bad.png',
+ 'modifier-bad-x2.png',
+ 'modifier-control.png',
+ 'modifier-control-x2.png',
+ 'modifier-foreground.png',
+ 'modifier-foreground-x2.png',
+ 'modifier-intersect.png',
+ 'modifier-intersect-x2.png',
+ 'modifier-join.png',
+ 'modifier-join-x2.png',
+ 'modifier-minus.png',
+ 'modifier-minus-x2.png',
+ 'modifier-move.png',
+ 'modifier-move-x2.png',
+ 'modifier-pattern.png',
+ 'modifier-pattern-x2.png',
+ 'modifier-plus.png',
+ 'modifier-plus-x2.png',
+ 'modifier-resize.png',
+ 'modifier-resize-x2.png',
+ 'modifier-rotate.png',
+ 'modifier-rotate-x2.png',
+ 'modifier-select.png',
+ 'modifier-select-x2.png',
+ 'modifier-zoom.png',
+ 'modifier-zoom-x2.png',
+
+ 'tool-airbrush.png',
+ 'tool-airbrush-x2.png',
+ 'tool-blur.png',
+ 'tool-blur-x2.png',
+ 'tool-bucket-fill.png',
+ 'tool-bucket-fill-x2.png',
+ 'tool-burn.png',
+ 'tool-burn-x2.png',
+ 'tool-clone.png',
+ 'tool-clone-x2.png',
+ 'tool-color-picker.png',
+ 'tool-color-picker-x2.png',
+ 'tool-crop.png',
+ 'tool-crop-x2.png',
+ 'tool-dodge.png',
+ 'tool-dodge-x2.png',
+ 'tool-ellipse-select.png',
+ 'tool-ellipse-select-x2.png',
+ 'tool-eraser.png',
+ 'tool-eraser-x2.png',
+ 'tool-flip-horizontal.png',
+ 'tool-flip-horizontal-x2.png',
+ 'tool-flip-vertical.png',
+ 'tool-flip-vertical-x2.png',
+ 'tool-free-select.png',
+ 'tool-free-select-x2.png',
+ 'tool-fuzzy-select.png',
+ 'tool-fuzzy-select-x2.png',
+ 'tool-gradient.png',
+ 'tool-gradient-x2.png',
+ 'tool-hand.png',
+ 'tool-hand-x2.png',
+ 'tool-heal.png',
+ 'tool-heal-x2.png',
+ 'tool-ink.png',
+ 'tool-ink-x2.png',
+ 'tool-iscissors.png',
+ 'tool-iscissors-x2.png',
+ 'tool-measure.png',
+ 'tool-measure-x2.png',
+ 'tool-move.png',
+ 'tool-move-x2.png',
+ 'tool-paintbrush.png',
+ 'tool-paintbrush-x2.png',
+ 'tool-paths-anchor.png',
+ 'tool-paths-anchor-x2.png',
+ 'tool-paths-control.png',
+ 'tool-paths-control-x2.png',
+ 'tool-paths-segment.png',
+ 'tool-paths-segment-x2.png',
+ 'tool-paths.png',
+ 'tool-paths-x2.png',
+ 'tool-pencil.png',
+ 'tool-pencil-x2.png',
+ 'tool-perspective.png',
+ 'tool-perspective-x2.png',
+ 'tool-polygon-select.png',
+ 'tool-polygon-select-x2.png',
+ 'tool-rect-select.png',
+ 'tool-rect-select-x2.png',
+ 'tool-resize.png',
+ 'tool-resize-x2.png',
+ 'tool-rotate.png',
+ 'tool-rotate-x2.png',
+ 'tool-shear.png',
+ 'tool-shear-x2.png',
+ 'tool-smudge.png',
+ 'tool-smudge-x2.png',
+ 'tool-text.png',
+ 'tool-text-x2.png',
+ 'tool-warp.png',
+ 'tool-warp-x2.png',
+ 'tool-zoom.png',
+ 'tool-zoom-x2.png',
+]
+
+color_picker_cursors = [
+ 'cursor-color-picker.png',
+]
+
+cursors_resourcename = 'gimp-tool-cursors'
+cursors_xml_content = '<?xml version="1.0" encoding="UTF-8"?>\n'
+cursors_xml_content += '<gresources>\n'
+cursors_xml_content += ' <gresource prefix="/org/gimp/tool-cursors">\n'
+foreach cursor : tool_cursors
+ cursors_xml_content+=' <file preprocess="to-pixdata">'+ cursor +'</file>\n'
+endforeach
+cursors_xml_content += ' </gresource>\n'
+cursors_xml_content += '</gresources>\n'
+
+cursors_xml_data = configuration_data()
+cursors_xml_data.set('DATA', cursors_xml_content)
+cursors_xml = configure_file(
+ input : 'dummy_file.xml',
+ output: cursors_resourcename + '.gresource.xml',
+ configuration: cursors_xml_data,
+)
+
+
+pickers_resourcename = 'gimp-color-picker-cursors'
+pickers_xml_content = '<?xml version="1.0" encoding="UTF-8"?>\n'
+pickers_xml_content += '<gresources>\n'
+pickers_xml_content += ' <gresource prefix="/org/gimp/color-picker-cursors">\n'
+foreach cursor : color_picker_cursors
+ pickers_xml_content+=' <file preprocess="to-pixdata">'+ cursor +'</file>\n'
+endforeach
+pickers_xml_content += ' </gresource>\n'
+pickers_xml_content += ' <gresource prefix="/org/gimp/color-picker-cursors-raw">\n'
+foreach cursor : color_picker_cursors
+ pickers_xml_content+=' <file >'+ cursor +'</file>\n'
+endforeach
+pickers_xml_content += ' </gresource>\n'
+pickers_xml_content += '</gresources>\n'
+
+pickers_xml_data = configuration_data()
+pickers_xml_data.set('DATA', pickers_xml_content)
+pickers_xml = configure_file(
+ input : 'dummy_file.xml',
+ output: pickers_resourcename + '.gresource.xml',
+ configuration: pickers_xml_data,
+)
+
+cursors_sources = gnome.compile_resources(
+ cursors_resourcename,
+ cursors_xml,
+ c_name: cursors_resourcename.underscorify(),
+)
+
+pickers_sources = gnome.compile_resources(
+ pickers_resourcename,
+ pickers_xml,
+ c_name: pickers_resourcename.underscorify(),
+)
diff --git a/data/brushes/Basic/meson.build b/data/brushes/Basic/meson.build
new file mode 100644
index 0000000000..b32ed8d7e7
--- /dev/null
+++ b/data/brushes/Basic/meson.build
@@ -0,0 +1,12 @@
+brushes = files(
+ '1-pixel.vbr',
+ 'Block-01.vbr',
+ 'Block-02.vbr',
+ 'Block-03.vbr',
+ 'Hardness-025.vbr',
+ 'Hardness-050.vbr',
+ 'Hardness-075.vbr',
+ 'Hardness-100.vbr',
+ 'pixel.gbr',
+ 'Star.vbr',
+)
diff --git a/data/brushes/Fun/meson.build b/data/brushes/Fun/meson.build
new file mode 100644
index 0000000000..f52fd85266
--- /dev/null
+++ b/data/brushes/Fun/meson.build
@@ -0,0 +1,5 @@
+brushes = files(
+ 'GEGL-goat.gih',
+ 'pepper.gbr',
+ 'Wilber.gih',
+)
diff --git a/data/brushes/Legacy/meson.build b/data/brushes/Legacy/meson.build
new file mode 100644
index 0000000000..46a0bd4036
--- /dev/null
+++ b/data/brushes/Legacy/meson.build
@@ -0,0 +1,5 @@
+brushes = files(
+ 'confetti.gbr',
+ 'confetti.gih',
+ 'vine.gih',
+)
diff --git a/data/brushes/Media/meson.build b/data/brushes/Media/meson.build
new file mode 100644
index 0000000000..33d62d9b64
--- /dev/null
+++ b/data/brushes/Media/meson.build
@@ -0,0 +1,13 @@
+brushes = files(
+ 'Acrylic-01.gih',
+ 'Acrylic-02.gih',
+ 'Acrylic-03.gih',
+ 'Acrylic-04.gih',
+ 'Acrylic-05.gih',
+ 'Bristles-01.gbr',
+ 'Bristles-02.gbr',
+ 'Bristles-03.gbr',
+ 'Oils-01.gbr',
+ 'Oils-02.gbr',
+ 'Oils-03.gbr',
+)
diff --git a/data/brushes/Sketch/meson.build b/data/brushes/Sketch/meson.build
new file mode 100644
index 0000000000..39dfbb2f48
--- /dev/null
+++ b/data/brushes/Sketch/meson.build
@@ -0,0 +1,12 @@
+brushes = files(
+ 'Chalk-01.gih',
+ 'Chalk-02.gih',
+ 'Chalk-03.gih',
+ 'Charcoal-01.gbr',
+ 'Charcoal-02.gbr',
+ 'Charcoal-03.gih',
+ 'Pencil-01.gih',
+ 'Pencil-02.gih',
+ 'Pencil-03.gih',
+ 'Pencil-Scratch.gbr',
+)
diff --git a/data/brushes/Splatters/meson.build b/data/brushes/Splatters/meson.build
new file mode 100644
index 0000000000..d6f8b219c3
--- /dev/null
+++ b/data/brushes/Splatters/meson.build
@@ -0,0 +1,10 @@
+brushes = files(
+ 'Grunge-01.gih',
+ 'Sparks-Hose.gih',
+ 'Splats-01.gih',
+ 'Splats-02.gih',
+ 'Sponge-01.gbr',
+ 'Sponge-01.gbr',
+ 'Sponge-02.gbr',
+ 'Sponge-02.gbr',
+)
diff --git a/data/brushes/Texture/meson.build b/data/brushes/Texture/meson.build
new file mode 100644
index 0000000000..a1dea9765e
--- /dev/null
+++ b/data/brushes/Texture/meson.build
@@ -0,0 +1,15 @@
+brushes = files(
+ 'Cell-01.gbr',
+ 'Cell-02.gbr',
+ 'Hatch-Pen-01.gbr',
+ 'Smoke.gbr',
+ 'Texture-01.gbr',
+ 'Texture-02.gbr',
+ 'Vegetation-01.gbr',
+ 'Grass.gih',
+ 'Stone-Work-01.gih',
+ 'Texture-Hose-01.gih',
+ 'Texture-Hose-02.gih',
+ 'Texture-Hose-03.gih',
+ 'Vegetation-02.gih',
+)
diff --git a/data/brushes/meson.build b/data/brushes/meson.build
new file mode 100644
index 0000000000..07cf63a364
--- /dev/null
+++ b/data/brushes/meson.build
@@ -0,0 +1,17 @@
+brushes_types = [
+ 'Basic',
+ 'Fun',
+ 'Legacy',
+ 'Media',
+ 'Sketch',
+ 'Splatters',
+ 'Texture',
+]
+
+foreach brushes_type : brushes_types
+ subdir(brushes_type)
+ install_data(
+ brushes,
+ install_dir: gimpdatadir / 'brushes' / brushes_type,
+ )
+endforeach
diff --git a/data/dynamics/Basic/meson.build b/data/dynamics/Basic/meson.build
new file mode 100644
index 0000000000..a93e0f9438
--- /dev/null
+++ b/data/dynamics/Basic/meson.build
@@ -0,0 +1,10 @@
+dynamics = files(
+ 'Basic-Simple.gdyn',
+ 'Dynamics-Random.gdyn',
+ 'Negative-Size-Pressure.gdyn',
+ 'Pen-Generic.gdyn',
+ 'Pencil-Generic.gdyn',
+ 'Pencil-Shader.gdyn',
+ 'Pressure-Opacity.gdyn',
+ 'Pressure-Size.gdyn',
+)
diff --git a/data/dynamics/FX/meson.build b/data/dynamics/FX/meson.build
new file mode 100644
index 0000000000..9df99d25fa
--- /dev/null
+++ b/data/dynamics/FX/meson.build
@@ -0,0 +1,5 @@
+dynamics = files(
+ 'Confetti.gdyn',
+ 'Perspective.gdyn',
+ 'Speed_Size_Opacity.gdyn',
+)
diff --git a/data/dynamics/meson.build b/data/dynamics/meson.build
new file mode 100644
index 0000000000..e12a7578e3
--- /dev/null
+++ b/data/dynamics/meson.build
@@ -0,0 +1,26 @@
+dynamics = files(
+ 'Basic-Dynamics.gdyn',
+ 'Color-From-Gradient.gdyn',
+ 'Dynamics-Off.gdyn',
+ 'Fade-Tapering.gdyn',
+ 'Random-Color.gdyn',
+ 'Tilt-Angle.gdyn',
+ 'Track-Direction.gdyn',
+ 'Velocity-Tapering.gdyn',
+)
+
+install_data(dynamics,
+ install_dir: gimpdatadir / 'dynamics',
+)
+
+dynamics_types = [
+ 'Basic',
+ 'FX',
+]
+foreach dynamics_type : dynamics_types
+ subdir(dynamics_type)
+ install_data(
+ dynamics,
+ install_dir: gimpdatadir / 'dynamics' / dynamics_type,
+ )
+endforeach
diff --git a/data/environ/meson.build b/data/environ/meson.build
new file mode 100644
index 0000000000..9829cb3e1e
--- /dev/null
+++ b/data/environ/meson.build
@@ -0,0 +1,5 @@
+install_data(
+ 'default.env',
+ 'python.env',
+ install_dir: gimpplugindir / 'environ',
+)
diff --git a/data/gradients/meson.build b/data/gradients/meson.build
new file mode 100644
index 0000000000..ad2a9b8502
--- /dev/null
+++ b/data/gradients/meson.build
@@ -0,0 +1,93 @@
+gradients = files(
+ 'Abstract_1.ggr',
+ 'Abstract_2.ggr',
+ 'Abstract_3.ggr',
+ 'Aneurism.ggr',
+ 'Blinds.ggr',
+ 'Blue_Green.ggr',
+ 'Browns.ggr',
+ 'Brushed_Aluminium.ggr',
+ 'Burning_Paper.ggr',
+ 'Burning_Transparency.ggr',
+ 'Caribbean_Blues.ggr',
+ 'CD_Half.ggr',
+ 'CD.ggr',
+ 'Coffee.ggr',
+ 'Cold_Steel_2.ggr',
+ 'Cold_Steel.ggr',
+ 'Crown_molding.ggr',
+ 'Dark_1.ggr',
+ 'Deep_Sea.ggr',
+ 'Default.ggr',
+ 'Flare_Glow_Angular_1.ggr',
+ 'Flare_Glow_Radial_1.ggr',
+ 'Flare_Glow_Radial_2.ggr',
+ 'Flare_Glow_Radial_3.ggr',
+ 'Flare_Glow_Radial_4.ggr',
+ 'Flare_Radial_101.ggr',
+ 'Flare_Radial_102.ggr',
+ 'Flare_Radial_103.ggr',
+ 'Flare_Rays_Radial_1.ggr',
+ 'Flare_Rays_Radial_2.ggr',
+ 'Flare_Rays_Size_1.ggr',
+ 'Flare_Sizefac_101.ggr',
+ 'Four_bars.ggr',
+ 'Full_saturation_spectrum_CCW.ggr',
+ 'Full_saturation_spectrum_CW.ggr',
+ 'Golden.ggr',
+ 'Greens.ggr',
+ 'Horizon_1.ggr',
+ 'Horizon_2.ggr',
+ 'Incandescent.ggr',
+ 'Land_1.ggr',
+ 'Land_and_Sea.ggr',
+ 'Metallic_Something.ggr',
+ 'Nauseating_Headache.ggr',
+ 'Neon_Cyan.ggr',
+ 'Neon_Green.ggr',
+ 'Neon_Yellow.ggr',
+ 'Pastel_Rainbow.ggr',
+ 'Pastels.ggr',
+ 'Purples.ggr',
+ 'Radial_Eyeball_Blue.ggr',
+ 'Radial_Eyeball_Brown.ggr',
+ 'Radial_Eyeball_Green.ggr',
+ 'Radial_Glow_1.ggr',
+ 'Radial_Rainbow_Hoop.ggr',
+ 'Rounded_edge.ggr',
+ 'Shadows_1.ggr',
+ 'Shadows_2.ggr',
+ 'Shadows_3.ggr',
+ 'Skyline_polluted.ggr',
+ 'Skyline.ggr',
+ 'Square_Wood_Frame.ggr',
+ 'Sunrise.ggr',
+ 'Three_bars_sin.ggr',
+ 'Tropical_Colors.ggr',
+ 'Tube_Red.ggr',
+ 'Wood_1.ggr',
+ 'Wood_2.ggr',
+ 'Yellow_Contrast.ggr',
+ 'Yellow_Orange.ggr',
+)
+
+
+gradients_obsolete = files(
+ 'French_flag.ggr',
+ 'French_flag_smooth.ggr',
+ 'German_flag.ggr',
+ 'German_flag_smooth.ggr',
+ 'Mexican_flag.ggr',
+ 'Mexican_flag_smooth.ggr',
+ 'Romanian_flag.ggr',
+ 'Romanian_flag_smooth.ggr',
+)
+
+install_data(
+ gradients,
+ install_dir: gimpdatadir / 'gradients',
+)
+install_data(
+ gradients_obsolete,
+ install_dir: gimpdatadir / 'gradients' / 'gimp-obsolete-files',
+)
diff --git a/data/images/meson.build b/data/images/meson.build
new file mode 100644
index 0000000000..7ecce25387
--- /dev/null
+++ b/data/images/meson.build
@@ -0,0 +1,11 @@
+
+images = [
+ 'gimp-splash.png',
+ 'wilber.png',
+]
+images += stable ? 'gimp-logo.png' : 'gimp-devel-logo.png'
+
+install_data(
+ images,
+ install_dir: gimpdatadir / 'images',
+)
diff --git a/data/interpreters/meson.build b/data/interpreters/meson.build
new file mode 100644
index 0000000000..b25636db33
--- /dev/null
+++ b/data/interpreters/meson.build
@@ -0,0 +1,3 @@
+install_data('default.interp',
+ install_dir: gimpplugindir / 'interpreters',
+)
diff --git a/data/meson.build b/data/meson.build
new file mode 100644
index 0000000000..b6472b70c7
--- /dev/null
+++ b/data/meson.build
@@ -0,0 +1,16 @@
+subdir('brushes')
+subdir('dynamics')
+subdir('environ')
+subdir('gradients')
+subdir('images')
+subdir('interpreters')
+subdir('palettes')
+subdir('patterns')
+subdir('tags')
+subdir('tips')
+subdir('tool-presets')
+
+
+meson.add_install_script('sh', '-c',
+ 'mkdir -p $MESON_INSTALL_DESTDIR_PREFIX/@0@'.format(gimpdatadir / 'fonts')
+)
diff --git a/data/palettes/meson.build b/data/palettes/meson.build
new file mode 100644
index 0000000000..d5d1b467b6
--- /dev/null
+++ b/data/palettes/meson.build
@@ -0,0 +1,47 @@
+
+palettes = files(
+ 'Bears.gpl',
+ 'Bgold.gpl',
+ 'Blues.gpl',
+ 'Borders.gpl',
+ 'Browns_And_Yellows.gpl',
+ 'Caramel.gpl',
+ 'Cascade.gpl',
+ 'China.gpl',
+ 'Coldfire.gpl',
+ 'Cool_Colors.gpl',
+ 'Cranes.gpl',
+ 'Dark_pastels.gpl',
+ 'Default.gpl',
+ 'Ega.gpl',
+ 'Firecode.gpl',
+ 'Gold.gpl',
+ 'Grayblue.gpl',
+ 'Grays.gpl',
+ 'GrayViolet.gpl',
+ 'Greens.gpl',
+ 'Hilite.gpl',
+ 'Khaki.gpl',
+ 'Lights.gpl',
+ 'Muted.gpl',
+ 'Named_Colors.gpl',
+ 'News3.gpl',
+ 'Op2.gpl',
+ 'Paintjet.gpl',
+ 'Pastels.gpl',
+ 'Plasma.gpl',
+ 'Reds_And_Purples.gpl',
+ 'Reds.gpl',
+ 'Royal.gpl',
+ 'Tango.gpl',
+ 'Topographic.gpl',
+ 'Visibone_2.gpl',
+ 'Visibone.gpl',
+ 'Volcano.gpl',
+ 'Warm_Colors.gpl',
+ 'Web.gpl',
+)
+
+install_data(palettes,
+ install_dir: gimpdatadir / 'palettes',
+)
diff --git a/data/patterns/Animal/meson.build b/data/patterns/Animal/meson.build
new file mode 100644
index 0000000000..d981aa9382
--- /dev/null
+++ b/data/patterns/Animal/meson.build
@@ -0,0 +1,4 @@
+patterns = files(
+ 'leather.pat',
+ 'leopard.pat',
+)
diff --git a/data/patterns/Fabric/meson.build b/data/patterns/Fabric/meson.build
new file mode 100644
index 0000000000..61e015f54d
--- /dev/null
+++ b/data/patterns/Fabric/meson.build
@@ -0,0 +1,3 @@
+patterns = files(
+ 'burlap.pat',
+)
diff --git a/data/patterns/Food/meson.build b/data/patterns/Food/meson.build
new file mode 100644
index 0000000000..fc15d00988
--- /dev/null
+++ b/data/patterns/Food/meson.build
@@ -0,0 +1,4 @@
+patterns = files(
+ 'choc_swirl.pat',
+ 'java.pat',
+)
diff --git a/data/patterns/Legacy/meson.build b/data/patterns/Legacy/meson.build
new file mode 100644
index 0000000000..d275602389
--- /dev/null
+++ b/data/patterns/Legacy/meson.build
@@ -0,0 +1,17 @@
+patterns = files(
+ '3dgreen.pat',
+ 'blue.pat',
+ 'bluegrid.pat',
+ 'bluesquares.pat',
+ 'blueweb.pat',
+ 'fibers.pat',
+ 'nops.pat',
+ 'pastel.pat',
+ 'qube1.pat',
+ 'recessed.pat',
+ 'redcube.pat',
+ 'sm_squares.pat',
+ 'Stripes1px.pat',
+ 'Stripes2px.pat',
+ 'warning.pat',
+)
diff --git a/data/patterns/Paper/meson.build b/data/patterns/Paper/meson.build
new file mode 100644
index 0000000000..f4ac28b000
--- /dev/null
+++ b/data/patterns/Paper/meson.build
@@ -0,0 +1,4 @@
+patterns = files(
+ 'crinklepaper.pat',
+ 'paper.pat',
+)
diff --git a/data/patterns/Plant/meson.build b/data/patterns/Plant/meson.build
new file mode 100644
index 0000000000..bd6df9d10b
--- /dev/null
+++ b/data/patterns/Plant/meson.build
@@ -0,0 +1,3 @@
+patterns = files(
+ 'leaves.pat',
+)
diff --git a/data/patterns/Sky/meson.build b/data/patterns/Sky/meson.build
new file mode 100644
index 0000000000..51fe53551f
--- /dev/null
+++ b/data/patterns/Sky/meson.build
@@ -0,0 +1,5 @@
+patterns = files(
+ 'lightning.pat',
+ 'sky.pat',
+ 'starfield.pat',
+)
diff --git a/data/patterns/Stone/meson.build b/data/patterns/Stone/meson.build
new file mode 100644
index 0000000000..482349d3ca
--- /dev/null
+++ b/data/patterns/Stone/meson.build
@@ -0,0 +1,17 @@
+patterns = files(
+ 'amethyst.pat',
+ 'brick.pat',
+ 'cracked.pat',
+ 'Craters.pat',
+ 'granite1.pat',
+ 'ground1.pat',
+ 'marble1.pat',
+ 'marble2.pat',
+ 'marble3.pat',
+ 'Moonfoot.pat',
+ 'pink_marble.pat',
+ 'rock.pat',
+ 'slate.pat',
+ 'stone33.pat',
+ 'terra.pat',
+)
diff --git a/data/patterns/Water/meson.build b/data/patterns/Water/meson.build
new file mode 100644
index 0000000000..b67c9fd9d1
--- /dev/null
+++ b/data/patterns/Water/meson.build
@@ -0,0 +1,6 @@
+patterns = files(
+ 'electric.pat',
+ 'ice.pat',
+ 'pool.pat',
+ 'rain.pat',
+)
diff --git a/data/patterns/Wood/meson.build b/data/patterns/Wood/meson.build
new file mode 100644
index 0000000000..03625f5fe9
--- /dev/null
+++ b/data/patterns/Wood/meson.build
@@ -0,0 +1,15 @@
+patterns = files(
+ 'bark.pat',
+ 'burlwood.pat',
+ 'corkboard.pat',
+ 'parque1.pat',
+ 'parque2.pat',
+ 'parque3.pat',
+ 'pine.pat',
+ 'walnut.pat',
+ 'wood1.pat',
+ 'wood2.pat',
+ 'wood3.pat',
+ 'wood4.pat',
+ 'wood5.pat',
+)
diff --git a/data/patterns/meson.build b/data/patterns/meson.build
new file mode 100644
index 0000000000..1bfec359c3
--- /dev/null
+++ b/data/patterns/meson.build
@@ -0,0 +1,20 @@
+patterns_types = [
+ 'Animal',
+ 'Fabric',
+ 'Food',
+ 'Legacy',
+ 'Paper',
+ 'Plant',
+ 'Sky',
+ 'Stone',
+ 'Water',
+ 'Wood',
+]
+
+foreach patterns_type : patterns_types
+ subdir(patterns_type)
+ install_data(
+ patterns,
+ install_dir: gimpdatadir / 'patterns' / patterns_type,
+ )
+endforeach
diff --git a/data/tags/meson.build b/data/tags/meson.build
new file mode 100644
index 0000000000..ea57a16c16
--- /dev/null
+++ b/data/tags/meson.build
@@ -0,0 +1,30 @@
+
+xmlfilename = 'gimp-tags-default.xml'
+
+gimp_tags_default = custom_target(xmlfilename,
+ input : xmlfilename+'.in',
+ output: xmlfilename,
+
+ command: [
+ intltool_merge,
+ potags_dir,
+ '@INPUT@',
+ '@OUTPUT@',
+ '--xml-style',
+ '--utf8',
+ '--cache=' + '@OUTDIR@' / 'intltool-merge-cache',
+ ],
+ install: true,
+ install_dir: gimpdatadir / 'tags',
+)
+
+if xmllint.found()
+ run_target('validate-tags',
+ command: [
+ xmllint,
+ '--noout',
+ '--path', meson.current_source_dir(),
+ '--valid', gimp_tags_default,
+ ],
+ )
+endif
diff --git a/data/tips/meson.build b/data/tips/meson.build
new file mode 100644
index 0000000000..526a70b36e
--- /dev/null
+++ b/data/tips/meson.build
@@ -0,0 +1,43 @@
+
+xmlfilename = 'gimp-tips.xml'
+
+gimp_tips = custom_target(xmlfilename,
+ input : xmlfilename+'.in',
+ output: xmlfilename,
+
+ command: [
+ intltool_merge,
+ potips_dir,
+ '@INPUT@',
+ '@OUTPUT@',
+ '--xml-style',
+ '--utf8',
+ '--cache=' + '@OUTDIR@' / 'intltool-merge-cache',
+ ],
+ install: true,
+ install_dir: gimpdatadir / 'tips',
+)
+
+fortunes_tips = custom_target('fortunes-tips',
+ input : [ gimp_tips, 'fortunes.xsl', ],
+ output: 'fortunes-tips',
+ command: [
+ xsltproc,
+ '--stringparam', 'lang', 'en',
+ '--path', meson.current_source_dir(),
+ '--output', '@OUTPUT@',
+ '@INPUT1@',
+ '@INPUT0@',
+ ],
+)
+
+if xmllint.found()
+ run_target('validate-tips',
+ command: [
+ xmllint,
+ '--noout',
+ '--path', meson.current_source_dir(),
+ '--valid', gimp_tips,
+ ],
+ )
+endif
diff --git a/data/tool-presets/Crop/meson.build b/data/tool-presets/Crop/meson.build
new file mode 100644
index 0000000000..048c830143
--- /dev/null
+++ b/data/tool-presets/Crop/meson.build
@@ -0,0 +1,9 @@
+tool_presets = files(
+ '16_10.gtp',
+ '16_9.gtp',
+ '3_2-Landscape.gtp',
+ '3_2-Portrait.gtp',
+ '4_3-Landscape.gtp',
+ '4_3-Portrait.gtp',
+ 'Square.gtp',
+)
diff --git a/data/tool-presets/FX/meson.build b/data/tool-presets/FX/meson.build
new file mode 100644
index 0000000000..5486c74844
--- /dev/null
+++ b/data/tool-presets/FX/meson.build
@@ -0,0 +1,10 @@
+tool_presets = files(
+ 'Crop-16-9.gtp',
+ 'Crop-Composition.gtp',
+ 'Fill-Paper.gtp',
+ 'FX-Confetti.gtp',
+ 'FX-Radial-Softlight.gtp',
+ 'Glow-Lights.gtp',
+ 'Smooth-Clone.gtp',
+ 'Vignette.gtp',
+)
diff --git a/data/tool-presets/Paint/meson.build b/data/tool-presets/Paint/meson.build
new file mode 100644
index 0000000000..48df7a1e1f
--- /dev/null
+++ b/data/tool-presets/Paint/meson.build
@@ -0,0 +1,18 @@
+tool_presets = files(
+ 'Airbrush-Color-From-Gradient.gtp',
+ 'Airbrush.gtp',
+ 'Basic-Knife.gtp',
+ 'Basic-Round-Detail.gtp',
+ 'Basic-Round.gtp',
+ 'Bristles.gtp',
+ 'Eraser-Hard.gtp',
+ 'Noise.gtp',
+ 'Paintbrush-Color-From-Gradient.gtp',
+ 'Pencil-Color-From-Gradient.gtp',
+ 'Smudge-Rough.gtp',
+ 'Smudge-Soft.gtp',
+ 'Soft-Oil.gtp',
+ 'Splatters.gtp',
+ 'Structure.gtp',
+ 'Vegetal.gtp',
+)
diff --git a/data/tool-presets/Selection/meson.build b/data/tool-presets/Selection/meson.build
new file mode 100644
index 0000000000..39ba55b245
--- /dev/null
+++ b/data/tool-presets/Selection/meson.build
@@ -0,0 +1,4 @@
+tool_presets = files(
+ 'Circle-200px.gtp',
+ 'Feathered-Selection.gtp',
+)
diff --git a/data/tool-presets/Sketch/meson.build b/data/tool-presets/Sketch/meson.build
new file mode 100644
index 0000000000..71127e50b5
--- /dev/null
+++ b/data/tool-presets/Sketch/meson.build
@@ -0,0 +1,8 @@
+tool_presets = files(
+ 'Blue-Pen.gtp',
+ 'Eraser-Soft.gtp',
+ 'Ink-Smooth.gtp',
+ 'Ink-Thin.gtp',
+ 'Pencil-Soft.gtp',
+ 'Pencil.gtp',
+)
diff --git a/data/tool-presets/meson.build b/data/tool-presets/meson.build
new file mode 100644
index 0000000000..38cf9f75d5
--- /dev/null
+++ b/data/tool-presets/meson.build
@@ -0,0 +1,15 @@
+tool_presets_types = [
+ 'Crop',
+ 'FX',
+ 'Paint',
+ 'Selection',
+ 'Sketch',
+]
+
+foreach tool_presets_type : tool_presets_types
+ subdir(tool_presets_type)
+ install_data(
+ tool_presets,
+ install_dir: gimpdatadir / 'tool-presets' / tool_presets_type,
+ )
+endforeach
diff --git a/desktop/meson.build b/desktop/meson.build
new file mode 100644
index 0000000000..2b34ad7d59
--- /dev/null
+++ b/desktop/meson.build
@@ -0,0 +1,125 @@
+sizes = [
+ '16',
+ '22',
+ '24',
+ '32',
+ '48',
+ '64',
+ '256',
+]
+
+foreach size : sizes
+ sizedir = size+'x'+size
+ install_data(sizedir / 'gimp.png',
+ install_dir: get_option('datadir') / 'icons' / 'hicolor' / sizedir / 'apps'
+ )
+endforeach
+
+desktopfilename = 'gimp.desktop'
+
+desktop_conf = configuration_data()
+desktop_conf.set('GIMP_COMMAND', gimp_command)
+desktop_conf.set('GIMP_VERSION', gimp_version)
+desktop_conf.set('GIMP_APP_VERSION', gimp_app_version)
+desktop_conf.set('MIME_TYPES', ';'.join(MIMEtypes))
+desktop_conf.set('BUG_REPORT_URL', bug_report_url)
+
+desktopfilein = configure_file(
+ input : desktopfilename+'.in.in',
+ output: desktopfilename+'.in',
+ configuration: desktop_conf,
+)
+
+desktopfile = custom_target(desktopfilename,
+ input : [ desktopfilein, ],
+ output: [ desktopfilename, ],
+ command: [
+ intltool_merge,
+ po_dir,
+ '@INPUT@',
+ '@OUTPUT@',
+ '--desktop-style',
+ '--utf8',
+ '--cache=' + '@OUTDIR@' / 'intltool-merge-cache',
+ ],
+ install: true,
+ install_dir: get_option('datadir') / 'applications',
+)
+
+appdatafilename = 'org.gimp.GIMP.appdata.xml'
+appdatafilein = configure_file(
+ input : appdatafilename+'.in.in',
+ output: appdatafilename+'.in',
+ configuration: desktop_conf,
+)
+appdatafile = custom_target(appdatafilename,
+ input : [ appdatafilein, ],
+ output: [ appdatafilename, ],
+ command: [
+ intltool_merge,
+ po_dir,
+ '@INPUT@',
+ '@OUTPUT@',
+ '--xml-style',
+ '--utf8',
+ '--cache=' + '@OUTDIR@' / 'intltool-merge-cache',
+ ],
+ install: true,
+ install_dir: get_option('datadir') / 'metainfo',
+)
+
+metainfofilename = 'gimp-data-extras.metainfo.xml'
+metainfofilein = configure_file(
+ input : metainfofilename+'.in.in',
+ output: metainfofilename+'.in',
+ configuration: desktop_conf,
+)
+metainfofile = custom_target(metainfofilename,
+ input : [ metainfofilein, ],
+ output: [ metainfofilename, ],
+ command: [
+ intltool_merge,
+ po_dir,
+ '@INPUT@',
+ '@OUTPUT@',
+ '--xml-style',
+ '--utf8',
+ '--cache=' + '@OUTDIR@' / 'intltool-merge-cache',
+ ],
+ install: true,
+ install_dir: get_option('datadir') / 'appdata',
+)
+
+if desktop_validate.found()
+ run_target('validate-desktop',
+ command: [ desktop_validate, desktopfile ],
+ )
+endif
+
+if appstream_util.found()
+ test('appdata_file',
+ appstream_util,
+ args: [ 'validate-relax', appdatafile ],
+ env: [
+ 'GIMP_TESTING_ABS_TOP_BUILDDIR=' + meson.build_root(),
+ ],
+ suite: 'desktop',
+ )
+
+ test('metainfo_file',
+ appstream_util,
+ args: [ 'validate-relax', metainfofile ],
+ env: [
+ 'GIMP_TESTING_ABS_TOP_BUILDDIR=' + meson.build_root(),
+ ],
+ suite: 'desktop',
+ )
+
+ test('desktop_file',
+ find_program('test-desktop.sh'),
+ env: [
+ 'GIMP_TESTING_ABS_TOP_BUILDDIR=' + meson.build_root(),
+ ],
+ suite: 'desktop',
+ )
+endif
diff --git a/devel-docs/app/meson.build b/devel-docs/app/meson.build
new file mode 100644
index 0000000000..c250b6519d
--- /dev/null
+++ b/devel-docs/app/meson.build
@@ -0,0 +1,98 @@
+module_name = 'app'
+
+app_libs = shared_library('app',
+ include_directories: [ rootInclude, rootAppInclude, configInclude, ],
+
+ link_whole: [
+
+ libappconfig,
+ libappcore,
+ libappfile,
+ libappfiledata,
+ libappgegl,
+ libappinternalprocs,
+ libapplayermodes,
+ libapplayermodeslegacy,
+ libappoperations,
+ libapppaint,
+ libapppdb,
+ libappplugin,
+ libapptext,
+ libappvectors,
+ libappxcf,
+
+ libappactions,
+ libappdialogs,
+ libappdisplay,
+ libappgui,
+ libappmenus,
+ libapppropgui,
+ libapptools,
+ libappwidgets,
+ ],
+
+ link_with: [
+ libgimpbase,
+ libgimpcolor,
+ libgimpconfig,
+ libgimpmath,
+ libgimpmodule,
+ libgimpthumb,
+ libgimpwidgets,
+ ],
+ dependencies: [
+ gegl, gdk_pixbuf, gtk3,
+ ],
+)
+
+
+gnome.gtkdoc(module_name,
+ main_sgml: module_name + '-docs.sgml',
+ gobject_typesfile: files(module_name + '.types'),
+ src_dir: meson.source_root() / 'app',
+
+ content_files: [],
+ ignore_headers: [
+ 'gimp-intl.h',
+ 'gimpdbusservice-glue.h',
+ 'gimphelp-ids.h',
+ 'gimpimage-convert-data.h',
+ 'gimpimage-convert-fsdither.h',
+ 'gimprc-blurbs.h',
+ ],
+
+ dependencies: [
+ fontconfig, freetype2, gtk3, harfbuzz, pangocairo,
+ gegl,
+ declare_dependency(
+ include_directories: rootInclude,
+ link_with: [
+ app_libs,
+
+ libgimpbase,
+ libgimpcolor,
+ libgimpconfig,
+ libgimpmath,
+ libgimpmodule,
+ libgimpthumb,
+ libgimpwidgets,
+ ])
+ ],
+
+ scan_args: scan_args_common,
+ mkdb_args: mkdb_args_common,
+ c_args: [
+ '-UGTK_DISABLE_SINGLE_INCLUDES',
+ '-fdiagnostics-color=always',
+ ],
+
+ fixxref_args: [
+ '--extra-dir=' + devel_docs_build_root / 'libgimpbase' / 'html',
+ '--extra-dir=' + devel_docs_build_root / 'libgimpcolor' / 'html',
+ '--extra-dir=' + devel_docs_build_root / 'libgimpconfig' / 'html',
+ '--extra-dir=' + devel_docs_build_root / 'libgimpmath' / 'html',
+ '--extra-dir=' + devel_docs_build_root / 'libgimpwidgets' / 'html',
+ ],
+
+ install: true,
+)
diff --git a/devel-docs/libgimp/meson.build b/devel-docs/libgimp/meson.build
new file mode 100644
index 0000000000..50738ebc24
--- /dev/null
+++ b/devel-docs/libgimp/meson.build
@@ -0,0 +1,49 @@
+module_name = 'libgimp3'
+
+
+gnome.gtkdoc(module_name,
+ main_sgml: module_name + '-docs.sgml',
+ gobject_typesfile: files(module_name + '.types'),
+ src_dir: meson.source_root() / 'libgimp',
+
+ ignore_headers: [
+ 'gimp-debug.h',
+ 'gimp-private.h',
+ 'gimp-shm.h',
+ 'gimppdb-private.h',
+ 'gimppdbprocedure.h',
+ 'gimptilebackendplugin.h',
+ 'gimpunit_pdb.h',
+ 'gimpunitcache.h',
+ 'libgimp-intl.h',
+ 'stdplugins-intl.h',
+ ],
+
+ dependencies: [
+ fontconfig, freetype2, gtk3, harfbuzz, pangocairo,
+ declare_dependency(
+ include_directories: rootInclude,
+ link_with: [
+ libgimp,
+ libgimpui,
+ libgimpbase,
+ libgimpcolor,
+ libgimpconfig,
+ libgimpmath,
+ libgimpui,
+ libgimpwidgets,
+ ]
+ )
+ ],
+
+ scan_args: scan_args_common,
+ mkdb_args: mkdb_args_common,
+
+ fixxref_args: [
+ '--extra-dir='+ devel_docs_build_root / 'libgimpbase' / 'html',
+ '--extra-dir='+ devel_docs_build_root / 'libgimpcolor' / 'html',
+ '--extra-dir='+ devel_docs_build_root / 'libgimpconfig' / 'html',
+ '--extra-dir='+ devel_docs_build_root / 'libgimpmath' / 'html',
+ '--extra-dir='+ devel_docs_build_root / 'libgimpwidgets' / 'html',
+ ],
+)
diff --git a/devel-docs/libgimpbase/meson.build b/devel-docs/libgimpbase/meson.build
new file mode 100644
index 0000000000..1b1a7232ae
--- /dev/null
+++ b/devel-docs/libgimpbase/meson.build
@@ -0,0 +1,39 @@
+module_name = 'libgimpbase3'
+
+
+gnome.gtkdoc(module_name,
+ main_sgml: module_name + '-docs.sgml',
+
+ gobject_typesfile: files(module_name + '.types'),
+
+ src_dir: meson.source_root() / 'libgimpbase',
+
+ content_files: [
+ ],
+ ignore_headers: [
+ 'gimpbase-private.h',
+ 'gimpbase.h',
+ 'gimpcompatenums.h',
+ 'gimpprotocol.h',
+ 'gimpreloc.h',
+ 'gimpwin32-io.h',
+ 'gimpwire.h',
+ ],
+
+ dependencies: [
+ fontconfig, freetype2, gtk3, harfbuzz, pangocairo,
+ declare_dependency(link_with: [
+ libgimpbase,
+ ]),
+ ],
+ scanobjs_args: [
+ ],
+ scan_args: scan_args_common,
+ mkdb_args: mkdb_args_common,
+ fixxref_args: [
+ ],
+ html_assets: [
+ ],
+ html_args: [
+ ],
+)
diff --git a/devel-docs/libgimpcolor/meson.build b/devel-docs/libgimpcolor/meson.build
new file mode 100644
index 0000000000..24a11660e9
--- /dev/null
+++ b/devel-docs/libgimpcolor/meson.build
@@ -0,0 +1,21 @@
+module_name = 'libgimpcolor3'
+
+
+gnome.gtkdoc(module_name,
+ main_sgml: module_name + '-docs.sgml',
+ gobject_typesfile: files(module_name + '.types'),
+ src_dir: meson.source_root() / 'libgimpcolor',
+
+ ignore_headers: [
+ ],
+
+ dependencies: [
+ fontconfig, freetype2, gtk3, harfbuzz, pangocairo,
+ declare_dependency(link_with: [
+ libgimpbase,
+ libgimpcolor,
+ ]),
+ ],
+ scan_args: scan_args_common,
+ mkdb_args: mkdb_args_common,
+)
diff --git a/devel-docs/libgimpconfig/meson.build b/devel-docs/libgimpconfig/meson.build
new file mode 100644
index 0000000000..13316d1161
--- /dev/null
+++ b/devel-docs/libgimpconfig/meson.build
@@ -0,0 +1,30 @@
+module_name = 'libgimpconfig3'
+
+
+gnome.gtkdoc(module_name,
+ main_sgml: module_name + '-docs.sgml',
+ gobject_typesfile: files(module_name + '.types'),
+ src_dir: meson.source_root() / 'libgimpconfig',
+
+ ignore_headers: [
+ ],
+
+ dependencies: [
+ fontconfig, freetype2, gtk3, harfbuzz, pangocairo,
+ declare_dependency(
+ include_directories: rootInclude,
+ link_with: [
+ libgimpbase,
+ libgimpcolor,
+ libgimpmath,
+ libgimpconfig,
+ ]),
+ ],
+ scan_args: scan_args_common,
+ mkdb_args: mkdb_args_common,
+ fixxref_args: [
+ '--extra-dir='+ devel_docs_build_root / 'libgimpbase' / 'html',
+ '--extra-dir='+ devel_docs_build_root / 'libgimpcolor' / 'html',
+ '--extra-dir='+ devel_docs_build_root / 'libgimpmath' / 'html',
+ ],
+)
diff --git a/devel-docs/libgimpmath/meson.build b/devel-docs/libgimpmath/meson.build
new file mode 100644
index 0000000000..bf838c084a
--- /dev/null
+++ b/devel-docs/libgimpmath/meson.build
@@ -0,0 +1,14 @@
+module_name = 'libgimpmath3'
+
+
+gnome.gtkdoc(module_name,
+ main_sgml: module_name + '-docs.sgml',
+ gobject_typesfile: files(module_name + '.types'),
+ src_dir: meson.source_root() / 'libgimpmath',
+
+ dependencies: [
+ fontconfig, freetype2, gtk3, harfbuzz, pangocairo,
+ ],
+ scan_args: scan_args_common,
+ mkdb_args: mkdb_args_common,
+)
diff --git a/devel-docs/libgimpmodule/meson.build b/devel-docs/libgimpmodule/meson.build
new file mode 100644
index 0000000000..64ec711983
--- /dev/null
+++ b/devel-docs/libgimpmodule/meson.build
@@ -0,0 +1,23 @@
+module_name = 'libgimpmodule3'
+
+
+gnome.gtkdoc(module_name,
+ main_sgml: module_name + '-docs.sgml',
+ gobject_typesfile: files(module_name + '.types'),
+ src_dir: meson.source_root() / 'libgimpmodule',
+
+ dependencies: [
+ fontconfig, freetype2, gtk3, harfbuzz, pangocairo,
+ declare_dependency(
+ include_directories: rootInclude,
+ link_with: [
+ libgimpmodule,
+ ],
+ )
+ ],
+
+ scan_args: scan_args_common + [
+ '--deprecated-guards="GIMP_DISABLE_DEPRECATED"'
+ ],
+ mkdb_args: mkdb_args_common,
+)
diff --git a/devel-docs/libgimpthumb/meson.build b/devel-docs/libgimpthumb/meson.build
new file mode 100644
index 0000000000..f38545da9a
--- /dev/null
+++ b/devel-docs/libgimpthumb/meson.build
@@ -0,0 +1,28 @@
+module_name = 'libgimpthumb3'
+
+
+gnome.gtkdoc(module_name,
+ main_sgml: module_name + '-docs.sgml',
+ gobject_typesfile: files(module_name + '.types'),
+ src_dir: meson.source_root() / 'libgimpthumb',
+
+ ignore_headers: [
+ 'libgimpthumb.h',
+ ],
+
+ dependencies: [
+ fontconfig, freetype2, gtk3, harfbuzz, pangocairo,
+ declare_dependency(
+ include_directories: rootInclude,
+ link_with: [
+ libgimpmath,
+ libgimpthumb,
+ ]),
+ ],
+
+ scan_args: scan_args_common,
+ mkdb_args: mkdb_args_common,
+ fixxref_args: [
+ '--extra-dir='+ devel_docs_build_root / 'libgimpmath' / 'html',
+ ],
+)
diff --git a/devel-docs/libgimpwidgets/meson.build b/devel-docs/libgimpwidgets/meson.build
new file mode 100644
index 0000000000..213dccaabd
--- /dev/null
+++ b/devel-docs/libgimpwidgets/meson.build
@@ -0,0 +1,81 @@
+module_name = 'libgimpwidgets3'
+
+
+gnome.gtkdoc(module_name,
+ main_sgml: module_name + '-docs.sgml',
+ gobject_typesfile: files(module_name + '.types'),
+ src_dir: meson.source_root() / 'libgimpwidgets',
+
+ content_files: [
+ 'visual-index.xml'
+ ],
+ ignore_headers: [
+ 'gimp-color-picker-cursors.h',
+ 'gimp-icon-pixbufs.h',
+ 'gimpcolorprofilestore-private.h',
+ 'gimpeevl.h',
+ 'gimpwidgets-private.h',
+ ],
+
+ dependencies: [
+ fontconfig, freetype2, gtk3, harfbuzz, pangocairo,
+ declare_dependency(
+ include_directories: rootInclude,
+ link_with: [
+ libgimpbase,
+ libgimpcolor,
+ libgimpmath,
+ libgimpconfig,
+ libgimpwidgets,
+ ]),
+ ],
+ scanobjs_args: [
+ '--type-init-func=do { void babl_init (void); babl_init (); } while (0)',
+ ],
+ c_args: [
+ '-DGIMP_ENABLE_CONTROLLER_UNDER_CONSTRUCTION',
+ '-UGIMP_DISABLE_DEPRECATED',
+ ],
+ scan_args: scan_args_common,
+ mkdb_args: mkdb_args_common,
+ fixxref_args: [
+ '--extra-dir='+ devel_docs_build_root / 'libgimp' / 'html',
+ '--extra-dir='+ devel_docs_build_root / 'libgimpbase' / 'html',
+ '--extra-dir='+ devel_docs_build_root / 'libgimpcolor' / 'html',
+ '--extra-dir='+ devel_docs_build_root / 'libgimpconfig' / 'html',
+ '--extra-dir='+ devel_docs_build_root / 'libgimpmath' / 'html',
+ ],
+ html_assets: [
+ 'images' / 'gimp-widget-browser.png',
+ 'images' / 'gimp-widget-busy-box.png',
+ 'images' / 'gimp-widget-button.png',
+ 'images' / 'gimp-widget-chain-button.png',
+ 'images' / 'gimp-widget-color-area.png',
+ 'images' / 'gimp-widget-color-button.png',
+ 'images' / 'gimp-widget-color-hex-entry.png',
+ 'images' / 'gimp-widget-color-notebook.png',
+ 'images' / 'gimp-widget-color-profile-combo-box.png',
+ 'images' / 'gimp-widget-color-profile-view.png',
+ 'images' / 'gimp-widget-color-scale.png',
+ 'images' / 'gimp-widget-color-scales.png',
+ 'images' / 'gimp-widget-color-select.png',
+ 'images' / 'gimp-widget-color-selection.png',
+ 'images' / 'gimp-widget-dialog.png',
+ 'images' / 'gimp-widget-enum-combo-box.png',
+ 'images' / 'gimp-widget-enum-label.png',
+ 'images' / 'gimp-widget-file-entry.png',
+ 'images' / 'gimp-widget-frame.png',
+ 'images' / 'gimp-widget-hint-box.png',
+ 'images' / 'gimp-widget-int-combo-box.png',
+ 'images' / 'gimp-widget-memsize-entry.png',
+ 'images' / 'gimp-widget-number-pair-entry.png',
+ 'images' / 'gimp-widget-offset-area.png',
+ 'images' / 'gimp-widget-page-selector.png',
+ 'images' / 'gimp-widget-path-editor.png',
+ 'images' / 'gimp-widget-pick-button.png',
+ 'images' / 'gimp-widget-preview-area.png',
+ 'images' / 'gimp-widget-ruler.png',
+ 'images' / 'gimp-widget-string-combo-box.png',
+ 'images' / 'gimp-widget-unit-combo-box.png',
+ ],
+)
diff --git a/devel-docs/meson.build b/devel-docs/meson.build
new file mode 100644
index 0000000000..1cf1b94b39
--- /dev/null
+++ b/devel-docs/meson.build
@@ -0,0 +1,32 @@
+devel_docs_build_root = meson.current_build_dir()
+
+version_data = configuration_data()
+version_data.set('GIMP_VERSION', gimp_version)
+configure_file(
+ input : 'version.in',
+ output: 'version',
+ configuration: version_data,
+)
+
+scan_args_common = [
+ '--deprecated-guards=GIMP_DISABLE_DEPRECATED',
+]
+
+mkdb_args_common = [
+ '--name-space=gimp',
+]
+
+
+if get_option('gtk-doc-app')
+ subdir('app')
+endif
+
+subdir('libgimp')
+subdir('libgimpbase')
+subdir('libgimpcolor')
+subdir('libgimpconfig')
+subdir('libgimpmath')
+subdir('libgimpmodule')
+subdir('libgimpthumb')
+subdir('libgimpwidgets')
+subdir('tools')
diff --git a/devel-docs/tools/meson.build b/devel-docs/tools/meson.build
new file mode 100644
index 0000000000..a4b8211081
--- /dev/null
+++ b/devel-docs/tools/meson.build
@@ -0,0 +1,28 @@
+if have_doc_shooter
+
+doc_shooter_sources = [
+ 'shadow.c',
+ 'shooter.c',
+ 'units.c',
+ 'widgets.c',
+]
+
+doc_shooter = executable('doc-shooter',
+ doc_shooter_sources,
+ include_directories: [ rootInclude, ],
+ dependencies: [
+ gtk3, gdk_pixbuf, gegl, fontconfig, math,
+ ],
+ c_args: '-DTOP_SRCDIR="@0@"'.format(meson.source_root()),
+ link_with: [
+ libgimpbase,
+ libgimpcolor,
+ libgimpconfig,
+ libgimpmath,
+ libgimpmodule,
+ libgimpwidgets,
+ ],
+ install: false,
+)
+
+endif
diff --git a/docs/meson.build b/docs/meson.build
new file mode 100644
index 0000000000..4666d3b951
--- /dev/null
+++ b/docs/meson.build
@@ -0,0 +1,63 @@
+
+# Configure_file is just here to rename the files
+manconf = configuration_data()
+manconf.set('GIMP_VERSION', gimp_version)
+manconf.set('gimpdatadir', prefix / gimpdatadir)
+manconf.set('gimplocaledir', prefix / localedir)
+manconf.set('gimpplugindir', prefix / gimpplugindir)
+manconf.set('manpage_gimpdir', '$XDG_CONFIG_HOME/' + gimpdir / gimp_app_version)
+manconf.set('gimpsysconfdir', prefix / gimpsysconfdir)
+manconf.set('mypaint_brushes_dir', libmypaint_brushes_dir)
+
+
+man_files = [
+ configure_file(
+ input : 'gimptool.1.in',
+ output: 'gimptool-' + gimp_app_version + '.1',
+ configuration: manconf,
+ ),
+ configure_file(
+ input : 'gimptool.1.in',
+ output: 'gimptool.1',
+ configuration: manconf,
+ ),
+
+ configure_file(
+ input : 'gimprc.5.in',
+ output: 'gimprc-' + gimp_app_version + '.5',
+ configuration: manconf,
+ ),
+ configure_file(
+ input : 'gimprc.5.in',
+ output: 'gimprc.5',
+ configuration: manconf,
+ ),
+]
+
+if enable_console_bin
+ man_files += configure_file(
+ input : 'gimp.1.in',
+ output: 'gimp-console-' + gimp_app_version + '.1',
+ configuration: manconf,
+ )
+ man_files += configure_file(
+ input : 'gimp.1.in',
+ output: 'gimp-console.1',
+ configuration: manconf,
+ )
+endif
+
+if enable_default_bin
+ man_files += configure_file(
+ input : 'gimp.1.in',
+ output: 'gimp-' + gimp_app_version + '.1',
+ configuration: manconf,
+ )
+ man_files += configure_file(
+ input : 'gimp.1.in',
+ output: 'gimp.1',
+ configuration: manconf,
+ )
+endif
+
+install_man(man_files)
diff --git a/etc/meson.build b/etc/meson.build
new file mode 100644
index 0000000000..4d2aa14241
--- /dev/null
+++ b/etc/meson.build
@@ -0,0 +1,20 @@
+etcconf = configuration_data()
+etcconf.set('mypaint_brushes_dir', libmypaint_brushes_dir)
+
+
+install_data(
+ [
+ 'controllerrc',
+ configure_file(
+ input : 'gimprc.in',
+ output: 'gimprc',
+ configuration: etcconf,
+ ),
+ 'gimp.css',
+ 'menurc',
+ 'sessionrc',
+ 'templaterc',
+ 'unitrc',
+ ],
+ install_dir: gimpsysconfdir,
+)
diff --git a/icons/Color/meson.build b/icons/Color/meson.build
new file mode 100644
index 0000000000..bd96ec5f15
--- /dev/null
+++ b/icons/Color/meson.build
@@ -0,0 +1,84 @@
+
+if have_vector_icons
+ all_icons = [
+ [ 'scalable', color_vector_scalable ],
+ [ '24x24', color_vector_24 ],
+ [ '64x64', bitmap_64system ],
+ ]
+else
+ all_icons = [
+ [ '12x12', bitmap_12 ],
+ [ '16x16', bitmap_16 ],
+ [ '18x18', bitmap_18 ],
+ [ '20x20', bitmap_20 ],
+ [ '22x22', bitmap_22 ],
+ [ '24x24', bitmap_24 ],
+ [ '32x32', bitmap_32 ],
+ [ '48x48', bitmap_48 ],
+ [ '64x64', bitmap_64 + bitmap_64system ],
+ [ '96x96', bitmap_96 ],
+ [ '128x128', bitmap_128 ],
+ [ '192x192', bitmap_192 ],
+ [ '256x256', bitmap_256 ],
+ ]
+endif
+
+
+install_data('index.theme',
+ install_dir: gimpiconsdir / theme,
+)
+
+foreach icon_info : all_icons
+ icons_dir = icon_info[0]
+ icons_list= icon_info[1]
+ install_data(icons_list,
+ install_dir: gimpiconsdir / theme / icons_dir / 'apps',
+ )
+endforeach
+
+
+icons_core = [ '64/dialog-question.png', ]
+icons_imgs = [ '64/gimp-wilber-eek.png', ]
+
+resourcename = 'gimp-core-pixbufs'
+xml_content = '<?xml version="1.0" encoding="UTF-8"?>\n'
+xml_content += '<gresources>\n'
+xml_content += ' <gresource prefix="/org/gimp/icons">\n'
+foreach file : icons_core
+ xml_content+=' <file preprocess="to-pixdata">'+ file +'</file>\n'
+endforeach
+xml_content += ' </gresource>\n'
+xml_content += '</gresources>\n'
+
+xml_file = configure_file(
+ output: resourcename + '.gresource.xml',
+ command: [ 'echo', xml_content ],
+ capture: true,
+)
+icons_core_sources = gnome.compile_resources(
+ resourcename,
+ xml_file,
+ c_name: resourcename.underscorify(),
+)
+
+
+resourcename = 'gimp-icon-pixbufs'
+xml_content = '<?xml version="1.0" encoding="UTF-8"?>\n'
+xml_content += '<gresources>\n'
+xml_content += ' <gresource prefix="/org/gimp/icons">\n'
+foreach file : icons_imgs
+ xml_content+=' <file preprocess="to-pixdata">'+ file +'</file>\n'
+endforeach
+xml_content += ' </gresource>\n'
+xml_content += '</gresources>\n'
+
+xml_file = configure_file(
+ output: resourcename + '.gresource.xml',
+ command: [ 'echo', xml_content ],
+ capture: true,
+)
+icons_imgs_sources = gnome.compile_resources(
+ resourcename,
+ xml_file,
+ c_name: resourcename.underscorify(),
+)
diff --git a/icons/Legacy/meson.build b/icons/Legacy/meson.build
new file mode 100644
index 0000000000..900fc2ca21
--- /dev/null
+++ b/icons/Legacy/meson.build
@@ -0,0 +1,556 @@
+
+install_data('index.theme',
+ install_dir: gimpiconsdir / theme,
+)
+
+legacy_icons_12 = [
+ '12/gimp-close.png',
+ '12/gimp-default-colors.png',
+ '12/gimp-linked.png',
+ '12/gimp-menu-left.png',
+ '12/gimp-menu-right.png',
+ '12/gimp-quick-mask-off.png',
+ '12/gimp-quick-mask-on.png',
+ '12/gimp-swap-colors.png',
+ '12/gimp-visible.png',
+ '12/gimp-zoom-follow-window.png',
+]
+legacy_icons_16 = [
+ '16/gimp-anchor.png',
+ '16/gimp-cap-butt.png',
+ '16/gimp-cap-round.png',
+ '16/gimp-cap-square.png',
+ '16/gimp-center.png',
+ '16/gimp-channel-alpha.png',
+ '16/gimp-channel-blue.png',
+ '16/gimp-channel-gray.png',
+ '16/gimp-channel-green.png',
+ '16/gimp-channel-indexed.png',
+ '16/gimp-channel-red.png',
+ '16/gimp-channel.png',
+ '16/gimp-channels.png',
+ '16/gimp-color-pick-from-screen.png',
+ '16/gimp-color-triangle.png',
+ '16/gimp-colormap.png',
+ '16/gimp-controller-keyboard.png',
+ '16/gimp-controller-linux-input.png',
+ '16/gimp-controller-midi.png',
+ '16/gimp-controller-wheel.png',
+ '16/gimp-controller.png',
+ '16/gimp-convert-grayscale.png',
+ '16/gimp-convert-indexed.png',
+ '16/gimp-convert-rgb.png',
+ '16/gimp-cursor.png',
+ '16/gimp-curve-free.png',
+ '16/gimp-curve-smooth.png',
+ '16/gimp-device-status.png',
+ '16/gimp-display-filter-colorblind.png',
+ '16/gimp-display-filter-contrast.png',
+ '16/gimp-display-filter-gamma.png',
+ '16/gimp-display-filter-lcms.png',
+ '16/gimp-display-filter-proof.png',
+ '16/gimp-display-filter.png',
+ '16/gimp-duplicate.png',
+ '16/gimp-dynamics.png',
+ '16/gimp-flip-horizontal.png',
+ '16/gimp-flip-vertical.png',
+ '16/gimp-floating-selection.png',
+ '16/gimp-gegl.png',
+ '16/gimp-gradient-bilinear.png',
+ '16/gimp-gradient-conical-asymmetric.png',
+ '16/gimp-gradient-conical-symmetric.png',
+ '16/gimp-gradient-linear.png',
+ '16/gimp-gradient-radial.png',
+ '16/gimp-gradient-shapeburst-angular.png',
+ '16/gimp-gradient-shapeburst-dimpled.png',
+ '16/gimp-gradient-shapeburst-spherical.png',
+ '16/gimp-gradient-spiral-anticlockwise.png',
+ '16/gimp-gradient-spiral-clockwise.png',
+ '16/gimp-gradient-square.png',
+ '16/gimp-grid.png',
+ '16/gimp-histogram-linear.png',
+ '16/gimp-histogram-logarithmic.png',
+ '16/gimp-histogram.png',
+ '16/gimp-image.png',
+ '16/gimp-images.png',
+ '16/gimp-info.png',
+ '16/gimp-input-device.png',
+ '16/gimp-invert.png',
+ '16/gimp-join-bevel.png',
+ '16/gimp-join-miter.png',
+ '16/gimp-join-round.png',
+ '16/gimp-landscape.png',
+ '16/gimp-layer-mask.png',
+ '16/gimp-layer-to-imagesize.png',
+ '16/gimp-layer.png',
+ '16/gimp-layers.png',
+ '16/gimp-list.png',
+ '16/gimp-merge-down.png',
+ '16/gimp-move-to-screen.png',
+ '16/gimp-navigation.png',
+ '16/gimp-paste-as-new.png',
+ '16/gimp-paste-into.png',
+ '16/gimp-path-stroke.png',
+ '16/gimp-path.png',
+ '16/gimp-paths.png',
+ '16/gimp-plugin.png',
+ '16/gimp-portrait.png',
+ '16/gimp-prefs-folders-brushes.png',
+ '16/gimp-prefs-folders-dynamics.png',
+ '16/gimp-prefs-folders-environ.png',
+ '16/gimp-prefs-folders-fonts.png',
+ '16/gimp-prefs-folders-gradients.png',
+ '16/gimp-prefs-folders-icon-themes.png',
+ '16/gimp-prefs-folders-interp.png',
+ '16/gimp-prefs-folders-modules.png',
+ '16/gimp-prefs-folders-palettes.png',
+ '16/gimp-prefs-folders-patterns.png',
+ '16/gimp-prefs-folders-plug-ins.png',
+ '16/gimp-prefs-folders-scripts.png',
+ '16/gimp-prefs-folders-themes.png',
+ '16/gimp-prefs-folders-tool-plug-ins.png',
+ '16/gimp-prefs-folders-tool-presets.png',
+ '16/gimp-prefs-folders-tools.png',
+ '16/gimp-prefs-icon-theme.png',
+ '16/gimp-prefs-image-windows.png',
+ '16/gimp-prefs-interface.png',
+ '16/gimp-prefs-theme.png',
+ '16/gimp-prefs-toolbox.png',
+ '16/gimp-prefs-window-management.png',
+ '16/gimp-print-resolution.png',
+ '16/gimp-reset.png',
+ '16/gimp-reshow-filter.png',
+ '16/gimp-resize.png',
+ '16/gimp-rotate-180.png',
+ '16/gimp-rotate-270.png',
+ '16/gimp-rotate-90.png',
+ '16/gimp-sample-point.png',
+ '16/gimp-scale.png',
+ '16/gimp-selection-add.png',
+ '16/gimp-selection-all.png',
+ '16/gimp-selection-border.png',
+ '16/gimp-selection-grow.png',
+ '16/gimp-selection-intersect.png',
+ '16/gimp-selection-none.png',
+ '16/gimp-selection-replace.png',
+ '16/gimp-selection-shrink.png',
+ '16/gimp-selection-stroke.png',
+ '16/gimp-selection-subtract.png',
+ '16/gimp-selection-to-channel.png',
+ '16/gimp-selection-to-path.png',
+ '16/gimp-selection.png',
+ '16/gimp-shape-circle.png',
+ '16/gimp-shape-diamond.png',
+ '16/gimp-shape-square.png',
+ '16/gimp-template.png',
+ '16/gimp-text-layer.png',
+ '16/gimp-toilet-paper.png',
+ '16/gimp-tool-airbrush.png',
+ '16/gimp-tool-align.png',
+ '16/gimp-tool-blur.png',
+ '16/gimp-tool-brightness-contrast.png',
+ '16/gimp-tool-bucket-fill.png',
+ '16/gimp-tool-by-color-select.png',
+ '16/gimp-tool-cage.png',
+ '16/gimp-tool-clone.png',
+ '16/gimp-tool-color-balance.png',
+ '16/gimp-tool-color-picker.png',
+ '16/gimp-tool-colorize.png',
+ '16/gimp-tool-crop.png',
+ '16/gimp-tool-curves.png',
+ '16/gimp-tool-desaturate.png',
+ '16/gimp-tool-dodge.png',
+ '16/gimp-tool-ellipse-select.png',
+ '16/gimp-tool-eraser.png',
+ '16/gimp-tool-flip.png',
+ '16/gimp-tool-foreground-select.png',
+ '16/gimp-tool-free-select.png',
+ '16/gimp-tool-fuzzy-select.png',
+ '16/gimp-tool-gradient.png',
+ '16/gimp-tool-handle-transform.png',
+ '16/gimp-tool-heal.png',
+ '16/gimp-tool-hue-saturation.png',
+ '16/gimp-tool-ink.png',
+ '16/gimp-tool-iscissors.png',
+ '16/gimp-tool-levels.png',
+ '16/gimp-tool-measure.png',
+ '16/gimp-tool-move.png',
+ '16/gimp-tool-mypaint-brush.png',
+ '16/gimp-tool-n-point-deformation.png',
+ '16/gimp-tool-options.png',
+ '16/gimp-tool-paintbrush.png',
+ '16/gimp-tool-path.png',
+ '16/gimp-tool-pencil.png',
+ '16/gimp-tool-perspective-clone.png',
+ '16/gimp-tool-perspective.png',
+ '16/gimp-tool-posterize.png',
+ '16/gimp-tool-preset.png',
+ '16/gimp-tool-rect-select.png',
+ '16/gimp-tool-rotate.png',
+ '16/gimp-tool-scale.png',
+ '16/gimp-tool-seamless-clone.png',
+ '16/gimp-tool-shear.png',
+ '16/gimp-tool-smudge.png',
+ '16/gimp-tool-text.png',
+ '16/gimp-tool-threshold.png',
+ '16/gimp-tool-unified-transform.png',
+ '16/gimp-tool-warp.png',
+ '16/gimp-tool-zoom.png',
+ '16/gimp-tools.png',
+ '16/gimp-transparency.png',
+ '16/gimp-undo-history.png',
+ '16/gimp-user-manual.png',
+ '16/gimp-video.png',
+ '16/gimp-warning.png',
+ '16/gimp-web.png',
+ '16/gimp-wilber.png',
+ '16/gtk-edit.png',
+]
+legacy_icons_18 = [
+ '18/gimp-color-picker-black.png',
+ '18/gimp-color-picker-gray.png',
+ '18/gimp-color-picker-white.png',
+]
+legacy_icons_20 = [
+ '20/gimp-linked.png',
+ '20/gimp-visible.png',
+]
+legacy_icons_22 = [
+ '22/gimp-char-picker.png',
+ '22/gimp-dynamics.png',
+ '22/gimp-histogram.png',
+ '22/gimp-input-device.png',
+ '22/gimp-letter-spacing.png',
+ '22/gimp-line-spacing.png',
+ '22/gimp-path.png',
+ '22/gimp-paths.png',
+ '22/gimp-prefs-color-management.png',
+ '22/gimp-prefs-controllers.png',
+ '22/gimp-prefs-default-grid.png',
+ '22/gimp-prefs-display.png',
+ '22/gimp-prefs-folders-brushes.png',
+ '22/gimp-prefs-folders-dynamics.png',
+ '22/gimp-prefs-folders-environ.png',
+ '22/gimp-prefs-folders-fonts.png',
+ '22/gimp-prefs-folders-gradients.png',
+ '22/gimp-prefs-folders-icon-themes.png',
+ '22/gimp-prefs-folders-interp.png',
+ '22/gimp-prefs-folders-modules.png',
+ '22/gimp-prefs-folders-palettes.png',
+ '22/gimp-prefs-folders-patterns.png',
+ '22/gimp-prefs-folders-plug-ins.png',
+ '22/gimp-prefs-folders-scripts.png',
+ '22/gimp-prefs-folders-themes.png',
+ '22/gimp-prefs-folders-tool-plug-ins.png',
+ '22/gimp-prefs-folders-tool-presets.png',
+ '22/gimp-prefs-folders-tools.png',
+ '22/gimp-prefs-folders.png',
+ '22/gimp-prefs-help-system.png',
+ '22/gimp-prefs-icon-theme.png',
+ '22/gimp-prefs-image-title.png',
+ '22/gimp-prefs-image-windows.png',
+ '22/gimp-prefs-input-devices.png',
+ '22/gimp-prefs-interface.png',
+ '22/gimp-prefs-new-image.png',
+ '22/gimp-prefs-playground.png',
+ '22/gimp-prefs-session.png',
+ '22/gimp-prefs-system-resources.png',
+ '22/gimp-prefs-theme.png',
+ '22/gimp-prefs-tool-options.png',
+ '22/gimp-prefs-toolbox.png',
+ '22/gimp-prefs-window-management.png',
+ '22/gimp-tool-preset.png',
+ '22/gimp-wilber.png',
+]
+legacy_tools_22 = [
+ '22/gimp-gegl.png',
+ '22/gimp-tool-airbrush.png',
+ '22/gimp-tool-align.png',
+ '22/gimp-tool-blur.png',
+ '22/gimp-tool-brightness-contrast.png',
+ '22/gimp-tool-bucket-fill.png',
+ '22/gimp-tool-by-color-select.png',
+ '22/gimp-tool-cage.png',
+ '22/gimp-tool-clone.png',
+ '22/gimp-tool-color-balance.png',
+ '22/gimp-tool-color-picker.png',
+ '22/gimp-tool-colorize.png',
+ '22/gimp-tool-crop.png',
+ '22/gimp-tool-curves.png',
+ '22/gimp-tool-desaturate.png',
+ '22/gimp-tool-dodge.png',
+ '22/gimp-tool-ellipse-select.png',
+ '22/gimp-tool-eraser.png',
+ '22/gimp-tool-flip.png',
+ '22/gimp-tool-foreground-select.png',
+ '22/gimp-tool-free-select.png',
+ '22/gimp-tool-fuzzy-select.png',
+ '22/gimp-tool-gradient.png',
+ '22/gimp-tool-handle-transform.png',
+ '22/gimp-tool-heal.png',
+ '22/gimp-tool-hue-saturation.png',
+ '22/gimp-tool-ink.png',
+ '22/gimp-tool-iscissors.png',
+ '22/gimp-tool-levels.png',
+ '22/gimp-tool-measure.png',
+ '22/gimp-tool-move.png',
+ '22/gimp-tool-mypaint-brush.png',
+ '22/gimp-tool-n-point-deformation.png',
+ '22/gimp-tool-paintbrush.png',
+ '22/gimp-tool-path.png',
+ '22/gimp-tool-pencil.png',
+ '22/gimp-tool-perspective-clone.png',
+ '22/gimp-tool-perspective.png',
+ '22/gimp-tool-posterize.png',
+ '22/gimp-tool-rect-select.png',
+ '22/gimp-tool-rotate.png',
+ '22/gimp-tool-scale.png',
+ '22/gimp-tool-seamless-clone.png',
+ '22/gimp-tool-shear.png',
+ '22/gimp-tool-smudge.png',
+ '22/gimp-tool-text.png',
+ '22/gimp-tool-threshold.png',
+ '22/gimp-tool-unified-transform.png',
+ '22/gimp-tool-warp.png',
+ '22/gimp-tool-zoom.png',
+]
+legacy_icons_24 = [
+ '24/gimp-center.png',
+ '24/gimp-channel-alpha.png',
+ '24/gimp-channel-blue.png',
+ '24/gimp-channel-gray.png',
+ '24/gimp-channel-green.png',
+ '24/gimp-channel-indexed.png',
+ '24/gimp-channel-red.png',
+ '24/gimp-channel.png',
+ '24/gimp-channels.png',
+ '24/gimp-colormap.png',
+ '24/gimp-controller-keyboard.png',
+ '24/gimp-controller-linux-input.png',
+ '24/gimp-controller-midi.png',
+ '24/gimp-controller-wheel.png',
+ '24/gimp-controller.png',
+ '24/gimp-cursor.png',
+ '24/gimp-device-status.png',
+ '24/gimp-display-filter-colorblind.png',
+ '24/gimp-display-filter-contrast.png',
+ '24/gimp-display-filter-gamma.png',
+ '24/gimp-display-filter-lcms.png',
+ '24/gimp-display-filter-proof.png',
+ '24/gimp-display-filter.png',
+ '24/gimp-floating-selection.png',
+ '24/gimp-gravity-east.png',
+ '24/gimp-gravity-north-east.png',
+ '24/gimp-gravity-north-west.png',
+ '24/gimp-gravity-north.png',
+ '24/gimp-gravity-south-east.png',
+ '24/gimp-gravity-south-west.png',
+ '24/gimp-gravity-south.png',
+ '24/gimp-gravity-west.png',
+ '24/gimp-hcenter.png',
+ '24/gimp-hchain-broken.png',
+ '24/gimp-hchain.png',
+ '24/gimp-hfill.png',
+ '24/gimp-image.png',
+ '24/gimp-images.png',
+ '24/gimp-info.png',
+ '24/gimp-layer-mask.png',
+ '24/gimp-layer.png',
+ '24/gimp-layers.png',
+ '24/gimp-move-to-screen.png',
+ '24/gimp-print-resolution.png',
+ '24/gimp-sample-point.png',
+ '24/gimp-template.png',
+ '24/gimp-text-dir-ltr.png',
+ '24/gimp-text-dir-rtl.png',
+ '24/gimp-text-layer.png',
+ '24/gimp-toilet-paper.png',
+ '24/gimp-tool-options.png',
+ '24/gimp-tools.png',
+ '24/gimp-transparency.png',
+ '24/gimp-undo-history.png',
+ '24/gimp-user-manual.png',
+ '24/gimp-vcenter.png',
+ '24/gimp-vchain-broken.png',
+ '24/gimp-vchain.png',
+ '24/gimp-vfill.png',
+ '24/gimp-video.png',
+ '24/gimp-warning.png',
+ '24/gimp-web.png',
+]
+legacy_icons_32 = [
+ '32/gimp-channel-alpha.png',
+ '32/gimp-channel-blue.png',
+ '32/gimp-channel-gray.png',
+ '32/gimp-channel-green.png',
+ '32/gimp-channel-indexed.png',
+ '32/gimp-channel-red.png',
+ '32/gimp-channel.png',
+ '32/gimp-floating-selection.png',
+ '32/gimp-image.png',
+ '32/gimp-layer-mask.png',
+ '32/gimp-layer.png',
+ '32/gimp-text-layer.png',
+ '32/gimp-user-manual.png',
+ '32/gimp-wilber.png',
+]
+legacy_icons_48 = [
+ '48/gimp-channel-alpha.png',
+ '48/gimp-channel-blue.png',
+ '48/gimp-channel-gray.png',
+ '48/gimp-channel-green.png',
+ '48/gimp-channel-indexed.png',
+ '48/gimp-channel-red.png',
+ '48/gimp-channel.png',
+ '48/gimp-floating-selection.png',
+ '48/gimp-image.png',
+ '48/gimp-layer-mask.png',
+ '48/gimp-layer.png',
+ '48/gimp-prefs-color-management.png',
+ '48/gimp-prefs-controllers.png',
+ '48/gimp-prefs-default-comment.png',
+ '48/gimp-prefs-default-grid.png',
+ '48/gimp-prefs-display.png',
+ '48/gimp-prefs-folders-brushes.png',
+ '48/gimp-prefs-folders-dynamics.png',
+ '48/gimp-prefs-folders-environ.png',
+ '48/gimp-prefs-folders-fonts.png',
+ '48/gimp-prefs-folders-gradients.png',
+ '48/gimp-prefs-folders-icon-themes.png',
+ '48/gimp-prefs-folders-interp.png',
+ '48/gimp-prefs-folders-modules.png',
+ '48/gimp-prefs-folders-palettes.png',
+ '48/gimp-prefs-folders-patterns.png',
+ '48/gimp-prefs-folders-plug-ins.png',
+ '48/gimp-prefs-folders-scripts.png',
+ '48/gimp-prefs-folders-themes.png',
+ '48/gimp-prefs-folders-tool-plug-ins.png',
+ '48/gimp-prefs-folders-tool-presets.png',
+ '48/gimp-prefs-folders-tools.png',
+ '48/gimp-prefs-folders.png',
+ '48/gimp-prefs-help-system.png',
+ '48/gimp-prefs-icon-theme.png',
+ '48/gimp-prefs-image-title.png',
+ '48/gimp-prefs-image-windows.png',
+ '48/gimp-prefs-input-devices.png',
+ '48/gimp-prefs-interface.png',
+ '48/gimp-prefs-new-image.png',
+ '48/gimp-prefs-playground.png',
+ '48/gimp-prefs-session.png',
+ '48/gimp-prefs-system-resources.png',
+ '48/gimp-prefs-theme.png',
+ '48/gimp-prefs-tool-options.png',
+ '48/gimp-prefs-toolbox.png',
+ '48/gimp-prefs-window-management.png',
+ '48/gimp-text-layer.png',
+ '48/gimp-wilber.png',
+]
+legacy_icons_64 = [
+ '64/gimp-error.png',
+ '64/gimp-frame.png',
+ '64/gimp-info.png',
+ '64/gimp-question.png',
+ '64/gimp-texture.png',
+ '64/gimp-user-manual.png',
+ '64/gimp-warning.png',
+ '64/gimp-wilber-eek.png',
+ '64/gimp-wilber-outline.png',
+ '64/gimp-wilber.png',
+]
+legacy_icons_96 = [
+ '96/gimp-wilber-outline.png',
+ '96/gimp-wilber.png',
+]
+legacy_icons_128 = [
+ '128/gimp-wilber-outline.png',
+ '128/gimp-wilber.png',
+]
+legacy_icons_192 = [
+ '192/gimp-wilber-outline.png',
+ '192/gimp-wilber.png',
+]
+legacy_icons_256 = [
+ '256/gimp-wilber-outline.png',
+ '256/gimp-wilber.png',
+]
+
+all_legacy_icons = [
+ [ '12x12', legacy_icons_12 ],
+ [ '16x16', legacy_icons_16 ],
+ [ '18x18', legacy_icons_18 ],
+ [ '20x20', legacy_icons_20 ],
+ [ '22x22', legacy_icons_22 ],
+ [ '24x24', legacy_icons_24 ],
+ [ '32x32', legacy_icons_32 ],
+ [ '48x48', legacy_icons_48 ],
+ [ '64x64', legacy_icons_64 ],
+ [ '96x96', legacy_icons_96 ],
+ [ '128x128', legacy_icons_128 ],
+ [ '192x192', legacy_icons_192 ],
+ [ '256x256', legacy_icons_256 ],
+]
+all_legacy_tools = [
+ [ '22x22', legacy_tools_22 ],
+]
+
+foreach icon_info : all_legacy_icons
+ icons_dir = icon_info[0]
+ icons_list= icon_info[1]
+ install_data(icons_list,
+ install_dir: gimpiconsdir / theme / icons_dir / 'apps',
+ )
+endforeach
+foreach icon_info : all_legacy_tools
+ icons_dir = icon_info[0]
+ icons_list= icon_info[1]
+ install_data(icons_list,
+ install_dir: gimpiconsdir / theme / icons_dir / 'tools',
+ )
+endforeach
+
+
+icons_core = [ '64/gimp-question.png', ]
+icons_imgs = [ '64/gimp-wilber-eek.png', ]
+
+resourcename = 'gimp-core-pixbufs'
+xml_content = '<?xml version="1.0" encoding="UTF-8"?>\n'
+xml_content += '<gresources>\n'
+xml_content += ' <gresource prefix="/org/gimp/icons">\n'
+foreach file : icons_core
+ xml_content+=' <file preprocess="to-pixdata">'+ file +'</file>\n'
+endforeach
+xml_content += ' </gresource>\n'
+xml_content += '</gresources>\n'
+
+xml_file = configure_file(
+ output: resourcename + '.gresource.xml',
+ command: [ 'echo', xml_content ],
+ capture: true,
+)
+# icons_core_sources = gnome.compile_resources(
+# resourcename,
+# xml_file,
+# c_name: resourcename.underscorify(),
+# )
+
+
+resourcename = 'gimp-icon-pixbufs'
+xml_content = '<?xml version="1.0" encoding="UTF-8"?>\n'
+xml_content += '<gresources>\n'
+xml_content += ' <gresource prefix="/org/gimp/icons">\n'
+foreach file : icons_imgs
+ xml_content+=' <file preprocess="to-pixdata">'+ file +'</file>\n'
+endforeach
+xml_content += ' </gresource>\n'
+xml_content += '</gresources>\n'
+
+xml_file = configure_file(
+ output: resourcename + '.gresource.xml',
+ command: [ 'echo', xml_content ],
+ capture: true,
+)
+# icons_imgs_sources = gnome.compile_resources(
+# resourcename,
+# xml_file,
+# c_name: resourcename.underscorify(),
+# )
diff --git a/icons/Symbolic/meson.build b/icons/Symbolic/meson.build
new file mode 100644
index 0000000000..697756ec8a
--- /dev/null
+++ b/icons/Symbolic/meson.build
@@ -0,0 +1,84 @@
+
+if have_vector_icons
+ all_icons = [
+ [ 'scalable', symbolic_vector_scalable ],
+ [ '24x24', symbolic_vector_24 ],
+ # [ '64x64', bitmap_64system ],
+ ]
+else
+ all_icons = [
+ [ '12x12', bitmap_12 ],
+ [ '16x16', bitmap_16 ],
+ [ '18x18', bitmap_18 ],
+ [ '20x20', bitmap_20 ],
+ [ '22x22', bitmap_22 ],
+ [ '24x24', bitmap_24 ],
+ [ '32x32', bitmap_32 ],
+ [ '48x48', bitmap_48 ],
+ [ '64x64', bitmap_64 + bitmap_64system ],
+ [ '96x96', bitmap_96 ],
+ [ '128x128', bitmap_128 ],
+ [ '192x192', bitmap_192 ],
+ [ '256x256', bitmap_256 ],
+ ]
+endif
+
+
+install_data('index.theme',
+ install_dir: gimpiconsdir / theme,
+)
+
+foreach icon_info : all_icons
+ icons_dir = icon_info[0]
+ icons_list= icon_info[1]
+ install_data(icons_list,
+ install_dir: gimpiconsdir / theme / icons_dir / 'apps',
+ )
+endforeach
+
+
+icons_core = [ '64/gimp-question.png', ]
+icons_imgs = [ '64/gimp-wilber-eek.png', ]
+
+resourcename = 'gimp-core-pixbufs'
+xml_content = '<?xml version="1.0" encoding="UTF-8"?>\n'
+xml_content += '<gresources>\n'
+xml_content += ' <gresource prefix="/org/gimp/icons">\n'
+foreach file : icons_core
+ xml_content+=' <file preprocess="to-pixdata">'+ file +'</file>\n'
+endforeach
+xml_content += ' </gresource>\n'
+xml_content += '</gresources>\n'
+
+xml_file = configure_file(
+ output: resourcename + '.gresource.xml',
+ command: [ 'echo', xml_content ],
+ capture: true,
+)
+# icons_core_sources = gnome.compile_resources(
+# resourcename,
+# xml_file,
+# c_name: resourcename.underscorify(),
+# )
+
+
+resourcename = 'gimp-icon-pixbufs'
+xml_content = '<?xml version="1.0" encoding="UTF-8"?>\n'
+xml_content += '<gresources>\n'
+xml_content += ' <gresource prefix="/org/gimp/icons">\n'
+foreach file : icons_imgs
+ xml_content+=' <file preprocess="to-pixdata">'+ file +'</file>\n'
+endforeach
+xml_content += ' </gresource>\n'
+xml_content += '</gresources>\n'
+
+xml_file = configure_file(
+ output: resourcename + '.gresource.xml',
+ command: [ 'echo', xml_content ],
+ capture: true,
+)
+# icons_imgs_sources = gnome.compile_resources(
+# resourcename,
+# xml_file,
+# c_name: resourcename.underscorify(),
+# )
diff --git a/icons/meson.build b/icons/meson.build
new file mode 100644
index 0000000000..5e93e94f43
--- /dev/null
+++ b/icons/meson.build
@@ -0,0 +1,1613 @@
+
+color_vector_scalable = [
+ 'scalable/dialog-error.svg',
+ 'scalable/dialog-information.svg',
+ 'scalable/dialog-question.svg',
+ 'scalable/dialog-warning.svg',
+ 'scalable/document-new.svg',
+ 'scalable/document-open.svg',
+ 'scalable/document-open-recent.svg',
+ 'scalable/document-print.svg',
+ 'scalable/document-revert.svg',
+ 'scalable/document-save.svg',
+ 'scalable/document-save-as.svg',
+ 'scalable/edit-clear.svg',
+ 'scalable/edit-copy.svg',
+ 'scalable/edit-cut.svg',
+ 'scalable/edit-delete.svg',
+ 'scalable/edit-paste.svg',
+ 'scalable/edit-redo.svg',
+ 'scalable/edit-undo.svg',
+ 'scalable/folder.svg',
+ 'scalable/folder-new.svg',
+ 'scalable/format-indent-more.svg',
+ 'scalable/format-justify-fill.svg',
+ 'scalable/format-justify-center.svg',
+ 'scalable/format-justify-left.svg',
+ 'scalable/format-justify-right.svg',
+ 'scalable/format-text-direction-ltr.svg',
+ 'scalable/format-text-direction-rtl.svg',
+ 'scalable/go-bottom.svg',
+ 'scalable/go-down.svg',
+ 'scalable/go-first.svg',
+ 'scalable/go-home.svg',
+ 'scalable/go-last.svg',
+ 'scalable/go-next.svg',
+ 'scalable/go-previous.svg',
+ 'scalable/go-top.svg',
+ 'scalable/go-up.svg',
+ 'scalable/help-about.svg',
+ 'scalable/list-add.svg',
+ 'scalable/list-remove.svg',
+ 'scalable/media-floppy.svg',
+ 'scalable/media-optical.svg',
+ 'scalable/media-playback-pause.svg',
+ 'scalable/media-playback-start.svg',
+ 'scalable/media-record.svg',
+ 'scalable/media-seek-backward.svg',
+ 'scalable/media-skip-backward.svg',
+ 'scalable/media-skip-forward.svg',
+ 'scalable/object-flip-horizontal.svg',
+ 'scalable/object-flip-vertical.svg',
+ 'scalable/object-rotate-left.svg',
+ 'scalable/object-rotate-right.svg',
+ 'scalable/preferences-system.svg',
+ 'scalable/process-stop.svg',
+ 'scalable/system-run.svg',
+ 'scalable/view-fullscreen.svg',
+ 'scalable/view-refresh.svg',
+ 'scalable/window-close.svg',
+ 'scalable/window-new.svg',
+ 'scalable/zoom-fit-best.svg',
+ 'scalable/zoom-in.svg',
+ 'scalable/zoom-original.svg',
+ 'scalable/zoom-out.svg',
+
+ 'scalable/gtk-cancel.svg',
+ 'scalable/gtk-edit.svg',
+ 'scalable/gtk-no.svg',
+ 'scalable/gtk-ok.svg',
+ 'scalable/gtk-select-color.svg',
+ 'scalable/gtk-select-font.svg',
+ 'scalable/gtk-yes.svg',
+
+ 'scalable/gimp-anchor.svg',
+ 'scalable/gimp-attach.svg',
+ 'scalable/gimp-business-card.svg',
+ 'scalable/gimp-cap-butt.svg',
+ 'scalable/gimp-cap-round.svg',
+ 'scalable/gimp-cap-square.svg',
+ 'scalable/gimp-center.svg',
+ 'scalable/gimp-channel-alpha.svg',
+ 'scalable/gimp-channel-blue.svg',
+ 'scalable/gimp-channel-gray.svg',
+ 'scalable/gimp-channel-green.svg',
+ 'scalable/gimp-channel-indexed.svg',
+ 'scalable/gimp-channel-red.svg',
+ 'scalable/gimp-channels.svg',
+ 'scalable/gimp-channel.svg',
+ 'scalable/gimp-char-picker.svg',
+ 'scalable/gimp-clipboard.svg',
+ 'scalable/gimp-close.svg',
+ 'scalable/gimp-close-all.svg',
+ 'scalable/gimp-colormap.svg',
+ 'scalable/gimp-color-picker-black.svg',
+ 'scalable/gimp-color-picker-gray.svg',
+ 'scalable/gimp-color-picker-white.svg',
+ 'scalable/gimp-color-pick-from-screen.svg',
+ 'scalable/gimp-color-cmyk.svg',
+ 'scalable/gimp-color-space-linear.svg',
+ 'scalable/gimp-color-space-non-linear.svg',
+ 'scalable/gimp-color-space-perceptual.svg',
+ 'scalable/gimp-color-triangle.svg',
+ 'scalable/gimp-color-water.svg',
+ 'scalable/gimp-controller-keyboard.svg',
+ 'scalable/gimp-controller-linux-input.svg',
+ 'scalable/gimp-controller-midi.svg',
+ 'scalable/gimp-controller.svg',
+ 'scalable/gimp-controller-wheel.svg',
+ 'scalable/gimp-convert-grayscale.svg',
+ 'scalable/gimp-convert-indexed.svg',
+ 'scalable/gimp-convert-rgb.svg',
+ 'scalable/gimp-cursor.svg',
+ 'scalable/gimp-curve-free.svg',
+ 'scalable/gimp-curve-point-corner.svg',
+ 'scalable/gimp-curve-point-smooth.svg',
+ 'scalable/gimp-curve-smooth.svg',
+ 'scalable/gimp-dashboard.svg',
+ 'scalable/gimp-default-colors.svg',
+ 'scalable/gimp-detach.svg',
+ 'scalable/gimp-device-status.svg',
+ 'scalable/gimp-display.svg',
+ 'scalable/gimp-display-filter-clip-warning.svg',
+ 'scalable/gimp-display-filter-colorblind.svg',
+ 'scalable/gimp-display-filter-contrast.svg',
+ 'scalable/gimp-display-filter-gamma.svg',
+ 'scalable/gimp-display-filter-lcms.svg',
+ 'scalable/gimp-display-filter-proof.svg',
+ 'scalable/gimp-display-filter.svg',
+ 'scalable/gimp-duplicate.svg',
+ 'scalable/gimp-dynamics.svg',
+ 'scalable/gimp-file-manager.svg',
+ 'scalable/gimp-floating-selection.svg',
+ 'scalable/gimp-gegl.svg',
+ 'scalable/gimp-gradient-bilinear.svg',
+ 'scalable/gimp-gradient-conical-asymmetric.svg',
+ 'scalable/gimp-gradient-conical-symmetric.svg',
+ 'scalable/gimp-gradient-linear.svg',
+ 'scalable/gimp-gradient-radial.svg',
+ 'scalable/gimp-gradient-shapeburst-angular.svg',
+ 'scalable/gimp-gradient-shapeburst-dimpled.svg',
+ 'scalable/gimp-gradient-shapeburst-spherical.svg',
+ 'scalable/gimp-gradient-spiral-anticlockwise.svg',
+ 'scalable/gimp-gradient-spiral-clockwise.svg',
+ 'scalable/gimp-gradient-square.svg',
+ 'scalable/gimp-gravity-east.svg',
+ 'scalable/gimp-gravity-north-east.svg',
+ 'scalable/gimp-gravity-north.svg',
+ 'scalable/gimp-gravity-north-west.svg',
+ 'scalable/gimp-gravity-south-east.svg',
+ 'scalable/gimp-gravity-south.svg',
+ 'scalable/gimp-gravity-south-west.svg',
+ 'scalable/gimp-gravity-west.svg',
+ 'scalable/gimp-grid.svg',
+ 'scalable/gimp-group-layer.svg',
+ 'scalable/gimp-hcenter.svg',
+ 'scalable/gimp-hchain-broken.svg',
+ 'scalable/gimp-hchain.svg',
+ 'scalable/gimp-hfill.svg',
+ 'scalable/gimp-histogram-linear.svg',
+ 'scalable/gimp-histogram-logarithmic.svg',
+ 'scalable/gimp-histogram.svg',
+ 'scalable/gimp-images.svg',
+ 'scalable/gimp-image.svg',
+ 'scalable/gimp-image-open.svg',
+ 'scalable/gimp-image-reload.svg',
+ 'scalable/gimp-input-device.svg',
+ 'scalable/gimp-invert.svg',
+ 'scalable/gimp-join-bevel.svg',
+ 'scalable/gimp-join-miter.svg',
+ 'scalable/gimp-join-round.svg',
+ 'scalable/gimp-landscape.svg',
+ 'scalable/gimp-layer-mask.svg',
+ 'scalable/gimp-layers.svg',
+ 'scalable/gimp-layer.svg',
+ 'scalable/gimp-layer-to-imagesize.svg',
+ 'scalable/gimp-letter-spacing.svg',
+ 'scalable/gimp-line-spacing.svg',
+ 'scalable/gimp-linked.svg',
+ 'scalable/gimp-list.svg',
+ 'scalable/gimp-marker.svg',
+ 'scalable/gimp-menu-left.svg',
+ 'scalable/gimp-menu-right.svg',
+ 'scalable/gimp-merge-down.svg',
+ 'scalable/gimp-move-to-screen.svg',
+ 'scalable/gimp-navigation.svg',
+ 'scalable/gimp-paste-as-new.svg',
+ 'scalable/gimp-paste-into.svg',
+ 'scalable/gimp-path.svg',
+ 'scalable/gimp-paths.svg',
+ 'scalable/gimp-path-stroke.svg',
+ 'scalable/gimp-pattern.svg',
+ 'scalable/gimp-plugin.svg',
+ 'scalable/gimp-portrait.svg',
+ 'scalable/gimp-prefs-color-management.svg',
+ 'scalable/gimp-prefs-controllers.svg',
+ 'scalable/gimp-prefs-default-comment.svg',
+ 'scalable/gimp-prefs-default-grid.svg',
+ 'scalable/gimp-prefs-display.svg',
+ 'scalable/gimp-prefs-folders.svg',
+ 'scalable/gimp-prefs-folders-brushes.svg',
+ 'scalable/gimp-prefs-folders-dynamics.svg',
+ 'scalable/gimp-prefs-folders-environ.svg',
+ 'scalable/gimp-prefs-folders-fonts.svg',
+ 'scalable/gimp-prefs-folders-gradients.svg',
+ 'scalable/gimp-prefs-folders-icon-themes.svg',
+ 'scalable/gimp-prefs-folders-interp.svg',
+ 'scalable/gimp-prefs-folders-modules.svg',
+ 'scalable/gimp-prefs-folders-mypaint-brushes.svg',
+ 'scalable/gimp-prefs-folders-palettes.svg',
+ 'scalable/gimp-prefs-folders-patterns.svg',
+ 'scalable/gimp-prefs-folders-plug-ins.svg',
+ 'scalable/gimp-prefs-folders-scripts.svg',
+ 'scalable/gimp-prefs-folders-themes.svg',
+ 'scalable/gimp-prefs-folders-tool-plug-ins.svg',
+ 'scalable/gimp-prefs-folders-tool-presets.svg',
+ 'scalable/gimp-prefs-folders-tools.svg',
+ 'scalable/gimp-prefs-help-system.svg',
+ 'scalable/gimp-prefs-icon-theme.svg',
+ 'scalable/gimp-prefs-image-title.svg',
+ 'scalable/gimp-prefs-image-windows.svg',
+ 'scalable/gimp-prefs-image-windows-appearance.svg',
+ 'scalable/gimp-prefs-image-windows-snapping.svg',
+ 'scalable/gimp-prefs-import-export.svg',
+ 'scalable/gimp-prefs-input-devices.svg',
+ 'scalable/gimp-prefs-interface.svg',
+ 'scalable/gimp-prefs-new-image.svg',
+ 'scalable/gimp-prefs-playground.svg',
+ 'scalable/gimp-prefs-session.svg',
+ 'scalable/gimp-prefs-system-resources.svg',
+ 'scalable/gimp-prefs-theme.svg',
+ 'scalable/gimp-prefs-toolbox.svg',
+ 'scalable/gimp-prefs-tool-options.svg',
+ 'scalable/gimp-prefs-window-management.svg',
+ 'scalable/gimp-quick-mask-off.svg',
+ 'scalable/gimp-quick-mask-on.svg',
+ 'scalable/gimp-reset.svg',
+ 'scalable/gimp-reshow-filter.svg',
+ 'scalable/gimp-resize.svg',
+ 'scalable/gimp-rotate-180.svg',
+ 'scalable/gimp-sample-point.svg',
+ 'scalable/gimp-scale.svg',
+ 'scalable/gimp-selection.svg',
+ 'scalable/gimp-selection-add.svg',
+ 'scalable/gimp-selection-all.svg',
+ 'scalable/gimp-selection-border.svg',
+ 'scalable/gimp-selection-grow.svg',
+ 'scalable/gimp-selection-intersect.svg',
+ 'scalable/gimp-selection-none.svg',
+ 'scalable/gimp-selection-replace.svg',
+ 'scalable/gimp-selection-shrink.svg',
+ 'scalable/gimp-selection-stroke.svg',
+ 'scalable/gimp-selection-subtract.svg',
+ 'scalable/gimp-selection-to-channel.svg',
+ 'scalable/gimp-selection-to-path.svg',
+ 'scalable/gimp-shape-circle.svg',
+ 'scalable/gimp-shape-diamond.svg',
+ 'scalable/gimp-shape-square.svg',
+ 'scalable/gimp-shred.svg',
+ 'scalable/gimp-smartphone.svg',
+ 'scalable/gimp-swap-colors.svg',
+ 'scalable/gimp-symmetry.svg',
+ 'scalable/gimp-template.svg',
+ 'scalable/gimp-text-dir-ttb-rtl.svg',
+ 'scalable/gimp-text-dir-ttb-rtl-upright.svg',
+ 'scalable/gimp-text-dir-ttb-ltr.svg',
+ 'scalable/gimp-text-dir-ttb-ltr-upright.svg',
+ 'scalable/gimp-text-layer.svg',
+ 'scalable/gimp-toilet-paper.svg',
+ 'scalable/gimp-tool-airbrush.svg',
+ 'scalable/gimp-tool-align.svg',
+ 'scalable/gimp-tool-blur.svg',
+ 'scalable/gimp-tool-brightness-contrast.svg',
+ 'scalable/gimp-tool-bucket-fill.svg',
+ 'scalable/gimp-tool-by-color-select.svg',
+ 'scalable/gimp-tool-cage.svg',
+ 'scalable/gimp-tool-clone.svg',
+ 'scalable/gimp-tool-color-balance.svg',
+ 'scalable/gimp-tool-colorize.svg',
+ 'scalable/gimp-tool-color-picker.svg',
+ 'scalable/gimp-tool-color-temperature.svg',
+ 'scalable/gimp-tool-crop.svg',
+ 'scalable/gimp-tool-curves.svg',
+ 'scalable/gimp-tool-desaturate.svg',
+ 'scalable/gimp-tool-dodge.svg',
+ 'scalable/gimp-tool-ellipse-select.svg',
+ 'scalable/gimp-tool-eraser.svg',
+ 'scalable/gimp-tool-exposure.svg',
+ 'scalable/gimp-tool-flip.svg',
+ 'scalable/gimp-tool-foreground-select.svg',
+ 'scalable/gimp-tool-free-select.svg',
+ 'scalable/gimp-tool-fuzzy-select.svg',
+ 'scalable/gimp-tool-gradient.svg',
+ 'scalable/gimp-tool-handle-transform.svg',
+ 'scalable/gimp-tool-heal.svg',
+ 'scalable/gimp-tool-hue-saturation.svg',
+ 'scalable/gimp-tool-ink.svg',
+ 'scalable/gimp-tool-iscissors.svg',
+ 'scalable/gimp-tool-levels.svg',
+ 'scalable/gimp-tool-measure.svg',
+ 'scalable/gimp-tool-move.svg',
+ 'scalable/gimp-tool-mypaint-brush.svg',
+ 'scalable/gimp-tool-n-point-deformation.svg',
+ 'scalable/gimp-tool-offset.svg',
+ 'scalable/gimp-tool-options.svg',
+ 'scalable/gimp-tool-paintbrush.svg',
+ 'scalable/gimp-tool-path.svg',
+ 'scalable/gimp-tool-pencil.svg',
+ 'scalable/gimp-tool-perspective-clone.svg',
+ 'scalable/gimp-tool-perspective.svg',
+ 'scalable/gimp-tool-posterize.svg',
+ 'scalable/gimp-tool-preset.svg',
+ 'scalable/gimp-tool-rect-select.svg',
+ 'scalable/gimp-tool-rotate.svg',
+ 'scalable/gimp-tool-scale.svg',
+ 'scalable/gimp-tool-seamless-clone.svg',
+ 'scalable/gimp-tool-shadows-highlights.svg',
+ 'scalable/gimp-tool-shear.svg',
+ 'scalable/gimp-tool-smudge.svg',
+ 'scalable/gimp-tools.svg',
+ 'scalable/gimp-tool-text.svg',
+ 'scalable/gimp-tool-threshold.svg',
+ 'scalable/gimp-tool-unified-transform.svg',
+ 'scalable/gimp-tool-warp.svg',
+ 'scalable/gimp-tool-zoom.svg',
+ 'scalable/gimp-transparency.svg',
+ 'scalable/gimp-undo-history.svg',
+ 'scalable/gimp-user-manual.svg',
+ 'scalable/gimp-vcenter.svg',
+ 'scalable/gimp-vchain.svg',
+ 'scalable/gimp-vchain-broken.svg',
+ 'scalable/gimp-vfill.svg',
+ 'scalable/gimp-video.svg',
+ 'scalable/gimp-visible.svg',
+ 'scalable/gimp-web.svg',
+ 'scalable/gimp-wilber.svg',
+ 'scalable/gimp-wilber-eek.svg',
+ 'scalable/gimp-wilber-outline.svg',
+ 'scalable/gimp-zoom-follow-window.svg',
+]
+color_vector_24 = [
+ '24/dialog-error.svg',
+ '24/dialog-information.svg',
+ '24/dialog-question.svg',
+ '24/dialog-warning.svg',
+ '24/document-print.svg',
+ '24/media-floppy.svg',
+ '24/media-optical.svg',
+
+ '24/gtk-select-color.svg',
+
+ '24/gimp-business-card.svg',
+ '24/gimp-center.svg',
+ '24/gimp-channel.svg',
+ '24/gimp-channel-alpha.svg',
+ '24/gimp-channel-blue.svg',
+ '24/gimp-channel-gray.svg',
+ '24/gimp-channel-green.svg',
+ '24/gimp-channel-indexed.svg',
+ '24/gimp-channel-red.svg',
+ '24/gimp-channels.svg',
+ '24/gimp-char-picker.svg',
+ '24/gimp-colormap.svg',
+ '24/gimp-color-space-linear.svg',
+ '24/gimp-color-space-non-linear.svg',
+ '24/gimp-color-space-perceptual.svg',
+ '24/gimp-controller.svg',
+ '24/gimp-controller-keyboard.svg',
+ '24/gimp-controller-linux-input.svg',
+ '24/gimp-controller-midi.svg',
+ '24/gimp-controller-wheel.svg',
+ '24/gimp-cursor.svg',
+ '24/gimp-device-status.svg',
+ '24/gimp-display.svg',
+ '24/gimp-display-filter.svg',
+ '24/gimp-display-filter-clip-warning.svg',
+ '24/gimp-display-filter-colorblind.svg',
+ '24/gimp-display-filter-contrast.svg',
+ '24/gimp-display-filter-gamma.svg',
+ '24/gimp-display-filter-lcms.svg',
+ '24/gimp-display-filter-proof.svg',
+ '24/gimp-dynamics.svg',
+ '24/gimp-floating-selection.svg',
+ '24/gimp-gegl.svg',
+ '24/gimp-grid.svg',
+ '24/gimp-histogram.svg',
+ '24/gimp-image.svg',
+ '24/gimp-images.svg',
+ '24/gimp-landscape.svg',
+ '24/gimp-layer.svg',
+ '24/gimp-layer-mask.svg',
+ '24/gimp-layers.svg',
+ '24/gimp-letter-spacing.svg',
+ '24/gimp-line-spacing.svg',
+ '24/gimp-move-to-screen.svg',
+ '24/gimp-navigation.svg',
+ '24/gimp-path.svg',
+ '24/gimp-paths.svg',
+ '24/gimp-portrait.svg',
+ '24/gimp-prefs-color-management.svg',
+ '24/gimp-prefs-controllers.svg',
+ '24/gimp-prefs-default-comment.svg',
+ '24/gimp-prefs-default-grid.svg',
+ '24/gimp-prefs-display.svg',
+ '24/gimp-prefs-folders.svg',
+ '24/gimp-prefs-folders-brushes.svg',
+ '24/gimp-prefs-folders-dynamics.svg',
+ '24/gimp-prefs-folders-environ.svg',
+ '24/gimp-prefs-folders-fonts.svg',
+ '24/gimp-prefs-folders-gradients.svg',
+ '24/gimp-prefs-folders-icon-themes.svg',
+ '24/gimp-prefs-folders-interp.svg',
+ '24/gimp-prefs-folders-modules.svg',
+ '24/gimp-prefs-folders-mypaint-brushes.svg',
+ '24/gimp-prefs-folders-palettes.svg',
+ '24/gimp-prefs-folders-patterns.svg',
+ '24/gimp-prefs-folders-plug-ins.svg',
+ '24/gimp-prefs-folders-scripts.svg',
+ '24/gimp-prefs-folders-themes.svg',
+ '24/gimp-prefs-folders-tool-plug-ins.svg',
+ '24/gimp-prefs-folders-tool-presets.svg',
+ '24/gimp-prefs-folders-tools.svg',
+ '24/gimp-prefs-help-system.svg',
+ '24/gimp-prefs-icon-theme.svg',
+ '24/gimp-prefs-image-title.svg',
+ '24/gimp-prefs-image-windows.svg',
+ '24/gimp-prefs-image-windows-appearance.svg',
+ '24/gimp-prefs-image-windows-snapping.svg',
+ '24/gimp-prefs-import-export.svg',
+ '24/gimp-prefs-input-devices.svg',
+ '24/gimp-prefs-interface.svg',
+ '24/gimp-prefs-new-image.svg',
+ '24/gimp-prefs-playground.svg',
+ '24/gimp-prefs-session.svg',
+ '24/gimp-prefs-system-resources.svg',
+ '24/gimp-prefs-theme.svg',
+ '24/gimp-prefs-toolbox.svg',
+ '24/gimp-prefs-tool-options.svg',
+ '24/gimp-prefs-window-management.svg',
+ '24/gimp-resize.svg',
+ '24/gimp-sample-point.svg',
+ '24/gimp-scale.svg',
+ '24/gimp-selection.svg',
+ '24/gimp-smartphone.svg',
+ '24/gimp-symmetry.svg',
+ '24/gimp-template.svg',
+ '24/gimp-text-layer.svg',
+ '24/gimp-tool-airbrush.svg',
+ '24/gimp-tool-align.svg',
+ '24/gimp-tool-blur.svg',
+ '24/gimp-tool-brightness-contrast.svg',
+ '24/gimp-tool-bucket-fill.svg',
+ '24/gimp-tool-by-color-select.svg',
+ '24/gimp-tool-cage.svg',
+ '24/gimp-tool-clone.svg',
+ '24/gimp-tool-color-balance.svg',
+ '24/gimp-tool-color-picker.svg',
+ '24/gimp-tool-colorize.svg',
+ '24/gimp-tool-crop.svg',
+ '24/gimp-tool-curves.svg',
+ '24/gimp-tool-desaturate.svg',
+ '24/gimp-tool-dodge.svg',
+ '24/gimp-tool-eraser.svg',
+ '24/gimp-tool-ellipse-select.svg',
+ '24/gimp-tool-exposure.svg',
+ '24/gimp-tool-flip.svg',
+ '24/gimp-tool-foreground-select.svg',
+ '24/gimp-tool-free-select.svg',
+ '24/gimp-tool-fuzzy-select.svg',
+ '24/gimp-tool-gradient.svg',
+ '24/gimp-tool-handle-transform.svg',
+ '24/gimp-tool-heal.svg',
+ '24/gimp-tool-hue-saturation.svg',
+ '24/gimp-tool-ink.svg',
+ '24/gimp-tool-iscissors.svg',
+ '24/gimp-tool-levels.svg',
+ '24/gimp-tool-mypaint-brush.svg',
+ '24/gimp-tool-measure.svg',
+ '24/gimp-tool-n-point-deformation.svg',
+ '24/gimp-tool-offset.svg',
+ '24/gimp-tool-options.svg',
+ '24/gimp-tool-paintbrush.svg',
+ '24/gimp-tool-path.svg',
+ '24/gimp-tool-pencil.svg',
+ '24/gimp-tool-perspective.svg',
+ '24/gimp-tool-perspective-clone.svg',
+ '24/gimp-tool-posterize.svg',
+ '24/gimp-tool-preset.svg',
+ '24/gimp-tool-rect-select.svg',
+ '24/gimp-tool-rotate.svg',
+ '24/gimp-tools.svg',
+ '24/gimp-tool-scale.svg',
+ '24/gimp-tool-seamless-clone.svg',
+ '24/gimp-tool-shadows-highlights.svg',
+ '24/gimp-tool-shear.svg',
+ '24/gimp-tool-smudge.svg',
+ '24/gimp-tool-threshold.svg',
+ '24/gimp-tool-unified-transform.svg',
+ '24/gimp-tool-text.svg',
+ '24/gimp-tool-warp.svg',
+ '24/gimp-tool-zoom.svg',
+ '24/gimp-transparency.svg',
+ '24/gimp-undo-history.svg',
+ '24/gimp-user-manual.svg',
+ '24/gimp-video.svg',
+ '24/gimp-web.svg',
+ '24/gimp-wilber.svg',
+]
+
+symbolic_vector_scalable = [
+ 'scalable/dialog-error-symbolic.svg',
+ 'scalable/dialog-information-symbolic.svg',
+ 'scalable/dialog-question-symbolic.svg',
+ 'scalable/dialog-warning-symbolic.svg',
+ 'scalable/document-new-symbolic.svg',
+ 'scalable/document-open-recent-symbolic.svg',
+ 'scalable/document-open-symbolic.svg',
+ 'scalable/document-print-symbolic.svg',
+ 'scalable/document-revert-symbolic.svg',
+ 'scalable/document-save-as-symbolic.svg',
+ 'scalable/document-save-symbolic.svg',
+ 'scalable/edit-clear-symbolic.svg',
+ 'scalable/edit-copy-symbolic.svg',
+ 'scalable/edit-cut-symbolic.svg',
+ 'scalable/edit-delete-symbolic.svg',
+ 'scalable/edit-paste-symbolic.svg',
+ 'scalable/edit-redo-symbolic.svg',
+ 'scalable/edit-undo-symbolic.svg',
+ 'scalable/folder-new-symbolic.svg',
+ 'scalable/folder-symbolic.svg',
+ 'scalable/format-indent-more-symbolic.svg',
+ 'scalable/format-justify-center-symbolic.svg',
+ 'scalable/format-justify-fill-symbolic.svg',
+ 'scalable/format-justify-left-symbolic.svg',
+ 'scalable/format-justify-right-symbolic.svg',
+ 'scalable/format-text-direction-ltr-symbolic.svg',
+ 'scalable/format-text-direction-rtl-symbolic.svg',
+ 'scalable/go-bottom-symbolic.svg',
+ 'scalable/go-down-symbolic.svg',
+ 'scalable/go-first-symbolic.svg',
+ 'scalable/go-home-symbolic.svg',
+ 'scalable/go-last-symbolic.svg',
+ 'scalable/go-next-symbolic.svg',
+ 'scalable/go-previous-symbolic.svg',
+ 'scalable/go-top-symbolic.svg',
+ 'scalable/go-up-symbolic.svg',
+ 'scalable/help-about-symbolic.svg',
+ 'scalable/list-add-symbolic.svg',
+ 'scalable/list-remove-symbolic.svg',
+ 'scalable/media-floppy-symbolic.svg',
+ 'scalable/media-optical-symbolic.svg',
+ 'scalable/media-playback-pause-symbolic.svg',
+ 'scalable/media-playback-start-symbolic.svg',
+ 'scalable/media-seek-backward-symbolic.svg',
+ 'scalable/media-skip-backward-symbolic.svg',
+ 'scalable/media-skip-forward-symbolic.svg',
+ 'scalable/object-flip-horizontal-symbolic.svg',
+ 'scalable/object-flip-vertical-symbolic.svg',
+ 'scalable/object-rotate-left-symbolic.svg',
+ 'scalable/object-rotate-right-symbolic.svg',
+ 'scalable/preferences-system-symbolic.svg',
+ 'scalable/process-stop-symbolic.svg',
+ 'scalable/system-run-symbolic.svg',
+ 'scalable/view-fullscreen-symbolic.svg',
+ 'scalable/view-refresh-symbolic.svg',
+ 'scalable/window-close-symbolic.svg',
+ 'scalable/window-new-symbolic.svg',
+ 'scalable/zoom-fit-best-symbolic.svg',
+ 'scalable/zoom-in-symbolic.svg',
+ 'scalable/zoom-original-symbolic.svg',
+ 'scalable/zoom-out-symbolic.svg',
+
+ 'scalable/gtk-cancel-symbolic.svg',
+ 'scalable/gtk-edit-symbolic.svg',
+ 'scalable/gtk-no-symbolic.svg',
+ 'scalable/gtk-ok-symbolic.svg',
+ 'scalable/gtk-select-color-symbolic.svg',
+ 'scalable/gtk-select-font-symbolic.svg',
+ 'scalable/gtk-yes-symbolic.svg',
+
+ 'scalable/gimp-anchor-symbolic.svg',
+ 'scalable/gimp-attach-symbolic.svg',
+ 'scalable/gimp-business-card-symbolic.svg',
+ 'scalable/gimp-cap-butt-symbolic.svg',
+ 'scalable/gimp-cap-round-symbolic.svg',
+ 'scalable/gimp-cap-square-symbolic.svg',
+ 'scalable/gimp-center-symbolic.svg',
+ 'scalable/gimp-channel-alpha-symbolic.svg',
+ 'scalable/gimp-channel-blue-symbolic.svg',
+ 'scalable/gimp-channel-gray-symbolic.svg',
+ 'scalable/gimp-channel-green-symbolic.svg',
+ 'scalable/gimp-channel-indexed-symbolic.svg',
+ 'scalable/gimp-channel-red-symbolic.svg',
+ 'scalable/gimp-channel-symbolic.svg',
+ 'scalable/gimp-channels-symbolic.svg',
+ 'scalable/gimp-char-picker-symbolic.svg',
+ 'scalable/gimp-clipboard-symbolic.svg',
+ 'scalable/gimp-close-all-symbolic.svg',
+ 'scalable/gimp-close-symbolic.svg',
+ 'scalable/gimp-color-cmyk-symbolic.svg',
+ 'scalable/gimp-color-pick-from-screen-symbolic.svg',
+ 'scalable/gimp-color-picker-black-symbolic.svg',
+ 'scalable/gimp-color-picker-gray-symbolic.svg',
+ 'scalable/gimp-color-picker-white-symbolic.svg',
+ 'scalable/gimp-color-space-linear-symbolic.svg',
+ 'scalable/gimp-color-space-non-linear-symbolic.svg',
+ 'scalable/gimp-color-space-perceptual-symbolic.svg',
+ 'scalable/gimp-color-triangle-symbolic.svg',
+ 'scalable/gimp-color-water-symbolic.svg',
+ 'scalable/gimp-colormap-symbolic.svg',
+ 'scalable/gimp-controller-keyboard-symbolic.svg',
+ 'scalable/gimp-controller-linux-input-symbolic.svg',
+ 'scalable/gimp-controller-midi-symbolic.svg',
+ 'scalable/gimp-controller-symbolic.svg',
+ 'scalable/gimp-controller-wheel-symbolic.svg',
+ 'scalable/gimp-convert-grayscale-symbolic.svg',
+ 'scalable/gimp-convert-indexed-symbolic.svg',
+ 'scalable/gimp-convert-rgb-symbolic.svg',
+ 'scalable/gimp-cursor-symbolic.svg',
+ 'scalable/gimp-curve-free-symbolic.svg',
+ 'scalable/gimp-curve-smooth-symbolic.svg',
+ 'scalable/gimp-dashboard-symbolic.svg',
+ 'scalable/gimp-default-colors-symbolic.svg',
+ 'scalable/gimp-detach-symbolic.svg',
+ 'scalable/gimp-device-status-symbolic.svg',
+ 'scalable/gimp-display-filter-clip-warning-symbolic.svg',
+ 'scalable/gimp-display-filter-colorblind-symbolic.svg',
+ 'scalable/gimp-display-filter-contrast-symbolic.svg',
+ 'scalable/gimp-display-filter-gamma-symbolic.svg',
+ 'scalable/gimp-display-filter-lcms-symbolic.svg',
+ 'scalable/gimp-display-filter-proof-symbolic.svg',
+ 'scalable/gimp-display-filter-symbolic.svg',
+ 'scalable/gimp-display-symbolic.svg',
+ 'scalable/gimp-duplicate-symbolic.svg',
+ 'scalable/gimp-dynamics-symbolic.svg',
+ 'scalable/gimp-file-manager-symbolic.svg',
+ 'scalable/gimp-floating-selection-symbolic.svg',
+ 'scalable/gimp-gegl-symbolic.svg',
+ 'scalable/gimp-gradient-bilinear-symbolic.svg',
+ 'scalable/gimp-gradient-conical-asymmetric-symbolic.svg',
+ 'scalable/gimp-gradient-conical-symmetric-symbolic.svg',
+ 'scalable/gimp-gradient-linear-symbolic.svg',
+ 'scalable/gimp-gradient-radial-symbolic.svg',
+ 'scalable/gimp-gradient-shapeburst-angular-symbolic.svg',
+ 'scalable/gimp-gradient-shapeburst-dimpled-symbolic.svg',
+ 'scalable/gimp-gradient-shapeburst-spherical-symbolic.svg',
+ 'scalable/gimp-gradient-spiral-anticlockwise-symbolic.svg',
+ 'scalable/gimp-gradient-spiral-clockwise-symbolic.svg',
+ 'scalable/gimp-gradient-square-symbolic.svg',
+ 'scalable/gimp-gravity-east-symbolic.svg',
+ 'scalable/gimp-gravity-north-east-symbolic.svg',
+ 'scalable/gimp-gravity-north-symbolic.svg',
+ 'scalable/gimp-gravity-north-west-symbolic.svg',
+ 'scalable/gimp-gravity-south-east-symbolic.svg',
+ 'scalable/gimp-gravity-south-symbolic.svg',
+ 'scalable/gimp-gravity-south-west-symbolic.svg',
+ 'scalable/gimp-gravity-west-symbolic.svg',
+ 'scalable/gimp-grid-symbolic.svg',
+ 'scalable/gimp-group-layer-symbolic.svg',
+ 'scalable/gimp-hcenter-symbolic.svg',
+ 'scalable/gimp-hchain-broken-symbolic.svg',
+ 'scalable/gimp-hchain-symbolic.svg',
+ 'scalable/gimp-hfill-symbolic.svg',
+ 'scalable/gimp-histogram-linear-symbolic.svg',
+ 'scalable/gimp-histogram-logarithmic-symbolic.svg',
+ 'scalable/gimp-histogram-symbolic.svg',
+ 'scalable/gimp-image-open-symbolic.svg',
+ 'scalable/gimp-image-reload-symbolic.svg',
+ 'scalable/gimp-image-symbolic.svg',
+ 'scalable/gimp-images-symbolic.svg',
+ 'scalable/gimp-input-device-symbolic.svg',
+ 'scalable/gimp-invert-symbolic.svg',
+ 'scalable/gimp-join-bevel-symbolic.svg',
+ 'scalable/gimp-join-miter-symbolic.svg',
+ 'scalable/gimp-join-round-symbolic.svg',
+ 'scalable/gimp-landscape-symbolic.svg',
+ 'scalable/gimp-layer-mask-symbolic.svg',
+ 'scalable/gimp-layer-symbolic.svg',
+ 'scalable/gimp-layer-to-imagesize-symbolic.svg',
+ 'scalable/gimp-layers-symbolic.svg',
+ 'scalable/gimp-letter-spacing-symbolic.svg',
+ 'scalable/gimp-line-spacing-symbolic.svg',
+ 'scalable/gimp-linked-symbolic.svg',
+ 'scalable/gimp-list-symbolic.svg',
+ 'scalable/gimp-menu-left-symbolic.svg',
+ 'scalable/gimp-menu-right-symbolic.svg',
+ 'scalable/gimp-merge-down-symbolic.svg',
+ 'scalable/gimp-move-to-screen-symbolic.svg',
+ 'scalable/gimp-navigation-symbolic.svg',
+ 'scalable/gimp-paste-as-new-symbolic.svg',
+ 'scalable/gimp-paste-into-symbolic.svg',
+ 'scalable/gimp-path-stroke-symbolic.svg',
+ 'scalable/gimp-path-symbolic.svg',
+ 'scalable/gimp-paths-symbolic.svg',
+ 'scalable/gimp-pattern-symbolic.svg',
+ 'scalable/gimp-plugin-symbolic.svg',
+ 'scalable/gimp-portrait-symbolic.svg',
+ 'scalable/gimp-prefs-color-management-symbolic.svg',
+ 'scalable/gimp-prefs-controllers-symbolic.svg',
+ 'scalable/gimp-prefs-default-comment-symbolic.svg',
+ 'scalable/gimp-prefs-default-grid-symbolic.svg',
+ 'scalable/gimp-prefs-display-symbolic.svg',
+ 'scalable/gimp-prefs-folders-brushes-symbolic.svg',
+ 'scalable/gimp-prefs-folders-dynamics-symbolic.svg',
+ 'scalable/gimp-prefs-folders-environ-symbolic.svg',
+ 'scalable/gimp-prefs-folders-fonts-symbolic.svg',
+ 'scalable/gimp-prefs-folders-gradients-symbolic.svg',
+ 'scalable/gimp-prefs-folders-icon-themes-symbolic.svg',
+ 'scalable/gimp-prefs-folders-interp-symbolic.svg',
+ 'scalable/gimp-prefs-folders-modules-symbolic.svg',
+ 'scalable/gimp-prefs-folders-mypaint-brushes-symbolic.svg',
+ 'scalable/gimp-prefs-folders-palettes-symbolic.svg',
+ 'scalable/gimp-prefs-folders-patterns-symbolic.svg',
+ 'scalable/gimp-prefs-folders-plug-ins-symbolic.svg',
+ 'scalable/gimp-prefs-folders-scripts-symbolic.svg',
+ 'scalable/gimp-prefs-folders-symbolic.svg',
+ 'scalable/gimp-prefs-folders-themes-symbolic.svg',
+ 'scalable/gimp-prefs-folders-tool-plug-ins-symbolic.svg',
+ 'scalable/gimp-prefs-folders-tool-presets-symbolic.svg',
+ 'scalable/gimp-prefs-folders-tools-symbolic.svg',
+ 'scalable/gimp-prefs-help-system-symbolic.svg',
+ 'scalable/gimp-prefs-icon-theme-symbolic.svg',
+ 'scalable/gimp-prefs-image-title-symbolic.svg',
+ 'scalable/gimp-prefs-image-windows-appearance-symbolic.svg',
+ 'scalable/gimp-prefs-image-windows-snapping-symbolic.svg',
+ 'scalable/gimp-prefs-image-windows-symbolic.svg',
+ 'scalable/gimp-prefs-import-export-symbolic.svg',
+ 'scalable/gimp-prefs-input-devices-symbolic.svg',
+ 'scalable/gimp-prefs-interface-symbolic.svg',
+ 'scalable/gimp-prefs-new-image-symbolic.svg',
+ 'scalable/gimp-prefs-playground-symbolic.svg',
+ 'scalable/gimp-prefs-session-symbolic.svg',
+ 'scalable/gimp-prefs-system-resources-symbolic.svg',
+ 'scalable/gimp-prefs-theme-symbolic.svg',
+ 'scalable/gimp-prefs-tool-options-symbolic.svg',
+ 'scalable/gimp-prefs-toolbox-symbolic.svg',
+ 'scalable/gimp-prefs-window-management-symbolic.svg',
+ 'scalable/gimp-quick-mask-off-symbolic.svg',
+ 'scalable/gimp-quick-mask-on-symbolic.svg',
+ 'scalable/gimp-reset-symbolic.svg',
+ 'scalable/gimp-reshow-filter-symbolic.svg',
+ 'scalable/gimp-resize-symbolic.svg',
+ 'scalable/gimp-rotate-180-symbolic.svg',
+ 'scalable/gimp-sample-point-symbolic.svg',
+ 'scalable/gimp-scale-symbolic.svg',
+ 'scalable/gimp-selection-add-symbolic.svg',
+ 'scalable/gimp-selection-all-symbolic.svg',
+ 'scalable/gimp-selection-border-symbolic.svg',
+ 'scalable/gimp-selection-grow-symbolic.svg',
+ 'scalable/gimp-selection-intersect-symbolic.svg',
+ 'scalable/gimp-selection-none-symbolic.svg',
+ 'scalable/gimp-selection-replace-symbolic.svg',
+ 'scalable/gimp-selection-shrink-symbolic.svg',
+ 'scalable/gimp-selection-stroke-symbolic.svg',
+ 'scalable/gimp-selection-subtract-symbolic.svg',
+ 'scalable/gimp-selection-symbolic.svg',
+ 'scalable/gimp-selection-to-channel-symbolic.svg',
+ 'scalable/gimp-selection-to-path-symbolic.svg',
+ 'scalable/gimp-shape-circle-symbolic.svg',
+ 'scalable/gimp-shape-diamond-symbolic.svg',
+ 'scalable/gimp-shape-square-symbolic.svg',
+ 'scalable/gimp-shred-symbolic.svg',
+ 'scalable/gimp-smartphone-symbolic.svg',
+ 'scalable/gimp-swap-colors-symbolic.svg',
+ 'scalable/gimp-symmetry-symbolic.svg',
+ 'scalable/gimp-template-symbolic.svg',
+ 'scalable/gimp-text-dir-ttb-ltr-symbolic.svg',
+ 'scalable/gimp-text-dir-ttb-ltr-upright-symbolic.svg',
+ 'scalable/gimp-text-dir-ttb-rtl-symbolic.svg',
+ 'scalable/gimp-text-dir-ttb-rtl-upright-symbolic.svg',
+ 'scalable/gimp-text-layer-symbolic.svg',
+ 'scalable/gimp-toilet-paper-symbolic.svg',
+ 'scalable/gimp-tool-airbrush-symbolic.svg',
+ 'scalable/gimp-tool-align-symbolic.svg',
+ 'scalable/gimp-tool-blur-symbolic.svg',
+ 'scalable/gimp-tool-brightness-contrast-symbolic.svg',
+ 'scalable/gimp-tool-bucket-fill-symbolic.svg',
+ 'scalable/gimp-tool-by-color-select-symbolic.svg',
+ 'scalable/gimp-tool-cage-symbolic.svg',
+ 'scalable/gimp-tool-clone-symbolic.svg',
+ 'scalable/gimp-tool-color-balance-symbolic.svg',
+ 'scalable/gimp-tool-color-picker-symbolic.svg',
+ 'scalable/gimp-tool-color-temperature-symbolic.svg',
+ 'scalable/gimp-tool-colorize-symbolic.svg',
+ 'scalable/gimp-tool-crop-symbolic.svg',
+ 'scalable/gimp-tool-curves-symbolic.svg',
+ 'scalable/gimp-tool-desaturate-symbolic.svg',
+ 'scalable/gimp-tool-dodge-symbolic.svg',
+ 'scalable/gimp-tool-ellipse-select-symbolic.svg',
+ 'scalable/gimp-tool-eraser-symbolic.svg',
+ 'scalable/gimp-tool-exposure-symbolic.svg',
+ 'scalable/gimp-tool-flip-symbolic.svg',
+ 'scalable/gimp-tool-foreground-select-symbolic.svg',
+ 'scalable/gimp-tool-free-select-symbolic.svg',
+ 'scalable/gimp-tool-fuzzy-select-symbolic.svg',
+ 'scalable/gimp-tool-gradient-symbolic.svg',
+ 'scalable/gimp-tool-handle-transform-symbolic.svg',
+ 'scalable/gimp-tool-heal-symbolic.svg',
+ 'scalable/gimp-tool-hue-saturation-symbolic.svg',
+ 'scalable/gimp-tool-ink-symbolic.svg',
+ 'scalable/gimp-tool-iscissors-symbolic.svg',
+ 'scalable/gimp-tool-levels-symbolic.svg',
+ 'scalable/gimp-tool-measure-symbolic.svg',
+ 'scalable/gimp-tool-move-symbolic.svg',
+ 'scalable/gimp-tool-mypaint-brush-symbolic.svg',
+ 'scalable/gimp-tool-n-point-deformation-symbolic.svg',
+ 'scalable/gimp-tool-offset-symbolic.svg',
+ 'scalable/gimp-tool-options-symbolic.svg',
+ 'scalable/gimp-tool-paintbrush-symbolic.svg',
+ 'scalable/gimp-tool-path-symbolic.svg',
+ 'scalable/gimp-tool-pencil-symbolic.svg',
+ 'scalable/gimp-tool-perspective-clone-symbolic.svg',
+ 'scalable/gimp-tool-perspective-symbolic.svg',
+ 'scalable/gimp-tool-posterize-symbolic.svg',
+ 'scalable/gimp-tool-preset-symbolic.svg',
+ 'scalable/gimp-tool-rect-select-symbolic.svg',
+ 'scalable/gimp-tool-rotate-symbolic.svg',
+ 'scalable/gimp-tool-scale-symbolic.svg',
+ 'scalable/gimp-tool-seamless-clone-symbolic.svg',
+ 'scalable/gimp-tool-shadows-highlights-symbolic.svg',
+ 'scalable/gimp-tool-shear-symbolic.svg',
+ 'scalable/gimp-tool-smudge-symbolic.svg',
+ 'scalable/gimp-tool-text-symbolic.svg',
+ 'scalable/gimp-tool-threshold-symbolic.svg',
+ 'scalable/gimp-tool-unified-transform-symbolic.svg',
+ 'scalable/gimp-tool-warp-symbolic.svg',
+ 'scalable/gimp-tool-zoom-symbolic.svg',
+ 'scalable/gimp-tools-symbolic.svg',
+ 'scalable/gimp-transparency-symbolic.svg',
+ 'scalable/gimp-undo-history-symbolic.svg',
+ 'scalable/gimp-user-manual-symbolic.svg',
+ 'scalable/gimp-vcenter-symbolic.svg',
+ 'scalable/gimp-vchain-broken-symbolic.svg',
+ 'scalable/gimp-vchain-symbolic.svg',
+ 'scalable/gimp-vfill-symbolic.svg',
+ 'scalable/gimp-video-symbolic.svg',
+ 'scalable/gimp-visible-symbolic.svg',
+ 'scalable/gimp-web-symbolic.svg',
+ 'scalable/gimp-wilber-eek-symbolic.svg',
+ 'scalable/gimp-wilber-outline-symbolic.svg',
+ 'scalable/gimp-wilber-symbolic.svg',
+ 'scalable/gimp-zoom-follow-window-symbolic.svg',
+]
+symbolic_vector_24 = [
+ '24/dialog-error-symbolic.svg',
+ '24/dialog-information-symbolic.svg',
+ '24/dialog-question-symbolic.svg',
+ '24/dialog-warning-symbolic.svg',
+ '24/document-print-symbolic.svg',
+ '24/media-floppy-symbolic.svg',
+ '24/media-optical-symbolic.svg',
+
+ '24/gtk-select-color-symbolic.svg',
+
+ '24/gimp-business-card-symbolic.svg',
+ '24/gimp-center-symbolic.svg',
+ '24/gimp-channel-alpha-symbolic.svg',
+ '24/gimp-channel-blue-symbolic.svg',
+ '24/gimp-channel-gray-symbolic.svg',
+ '24/gimp-channel-green-symbolic.svg',
+ '24/gimp-channel-indexed-symbolic.svg',
+ '24/gimp-channel-red-symbolic.svg',
+ '24/gimp-channel-symbolic.svg',
+ '24/gimp-channels-symbolic.svg',
+ '24/gimp-char-picker-symbolic.svg',
+ '24/gimp-color-space-linear-symbolic.svg',
+ '24/gimp-color-space-non-linear-symbolic.svg',
+ '24/gimp-color-space-perceptual-symbolic.svg',
+ '24/gimp-colormap-symbolic.svg',
+ '24/gimp-controller-keyboard-symbolic.svg',
+ '24/gimp-controller-linux-input-symbolic.svg',
+ '24/gimp-controller-midi-symbolic.svg',
+ '24/gimp-controller-symbolic.svg',
+ '24/gimp-controller-wheel-symbolic.svg',
+ '24/gimp-cursor-symbolic.svg',
+ '24/gimp-device-status-symbolic.svg',
+ '24/gimp-display-filter-clip-warning-symbolic.svg',
+ '24/gimp-display-filter-colorblind-symbolic.svg',
+ '24/gimp-display-filter-contrast-symbolic.svg',
+ '24/gimp-display-filter-gamma-symbolic.svg',
+ '24/gimp-display-filter-lcms-symbolic.svg',
+ '24/gimp-display-filter-proof-symbolic.svg',
+ '24/gimp-display-filter-symbolic.svg',
+ '24/gimp-display-symbolic.svg',
+ '24/gimp-dynamics-symbolic.svg',
+ '24/gimp-floating-selection-symbolic.svg',
+ '24/gimp-gegl-symbolic.svg',
+ '24/gimp-grid-symbolic.svg',
+ '24/gimp-histogram-symbolic.svg',
+ '24/gimp-image-symbolic.svg',
+ '24/gimp-images-symbolic.svg',
+ '24/gimp-landscape-symbolic.svg',
+ '24/gimp-layer-mask-symbolic.svg',
+ '24/gimp-layer-symbolic.svg',
+ '24/gimp-layers-symbolic.svg',
+ '24/gimp-letter-spacing-symbolic.svg',
+ '24/gimp-line-spacing-symbolic.svg',
+ '24/gimp-move-to-screen-symbolic.svg',
+ '24/gimp-navigation-symbolic.svg',
+ '24/gimp-path-symbolic.svg',
+ '24/gimp-paths-symbolic.svg',
+ '24/gimp-portrait-symbolic.svg',
+ '24/gimp-prefs-color-management-symbolic.svg',
+ '24/gimp-prefs-controllers-symbolic.svg',
+ '24/gimp-prefs-default-comment-symbolic.svg',
+ '24/gimp-prefs-default-grid-symbolic.svg',
+ '24/gimp-prefs-display-symbolic.svg',
+ '24/gimp-prefs-folders-brushes-symbolic.svg',
+ '24/gimp-prefs-folders-dynamics-symbolic.svg',
+ '24/gimp-prefs-folders-environ-symbolic.svg',
+ '24/gimp-prefs-folders-fonts-symbolic.svg',
+ '24/gimp-prefs-folders-gradients-symbolic.svg',
+ '24/gimp-prefs-folders-icon-themes-symbolic.svg',
+ '24/gimp-prefs-folders-interp-symbolic.svg',
+ '24/gimp-prefs-folders-modules-symbolic.svg',
+ '24/gimp-prefs-folders-mypaint-brushes-symbolic.svg',
+ '24/gimp-prefs-folders-palettes-symbolic.svg',
+ '24/gimp-prefs-folders-patterns-symbolic.svg',
+ '24/gimp-prefs-folders-plug-ins-symbolic.svg',
+ '24/gimp-prefs-folders-scripts-symbolic.svg',
+ '24/gimp-prefs-folders-symbolic.svg',
+ '24/gimp-prefs-folders-themes-symbolic.svg',
+ '24/gimp-prefs-folders-tool-plug-ins-symbolic.svg',
+ '24/gimp-prefs-folders-tool-presets-symbolic.svg',
+ '24/gimp-prefs-folders-tools-symbolic.svg',
+ '24/gimp-prefs-help-system-symbolic.svg',
+ '24/gimp-prefs-icon-theme-symbolic.svg',
+ '24/gimp-prefs-image-title-symbolic.svg',
+ '24/gimp-prefs-image-windows-appearance-symbolic.svg',
+ '24/gimp-prefs-image-windows-snapping-symbolic.svg',
+ '24/gimp-prefs-image-windows-symbolic.svg',
+ '24/gimp-prefs-import-export-symbolic.svg',
+ '24/gimp-prefs-input-devices-symbolic.svg',
+ '24/gimp-prefs-interface-symbolic.svg',
+ '24/gimp-prefs-new-image-symbolic.svg',
+ '24/gimp-prefs-playground-symbolic.svg',
+ '24/gimp-prefs-session-symbolic.svg',
+ '24/gimp-prefs-system-resources-symbolic.svg',
+ '24/gimp-prefs-theme-symbolic.svg',
+ '24/gimp-prefs-tool-options-symbolic.svg',
+ '24/gimp-prefs-toolbox-symbolic.svg',
+ '24/gimp-prefs-window-management-symbolic.svg',
+ '24/gimp-resize-symbolic.svg',
+ '24/gimp-sample-point-symbolic.svg',
+ '24/gimp-scale-symbolic.svg',
+ '24/gimp-selection-symbolic.svg',
+ '24/gimp-smartphone-symbolic.svg',
+ '24/gimp-symmetry-symbolic.svg',
+ '24/gimp-template-symbolic.svg',
+ '24/gimp-text-layer-symbolic.svg',
+ '24/gimp-tool-airbrush-symbolic.svg',
+ '24/gimp-tool-align-symbolic.svg',
+ '24/gimp-tool-blur-symbolic.svg',
+ '24/gimp-tool-brightness-contrast-symbolic.svg',
+ '24/gimp-tool-bucket-fill-symbolic.svg',
+ '24/gimp-tool-by-color-select-symbolic.svg',
+ '24/gimp-tool-cage-symbolic.svg',
+ '24/gimp-tool-clone-symbolic.svg',
+ '24/gimp-tool-color-balance-symbolic.svg',
+ '24/gimp-tool-color-picker-symbolic.svg',
+ '24/gimp-tool-colorize-symbolic.svg',
+ '24/gimp-tool-crop-symbolic.svg',
+ '24/gimp-tool-curves-symbolic.svg',
+ '24/gimp-tool-desaturate-symbolic.svg',
+ '24/gimp-tool-dodge-symbolic.svg',
+ '24/gimp-tool-ellipse-select-symbolic.svg',
+ '24/gimp-tool-eraser-symbolic.svg',
+ '24/gimp-tool-exposure-symbolic.svg',
+ '24/gimp-tool-flip-symbolic.svg',
+ '24/gimp-tool-foreground-select-symbolic.svg',
+ '24/gimp-tool-free-select-symbolic.svg',
+ '24/gimp-tool-fuzzy-select-symbolic.svg',
+ '24/gimp-tool-gradient-symbolic.svg',
+ '24/gimp-tool-handle-transform-symbolic.svg',
+ '24/gimp-tool-heal-symbolic.svg',
+ '24/gimp-tool-hue-saturation-symbolic.svg',
+ '24/gimp-tool-ink-symbolic.svg',
+ '24/gimp-tool-iscissors-symbolic.svg',
+ '24/gimp-tool-levels-symbolic.svg',
+ '24/gimp-tool-measure-symbolic.svg',
+ '24/gimp-tool-mypaint-brush-symbolic.svg',
+ '24/gimp-tool-n-point-deformation-symbolic.svg',
+ '24/gimp-tool-offset-symbolic.svg',
+ '24/gimp-tool-options-symbolic.svg',
+ '24/gimp-tool-paintbrush-symbolic.svg',
+ '24/gimp-tool-path-symbolic.svg',
+ '24/gimp-tool-pencil-symbolic.svg',
+ '24/gimp-tool-perspective-clone-symbolic.svg',
+ '24/gimp-tool-perspective-symbolic.svg',
+ '24/gimp-tool-posterize-symbolic.svg',
+ '24/gimp-tool-preset-symbolic.svg',
+ '24/gimp-tool-rect-select-symbolic.svg',
+ '24/gimp-tool-rotate-symbolic.svg',
+ '24/gimp-tool-scale-symbolic.svg',
+ '24/gimp-tool-seamless-clone-symbolic.svg',
+ '24/gimp-tool-shadows-highlights-symbolic.svg',
+ '24/gimp-tool-shear-symbolic.svg',
+ '24/gimp-tool-smudge-symbolic.svg',
+ '24/gimp-tool-text-symbolic.svg',
+ '24/gimp-tool-threshold-symbolic.svg',
+ '24/gimp-tool-unified-transform-symbolic.svg',
+ '24/gimp-tool-warp-symbolic.svg',
+ '24/gimp-tool-zoom-symbolic.svg',
+ '24/gimp-tools-symbolic.svg',
+ '24/gimp-transparency-symbolic.svg',
+ '24/gimp-undo-history-symbolic.svg',
+ '24/gimp-user-manual-symbolic.svg',
+ '24/gimp-video-symbolic.svg',
+ '24/gimp-web-symbolic.svg',
+ '24/gimp-wilber-symbolic.svg',
+]
+
+bitmap_12 = [
+ '12/gimp-attach.png',
+ '12/gimp-close.png',
+ '12/gimp-default-colors.png',
+ '12/gimp-detach.png',
+ '12/gimp-linked.png',
+ '12/gimp-menu-left.png',
+ '12/gimp-menu-right.png',
+ '12/gimp-quick-mask-off.png',
+ '12/gimp-quick-mask-on.png',
+ '12/gimp-swap-colors.png',
+ '12/gimp-visible.png',
+ '12/gimp-zoom-follow-window.png',
+]
+bitmap_16 = [
+ '16/dialog-information.png',
+ '16/document-new.png',
+ '16/document-open-recent.png',
+ '16/document-open.png',
+ '16/document-print.png',
+ '16/document-revert.png',
+ '16/document-save-as.png',
+ '16/document-save.png',
+ '16/edit-clear.png',
+ '16/edit-copy.png',
+ '16/edit-cut.png',
+ '16/edit-delete.png',
+ '16/edit-paste.png',
+ '16/edit-redo.png',
+ '16/edit-undo.png',
+ '16/folder-new.png',
+ '16/folder.png',
+ '16/gimp-anchor.png',
+ '16/gimp-business-card.png',
+ '16/gimp-cap-butt.png',
+ '16/gimp-cap-round.png',
+ '16/gimp-cap-square.png',
+ '16/gimp-center.png',
+ '16/gimp-channel-alpha.png',
+ '16/gimp-channel-blue.png',
+ '16/gimp-channel-gray.png',
+ '16/gimp-channel-green.png',
+ '16/gimp-channel-indexed.png',
+ '16/gimp-channel-red.png',
+ '16/gimp-channel.png',
+ '16/gimp-channels.png',
+ '16/gimp-char-picker.png',
+ '16/gimp-clipboard.png',
+ '16/gimp-close-all.png',
+ '16/gimp-color-cmyk.png',
+ '16/gimp-color-pick-from-screen.png',
+ '16/gimp-color-space-linear.png',
+ '16/gimp-color-space-perceptual.png',
+ '16/gimp-color-triangle.png',
+ '16/gimp-color-water.png',
+ '16/gimp-colormap.png',
+ '16/gimp-controller-keyboard.png',
+ '16/gimp-controller-linux-input.png',
+ '16/gimp-controller-midi.png',
+ '16/gimp-controller-wheel.png',
+ '16/gimp-controller.png',
+ '16/gimp-convert-grayscale.png',
+ '16/gimp-convert-indexed.png',
+ '16/gimp-convert-rgb.png',
+ '16/gimp-cursor.png',
+ '16/gimp-curve-free.png',
+ '16/gimp-curve-smooth.png',
+ '16/gimp-dashboard.png',
+ '16/gimp-device-status.png',
+ '16/gimp-display-filter-clip-warning.png',
+ '16/gimp-display-filter-colorblind.png',
+ '16/gimp-display-filter-contrast.png',
+ '16/gimp-display-filter-gamma.png',
+ '16/gimp-display-filter-lcms.png',
+ '16/gimp-display-filter-proof.png',
+ '16/gimp-display-filter.png',
+ '16/gimp-display.png',
+ '16/gimp-duplicate.png',
+ '16/gimp-dynamics.png',
+ '16/gimp-error.png',
+ '16/gimp-file-manager.png',
+ '16/gimp-flip-horizontal.png',
+ '16/gimp-flip-vertical.png',
+ '16/gimp-floating-selection.png',
+ '16/gimp-gegl.png',
+ '16/gimp-gradient-bilinear.png',
+ '16/gimp-gradient-conical-asymmetric.png',
+ '16/gimp-gradient-conical-symmetric.png',
+ '16/gimp-gradient-linear.png',
+ '16/gimp-gradient-radial.png',
+ '16/gimp-gradient-shapeburst-angular.png',
+ '16/gimp-gradient-shapeburst-dimpled.png',
+ '16/gimp-gradient-shapeburst-spherical.png',
+ '16/gimp-gradient-spiral-anticlockwise.png',
+ '16/gimp-gradient-spiral-clockwise.png',
+ '16/gimp-gradient-square.png',
+ '16/gimp-grid.png',
+ '16/gimp-group-layer.png',
+ '16/gimp-histogram-linear.png',
+ '16/gimp-histogram-logarithmic.png',
+ '16/gimp-histogram.png',
+ '16/gimp-image-open.png',
+ '16/gimp-image-reload.png',
+ '16/gimp-image.png',
+ '16/gimp-images.png',
+ '16/gimp-info.png',
+ '16/gimp-input-device.png',
+ '16/gimp-invert.png',
+ '16/gimp-join-bevel.png',
+ '16/gimp-join-miter.png',
+ '16/gimp-join-round.png',
+ '16/gimp-landscape.png',
+ '16/gimp-layer-mask.png',
+ '16/gimp-layer-to-imagesize.png',
+ '16/gimp-layer.png',
+ '16/gimp-layers.png',
+ '16/gimp-list.png',
+ '16/gimp-merge-down.png',
+ '16/gimp-move-to-screen.png',
+ '16/gimp-navigation.png',
+ '16/gimp-paste-as-new.png',
+ '16/gimp-paste-into.png',
+ '16/gimp-path-stroke.png',
+ '16/gimp-path.png',
+ '16/gimp-paths.png',
+ '16/gimp-pattern.png',
+ '16/gimp-plugin.png',
+ '16/gimp-portrait.png',
+ '16/gimp-prefs-folders-brushes.png',
+ '16/gimp-prefs-folders-dynamics.png',
+ '16/gimp-prefs-folders-environ.png',
+ '16/gimp-prefs-folders-fonts.png',
+ '16/gimp-prefs-folders-gradients.png',
+ '16/gimp-prefs-folders-icon-themes.png',
+ '16/gimp-prefs-folders-interp.png',
+ '16/gimp-prefs-folders-modules.png',
+ '16/gimp-prefs-folders-mypaint-brushes.png',
+ '16/gimp-prefs-folders-palettes.png',
+ '16/gimp-prefs-folders-patterns.png',
+ '16/gimp-prefs-folders-plug-ins.png',
+ '16/gimp-prefs-folders-scripts.png',
+ '16/gimp-prefs-folders-themes.png',
+ '16/gimp-prefs-folders-tool-plug-ins.png',
+ '16/gimp-prefs-folders-tool-presets.png',
+ '16/gimp-prefs-folders-tools.png',
+ '16/gimp-prefs-icon-theme.png',
+ '16/gimp-prefs-image-windows.png',
+ '16/gimp-prefs-import-export.png',
+ '16/gimp-prefs-interface.png',
+ '16/gimp-prefs-theme.png',
+ '16/gimp-prefs-toolbox.png',
+ '16/gimp-prefs-window-management.png',
+ '16/gimp-question.png',
+ '16/gimp-reset.png',
+ '16/gimp-reshow-filter.png',
+ '16/gimp-resize.png',
+ '16/gimp-rotate-180.png',
+ '16/gimp-rotate-270.png',
+ '16/gimp-rotate-90.png',
+ '16/gimp-sample-point.png',
+ '16/gimp-scale.png',
+ '16/gimp-selection-add.png',
+ '16/gimp-selection-all.png',
+ '16/gimp-selection-border.png',
+ '16/gimp-selection-grow.png',
+ '16/gimp-selection-intersect.png',
+ '16/gimp-selection-none.png',
+ '16/gimp-selection-replace.png',
+ '16/gimp-selection-shrink.png',
+ '16/gimp-selection-stroke.png',
+ '16/gimp-selection-subtract.png',
+ '16/gimp-selection-to-channel.png',
+ '16/gimp-selection-to-path.png',
+ '16/gimp-selection.png',
+ '16/gimp-shape-circle.png',
+ '16/gimp-shape-diamond.png',
+ '16/gimp-shape-square.png',
+ '16/gimp-shred.png',
+ '16/gimp-smartphone.png',
+ '16/gimp-symmetry.png',
+ '16/gimp-template.png',
+ '16/gimp-text-layer.png',
+ '16/gimp-toilet-paper.png',
+ '16/gimp-tool-airbrush.png',
+ '16/gimp-tool-align.png',
+ '16/gimp-tool-blur.png',
+ '16/gimp-tool-brightness-contrast.png',
+ '16/gimp-tool-bucket-fill.png',
+ '16/gimp-tool-by-color-select.png',
+ '16/gimp-tool-cage.png',
+ '16/gimp-tool-clone.png',
+ '16/gimp-tool-color-balance.png',
+ '16/gimp-tool-color-picker.png',
+ '16/gimp-tool-color-temperature.png',
+ '16/gimp-tool-colorize.png',
+ '16/gimp-tool-crop.png',
+ '16/gimp-tool-curves.png',
+ '16/gimp-tool-desaturate.png',
+ '16/gimp-tool-dodge.png',
+ '16/gimp-tool-ellipse-select.png',
+ '16/gimp-tool-eraser.png',
+ '16/gimp-tool-exposure.png',
+ '16/gimp-tool-flip.png',
+ '16/gimp-tool-foreground-select.png',
+ '16/gimp-tool-free-select.png',
+ '16/gimp-tool-fuzzy-select.png',
+ '16/gimp-tool-gradient.png',
+ '16/gimp-tool-handle-transform.png',
+ '16/gimp-tool-heal.png',
+ '16/gimp-tool-hue-saturation.png',
+ '16/gimp-tool-ink.png',
+ '16/gimp-tool-iscissors.png',
+ '16/gimp-tool-levels.png',
+ '16/gimp-tool-measure.png',
+ '16/gimp-tool-move.png',
+ '16/gimp-tool-mypaint-brush.png',
+ '16/gimp-tool-n-point-deformation.png',
+ '16/gimp-tool-options.png',
+ '16/gimp-tool-paintbrush.png',
+ '16/gimp-tool-path.png',
+ '16/gimp-tool-pencil.png',
+ '16/gimp-tool-perspective-clone.png',
+ '16/gimp-tool-perspective.png',
+ '16/gimp-tool-posterize.png',
+ '16/gimp-tool-preset.png',
+ '16/gimp-tool-rect-select.png',
+ '16/gimp-tool-rotate.png',
+ '16/gimp-tool-scale.png',
+ '16/gimp-tool-seamless-clone.png',
+ '16/gimp-tool-shadows-highlights.png',
+ '16/gimp-tool-shear.png',
+ '16/gimp-tool-smudge.png',
+ '16/gimp-tool-text.png',
+ '16/gimp-tool-threshold.png',
+ '16/gimp-tool-unified-transform.png',
+ '16/gimp-tool-warp.png',
+ '16/gimp-tool-zoom.png',
+ '16/gimp-tools.png',
+ '16/gimp-transparency.png',
+ '16/gimp-undo-history.png',
+ '16/gimp-user-manual.png',
+ '16/gimp-video.png',
+ '16/gimp-warning.png',
+ '16/gimp-web.png',
+ '16/gimp-wilber.png',
+ '16/go-bottom.png',
+ '16/go-down.png',
+ '16/go-first.png',
+ '16/go-home.png',
+ '16/go-last.png',
+ '16/go-next.png',
+ '16/go-previous.png',
+ '16/go-top.png',
+ '16/go-up.png',
+ '16/gtk-cancel.png',
+ '16/gtk-edit.png',
+ '16/gtk-no.png',
+ '16/gtk-ok.png',
+ '16/gtk-select-color.png',
+ '16/gtk-select-font.png',
+ '16/gtk-yes.png',
+ '16/help-about.png',
+ '16/list-add.png',
+ '16/list-remove.png',
+ '16/media-floppy.png',
+ '16/media-optical.png',
+ '16/media-playback-pause.png',
+ '16/media-playback-start.png',
+ '16/media-seek-backward.png',
+ '16/media-skip-backward.png',
+ '16/media-skip-forward.png',
+ '16/preferences-system.png',
+ '16/process-stop.png',
+ '16/system-run.png',
+ '16/view-fullscreen.png',
+ '16/view-refresh.png',
+ '16/window-close.png',
+ '16/window-new.png',
+ '16/zoom-fit-best.png',
+ '16/zoom-in.png',
+ '16/zoom-original.png',
+ '16/zoom-out.png',
+]
+bitmap_18 = [
+ '18/gimp-color-picker-black.png',
+ '18/gimp-color-picker-gray.png',
+ '18/gimp-color-picker-white.png',
+]
+bitmap_20 = [
+ '20/gimp-linked.png',
+ '20/gimp-visible.png',
+]
+bitmap_22 = [
+ '22/folder.png',
+ '22/format-indent-more.png',
+ '22/format-justify-center.png',
+ '22/format-justify-fill.png',
+ '22/format-justify-left.png',
+ '22/format-justify-right.png',
+ '22/gimp-char-picker.png',
+ '22/gimp-dynamics.png',
+ '22/gimp-histogram.png',
+ '22/gimp-input-device.png',
+ '22/gimp-landscape.png',
+ '22/gimp-letter-spacing.png',
+ '22/gimp-line-spacing.png',
+ '22/gimp-path.png',
+ '22/gimp-paths.png',
+ '22/gimp-portrait.png',
+ '22/gimp-prefs-color-management.png',
+ '22/gimp-prefs-controllers.png',
+ '22/gimp-prefs-default-grid.png',
+ '22/gimp-prefs-display.png',
+ '22/gimp-prefs-folders-brushes.png',
+ '22/gimp-prefs-folders-dynamics.png',
+ '22/gimp-prefs-folders-environ.png',
+ '22/gimp-prefs-folders-fonts.png',
+ '22/gimp-prefs-folders-gradients.png',
+ '22/gimp-prefs-folders-icon-themes.png',
+ '22/gimp-prefs-folders-interp.png',
+ '22/gimp-prefs-folders-modules.png',
+ '22/gimp-prefs-folders-mypaint-brushes.png',
+ '22/gimp-prefs-folders-palettes.png',
+ '22/gimp-prefs-folders-patterns.png',
+ '22/gimp-prefs-folders-plug-ins.png',
+ '22/gimp-prefs-folders-scripts.png',
+ '22/gimp-prefs-folders-themes.png',
+ '22/gimp-prefs-folders-tool-plug-ins.png',
+ '22/gimp-prefs-folders-tool-presets.png',
+ '22/gimp-prefs-folders-tools.png',
+ '22/gimp-prefs-folders.png',
+ '22/gimp-prefs-help-system.png',
+ '22/gimp-prefs-icon-theme.png',
+ '22/gimp-prefs-image-title.png',
+ '22/gimp-prefs-image-windows-appearance.png',
+ '22/gimp-prefs-image-windows-snapping.png',
+ '22/gimp-prefs-image-windows.png',
+ '22/gimp-prefs-import-export.png',
+ '22/gimp-prefs-input-devices.png',
+ '22/gimp-prefs-interface.png',
+ '22/gimp-prefs-new-image.png',
+ '22/gimp-prefs-playground.png',
+ '22/gimp-prefs-session.png',
+ '22/gimp-prefs-system-resources.png',
+ '22/gimp-prefs-theme.png',
+ '22/gimp-prefs-tool-options.png',
+ '22/gimp-prefs-toolbox.png',
+ '22/gimp-prefs-window-management.png',
+ '22/gimp-tool-preset.png',
+ '22/gimp-wilber.png',
+]
+bitmap_24 = [
+ '24/dialog-information.png',
+ '24/document-print.png',
+ '24/gimp-attach.png',
+ '24/gimp-business-card.png',
+ '24/gimp-center.png',
+ '24/gimp-channel-alpha.png',
+ '24/gimp-channel-blue.png',
+ '24/gimp-channel-gray.png',
+ '24/gimp-channel-green.png',
+ '24/gimp-channel-indexed.png',
+ '24/gimp-channel-red.png',
+ '24/gimp-channel.png',
+ '24/gimp-channels.png',
+ '24/gimp-colormap.png',
+ '24/gimp-controller-keyboard.png',
+ '24/gimp-controller-linux-input.png',
+ '24/gimp-controller-midi.png',
+ '24/gimp-controller-wheel.png',
+ '24/gimp-controller.png',
+ '24/gimp-cursor.png',
+ '24/gimp-detach.png',
+ '24/gimp-device-status.png',
+ '24/gimp-display-filter-colorblind.png',
+ '24/gimp-display-filter-contrast.png',
+ '24/gimp-display-filter-gamma.png',
+ '24/gimp-display-filter-lcms.png',
+ '24/gimp-display-filter-proof.png',
+ '24/gimp-display-filter.png',
+ '24/gimp-display.png',
+ '24/gimp-error.png',
+ '24/gimp-floating-selection.png',
+ '24/gimp-gegl.png',
+ '24/gimp-gravity-east.png',
+ '24/gimp-gravity-north-east.png',
+ '24/gimp-gravity-north-west.png',
+ '24/gimp-gravity-north.png',
+ '24/gimp-gravity-south-east.png',
+ '24/gimp-gravity-south-west.png',
+ '24/gimp-gravity-south.png',
+ '24/gimp-gravity-west.png',
+ '24/gimp-grid.png',
+ '24/gimp-hcenter.png',
+ '24/gimp-hchain-broken.png',
+ '24/gimp-hchain.png',
+ '24/gimp-hfill.png',
+ '24/gimp-image.png',
+ '24/gimp-images.png',
+ '24/gimp-info.png',
+ '24/gimp-layer-mask.png',
+ '24/gimp-layer.png',
+ '24/gimp-layers.png',
+ '24/gimp-move-to-screen.png',
+ '24/gimp-navigation.png',
+ '24/gimp-question.png',
+ '24/gimp-resize.png',
+ '24/gimp-sample-point.png',
+ '24/gimp-scale.png',
+ '24/gimp-selection.png',
+ '24/gimp-smartphone.png',
+ '24/gimp-symmetry.png',
+ '24/gimp-template.png',
+ '24/gimp-text-dir-ltr.png',
+ '24/gimp-text-dir-rtl.png',
+ '24/gimp-text-layer.png',
+ '24/gimp-toilet-paper.png',
+ '24/gimp-tool-airbrush.png',
+ '24/gimp-tool-align.png',
+ '24/gimp-tool-blur.png',
+ '24/gimp-tool-brightness-contrast.png',
+ '24/gimp-tool-bucket-fill.png',
+ '24/gimp-tool-by-color-select.png',
+ '24/gimp-tool-cage.png',
+ '24/gimp-tool-clone.png',
+ '24/gimp-tool-color-balance.png',
+ '24/gimp-tool-color-picker.png',
+ '24/gimp-tool-colorize.png',
+ '24/gimp-tool-crop.png',
+ '24/gimp-tool-curves.png',
+ '24/gimp-tool-desaturate.png',
+ '24/gimp-tool-dodge.png',
+ '24/gimp-tool-ellipse-select.png',
+ '24/gimp-tool-eraser.png',
+ '24/gimp-tool-flip.png',
+ '24/gimp-tool-foreground-select.png',
+ '24/gimp-tool-free-select.png',
+ '24/gimp-tool-fuzzy-select.png',
+ '24/gimp-tool-gradient.png',
+ '24/gimp-tool-handle-transform.png',
+ '24/gimp-tool-heal.png',
+ '24/gimp-tool-hue-saturation.png',
+ '24/gimp-tool-ink.png',
+ '24/gimp-tool-iscissors.png',
+ '24/gimp-tool-levels.png',
+ '24/gimp-tool-measure.png',
+ '24/gimp-tool-move.png',
+ '24/gimp-tool-mypaint-brush.png',
+ '24/gimp-tool-n-point-deformation.png',
+ '24/gimp-tool-options.png',
+ '24/gimp-tool-paintbrush.png',
+ '24/gimp-tool-path.png',
+ '24/gimp-tool-pencil.png',
+ '24/gimp-tool-perspective-clone.png',
+ '24/gimp-tool-perspective.png',
+ '24/gimp-tool-posterize.png',
+ '24/gimp-tool-preset.png',
+ '24/gimp-tool-rect-select.png',
+ '24/gimp-tool-rotate.png',
+ '24/gimp-tool-scale.png',
+ '24/gimp-tool-seamless-clone.png',
+ '24/gimp-tool-shear.png',
+ '24/gimp-tool-smudge.png',
+ '24/gimp-tool-text.png',
+ '24/gimp-tool-threshold.png',
+ '24/gimp-tool-unified-transform.png',
+ '24/gimp-tool-warp.png',
+ '24/gimp-tool-zoom.png',
+ '24/gimp-tools.png',
+ '24/gimp-transparency.png',
+ '24/gimp-undo-history.png',
+ '24/gimp-user-manual.png',
+ '24/gimp-vcenter.png',
+ '24/gimp-vchain-broken.png',
+ '24/gimp-vchain.png',
+ '24/gimp-vfill.png',
+ '24/gimp-video.png',
+ '24/gimp-warning.png',
+ '24/gimp-web.png',
+ '24/gtk-select-color.png',
+ '24/media-floppy.png',
+ '24/media-optical.png',
+]
+bitmap_32 = [
+ '32/gimp-channel-alpha.png',
+ '32/gimp-channel-blue.png',
+ '32/gimp-channel-gray.png',
+ '32/gimp-channel-green.png',
+ '32/gimp-channel-indexed.png',
+ '32/gimp-channel-red.png',
+ '32/gimp-channel.png',
+ '32/gimp-floating-selection.png',
+ '32/gimp-image.png',
+ '32/gimp-layer-mask.png',
+ '32/gimp-layer.png',
+ '32/gimp-text-layer.png',
+ '32/gimp-user-manual.png',
+ '32/gimp-wilber.png',
+]
+bitmap_48 = [
+ '48/folder.png',
+ '48/gimp-channel-alpha.png',
+ '48/gimp-channel-blue.png',
+ '48/gimp-channel-gray.png',
+ '48/gimp-channel-green.png',
+ '48/gimp-channel-indexed.png',
+ '48/gimp-channel-red.png',
+ '48/gimp-channel.png',
+ '48/gimp-floating-selection.png',
+ '48/gimp-image.png',
+ '48/gimp-layer-mask.png',
+ '48/gimp-layer.png',
+ '48/gimp-prefs-color-management.png',
+ '48/gimp-prefs-controllers.png',
+ '48/gimp-prefs-default-comment.png',
+ '48/gimp-prefs-default-grid.png',
+ '48/gimp-prefs-display.png',
+ '48/gimp-prefs-folders-brushes.png',
+ '48/gimp-prefs-folders-dynamics.png',
+ '48/gimp-prefs-folders-environ.png',
+ '48/gimp-prefs-folders-fonts.png',
+ '48/gimp-prefs-folders-gradients.png',
+ '48/gimp-prefs-folders-icon-themes.png',
+ '48/gimp-prefs-folders-interp.png',
+ '48/gimp-prefs-folders-modules.png',
+ '48/gimp-prefs-folders-mypaint-brushes.png',
+ '48/gimp-prefs-folders-palettes.png',
+ '48/gimp-prefs-folders-patterns.png',
+ '48/gimp-prefs-folders-plug-ins.png',
+ '48/gimp-prefs-folders-scripts.png',
+ '48/gimp-prefs-folders-themes.png',
+ '48/gimp-prefs-folders-tool-plug-ins.png',
+ '48/gimp-prefs-folders-tool-presets.png',
+ '48/gimp-prefs-folders-tools.png',
+ '48/gimp-prefs-folders.png',
+ '48/gimp-prefs-help-system.png',
+ '48/gimp-prefs-icon-theme.png',
+ '48/gimp-prefs-image-title.png',
+ '48/gimp-prefs-image-windows-appearance.png',
+ '48/gimp-prefs-image-windows-snapping.png',
+ '48/gimp-prefs-image-windows.png',
+ '48/gimp-prefs-import-export.png',
+ '48/gimp-prefs-input-devices.png',
+ '48/gimp-prefs-interface.png',
+ '48/gimp-prefs-new-image.png',
+ '48/gimp-prefs-playground.png',
+ '48/gimp-prefs-session.png',
+ '48/gimp-prefs-system-resources.png',
+ '48/gimp-prefs-theme.png',
+ '48/gimp-prefs-tool-options.png',
+ '48/gimp-prefs-toolbox.png',
+ '48/gimp-prefs-window-management.png',
+ '48/gimp-text-layer.png',
+ '48/gimp-wilber.png',
+]
+bitmap_64 = [
+ '64/dialog-information.png',
+ '64/gimp-user-manual.png',
+ '64/gimp-wilber-eek.png',
+ '64/gimp-wilber-outline.png',
+ '64/gimp-wilber.png',
+]
+bitmap_64system = [
+ '64/dialog-error.png',
+ '64/dialog-information.png',
+ '64/dialog-question.png',
+ '64/dialog-warning.png',
+]
+bitmap_96 = [
+ '96/gimp-wilber-outline.png',
+ '96/gimp-wilber.png',
+]
+bitmap_128 = [
+ '128/folder.png',
+ '128/gimp-wilber-outline.png',
+ '128/gimp-wilber.png',
+]
+bitmap_192 = [
+ '192/gimp-wilber-outline.png',
+ '192/gimp-wilber.png',
+]
+bitmap_256 = [
+ '256/folder.png',
+ '256/gimp-wilber-outline.png',
+ '256/gimp-wilber.png',
+]
+
+gimpiconsdir = gimpdatadir / 'icons'
+
+themes = [
+ 'Color',
+ # 'Legacy',
+ 'Symbolic',
+]
+
+foreach theme : themes
+ subdir(theme)
+endforeach
+
+install_data('index.theme',
+ install_dir: gimpiconsdir / 'hicolor',
+)
diff --git a/libgimp/meson.build b/libgimp/meson.build
new file mode 100644
index 0000000000..9995640f2f
--- /dev/null
+++ b/libgimp/meson.build
@@ -0,0 +1,381 @@
+
+gimpenums_notail = custom_target('gimpenums.c.notail',
+ input : [ 'gimpenums.h', ],
+ output: [ 'gimpenums.c.notail', ],
+ command: [
+ gimp_mkenums,
+ '--fhead','#include "config.h"\n'
+ + '#include <gio/gio.h>\n'
+ + '#include <gegl.h>\n'
+ + '#undef GIMP_DISABLE_DEPRECATED\n'
+ + '#include "libgimpbase/gimpbase.h"\n'
+ + '#include "libgimpbase/gimpbase-private.h"\n'
+ + '#include "libgimpconfig/gimpconfigenums.h"\n'
+ + '#include "gimpenums.h"\n',
+ gimp_mkenums_custom_target_commonargs,
+ ],
+ capture: true,
+)
+
+gimpenums = custom_target('gimpenums.c',
+ input : [ gimpenums_notail, 'gimpenums.c.tail', ],
+ output: [ 'gimpenums.c', ],
+ command: [ 'cat', '@INPUT@' ],
+ capture: true,
+)
+
+gimpuimarshal = gnome.genmarshal('gimpuimarshal',
+ prefix: '_gimpui_marshal',
+ sources: 'gimpuimarshal.list',
+ install_header: false,
+)
+
+pdb_wrappers_sources = [
+ 'gimp_pdb.c',
+ 'gimpbrush_pdb.c',
+ 'gimpbrushes_pdb.c',
+ 'gimpbrushselect_pdb.c',
+ 'gimpbuffer_pdb.c',
+ 'gimpchannel_pdb.c',
+ 'gimpcontext_pdb.c',
+ 'gimpdebug_pdb.c',
+ 'gimpdisplay_pdb.c',
+ 'gimpdrawable_pdb.c',
+ 'gimpdrawablecolor_pdb.c',
+ 'gimpdrawableedit_pdb.c',
+ 'gimpdynamics_pdb.c',
+ 'gimpedit_pdb.c',
+ 'gimpfileops_pdb.c',
+ 'gimpfloatingsel_pdb.c',
+ 'gimpfonts_pdb.c',
+ 'gimpfontselect_pdb.c',
+ 'gimpgimprc_pdb.c',
+ 'gimpgradient_pdb.c',
+ 'gimpgradients_pdb.c',
+ 'gimpgradientselect_pdb.c',
+ 'gimphelp_pdb.c',
+ 'gimpimage_pdb.c',
+ 'gimpimagecolorprofile_pdb.c',
+ 'gimpimageconvert_pdb.c',
+ 'gimpimagegrid_pdb.c',
+ 'gimpimageguides_pdb.c',
+ 'gimpimagesamplepoints_pdb.c',
+ 'gimpimageselect_pdb.c',
+ 'gimpimagetransform_pdb.c',
+ 'gimpimageundo_pdb.c',
+ 'gimpitem_pdb.c',
+ 'gimpitemtransform_pdb.c',
+ 'gimplayer_pdb.c',
+ 'gimpmessage_pdb.c',
+ 'gimppainttools_pdb.c',
+ 'gimppalette_pdb.c',
+ 'gimppalettes_pdb.c',
+ 'gimppaletteselect_pdb.c',
+ 'gimppattern_pdb.c',
+ 'gimppatterns_pdb.c',
+ 'gimppatternselect_pdb.c',
+ 'gimpprogress_pdb.c',
+ 'gimpselection_pdb.c',
+ 'gimptextlayer_pdb.c',
+ 'gimptexttool_pdb.c',
+ 'gimpvectors_pdb.c',
+]
+
+pdb_wrappers_headers = [
+ 'gimp_pdb_headers.h',
+ 'gimp_pdb.h',
+ 'gimpbrush_pdb.h',
+ 'gimpbrushes_pdb.h',
+ 'gimpbrushselect_pdb.h',
+ 'gimpbuffer_pdb.h',
+ 'gimpchannel_pdb.h',
+ 'gimpcontext_pdb.h',
+ 'gimpdebug_pdb.h',
+ 'gimpdisplay_pdb.h',
+ 'gimpdrawable_pdb.h',
+ 'gimpdrawablecolor_pdb.h',
+ 'gimpdrawableedit_pdb.h',
+ 'gimpdynamics_pdb.h',
+ 'gimpedit_pdb.h',
+ 'gimpfileops_pdb.h',
+ 'gimpfloatingsel_pdb.h',
+ 'gimpfonts_pdb.h',
+ 'gimpfontselect_pdb.h',
+ 'gimpgimprc_pdb.h',
+ 'gimpgradient_pdb.h',
+ 'gimpgradients_pdb.h',
+ 'gimpgradientselect_pdb.h',
+ 'gimphelp_pdb.h',
+ 'gimpimage_pdb.h',
+ 'gimpimagecolorprofile_pdb.h',
+ 'gimpimageconvert_pdb.h',
+ 'gimpimagegrid_pdb.h',
+ 'gimpimageguides_pdb.h',
+ 'gimpimagesamplepoints_pdb.h',
+ 'gimpimageselect_pdb.h',
+ 'gimpimagetransform_pdb.h',
+ 'gimpimageundo_pdb.h',
+ 'gimpitem_pdb.h',
+ 'gimpitemtransform_pdb.h',
+ 'gimplayer_pdb.h',
+ 'gimpmessage_pdb.h',
+ 'gimppainttools_pdb.h',
+ 'gimppalette_pdb.h',
+ 'gimppalettes_pdb.h',
+ 'gimppaletteselect_pdb.h',
+ 'gimppattern_pdb.h',
+ 'gimppatterns_pdb.h',
+ 'gimppatternselect_pdb.h',
+ 'gimpprogress_pdb.h',
+ 'gimpselection_pdb.h',
+ 'gimptextlayer_pdb.h',
+ 'gimptexttool_pdb.h',
+ 'gimpvectors_pdb.h',
+]
+
+libgimp_sources_introspectable = [
+ 'gimp.c',
+ 'gimpbrushselect.c',
+ 'gimpchannel.c',
+ 'gimpdisplay.c',
+ 'gimpdrawable.c',
+ 'gimpfileprocedure.c',
+ 'gimpfontselect.c',
+ 'gimpgimprc.c',
+ 'gimpgradientselect.c',
+ 'gimpimage.c',
+ 'gimpimagecolorprofile.c',
+ 'gimpimageprocedure.c',
+ 'gimpitem.c',
+ 'gimplayer.c',
+ 'gimplayermask.c',
+ 'gimploadprocedure.c',
+ 'gimppaletteselect.c',
+ 'gimpparamspecs.c',
+ 'gimppatternselect.c',
+ 'gimppdb.c',
+ 'gimpplugin.c',
+ 'gimpprocedure.c',
+ 'gimpprogress.c',
+ 'gimpsaveprocedure.c',
+ 'gimpselection.c',
+ 'gimpthumbnailprocedure.c',
+ 'gimpvectors.c',
+ gimpenums,
+ pdb_wrappers_sources,
+]
+
+libgimp_sources = [
+ libgimp_sources_introspectable,
+ 'gimp-debug.c',
+ 'gimp-shm.c',
+ 'gimpgpparams.c',
+ 'gimppdb_pdb.c',
+ 'gimppdbprocedure.c',
+ 'gimppixbuf.c',
+ 'gimpplugin_pdb.c',
+ 'gimpunit_pdb.c',
+ 'gimpunitcache.c',
+ 'gimptilebackendplugin.c',
+]
+
+libgimp_headers_introspectable = [
+ 'gimp.h',
+ 'gimpbrushselect.h',
+ 'gimpchannel.h',
+ 'gimpdisplay.h',
+ 'gimpdrawable.h',
+ 'gimpenums.h',
+ 'gimpfileprocedure.h',
+ 'gimpfontselect.h',
+ 'gimpgimprc.h',
+ 'gimpgradientselect.h',
+ 'gimpimage.h',
+ 'gimpimagecolorprofile.h',
+ 'gimpimageprocedure.h',
+ 'gimplayer.h',
+ 'gimplayermask.h',
+ 'gimploadprocedure.h',
+ 'gimppaletteselect.h',
+ 'gimpparamspecs.h',
+ 'gimppatternselect.h',
+ 'gimppdb.h',
+ 'gimpplugin.h',
+ 'gimpprocedure.h',
+ 'gimpprogress.h',
+ 'gimpsaveprocedure.h',
+ 'gimpselection.h',
+ 'gimpthumbnailprocedure.h',
+ 'gimptypes.h',
+ 'gimpvectors.h',
+]
+
+libgimp_headers = [
+ libgimp_headers_introspectable,
+ 'gimpprocedure-params.h',
+]
+
+libgimpui_sources_introspectable = [
+ 'gimpaspectpreview.c',
+ 'gimpbrushselectbutton.c',
+ 'gimpdrawablepreview.c',
+ 'gimpexport.c',
+ 'gimpfontselectbutton.c',
+ 'gimpgradientselectbutton.c',
+ 'gimpimagecombobox.c',
+ 'gimpimagemetadata.c',
+ 'gimpitemcombobox.c',
+ 'gimppaletteselectbutton.c',
+ 'gimppatternselectbutton.c',
+ 'gimpprocbrowserdialog.c',
+ 'gimpprocview.c',
+ 'gimpprogressbar.c',
+ 'gimpselectbutton.c',
+ 'gimpui.c',
+ 'gimpzoompreview.c',
+]
+
+libgimpui_sources = [
+ libgimpui_sources_introspectable,
+ gimpuimarshal,
+]
+
+libgimpui_headers_introspectable = [
+ 'gimpaspectpreview.h',
+ 'gimpbrushselectbutton.h',
+ 'gimpdrawablepreview.h',
+ 'gimpexport.h',
+ 'gimpfontselectbutton.h',
+ 'gimpgradientselectbutton.h',
+ 'gimpimagecombobox.h',
+ 'gimpimagemetadata.h',
+ 'gimpitemcombobox.h',
+ 'gimppaletteselectbutton.h',
+ 'gimppatternselectbutton.h',
+ 'gimpprocbrowserdialog.h',
+ 'gimpprocview.h',
+ 'gimpprogressbar.h',
+ 'gimpselectbutton.h',
+ 'gimpui.h',
+ 'gimpuitypes.h',
+ 'gimpzoompreview.h',
+]
+
+libgimp_introspectable = [
+ libgimp_sources_introspectable,
+ libgimp_headers_introspectable,
+]
+
+libgimpui_introspectable = [
+ libgimpui_sources_introspectable,
+ libgimpui_headers_introspectable,
+]
+
+
+libgimp = library('gimp-'+ gimp_api_version,
+ libgimp_sources,
+ include_directories: rootInclude,
+ dependencies: [
+ gegl, gexiv2, gtk3, drmingw,
+ ],
+ c_args: [ '-DG_LOG_DOMAIN="LibGimp"', '-DGIMP_COMPILATION', ],
+ link_with: [
+ libgimpbase,
+ libgimpcolor,
+ libgimpconfig,
+ ],
+ vs_module_defs: 'gimp.def',
+ install: true,
+ version: so_version,
+)
+
+
+libgimpui = library('gimpui-'+ gimp_api_version,
+ libgimpui_sources,
+ include_directories: rootInclude,
+ dependencies: [
+ gegl, gexiv2, gtk3,
+ ],
+ c_args: [ '-DG_LOG_DOMAIN="LibGimpUI"', '-DGIMP_COMPILATION', ],
+ link_with: [
+ libgimp,
+ libgimpbase,
+ libgimpcolor,
+ libgimpmodule,
+ libgimpwidgets,
+ ],
+ vs_module_defs: 'gimpui.def',
+ install: true,
+ version: so_version,
+)
+
+
+install_headers(
+ libgimp_headers,
+ libgimpui_headers_introspectable,
+ subdir: gimp_api_name / 'libgimp',
+)
+
+
+
+### GObject introspection
+
+introspectable_files = [
+ libgimp_introspectable,
+ libgimpui_introspectable,
+ libgimpbase_introspectable,
+ libgimpcolor_introspectable,
+ libgimpconfig_introspectable,
+ libgimpmath_introspectable,
+ libgimpmodule_introspectable,
+ libgimpthumb_introspectable,
+ libgimpwidgets_introspectable,
+ 'gimpparamspecs-body.c',
+]
+
+libgimp_gir = gnome.generate_gir(
+ libgimp,
+ libgimpui,
+ libgimpbase,
+ libgimpcolor,
+ libgimpconfig,
+ libgimpmath,
+ libgimpmodule,
+ libgimpthumb,
+ libgimpwidgets,
+
+ sources: introspectable_files,
+ nsversion: gimp_api_version,
+ namespace: 'Gimp',
+ identifier_prefix: 'Gimp',
+ # symbol_prefix: 'gimp',
+
+ extra_args: [
+ '-DGIMP_COMPILATION',
+ '-DGIMP_BASE_COMPILATION',
+ '-DGIMP_COLOR_COMPILATION',
+ '-DGIMP_CONFIG_COMPILATION',
+ '-DGIMP_MATH_COMPILATION',
+ '-DGIMP_MODULE_COMPILATION',
+ '-DGIMP_THUMB_COMPILATION',
+ '-DGIMP_WIDGETS_COMPILATION',
+ ],
+
+ includes: [
+ 'Babl-0.1',
+ 'cairo-1.0',
+ 'GdkPixbuf-2.0',
+ 'Gegl-0.4',
+ 'Gio-2.0',
+ 'GLib-2.0',
+ 'GObject-2.0',
+ 'Gtk-3.0',
+ ],
+
+ link_with: [
+ libgimpthumb,
+ ],
+
+ include_directories: rootInclude,
+ install: true,
+)
diff --git a/libgimpbase/gimpversion.h.in b/libgimpbase/gimpversion.h.in
new file mode 100644
index 0000000000..2f182da87d
--- /dev/null
+++ b/libgimpbase/gimpversion.h.in
@@ -0,0 +1,68 @@
+#ifndef __GIMP_VERSION_H__
+#define __GIMP_VERSION_H__
+
+/* gimpversion.h.in -> gimpversion.h
+ * This file is configured by Meson. Please modify meson.build files.
+ */
+#if !defined (__GIMP_BASE_H_INSIDE__) && !defined (GIMP_BASE_COMPILATION)
+#error "Only <libgimpbase/gimpbase.h> can be included directly."
+#endif
+
+G_BEGIN_DECLS
+
+
+/**
+ * SECTION: gimpversion
+ * @title: gimpversion
+ * @short_description: Macros and constants useful for determining
+ * GIMP's version number and capabilities.
+ *
+ * Macros and constants useful for determining GIMP's version number and
+ * capabilities.
+ **/
+
+/**
+ * GIMP_MAJOR_VERSION:
+ *
+ * The major GIMP version number.
+ **/
+#define GIMP_MAJOR_VERSION (@GIMP_MAJOR_VERSION@)
+
+/**
+ * GIMP_MINOR_VERSION:
+ *
+ * The minor GIMP version number.
+ **/
+#define GIMP_MINOR_VERSION (@GIMP_MINOR_VERSION@)
+
+/**
+ * GIMP_MICRO_VERSION:
+ *
+ * The micro GIMP version number.
+ **/
+#define GIMP_MICRO_VERSION (@GIMP_MICRO_VERSION@)
+
+/**
+ * GIMP_VERSION:
+ *
+ * The GIMP version as a string.
+ **/
+#define GIMP_VERSION "@GIMP_VERSION@"
+
+/**
+ * GIMP_API_VERSION:
+ *
+ * Since: 2.2
+ **/
+#define GIMP_API_VERSION "@GIMP_API_VERSION@"
+
+#define GIMP_CHECK_VERSION(major, minor, micro) \
+ (GIMP_MAJOR_VERSION > (major) || \
+ (GIMP_MAJOR_VERSION == (major) && GIMP_MINOR_VERSION > (minor)) || \
+ (GIMP_MAJOR_VERSION == (major) && GIMP_MINOR_VERSION == (minor) && \
+ GIMP_MICRO_VERSION >= (micro)))
+
+
+G_END_DECLS
+
+#endif /* __GIMP_VERSION_H__ */
diff --git a/libgimpbase/meson.build b/libgimpbase/meson.build
new file mode 100644
index 0000000000..2ee70f15e6
--- /dev/null
+++ b/libgimpbase/meson.build
@@ -0,0 +1,134 @@
+
+gimpversion = configure_file(
+ input : 'gimpversion.h.in',
+ output: 'gimpversion.h',
+ configuration: versionconfig,
+)
+
+
+gimpbaseenums = custom_target('gimpbaseenums.c',
+ input : [ 'gimpbaseenums.h', ],
+ output: [ 'gimpbaseenums.c', ],
+ command: [
+ gimp_mkenums,
+ '--fhead','#include "config.h"\n'
+ + '#include <glib-object.h>\n'
+ + '#undef GIMP_DISABLE_DEPRECATED\n'
+ + '#include "gimpbasetypes.h"\n'
+ + '#include "libgimp/libgimp-intl.h"\n',
+ gimp_mkenums_custom_target_commonargs,
+ ],
+ capture: true,
+)
+
+gimpcompatenums = custom_target('gimpcompatenums.c',
+ input : [ 'gimpcompatenums.h', ],
+ output: [ 'gimpcompatenums.c', ],
+ command: [
+ gimp_mkenums,
+ '--fhead','#include "config.h"\n'
+ + '#include <glib-object.h>\n'
+ + '#include "gimpbasetypes.h"\n'
+ + '#include "@INPUT@"\n'
+ + '#include "libgimp/libgimp-intl.h"\n',
+ gimp_mkenums_custom_target_commonargs,
+ ],
+ capture: true,
+)
+
+libgimpbase_sources_introspectable = files(
+ 'gimpbasetypes.c',
+ 'gimpchecks.c',
+ 'gimpcpuaccel.c',
+ 'gimpenv.c',
+ 'gimpmemsize.c',
+ 'gimpmetadata.c',
+ 'gimpparamspecs.c',
+ 'gimpparasite.c',
+ 'gimpparasiteio.c',
+ 'gimprectangle.c',
+ 'gimpsignal.c',
+ 'gimpunit.c',
+ 'gimputils.c',
+ 'gimpvaluearray.c',
+)
+
+libgimpbase_sources = [
+ libgimpbase_sources_introspectable,
+ 'gimpbase-private.c',
+ 'gimpprotocol.c',
+ 'gimpreloc.c',
+ 'gimpwire.c',
+ gimpbaseenums,
+ gimpcompatenums,
+]
+
+libgimpbase_headers_introspectable = files(
+ 'gimpbaseenums.h',
+ 'gimpbasetypes.h',
+ 'gimpchecks.h',
+ 'gimpcpuaccel.h',
+ 'gimpenv.h',
+ 'gimplimits.h',
+ 'gimpmemsize.h',
+ 'gimpmetadata.h',
+ 'gimpparamspecs.h',
+ 'gimpparasite.h',
+ 'gimpparasiteio.h',
+ 'gimprectangle.h',
+ 'gimpsignal.h',
+ 'gimpunit.h',
+ 'gimputils.h',
+ 'gimpvaluearray.h',
+) + [
+ gimpversion,
+]
+
+libgimpbase_headers = [
+ libgimpbase_headers_introspectable,
+ 'gimpbase.h',
+ gimpversion,
+]
+
+libgimpbase_introspectable = [
+ libgimpbase_sources_introspectable,
+ libgimpbase_headers_introspectable,
+]
+
+
+libgimpbase = library('gimpbase-' + gimp_api_version,
+ libgimpbase_sources,
+ include_directories: rootInclude,
+ dependencies: [
+ gexiv2, gio, math,
+ ],
+ c_args: [
+ '-DG_LOG_DOMAIN="LibGimpBase"',
+ '-DGIMP_BASE_COMPILATION',
+ ],
+ vs_module_defs: 'gimpbase.def',
+ install: true,
+ version: so_version,
+)
+
+install_headers(
+ libgimpbase_headers,
+ subdir: gimp_api_name / 'libgimpbase',
+)
+
+# Test program, not installed
+executable('test-cpu-accel',
+ 'test-cpu-accel.c',
+ include_directories: rootInclude,
+ dependencies: [
+ glib,
+ ],
+ c_args: [
+ '-DG_LOG_DOMAIN="LibGimpBase"',
+ '-DGIMP_BASE_COMPILATION',
+ ],
+ link_with: [
+ libgimpbase,
+ ],
+ install: false,
+)
diff --git a/libgimpcolor/meson.build b/libgimpcolor/meson.build
new file mode 100644
index 0000000000..99e7a1ff1f
--- /dev/null
+++ b/libgimpcolor/meson.build
@@ -0,0 +1,76 @@
+
+libgimpcolor_sources = files(
+ 'gimpadaptivesupersample.c',
+ 'gimpbilinear.c',
+ 'gimpcairo.c',
+ 'gimpcmyk.c',
+ 'gimpcolormanaged.c',
+ 'gimpcolorprofile.c',
+ 'gimpcolorspace.c',
+ 'gimpcolortransform.c',
+ 'gimphsl.c',
+ 'gimphsv.c',
+ 'gimppixbuf.c',
+ 'gimprgb-parse.c',
+ 'gimprgb.c',
+)
+
+libgimpcolor_headers_introspectable = files(
+ 'gimpcolortypes.h',
+ 'gimpadaptivesupersample.h',
+ 'gimpbilinear.h',
+ 'gimpcairo.h',
+ 'gimpcmyk.h',
+ 'gimpcolormanaged.h',
+ 'gimpcolorprofile.h',
+ 'gimpcolorspace.h',
+ 'gimpcolortransform.h',
+ 'gimphsl.h',
+ 'gimphsv.h',
+ 'gimppixbuf.h',
+ 'gimprgb.h',
+)
+
+libgimpcolor_headers = [
+ libgimpcolor_headers_introspectable,
+ 'gimpcolor.h',
+]
+
+libgimpcolor_introspectable = [
+ libgimpcolor_sources,
+ libgimpcolor_headers_introspectable,
+]
+
+
+libgimpcolor = library('gimpcolor-' + gimp_api_version,
+ libgimpcolor_sources,
+ include_directories: rootInclude,
+ dependencies: [
+ cairo, gdk_pixbuf, gegl, lcms, math,
+ ],
+ c_args: [ '-DG_LOG_DOMAIN="LibGimpColor"', '-DGIMP_COLOR_COMPILATION', ],
+ link_with: [ libgimpbase, ],
+ vs_module_defs: 'gimpcolor.def',
+ install: true,
+ version: so_version,
+)
+
+install_headers(
+ libgimpcolor_headers,
+ subdir: gimp_api_name / 'libgimpcolor',
+)
+
+
+# Test program, not installed
+executable('test-color-parser',
+ 'test-color-parser.c',
+ include_directories: rootInclude,
+ dependencies: [
+ cairo, gdk_pixbuf, gegl, lcms, math,
+ babl,
+ # glib,
+ ],
+ c_args: '-DG_LOG_DOMAIN="LibGimpColor"',
+ link_with: [ libgimpbase, libgimpcolor, ],
+ install: false,
+)
diff --git a/libgimpconfig/meson.build b/libgimpconfig/meson.build
new file mode 100644
index 0000000000..8124a01203
--- /dev/null
+++ b/libgimpconfig/meson.build
@@ -0,0 +1,79 @@
+
+gimpconfigenums = custom_target('gimpconfigenums.c',
+ input : [ 'gimpconfigenums.h', ],
+ output: [ 'gimpconfigenums.c', ],
+ command: [
+ gimp_mkenums,
+ '--fhead','#include "config.h"\n'
+ + '#include <gio/gio.h>\n'
+ + '#include "libgimpbase/gimpbase.h"\n'
+ + '#include "@INPUT@"\n'
+ + '#include "libgimp/libgimp-intl.h"\n',
+ gimp_mkenums_custom_target_commonargs,
+ ],
+ capture: true,
+)
+
+libgimpconfig_sources_introspectable = files(
+ 'gimpcolorconfig.c',
+ 'gimpconfig-deserialize.c',
+ 'gimpconfig-error.c',
+ 'gimpconfig-iface.c',
+ 'gimpconfig-path.c',
+ 'gimpconfig-serialize.c',
+ 'gimpconfig-utils.c',
+ 'gimpconfigwriter.c',
+ 'gimpscanner.c',
+)
+
+libgimpconfig_sources = [
+ libgimpconfig_sources_introspectable,
+ gimpconfigenums,
+]
+
+libgimpconfig_headers_introspectable = files(
+ 'gimpcolorconfig.h',
+ 'gimpconfig-deserialize.h',
+ 'gimpconfig-error.h',
+ 'gimpconfig-iface.h',
+ 'gimpconfig-params.h',
+ 'gimpconfig-path.h',
+ 'gimpconfig-serialize.h',
+ 'gimpconfig-utils.h',
+ 'gimpconfigenums.h',
+ 'gimpconfigtypes.h',
+ 'gimpconfigwriter.h',
+ 'gimpscanner.h',
+)
+
+libgimpconfig_headers = [
+ libgimpconfig_headers_introspectable,
+ 'gimpconfig.h',
+]
+
+libgimpconfig_introspectable = [
+ libgimpconfig_headers_introspectable,
+ libgimpconfig_sources_introspectable,
+]
+
+libgimpconfig = library('gimpconfig-' + gimp_api_version,
+ libgimpconfig_sources,
+ include_directories: rootInclude,
+ dependencies: [
+ cairo, gdk_pixbuf, gegl, gio, gio_specific,
+ ],
+ c_args: [ '-DG_LOG_DOMAIN="LibGimpConfig"', '-DGIMP_CONFIG_COMPILATION', ],
+ link_with: [
+ libgimpbase,
+ libgimpcolor,
+ libgimpmath,
+ ],
+ vs_module_defs: 'gimpconfig.def',
+ install: true,
+ version: so_version,
+)
+
+install_headers(
+ libgimpconfig_headers,
+ subdir: gimp_api_name / 'libgimpconfig',
+)
diff --git a/libgimpmath/meson.build b/libgimpmath/meson.build
new file mode 100644
index 0000000000..14424cd54d
--- /dev/null
+++ b/libgimpmath/meson.build
@@ -0,0 +1,46 @@
+
+libgimpmath_sources_introspectable = files(
+ 'gimpmatrix.c',
+ 'gimpvector.c',
+)
+
+libgimpmath_sources = [
+ libgimpmath_sources_introspectable,
+]
+
+libgimpmath_headers_introspectable = files(
+ 'gimpmathtypes.h',
+ 'gimpmatrix.h',
+ 'gimpvector.h',
+)
+
+libgimpmath_headers = [
+ libgimpmath_headers_introspectable,
+ 'gimpmath.h',
+]
+
+libgimpmath_introspectable = [
+ libgimpmath_sources_introspectable,
+ libgimpmath_headers_introspectable,
+]
+
+
+libgimpmath = library('gimpmath-' + gimp_api_version,
+ libgimpmath_sources,
+ include_directories: rootInclude,
+ dependencies: [
+ glib, gobject, math,
+ ],
+ c_args: [ '-DG_LOG_DOMAIN="LibGimpMath"', '-DGIMP_MATH_COMPILATION', ],
+ link_with: [
+ libgimpbase,
+ ],
+ vs_module_defs: 'gimpmath.def',
+ install: true,
+ version: so_version,
+)
+
+install_headers(
+ libgimpmath_headers,
+ subdir: gimp_api_name / 'libgimpmath',
+)
diff --git a/libgimpmodule/meson.build b/libgimpmodule/meson.build
new file mode 100644
index 0000000000..b5289a68a4
--- /dev/null
+++ b/libgimpmodule/meson.build
@@ -0,0 +1,37 @@
+
+libgimpmodule_sources = files(
+ 'gimpmodule.c',
+ 'gimpmoduledb.c',
+)
+
+libgimpmodule_headers = files(
+ 'gimpmodule.h',
+ 'gimpmoduledb.h',
+ 'gimpmoduletypes.h',
+)
+
+libgimpmodule_introspectable = [
+ libgimpmodule_sources,
+ libgimpmodule_headers,
+]
+
+libgimpmodule = library('gimpmodule-' + gimp_api_version,
+ libgimpmodule_sources,
+ include_directories: rootInclude,
+ dependencies: [
+ gio, glib, gmodule,
+ ],
+ c_args: [ '-DG_LOG_DOMAIN="LibGimpModule"', '-DGIMP_MODULE_COMPILATION', ],
+ link_with: [
+ libgimpbase,
+ libgimpconfig,
+ ],
+ vs_module_defs: 'gimpmodule.def',
+ install: true,
+ version: so_version,
+)
+
+install_headers(
+ libgimpmodule_headers,
+ subdir: gimp_api_name / 'libgimpmodule',
+)
diff --git a/libgimpthumb/meson.build b/libgimpthumb/meson.build
new file mode 100644
index 0000000000..c106bb60a7
--- /dev/null
+++ b/libgimpthumb/meson.build
@@ -0,0 +1,95 @@
+
+gimpthumbenums = custom_target('gimpthumb-enums.c',
+ input : [ 'gimpthumb-enums.h', ],
+ output: [ 'gimpthumb-enums.c', ],
+ command: [
+ gimp_mkenums,
+ '--fhead','#include "config.h"\n'+
+ '#include <glib-object.h>\n'+
+ '#include "gimpthumb-enums.h"\n',
+ '--fprod','/* enumerations from "@filename@" */\n',
+ '--vhead','GType\n'+
+ '@enum_name@_get_type (void)\n'+
+ '{\n'+
+ ' static const G@Type@Value values[] =\n'+
+ ' {',
+ '--vprod',' { @VALUENAME@, @valuedesc@, "@valuenick@" },',
+ '--vtail',' { 0, NULL, NULL }\n'+
+ ' };\n'+
+ '\n'+
+ ' static GType type = 0;\n'+
+ '\n'+
+ ' if (G_UNLIKELY (! type))\n'+
+ ' type = g_@type@_register_static ("@EnumName@", values);\n'+
+ '\n'+
+ ' return type;\n'+
+ '}\n',
+ '@INPUT@',
+ ],
+ capture: true,
+)
+
+libgimpthumb_sources_introspectable = files(
+ 'gimpthumb-error.c',
+ 'gimpthumb-utils.c',
+ 'gimpthumbnail.c',
+)
+
+libgimpthumb_sources = [
+ libgimpthumb_sources_introspectable,
+ gimpthumbenums,
+]
+
+libgimpthumb_headers_introspectable = files(
+ 'gimpthumb-enums.h',
+ 'gimpthumb-error.h',
+ 'gimpthumb-types.h',
+ 'gimpthumb-utils.h',
+ 'gimpthumbnail.h',
+)
+
+libgimpthumb_headers = [
+ libgimpthumb_headers_introspectable,
+ 'gimpthumb.h',
+]
+
+libgimpthumb_introspectable = [
+ libgimpthumb_sources_introspectable,
+ libgimpthumb_headers_introspectable,
+]
+
+libgimpthumb = library('gimpthumb-'+ gimp_api_version,
+ libgimpthumb_sources,
+ include_directories: rootInclude,
+ dependencies: [
+ glib, gobject, gdk_pixbuf, gio,
+ ],
+ c_args: [ '-DG_LOG_DOMAIN="LibGimpThumb"', '-DGIMP_THUMB_COMPILATION', ],
+ link_with: [
+ libgimpbase,
+ ],
+ vs_module_defs: 'gimpthumb.def',
+ install: true,
+ version: so_version,
+)
+
+install_headers(
+ libgimpthumb_headers,
+ subdir: gimp_api_name / 'libgimpthumb',
+)
+
+
+# Test program, not installed
+gimp_thumbnail_list = executable('gimp-thumbnail-list',
+ 'gimp-thumbnail-list.c',
+ include_directories: rootInclude,
+ dependencies: [
+ gdk_pixbuf,
+ ],
+ c_args: '-DG_LOG_DOMAIN="LibGimpThumb"',
+ link_with: [
+ libgimpbase,
+ libgimpthumb,
+ ],
+ install: false,
+)
diff --git a/libgimpwidgets/meson.build b/libgimpwidgets/meson.build
new file mode 100644
index 0000000000..ca8ca647a4
--- /dev/null
+++ b/libgimpwidgets/meson.build
@@ -0,0 +1,206 @@
+
+gimpwidgetsenums = custom_target('gimpwidgetsenums.c',
+ input : [ 'gimpwidgetsenums.h', ],
+ output: [ 'gimpwidgetsenums.c', ],
+ command: [
+ gimp_mkenums,
+ '--fhead','#include "config.h"\n'
+ + '#include <gio/gio.h>\n'
+ + '#include "libgimpbase/gimpbase.h"\n'
+ + '#include "@INPUT@"\n'
+ + '#include "libgimp/libgimp-intl.h"\n',
+ gimp_mkenums_custom_target_commonargs,
+ ],
+ capture: true,
+)
+
+gimpwidgetsmarshal = gnome.genmarshal('gimpwidgetsmarshal',
+ prefix: '_gimp_widgets_marshal',
+ sources: 'gimpwidgetsmarshal.list',
+ install_header: false,
+)
+
+libgimpwidgets_sources_introspectable = files(
+ 'gimpbrowser.c',
+ 'gimpbusybox.c',
+ 'gimpbutton.c',
+ 'gimpcairo-utils.c',
+ 'gimpcellrenderercolor.c',
+ 'gimpcellrenderertoggle.c',
+ 'gimpchainbutton.c',
+ 'gimpcolorarea.c',
+ 'gimpcolorbutton.c',
+ 'gimpcolordisplay.c',
+ 'gimpcolordisplaystack.c',
+ 'gimpcolorhexentry.c',
+ 'gimpcolornotebook.c',
+ 'gimpcolorprofilechooserdialog.c',
+ 'gimpcolorprofilecombobox.c',
+ 'gimpcolorprofilestore.c',
+ 'gimpcolorprofileview.c',
+ 'gimpcolorselection.c',
+ 'gimpcolorselector.c',
+ 'gimpdialog.c',
+ 'gimpenumcombobox.c',
+ 'gimpenumlabel.c',
+ 'gimpenumstore.c',
+ 'gimpenumwidgets.c',
+ 'gimpfileentry.c',
+ 'gimpframe.c',
+ 'gimphelpui.c',
+ 'gimphintbox.c',
+ 'gimpicons.c',
+ 'gimpintcombobox.c',
+ 'gimpintstore.c',
+ 'gimpmemsizeentry.c',
+ 'gimpnumberpairentry.c',
+ 'gimpoffsetarea.c',
+ 'gimppageselector.c',
+ 'gimppatheditor.c',
+ 'gimppickbutton.c',
+ 'gimppreview.c',
+ 'gimppreviewarea.c',
+ 'gimppropwidgets.c',
+ 'gimpquerybox.c',
+ 'gimpruler.c',
+ 'gimpscaleentry.c',
+ 'gimpscrolledpreview.c',
+ 'gimpsizeentry.c',
+ 'gimpspinbutton.c',
+ 'gimpstringcombobox.c',
+ 'gimpunitcombobox.c',
+ 'gimpunitstore.c',
+ 'gimpwidgets-error.c',
+ 'gimpwidgets.c',
+ 'gimpwidgetsutils.c',
+ 'gimpzoommodel.c',
+)
+
+libgimpwidgets_sources = [
+ libgimpwidgets_sources_introspectable,
+ 'gimpcolorscale.c',
+ 'gimpcolorscales.c',
+ 'gimpcolorselect.c',
+ 'gimpcontroller.c',
+ 'gimpeevl.c',
+ 'gimpwidgets-private.c',
+
+ gimpwidgetsenums,
+ gimpwidgetsmarshal,
+ icons_imgs_sources,
+ cursors_sources,
+ pickers_sources,
+]
+
+libgimpwidgets_headers_introspectable = files(
+ 'gimpcolorselection.h',
+ 'gimpcolorselector.h',
+ 'gimpdialog.h',
+ 'gimpenumcombobox.h',
+ 'gimpenumlabel.h',
+ 'gimpenumstore.h',
+ 'gimpenumwidgets.h',
+ 'gimpfileentry.h',
+ 'gimpframe.h',
+ 'gimphelpui.h',
+ 'gimphintbox.h',
+ 'gimpicons.h',
+ 'gimpintcombobox.h',
+ 'gimpintstore.h',
+ 'gimpmemsizeentry.h',
+ 'gimpnumberpairentry.h',
+ 'gimpoffsetarea.h',
+ 'gimppageselector.h',
+ 'gimppatheditor.h',
+ 'gimppickbutton.h',
+ 'gimppreview.h',
+ 'gimppreviewarea.h',
+ 'gimppropwidgets.h',
+ 'gimpquerybox.h',
+ 'gimpruler.h',
+ 'gimpscaleentry.h',
+ 'gimpscrolledpreview.h',
+ 'gimpsizeentry.h',
+ 'gimpspinbutton.h',
+ 'gimpstringcombobox.h',
+ 'gimpunitcombobox.h',
+ 'gimpunitstore.h',
+ 'gimpwidgets-error.h',
+ 'gimpwidgets.h',
+ 'gimpwidgetsenums.h',
+ 'gimpwidgetstypes.h',
+ 'gimpwidgetsutils.h',
+ 'gimpzoommodel.h',
+)
+
+libgimpwidgets_headers = [
+ libgimpwidgets_headers_introspectable,
+ 'gimpcolorscale.h',
+ 'gimpcolorscales.h',
+ 'gimpcolorselect.h',
+ 'gimpcontroller.h',
+]
+
+libgimpwidgets_introspectable = [
+ libgimpwidgets_sources_introspectable,
+ libgimpwidgets_headers_introspectable,
+]
+
+if gtk3_macos.found()
+ libgimpwidgets_sources += [
+ 'gimppickbutton-quartz.c',
+ ]
+else
+ libgimpwidgets_sources += [
+ 'gimppickbutton-default.c',
+ 'gimppickbutton-kwin.c',
+ ]
+endif
+
+libgimpwidgets = library('gimpwidgets-'+ gimp_api_version,
+ libgimpwidgets_sources,
+ include_directories: rootInclude,
+ dependencies: [
+ gegl, gtk3, lcms, math
+ ],
+ c_args: [ '-DG_LOG_DOMAIN="LibGimpWidgets"', '-DGIMP_WIDGETS_COMPILATION', ],
+ link_with: [
+ libgimpbase,
+ libgimpcolor,
+ libgimpconfig,
+ ],
+ vs_module_defs: 'gimpwidgets.def',
+ install: true,
+ version: so_version,
+)
+
+install_headers(
+ libgimpwidgets_headers,
+ subdir: gimp_api_name / 'libgimpwidgets',
+)
+
+
+# Test programs, not installed
+
+test_preview_area = executable('test-preview-area',
+ 'test-preview-area.c',
+ include_directories: rootInclude,
+ dependencies: [
+ gtk3,
+ ],
+ c_args: '-DG_LOG_DOMAIN="LibGimpWidgets"',
+ link_with: [ libgimpwidgets, ],
+ install: false,
+ build_by_default: false,
+)
+
+test_eevl = executable('test-eevl',
+ 'test-eevl.c',
+ include_directories: rootInclude,
+ dependencies: [
+ glib, gtk3,
+ ],
+ c_args: '-DG_LOG_DOMAIN="LibGimpWidgets"',
+ link_with: [ libgimpwidgets, ],
+ install: false,
+)
diff --git a/m4macros/meson.build b/m4macros/meson.build
new file mode 100644
index 0000000000..3f1455cbca
--- /dev/null
+++ b/m4macros/meson.build
@@ -0,0 +1,5 @@
+install_data([
+ gimp_api_name + '.m4',
+ ],
+ install_dir: get_option('datadir') / 'aclocal',
+)
diff --git a/menus/meson.build b/menus/meson.build
new file mode 100644
index 0000000000..865a747714
--- /dev/null
+++ b/menus/meson.build
@@ -0,0 +1,69 @@
+menus_dir = prefix / gimpdatadir / 'menus'
+
+menus_files = [
+ 'brush-editor-menu.xml',
+ 'brushes-menu.xml',
+ 'buffers-menu.xml',
+ 'channels-menu.xml',
+ 'colormap-menu.xml',
+ 'cursor-info-menu.xml',
+ 'dashboard-menu.xml',
+ 'documents-menu.xml',
+ 'dynamics-editor-menu.xml',
+ 'dynamics-menu.xml',
+ 'error-console-menu.xml',
+ 'fonts-menu.xml',
+ 'gradient-editor-menu.xml',
+ 'gradients-menu.xml',
+ 'images-menu.xml',
+ 'layers-menu.xml',
+ 'mypaint-brushes-menu.xml',
+ 'palette-editor-menu.xml',
+ 'palettes-menu.xml',
+ 'patterns-menu.xml',
+ 'quick-mask-menu.xml',
+ 'sample-points-menu.xml',
+ 'selection-menu.xml',
+ 'templates-menu.xml',
+ 'text-editor-toolbar.xml',
+ 'text-tool-menu.xml',
+ 'tool-options-menu.xml',
+ 'tool-preset-editor-menu.xml',
+ 'tool-presets-menu.xml',
+ 'undo-menu.xml',
+ 'vectors-menu.xml',
+]
+
+install_data(menus_files,
+ install_dir: menus_dir,
+)
+
+unstable_menus_args = stable ? [] : [ '--stringparam', 'unstable-menus', 'yes' ]
+
+foreach menu_filegen : [ 'dockable-menu.xml', 'image-menu.xml', ]
+ menus_files += custom_target(menu_filegen,
+ input : [ menu_filegen +'.in', 'menus.xsl', ],
+ output: [ menu_filegen ],
+ command: [
+ xsltproc,
+ '--xinclude',
+ unstable_menus_args,
+ '--output', '@OUTPUT@',
+ '@INPUT1@',
+ '@INPUT0@',
+ ],
+ install: true,
+ install_dir: menus_dir,
+ )
+endforeach
+
+if xmllint.found()
+ run_target('validate_menus',
+ command: [
+ xmllint,
+ '--noout',
+ '--path', meson.current_source_dir(),
+ '@INPUT@', menus_files,
+ ],
+ )
+endif
diff --git a/meson.build b/meson.build
new file mode 100644
index 0000000000..eca6bbc3bd
--- /dev/null
+++ b/meson.build
@@ -0,0 +1,1578 @@
+project('gimp',
+ 'c', 'cpp',
+ version: '2.99.1',
+ meson_version: '>=0.50.0',
+ default_options: [
+ 'cpp_std=gnu++14',
+ ],
+)
+
+project_url = 'https://gitlab.gnome.org/GNOME/gimp'
+project_url_issues = project_url + '/issues/new'
+
+conf = configuration_data()
+
+################################################################################
+# Project info
+
+prettyname = 'GIMP'
+full_name = 'GNU Image Manipulation Program'
+
+# General version
+gimp_version = meson.project_version()
+
+package_string= prettyname + ' ' + gimp_version
+
+gimp_app_version_arr = gimp_version.split('.')
+gimp_app_version_major = gimp_app_version_arr[0].to_int()
+gimp_app_version_minor = gimp_app_version_arr[1].to_int()
+gimp_app_version_micro = gimp_app_version_arr[2].to_int()
+
+# Override for Release-candidates
+gimp_app_version = '@0@.@1@'.format(
+ gimp_app_version_major,
+ gimp_app_version_minor
+)
+
+
+# API & pkg-config version
+api_version_major = gimp_app_version_major
+api_version_minor = gimp_app_version_minor
+
+if api_version_minor == 99
+ api_version_major += 1
+ api_version_minor = 0
+endif
+
+gimp_api_version = '@0@.@1@'.format(api_version_major, api_version_minor)
+gimp_api_name = 'gimp-' + gimp_api_version
+
+
+
+gimp_command = 'gimp-' + gimp_app_version
+
+gettext_package= 'gimp@0@@1@'.format(api_version_major, api_version_minor)
+conf.set_quoted('GETTEXT_PACKAGE', gettext_package)
+
+conf.set_quoted('GIMP_VERSION', gimp_version)
+
+stable = (gimp_app_version_minor % 2 == 0)
+conf.set10('GIMP_UNSTABLE', not stable)
+
+versionconfig = configuration_data()
+versionconfig.set('GIMP_FULL_NAME', full_name)
+versionconfig.set('GIMP_MAJOR_VERSION', gimp_app_version_major)
+versionconfig.set('GIMP_MINOR_VERSION', gimp_app_version_minor)
+versionconfig.set('GIMP_MICRO_VERSION', gimp_app_version_micro)
+versionconfig.set('GIMP_VERSION', gimp_version)
+versionconfig.set('GIMP_API_VERSION', gimp_api_version)
+
+
+# Libtool versionning
+gimp_interface_age = 0
+lt_current = 0
+lt_revision = gimp_app_version_micro
+lt_age = 100*api_version_minor + 0
+so_version = '@0@.@1@.@2@'.format(lt_current, lt_age, lt_revision)
+
+
+################################################################################
+# Get configuration and Meson modules
+
+pkgconfig = import('pkgconfig')
+i18n = import('i18n')
+gnome = import('gnome')
+pythonmod = import('python')
+
+cc = meson.get_compiler('c')
+cxx = meson.get_compiler('cpp')
+prefix = get_option('prefix')
+buildtype = get_option('buildtype')
+
+compiler_args = []
+linker_args = []
+
+################################################################################
+# Host system detection
+
+cpu = host_machine.cpu().to_lower()
+
+arch_x86_64 = (cpu == 'x86_64')
+arch_x86 = (cpu.startswith('i') and cpu.endswith('86')) or arch_x86_64
+arch_ppc64 = (cpu == 'ppc64' or cpu == 'powerpc64')
+arch_ppc = (cpu == 'ppc' or cpu == 'powerpc') or arch_ppc64
+
+if not (arch_x86 or arch_ppc)
+ error('Unknown host architecture')
+endif
+
+conf.set10('ARCH_X86', arch_x86)
+conf.set10('ARCH_X86_64', arch_x86_64)
+conf.set10('ARCH_PPC', arch_ppc)
+conf.set10('ARCH_PPC64', arch_ppc64)
+
+
+host_os = host_machine.system().to_lower()
+message('Host os: ' + host_os)
+
+platform_linux = (
+ host_os.contains('linux')
+)
+
+platform_windows = (
+ host_os.contains('mingw') or
+ host_os.contains('cygwin') or
+ host_os.contains('windows')
+)
+
+platform_osx = (
+ host_os.contains('machten') or
+ host_os.contains('rhapsody') or
+ host_os.contains('darwin')
+)
+
+conf.set('PLATFORM_OSX', platform_osx)
+
+if platform_windows
+ windows = import('windows')
+ # AC_CHECK_PROG(ms_librarian, lib.exe, yes, no)
+ # AM_CONDITIONAL(MS_LIB_AVAILABLE, test "x$ms_librarian" = xyes)
+ # compiler_args += '-Wl,--large-address-aware'
+endif
+
+
+if cc.get_id() == 'gcc' and cc.version() == '7.2.0'
+ warning('''
+ GCC 7.2.0 has a serious bug affecting GEGL/GIMP. We advise
+ against using this version of the compiler (previous and
+ further versions are fine).
+ See https://bugzilla.gnome.org/show_bug.cgi?id=787222
+ ''')
+endif
+
+
+
+################################################################################
+# Compiler CPU extensions for optimizations
+
+if (get_option('buildtype') == 'release' or
+ get_option('buildtype') == 'debugoptimized')
+
+ # Check for compiler CPU extensions
+ existing_cpu_exts = [
+ '-mfpmath=sse',
+ '-mmmx',
+ '-msse',
+ '-msse2',
+ '-msse4.1',
+ ]
+ supported_cpu_exts = cc.get_supported_arguments(existing_cpu_exts)
+
+ compiler_args += supported_cpu_exts
+
+ conf.set ('USE_MMX', '-mmmx' in supported_cpu_exts)
+ conf.set ('USE_SSE', '-msse' in supported_cpu_exts)
+ conf.set10('COMPILE_SSE2_INTRINISICS', '-msse2' in supported_cpu_exts)
+ conf.set10('COMPILE_SSE4_1_INTRINISICS','-msse4.1' in supported_cpu_exts)
+
+
+ have_altivec = false
+ have_altivec_sysctl = false
+ if arch_ppc
+ altivec_args = cc.get_supported_arguments([
+ '-faltivec',
+ '-maltivec',
+ '-mabi=altivec',
+ ])
+
+ if altivec_args != []
+ compiler_args += altivec_args
+ linker_args += altivec_args
+
+ if host_os.contains('darwin')
+ have_altivec = true
+ have_altivec_sysctl = true
+ elif cc.compiles('''
+ int main() { asm ("vand %v0, %v0, %v0"); return 0; }
+ ''')
+ have_altivec = true
+ endif
+ endif
+ endif
+ conf.set('HAVE_ALTIVEC_SYSCTL', have_altivec_sysctl)
+ conf.set('USE_ALTIVEC', have_altivec)
+
+endif
+
+
+################################################################################
+# CFlags
+
+
+if get_option('profiling') and cc.get_id() == 'gcc'
+ compiler_args += '-pg'
+ linker_args += '-pg'
+endif
+
+if get_option('ansi')
+ compiler_args += [ '-ansi', '-pedantic']
+endif
+
+warning_cflags_common = [
+ '-fdiagnostics-show-option',
+ '-fno-common',
+
+ '-Wformat-security',
+ '-Winit-self',
+ '-Wlogical-op',
+ '-Wmissing-declarations',
+ '-Wmissing-format-attribute',
+ '-Wpointer-arith',
+ '-Wreturn-type',
+ '-Wtype-limits',
+
+ # You can uncomment this to debug with less warning outputs
+ '-Wno-deprecated-declarations',
+
+ '-Werror=implicit-function-declaration',
+]
+warning_cflags_c = [
+ '-Wdeclaration-after-statement',
+ '-Wold-style-definition',
+ '-Wno-strict-prototypes',
+]
+warning_cflags_cpp = [
+]
+
+compiler_args += cc.get_supported_arguments(warning_cflags_common)
+add_project_arguments(cc .get_supported_arguments(warning_cflags_c), language: 'c')
+add_project_arguments(cxx.get_supported_arguments(warning_cflags_cpp), language: 'cpp')
+
+
+# Ensure MSVC-compatible struct packing convention is used when
+# compiling for Win32 with gcc.
+if platform_windows and cc.get_id() == 'gcc'
+ msvc_compat_args = cc.first_supported_argument([
+ '-fnative-struct',
+ '-mms-bitfields',
+ ])
+ if msvc_compat_args == []
+ error('''
+ GCC does not support '-fnative-struct' nor '-mms-bitfields'.
+ Build will be incompatible with GTK+ DLLs.
+ ''')
+ endif
+ compiler_args += msvc_compat_args
+endif
+
+
+conf.set('HAVE__NL_MEASUREMENT_MEASUREMENT',
+ cc.compiles('''
+ #include<langinfo.h>
+ int main() {
+ char c = *((unsigned char *) nl_langinfo(_NL_MEASUREMENT_MEASUREMENT));
+ }
+ ''')
+)
+
+
+################################################################################
+# Dependencies
+no_dep = dependency('', required: false)
+
+################################################################################
+# Mandatory Dependencies
+
+relocatable_bundle = get_option('relocatable-bundle')
+conf.set('ENABLE_RELOCATABLE_RESOURCES', relocatable_bundle)
+
+
+math = cc.find_library('m')
+dl = platform_windows ? no_dep : cc.find_library('dl')
+rpc = platform_windows ? cc.find_library('rpcrt4') : no_dep
+dbghelp = platform_windows ? cc.find_library('dbghelp') : no_dep
+winsock = platform_windows ? cc.find_library('ws2_32') : no_dep
+
+atk = dependency('atk', version: '>=2.4.0')
+
+babl = dependency('babl', version: '>=0.1.72')
+
+cairo = dependency('cairo', version: '>=1.12.2')
+
+dbus_glib = dependency('dbus-glib-1')
+
+# fontconfig_name = platform_windows ? 'fontconfig_win32' : 'fontconfig'
+fontconfig_name = 'fontconfig'
+fontconfig = dependency(fontconfig_name, version: '>=2.12.4')
+
+freetype2 = dependency('freetype2', version: '>=2.1.7')
+
+gdk_pixbuf = dependency('gdk-pixbuf-2.0', version: '>=2.30.8')
+
+gegl = dependency('gegl-0.4', version: '>=0.4.17')
+
+gexiv2 = dependency('gexiv2', version: '>=0.10.6')
+
+gio = dependency('gio-2.0')
+gio_specific_name = platform_windows ? 'gio-windows-2.0' : 'gio-unix-2.0'
+gio_specific = dependency(gio_specific_name)
+
+glib_version = platform_windows ? '>=2.56.2' : '>=2.54.2'
+glib = dependency('glib-2.0', version: glib_version)
+conf.set('G_DISABLE_DEPRECATED', glib.version().version_compare('>=2.57'))
+
+gobject = dependency('gobject-2.0', version: '>=2.54.2')
+gmodule = dependency('gmodule-no-export-2.0')
+
+gtk3 = dependency('gtk+-3.0', version: '>=3.16.10')
+
+harfbuzz = dependency('harfbuzz', version: '>=0.9.19')
+lcms = dependency('lcms2', version: '>=2.8')
+
+libmypaint = dependency('libmypaint', version: '>=1.3.0')
+
+libmypaint_brushes= relocatable_bundle ? no_dep : \
+ dependency('mypaint-brushes-1.0', version: '>=1.3.0', required: false)
+
+libmypaint_brushes_dir = libmypaint_brushes.get_pkgconfig_variable(
+ 'brushesdir',
+ default: '${gimp_installation_dir}'/'share'/'mypaint-data'/'1.0'/'brushes',
+)
+
+conf.set_quoted('MYPAINT_BRUSHES_DIR', libmypaint_brushes_dir)
+
+pangocairo = dependency('pangocairo', version: '>=1.29.4')
+pangoft2 = dependency('pangoft2', version: '>=1.29.4')
+rsvg = dependency('librsvg-2.0', version: '>=2.40.6')
+
+conf.set('PANGO_DISABLE_DEPRECATED',pangocairo.version().version_compare('<1.43'))
+
+
+################################################################################
+# Check for GLib Networking
+
+glib_networking_works_run = cc.run(
+ '''#include <gio/gio.h>
+ int main() {
+ return !g_tls_backend_supports_tls (g_tls_backend_get_default ());
+ }''',
+ dependencies: gio,
+)
+glib_networking_works =(glib_networking_works_run.compiled()
+ and glib_networking_works_run.returncode() == 0)
+
+if not glib_networking_works
+ if meson.is_cross_build()
+ warning('''
+ Test for glib-networking cannot be performed while cross-compiling.
+ Make sure glib-networking is installed, otherwise GIMP will not be able
+ to display the remote help pages through the help browser, nor will it
+ be able to open remote HTTPS (or other protocol using SSL/TLS) files.
+ HTTPS is becoming the expected standard and should not be considered
+ optional anymore.
+ ''')
+ else
+ error('Test for glib-networking failed. This is required.')
+ endif
+endif
+
+################################################################################
+# Check if Pango is built with a recent fontconfig
+
+pango_check_run = cc.run(
+ '''#include <fontconfig/fontconfig.h>
+ int main() {
+ FcObjectSet *os; os = FcObjectSetBuild (FC_FAMILY, FC_WIDTH);
+ }''',
+ dependencies: fontconfig,
+)
+pango_check =(pango_check_run.compiled()
+ and pango_check_run.returncode() == 0)
+
+if not pango_check
+ warning('\n *** '.join([
+ 'You have a fontconfig >= fontconfig_required_version installed on your',
+ 'system, but your Pango library is using an older version. This old version',
+ 'is probably in /usr/X11R6. Look at the above output, and note that the',
+ 'result for FONTCONFIG_CFLAGS is not in the result for PANGOCAIRO_CFLAGS,',
+ 'and that there is likely an extra -I line, other than the ones for GLIB,',
+ 'Freetype, and Pango itself. That\'s where your old fontconfig files are.',
+ 'Rebuild pango, and make sure that it uses the newer fontconfig.',
+ 'The easiest way be sure of this is to simply get rid of the old',
+ 'fontconfig. When you rebuild pango, make sure the result for',
+ 'FONTCONFIG_CFLAGS is the same as the result here.',
+ ]))
+endif
+
+################################################################################
+# Optional Dependencies
+
+libsocket = cc.find_library('socket', required: false)
+conf.set('HAVE_LIBSOCKET', libsocket.found())
+
+################################################################################
+# Check for extension support
+
+appstream_glib = dependency('appstream-glib', version: '>=0.7.7')
+
+libarchive = dependency('libarchive')
+
+
+################################################################################
+# Check for debug console (Win32)
+
+if platform_windows
+ conf.set('ENABLE_WIN32_DEBUG_CONSOLE', get_option('win32-debug-console'))
+endif
+
+################################################################################
+# Check for 32-bit DLLs (Win32 64-bit)
+
+if platform_windows and arch_x86_64
+ conf.set_quoted('WIN32_32BIT_DLL_FOLDER', get_option('win32-32bits-dll-folder'))
+endif
+
+################################################################################
+# Check for detailed backtraces support
+
+## Check for libbacktrace
+
+libbacktrace = ( get_option('libbacktrace')
+ ? cc.find_library('backtrace', has_headers: 'backtrace.h', required: false)
+ : no_dep
+)
+conf.set('HAVE_LIBBACKTRACE', libbacktrace.found())
+
+## Check for libunwind
+libunwind = ( get_option('libunwind')
+ ? dependency('libunwind', version: '>=1.1.0', required: false)
+ : no_dep
+)
+conf.set('HAVE_LIBUNWIND', libunwind.found())
+
+
+## Check for Dr. Mingw
+drmingw = no_dep
+if platform_windows
+ exchndl = cc.find_library('exchndl')
+ exchndl_fn = cc.has_function('ExcHndlSetLogFileNameA', dependencies: exchndl)
+ if exchndl.found() and exchndl_fn
+ drmingw = declare_dependency(dependencies: exchndl)
+ endif
+endif
+conf.set('HAVE_EXCHNDL', drmingw.found())
+
+
+detailed_backtraces = (
+ libbacktrace.found() or
+ libunwind.found() or
+ drmingw.found()
+)
+
+################################################################################
+# Check for x11 support
+
+x11_target = gtk3.get_pkgconfig_variable('targets').contains('x11')
+
+x11 = x11_target ? dependency('x11') : no_dep
+xmu = x11_target ? dependency('xmu') : no_dep
+xext = x11_target ? dependency('xext') : no_dep
+xfixes= x11_target ? dependency('xfixes') : no_dep
+x11_deps = [ x11, xmu, xext, xfixes ]
+conf.set('HAVE_XFIXES', xfixes.found())
+
+if x11_target
+ foreach header : [ 'X11/Xmu/WinUtil.h', 'X11/extensions/shape.h', ]
+ if not cc.has_header(header, dependencies: [ xext, xmu ])
+ error('x11 install does not provide required header ' + header)
+ endif
+ endforeach
+
+ foreach function : [ 'XmuClientWindow', 'XShapeGetRectangles', ]
+ if not cc.has_function(function, dependencies: [ xext, xmu ])
+ error('x11 install does not provide required function ' + function)
+ endif
+ endforeach
+endif
+conf.set('HAVE_X11_EXTENSIONS_SHAPE_H', x11_target and cc.has_header('X11/extensions/shape.h'))
+conf.set('HAVE_X11_XMU_WINUTIL_H', x11_target and cc.has_header('X11/Xmu/WinUtil.h'))
+
+
+# Features requiring x11
+
+have_doc_shooter= x11_target
+
+if get_option('print').disabled()
+ have_print = false
+elif get_option('print').enabled() and not x11_target
+ error('Printing requires x libs')
+else
+ have_print = x11_target
+endif
+
+if get_option('screenshot').disabled()
+ have_screenshot = false
+elif get_option('screenshot').enabled() and not x11_target
+ error('Printing requires x libs')
+else
+ have_screenshot = x11_target
+endif
+
+################################################################################
+# Plugins (optional dependencies)
+
+# The list of MIME types that are supported by plug-ins
+MIMEtypes = [
+ 'image/bmp',
+ 'image/g3fax',
+ 'image/gif',
+ 'image/svg+xml',
+ 'image/x-compressed-xcf',
+ 'image/x-fits',
+ 'image/x-gimp-gbr',
+ 'image/x-gimp-gih',
+ 'image/x-gimp-pat',
+ 'image/x-pcx',
+ 'image/x-portable-anymap',
+ 'image/x-portable-bitmap',
+ 'image/x-portable-graymap',
+ 'image/x-portable-pixmap',
+ 'image/x-psd',
+ 'image/x-sgi',
+ 'image/x-tga',
+ 'image/x-xbitmap',
+ 'image/x-xcf',
+ 'image/x-xwindowdump',
+]
+
+
+
+libtiff = dependency('libtiff-4', required: get_option('tiff'))
+if libtiff.found()
+ MIMEtypes += 'image/tiff'
+endif
+
+
+libjpeg = dependency('libjpeg', required: get_option('jpeg'))
+conf.set('HAVE_LIBJPEG', libjpeg.found())
+if libjpeg.found()
+ MIMEtypes += 'image/jpeg'
+endif
+
+
+zlib = dependency('zlib')
+MIMEtypes += 'image/x-psp'
+
+bz2 = cc.find_library('bz2')
+
+liblzma = dependency('liblzma', version: '>=5.0.0')
+
+
+ghostscript = cc.find_library('gs', required: get_option('ghostscript'))
+if ghostscript.found()
+ MIMEtypes += 'application/postscript'
+else
+ ghostscript = disabler()
+endif
+
+
+libpng = dependency('libpng', version: '>=1.6.25', required: get_option('png'))
+if libpng.found()
+ MIMEtypes += [ 'image/png', 'image/x-icon']
+endif
+
+
+libmng = cc.find_library('mng', required: get_option('mng'))
+
+libaa = cc.find_library('aa', required: get_option('aa'))
+
+libxpm = dependency('xpm', required: get_option('xpm'))
+if libxpm.found()
+ MIMEtypes += 'image/x-xpixmap'
+endif
+
+
+openexr = dependency('OpenEXR', version: '>=1.6.1', required: get_option('openexr'))
+if openexr.found()
+ MIMEtypes += 'image/x-exr'
+endif
+
+webp_libs = [
+ dependency('libwebp', version: '>=0.6.0', required: get_option('webp')),
+ dependency('libwebpmux', version: '>=0.6.0', required: get_option('webp')),
+ dependency('libwebpdemux',version: '>=0.6.0', required: get_option('webp')),
+]
+webp_found = true
+foreach lib : webp_libs
+ webp_found = webp_found and lib.found()
+endforeach
+
+if webp_found
+ MIMEtypes += 'image/x-webp'
+endif
+
+
+libheif = dependency('libheif', version: '>=1.3.2', required: get_option('heif'))
+conf.set('HAVE_LIBHEIF_4_1_0', libheif.version().version_compare('>=1.4.0'))
+
+if libheif.found()
+ MIMEtypes += [
+ 'image/heif',
+ 'image/heic',
+ ]
+endif
+
+webkit = dependency('webkit2gtk-4.0', version: '>=2.20.3', required: get_option('webkit'))
+conf.set('HAVE_WEBKIT', webkit.found())
+
+
+if get_option('poppler')
+ poppler = [
+ dependency('poppler-glib', version: '>=0.69.0'),
+ dependency('poppler-data', version: '>=0.4.9'),
+ ]
+else
+ poppler = no_dep
+endif
+
+
+cairopdf = dependency('cairo-pdf', version: '>=1.12.2', required: get_option('cairo-pdf'))
+
+# PDF import support is a granted feature.
+MIMEtypes += 'application/pdf'
+
+wmf = dependency('libwmf', version: '>=0.2.8', required: get_option('wmf'))
+if wmf.found()
+ MIMEtypes += 'image/x-wmf'
+endif
+
+
+openjpeg = dependency('libopenjp2', version: '>=2.1.0', required: get_option('jpeg2000'))
+if openjpeg.found()
+ MIMEtypes += [ 'image/jp2', 'image/jpeg2000', 'image/jpx', ]
+endif
+
+
+xmc = dependency('xcursor', required: get_option('xcursor'))
+if xmc.found()
+ MIMEtypes += 'image/x-xcursor'
+endif
+
+
+alsa = dependency('alsa', version: '>=1.0.0', required: get_option('alsa'))
+conf.set('HAVE_ALSA', alsa.found())
+
+
+if get_option('linux-input').disabled()
+ have_linuxinput = false
+elif get_option('linux-input').enabled() and not cc.has_header('linux/input.h')
+ error('linux/input.h header not found.')
+else
+ have_linuxinput = x11_target
+endif
+
+# DirectX DirectInput
+directx = no_dep
+directx_sdk_path = get_option('directx-sdk-dir')
+if directx_sdk_path != '' and platform_windows
+ if directx_sdk_path.contains(' ') or directx_sdk_path.contains('\\')
+ error('\n'.join([
+ 'The DirectX SDK path should be given :',
+ '* without spaces (use MSys mounts)',
+ '* with plain (forward) slashes only,'
+ ]))
+ endif
+
+ directx = declare_dependency(
+ link_with: cc.find_library('dxguid',
+ dirs: directx_sdk_path / 'Lib' / 'x86'),
+ include_directories: directx_sdk_path / 'Include',
+ )
+endif
+conf.set('HAVE_DX_DINPUT', directx.found())
+
+gudev = dependency('gudev-1.0', version: '>=167', required: get_option('gudev'))
+conf.set('HAVE_LIBGUDEV', gudev.found())
+
+
+################################################################################
+# Email sending
+email_message = false
+
+sendmail_choice = get_option('with-sendmail')
+if not [ '', 'false', 'no', ].contains(sendmail_choice)
+ if [ 'true', 'yes' ].contains(sendmail_choice)
+ sendmail_path = 'sendmail'
+ else
+ sendmail_path = sendmail_choice
+ endif
+
+ sendmail = find_program(sendmail_path, required: false)
+ if sendmail.found()
+ sendmail_path = sendmail.path()
+ else
+ warning(
+ 'Sendmail specified but not found. It should be installed at runtime!'
+ )
+ endif
+
+ email_message = '@0@ (@1@)'.format(true, sendmail_path)
+ conf.set_quoted('SENDMAIL', sendmail_path)
+else
+ xdg_email_path = 'xdg-email'
+ xdg_email = find_program(xdg_email_path, required: false)
+ if xdg_email.found()
+ xdg_email_path = xdg_email.path()
+ else
+ warning(
+ 'Xdg-email not found, but required at runtime for email sending.'
+ )
+ endif
+
+ email_message = '@0@ (@1@)'.format(true, xdg_email_path)
+endif
+
+
+################################################################################
+# ISO codes
+
+isocodes = dependency('iso-codes')
+isocodes_prefix = isocodes.get_pkgconfig_variable('prefix')
+isocodes_location = isocodes_prefix / get_option('datadir') / 'xml' / 'iso-codes'
+isocodes_localedir= isocodes_prefix / get_option('datadir') / 'locale'
+conf.set('HAVE_ISO_CODES', isocodes.found())
+
+
+################################################################################
+# Program tools
+
+perl = find_program('perl5', 'perl', 'perl5.005', 'perl5.004', 'perl')
+
+## Python
+
+# By default, we want packagers to install Python plug-ins to get the
+# optimum experience. -Dpython=true will check for a Python 3
+# interpreter and PyGObject, and warns without.
+# It is up to the packager to ensure they are available at run time.
+# This can be useful in particular when cross-compiling since anyway
+# the interpreter is not useful at build time.
+
+python3_required_version = '>=3.6.0'
+
+if get_option('python') == 'never'
+ warning('''
+ You disabled the installation of core Python plug-ins. This is discouraged
+ as it won't provide the full GIMP experience.
+ Note that you may install the Python plug-ins even if you have no Python
+ interpreter at build-time by passing the configure option -Dpython=always.
+ Just make sure that a Python @0@ interpreter is available at run-time.
+ '''.format(python3_required_version))
+
+ have_python = false
+
+else
+ always_install = get_option('python') == 'always'
+
+ python = pythonmod.find_installation('python3', required: false)
+
+ python_found = (
+ python.found() and
+ python.language_version().version_compare(python3_required_version)
+ )
+ if python_found
+ pygobject_found = run_command(
+ python, '-c',
+ '\n'.join([
+ '''import sys, gi''',
+ '''version = '@0@' '''.format('3.0'),
+ '''sys.exit(gi.check_version(version))''',
+ ]),
+ ).returncode() == 0
+ python_found = python_found and pygobject_found
+ endif
+
+ if (not python_found) and (not always_install)
+ error('''
+ Python @0@ or PyGObject was not found.
+ Note that you may install the Python plug-ins even if you have no Python
+ interpreter at build-time by passing the configure option -Dpython=always.
+ Just make sure that a Python @0@ interpreter is available at run-time.
+ '''.format(python3_required_version))
+ endif
+
+ if (not python_found) and (always_install)
+ warning('''
+ Python @0@ or PyGObject was not found.
+ Python plug-ins will be installed anyway but you should make sure that
+ a compatible Python interpreter is available at installation, otherwise
+ installed plug-ins won't be usable.
+ '''.format(python3_required_version))
+ endif
+
+ have_python = python_found or always_install
+endif
+
+## Javascript
+
+if get_option('javascript') == 'never'
+ warning('''
+ You disabled the installation of core Javascript plug-ins. This is
+ discouraged as it won't provide the full GIMP experience.
+ Note that you may install the Javascript plug-ins even if you have no GJS
+ interpreter at build-time by passing the configure option -Djavascript=always.
+ Just make sure that the GJS interpreter is available at run-time.
+ ''')
+ have_javascript = false
+
+else
+ always_install = get_option('javascript') == 'always'
+
+ gjs = find_program('gjs', required: false)
+
+ if (not gjs.found()) and (not always_install)
+ error('''
+ GJS was not found.
+ Note that you may install the Javascript plug-ins even if you have no GJS
+ interpreter at build-time by passing the configure option -Djavascript=always.
+ Just make sure that the GJS interpreter is available at run-time.
+ ''')
+ endif
+
+ if (not gjs.found()) and (always_install)
+ warning('''
+ GJS was not found.
+ JavaScript plug-ins will be installed anyway but you should make sure that
+ the JavaScript interpreter GJS is available at installation, otherwise
+ installed plug-ins won't be usable.
+ ''')
+ endif
+
+ have_javascript = gjs.found() or always_install
+endif
+
+## Lua
+
+if get_option('lua') == 'never'
+ warning('''
+ You disabled the installation of core Lua plug-ins. This is discouraged
+ as it won't provide the full GIMP experience.
+ Note that you may install the Lua plug-ins even if you have no Lua LGI
+ interpreter at build-time by passing the configure option -Dlua=always.
+ Just make sure that the Lua LGI interpreter is available at run-time.
+ ''')
+ have_lua = false
+
+else
+ always_install = get_option('lua') == 'always'
+
+ lua = find_program('luajit', required: false)
+
+ if (not lua.found()) and (not always_install)
+ error('''
+ Luajit was not found.
+ Note that you may install the Lua plug-ins even if you have no Lua LGI
+ interpreter at build-time by passing the configure option -Dlua=always.
+ Just make sure that the Lua LGI interpreter is available at run-time.
+ ''')
+ endif
+
+ if (not lua.found()) and always_install
+ warning('''
+ Luajit was not found.
+ Lua plug-ins will be installed anyway but you should make sure that
+ luajit and LGI are available at installation, otherwise
+ installed plug-ins won't be usable.
+ ''')
+ endif
+
+ have_lua = lua.found() or always_install
+endif
+
+
+# Check for GTK Mac Integration
+if platform_osx and (gtk3.get_pkgconfig_variable('targets').contains('xquartz'))
+ gtk3_macos = dependency('gtk-mac-integration', version: '>=2.0.0')
+else
+ gtk3_macos = no_dep
+endif
+
+# Check for XML tools
+xmllint = find_program('xmllint', required: false)
+xsltproc = find_program('xsltproc')
+intltool_merge = find_program('intltool-merge')
+desktop_validate = find_program('desktop-file-validate', required: false)
+
+appstream_util = find_program('appstream-util', required: get_option('appdata-test'))
+
+# Check for doc generation tools
+have_gtk_doc = get_option('gtk-doc')
+
+# Check for vector icons
+have_vector_icons = get_option('vec-icons')
+if have_vector_icons
+ # shared-mime-info is needed to correctly detect SVG files
+ # (except on Windows, apparently).
+ if platform_windows
+ warning('''
+ You enabled vector icons on Win32. Make sure to run:
+ $ gdk-pixbuf-query-loaders.exe --update-cache
+ on the target machine (this command generates loaders.cache)
+ so that GdkPixbuf knows where to find the SVG loader.
+ ''')
+ else
+ shared_mime_info = dependency('shared-mime-info')
+ endif
+endif
+
+xvfb_run = find_program('xvfb-run', required: get_option('xvfb-run'))
+conf.set('HAVE_XVFB_RUN', xvfb_run.found())
+
+# Set bug report URL
+
+# Allowing third-party packagers to set their own bugtracker URL, in
+# order to filter first packaging bugs from core bugs.
+bug_report_url = get_option('bug-report-url')
+
+if bug_report_url == ''
+ message('''
+ NOTE: if you plan on packaging GIMP for distribution, it is recommended
+ to override the bug report URL with option:
+ -Dbug-report-url=https://example.com/
+ so that you can filter packaging bugs from core bugs before reporting upstream.
+ ''')
+
+ bug_report_url = project_url_issues
+endif
+conf.set_quoted('PACKAGE_BUGREPORT', project_url_issues)
+conf.set_quoted('BUG_REPORT_URL', bug_report_url)
+
+# Default ICC directory #
+
+# This is necessary because some Unix systems may have a different
+# standard path for color profiles. And in particular, sandbox builds
+# might mount the host system at a different root. This is for
+# instance the case of flatpak which mount the host root at /run/host/.
+
+# if not (platform_osx or platform_windows)
+
+icc_directory = get_option('icc-directory')
+if icc_directory == ''
+ icc_directory = '/usr/share/color/icc'
+endif
+conf.set_quoted('COLOR_PROFILE_DIRECTORY', icc_directory)
+
+# endif
+
+enable_default_bin = get_option('enable-default-bin')
+enable_console_bin = get_option('enable-console-bin')
+
+
+# Possibly change default gimpdir from $XDG_CONFIG_HOME/GIMP/gimp_user_version
+gimpdir = get_option('gimpdir')
+if gimpdir == ''
+ # Default value
+ gimpdir = meson.project_name().to_upper()
+endif
+
+project_subdir = meson.project_name() / gimp_app_version
+gimpdatadir = get_option('datadir') / project_subdir
+gimpplugindir = get_option('libdir') / project_subdir
+gimpsysconfdir = get_option('sysconfdir') / project_subdir
+gimpmanpagedir = gimpdir
+localedir = get_option('datadir') / 'locale'
+
+
+
+# Check for internal tools
+defcheck = find_program('tools'/'defcheck.py')
+extract_vector_icon = find_program('tools'/'extract-vector-icon.sh')
+generate_changelog = find_program('tools'/'generate_changelog.sh')
+generate_news = find_program('tools'/'generate-news')
+gimppath2svg = find_program('tools'/'gimppath2svg.py')
+module_dependencies = find_program('tools'/'module-dependencies.py')
+
+gimp_mkenums = find_program('tools'/'gimp-mkenums')
+gimp_mkenums_custom_target_commonargs = [
+ '--fprod','/* enumerations from "@basename@" */\n',
+ '--vhead','GType\n'+
+ '@enum_name@_get_type (void)\n'+
+ '{\n'+
+ ' static const G@Type@Value values[] =\n'+
+ ' {',
+ '--vprod',' { @VALUENAME@, "@VALUENAME@", "@valuenick@" },',
+ '--vtail',' { 0, NULL, NULL }\n'+
+ ' };\n',
+ '--dhead',' static const Gimp@Type@Desc descs[] =\n'+
+ ' {',
+ '--dprod',' {\n'+
+ ' @VALUENAME@, @valuedesc@, @valuehelp@\n'+
+ ' },\n'+
+ ' @if (\'@valueabbrev@\' ne \'NULL\')@\n'+
+ ' /* Translators:\n'+
+ ' this is an abbreviated version of @valueudesc@.\n'+
+ ' Keep it short. */\n'+
+ ' { @VALUENAME@, @valueabbrev@, NULL },\n'+
+ ' @endif@',
+ '--dtail',' { 0, NULL, NULL }\n'+
+ ' };\n'+
+ '\n'+
+ ' static GType type = 0;\n'+
+ '\n'+
+ ' if (G_UNLIKELY (! type))\n'+
+ ' {\n'+
+ ' type = g_@type@_register_static ("@EnumName@", values);\n'+
+ ' gimp_type_set_translation_context (type, "@enumnick@");\n'+
+ ' gimp_@type@_set_value_descriptions (type, descs);\n'+
+ ' }\n'+
+ '\n'+
+ ' return type;\n'+
+ '}\n',
+ '@INPUT@',
+]
+
+
+conf.set('ENABLE_NLS', true)
+conf.set('HAVE_GETTEXT', true)
+
+# localedir = get_option('prefix') / get_option('localedir')
+
+
+################################################################################
+# Miscelaneous configuration
+
+# #
+## ## # #### ####
+# # # # # # # #
+# # # # #### #
+# # # # #
+# # # # # # #
+# # # #### ####
+
+
+
+# Enable support for multiprocessing
+conf.set10('ENABLE_MP', get_option('enable-multiproc'))
+
+# Check for available functions
+foreach fn : [
+ { 'm': 'HAVE_ALLOCA', 'v': 'alloca', },
+ { 'm': 'HAVE_BACKTRACE', 'v': 'backtrace', },
+ { 'm': 'HAVE_DCGETTEXT', 'v': 'dcgettext', },
+ { 'm': 'HAVE_DIFFTIME', 'v': 'difftime', },
+ { 'm': 'HAVE_FINITE', 'v': 'finite', },
+ { 'm': 'HAVE_FINITE', 'v': 'finite', },
+ { 'm': 'HAVE_FSYNC', 'v': 'fsync', },
+ { 'm': 'HAVE_GETADDRINFO', 'v': 'getaddrinfo', },
+ { 'm': 'HAVE_GETNAMEINFO', 'v': 'getnameinfo', },
+ { 'm': 'HAVE_GETTEXT', 'v': 'gettext', },
+ { 'm': 'HAVE_ISFINITE', 'v': 'isfinite', },
+ { 'm': 'HAVE_MMAP', 'v': 'mmap', },
+ { 'm': 'HAVE_RINT', 'v': 'rint', },
+ { 'm': 'HAVE_THR_SELF', 'v': 'thr_self', },
+ { 'm': 'HAVE_VFORK', 'v': 'vfork', },
+ ]
+ conf.set(fn['m'],
+ cc.has_function(fn['v']) ? 1 : false
+ )
+endforeach
+
+conf.set('HAVE_BIND_TEXTDOMAIN_CODESET',
+ cc.has_header_symbol('libintl.h', 'bind_textdomain_codeset') ? 1 : false
+)
+conf.set('HAVE_VPRINTF',
+ cc.has_header_symbol('libintl.h', 'vprintf') ? 1 : false
+)
+
+
+# Check for available headers
+foreach header : [
+ { 'm': 'HAVE_ALLOCA_H', 'v': 'alloca.h' },
+ { 'm': 'HAVE_DLFCN_H', 'v': 'dlfcn.h' },
+ { 'm': 'HAVE_EXECINFO_H', 'v': 'execinfo.h' },
+ { 'm': 'HAVE_FCNTL_H', 'v': 'fcntl.h' },
+ { 'm': 'HAVE_IEEEFP_H', 'v': 'ieeefp.h' },
+ { 'm': 'HAVE_INTTYPES_H', 'v': 'inttypes.h' },
+ { 'm': 'HAVE_LOCALE_H', 'v': 'locale.h' },
+ { 'm': 'HAVE_MATH_H', 'v': 'math.h' },
+ { 'm': 'HAVE_MEMORY_H', 'v': 'memory.h' },
+ { 'm': 'HAVE_STDINT_H', 'v': 'stdint.h' },
+ { 'm': 'HAVE_STDLIB_H', 'v': 'stdlib.h' },
+ { 'm': 'HAVE_STRING_H', 'v': 'string.h' },
+ { 'm': 'HAVE_STRINGS_H', 'v': 'strings.h' },
+ { 'm': 'HAVE_SYS_PARAM_H', 'v': 'sys/param.h' },
+ { 'm': 'HAVE_SYS_SELECT_H', 'v': 'sys/select.h' },
+ { 'm': 'HAVE_SYS_STAT_H', 'v': 'sys/stat.h' },
+ { 'm': 'HAVE_SYS_THR_H', 'v': 'sys/thr.h' },
+ { 'm': 'HAVE_SYS_TIME_H', 'v': 'sys/time.h' },
+ { 'm': 'HAVE_SYS_TIMES_H', 'v': 'sys/times.h' },
+ { 'm': 'HAVE_SYS_TYPES_H', 'v': 'sys/types.h' },
+ { 'm': 'HAVE_SYS_WAIT_H', 'v': 'sys/wait.h' },
+ { 'm': 'HAVE_UNISTD_H', 'v': 'unistd.h' },
+ { 'm': 'HAVE_MMAN_H', 'v': 'sys/mman.h' },
+ { 'm': 'HAVE_IPC_H', 'v': 'sys/ipc.h' },
+ { 'm': 'HAVE_SHM_H', 'v': 'sys/shm.h' },
+ ]
+ conf.set(header['m'], cc.has_header(header['v']) ? 1 : false)
+endforeach
+
+
+
+################################################################################
+# Check for shared memory handling
+
+shmem_choice = get_option('shmem-type')
+if shmem_choice == 'auto'
+ shmem_choice = 'sysv'
+
+ # MacOS X has broken SysV shm
+ if platform_osx
+ shmem_choice = 'posix'
+ endif
+ if platform_windows
+ shmem_choice = 'win32'
+ endif
+endif
+
+if shmem_choice == 'sysv'
+ check_ip_rmid_deferred_release = cc.run('''
+ #include <sys/types.h>
+ #include <sys/ipc.h>
+ #include <sys/shm.h>
+ int main() {
+ int id = shmget(IPC_PRIVATE, 4, IPC_CREAT | 0600);
+ if (id == -1)
+ exit(2);
+
+ char *shmaddr = shmat(id, 0, 0);
+ shmctl(id, IPC_RMID, 0);
+ if ((char*) shmat(id, 0, 0) == (char*) -1) {
+ shmdt(shmaddr);
+ exit(1);
+ }
+ shmdt(shmaddr);
+ shmdt(shmaddr);
+ exit(0);
+ }
+ ''').returncode() == 0
+ conf.set('IPC_RMID_DEFERRED_RELEASE', check_ip_rmid_deferred_release)
+ conf.set('USE_SYSV_SHM', true)
+elif shmem_choice == 'posix'
+ conf.set('USE_POSIX_SHM', true)
+endif
+
+
+conf.set('NO_FD_SET',
+ not platform_windows
+ and not cc.compiles('''
+ #include <sys/types.h>
+ int main() { fd_set readMask, writeMask; return 0; }
+ ''')
+)
+
+# GCC attributes
+conf.set('HAVE_FUNC_ATTRIBUTE_DESTRUCTOR',
+ cc.compiles('''__attribute__ ((destructor)) void destructor_fn(void) { }''')
+)
+
+
+
+
+################################################################################
+# Set/regroup common CFlags for subdirs
+
+######
+# # ###### ###### # # # ###### ####
+# # # # # ## # # #
+# # ##### ##### # # # # ##### ####
+# # # # # # # # # #
+# # # # # # ## # # #
+###### ###### # # # # ###### ####
+
+# Compiler
+conf.set_quoted('CC', cc.get_id())
+conf.set_quoted('CC_VERSION', cc.version())
+
+# Names
+conf.set_quoted('GIMP_PACKAGE', meson.project_name())
+conf.set_quoted('PACKAGE_NAME', meson.project_name())
+conf.set_quoted('PACKAGE_STRING', package_string)
+conf.set_quoted('GIMP_COMMAND', gimp_command)
+
+# Versions
+conf.set_quoted('GIMP_APP_VERSION_STRING',gimp_app_version)
+conf.set_quoted('GIMP_APP_VERSION', gimp_app_version)
+conf.set_quoted('GIMP_USER_VERSION', gimp_app_version)
+
+conf.set_quoted('GIMP_DATA_VERSION', gimp_app_version)
+conf.set_quoted('GIMP_PLUGIN_VERSION', gimp_app_version)
+conf.set_quoted('GIMP_SYSCONF_VERSION', gimp_app_version)
+conf.set_quoted('GIMP_TOOL_VERSION', gimp_app_version)
+conf.set_quoted('GIMP_PKGCONFIG_VERSION', gimp_api_version)
+
+# Directories
+conf.set_quoted('PREFIX', prefix)
+conf.set_quoted('EXEC_PREFIX', prefix)
+conf.set_quoted('GIMPDIR', gimpdir)
+conf.set_quoted('GIMPSYSCONFDIR', prefix / gimpsysconfdir)
+conf.set_quoted('GIMPDATADIR', prefix / gimpdatadir)
+conf.set_quoted('GIMPPLUGINDIR', prefix / gimpplugindir)
+conf.set_quoted('PLUGINDIR', prefix / gimpplugindir)
+conf.set_quoted('LOCALEDIR', prefix / localedir)
+
+conf.set_quoted('LOCALSTATEDIR', prefix / get_option('localstatedir'))
+# /usr/com?
+conf.set_quoted('SHAREDSTATEDIR', prefix / get_option('sharedstatedir'))
+conf.set_quoted('SYSCONFDIR', prefix / get_option('sysconfdir'))
+conf.set_quoted('BINDIR', prefix / get_option('bindir'))
+conf.set_quoted('DATAROOTDIR', prefix / get_option('datadir'))
+conf.set_quoted('INFODIR', prefix / get_option('infodir'))
+conf.set_quoted('LIBDIR', prefix / get_option('libdir'))
+conf.set_quoted('LIBEXECDIR', prefix / get_option('libexecdir'))
+conf.set_quoted('MANDIR', prefix / get_option('mandir'))
+conf.set_quoted('SBINDIR', prefix / get_option('sbindir'))
+conf.set_quoted('SYSDATADIR', prefix / get_option('datadir'))
+
+# Third-party/Misc
+conf.set_quoted('ISO_CODES_LOCATION', isocodes_location)
+conf.set_quoted('ISO_CODES_LOCALEDIR', isocodes_localedir)
+
+
+if platform_osx
+ # libgimp_cflags += '-xobjective-c'
+ # libgimp_lflags += ['-framework', 'Cocoa']
+endif
+
+
+################################################################################
+# Generate files
+
+ ##### #######
+ # # #### # # ###### # #### # # # ###### ####
+ # # # ## # # # # # # # # # #
+ # # # # # # ##### # # ##### # # ##### ####
+ # # # # # # # # # ### # # # # #
+ # # # # # ## # # # # # # # # # #
+ ##### #### # # # # #### # # ###### ###### ####
+
+
+
+gitversion_h1 = vcs_tag(
+ input : 'app/git-version.h.in',
+ output: 'git-version.h.in.1',
+ command: [ 'git', 'describe', '--always', ],
+ replace_string: '@GIMP_GIT_VERSION@',
+ fallback: '',
+)
+gitversion_h2 = vcs_tag(
+ input : gitversion_h1,
+ output: 'git-version.h.in.2',
+ command: [ 'git', 'rev-parse', '--short', 'HEAD', ],
+ replace_string: '@GIMP_GIT_VERSION_ABBREV@',
+ fallback: '',
+)
+gitversion_h = vcs_tag(
+ input : gitversion_h2,
+ output: 'git-version.h',
+ command: [ 'git', 'log', '-n1', '--date=format:%Y', '--pretty=%cd', ],
+ replace_string: '@GIMP_GIT_LAST_COMMIT_YEAR@',
+ fallback: '',
+)
+
+
+install_conf = configuration_data()
+install_conf.set('GIMP_APP_VERSION', gimp_app_version)
+install_conf.set('GIMP_PKGCONFIG_VERSION', gimp_version)
+install_conf.set('GIMP_VERSION', gimp_version)
+install_conf.set('APPSTREAM_GLIB_REQUIRED_VERSION', appstream_glib.version())
+install_conf.set('ATK_REQUIRED_VERSION', atk .version())
+install_conf.set('BABL_REQUIRED_VERSION', babl .version())
+install_conf.set('CAIRO_PDF_REQUIRED_VERSION', cairopdf .version())
+install_conf.set('CAIRO_REQUIRED_VERSION', cairo .version())
+install_conf.set('FONTCONFIG_REQUIRED_VERSION', fontconfig .version())
+install_conf.set('FREETYPE2_REQUIRED_VERSION', freetype2 .version())
+install_conf.set('GDK_PIXBUF_REQUIRED_VERSION', gdk_pixbuf .version())
+install_conf.set('GEGL_REQUIRED_VERSION', gegl .version())
+install_conf.set('GEXIV2_REQUIRED_VERSION', gexiv2.version())
+install_conf.set('GLIB_REQUIRED_VERSION', glib .version())
+install_conf.set('GTK_REQUIRED_VERSION', gtk3 .version())
+install_conf.set('HARFBUZZ_REQUIRED_VERSION', harfbuzz .version())
+install_conf.set('INTLTOOL_REQUIRED_VERSION', '0.40.1')
+install_conf.set('LCMS_REQUIRED_VERSION', lcms .version())
+install_conf.set('LIBHEIF_REQUIRED_VERSION', libheif .version())
+install_conf.set('LIBLZMA_REQUIRED_VERSION', liblzma .version())
+install_conf.set('LIBMYPAINT_REQUIRED_VERSION', libmypaint .version())
+install_conf.set('LIBPNG_REQUIRED_VERSION', libpng .version())
+install_conf.set('OPENEXR_REQUIRED_VERSION', openexr .version())
+install_conf.set('OPENJPEG_REQUIRED_VERSION', openjpeg.version())
+install_conf.set('PANGOCAIRO_REQUIRED_VERSION', pangocairo .version())
+install_conf.set('POPPLER_DATA_REQUIRED_VERSION', poppler[1] .version())
+install_conf.set('POPPLER_REQUIRED_VERSION', poppler[0] .version())
+install_conf.set('PYTHON3_REQUIRED_VERSION', '3.6.0')
+install_conf.set('RSVG_REQUIRED_VERSION', rsvg .version())
+install_conf.set('WEBKITGTK_REQUIRED_VERSION', webkit .version())
+install_conf.set('WEBP_REQUIRED_VERSION', webp_libs[0].version())
+install_conf.set('WMF_REQUIRED_VERSION', wmf .version())
+install_conf.set('XGETTEXT_REQUIRED_VERSION', '0.19')
+
+configure_file(
+ input : 'INSTALL.in',
+ output: 'INSTALL',
+ configuration: install_conf
+)
+
+
+configure_file(
+ output: 'config.h',
+ configuration: conf
+)
+compiler_args +='-DHAVE_CONFIG_H'
+
+
+add_project_arguments(compiler_args, language: [ 'c', 'cpp' ])
+add_project_link_arguments(linker_args, language: [ 'c', 'cpp' ])
+
+################################################################################
+# Miscelaneous targets
+
+
+ # # #######
+ ## ## # #### #### # ## ##### #### ###### ##### ####
+ # # # # # # # # # # # # # # # # # #
+ # # # # #### # # # # # # # ##### # ####
+ # # # # # # ###### ##### # ### # # #
+ # # # # # # # # # # # # # # # # # #
+ # # # #### #### # # # # # #### ###### # ####
+
+
+
+custom_target('AUTHORS',
+ input : [ 'authors.xsl', 'authors.xml', ],
+ output: 'AUTHORS',
+ command: [
+ xsltproc,
+ '-o', '@OUTPUT@',
+ '@INPUT@',
+ ],
+ build_by_default: false,
+)
+custom_target('authors.md',
+ input : [ 'authors4gimp-web.xsl', 'authors.xml', ],
+ output: 'authors.md',
+ command: [
+ xsltproc,
+ '--stringparam', 'today', '`date --iso-8601=seconds`',
+ '-o', '@OUTPUT@',
+ '@INPUT@',
+ ],
+ build_by_default: false,
+)
+
+if xmllint.found()
+ run_target('validate-authors',
+ command: [
+ xmllint,
+ '--noout',
+ '--valid', 'authors.xml',
+ ],
+ )
+endif
+
+if have_python
+ # TODO this python script is waiting for autotools directory/files structure
+ custom_target('check-defs',
+ input : [ ],
+ output: [ 'check-defs', ],
+ command: [
+ find_program(meson.source_root() / 'tools' / 'defcheck.py'),
+ meson.source_root(),
+ ],
+ build_by_default: false,
+ )
+endif
+
+custom_target('Changelog',
+ input : [ ],
+ output: [ 'Changelog', ],
+ command: [
+ generate_changelog,
+ meson.source_root(),
+ '@OUTPUT@'
+ ],
+ build_by_default: false,
+)
+
+
+################################################################################
+# Subdirs
+
+
+rootInclude = include_directories('.')
+appInclude = include_directories('app')
+
+if platform_windows
+ subdir('build/windows')
+
+ if get_option('windows-installer')
+ subdir('po-windows-installer')
+ subdir('build/windows/installer')
+ endif
+endif
+
+# Tools
+subdir('libgimpbase')
+subdir('tools')
+
+# Translations
+subdir('po')
+subdir('po-libgimp')
+subdir('po-plug-ins')
+subdir('po-python')
+subdir('po-script-fu')
+subdir('po-tags')
+subdir('po-tips')
+# Data / Desktop / xml files
+subdir('cursors')
+subdir('data')
+subdir('desktop')
+subdir('etc')
+subdir('icons')
+subdir('m4macros')
+subdir('menus')
+subdir('themes')
+
+# Libraries (order here is important!)
+subdir('libgimpcolor')
+subdir('libgimpmath')
+subdir('libgimpconfig')
+subdir('libgimpmodule')
+subdir('libgimpthumb')
+subdir('libgimpwidgets')
+subdir('libgimp')
+
+# Executables, plugins
+subdir('modules')
+subdir('plug-ins')
+subdir('app')
+subdir('pdb')
+subdir('app-tools')
+
+# Docs
+subdir('docs')
+if have_gtk_doc
+ subdir('devel-docs')
+endif
+
+
+
+pkgconfig.generate(libgimp,
+ filebase: 'gimp-' + gimp_api_version,
+ name: prettyname,
+ description: 'GIMP Library',
+ version: gimp_version,
+ requires: [
+ gdk_pixbuf,
+ cairo,
+ gegl,
+ ],
+ libraries: [
+ libgimpbase,
+ libgimpcolor,
+ libgimpconfig,
+ libgimpmath,
+ ],
+ subdirs: [
+ gimp_api_name,
+ ],
+ variables: [
+ 'datarootdir=' +'${prefix}/'+ get_option('datadir'),
+ 'gimpdatadir=' +'${prefix}/'+ gimpdatadir,
+ 'gimplibdir=' +'${prefix}/'+ gimpplugindir,
+ 'gimpsysconfdir=' + gimpsysconfdir,
+ 'gimplocaledir=' +'${prefix}/'+ localedir,
+ ],
+)
+
+pkgconfig.generate(libgimpthumb,
+ filebase: 'gimpthumb-' + gimp_api_version,
+ name: 'GIMP Thumb',
+ description: 'GIMP Thumbnail Library',
+ version: gimp_version,
+ requires: [
+ libgimp,
+ gdk_pixbuf,
+ ],
+ subdirs: [
+ gimp_api_name,
+ ],
+)
+
+pkgconfig.generate(libgimpui,
+ filebase: 'gimpui-' + gimp_api_version,
+ name: 'GIMP UI',
+ description: 'GIMP User Interface Library',
+ version: gimp_version,
+ requires: [
+ libgimp,
+ gtk3,
+ ],
+ libraries: [
+ libgimpwidgets,
+ libgimpmodule,
+ ],
+ subdirs: [
+ gimp_api_name,
+ ],
+)
+
+
+
+################################################################################
+
+final_message = [
+'''Extra Binaries:''',
+''' gimp-console: @0@'''.format(enable_console_bin),
+'',
+'''Optional Features:''',
+''' Language selection: @0@'''.format(isocodes.found()),
+''' Vector icons: @0@'''.format(have_vector_icons),
+''' Dr. Mingw (Win32): @0@'''.format(drmingw.found()),
+''' Relocatable Bundle: @0@'''.format(relocatable_bundle),
+''' Default ICC directory: @0@'''.format(icc_directory),
+''' 32-bit DLL folder (Win32): @0@'''.format(get_option('win32-32bits-dll-folder')),
+''' Detailed backtraces: @0@'''.format(detailed_backtraces),
+'',
+'''Optional Plug-Ins:''',
+''' Ascii Art: @0@'''.format(libaa.found()),
+''' Ghostscript: @0@'''.format(ghostscript.found()),
+''' Help Browser: @0@'''.format(webkit.found()),
+''' JPEG 2000: @0@'''.format(openjpeg.found()),
+''' MNG: @0@'''.format(libmng.found()),
+''' OpenEXR: @0@'''.format(openexr.found()),
+''' WebP: @0@'''.format(webp_found),
+''' Heif: @0@'''.format(libheif.found()),
+''' PDF (export): @0@'''.format(cairopdf.found()),
+''' Print: @0@'''.format(have_print),
+''' Python 3 plug-ins: @0@'''.format(have_python),
+''' Javascript plug-ins: @0@'''.format(have_javascript),
+''' Lua plug-ins: @0@'''.format(have_lua),
+''' TWAIN (Win32): @0@'''.format(platform_windows),
+''' Webpage: @0@'''.format(webkit.found()),
+''' WMF: @0@'''.format(wmf.found()),
+''' X11 Mouse Cursor: @0@'''.format(xmc.found()),
+''' XPM: @0@'''.format(libxpm.found()),
+''' Email: @0@'''.format(email_message),
+'',
+'''Optional Modules:''',
+''' ALSA (MIDI Input): @0@'''.format(alsa.found()),
+''' Linux Input: @0@ (GUdev support: @1@)'''
+ .format(have_linuxinput, gudev.found()),
+''' DirectInput (Win32): @0@'''.format(directx.found()),
+'',
+'''Tests:''',
+''' Use xvfb-run @0@'''.format(xvfb_run.found()),
+''' Test appdata @0@'''.format(appstream_util.found()),
+'',
+'''Bug report URL: @0@'''.format(bug_report_url),
+]
+
+message('\n'.join(final_message))
diff --git a/meson.make b/meson.make
new file mode 100755
index 0000000000..be6252674c
--- /dev/null
+++ b/meson.make
@@ -0,0 +1,29 @@
+#!/usr/bin/env -S make -f
+default: build
+
+# This file is executable so you can do
+# ./meson.make
+# ./meson.make install
+
+
+prefix = /usr
+prefix = $(HOME)/.local
+
+
+_build:
+ meson _build --prefix=$(prefix)
+
+
+.PHONY: build
+build: | _build
+ ninja -C _build
+
+
+.PHONY: install
+install:
+ ninja -C _build install
+
+
+.PHONY: clean
+clean:
+ rm -rf _build
diff --git a/meson_options.txt b/meson_options.txt
new file mode 100644
index 0000000000..8d3a51f868
--- /dev/null
+++ b/meson_options.txt
@@ -0,0 +1,60 @@
+# Build properties
+option('ansi', type: 'boolean', value: false,description: 'Turn on strict ansi')
+option('enable-console-bin',type: 'boolean', value: true, description: 'Build a console-only binary which
does not link GTK+')
+option('win32-debug-console',type:'boolean', value: true, description: 'Open a console when starting the
program')
+option('enable-default-bin',type: 'boolean', value: true, description: 'Build default Gtk+ binary')
+option('enable-multiproc', type: 'boolean', value: true, description: 'Support for multiple processors')
+option('profiling', type: 'boolean', value: false,description: 'Enable profiling')
+option('windows-installer', type: 'boolean', value: false,description: 'Generate files needed for the
Windows installer')
+option('relocatable-bundle',type: 'boolean', value: false,description: 'build with resources considered
bundled under the same prefix')
+option('shmem-type', type: 'combo', value: 'auto', description: 'Shared memory transport type',
choices: [ 'none', 'sysv', 'posix', 'win32', 'auto' ])
+option('bug-report-url', type: 'string', value: '', description: 'URL used by the debug dialog to
report bugs')
+option('gimpdir', type: 'string', value: '', description: 'Change default gimpdir from
~/.config/GIMP/2.9 to ~/.config/DIR/2.9 (if relative), or to DIR (if absolute)')
+option('icc-directory', type: 'string', value: '', description: 'Path to default color profiles for
this system')
+option('directx-sdk-dir', type: 'string', value: '', description: 'Prefix where the DirectX SDK is
installed(optional)')
+option('with-sendmail', type: 'string', value: '', description: 'Use Sendmail instead of Xdg-email')
+
+option('win32-32bits-dll-folder', type: 'string', value: '32/bin', description: 'alternative folder with
32-bit versions of DLL libraries on Windows')
+option('libunwind', type: 'boolean', value: true, description: 'Build with libunwind for backtrace')
+option('libbacktrace', type: 'boolean', value: true, description: 'Build with libbacktrace support')
+
+# Features
+
+option('aa', type: 'feature', value: 'auto', description: 'AA plugin')
+option('alsa', type: 'feature', value: 'auto', description: 'Alsa support in midi input
controller')
+option('appdata-test', type: 'feature', value: 'auto', description: 'Validate the appdata file')
+option('cairo-pdf', type: 'feature', value: 'auto', description: 'Cairo-pdf support')
+option('ghostscript', type: 'feature', value: 'auto', description: 'Ghostscript support')
+option('gudev', type: 'feature', value: 'auto', description: 'Gudev support')
+option('heif', type: 'feature', value: 'auto', description: 'HEIF support')
+option('jpeg', type: 'feature', value: 'auto', description: 'Jpeg support')
+option('jpeg2000', type: 'feature', value: 'auto', description: 'Jpeg-2000 support')
+option('mng', type: 'feature', value: 'auto', description: 'Mng support')
+option('openexr', type: 'feature', value: 'auto', description: 'Openexr support')
+option('png', type: 'feature', value: 'auto', description: 'PNG support')
+option('print', type: 'feature', value: 'auto', description: 'Print support')
+option('screenshot', type: 'feature', value: 'auto', description: 'Screensh')
+option('tiff', type: 'feature', value: 'auto', description: 'TIFF support')
+option('webkit', type: 'feature', value: 'auto', description: 'Help browser and webpage plugins')
+option('webp', type: 'feature', value: 'auto', description: 'Webp support')
+option('wmf', type: 'feature', value: 'auto', description: 'Wmf support')
+option('xcursor', type: 'feature', value: 'auto', description: 'Xcursor support')
+option('xpm', type: 'feature', value: 'auto', description: 'XPM support')
+option('xvfb-run', type: 'feature', value: 'auto', description: 'Use xvfb-run for UI-dependent
automatic tests')
+
+option('gtk-doc', type: 'boolean', value: true, description: 'Build developer documentation')
+option('gtk-doc-app', type: 'boolean', value: false, description: 'Build developer documentation for
app')
+
+option('linux-input', type: 'feature', value: 'auto', description: 'Linux input event controller
module')
+option('poppler', type: 'boolean', value: true, description: 'Poppler support')
+option('vec-icons', type: 'boolean', value: true, description: 'Use vector icons rather than
raster ones')
+
+option('javascript', type: 'combo', value:'error', description: 'Install Javascript plug-ins',
+ choices: [ 'never', 'always', 'error' ],
+)
+option('lua', type: 'combo', value:'error', description: 'Install Lua plug-ins',
+ choices: [ 'never', 'always', 'error' ],
+)
+option('python', type: 'combo', value:'error', description: 'Install Python 3 plug-ins',
+ choices: [ 'never', 'always', 'error' ],
+)
diff --git a/modules/meson.build b/modules/meson.build
new file mode 100644
index 0000000000..9b50ae0174
--- /dev/null
+++ b/modules/meson.build
@@ -0,0 +1,95 @@
+
+modules_deps = [
+ gtk3, babl, gegl, math,
+]
+
+color_selector_libs = [
+ libgimpcolor,
+ libgimpconfig,
+ libgimpmodule,
+ libgimpwidgets,
+]
+controller_libs = [
+ libgimpmodule,
+ libgimpwidgets,
+]
+display_filter_libs = [
+ libgimpbase,
+ libgimpcolor,
+ libgimpconfig,
+ libgimpmodule,
+ libgimpwidgets,
+]
+
+# Name, Sources, deps, link.
+modules = [
+ {
+ 'name': 'color-selector-cmyk',
+ 'link': color_selector_libs,
+ }, {
+ 'name': 'color-selector-water',
+ 'link': color_selector_libs,
+ }, {
+ 'name': 'color-selector-wheel',
+ 'srcs': [ 'color-selector-wheel.c', 'gimpcolorwheel.c', ],
+ 'link': color_selector_libs,
+ }, {
+ 'name': 'display-filter-clip-warning',
+ 'link': display_filter_libs,
+ }, {
+ 'name': 'display-filter-color-blind',
+ 'link': display_filter_libs,
+ }, {
+ 'name': 'display-filter-aces-rrt',
+ 'link': display_filter_libs,
+ }, {
+ 'name': 'display-filter-gamma',
+ 'link': display_filter_libs,
+ }, {
+ 'name': 'display-filter-high-contrast',
+ 'link': display_filter_libs,
+ },
+]
+
+if have_linuxinput
+ modules += {
+ 'name': 'controller-linux-input',
+ 'srcs': [ 'controller-linux-input.c', 'gimpinputdevicestore-gudev.c', ],
+ 'deps': gudev,
+ 'link': controller_libs,
+ }
+endif
+
+if directx.found()
+ modules += {
+ 'name': 'controller-dx-input',
+ 'srcs': [ 'controller-dx-dinput.c', 'gimpinputdevicestore-dx.c', ],
+ 'deps': directx,
+ 'link': [ controller_libs, '-lrpcrt4', ],
+ }
+endif
+
+if not platform_windows
+ modules += {
+ 'name': 'controller-midi',
+ 'deps': alsa,
+ 'link': controller_libs,
+ }
+endif
+
+
+foreach module : modules
+ name = module.get('name')
+ srcs = module.get('srcs', name + '.c')
+ deps = module.get('deps', [])
+ link = module.get('link', [])
+
+ library(name,
+ srcs,
+ include_directories: rootInclude,
+ dependencies: modules_deps + [ deps ],
+ link_with: link,
+ install: true,
+ install_dir: gimpplugindir / 'modules',
+ )
+endforeach
diff --git a/pdb/meson.build b/pdb/meson.build
new file mode 100644
index 0000000000..fdd2530c7e
--- /dev/null
+++ b/pdb/meson.build
@@ -0,0 +1,147 @@
+pdbgen_backup = false
+pdbgen_groups = false
+
+pdb_names = [
+ 'brush_select',
+ 'brush',
+ 'brushes',
+ 'buffer',
+ 'channel',
+ 'context',
+ 'debug',
+ 'display',
+ 'drawable_color',
+ 'drawable_edit',
+ 'drawable',
+ 'dynamics',
+ 'edit',
+ 'fileops',
+ 'floating_sel',
+ 'font_select',
+ 'fonts',
+ 'gimp',
+ 'gimprc',
+ 'gradient_select',
+ 'gradient',
+ 'gradients',
+ 'help',
+ 'image_color_profile',
+ 'image_convert',
+ 'image_grid',
+ 'image_guides',
+ 'image_sample_points',
+ 'image_select',
+ 'image_transform',
+ 'image_undo',
+ 'image',
+ 'item_transform',
+ 'item',
+ 'layer',
+ 'message',
+ 'paint_tools',
+ 'palette_select',
+ 'palette',
+ 'palettes',
+ 'pattern_select',
+ 'pattern',
+ 'patterns',
+ 'pdb',
+ 'plug_in_compat',
+ 'plug_in',
+ 'progress',
+ 'selection',
+ 'text_layer',
+ 'text_tool',
+ 'unit',
+ 'vectors',
+]
+
+pdb_sources = []
+foreach name : pdb_names
+ pdb_sources += files('groups' / name + '.pdb')
+endforeach
+
+
+enum_headers = [
+ gimpbaseenums,
+ appconfigenums,
+ appoperationsenums,
+ appcoreenums,
+ apppaintenums,
+]
+
+# Perl environment
+perlsrcdir = meson.current_source_dir()
+perlbindir = meson.current_build_dir()
+
+perl_env = [
+ 'PDBGEN_BACKUP=' + (pdbgen_backup ? '1' : '0'),
+ 'PDBGEN_GROUPS=' + (pdbgen_groups ? '1' : '0'),
+ 'rootme=' + perlbindir,
+ 'srcdir=' + perlsrcdir,
+ 'destdir=' + meson.build_root(),
+ 'builddir=' + meson.build_root(),
+ perl,
+ '-I', perlbindir,
+ '-I', perlsrcdir,
+]
+
+groups_pl_content = '# This file is autogenerated\n'
+groups_pl_content += '@groups = qw(\n'
+foreach source : pdb_names
+ groups_pl_content += ' '+ source +'\n'
+endforeach
+groups_pl_content += ');\n'
+
+
+
+# All perl files
+
+groups_pl = custom_target('groups.pl',
+ input : [ ],
+ output: [ 'groups.pl', ],
+ command: [ 'echo', groups_pl_content, ],
+ capture: true,
+)
+
+enums_pl = custom_target('enums.pl',
+ input : [ 'enumgen.pl', 'enums-external.pl', enum_headers, ],
+ output: [ 'enums.pl', ],
+ command: [
+ perl_env, '@INPUT0@',
+ enum_headers,
+ ],
+)
+
+
+## TODO remove that ?
+
+pdbgen = custom_target('stamp-pdbgen',
+ input : [
+ files(
+ 'pdbgen.pl',
+
+ 'app.pl',
+ 'lib.pl',
+ 'pdb.pl',
+ 'stddefs.pdb',
+ 'util.pl',
+ ),
+ enums_pl,
+ groups_pl,
+ pdb_sources,
+ ],
+ output: [ 'stamp-pdbgen', ],
+ command: [
+ perl_env, '@INPUT0@',
+ 'app', 'lib',
+ ],
+)
+
+stamp_enumcode = custom_target('stamp-enum-code',
+ input : [ 'enumcode.pl', ],
+ output: [ 'stamp-enum-code', ],
+ command: [
+ perl_env, '@INPUT0@',
+ ],
+)
diff --git a/plug-ins/common/meson.build b/plug-ins/common/meson.build
new file mode 100644
index 0000000000..753ac6d830
--- /dev/null
+++ b/plug-ins/common/meson.build
@@ -0,0 +1,180 @@
+
+common_plugins_list = [
+ { 'name': 'align-layers', },
+ { 'name': 'animation-optimize', },
+ { 'name': 'animation-play', },
+ { 'name': 'blinds', },
+ { 'name': 'border-average', },
+ { 'name': 'busy-dialog', },
+ { 'name': 'checkerboard', },
+ { 'name': 'cml-explorer', },
+ { 'name': 'colormap-remap', },
+ { 'name': 'compose', },
+ { 'name': 'contrast-retinex', },
+ { 'name': 'crop-zealous',
+ 'deps': [ gtk3, gegl, gdk_pixbuf, cairo, ],
+ },
+ { 'name': 'curve-bend', },
+ { 'name': 'decompose', },
+ { 'name': 'depth-merge', },
+ { 'name': 'despeckle', },
+ { 'name': 'destripe', },
+ { 'name': 'file-cel', },
+ { 'name': 'file-compressor',
+ 'deps': [ gegl, gdk_pixbuf, cairo, gio, liblzma, bz2, zlib, ],
+ },
+ { 'name': 'file-csource', },
+ { 'name': 'file-desktop-link',
+ 'deps': [ gtk3, gegl, gdk_pixbuf, cairo, ],
+ },
+ { 'name': 'file-dicom', },
+ { 'name': 'file-gbr', },
+ { 'name': 'file-gegl', },
+ { 'name': 'file-gif-load',
+ 'deps': [ gtk3, gegl, gdk_pixbuf, cairo, ],
+ },
+ { 'name': 'file-gif-save', },
+ { 'name': 'file-gih', },
+ { 'name': 'file-glob',
+ 'deps': [ gtk3, gegl, gdk_pixbuf, cairo, ],
+ },
+ { 'name': 'file-header', },
+ { 'name': 'file-heif',
+ 'deps': [ gtk3, gegl, libheif, ],
+ },
+ { 'name': 'file-html-table', },
+ { 'name': 'file-jp2-load',
+ 'deps': [ gtk3, gegl, gdk_pixbuf, openjpeg, ],
+ },
+ { 'name': 'file-mng',
+ 'deps': [ gtk3, gegl, libmng, libpng, ],
+ },
+ { 'name': 'file-pat', },
+ { 'name': 'file-pcx', },
+ { 'name': 'file-pdf-load',
+ 'deps': [ gtk3, gegl, gdk_pixbuf, poppler ],
+ },
+ { 'name': 'file-pdf-save',
+ 'deps': [ gtk3, gegl, gdk_pixbuf, poppler, cairo ],
+ },
+ { 'name': 'file-pix', },
+ { 'name': 'file-png',
+ 'deps': [ gtk3, gegl, libpng, ],
+ },
+ { 'name': 'file-pnm', },
+ { 'name': 'file-ps',
+ 'deps': [ gtk3, gegl, gdk_pixbuf, ghostscript, ],
+ },
+ { 'name': 'file-psp',
+ 'deps': [ gtk3, gegl, zlib, ],
+ },
+ { 'name': 'file-raw-data', },
+ { 'name': 'file-sunras', },
+ { 'name': 'file-svg',
+ 'deps': [ gtk3, gegl, rsvg, ],
+ },
+ { 'name': 'file-tga', },
+ { 'name': 'file-xbm', },
+ { 'name': 'file-xwd', },
+ { 'name': 'film', },
+ { 'name': 'gradient-map', },
+ { 'name': 'grid', },
+ { 'name': 'guillotine', },
+ { 'name': 'hot', },
+ { 'name': 'jigsaw', },
+ { 'name': 'nl-filter', },
+ { 'name': 'plugin-browser', },
+ { 'name': 'procedure-browser', },
+ { 'name': 'qbist', },
+ { 'name': 'sample-colorize', },
+ { 'name': 'smooth-palette', },
+ { 'name': 'sparkle', },
+ { 'name': 'sphere-designer', },
+ { 'name': 'tile-small', },
+ { 'name': 'tile', },
+ { 'name': 'unit-editor', },
+ { 'name': 'van-gogh-lic', },
+ { 'name': 'warp', },
+ { 'name': 'wavelet-decompose', },
+ { 'name': 'web-browser', },
+]
+
+if platform_windows
+ common_plugins_list += { 'name': 'mail', }
+endif
+
+if wmf.found()
+ common_plugins_list += { 'name': 'file-wmf',
+ 'deps': [ gtk3, gegl, wmf, ],
+ }
+endif
+
+if xmc.found()
+ common_plugins_list += { 'name': 'file-xmc',
+ 'deps': [ gtk3, gegl, xmc, ],
+ }
+endif
+
+if libxpm.found()
+ common_plugins_list += { 'name': 'file-xpm',
+ 'deps': [ gtk3, gegl, libxpm, ],
+ }
+endif
+
+if webkit.found()
+ common_plugins_list += { 'name': 'web-page',
+ 'deps': [ gtk3, gegl, gdk_pixbuf, webkit, ],
+ }
+endif
+
+if libaa.found()
+ common_plugins_list += {
+ 'name': 'file-aa',
+ 'deps': [ gtk3, gegl, gdk_pixbuf, libaa, ],
+ }
+endif
+
+foreach plugin : common_plugins_list
+ plugin_name = plugin.get('name')
+ plugin_sources = [ plugin.get('sources', plugin_name + '.c') ]
+ plugin_deps = plugin.get('deps', [ gtk3, gegl, gdk_pixbuf, ])
+ plugin_cflags = plugin.get('cflags', [])
+
+ if platform_windows
+ plugin_rc = configure_file(
+ input : gimp_plugins_rc,
+ output: plugin_name + '.rc',
+ copy: true,
+ )
+
+ plugin_sources += windows.compile_resources(
+ plugin_rc,
+ args: [
+ '--define', 'ORIGINALFILENAME_STR="@0@"'.format(plugin_name+'.exe'),
+ '--define', 'INTERNALNAME_STR="@0@"' .format(plugin_name),
+ '--define', 'TOP_SRCDIR="@0@"' .format(meson.source_root()),
+ ],
+ include_directories: [
+ rootInclude, appInclude,
+ ],
+ )
+ endif
+
+ executable(plugin_name,
+ plugin_sources,
+ include_directories: [ rootInclude, ],
+ link_with : [
+ libgimp,
+ libgimpbase,
+ libgimpcolor,
+ libgimpconfig,
+ libgimpmath,
+ libgimpui,
+ libgimpwidgets,
+ ],
+ dependencies: [ plugin_deps, math ],
+ c_args: plugin_cflags,
+ install: true,
+ install_dir: gimpplugindir / 'plug-ins' / plugin_name,
+ )
+endforeach
diff --git a/plug-ins/file-bmp/meson.build b/plug-ins/file-bmp/meson.build
new file mode 100644
index 0000000000..f681f3d775
--- /dev/null
+++ b/plug-ins/file-bmp/meson.build
@@ -0,0 +1,40 @@
+plugin_name = 'file-bmp'
+
+plugin_sources = [
+ 'bmp-load.c',
+ 'bmp-save.c',
+ 'bmp.c',
+]
+
+if platform_windows
+ plugin_sources += windows.compile_resources(
+ gimp_plugins_rc,
+ args: [
+ '--define', 'ORIGINALFILENAME_STR="@0@"'.format(plugin_name+'.exe'),
+ '--define', 'INTERNALNAME_STR="@0@"' .format(plugin_name),
+ '--define', 'TOP_SRCDIR="@0@"' .format(meson.source_root()),
+ ],
+ include_directories: [
+ rootInclude, appInclude,
+ ],
+ )
+endif
+
+executable(plugin_name,
+ plugin_sources,
+ include_directories: [ rootInclude, ],
+ dependencies: [
+ gtk3, gegl,
+ ],
+ link_with: [
+ libgimp,
+ libgimpbase,
+ libgimpcolor,
+ libgimpconfig,
+ libgimpmath,
+ libgimpui,
+ libgimpwidgets,
+ ],
+ install: true,
+ install_dir: gimpplugindir / 'plug-ins' / plugin_name,
+)
diff --git a/plug-ins/file-dds/meson.build b/plug-ins/file-dds/meson.build
new file mode 100644
index 0000000000..dfd9c2e3af
--- /dev/null
+++ b/plug-ins/file-dds/meson.build
@@ -0,0 +1,45 @@
+plugin_name = 'file-dds'
+
+plugin_sources = [
+ 'dds.c',
+ 'color.c',
+ 'ddsread.c',
+ 'ddswrite.c',
+ 'dxt.c',
+ 'mipmap.c',
+ 'misc.c',
+ 'mktables.c',
+]
+
+if platform_windows
+ plugin_sources += windows.compile_resources(
+ gimp_plugins_rc,
+ args: [
+ '--define', 'ORIGINALFILENAME_STR="@0@"'.format(plugin_name+'.exe'),
+ '--define', 'INTERNALNAME_STR="@0@"' .format(plugin_name),
+ '--define', 'TOP_SRCDIR="@0@"' .format(meson.source_root()),
+ ],
+ include_directories: [
+ rootInclude, appInclude,
+ ],
+ )
+endif
+
+executable(plugin_name,
+ plugin_sources,
+ include_directories: [ rootInclude, ],
+ dependencies: [
+ gtk3, gegl, gdk_pixbuf, cairo, math,
+ ],
+ link_with: [
+ libgimp,
+ libgimpbase,
+ libgimpcolor,
+ libgimpconfig,
+ libgimpmath,
+ libgimpui,
+ libgimpwidgets,
+ ],
+ install: true,
+ install_dir: gimpplugindir / 'plug-ins' / plugin_name,
+)
diff --git a/plug-ins/file-exr/meson.build b/plug-ins/file-exr/meson.build
new file mode 100644
index 0000000000..1a14ff1ee0
--- /dev/null
+++ b/plug-ins/file-exr/meson.build
@@ -0,0 +1,43 @@
+if openexr.found()
+
+plugin_name = 'file-exr'
+
+plugin_sources = [
+ 'file-exr.c',
+ 'openexr-wrapper.cc',
+]
+
+if platform_windows
+ plugin_sources += windows.compile_resources(
+ gimp_plugins_rc,
+ args: [
+ '--define', 'ORIGINALFILENAME_STR="@0@"'.format(plugin_name+'.exe'),
+ '--define', 'INTERNALNAME_STR="@0@"' .format(plugin_name),
+ '--define', 'TOP_SRCDIR="@0@"' .format(meson.source_root()),
+ ],
+ include_directories: [
+ rootInclude, appInclude,
+ ],
+ )
+endif
+
+executable(plugin_name,
+ plugin_sources,
+ include_directories: [ rootInclude, ],
+ dependencies: [
+ gtk3, gegl, openexr, lcms,
+ ],
+ link_with: [
+ libgimp,
+ libgimpbase,
+ libgimpcolor,
+ libgimpconfig,
+ libgimpmath,
+ libgimpui,
+ libgimpwidgets,
+ ],
+ install: true,
+ install_dir: gimpplugindir / 'plug-ins' / plugin_name,
+)
+
+endif
diff --git a/plug-ins/file-faxg3/meson.build b/plug-ins/file-faxg3/meson.build
new file mode 100644
index 0000000000..d3f09841a2
--- /dev/null
+++ b/plug-ins/file-faxg3/meson.build
@@ -0,0 +1,39 @@
+plugin_name = 'file-faxg3'
+
+plugin_sources = [
+ 'faxg3.c',
+ 'g3.c',
+]
+
+if platform_windows
+ plugin_sources += windows.compile_resources(
+ gimp_plugins_rc,
+ args: [
+ '--define', 'ORIGINALFILENAME_STR="@0@"'.format(plugin_name+'.exe'),
+ '--define', 'INTERNALNAME_STR="@0@"' .format(plugin_name),
+ '--define', 'TOP_SRCDIR="@0@"' .format(meson.source_root()),
+ ],
+ include_directories: [
+ rootInclude, appInclude,
+ ],
+ )
+endif
+
+executable(plugin_name,
+ plugin_sources,
+ include_directories: [ rootInclude, ],
+ dependencies: [
+ gtk3, gegl, gdk_pixbuf, cairo,
+ ],
+ link_with: [
+ libgimp,
+ libgimpbase,
+ libgimpcolor,
+ libgimpconfig,
+ libgimpmath,
+ libgimpui,
+ libgimpwidgets,
+ ],
+ install: true,
+ install_dir: gimpplugindir / 'plug-ins' / plugin_name,
+)
diff --git a/plug-ins/file-fits/meson.build b/plug-ins/file-fits/meson.build
new file mode 100644
index 0000000000..f1926ccbdf
--- /dev/null
+++ b/plug-ins/file-fits/meson.build
@@ -0,0 +1,39 @@
+plugin_name = 'file-fits'
+
+plugin_sources = [
+ 'fits-io.c',
+ 'fits.c',
+]
+
+if platform_windows
+ plugin_sources += windows.compile_resources(
+ gimp_plugins_rc,
+ args: [
+ '--define', 'ORIGINALFILENAME_STR="@0@"'.format(plugin_name+'.exe'),
+ '--define', 'INTERNALNAME_STR="@0@"' .format(plugin_name),
+ '--define', 'TOP_SRCDIR="@0@"' .format(meson.source_root()),
+ ],
+ include_directories: [
+ rootInclude, appInclude,
+ ],
+ )
+endif
+
+executable(plugin_name,
+ plugin_sources,
+ include_directories: [ rootInclude, ],
+ dependencies: [
+ gtk3, gegl,
+ ],
+ link_with: [
+ libgimp,
+ libgimpbase,
+ libgimpcolor,
+ libgimpconfig,
+ libgimpmath,
+ libgimpui,
+ libgimpwidgets,
+ ],
+ install: true,
+ install_dir: gimpplugindir / 'plug-ins' / plugin_name,
+)
diff --git a/plug-ins/file-fli/meson.build b/plug-ins/file-fli/meson.build
new file mode 100644
index 0000000000..21d83b6081
--- /dev/null
+++ b/plug-ins/file-fli/meson.build
@@ -0,0 +1,39 @@
+plugin_name = 'file-fli'
+
+plugin_sources = [
+ 'fli-gimp.c',
+ 'fli.c',
+]
+
+if platform_windows
+ plugin_sources += windows.compile_resources(
+ gimp_plugins_rc,
+ args: [
+ '--define', 'ORIGINALFILENAME_STR="@0@"'.format(plugin_name+'.exe'),
+ '--define', 'INTERNALNAME_STR="@0@"' .format(plugin_name),
+ '--define', 'TOP_SRCDIR="@0@"' .format(meson.source_root()),
+ ],
+ include_directories: [
+ rootInclude, appInclude,
+ ],
+ )
+endif
+
+executable(plugin_name,
+ plugin_sources,
+ include_directories: [ rootInclude, ],
+ dependencies: [
+ gtk3, gegl,
+ ],
+ link_with: [
+ libgimp,
+ libgimpbase,
+ libgimpcolor,
+ libgimpconfig,
+ libgimpmath,
+ libgimpui,
+ libgimpwidgets,
+ ],
+ install: true,
+ install_dir: gimpplugindir / 'plug-ins' / plugin_name,
+)
diff --git a/plug-ins/file-ico/meson.build b/plug-ins/file-ico/meson.build
new file mode 100644
index 0000000000..17ebd71027
--- /dev/null
+++ b/plug-ins/file-ico/meson.build
@@ -0,0 +1,41 @@
+plugin_name = 'file-ico'
+
+plugin_sources = [
+ 'ico-dialog.c',
+ 'ico-load.c',
+ 'ico-save.c',
+ 'ico.c',
+]
+
+if platform_windows
+ plugin_sources += windows.compile_resources(
+ gimp_plugins_rc,
+ args: [
+ '--define', 'ORIGINALFILENAME_STR="@0@"'.format(plugin_name+'.exe'),
+ '--define', 'INTERNALNAME_STR="@0@"' .format(plugin_name),
+ '--define', 'TOP_SRCDIR="@0@"' .format(meson.source_root()),
+ ],
+ include_directories: [
+ rootInclude, appInclude,
+ ],
+ )
+endif
+
+executable(plugin_name,
+ plugin_sources,
+ include_directories: [ rootInclude, ],
+ dependencies: [
+ gtk3, gegl, libpng,
+ ],
+ link_with: [
+ libgimp,
+ libgimpbase,
+ libgimpcolor,
+ libgimpconfig,
+ libgimpmath,
+ libgimpui,
+ libgimpwidgets,
+ ],
+ install: true,
+ install_dir: gimpplugindir / 'plug-ins' / plugin_name,
+)
diff --git a/plug-ins/file-jpeg/meson.build b/plug-ins/file-jpeg/meson.build
new file mode 100644
index 0000000000..5a7022b540
--- /dev/null
+++ b/plug-ins/file-jpeg/meson.build
@@ -0,0 +1,43 @@
+plugin_name = 'file-jpeg'
+
+plugin_sources = [
+ 'jpeg-icc.c',
+ 'jpeg-load.c',
+ 'jpeg-quality.c',
+ 'jpeg-save.c',
+ 'jpeg-settings.c',
+ 'jpeg.c',
+]
+
+if platform_windows
+ plugin_sources += windows.compile_resources(
+ gimp_plugins_rc,
+ args: [
+ '--define', 'ORIGINALFILENAME_STR="@0@"'.format(plugin_name+'.exe'),
+ '--define', 'INTERNALNAME_STR="@0@"' .format(plugin_name),
+ '--define', 'TOP_SRCDIR="@0@"' .format(meson.source_root()),
+ ],
+ include_directories: [
+ rootInclude, appInclude,
+ ],
+ )
+endif
+
+executable(plugin_name,
+ plugin_sources,
+ include_directories: [ rootInclude, ],
+ dependencies: [
+ gtk3, gegl, libjpeg, lcms, gexiv2,
+ ],
+ link_with: [
+ libgimp,
+ libgimpbase,
+ libgimpcolor,
+ libgimpconfig,
+ libgimpmath,
+ libgimpui,
+ libgimpwidgets,
+ ],
+ install: true,
+ install_dir: gimpplugindir / 'plug-ins' / plugin_name,
+)
diff --git a/plug-ins/file-psd/meson.build b/plug-ins/file-psd/meson.build
new file mode 100644
index 0000000000..53587a0f06
--- /dev/null
+++ b/plug-ins/file-psd/meson.build
@@ -0,0 +1,44 @@
+plugin_name = 'file-psd'
+
+plugin_sources = [
+ 'psd-image-res-load.c',
+ 'psd-layer-res-load.c',
+ 'psd-load.c',
+ 'psd-save.c',
+ 'psd-thumb-load.c',
+ 'psd-util.c',
+ 'psd.c',
+]
+
+if platform_windows
+ plugin_sources += windows.compile_resources(
+ gimp_plugins_rc,
+ args: [
+ '--define', 'ORIGINALFILENAME_STR="@0@"'.format(plugin_name+'.exe'),
+ '--define', 'INTERNALNAME_STR="@0@"' .format(plugin_name),
+ '--define', 'TOP_SRCDIR="@0@"' .format(meson.source_root()),
+ ],
+ include_directories: [
+ rootInclude, appInclude,
+ ],
+ )
+endif
+
+executable(plugin_name,
+ plugin_sources,
+ include_directories: [ rootInclude, ],
+ dependencies: [
+ gtk3, gegl, libjpeg, math, zlib,
+ ],
+ link_with: [
+ libgimp,
+ libgimpbase,
+ libgimpcolor,
+ libgimpconfig,
+ libgimpmath,
+ libgimpui,
+ libgimpwidgets,
+ ],
+ install: true,
+ install_dir: gimpplugindir / 'plug-ins' / plugin_name,
+)
diff --git a/plug-ins/file-raw/meson.build b/plug-ins/file-raw/meson.build
new file mode 100644
index 0000000000..f136c45c13
--- /dev/null
+++ b/plug-ins/file-raw/meson.build
@@ -0,0 +1,60 @@
+
+file_raw_exes = [
+ 'file-darktable',
+ 'file-raw-placeholder',
+ 'file-rawtherapee',
+]
+
+foreach plugin_name : file_raw_exes
+
+ plugin_sources = [
+ plugin_name +'.c',
+ 'file-raw-utils.c',
+ ]
+
+ if platform_windows
+ plugin_rc = configure_file(
+ input : gimp_plugins_rc,
+ output: plugin_name + '.rc',
+ copy: true,
+ )
+ plugin_sources += windows.compile_resources(
+ plugin_rc,
+ args: [
+ '--define', 'ORIGINALFILENAME_STR="@0@"'.format(plugin_name+'.exe'),
+ '--define', 'INTERNALNAME_STR="@0@"' .format(plugin_name),
+ '--define', 'TOP_SRCDIR="@0@"' .format(meson.source_root()),
+ ],
+ include_directories: [
+ rootInclude, appInclude,
+ ],
+ )
+ endif
+
+
+ executable(plugin_name,
+ plugin_sources,
+ include_directories: [ rootInclude, ],
+ dependencies: [
+ gtk3, gegl,
+ ],
+ link_with: [
+ libgimp,
+ libgimpbase,
+ libgimpcolor,
+ libgimpconfig,
+ libgimpmath,
+ libgimpui,
+ libgimpwidgets,
+ ],
+ install: true,
+ install_dir: gimpplugindir / 'plug-ins' / plugin_name,
+ )
+endforeach
+
+install_data([
+ 'file-darktable-export-on-exit.lua',
+ 'file-darktable-get-size.lua',
+ ],
+ install_dir: prefix / gimpdatadir / 'file-raw',
+)
diff --git a/plug-ins/file-sgi/meson.build b/plug-ins/file-sgi/meson.build
new file mode 100644
index 0000000000..c25c8f42b4
--- /dev/null
+++ b/plug-ins/file-sgi/meson.build
@@ -0,0 +1,39 @@
+plugin_name = 'file-sgi'
+
+plugin_sources = [
+ 'sgi-lib.c',
+ 'sgi.c',
+]
+
+if platform_windows
+ plugin_sources += windows.compile_resources(
+ gimp_plugins_rc,
+ args: [
+ '--define', 'ORIGINALFILENAME_STR="@0@"'.format(plugin_name+'.exe'),
+ '--define', 'INTERNALNAME_STR="@0@"' .format(plugin_name),
+ '--define', 'TOP_SRCDIR="@0@"' .format(meson.source_root()),
+ ],
+ include_directories: [
+ rootInclude, appInclude,
+ ],
+ )
+endif
+
+executable(plugin_name,
+ plugin_sources,
+ include_directories: [ rootInclude, ],
+ dependencies: [
+ gtk3, gegl,
+ ],
+ link_with: [
+ libgimp,
+ libgimpbase,
+ libgimpcolor,
+ libgimpconfig,
+ libgimpmath,
+ libgimpui,
+ libgimpwidgets,
+ ],
+ install: true,
+ install_dir: gimpplugindir / 'plug-ins' / plugin_name,
+)
diff --git a/plug-ins/file-tiff/meson.build b/plug-ins/file-tiff/meson.build
new file mode 100644
index 0000000000..d03d7d2690
--- /dev/null
+++ b/plug-ins/file-tiff/meson.build
@@ -0,0 +1,41 @@
+plugin_name = 'file-tiff'
+
+plugin_sources = [
+ 'file-tiff-io.c',
+ 'file-tiff-save.c',
+ 'file-tiff.c',
+ 'file-tiff-load.c',
+]
+
+if platform_windows
+ plugin_sources += windows.compile_resources(
+ gimp_plugins_rc,
+ args: [
+ '--define', 'ORIGINALFILENAME_STR="@0@"'.format(plugin_name+'.exe'),
+ '--define', 'INTERNALNAME_STR="@0@"' .format(plugin_name),
+ '--define', 'TOP_SRCDIR="@0@"' .format(meson.source_root()),
+ ],
+ include_directories: [
+ rootInclude, appInclude,
+ ],
+ )
+endif
+
+executable(plugin_name,
+ plugin_sources,
+ include_directories: [ rootInclude, ],
+ dependencies: [
+ gtk3, gegl, gexiv2, libtiff,
+ ],
+ link_with: [
+ libgimp,
+ libgimpbase,
+ libgimpcolor,
+ libgimpconfig,
+ libgimpmath,
+ libgimpui,
+ libgimpwidgets,
+ ],
+ install: true,
+ install_dir: gimpplugindir / 'plug-ins' / plugin_name,
+)
diff --git a/plug-ins/file-webp/meson.build b/plug-ins/file-webp/meson.build
new file mode 100644
index 0000000000..ac0f0c5dfd
--- /dev/null
+++ b/plug-ins/file-webp/meson.build
@@ -0,0 +1,45 @@
+if webp_found
+
+plugin_name = 'file-webp'
+
+plugin_sources = [
+ 'file-webp-dialog.c',
+ 'file-webp-load.c',
+ 'file-webp-save.c',
+ 'file-webp.c',
+]
+
+if platform_windows
+ plugin_sources += windows.compile_resources(
+ gimp_plugins_rc,
+ args: [
+ '--define', 'ORIGINALFILENAME_STR="@0@"'.format(plugin_name+'.exe'),
+ '--define', 'INTERNALNAME_STR="@0@"' .format(plugin_name),
+ '--define', 'TOP_SRCDIR="@0@"' .format(meson.source_root()),
+ ],
+ include_directories: [
+ rootInclude, appInclude,
+ ],
+ )
+endif
+
+executable(plugin_name,
+ plugin_sources,
+ include_directories: [ rootInclude, ],
+ dependencies: [
+ gtk3, gegl, gexiv2, webp_libs,
+ ],
+ link_with: [
+ libgimp,
+ libgimpbase,
+ libgimpcolor,
+ libgimpconfig,
+ libgimpmath,
+ libgimpui,
+ libgimpwidgets,
+ ],
+ install: true,
+ install_dir: gimpplugindir / 'plug-ins' / plugin_name,
+)
+
+endif
diff --git a/plug-ins/flame/meson.build b/plug-ins/flame/meson.build
new file mode 100644
index 0000000000..e77019b39c
--- /dev/null
+++ b/plug-ins/flame/meson.build
@@ -0,0 +1,41 @@
+plugin_name = 'flame'
+
+plugin_sources = [
+ 'cmap.c',
+ 'flame.c',
+ 'libifs.c',
+ 'rect.c',
+]
+
+if platform_windows
+ plugin_sources += windows.compile_resources(
+ gimp_plugins_rc,
+ args: [
+ '--define', 'ORIGINALFILENAME_STR="@0@"'.format(plugin_name+'.exe'),
+ '--define', 'INTERNALNAME_STR="@0@"' .format(plugin_name),
+ '--define', 'TOP_SRCDIR="@0@"' .format(meson.source_root()),
+ ],
+ include_directories: [
+ rootInclude, appInclude,
+ ],
+ )
+endif
+
+executable(plugin_name,
+ plugin_sources,
+ include_directories: [ rootInclude, ],
+ dependencies: [
+ gtk3, gegl, math,
+ ],
+ link_with: [
+ libgimp,
+ libgimpbase,
+ libgimpcolor,
+ libgimpconfig,
+ libgimpmath,
+ libgimpui,
+ libgimpwidgets,
+ ],
+ install: true,
+ install_dir: gimpplugindir / 'plug-ins' / plugin_name,
+)
diff --git a/plug-ins/fractal-explorer/examples/meson.build b/plug-ins/fractal-explorer/examples/meson.build
new file mode 100644
index 0000000000..db3ef040ee
--- /dev/null
+++ b/plug-ins/fractal-explorer/examples/meson.build
@@ -0,0 +1,37 @@
+install_data([
+ 'Asteroid_Field',
+ 'Bar_Code_Label',
+ 'Beauty_of_Nature',
+ 'Blue_Curtain',
+ 'Car_Track',
+ 'Energetic_Diamond',
+ 'Explosive',
+ 'Flower',
+ 'Fragments',
+ 'Hemp',
+ 'High_Voltage',
+ 'Hoops',
+ 'Ice_Crystal',
+ 'Leaves',
+ 'Lightning',
+ 'Mandelbrot',
+ 'Marble',
+ 'Marble2',
+ 'Medusa',
+ 'Nautilus',
+ 'Nebula',
+ 'Plant',
+ 'Rose',
+ 'Saturn',
+ 'Snow_Crystal',
+ 'Soma',
+ 'Spark',
+ 'Suns',
+ 'Tentacles',
+ 'The_Green_Place',
+ 'Wave',
+ 'Wood',
+ 'Zooming_Circle',
+ ],
+ install_dir: gimpdatadir / 'fractalexplorer',
+)
diff --git a/plug-ins/fractal-explorer/meson.build b/plug-ins/fractal-explorer/meson.build
new file mode 100644
index 0000000000..247593118e
--- /dev/null
+++ b/plug-ins/fractal-explorer/meson.build
@@ -0,0 +1,41 @@
+subdir('examples')
+
+plugin_name = 'fractal-explorer'
+
+plugin_sources = [
+ 'fractal-explorer-dialogs.c',
+ 'fractal-explorer.c',
+]
+
+if platform_windows
+ plugin_sources += windows.compile_resources(
+ gimp_plugins_rc,
+ args: [
+ '--define', 'ORIGINALFILENAME_STR="@0@"'.format(plugin_name+'.exe'),
+ '--define', 'INTERNALNAME_STR="@0@"' .format(plugin_name),
+ '--define', 'TOP_SRCDIR="@0@"' .format(meson.source_root()),
+ ],
+ include_directories: [
+ rootInclude, appInclude,
+ ],
+ )
+endif
+
+executable(plugin_name,
+ plugin_sources,
+ include_directories: [ rootInclude, ],
+ dependencies: [
+ gtk3, gegl, math,
+ ],
+ link_with: [
+ libgimp,
+ libgimpbase,
+ libgimpcolor,
+ libgimpconfig,
+ libgimpmath,
+ libgimpui,
+ libgimpwidgets,
+ ],
+ install: true,
+ install_dir: gimpplugindir / 'plug-ins' / plugin_name,
+)
diff --git a/plug-ins/gfig/gfig-examples/meson.build b/plug-ins/gfig/gfig-examples/meson.build
new file mode 100644
index 0000000000..e98d739149
--- /dev/null
+++ b/plug-ins/gfig/gfig-examples/meson.build
@@ -0,0 +1,14 @@
+install_data([
+ 'A_star',
+ 'curves',
+ 'polys',
+ 'ring',
+ 'ring+star',
+ 'simily',
+ 'spirals_and_stars',
+ 'sprial',
+ 'star2',
+ 'stars',
+ ],
+ install_dir: gimpdatadir / 'gfig',
+)
diff --git a/plug-ins/gfig/images/meson.build b/plug-ins/gfig/images/meson.build
new file mode 100644
index 0000000000..4131d683cb
--- /dev/null
+++ b/plug-ins/gfig/images/meson.build
@@ -0,0 +1,24 @@
+stock_icons = [
+ 'gfig-bezier.png',
+ 'gfig-circle.png',
+ 'gfig-copy-object.png',
+ 'gfig-curve.png',
+ 'gfig-delete-object.png',
+ 'gfig-ellipse.png',
+ 'gfig-line.png',
+ 'gfig-logo.png',
+ 'gfig-move-object.png',
+ 'gfig-move-point.png',
+ 'gfig-polygon.png',
+ 'gfig-rectangle.png',
+ 'gfig-select-object.png',
+ 'gfig-show-all.png',
+ 'gfig-spiral.png',
+ 'gfig-star.png',
+]
+
+gfig_icon_sources = gnome.compile_resources(
+ 'gfig-icon-images',
+ 'gfig-icon-images.gresource.xml',
+ # source_dir: meson.current_source_directory(),
+)
diff --git a/plug-ins/gfig/meson.build b/plug-ins/gfig/meson.build
new file mode 100644
index 0000000000..00e1fe7631
--- /dev/null
+++ b/plug-ins/gfig/meson.build
@@ -0,0 +1,57 @@
+subdir('gfig-examples')
+subdir('images')
+
+plugin_name = 'gfig'
+
+plugin_sources = [
+ 'gfig-arc.c',
+ 'gfig-bezier.c',
+ 'gfig-circle.c',
+ 'gfig-dialog.c',
+ 'gfig-dobject.c',
+ 'gfig-ellipse.c',
+ 'gfig-grid.c',
+ 'gfig-icons.c',
+ 'gfig-line.c',
+ 'gfig-poly.c',
+ 'gfig-preview.c',
+ 'gfig-rectangle.c',
+ 'gfig-spiral.c',
+ 'gfig-star.c',
+ 'gfig-style.c',
+ 'gfig.c',
+ gfig_icon_sources,
+]
+
+if platform_windows
+ plugin_sources += windows.compile_resources(
+ gimp_plugins_rc,
+ args: [
+ '--define', 'ORIGINALFILENAME_STR="@0@"'.format(plugin_name+'.exe'),
+ '--define', 'INTERNALNAME_STR="@0@"' .format(plugin_name),
+ '--define', 'TOP_SRCDIR="@0@"' .format(meson.source_root()),
+ ],
+ include_directories: [
+ rootInclude, appInclude,
+ ],
+ )
+endif
+
+executable(plugin_name,
+ plugin_sources,
+ include_directories: [ rootInclude, ],
+ dependencies: [
+ gtk3, gegl, math,
+ ],
+ link_with: [
+ libgimp,
+ libgimpbase,
+ libgimpcolor,
+ libgimpconfig,
+ libgimpmath,
+ libgimpui,
+ libgimpwidgets,
+ ],
+ install: true,
+ install_dir: gimpplugindir / 'plug-ins' / plugin_name,
+)
diff --git a/plug-ins/gimpressionist/Brushes/meson.build b/plug-ins/gimpressionist/Brushes/meson.build
new file mode 100644
index 0000000000..62fa4bbdbd
--- /dev/null
+++ b/plug-ins/gimpressionist/Brushes/meson.build
@@ -0,0 +1,66 @@
+brushes = [
+ 'arrow01.pgm',
+ 'ball.ppm',
+ 'blob.ppm',
+ 'box.ppm',
+ 'chalk01.pgm',
+ 'cone.ppm',
+ 'crayon01.pgm',
+ 'crayon02.pgm',
+ 'crayon03.pgm',
+ 'crayon04.pgm',
+ 'crayon05.pgm',
+ 'crayon06.pgm',
+ 'crayon07.pgm',
+ 'crayon08.pgm',
+ 'defaultbrush.pgm',
+ 'dribble.pgm',
+ 'fabric.pgm',
+ 'fabric01.pgm',
+ 'fabric02.pgm',
+ 'fabric03.pgm',
+ 'flower01.pgm',
+ 'flower02.pgm',
+ 'flower03.pgm',
+ 'flower04.pgm',
+ 'grad01.pgm',
+ 'grad02.pgm',
+ 'grad03.pgm',
+ 'heart.ppm',
+ 'leaf01.pgm',
+ 'paintbrush01.pgm',
+ 'paintbrush02.pgm',
+ 'paintbrush03.pgm',
+ 'paintbrush04.pgm',
+ 'paper01.pgm',
+ 'paper02.pgm',
+ 'paper03.pgm',
+ 'paper04.pgm',
+ 'pentagram.pgm',
+ 'scribble.pgm',
+ 'shape01.pgm',
+ 'shape02.pgm',
+ 'shape03.pgm',
+ 'shape04.pgm',
+ 'snow1.pgm',
+ 'sphere.ppm',
+ 'splat1.pgm',
+ 'splat2.pgm',
+ 'splat3.pgm',
+ 'spunge01.pgm',
+ 'spunge02.pgm',
+ 'spunge03.pgm',
+ 'spunge04.pgm',
+ 'spunge05.pgm',
+ 'strange01.pgm',
+ 'thegimp.pgm',
+ 'torus.ppm',
+ 'wavy.pgm',
+ 'weave.pgm',
+ 'worm.pgm',
+]
+
+install_data(
+ brushes,
+ install_dir: gimpdatadir / 'gimpressionist' / 'Brushes',
+)
diff --git a/plug-ins/gimpressionist/Paper/meson.build b/plug-ins/gimpressionist/Paper/meson.build
new file mode 100644
index 0000000000..0564087ba6
--- /dev/null
+++ b/plug-ins/gimpressionist/Paper/meson.build
@@ -0,0 +1,16 @@
+papers = [
+ 'bricks.pgm',
+ 'bricks2.pgm',
+ 'burlap.pgm',
+ 'canvas2.pgm',
+ 'defaultpaper.pgm',
+ 'marble.pgm',
+ 'marble2.pgm',
+ 'stone.pgm',
+ 'struc.pgm',
+]
+
+install_data(
+ papers,
+ install_dir: gimpdatadir / 'gimpressionist' / 'Paper',
+)
diff --git a/plug-ins/gimpressionist/Presets/meson.build b/plug-ins/gimpressionist/Presets/meson.build
new file mode 100644
index 0000000000..b07328a8a5
--- /dev/null
+++ b/plug-ins/gimpressionist/Presets/meson.build
@@ -0,0 +1,32 @@
+presets = [
+ 'ApplyCanvas',
+ 'Ballpark',
+ 'Canvas',
+ 'Crosshatch',
+ 'Cubism',
+ 'Dotify',
+ 'Embroidery',
+ 'Feathers',
+ 'Felt-marker',
+ 'Flowerbed',
+ 'Furry',
+ 'Line-art-2',
+ 'Line-art',
+ 'Maggot-invasion',
+ 'MarbleMadness',
+ 'Mossy',
+ 'Painted_Rock',
+ 'Parquette',
+ 'Patchwork',
+ 'Ringworks',
+ 'Sample',
+ 'Smash',
+ 'Straws',
+ 'Weave',
+ 'Wormcan',
+]
+
+install_data(
+ presets,
+ install_dir: gimpdatadir / 'gimpressionist' / 'Presets',
+)
diff --git a/plug-ins/gimpressionist/meson.build b/plug-ins/gimpressionist/meson.build
new file mode 100644
index 0000000000..5ded789c28
--- /dev/null
+++ b/plug-ins/gimpressionist/meson.build
@@ -0,0 +1,65 @@
+subdir('Brushes')
+subdir('Paper')
+subdir('Presets')
+
+plugin_name = 'gimpressionist'
+
+plugin_sources = [
+ 'brush.c',
+ 'color.c',
+ 'general.c',
+ 'gimp.c',
+ 'gimpressionist.c',
+ 'globals.c',
+ 'orientation.c',
+ 'orientmap.c',
+ 'paper.c',
+ 'placement.c',
+ 'plasma.c',
+ 'ppmtool.c',
+ 'presets.c',
+ 'preview.c',
+ 'repaint.c',
+ 'size.c',
+ 'sizemap.c',
+ 'utils.c',
+]
+
+if platform_windows
+ plugin_sources += windows.compile_resources(
+ gimp_plugins_rc,
+ args: [
+ '--define', 'ORIGINALFILENAME_STR="@0@"'.format(plugin_name+'.exe'),
+ '--define', 'INTERNALNAME_STR="@0@"' .format(plugin_name),
+ '--define', 'TOP_SRCDIR="@0@"' .format(meson.source_root()),
+ ],
+ include_directories: [
+ rootInclude, appInclude,
+ ],
+ )
+endif
+
+executable(plugin_name,
+ plugin_sources,
+ include_directories: [ rootInclude, ],
+ dependencies: [
+ gtk3, gegl, math,
+ ],
+ link_with: [
+ libgimp,
+ libgimpbase,
+ libgimpcolor,
+ libgimpconfig,
+ libgimpmath,
+ libgimpui,
+ libgimpwidgets,
+ ],
+ c_args: [
+ '-DDEFAULTPATH="@0@:@1@"'.format(
+ '~/' / gimpdir / 'gimpressionist',
+ prefix / gimpdatadir / 'gimpressionist'
+ ),
+ ],
+ install: true,
+ install_dir: gimpplugindir / 'plug-ins' / plugin_name,
+)
diff --git a/plug-ins/goat-exercises/meson.build b/plug-ins/goat-exercises/meson.build
new file mode 100644
index 0000000000..3d667d148b
--- /dev/null
+++ b/plug-ins/goat-exercises/meson.build
@@ -0,0 +1,66 @@
+plugin_name = 'goat-exercise'
+
+plugin_sources = [
+ 'goat-exercise-c.c',
+]
+
+if platform_windows
+ plugin_sources += windows.compile_resources(
+ gimp_plugins_rc,
+ args: [
+ '--define', 'ORIGINALFILENAME_STR="@0@"'.format(plugin_name+'.exe'),
+ '--define', 'INTERNALNAME_STR="@0@"' .format(plugin_name),
+ '--define', 'TOP_SRCDIR="@0@"' .format(meson.source_root()),
+ ],
+ include_directories: [
+ rootInclude, appInclude,
+ ],
+ )
+endif
+
+executable(plugin_name,
+ plugin_sources,
+ include_directories: [ rootInclude, ],
+ dependencies: [
+ gtk3, gegl, math,
+ ],
+ link_with: [
+ libgimp,
+ libgimpbase,
+ libgimpcolor,
+ libgimpconfig,
+ libgimpmath,
+ libgimpui,
+ libgimpwidgets,
+ ],
+ install: true,
+ install_dir: gimpplugindir / 'plug-ins' / plugin_name,
+)
+
+
+install_data(
+ 'goat-exercise-c.c',
+ install_dir: gimpplugindir / 'plug-ins' / plugin_name + '-c',
+)
+
+if have_python
+ install_data(
+ 'goat-exercise-py3.py',
+ install_dir: gimpplugindir / 'plug-ins' / plugin_name + '-py3',
+ )
+endif
+
+
+if have_javascript
+ install_data(
+ 'goat-exercise-gjs.js',
+ install_dir: gimpplugindir / 'plug-ins' / plugin_name + '-gjs',
+ )
+endif
+
+if have_lua
+ install_data(
+ 'goat-exercise-lua.lua',
+ install_dir: gimpplugindir / 'plug-ins' / plugin_name + '-lua',
+ )
+endif
diff --git a/plug-ins/gradient-flare/flares/meson.build b/plug-ins/gradient-flare/flares/meson.build
new file mode 100644
index 0000000000..279605ced8
--- /dev/null
+++ b/plug-ins/gradient-flare/flares/meson.build
@@ -0,0 +1,11 @@
+install_data([
+ 'Bright_Star',
+ 'Classic',
+ 'Default',
+ 'Distant_Sun',
+ 'GFlare_101',
+ 'GFlare_102',
+ 'Hidden_Planet',
+ ],
+ install_dir: gimpdatadir / 'gflare',
+)
diff --git a/plug-ins/gradient-flare/meson.build b/plug-ins/gradient-flare/meson.build
new file mode 100644
index 0000000000..5ff42de5a0
--- /dev/null
+++ b/plug-ins/gradient-flare/meson.build
@@ -0,0 +1,40 @@
+subdir('flares')
+
+plugin_name = 'gradient-flare'
+
+plugin_sources = [
+ 'gradient-flare.c',
+]
+
+if platform_windows
+ plugin_sources += windows.compile_resources(
+ gimp_plugins_rc,
+ args: [
+ '--define', 'ORIGINALFILENAME_STR="@0@"'.format(plugin_name+'.exe'),
+ '--define', 'INTERNALNAME_STR="@0@"' .format(plugin_name),
+ '--define', 'TOP_SRCDIR="@0@"' .format(meson.source_root()),
+ ],
+ include_directories: [
+ rootInclude, appInclude,
+ ],
+ )
+endif
+
+executable(plugin_name,
+ plugin_sources,
+ include_directories: [ rootInclude, ],
+ dependencies: [
+ gtk3, gegl, math,
+ ],
+ link_with: [
+ libgimp,
+ libgimpbase,
+ libgimpcolor,
+ libgimpconfig,
+ libgimpmath,
+ libgimpui,
+ libgimpwidgets,
+ ],
+ install: true,
+ install_dir: gimpplugindir / 'plug-ins' / plugin_name,
+)
diff --git a/plug-ins/help-browser/meson.build b/plug-ins/help-browser/meson.build
new file mode 100644
index 0000000000..443a9c6e2b
--- /dev/null
+++ b/plug-ins/help-browser/meson.build
@@ -0,0 +1,47 @@
+if webkit.found()
+
+plugin_name = 'help-browser'
+
+plugin_sources = [
+ 'dialog.c',
+ 'gimpthrobber.c',
+ 'gimpthrobberaction.c',
+ 'help-browser.c',
+ 'uri.c',
+]
+
+if platform_windows
+ plugin_sources += windows.compile_resources(
+ gimp_plugins_rc,
+ args: [
+ '--define', 'ORIGINALFILENAME_STR="@0@"'.format(plugin_name+'.exe'),
+ '--define', 'INTERNALNAME_STR="@0@"' .format(plugin_name),
+ '--define', 'TOP_SRCDIR="@0@"' .format(meson.source_root()),
+ ],
+ include_directories: [
+ rootInclude, appInclude,
+ ],
+ )
+endif
+
+executable(plugin_name,
+ plugin_sources,
+ include_directories: [ rootInclude, ],
+ dependencies: [
+ gtk3, gegl, gio, webkit,
+ ],
+ link_with: [
+ help_plugin_lib,
+ libgimp,
+ libgimpbase,
+ libgimpcolor,
+ libgimpconfig,
+ libgimpmath,
+ libgimpui,
+ libgimpwidgets,
+ ],
+ install: true,
+ install_dir: gimpplugindir / 'plug-ins' / plugin_name,
+)
+
+endif
diff --git a/plug-ins/help/meson.build b/plug-ins/help/meson.build
new file mode 100644
index 0000000000..14bddaa318
--- /dev/null
+++ b/plug-ins/help/meson.build
@@ -0,0 +1,53 @@
+plugin_name = 'help'
+
+plugin_sources = [
+ # 'gimp-help-lookup.c',
+ 'gimphelp.c',
+ 'gimphelpdomain.c',
+ 'gimphelpitem.c',
+ 'gimphelplocale.c',
+ 'gimphelpprogress.c',
+]
+
+if platform_windows
+ plugin_sources += windows.compile_resources(
+ gimp_plugins_rc,
+ args: [
+ '--define', 'ORIGINALFILENAME_STR="@0@"'.format(plugin_name+'.exe'),
+ '--define', 'INTERNALNAME_STR="@0@"' .format(plugin_name),
+ '--define', 'TOP_SRCDIR="@0@"' .format(meson.source_root()),
+ ],
+ include_directories: [
+ rootInclude, appInclude,
+ ],
+ )
+endif
+
+help_plugin_lib = static_library('help_plugin',
+ plugin_sources,
+ include_directories: [ rootInclude, ],
+ dependencies: [
+ gtk3, gegl, cairo, gio, gdk_pixbuf,
+ ],
+ install: false,
+)
+
+executable(plugin_name,
+ 'help.c',
+ include_directories: [ rootInclude, ],
+ dependencies: [
+ gtk3, gegl, cairo, gio, gdk_pixbuf,
+ ],
+ link_with: [
+ help_plugin_lib,
+ libgimp,
+ libgimpbase,
+ libgimpcolor,
+ libgimpconfig,
+ libgimpmath,
+ libgimpui,
+ libgimpwidgets,
+ ],
+ install: true,
+ install_dir: gimpplugindir / 'plug-ins' / plugin_name,
+)
diff --git a/plug-ins/ifs-compose/meson.build b/plug-ins/ifs-compose/meson.build
new file mode 100644
index 0000000000..8c5504ffd3
--- /dev/null
+++ b/plug-ins/ifs-compose/meson.build
@@ -0,0 +1,40 @@
+plugin_name = 'ifs-compose'
+
+plugin_sources = [
+ 'ifs-compose-storage.c',
+ 'ifs-compose-utils.c',
+ 'ifs-compose.c',
+]
+
+if platform_windows
+ plugin_sources += windows.compile_resources(
+ gimp_plugins_rc,
+ args: [
+ '--define', 'ORIGINALFILENAME_STR="@0@"'.format(plugin_name+'.exe'),
+ '--define', 'INTERNALNAME_STR="@0@"' .format(plugin_name),
+ '--define', 'TOP_SRCDIR="@0@"' .format(meson.source_root()),
+ ],
+ include_directories: [
+ rootInclude, appInclude,
+ ],
+ )
+endif
+
+executable(plugin_name,
+ plugin_sources,
+ include_directories: [ rootInclude, ],
+ dependencies: [
+ gtk3, gegl, math,
+ ],
+ link_with: [
+ libgimp,
+ libgimpbase,
+ libgimpcolor,
+ libgimpconfig,
+ libgimpmath,
+ libgimpui,
+ libgimpwidgets,
+ ],
+ install: true,
+ install_dir: gimpplugindir / 'plug-ins' / plugin_name,
+)
diff --git a/plug-ins/imagemap/images/meson.build b/plug-ins/imagemap/images/meson.build
new file mode 100644
index 0000000000..fb093a7130
--- /dev/null
+++ b/plug-ins/imagemap/images/meson.build
@@ -0,0 +1,16 @@
+stock_images = [
+ 'imagemap-circle.png',
+ 'imagemap-coord.png',
+ 'imagemap-dimension.png',
+ 'imagemap-java.png',
+ 'imagemap-polygon.png',
+ 'imagemap-rectangle.png',
+ 'imagemap-to-back.png',
+ 'imagemap-to-front.png',
+]
+
+imagemap_icon_sources = gnome.compile_resources(
+ 'imagemap-icon-images',
+ 'imagemap-icon-images.gresource.xml',
+ # source_dir: meson.current_source_directory(),
+)
diff --git a/plug-ins/imagemap/meson.build b/plug-ins/imagemap/meson.build
new file mode 100644
index 0000000000..238bd4096c
--- /dev/null
+++ b/plug-ins/imagemap/meson.build
@@ -0,0 +1,161 @@
+subdir('images')
+
+plugin_name = 'imagemap'
+
+plugin_sources = [
+ 'imap_about.c',
+ 'imap_browse.c',
+ 'imap_cern_lex.c',
+ 'imap_cern_parse.c',
+ 'imap_circle.c',
+ 'imap_cmd_clear.c',
+ 'imap_cmd_copy_object.c',
+ 'imap_cmd_copy.c',
+ 'imap_cmd_create.c',
+ 'imap_cmd_cut_object.c',
+ 'imap_cmd_cut.c',
+ 'imap_cmd_delete_point.c',
+ 'imap_cmd_delete.c',
+ 'imap_cmd_edit_object.c',
+ 'imap_cmd_gimp_guides.c',
+ 'imap_cmd_guides.c',
+ 'imap_cmd_insert_point.c',
+ 'imap_cmd_move_down.c',
+ 'imap_cmd_move_sash.c',
+ 'imap_cmd_move_selected.c',
+ 'imap_cmd_move_to_front.c',
+ 'imap_cmd_move_up.c',
+ 'imap_cmd_move.c',
+ 'imap_cmd_object_down.c',
+ 'imap_cmd_object_move.c',
+ 'imap_cmd_object_up.c',
+ 'imap_cmd_paste.c',
+ 'imap_cmd_select_all.c',
+ 'imap_cmd_select_next.c',
+ 'imap_cmd_select_prev.c',
+ 'imap_cmd_select_region.c',
+ 'imap_cmd_select.c',
+ 'imap_cmd_send_to_back.c',
+ 'imap_cmd_unselect_all.c',
+ 'imap_cmd_unselect.c',
+ 'imap_command.c',
+ 'imap_csim_lex.c',
+ 'imap_csim_parse.c',
+ 'imap_default_dialog.c',
+ 'imap_edit_area_info.c',
+ 'imap_file.c',
+ 'imap_grid.c',
+ 'imap_icons.c',
+ 'imap_main.c',
+ 'imap_menu_funcs.c',
+ 'imap_menu.c',
+ 'imap_misc.c',
+ 'imap_mru.c',
+ 'imap_ncsa_lex.c',
+ 'imap_ncsa_parse.c',
+ 'imap_object_popup.c',
+ 'imap_object.c',
+ 'imap_polygon.c',
+ 'imap_preferences.c',
+ 'imap_preview.c',
+ 'imap_rectangle.c',
+ 'imap_selection.c',
+ 'imap_settings.c',
+ 'imap_source.c',
+ 'imap_statusbar.c',
+ 'imap_string.c',
+ 'imap_taglist.c',
+ 'imap_ui_grid.c',
+ imagemap_icon_sources,
+]
+
+if platform_windows
+ plugin_sources += windows.compile_resources(
+ gimp_plugins_rc,
+ args: [
+ '--define', 'ORIGINALFILENAME_STR="@0@"'.format(plugin_name+'.exe'),
+ '--define', 'INTERNALNAME_STR="@0@"' .format(plugin_name),
+ '--define', 'TOP_SRCDIR="@0@"' .format(meson.source_root()),
+ ],
+ include_directories: [
+ rootInclude, appInclude,
+ ],
+ )
+endif
+executable(plugin_name,
+ plugin_sources,
+ include_directories: [ rootInclude, ],
+ dependencies: [
+ gtk3, gegl, math,
+ ],
+ link_with: [
+ libgimp,
+ libgimpbase,
+ libgimpcolor,
+ libgimpconfig,
+ libgimpmath,
+ libgimpui,
+ libgimpwidgets,
+ ],
+ install: true,
+ install_dir: gimpplugindir / 'plug-ins' / plugin_name,
+)
+
+
+
+flex = find_program('flex', required: false)
+bison = find_program('bison', required: false)
+
+if flex.found() and bison.found()
+
+ syntaxes = [
+ 'cern',
+ 'csim',
+ 'ncsa',
+ ]
+
+ foreach syntax : syntaxes
+
+ syntax_prefix = syntax + '_'
+ imapname = 'imap_' + syntax
+
+ custom_target(
+ imapname + '_lex.c',
+ input : imapname + '.l' ,
+ output: imapname + '_lex.c',
+ command: [
+ flex,
+ '--case-insensitive',
+ '--prefix', syntax_prefix,
+ '--outfile', '@OUTPUT@',
+ '@INPUT@',
+ ],
+ )
+
+ custom_target(
+ imapname + '_parse.c',
+ input : imapname + '.y' ,
+ output: imapname + '_parse.c',
+ command: [
+ bison, '--yacc',
+ '-d',
+ '--name-prefix', syntax_prefix,
+ '@INPUT@'
+ ],
+ )
+
+ custom_target(
+ imapname + '_parse.h',
+ input : imapname + '.y' ,
+ output: imapname + '_parse.h',
+ command: [
+ bison, '--yacc',
+ '-d',
+ '--name-prefix', syntax_prefix,
+ '--output', '@OUTPUT@',
+ '@INPUT@'
+ ],
+ )
+
+ endforeach
+endif
diff --git a/plug-ins/lighting/images/meson.build b/plug-ins/lighting/images/meson.build
new file mode 100644
index 0000000000..93e65a4912
--- /dev/null
+++ b/plug-ins/lighting/images/meson.build
@@ -0,0 +1,18 @@
+stock_icons = [
+ 'lighting-intensity-ambient-high.png',
+ 'lighting-intensity-ambient-low.png',
+ 'lighting-intensity-diffuse-high.png',
+ 'lighting-intensity-diffuse-low.png',
+ 'lighting-reflectivity-diffuse-high.png',
+ 'lighting-reflectivity-diffuse-low.png',
+ 'lighting-reflectivity-highlight-high.png',
+ 'lighting-reflectivity-highlight-low.png',
+ 'lighting-reflectivity-specular-high.png',
+ 'lighting-reflectivity-specular-low.png',
+]
+
+lighting_icon_sources = gnome.compile_resources(
+ 'lighting-icon-images',
+ 'lighting-icon-images.gresource.xml',
+ # source_dir: meson.current_source_directory(),
+)
diff --git a/plug-ins/lighting/meson.build b/plug-ins/lighting/meson.build
new file mode 100644
index 0000000000..a3b042009d
--- /dev/null
+++ b/plug-ins/lighting/meson.build
@@ -0,0 +1,47 @@
+subdir('images')
+
+plugin_name = 'lighting'
+
+plugin_sources = [
+ 'lighting-apply.c',
+ 'lighting-icons.c',
+ 'lighting-image.c',
+ 'lighting-main.c',
+ 'lighting-preview.c',
+ 'lighting-shade.c',
+ 'lighting-ui.c',
+ lighting_icon_sources,
+]
+
+if platform_windows
+ plugin_sources += windows.compile_resources(
+ gimp_plugins_rc,
+ args: [
+ '--define', 'ORIGINALFILENAME_STR="@0@"'.format(plugin_name+'.exe'),
+ '--define', 'INTERNALNAME_STR="@0@"' .format(plugin_name),
+ '--define', 'TOP_SRCDIR="@0@"' .format(meson.source_root()),
+ ],
+ include_directories: [
+ rootInclude, appInclude,
+ ],
+ )
+endif
+
+executable(plugin_name,
+ plugin_sources,
+ include_directories: [ rootInclude, include_directories('.'), ],
+ dependencies: [
+ gtk3, gegl, math,
+ ],
+ link_with: [
+ libgimp,
+ libgimpbase,
+ libgimpcolor,
+ libgimpconfig,
+ libgimpmath,
+ libgimpui,
+ libgimpwidgets,
+ ],
+ install: true,
+ install_dir: gimpplugindir / 'plug-ins' / plugin_name,
+)
diff --git a/plug-ins/map-object/meson.build b/plug-ins/map-object/meson.build
new file mode 100644
index 0000000000..2723901bc3
--- /dev/null
+++ b/plug-ins/map-object/meson.build
@@ -0,0 +1,48 @@
+plugin_name = 'map-object'
+
+plugin_sources = [
+ 'arcball.c',
+ 'map-object-apply.c',
+ 'map-object-icons.c',
+ 'map-object-image.c',
+ 'map-object-main.c',
+ 'map-object-preview.c',
+ 'map-object-shade.c',
+ 'map-object-ui.c',
+ lighting_icon_sources,
+]
+
+if platform_windows
+ plugin_sources += windows.compile_resources(
+ gimp_plugins_rc,
+ args: [
+ '--define', 'ORIGINALFILENAME_STR="@0@"'.format(plugin_name+'.exe'),
+ '--define', 'INTERNALNAME_STR="@0@"' .format(plugin_name),
+ '--define', 'TOP_SRCDIR="@0@"' .format(meson.source_root()),
+ ],
+ include_directories: [
+ rootInclude, appInclude,
+ ],
+ )
+endif
+
+
+executable(plugin_name,
+ plugin_sources,
+
+ include_directories: [ rootInclude, ],
+ dependencies: [
+ gtk3, gegl, math,
+ ],
+ link_with: [
+ libgimp,
+ libgimpbase,
+ libgimpcolor,
+ libgimpconfig,
+ libgimpmath,
+ libgimpui,
+ libgimpwidgets,
+ ],
+ install: true,
+ install_dir: gimpplugindir / 'plug-ins' / plugin_name,
+)
diff --git a/plug-ins/meson.build b/plug-ins/meson.build
new file mode 100644
index 0000000000..a0b6c8e8c4
--- /dev/null
+++ b/plug-ins/meson.build
@@ -0,0 +1,36 @@
+subdir('common')
+subdir('file-bmp')
+subdir('file-dds')
+subdir('file-exr')
+subdir('file-faxg3')
+subdir('file-fits')
+subdir('file-fli')
+subdir('file-ico')
+subdir('file-jpeg')
+subdir('file-psd')
+subdir('file-raw')
+subdir('file-sgi')
+subdir('file-tiff')
+subdir('file-webp')
+subdir('flame')
+subdir('fractal-explorer')
+subdir('gfig')
+subdir('gimpressionist')
+subdir('goat-exercises')
+subdir('gradient-flare')
+subdir('help')
+subdir('help-browser')
+subdir('ifs-compose')
+subdir('imagemap')
+subdir('lighting')
+subdir('map-object')
+subdir('metadata')
+subdir('pagecurl')
+subdir('print')
+# subdir('pygimp')
+subdir('python')
+subdir('screenshot')
+subdir('script-fu')
+subdir('selection-to-path')
+subdir('twain')
+subdir('ui')
diff --git a/plug-ins/metadata/meson.build b/plug-ins/metadata/meson.build
new file mode 100644
index 0000000000..41ea75ac2b
--- /dev/null
+++ b/plug-ins/metadata/meson.build
@@ -0,0 +1,94 @@
+
+plugin_name = 'metadata-editor'
+
+plugin_sources = [
+ 'metadata-editor.c',
+ 'metadata-impexp.c',
+ 'metadata-xml.c',
+]
+
+if platform_windows
+ plugin_rc = configure_file(
+ input : gimp_plugins_rc,
+ output: plugin_name + '.rc',
+ copy: true,
+ )
+ plugin_sources += windows.compile_resources(
+ plugin_rc,
+ args: [
+ '--define', 'ORIGINALFILENAME_STR="@0@"'.format(plugin_name+'.exe'),
+ '--define', 'INTERNALNAME_STR="@0@"' .format(plugin_name),
+ '--define', 'TOP_SRCDIR="@0@"' .format(meson.source_root()),
+ ],
+ include_directories: [
+ rootInclude, appInclude,
+ ],
+ )
+endif
+
+executable(plugin_name,
+ plugin_sources,
+ include_directories: [ rootInclude, ],
+ dependencies: [
+ gtk3, gegl, gexiv2,
+ ],
+ link_with: [
+ libgimp,
+ libgimpbase,
+ libgimpcolor,
+ libgimpconfig,
+ libgimpmath,
+ libgimpui,
+ libgimpwidgets,
+ ],
+ install: true,
+ install_dir: gimpplugindir / 'plug-ins' / plugin_name,
+)
+
+###############################################################################
+
+plugin_name = 'metadata-viewer'
+
+plugin_sources = [
+ 'metadata-viewer.c',
+]
+
+if platform_windows
+ plugin_rc = configure_file(
+ input : gimp_plugins_rc,
+ output: plugin_name + '.rc',
+ copy: true,
+ )
+ plugin_sources += windows.compile_resources(
+ plugin_rc,
+ args: [
+ '--define', 'ORIGINALFILENAME_STR="@0@"'.format(plugin_name+'.exe'),
+ '--define', 'INTERNALNAME_STR="@0@"' .format(plugin_name),
+ '--define', 'TOP_SRCDIR="@0@"' .format(meson.source_root()),
+ ],
+ include_directories: [
+ rootInclude, appInclude,
+ ],
+ )
+endif
+
+executable(plugin_name,
+ [
+ 'metadata-viewer.c',
+ ],
+ include_directories: [ rootInclude, ],
+ dependencies: [
+ gtk3, gegl, gexiv2,
+ ],
+ link_with: [
+ libgimp,
+ libgimpbase,
+ libgimpcolor,
+ libgimpconfig,
+ libgimpmath,
+ libgimpui,
+ libgimpwidgets,
+ ],
+ install: true,
+ install_dir: gimpplugindir / 'plug-ins' / plugin_name,
+)
diff --git a/plug-ins/pagecurl/meson.build b/plug-ins/pagecurl/meson.build
new file mode 100644
index 0000000000..8222c5a913
--- /dev/null
+++ b/plug-ins/pagecurl/meson.build
@@ -0,0 +1,71 @@
+plugin_name = 'pagecurl'
+
+plugin_sources = [
+ 'pagecurl.c',
+]
+
+pagecurl_icons_images = [
+ 'curl0.png',
+ 'curl1.png',
+ 'curl2.png',
+ 'curl3.png',
+ 'curl4.png',
+ 'curl5.png',
+ 'curl6.png',
+ 'curl7.png',
+]
+resourcename = 'pagecurl-icons'
+xml_content = '<?xml version="1.0" encoding="UTF-8"?>\n'
+xml_content += '<gresources>\n'
+xml_content += ' <gresource prefix="/org/gimp/icons">\n'
+foreach file : pagecurl_icons_images
+ xml_content+=' <file preprocess="to-pixdata">'+ file +'</file>\n'
+endforeach
+xml_content += ' </gresource>\n'
+xml_content += '</gresources>\n'
+
+xml_file = configure_file(
+ output: resourcename + '.gresource.xml',
+ command: [ 'echo', xml_content ],
+ capture: true,
+)
+
+plugin_sources += gnome.compile_resources(
+ resourcename,
+ xml_file,
+ c_name: resourcename.underscorify(),
+)
+
+
+if platform_windows
+ plugin_sources += windows.compile_resources(
+ gimp_plugins_rc,
+ args: [
+ '--define', 'ORIGINALFILENAME_STR="@0@"'.format(plugin_name+'.exe'),
+ '--define', 'INTERNALNAME_STR="@0@"' .format(plugin_name),
+ '--define', 'TOP_SRCDIR="@0@"' .format(meson.source_root()),
+ ],
+ include_directories: [
+ rootInclude, appInclude,
+ ],
+ )
+endif
+
+executable(plugin_name,
+ plugin_sources,
+ include_directories: [ rootInclude, ],
+ dependencies: [
+ gtk3, gegl, math,
+ ],
+ link_with: [
+ libgimp,
+ libgimpbase,
+ libgimpcolor,
+ libgimpconfig,
+ libgimpmath,
+ libgimpui,
+ libgimpwidgets,
+ ],
+ install: true,
+ install_dir: gimpplugindir / 'plug-ins' / plugin_name,
+)
diff --git a/plug-ins/print/meson.build b/plug-ins/print/meson.build
new file mode 100644
index 0000000000..1b8ed35651
--- /dev/null
+++ b/plug-ins/print/meson.build
@@ -0,0 +1,49 @@
+if have_print
+
+
+plugin_name = 'print'
+
+plugin_sources = [
+ 'print-draw-page.c',
+ 'print-page-layout.c',
+ 'print-page-setup.c',
+ 'print-preview.c',
+ 'print-settings.c',
+ 'print-utils.c',
+ 'print.c',
+]
+
+if platform_windows
+ plugin_sources += windows.compile_resources(
+ gimp_plugins_rc,
+ args: [
+ '--define', 'ORIGINALFILENAME_STR="@0@"'.format(plugin_name+'.exe'),
+ '--define', 'INTERNALNAME_STR="@0@"' .format(plugin_name),
+ '--define', 'TOP_SRCDIR="@0@"' .format(meson.source_root()),
+ ],
+ include_directories: [
+ rootInclude, appInclude,
+ ],
+ )
+endif
+
+executable(plugin_name,
+ plugin_sources,
+ include_directories: [ rootInclude, ],
+ dependencies: [
+ gtk3, gegl,
+ ],
+ link_with: [
+ libgimp,
+ libgimpbase,
+ libgimpcolor,
+ libgimpconfig,
+ libgimpmath,
+ libgimpui,
+ libgimpwidgets,
+ ],
+ install: true,
+ install_dir: gimpplugindir / 'plug-ins' / plugin_name,
+)
+
+endif
diff --git a/plug-ins/pygimp/doc/meson.build b/plug-ins/pygimp/doc/meson.build
new file mode 100644
index 0000000000..fdc425393a
--- /dev/null
+++ b/plug-ins/pygimp/doc/meson.build
@@ -0,0 +1,25 @@
+
+pygimp_ps = custom_target('pygimp.ps',
+ input : [ 'pygimp.sgml' ],
+ output: [ 'pygimp.ps' ],
+ command: [
+ 'db2ps',
+ '@INPUT@'
+ ],
+)
+pygimp_pdf = custom_target('pygimp.pdf',
+ input : [ 'pygimp.sgml' ],
+ output: [ 'pygimp.pdf' ],
+ command: [
+ 'db2pdf',
+ '@INPUT@'
+ ],
+)
+pygimp_html = custom_target('pygimp.html',
+ input : [ 'pygimp.sgml' ],
+ output: [ 'pygimp.html' ],
+ command: [
+ 'db2html', '--nochunks',
+ '@INPUT@'
+ ],
+)
diff --git a/plug-ins/pygimp/meson.build b/plug-ins/pygimp/meson.build
new file mode 100644
index 0000000000..f0edf37ad3
--- /dev/null
+++ b/plug-ins/pygimp/meson.build
@@ -0,0 +1,155 @@
+if have_python
+
+subdir('doc')
+subdir('plug-ins')
+
+# pwd = meson.current_source_dir()
+# pygtk_generator = generator(pygobjectcodegen,
+# arguments: [
+# '--override', pwd / '@BASENAME@.override',
+# '--register', pygtk_defsdir / 'gdk-types.defs',
+# '--register', pygtk_defsdir / 'gtk-types.defs',
+# '--register', pwd / 'gimp-types.defs',
+# '--register', pwd / 'gimpcolor-types.defs',
+# '--register', pwd / 'gimpenums-types.defs',
+# '--prefix', '@BASENAME@',
+# '@INPUT@',
+# ],
+# output: '@BASENAME@.c',
+# capture: true,
+# )
+
+
+python_so_libs = [
+ {
+ 'name': 'gimp',
+ 'srcs': [
+ 'gimpmodule.c',
+ 'pygimp-display.c',
+ 'pygimp-drawable.c',
+ 'pygimp-image.c',
+ 'pygimp-item.c',
+ 'pygimp-parasite.c',
+ 'pygimp-pdb.c',
+ 'pygimp-tile.c',
+ 'pygimp-vectors.c',
+ ],
+ 'deps': [
+ py2cairo,
+ cairo,
+ gtk3,
+ ],
+ 'link': [
+ libgimp,
+ libgimpbase,
+ libgimpcolor,
+ libgimpui,
+ ],
+ },
+ { 'name': '_gimpenums',
+ 'srcs': 'gimpenumsmodule.c',
+ 'deps': [
+ gobject,
+ cairo,
+ gtk3,
+ ],
+ 'link': [
+ libgimp,
+ libgimpbase,
+ ],
+ },
+ { 'name': '_gimpui',
+ 'srcs': 'gimpuimodule.c',
+ 'deps': [
+ py2cairo,
+ gtk3,
+ ],
+ 'link': [
+ libgimp,
+ libgimpbase,
+ libgimpcolor,
+ libgimpconfig,
+ libgimpui,
+ libgimpwidgets
+ ],
+ },
+ { 'name': 'gimpcolor',
+ 'srcs': [
+ 'gimpcolormodule.c',
+ 'pygimp-colors.c',
+ ],
+ 'deps': [
+ cairo
+ ],
+ 'link': [
+ libgimpcolor,
+ ],
+ },
+ { 'name': 'gimpthumb',
+ 'srcs': 'gimpthumbmodule.c',
+ 'deps': [],
+ 'link': [
+ libgimpthumb,
+ ],
+ },
+]
+
+foreach pylib : python_so_libs
+ name = pylib.get('name')
+ srcs = pylib.get('srcs')
+ deps = pylib.get('deps')
+ link = pylib.get('link')
+
+ shared_library(name,
+ srcs,
+ include_directories: [ rootInclude, ],
+ dependencies: deps + [
+ libpython2, py2gobject,
+ gdk_pixbuf, gegl,
+ ],
+ link_with: link,
+ c_args: '-DGIMP_DEPRECATED_REPLACE_NEW_API',
+ name_prefix: '',
+ install: true,
+ install_dir: gimpplugindir / 'python',
+ )
+endforeach
+
+
+
+install_data([
+ 'gimpenums.py',
+ 'gimpfu.py',
+ 'gimpplugin.py',
+ 'gimpshelf.py',
+ 'gimpui.py',
+ 'pygimp-logo.png',
+ ],
+ install_dir: gimpplugindir / 'python',
+)
+
+path_separator = platform_windows ? ';' : ':'
+
+custom_target('pygimp.env',
+ output: [ 'pygimp.env' ],
+ command: [
+ 'echo', path_separator + ' PYTHONPATH=${gimp_plug_in_dir}/python'
+ ],
+ capture: true,
+ install: true,
+ install_dir: gimpplugindir / 'environ',
+)
+custom_target('pygimp.interp',
+ output: [ 'pygimp.interp' ],
+ command: [ 'echo',
+ 'python=' + python2.path() + '\n' +
+ 'python2=' + python2.path() + '\n' +
+ '/usr/bin/python=' + python2.path() + '\n' +
+ ':Python:E::py::python2:'
+ ],
+ capture: true,
+ install: true,
+ install_dir: gimpplugindir / 'interpreters',
+)
+
+endif
diff --git a/plug-ins/pygimp/plug-ins/meson.build b/plug-ins/pygimp/plug-ins/meson.build
new file mode 100644
index 0000000000..95f08901fd
--- /dev/null
+++ b/plug-ins/pygimp/plug-ins/meson.build
@@ -0,0 +1,27 @@
+plugins = [
+ 'colorxhtml',
+ 'foggify',
+ 'gradients-save-as-css',
+ 'histogram-export',
+ 'palette-sort',
+ 'py-slice',
+ 'python-eval',
+ 'spyro_plus',
+]
+
+if not stable
+ plugins += [
+ 'benchmark-foreground-extract',
+ 'clothify',
+ 'shadow_bevel',
+ 'sphere',
+ 'whirlpinch',
+ ]
+endif
+
+foreach plugin : plugins
+ name = plugin
+ srcs = name + '.py'
+
+ install_data(srcs, install_dir: gimpplugindir / name)
+endforeach
diff --git a/plug-ins/python/meson.build b/plug-ins/python/meson.build
new file mode 100644
index 0000000000..302a72a8cd
--- /dev/null
+++ b/plug-ins/python/meson.build
@@ -0,0 +1,53 @@
+if have_python
+
+plugins = [
+ { 'name': 'file-openraster' },
+ { 'name': 'foggify' },
+ { 'name': 'palette-offset' },
+ { 'name': 'palette-to-gradient' },
+ { 'name': 'py-slice' },
+ { 'name': 'spyro-plus' },
+
+ # { 'name': 'colorxhtml' },
+ # { 'name': 'gradients-save-as-css' },
+ # { 'name': 'histogram-export' },
+ # { 'name': 'palette-sort' },
+ # { 'name': 'python-eval' },
+]
+
+if not stable
+ plugins += [
+ # { 'name': 'benchmark-foreground-extract', },
+ # { 'name': 'clothify', },
+ # { 'name': 'shadow_bevel', },
+ # { 'name': 'sphere', },
+ # { 'name': 'whirlpinch', },
+ ]
+endif
+
+subdir('python-console')
+
+foreach plugin : plugins
+ name = plugin.get('name')
+ srcs = plugin.get('srcs', name + '.py')
+
+ install_data(srcs, install_dir: gimpplugindir / name)
+endforeach
+
+
+if python.found()
+ custom_target('pygimp.interp',
+ output: 'pygimp.interp',
+ command: [ 'echo',
+ 'python=@0@\n' .format(python.path()),
+ 'python3=@0@\n' .format(python.path()),
+ '/usr/bin/python=@0@\n' .format(python.path()),
+ ':Python:E::py::python3:'
+ ],
+ capture: true,
+ install: true,
+ install_dir: gimpplugindir / 'interpreters',
+ )
+endif
+
+endif
diff --git a/plug-ins/python/python-console/meson.build b/plug-ins/python/python-console/meson.build
new file mode 100644
index 0000000000..2399c14cbf
--- /dev/null
+++ b/plug-ins/python/python-console/meson.build
@@ -0,0 +1,5 @@
+
+plugins += {
+ 'name': 'python-console',
+ 'srcs': files('pyconsole.py', 'python-console.py'),
+}
diff --git a/plug-ins/screenshot/meson.build b/plug-ins/screenshot/meson.build
new file mode 100644
index 0000000000..7f4ef677ae
--- /dev/null
+++ b/plug-ins/screenshot/meson.build
@@ -0,0 +1,38 @@
+if have_screenshot
+
+plugin_sources = [
+ 'screenshot-freedesktop.c',
+ 'screenshot-gnome-shell.c',
+ 'screenshot-kwin.c',
+ 'screenshot-osx.c',
+ 'screenshot-win32.c',
+ 'screenshot-x11.c',
+ 'screenshot.c',
+]
+
+if platform_windows
+ plugin_sources += windows.compile_resources('screenshot-win32.rc')
+endif
+
+
+screenshot = executable('screenshot',
+ plugin_sources,
+ include_directories: [ rootInclude, ],
+ dependencies: [
+ gtk3, gegl,
+ x11, xmu, xext, xfixes,
+ ],
+ link_with: [
+ libgimp,
+ libgimpbase,
+ libgimpcolor,
+ libgimpconfig,
+ libgimpmath,
+ libgimpui,
+ libgimpwidgets,
+ ],
+ install: true,
+ install_dir: gimpplugindir / 'plug-ins' / plugin_name,
+)
+
+endif
diff --git a/plug-ins/script-fu/ftx/meson.build b/plug-ins/script-fu/ftx/meson.build
new file mode 100644
index 0000000000..b5117c784e
--- /dev/null
+++ b/plug-ins/script-fu/ftx/meson.build
@@ -0,0 +1,12 @@
+
+scriptfu_ftx = static_library('scriptfu-ftx',
+ 'ftx.c',
+ include_directories: [ rootInclude, scriptfu_incdir, ],
+ dependencies: [
+ glib,
+ ],
+ c_args: [
+ '-DUSE_INTERFACE=1',
+ ],
+ install: false,
+)
diff --git a/plug-ins/script-fu/meson.build b/plug-ins/script-fu/meson.build
new file mode 100644
index 0000000000..d8fff07da1
--- /dev/null
+++ b/plug-ins/script-fu/meson.build
@@ -0,0 +1,63 @@
+scriptfu_incdir = include_directories('.')
+
+subdir('tinyscheme')
+subdir('ftx')
+subdir('scripts')
+
+plugin_name = 'script-fu'
+
+plugin_sources = [
+ 'scheme-wrapper.c',
+ 'script-fu-console.c',
+ 'script-fu-eval.c',
+ 'script-fu-interface.c',
+ 'script-fu-regex.c',
+ 'script-fu-script.c',
+ 'script-fu-scripts.c',
+ 'script-fu-server.c',
+ 'script-fu-text-console.c',
+ 'script-fu-utils.c',
+ 'script-fu.c',
+]
+
+if platform_windows
+ plugin_sources += windows.compile_resources(
+ gimp_plugins_rc,
+ args: [
+ '--define', 'ORIGINALFILENAME_STR="@0@"'.format(plugin_name+'.exe'),
+ '--define', 'INTERNALNAME_STR="@0@"' .format(plugin_name),
+ '--define', 'TOP_SRCDIR="@0@"' .format(meson.source_root()),
+ ],
+ include_directories: [
+ rootInclude, appInclude,
+ ],
+ )
+endif
+
+executable(plugin_name,
+ plugin_sources,
+ include_directories: [ rootInclude, ],
+ dependencies: [
+ gegl, gtk3, math, winsock,
+ ],
+ c_args: [
+ '-DSTANDALONE=0',
+ '-DUSE_INTERFACE=1',
+ '-DUSE_STRLWR=0',
+ ],
+ link_whole: [
+ scriptfu_tinyscheme,
+ scriptfu_ftx,
+ ],
+ link_with: [
+ libgimp,
+ libgimpbase,
+ libgimpcolor,
+ libgimpconfig,
+ libgimpmath,
+ libgimpui,
+ libgimpwidgets,
+ ],
+ install: true,
+ install_dir: gimpplugindir / 'plug-ins' / plugin_name,
+)
diff --git a/plug-ins/script-fu/scripts/images/meson.build b/plug-ins/script-fu/scripts/images/meson.build
new file mode 100644
index 0000000000..12d54938c8
--- /dev/null
+++ b/plug-ins/script-fu/scripts/images/meson.build
@@ -0,0 +1,9 @@
+install_data([
+ 'beavis.jpg',
+ 'texture.jpg',
+ 'texture1.jpg',
+ 'texture2.jpg',
+ 'texture3.jpg',
+ ],
+ install_dir: gimpdatadir / 'scripts' / 'images',
+)
diff --git a/plug-ins/script-fu/scripts/meson.build b/plug-ins/script-fu/scripts/meson.build
new file mode 100644
index 0000000000..840f954240
--- /dev/null
+++ b/plug-ins/script-fu/scripts/meson.build
@@ -0,0 +1,68 @@
+subdir('images')
+
+scripts = [
+ 'add-bevel.scm',
+ 'addborder.scm',
+ 'blend-anim.scm',
+ 'burn-in-anim.scm',
+ 'carve-it.scm',
+ 'chrome-it.scm',
+ 'circuit.scm',
+ 'clothify.scm',
+ 'coffee.scm',
+ 'copy-visible.scm',
+ 'difference-clouds.scm',
+ 'distress-selection.scm',
+ 'drop-shadow.scm',
+ 'erase-rows.scm',
+ 'font-map.scm',
+ 'fuzzyborder.scm',
+ 'gimp-online.scm',
+ 'gradient-example.scm',
+ 'grid-system.scm',
+ 'guides-from-selection.scm',
+ 'guides-new-percent.scm',
+ 'guides-new.scm',
+ 'guides-remove-all.scm',
+ 'lava.scm',
+ 'line-nova.scm',
+ 'mkbrush.scm',
+ 'old-photo.scm',
+ 'palette-export.scm',
+ 'paste-as-brush.scm',
+ 'paste-as-pattern.scm',
+ 'perspective-shadow.scm',
+ 'plug-in-compat.init',
+ 'predator.scm',
+ 'reverse-layers.scm',
+ 'ripply-anim.scm',
+ 'round-corners.scm',
+ 'script-fu-compat.init',
+ 'script-fu-set-cmap.scm',
+ 'script-fu-util.scm',
+ 'script-fu.init',
+ 'select-to-brush.scm',
+ 'select-to-image.scm',
+ 'select-to-pattern.scm',
+ 'selection-round.scm',
+ 'slide.scm',
+ 'spinning-globe.scm',
+ 'tileblur.scm',
+ 'unsharp-mask.scm',
+ 'waves-anim.scm',
+ 'weave.scm',
+ 'xach-effect.scm',
+]
+
+if not stable
+ scripts += [
+ 'contactsheet.scm',
+ 'test-sphere.scm',
+ 'ts-helloworld.scm',
+ ]
+endif
+
+install_data(
+ scripts,
+ install_dir: gimpdatadir / 'scripts',
+)
diff --git a/plug-ins/script-fu/tinyscheme/meson.build b/plug-ins/script-fu/tinyscheme/meson.build
new file mode 100644
index 0000000000..45981df8db
--- /dev/null
+++ b/plug-ins/script-fu/tinyscheme/meson.build
@@ -0,0 +1,16 @@
+
+scriptfu_tinyscheme = static_library('scriptfu-tinyscheme',
+ 'scheme.c',
+ include_directories: [ rootInclude, ],
+ dependencies: [
+ glib,
+ ],
+ c_args: [
+ '-DSTANDALONE=0',
+ '-DUSE_ASCII_NAMES=0',
+ '-DUSE_INTERFACE=1',
+ '-DUSE_MATH=1',
+ '-DUSE_STRLWR=0',
+ ],
+ install: false,
+)
diff --git a/plug-ins/selection-to-path/meson.build b/plug-ins/selection-to-path/meson.build
new file mode 100644
index 0000000000..17fe4cc7a3
--- /dev/null
+++ b/plug-ins/selection-to-path/meson.build
@@ -0,0 +1,49 @@
+plugin_name = 'selection-to-path'
+
+plugin_sources = [
+ 'curve.c',
+ 'edge.c',
+ 'fit.c',
+ 'math.c',
+ 'pxl-outline.c',
+ 'selection-to-path-dialog.c',
+ 'selection-to-path.c',
+ 'spline.c',
+ 'vector.c',
+]
+
+if platform_windows
+ plugin_sources += windows.compile_resources(
+ gimp_plugins_rc,
+ args: [
+ '--define', 'ORIGINALFILENAME_STR="@0@"'.format(plugin_name+'.exe'),
+ '--define', 'INTERNALNAME_STR="@0@"' .format(plugin_name),
+ '--define', 'TOP_SRCDIR="@0@"' .format(meson.source_root()),
+ ],
+ include_directories: [
+ rootInclude, appInclude,
+ ],
+ )
+endif
+
+plugin_selection_to_path_link = [
+ libgimp,
+ libgimpbase,
+ libgimpcolor,
+ libgimpconfig,
+ libgimpmath,
+ libgimpui,
+ libgimpwidgets,
+]
+plugin_selection_to_path_deps = [
+ gegl, gtk3, math,
+]
+
+selection_to_path = executable(plugin_name,
+ plugin_sources,
+ include_directories: [ rootInclude, ],
+ link_with: plugin_selection_to_path_link,
+ dependencies: plugin_selection_to_path_deps,
+ install: true,
+ install_dir: gimpplugindir / 'plug-ins' / plugin_name,
+)
diff --git a/plug-ins/twain/meson.build b/plug-ins/twain/meson.build
new file mode 100644
index 0000000000..181f611b01
--- /dev/null
+++ b/plug-ins/twain/meson.build
@@ -0,0 +1,39 @@
+if platform_windows
+
+plugin_name = 'twain'
+
+plugin_sources = [
+ 'tw_func.c',
+ 'tw_util.c',
+ 'tw_win.c',
+ 'twain.c',
+]
+
+plugin_sources += windows.compile_resources(
+ gimp_plugins_rc,
+ args: [
+ '--define', 'ORIGINALFILENAME_STR="@0@"'.format(plugin_name+'.exe'),
+ '--define', 'INTERNALNAME_STR="@0@"' .format(plugin_name),
+ '--define', 'TOP_SRCDIR="@0@"' .format(meson.source_root()),
+ ],
+ include_directories: [
+ rootInclude, appInclude,
+ ],
+)
+
+twain = executable(plugin_name,
+ plugin_sources,
+ include_directories: [ rootInclude, ],
+ dependencies: [
+ glib, gtk3, gegl,
+ ],
+ link_with: [
+ libgimp,
+ libgimpcolor,
+ libgimpbase,
+ ],
+ install: true,
+ install_dir: gimpplugindir / 'plug-ins' / plugin_name,
+)
+
+endif
diff --git a/plug-ins/ui/meson.build b/plug-ins/ui/meson.build
new file mode 100644
index 0000000000..66ec2b0cd6
--- /dev/null
+++ b/plug-ins/ui/meson.build
@@ -0,0 +1,13 @@
+plugin_ui = [
+ 'plug-in-file-gif.ui',
+ 'plug-in-file-png.ui',
+ 'plug-in-file-raw.ui',
+ 'plug-in-file-tiff.ui',
+ 'plug-in-metadata-editor-calendar.ui',
+ 'plug-in-metadata-editor.ui',
+ 'plug-in-metadata-viewer.ui',
+]
+
+install_data(plugin_ui,
+ install_dir: gimpdatadir / 'ui' / 'plug-ins',
+)
diff --git a/po-libgimp/meson.build b/po-libgimp/meson.build
new file mode 100644
index 0000000000..9dbc5a5232
--- /dev/null
+++ b/po-libgimp/meson.build
@@ -0,0 +1 @@
+i18n.gettext(gettext_package + '-libgimp', preset: 'glib')
diff --git a/po-plug-ins/meson.build b/po-plug-ins/meson.build
new file mode 100644
index 0000000000..30c6f6f987
--- /dev/null
+++ b/po-plug-ins/meson.build
@@ -0,0 +1 @@
+i18n.gettext(gettext_package + '-std-plug-ins', preset: 'glib')
diff --git a/po-python/meson.build b/po-python/meson.build
new file mode 100644
index 0000000000..9ebb6cbe85
--- /dev/null
+++ b/po-python/meson.build
@@ -0,0 +1 @@
+i18n.gettext(gettext_package + '-python', preset: 'glib')
diff --git a/po-script-fu/meson.build b/po-script-fu/meson.build
new file mode 100644
index 0000000000..e4ed2fa285
--- /dev/null
+++ b/po-script-fu/meson.build
@@ -0,0 +1 @@
+i18n.gettext(gettext_package + '-script-fu', preset: 'glib')
diff --git a/po-tags/meson.build b/po-tags/meson.build
new file mode 100644
index 0000000000..9d943cbae9
--- /dev/null
+++ b/po-tags/meson.build
@@ -0,0 +1 @@
+potags_dir = meson.current_source_dir()
diff --git a/po-tips/meson.build b/po-tips/meson.build
new file mode 100644
index 0000000000..070950ec74
--- /dev/null
+++ b/po-tips/meson.build
@@ -0,0 +1,2 @@
+potips_dir = meson.current_source_dir()
+i18n.gettext(gettext_package + '-tips', preset: 'glib')
diff --git a/po-windows-installer/meson.build b/po-windows-installer/meson.build
new file mode 100644
index 0000000000..34a26b2108
--- /dev/null
+++ b/po-windows-installer/meson.build
@@ -0,0 +1,2 @@
+po_windows_installer_dir = meson.current_source_dir()
+i18n.gettext(gettext_package + '-windows-installer', preset: 'glib')
diff --git a/po/meson.build b/po/meson.build
new file mode 100644
index 0000000000..84381e7b8c
--- /dev/null
+++ b/po/meson.build
@@ -0,0 +1,2 @@
+po_dir = meson.current_source_dir()
+i18n.gettext(gettext_package, preset: 'glib')
diff --git a/themes/meson.build b/themes/meson.build
new file mode 100644
index 0000000000..1236f7a653
--- /dev/null
+++ b/themes/meson.build
@@ -0,0 +1,11 @@
+
+themes = [
+ 'System',
+]
+
+foreach theme : themes
+ install_data(
+ theme / 'gimp.css',
+ install_dir: gimpdatadir / 'themes' / theme,
+ )
+endforeach
diff --git a/tools/generate_changelog.sh b/tools/generate_changelog.sh
new file mode 100755
index 0000000000..6311626397
--- /dev/null
+++ b/tools/generate_changelog.sh
@@ -0,0 +1,35 @@
+#!/bin/bash
+
+srcdir="$1"
+output="$2"
+
+echo "Creating ${output} based on git log"
+
+gitdir="${srcdir}/.git"
+
+if [[ ! -d "${gitdir}" ]]; then
+ echo "A git checkout and git-log is required to write changelog in ${output}." \
+ | tee ${output} >&2
+ exit 1
+fi
+
+
+CHANGELOG_START=74424325abb54620b370f2595445b2b2a19fe5e7
+
+( \
+ git log "${CHANGELOG_START}^.." --stat "${srcdir}" | fmt --split-only \
+ > "${output}.tmp" \
+ && [ ${PIPESTATUS[0]} -eq 0 ] \
+ && mv "${output}.tmp" "${output}" -f \
+ && echo "Appending ChangeLog.pre-git" \
+ && cat "${srcdir}/ChangeLog.pre-git" >> "${output}" \
+ && exit 0
+) \
+||\
+( \
+ rm "${output}.tmp" -f \
+ && echo "Failed to generate ChangeLog, your ChangeLog may be outdated" >&2 \
+ && (test -f "${output}" \
+ || echo "git-log is required to generate this file" >> "${output}") \
+ && exit 1
+)
diff --git a/tools/meson.build b/tools/meson.build
new file mode 100644
index 0000000000..b7a73f94a7
--- /dev/null
+++ b/tools/meson.build
@@ -0,0 +1,37 @@
+
+if platform_windows
+ gimp_debug_resume = executable('gimp-debug-resume',
+ 'gimp-debug-resume.c',
+ )
+endif
+
+
+gimptool = executable('gimptool-' + gimp_app_version,
+ 'gimptool.c',
+ include_directories: rootInclude,
+ dependencies: [
+ gtk3,
+ ],
+ link_with: [
+ libgimpbase,
+ ],
+ c_args: [
+ '-DDATADIR="@0@"'.format(get_option('datadir')),
+ ],
+ install: true,
+)
+
+executable('gimp-test-clipboard-' + gimp_app_version,
+ 'gimp-test-clipboard.c',
+ include_directories: rootInclude,
+ dependencies: [
+ gtk3,
+ ],
+ install: true,
+)
+
+executable('kernelgen',
+ 'kernelgen.c',
+ include_directories: rootInclude,
+ install: false,
+)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]