From 65eff6f15049f183a9c0fe82594997e071a50b99 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?F=C3=A9lix=20Pi=C3=A9dallu?= Date: Wed, 1 Nov 2017 14:27:13 +0100 Subject: [PATCH] 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 + .../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(+) create mode 100644 app-tools/meson.build create mode 100644 app/actions/meson.build create mode 100644 app/config/meson.build create mode 100644 app/core/meson.build create mode 100644 app/dialogs/meson.build create mode 100644 app/display/meson.build create mode 100644 app/file-data/meson.build create mode 100644 app/file/meson.build create mode 100644 app/gegl/meson.build create mode 100644 app/git-version.h.in create mode 100644 app/gui/meson.build create mode 100644 app/menus/meson.build create mode 100644 app/meson.build create mode 100644 app/operations/layer-modes-legacy/meson.build create mode 100644 app/operations/layer-modes/meson.build create mode 100644 app/operations/meson.build create mode 100644 app/operations/tests/meson.build create mode 100644 app/paint/meson.build create mode 100644 app/pdb/meson.build create mode 100644 app/plug-in/meson.build create mode 100644 app/propgui/meson.build create mode 100644 app/tests/create_test_env.sh create mode 100644 app/tests/meson.build create mode 100644 app/text/meson.build create mode 100644 app/tools/meson.build create mode 100644 app/vectors/meson.build create mode 100644 app/widgets/meson.build create mode 100644 app/xcf/meson.build create mode 100644 build/windows/installer/lang/extractlang.sh create mode 100644 build/windows/installer/lang/meson.build create mode 100644 build/windows/installer/meson.build create mode 100644 build/windows/meson.build create mode 100644 cursors/dummy_file.xml create mode 100644 cursors/meson.build create mode 100644 data/brushes/Basic/meson.build create mode 100644 data/brushes/Fun/meson.build create mode 100644 data/brushes/Legacy/meson.build create mode 100644 data/brushes/Media/meson.build create mode 100644 data/brushes/Sketch/meson.build create mode 100644 data/brushes/Splatters/meson.build create mode 100644 data/brushes/Texture/meson.build create mode 100644 data/brushes/meson.build create mode 100644 data/dynamics/Basic/meson.build create mode 100644 data/dynamics/FX/meson.build create mode 100644 data/dynamics/meson.build create mode 100644 data/environ/meson.build create mode 100644 data/gradients/meson.build create mode 100644 data/images/meson.build create mode 100644 data/interpreters/meson.build create mode 100644 data/meson.build create mode 100644 data/palettes/meson.build create mode 100644 data/patterns/Animal/meson.build create mode 100644 data/patterns/Fabric/meson.build create mode 100644 data/patterns/Food/meson.build create mode 100644 data/patterns/Legacy/meson.build create mode 100644 data/patterns/Paper/meson.build create mode 100644 data/patterns/Plant/meson.build create mode 100644 data/patterns/Sky/meson.build create mode 100644 data/patterns/Stone/meson.build create mode 100644 data/patterns/Water/meson.build create mode 100644 data/patterns/Wood/meson.build create mode 100644 data/patterns/meson.build create mode 100644 data/tags/meson.build create mode 100644 data/tips/meson.build create mode 100644 data/tool-presets/Crop/meson.build create mode 100644 data/tool-presets/FX/meson.build create mode 100644 data/tool-presets/Paint/meson.build create mode 100644 data/tool-presets/Selection/meson.build create mode 100644 data/tool-presets/Sketch/meson.build create mode 100644 data/tool-presets/meson.build create mode 100644 desktop/meson.build create mode 100644 devel-docs/app/meson.build create mode 100644 devel-docs/libgimp/meson.build create mode 100644 devel-docs/libgimpbase/meson.build create mode 100644 devel-docs/libgimpcolor/meson.build create mode 100644 devel-docs/libgimpconfig/meson.build create mode 100644 devel-docs/libgimpmath/meson.build create mode 100644 devel-docs/libgimpmodule/meson.build create mode 100644 devel-docs/libgimpthumb/meson.build create mode 100644 devel-docs/libgimpwidgets/meson.build create mode 100644 devel-docs/meson.build create mode 100644 devel-docs/tools/meson.build create mode 100644 docs/meson.build create mode 100644 etc/meson.build create mode 100644 icons/Color/meson.build create mode 100644 icons/Legacy/meson.build create mode 100644 icons/Symbolic/meson.build create mode 100644 icons/meson.build create mode 100644 libgimp/meson.build create mode 100644 libgimpbase/gimpversion.h.in create mode 100644 libgimpbase/meson.build create mode 100644 libgimpcolor/meson.build create mode 100644 libgimpconfig/meson.build create mode 100644 libgimpmath/meson.build create mode 100644 libgimpmodule/meson.build create mode 100644 libgimpthumb/meson.build create mode 100644 libgimpwidgets/meson.build create mode 100644 m4macros/meson.build create mode 100644 menus/meson.build create mode 100644 meson.build create mode 100755 meson.make create mode 100644 meson_options.txt create mode 100644 modules/meson.build create mode 100644 pdb/meson.build create mode 100644 plug-ins/common/meson.build create mode 100644 plug-ins/file-bmp/meson.build create mode 100644 plug-ins/file-dds/meson.build create mode 100644 plug-ins/file-exr/meson.build create mode 100644 plug-ins/file-faxg3/meson.build create mode 100644 plug-ins/file-fits/meson.build create mode 100644 plug-ins/file-fli/meson.build create mode 100644 plug-ins/file-ico/meson.build create mode 100644 plug-ins/file-jpeg/meson.build create mode 100644 plug-ins/file-psd/meson.build create mode 100644 plug-ins/file-raw/meson.build create mode 100644 plug-ins/file-sgi/meson.build create mode 100644 plug-ins/file-tiff/meson.build create mode 100644 plug-ins/file-webp/meson.build create mode 100644 plug-ins/flame/meson.build create mode 100644 plug-ins/fractal-explorer/examples/meson.build create mode 100644 plug-ins/fractal-explorer/meson.build create mode 100644 plug-ins/gfig/gfig-examples/meson.build create mode 100644 plug-ins/gfig/images/meson.build create mode 100644 plug-ins/gfig/meson.build create mode 100644 plug-ins/gimpressionist/Brushes/meson.build create mode 100644 plug-ins/gimpressionist/Paper/meson.build create mode 100644 plug-ins/gimpressionist/Presets/meson.build create mode 100644 plug-ins/gimpressionist/meson.build create mode 100644 plug-ins/goat-exercises/meson.build create mode 100644 plug-ins/gradient-flare/flares/meson.build create mode 100644 plug-ins/gradient-flare/meson.build create mode 100644 plug-ins/help-browser/meson.build create mode 100644 plug-ins/help/meson.build create mode 100644 plug-ins/ifs-compose/meson.build create mode 100644 plug-ins/imagemap/images/meson.build create mode 100644 plug-ins/imagemap/meson.build create mode 100644 plug-ins/lighting/images/meson.build create mode 100644 plug-ins/lighting/meson.build create mode 100644 plug-ins/map-object/meson.build create mode 100644 plug-ins/meson.build create mode 100644 plug-ins/metadata/meson.build create mode 100644 plug-ins/pagecurl/meson.build create mode 100644 plug-ins/print/meson.build create mode 100644 plug-ins/pygimp/doc/meson.build create mode 100644 plug-ins/pygimp/meson.build create mode 100644 plug-ins/pygimp/plug-ins/meson.build create mode 100644 plug-ins/python/meson.build create mode 100644 plug-ins/python/python-console/meson.build create mode 100644 plug-ins/screenshot/meson.build create mode 100644 plug-ins/script-fu/ftx/meson.build create mode 100644 plug-ins/script-fu/meson.build create mode 100644 plug-ins/script-fu/scripts/images/meson.build create mode 100644 plug-ins/script-fu/scripts/meson.build create mode 100644 plug-ins/script-fu/tinyscheme/meson.build create mode 100644 plug-ins/selection-to-path/meson.build create mode 100644 plug-ins/twain/meson.build create mode 100644 plug-ins/ui/meson.build create mode 100644 po-libgimp/meson.build create mode 100644 po-plug-ins/meson.build create mode 100644 po-python/meson.build create mode 100644 po-script-fu/meson.build create mode 100644 po-tags/meson.build create mode 100644 po-tips/meson.build create mode 100644 po-windows-installer/meson.build create mode 100644 po/meson.build create mode 100644 themes/meson.build create mode 100755 tools/generate_changelog.sh create mode 100644 tools/meson.build 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 \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 = '\n' +cursors_xml_content += '\n' +cursors_xml_content += ' \n' +foreach cursor : tool_cursors + cursors_xml_content+=' '+ cursor +'\n' +endforeach +cursors_xml_content += ' \n' +cursors_xml_content += '\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 = '\n' +pickers_xml_content += '\n' +pickers_xml_content += ' \n' +foreach cursor : color_picker_cursors + pickers_xml_content+=' '+ cursor +'\n' +endforeach +pickers_xml_content += ' \n' +pickers_xml_content += ' \n' +foreach cursor : color_picker_cursors + pickers_xml_content+=' '+ cursor +'\n' +endforeach +pickers_xml_content += ' \n' +pickers_xml_content += '\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 = '\n' +xml_content += '\n' +xml_content += ' \n' +foreach file : icons_core + xml_content+=' '+ file +'\n' +endforeach +xml_content += ' \n' +xml_content += '\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 = '\n' +xml_content += '\n' +xml_content += ' \n' +foreach file : icons_imgs + xml_content+=' '+ file +'\n' +endforeach +xml_content += ' \n' +xml_content += '\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 = '\n' +xml_content += '\n' +xml_content += ' \n' +foreach file : icons_core + xml_content+=' '+ file +'\n' +endforeach +xml_content += ' \n' +xml_content += '\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 = '\n' +xml_content += '\n' +xml_content += ' \n' +foreach file : icons_imgs + xml_content+=' '+ file +'\n' +endforeach +xml_content += ' \n' +xml_content += '\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 = '\n' +xml_content += '\n' +xml_content += ' \n' +foreach file : icons_core + xml_content+=' '+ file +'\n' +endforeach +xml_content += ' \n' +xml_content += '\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 = '\n' +xml_content += '\n' +xml_content += ' \n' +foreach file : icons_imgs + xml_content+=' '+ file +'\n' +endforeach +xml_content += ' \n' +xml_content += '\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 \n' + + '#include \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 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 \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 \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 \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 \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 \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 + 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 + 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 + 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 + #include + #include + 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 + 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 = '\n' +xml_content += '\n' +xml_content += ' \n' +foreach file : pagecurl_icons_images + xml_content+=' '+ file +'\n' +endforeach +xml_content += ' \n' +xml_content += '\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, +)