[gimp/meson: 8/128] LibGimp* : fixes, implement mkenums-marshal, cleanup, common cflags



commit 094b864b0eea88d20ccdba0139ae8651125c7ce0
Author: Félix Piédallu <felix piedallu me>
Date:   Wed Nov 8 16:53:42 2017 +0100

    LibGimp* : fixes, implement mkenums-marshal, cleanup, common cflags

 libgimp/meson.build        |  374 ++++++++++++++++++++++++++++++++++----------
 libgimpbase/meson.build    |  154 ++++++++++++------
 libgimpcolor/meson.build   |   63 +++-----
 libgimpconfig/meson.build  |   99 ++++++++-----
 libgimpmath/meson.build    |   49 ++----
 libgimpmodule/meson.build  |   49 ++----
 libgimpthumb/meson.build   |   91 ++++++-----
 libgimpwidgets/meson.build |  142 ++++++++++-------
 meson.build                |   52 ++++++-
 9 files changed, 701 insertions(+), 372 deletions(-)
---
diff --git a/libgimp/meson.build b/libgimp/meson.build
index b6b7087..4ebbffd 100644
--- a/libgimp/meson.build
+++ b/libgimp/meson.build
@@ -1,150 +1,354 @@
 
-global_cflags = []
-global_lflags = []
-
-global_cflags += [
-  '-DPREFIX="'+ prefix + '"',
-  '-DGIMPDIR="'+ gimpdir + '"',
-  '-DDATADIR="'+ datadir + '"',
-  '-DLOCALEDIR="'+ localedir + '"',
-  '-DPLUGINDIR="'+ plugindir + '"',
-  '-DSYSCONFDIR="'+ sysconfdir + '"',
-  '-DGIMP_PACKAGE="'+ gettext_package + '"',
-  '-DGIMP_DATA_VERSION="'+ data_version + '"',
-  '-DGIMP_USER_VERSION="'+ user_version + '"',
-  '-DGIMP_SYSCONF_VERSION="'+ sysconf_version + '"',
-  '-DGIMP_PLUGIN_VERSION="'+ plugin_version + '"',
-]
+gimpenums_notail = custom_target('gimpenums.c_notail',
+  input : [ 'gimpenums.h', ],
+  output: [ 'gimpenums.c_notail', ],
+  command: [
+    gimp_mkenums,
+    '--fhead','#include "config.h"\n'+
+              '#include <gio/gio.h>\n'+
+              '#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',
+    '--fprod','/* enumerations from "@filename@" */',
+    '--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','    { @VALUENAME@, @valuedesc@, @valuehelp@ },',
+    '--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_domain (type, GETTEXT_PACKAGE "-libgimp");\n'+
+              '      gimp_type_set_translation_context (type, "@enumnick@");\n'+
+              '      gimp_@type@_set_value_descriptions (type, descs);\n'+
+              '    }\n'+
+              '\n'+
+              '  return type;\n'+
+              '}\n',
+    '@INPUT@',
+  ],
+  capture: true,
+)
 
-if platform_win32
-  global_cflags += '-no-undefined'
-endif
+gimpenums = custom_target('gimpenums.c',
+  input : [ gimpenums_notail, 'gimpenums.c.tail', ],
+  output: [ 'gimpenums.c', ],
+  command: [ 'cat', '@INPUT@' ],
+  capture: true,
+)
 
-if platform_osx
-  global_cflags += '-xobjective-c'
-  global_lflags += ['-framework', 'Cocoa']
-endif
+gimpuimarshal = gnome.genmarshal('gimpuimarshal',
+  prefix: '_gimpui_marshal',
+  sources: 'gimpuimarshal.list',
+  install_header: false,
+)
 
-if os_win32
-  global_lflags += '-lexchndl'
-  # global_lflags += ['-export-symbols', 'gimp.def']
-  # global_lflags += ['-export-symbols', 'gimpui.def']
-endif
-
-
-global_cflags += [
-  '-DG_LOG_DOMAIN="'+ 'LibGimp' + '"',
-  '-DGIMP_COMPILATION',
-]
-
-libgimp_sources = [
+libgimp_top_pdbwrappers = [
   'gimp_pdb.c',
-  'gimp.c',
-  'gimpaspectpreview.c',
   'gimpbrush_pdb.c',
   'gimpbrushes_pdb.c',
-  'gimpbrushes.c',
-  'gimpbrushmenu.c',
   'gimpbrushselect_pdb.c',
-  'gimpbrushselect.c',
-  'gimpbrushselectbutton.c',
   'gimpbuffer_pdb.c',
   'gimpchannel_pdb.c',
-  'gimpchannel.c',
   'gimpcolor_pdb.c',
   'gimpcontext_pdb.c',
   'gimpdebug_pdb.c',
   'gimpdisplay_pdb.c',
   'gimpdrawable_pdb.c',
-  'gimpdrawable.c',
   'gimpdrawablecolor_pdb.c',
-  'gimpdrawablepreview.c',
   'gimpdrawabletransform_pdb.c',
   'gimpdynamics_pdb.c',
   'gimpedit_pdb.c',
-  'gimpedit.c',
-  'gimpexport.c',
   'gimpfileops_pdb.c',
   'gimpfloatingsel_pdb.c',
-  'gimpfontmenu.c',
   'gimpfonts_pdb.c',
   'gimpfontselect_pdb.c',
-  'gimpfontselect.c',
-  'gimpfontselectbutton.c',
   'gimpgimprc_pdb.c',
-  'gimpgimprc.c',
   'gimpgradient_pdb.c',
-  'gimpgradientmenu.c',
   'gimpgradients_pdb.c',
-  'gimpgradients.c',
   'gimpgradientselect_pdb.c',
-  'gimpgradientselect.c',
-  'gimpgradientselectbutton.c',
   'gimphelp_pdb.c',
   'gimpimage_pdb.c',
-  'gimpimage.c',
   'gimpimagecolorprofile_pdb.c',
-  'gimpimagecolorprofile.c',
-  'gimpimagecombobox.c',
   'gimpimageconvert_pdb.c',
   'gimpimagegrid_pdb.c',
   'gimpimageguides_pdb.c',
-  'gimpimagemetadata.c',
   'gimpimagesamplepoints_pdb.c',
   'gimpimageselect_pdb.c',
   'gimpimagetransform_pdb.c',
   'gimpimageundo_pdb.c',
   'gimpitem_pdb.c',
-  'gimpitemcombobox.c',
   'gimpitemtransform_pdb.c',
   'gimplayer_pdb.c',
-  'gimplayer.c',
-  'gimpmenu.c',
   'gimpmessage_pdb.c',
   'gimppainttools_pdb.c',
   'gimppalette_pdb.c',
-  'gimppalette.c',
-  'gimppalettemenu.c',
   'gimppalettes_pdb.c',
-  'gimppalettes.c',
   'gimppaletteselect_pdb.c',
-  'gimppaletteselect.c',
-  'gimppaletteselectbutton.c',
   'gimppaths_pdb.c',
   'gimppattern_pdb.c',
-  'gimppatternmenu.c',
   'gimppatterns_pdb.c',
-  'gimppatterns.c',
   'gimppatternselect_pdb.c',
+  'gimpplugin_pdb.c',
+  'gimpproceduraldb_pdb.c',
+  'gimpprogress_pdb.c',
+  'gimpselection_pdb.c',
+  'gimpselectiontools_pdb.c',
+  'gimptextlayer_pdb.c',
+  'gimptexttool_pdb.c',
+  'gimptransformtools_pdb.c',
+  'gimpunit_pdb.c',
+  'gimpvectors_pdb.c',
+]
+
+libgimp_top_pdbheaders = [
+  'gimp_pdb_headers.h',
+  'gimp_pdb.h',
+  'gimpbrush_pdb.h',
+  'gimpbrushes_pdb.h',
+  'gimpbrushselect_pdb.h',
+  'gimpbuffer_pdb.h',
+  'gimpchannel_pdb.h',
+  'gimpcolor_pdb.h',
+  'gimpcontext_pdb.h',
+  'gimpdebug_pdb.h',
+  'gimpdisplay_pdb.h',
+  'gimpdrawable_pdb.h',
+  'gimpdrawablecolor_pdb.h',
+  'gimpdrawabletransform_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',
+  'gimppaths_pdb.h',
+  'gimppattern_pdb.h',
+  'gimppatterns_pdb.h',
+  'gimppatternselect_pdb.h',
+  'gimpplugin_pdb.h',
+  'gimpproceduraldb_pdb.h',
+  'gimpprogress_pdb.h',
+  'gimpselection_pdb.h',
+  'gimpselectiontools_pdb.h',
+  'gimptextlayer_pdb.h',
+  'gimptexttool_pdb.h',
+  'gimptransformtools_pdb.h',
+  'gimpunit_pdb.h',
+  'gimpvectors_pdb.h',
+]
+
+libgimp_top_sources = [
+  'gimp.c',
+  'gimpbrushes.c',
+  'gimpbrushselect.c',
+  'gimpchannel.c',
+  'gimpdrawable.c',
+  'gimpedit.c',
+  'gimpfontselect.c',
+  'gimpgimprc.c',
+  'gimpgradients.c',
+  'gimpgradientselect.c',
+  'gimpimage.c',
+  'gimpimagecolorprofile.c',
+  'gimplayer.c',
+  'gimppalette.c',
+  'gimppalettes.c',
+  'gimppaletteselect.c',
+  'gimppatterns.c',
   'gimppatternselect.c',
-  'gimppatternselectbutton.c',
   'gimppixbuf.c',
   'gimppixelfetcher.c',
   'gimppixelrgn.c',
-  'gimpplugin_pdb.c',
   'gimpplugin.c',
-  'gimpprocbrowserdialog.c',
-  'gimpproceduraldb_pdb.c',
   'gimpproceduraldb.c',
-  'gimpprocview.c',
-  'gimpprogress_pdb.c',
   'gimpprogress.c',
-  'gimpprogressbar.c',
   'gimpregioniterator.c',
-  'gimpselectbutton.c',
-  'gimpselection_pdb.c',
   'gimpselection.c',
-  'gimpselectiontools_pdb.c',
-  'gimptextlayer_pdb.c',
-  'gimptexttool_pdb.c',
   'gimptile.c',
   'gimptilebackendplugin.c',
-  'gimptransformtools_pdb.c',
-  'gimpui.c',
-  'gimpunit_pdb.c',
   'gimpunitcache.c',
-  'gimpvectors_pdb.c',
   'gimpvectors.c',
+  gimpenums,
+  libgimp_top_pdbwrappers,
+]
+
+libgimpui_sources = [
+  'gimpaspectpreview.c',
+  'gimpbrushmenu.c',
+  'gimpbrushselectbutton.c',
+  'gimpdrawablepreview.c',
+  'gimpexport.c',
+  'gimpfontmenu.c',
+  'gimpfontselectbutton.c',
+  'gimpgradientmenu.c',
+  'gimpgradientselectbutton.c',
+  'gimpimagecombobox.c',
+  'gimpimagemetadata.c',
+  'gimpitemcombobox.c',
+  'gimpmenu.c',
+  'gimppalettemenu.c',
+  'gimppaletteselectbutton.c',
+  'gimppatternmenu.c',
+  'gimppatternselectbutton.c',
+  'gimpprocbrowserdialog.c',
+  'gimpprocview.c',
+  'gimpprogressbar.c',
+  'gimpselectbutton.c',
+  'gimpui.c',
   'gimpzoompreview.c',
+  gimpuimarshal,
+]
+
+libgimp_top_headers = [
+  'gimp.h',
+  'gimpaspectpreview.h',
+  'gimpbrushes.h',
+  'gimpbrushmenu.h',
+  'gimpbrushselect.h',
+  'gimpbrushselectbutton.h',
+  'gimpchannel.h',
+  'gimpdrawable.h',
+  'gimpdrawablepreview.h',
+  'gimpedit.h',
+  'gimpenums.h',
+  'gimpexport.h',
+  'gimpfontmenu.h',
+  'gimpfontselect.h',
+  'gimpfontselectbutton.h',
+  'gimpgimprc.h',
+  'gimpgradientmenu.h',
+  'gimpgradients.h',
+  'gimpgradientselect.h',
+  'gimpgradientselectbutton.h',
+  'gimpimage.h',
+  'gimpimagecolorprofile.h',
+  'gimpimagecombobox.h',
+  'gimpimagemetadata.h',
+  'gimpitemcombobox.h',
+  'gimplayer.h',
+  'gimpmenu.h',
+  'gimppalette.h',
+  'gimppalettemenu.h',
+  'gimppalettes.h',
+  'gimppaletteselect.h',
+  'gimppaletteselectbutton.h',
+  'gimppatternmenu.h',
+  'gimppatterns.h',
+  'gimppatternselect.h',
+  'gimppatternselectbutton.h',
+  'gimppixbuf.h',
+  'gimppixelfetcher.h',
+  'gimppixelrgn.h',
+  'gimpplugin.h',
+  'gimpprocbrowserdialog.h',
+  'gimpproceduraldb.h',
+  'gimpprocview.h',
+  'gimpprogress.h',
+  'gimpprogressbar.h',
+  'gimpregioniterator.h',
+  'gimpselectbutton.h',
+  'gimpselection.h',
+  'gimptile.h',
+  'gimptypes.h',
+  'gimpui.h',
+  'gimpuitypes.h',
+  'gimpvectors.h',
+  'gimpzoompreview.h',
+  libgimp_top_pdbheaders,
+]
+
+
+libgimp_top_cflags = [
+  '-DG_LOG_DOMAIN="LibGimp"',
+  '-DGIMP_COMPILATION',
+]
+
+libgimp_top_lflags = [
+  libgimpbase,
+  libgimpcolor,
+  libgimpconfig,
 ]
 
+if os_win32
+  libgimp_top_lflags += ['-export-symbols', 'gimp.def']
+  libgimp_top_lflags += '-lexchndl'
+endif
+
+
+libgimp = library('gimp-'+ api_version,
+  libgimp_top_sources,
+  include_directories: rootInclude,
+  dependencies: [
+    gegl, gexiv2, gtk2,
+  ],
+  c_args:     [ libgimp_cflags, libgimp_top_cflags, ],
+  link_with:  [ libgimp_lflags, libgimp_top_lflags, ],
+)
+
+
+
+libgimpui_cflags = libgimp_top_cflags
+libgimpui_lflags = [
+  libgimp,
+  libgimpbase,
+  libgimpcolor,
+  libgimpmodule,
+  libgimpwidgets,
+]
+
+if os_win32
+  libgimpui_lflags += ['-export-symbols', 'gimpui.def']
+  libgimpui_lflags += '-lexchndl'
+endif
+
+libgimpui = library('gimpui-'+ api_version,
+  libgimpui_sources,
+  include_directories: rootInclude,
+  dependencies: [
+    gegl, gexiv2, gtk2,
+  ],
+  c_args:     [ libgimp_cflags, libgimpui_cflags, ],
+  link_with:  [ libgimp_lflags, libgimpui_lflags, ],
+)
+
+
+install_headers(
+  libgimp_top_headers,
+  install_dir: join_paths(gimp_api_name, 'libgimp'),
+)
diff --git a/libgimpbase/meson.build b/libgimpbase/meson.build
index 0be1e83..383c7c0 100644
--- a/libgimpbase/meson.build
+++ b/libgimpbase/meson.build
@@ -1,48 +1,91 @@
 
-global_cflags = []
-global_lflags = []
-
-global_cflags += [
-  '-DPREFIX="'+ prefix + '"',
-  '-DGIMPDIR="'+ gimpdir + '"',
-  '-DDATADIR="'+ datadir + '"',
-  '-DLOCALEDIR="'+ localedir + '"',
-  '-DPLUGINDIR="'+ plugindir + '"',
-  '-DSYSCONFDIR="'+ sysconfdir + '"',
-  '-DGIMP_PACKAGE="'+ gettext_package + '"',
-  '-DGIMP_DATA_VERSION="'+ data_version + '"',
-  '-DGIMP_USER_VERSION="'+ user_version + '"',
-  '-DGIMP_SYSCONF_VERSION="'+ sysconf_version + '"',
-  '-DGIMP_PLUGIN_VERSION="'+ plugin_version + '"',
-]
-
-
-if platform_win32
-  global_cflags += '-no-undefined'
-endif
-
-if platform_osx
-  global_cflags += '-xobjective-c'
-  global_lflags += ['-framework', 'Cocoa']
-endif
-
-if os_win32
-  global_lflags += '-lole32'
-  # global_lflags += ['-export-symbols', 'gimpbase.def']
-endif
-
-
-global_cflags += [
-  '-DG_LOG_DOMAIN="'+ 'LibGimpBase' + '"',
-  '-DGIMP_BASE_COMPILATION',
-]
+gimpbaseenums = custom_target('gimpbaseenums.c',
+  input : [ 'gimpbaseenums.h', ],
+  output: [ 'gimpbaseenums.c', ],
+  command: [
+    gimp_mkenums,
+    '--fhead','#include "config.h"\n'+
+              '#include <glib-object.h>\n'+
+              '#undef GIMP_DISABLE_DEPRECATED\n'+
+              '#include "gimpbasetypes.h"\n'+
+              '#include "libgimp/libgimp-intl.h"\n',
+    '--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','    { @VALUENAME@, @valuedesc@, @valuehelp@ },',
+    '--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_domain (type, GETTEXT_PACKAGE "-libgimp");\n'+
+              '      gimp_type_set_translation_context (type, "@enumnick@");\n'+
+              '      gimp_@type@_set_value_descriptions (type, descs);\n'+
+              '    }\n'+
+              '\n'+
+              '  return type;\n'+
+              '}\n',
+    '@INPUT@',
+  ],
+  capture: true,
+)
+gimpcompatenums = custom_target('gimpcompatenums.c',
+  input : [ 'gimpcompatenums.h', ],
+  output: [ 'gimpcompatenums.c', ],
+  command: [
+    gimp_mkenums,
+    '--fhead','#include "config.h"\n'+
+              '#include <glib-object.h>\n'+
+              '#include "gimpbasetypes.h"\n'+
+              '#include "gimpcompatenums.h"\n'+
+              '#include "libgimp/libgimp-intl.h"\n',
+    '--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','    { @VALUENAME@, @valuedesc@, @valuehelp@ },',
+    '--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_domain (type, GETTEXT_PACKAGE "-libgimp");\n'+
+              '      gimp_type_set_translation_context (type, "@enumnick@");\n'+
+              '      gimp_@type@_set_value_descriptions (type, descs);\n'+
+              '    }\n'+
+              '\n'+
+              '  return type;\n'+
+              '}\n',
+    '@INPUT@',
+  ],
+  capture: true,
+)
 
 libgimpbase_sources = [
   'gimpbase-private.c',
-  'gimpbaseenums.c',
   'gimpbasetypes.c',
   'gimpchecks.c',
-  'gimpcompatenums.c',
   'gimpcpuaccel.c',
   'gimpdatafiles.c',
   'gimpenv.c',
@@ -58,12 +101,8 @@ libgimpbase_sources = [
   'gimputils.c',
   'gimpvaluearray.c',
   'gimpwire.c',
-]
-
-# TODO add auto-generation targets for those files
-libgimpbase_sources += [
-  'gimpbaseenums.c',
-  'gimpcompatenums.c',
+  gimpbaseenums,
+  gimpcompatenums,
 ]
 
 libgimpbase_headers = [
@@ -88,33 +127,42 @@ libgimpbase_headers = [
   'gimpvaluearray.h',
 ]
 
+libgimpbase_cflags = [
+  '-DG_LOG_DOMAIN="LibGimpBase"',
+  '-DGIMP_BASE_COMPILATION',
+]
+libgimpbase_lflags = [ ]
 
+if os_win32
+  libgimpbase_lflags += '-lole32'
+  libgimpbase_lflags += ['-export-symbols', 'gimpbase.def']
+endif
 
 
 libgimpbase = library('gimpbase-' + api_version,
   libgimpbase_sources,
   include_directories: rootInclude,
   dependencies: [
-    gio, gexiv2, math,
+    gexiv2, gio, math,
   ],
-  c_args: global_cflags,
-  link_with: global_lflags,
+  c_args:     [ libgimp_cflags, libgimpbase_cflags, ],
+  link_with:  [ libgimp_lflags, libgimpbase_lflags, ],
 )
 
 install_headers(
   libgimpbase_headers,
-  install_dir: join_paths('gimp-' + api_version, 'libgimpbase'),
+  install_dir: join_paths(gimp_api_name, 'libgimpbase'),
 )
 
 
-# test programs, not to be built by default and never installed
-test_cpu_accel = executable('test-cpu-accel',
+# Test program, not installed
+executable('test-cpu-accel',
   'test-cpu-accel.c',
   include_directories: rootInclude,
   dependencies: [
     glib,
   ],
-  c_args: global_cflags,
-  link_with: libgimpbase,
+  c_args:     [ libgimp_cflags, libgimpbase_cflags, ],
+  link_with:  [ libgimp_lflags, libgimpbase_lflags, libgimpbase, ],
   install: false,
 )
diff --git a/libgimpcolor/meson.build b/libgimpcolor/meson.build
index 02d1fa2..aeb9b24 100644
--- a/libgimpcolor/meson.build
+++ b/libgimpcolor/meson.build
@@ -1,33 +1,3 @@
-
-global_cflags = []
-global_lflags = []
-
-global_cflags += [
-]
-
-if platform_win32
-  global_cflags += '-no-undefined'
-endif
-
-if platform_osx
-  global_cflags += '-xobjective-c'
-  global_lflags += ['-framework', 'Cocoa']
-endif
-
-if os_win32
-  # global_lflags += '-lole32'
-  # global_lflags += ['-export-symbols', 'gimpbase.def']
-endif
-
-
-global_cflags += [
-  '-DG_LOG_DOMAIN="'+ 'LibGimpColor' + '"',
-  '-DGIMP_COLOR_COMPILATION',
-]
-
-
-
-
 libgimpcolor_sources = [
   'gimpadaptivesupersample.c',
   'gimpbilinear.c',
@@ -61,31 +31,46 @@ libgimpcolor_headers = [
   'gimprgb.h',
 ]
 
+libgimpcolor_cflags = [
+  '-DG_LOG_DOMAIN="LibGimpColor"',
+  '-DGIMP_COLOR_COMPILATION',
+]
+libgimpcolor_lflags = [
+  libgimpbase,
+]
+
+if os_win32
+  libgimpcolor_lflags += '-lole32'
+  libgimpcolor_lflags += ['-export-symbols', 'gimpcolor.def']
+endif
+
 
-libgimpcolor = library('gimpcolor-'+ api_version,
+libgimpcolor = library('gimpcolor-' + api_version,
   libgimpcolor_sources,
   include_directories: rootInclude,
   dependencies: [
     cairo, gdk_pixbuf, gegl, lcms, math,
   ],
-  c_args: global_cflags,
-  link_with: [ global_lflags, libgimpbase, ],
+  c_args:     [ libgimp_cflags, libgimpcolor_cflags, ],
+  link_with:  [ libgimp_lflags, libgimpcolor_lflags, ],
 )
 
 install_headers(
   libgimpcolor_headers,
-  install_dir: join_paths('gimp-' + api_version, 'libgimpcolor'),
+  install_dir: join_paths(gimp_api_name, 'libgimpcolor'),
 )
 
 
-# test programs, not to be built by default and never installed
-test_color_parser = executable('test-color-parser',
+# Test program, not installed
+executable('test-color-parser',
   'test-color-parser.c',
   include_directories: rootInclude,
   dependencies: [
-    babl, cairo, gdk_pixbuf, gegl, glib,
+    cairo, gdk_pixbuf, gegl, lcms, math,
+    babl,
+    # glib,
   ],
-  c_args: global_cflags,
-  link_with: libgimpcolor,
+  c_args:     [ libgimp_cflags, libgimpcolor_cflags, ],
+  link_with:  [ libgimp_lflags, libgimpcolor_lflags, libgimpcolor, ],
   install: false,
 )
diff --git a/libgimpconfig/meson.build b/libgimpconfig/meson.build
index e7eb122..49f3409 100644
--- a/libgimpconfig/meson.build
+++ b/libgimpconfig/meson.build
@@ -1,30 +1,45 @@
 
-global_cflags = []
-global_lflags = []
-
-global_cflags += [
-]
-
-if platform_win32
-  global_cflags += '-no-undefined'
-endif
-
-if platform_osx
-  global_cflags += '-xobjective-c'
-  global_lflags += ['-framework', 'Cocoa']
-endif
-
-if os_win32
-  # global_lflags += ['-export-symbols', 'gimpconfig.def']
-endif
-
-
-global_cflags += [
-  '-DG_LOG_DOMAIN="'+ 'LibGimpConfig' + '"',
-  '-DGIMP_CONFIG_COMPILATION',
-]
-
-
+gimpconfigenums = custom_target('gimpconfigenums.c',
+  input : [ 'gimpconfigenums.h', ],
+  output: [ 'gimpconfigenums.c', ],
+  command: [
+    gimp_mkenums,
+    '--fhead','#include "config.h"\n'+
+              '#include <gio/gio.h>\n'+
+              '#include "libgimpbase/gimpbase.h"\n'+
+              '#include "gimpconfigenums.h"\n'+
+              '#include "libgimp/libgimp-intl.h"\n',
+    '--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','    { @VALUENAME@, @valuedesc@, @valuehelp@ },',
+    '--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_domain (type, GETTEXT_PACKAGE "-libgimp");\n'+
+              '      gimp_type_set_translation_context (type, "@enumnick@");\n'+
+              '      gimp_@type@_set_value_descriptions (type, descs);\n'+
+              '    }\n'+
+              '\n'+
+              '  return type;\n'+
+              '}\n',
+    '@INPUT@',
+  ],
+  capture: true,
+)
 
 
 libgimpconfig_sources = [
@@ -35,16 +50,11 @@ libgimpconfig_sources = [
   'gimpconfig-path.c',
   'gimpconfig-serialize.c',
   'gimpconfig-utils.c',
-  'gimpconfigenums.c',
   'gimpconfigwriter.c',
   'gimpscanner.c',
+  gimpconfigenums
 ]
 
-libgimpconfig_sources += [
-  'gimpconfigenums.c',
-]
-
-
 libgimpconfig_headers = [
   'gimpcolorconfig.h',
   'gimpconfig-deserialize.h',
@@ -62,17 +72,34 @@ libgimpconfig_headers = [
 ]
 
 
-libgimpconfig = library('gimpconfig-'+ api_version,
+libgimpconfig_cflags = [
+  '-DG_LOG_DOMAIN="'+ 'LibGimpConfig' + '"',
+  '-DGIMP_CONFIG_COMPILATION',
+]
+
+libgimpconfig_lflags = [
+  libgimpbase,
+  libgimpcolor,
+  libgimpmath,
+]
+
+if os_win32
+  libgimpconfig_lflags += ['-export-symbols', 'gimpconfig.def']
+endif
+
+
+
+libgimpconfig = library('gimpconfig-' + api_version,
   libgimpconfig_sources,
   include_directories: rootInclude,
   dependencies: [
     cairo, gdk_pixbuf, gegl, gio, gio_specific,
   ],
-  c_args: global_cflags,
-  link_with: [ global_lflags, libgimpbase, libgimpcolor, libgimpmath, ],
+  c_args:     [ libgimp_cflags, libgimpconfig_cflags, ],
+  link_with:  [ libgimp_lflags, libgimpconfig_lflags, ],
 )
 
 install_headers(
   libgimpconfig_headers,
-  install_dir: join_paths('gimp-' + api_version, 'libgimpconfig'),
+  install_dir: join_paths(gimp_api_name, 'libgimpconfig'),
 )
diff --git a/libgimpmath/meson.build b/libgimpmath/meson.build
index 285f9bc..2a29f5b 100644
--- a/libgimpmath/meson.build
+++ b/libgimpmath/meson.build
@@ -1,31 +1,4 @@
 
-global_cflags = []
-global_lflags = []
-
-global_cflags += [
-]
-
-if platform_win32
-  global_cflags += '-no-undefined'
-endif
-
-if platform_osx
-  global_cflags += '-xobjective-c'
-  global_lflags += ['-framework', 'Cocoa']
-endif
-
-if os_win32
-  # global_lflags += ['-export-symbols', 'gimpmath.def']
-endif
-
-
-global_cflags += [
-  '-DG_LOG_DOMAIN="'+ 'LibGimpMath' + '"',
-  '-DGIMP_MATH_COMPILATION',
-]
-
-
-
 libgimpmath_sources = [
   'gimpmatrix.c',
   'gimpmd5.c',
@@ -41,17 +14,31 @@ libgimpmath_headers = [
 ]
 
 
-libgimpmath = library('gimpmath-'+ api_version,
+libgimpmath_cflags = [
+  '-DG_LOG_DOMAIN="LibGimpMath"',
+  '-DGIMP_MATH_COMPILATION',
+]
+
+libgimpmath_lflags = [
+  libgimpbase,
+]
+
+if os_win32
+  libgimpmath_lflags += ['-export-symbols', 'gimpmath.def']
+endif
+
+
+libgimpmath = library('gimpmath-' + api_version,
   libgimpmath_sources,
   include_directories: rootInclude,
   dependencies: [
     glib, gobject, math,
   ],
-  c_args: global_cflags,
-  link_with: [ global_lflags, libgimpbase, ],
+  c_args:     [ libgimp_cflags, libgimpmath_cflags, ],
+  link_with:  [ libgimp_lflags, libgimpmath_lflags, ],
 )
 
 install_headers(
   libgimpmath_headers,
-  install_dir: join_paths('gimp-' + api_version, 'libgimpmath'),
+  install_dir: join_paths(gimp_api_name, 'libgimpmath'),
 )
diff --git a/libgimpmodule/meson.build b/libgimpmodule/meson.build
index 9f7fd3e..2aebe8e 100644
--- a/libgimpmodule/meson.build
+++ b/libgimpmodule/meson.build
@@ -1,31 +1,4 @@
 
-global_cflags = []
-global_lflags = []
-
-global_cflags += [
-]
-
-if platform_win32
-  global_cflags += '-no-undefined'
-endif
-
-if platform_osx
-  global_cflags += '-xobjective-c'
-  global_lflags += ['-framework', 'Cocoa']
-endif
-
-if os_win32
-  # global_lflags += ['-export-symbols', 'gimpmodule.def']
-endif
-
-
-global_cflags += [
-  '-DG_LOG_DOMAIN="'+ 'LibGimpModule' + '"',
-  '-DGIMP_MODULE_COMPILATION',
-]
-
-
-
 libgimpmodule_sources = [
   'gimpmodule.c',
   'gimpmoduledb.c',
@@ -37,20 +10,34 @@ libgimpmodule_headers = [
   'gimpmoduletypes.h',
 ]
 
+libgimpmodule_cflags = [
+  '-DG_LOG_DOMAIN="LibGimpModule"',
+  '-DGIMP_MODULE_COMPILATION',
+]
+
+libgimpmodule_lflags = [
+  libgimpbase,
+  libgimpconfig,
+]
+
+if os_win32
+  libgimpmodule_lflags += ['-export-symbols', 'gimpmodule.def']
+endif
+
 
-libgimpmodule = library('gimpmodule-'+ api_version,
+libgimpmodule = library('gimpmodule-' + api_version,
   libgimpmodule_sources,
   include_directories: rootInclude,
   dependencies: [
     gio, glib, gmodule,
   ],
-  c_args: global_cflags,
-  link_with: [ global_lflags, libgimpbase, libgimpconfig, ],
+  c_args:     [ libgimp_cflags, libgimpmodule_cflags, ],
+  link_with:  [ libgimp_lflags, libgimpmodule_lflags, ],
 )
 
 install_headers(
   libgimpmodule_headers,
-  install_dir: join_paths('gimp-' + api_version, 'libgimpmodule'),
+  install_dir: join_paths(gimp_api_name, 'libgimpmodule'),
 )
 
 
diff --git a/libgimpthumb/meson.build b/libgimpthumb/meson.build
index bd643b6..a8d4380 100644
--- a/libgimpthumb/meson.build
+++ b/libgimpthumb/meson.build
@@ -1,43 +1,41 @@
 
-global_cflags = []
-global_lflags = []
-
-global_cflags += [
-]
-
-if platform_win32
-  global_cflags += '-no-undefined'
-endif
-
-if platform_osx
-  global_cflags += '-xobjective-c'
-  global_lflags += ['-framework', 'Cocoa']
-endif
-
-if os_win32
-  # global_lflags += ['-export-symbols', 'gimpmath.def']
-endif
-
-
-global_cflags += [
-  '-DG_LOG_DOMAIN="'+ 'LibGimpThumb' + '"',
-  '-DGIMP_THUMB_COMPILATION',
-]
-
-
+gimpthumbenums = custom_target('gimpthumb-enums.c',
+  input : [ 'gimpthumb-enums.h', ],
+  output: [ 'gimpthumb-enums.c', ],
+  command: [
+    gimp_mkenums,
+    '--fhead','#include "config.h"\n'+
+              '#include <glib-object.h>\n'+
+              '#include "gimpthumb-enums.h"\n',
+    '--fprod','/* enumerations from "@filename@" */\n',
+    '--vhead','GType\n'+
+              '@enum_name@_get_type (void)\n'+
+              '{\n'+
+              '  static const G@Type@Value values[] =\n'+
+              '  {',
+    '--vprod','    { @VALUENAME@, @valuedesc@, "@valuenick@" },',
+    '--vtail','    { 0, NULL, NULL }\n'+
+              '  };\n'+
+              '\n'+
+              '  static GType type = 0;\n'+
+              '\n'+
+              '  if (G_UNLIKELY (! type))\n'+
+              '    type = g_@type@_register_static ("@EnumName@", values);\n'+
+              '\n'+
+              '  return type;\n'+
+              '}\n',
+    '@INPUT@',
+  ],
+  capture: true,
+)
 
 libgimpthumb_sources = [
   'gimpthumb-error.c',
   'gimpthumb-utils.c',
   'gimpthumbnail.c',
+  gimpthumbenums,
 ]
 
-# TODO mkenums
-libgimpthumb_sources += [
-  'gimpthumb-enums.c',
-]
-
-
 libgimpthumb_headers = [
   'gimpthumb-enums.h',
   'gimpthumb-error.h',
@@ -48,30 +46,45 @@ libgimpthumb_headers = [
 ]
 
 
+libgimpthumb_cflags = [
+  '-DG_LOG_DOMAIN="LibGimpThumb"',
+  '-DGIMP_THUMB_COMPILATION',
+]
+
+libgimpthumb_lflags = [
+  libgimpbase,
+]
+
+if os_win32
+  libgimpthumb_lflags += ['-export-symbols', 'gimpthumb.def']
+endif
+
+
+
 libgimpthumb = library('gimpthumb-'+ api_version,
   libgimpthumb_sources,
   include_directories: rootInclude,
   dependencies: [
     gdk_pixbuf, glib, gio, gobject,
   ],
-  c_args: global_cflags,
-  link_with: [ global_lflags, libgimpbase, ],
+  c_args:     [ libgimp_cflags, libgimpthumb_cflags, ],
+  link_with:  [ libgimp_lflags, libgimpthumb_lflags, ],
 )
 
 install_headers(
   libgimpthumb_headers,
-  install_dir: join_paths('gimp-' + api_version, 'libgimpthumb'),
+  install_dir: join_paths(gimp_api_name, 'libgimpthumb'),
 )
 
 
-# test programs, not to be built by default and never installed
+# Test program, not installed
 gimp_thumbnail_list = executable('gimp-thumbnail-list',
   'gimp-thumbnail-list.c',
   include_directories: rootInclude,
   dependencies: [
-    gdk_pixbuf, glib, gio, gobject,
+    gdk_pixbuf,
   ],
-  c_args: global_cflags,
-  link_with: libgimpthumb,
+  c_args:     [ libgimp_cflags, libgimpthumb_cflags, ],
+  link_with:  [ libgimp_lflags, libgimpthumb_lflags, libgimpthumb, ],
   install: false,
 )
diff --git a/libgimpwidgets/meson.build b/libgimpwidgets/meson.build
index 5739695..cb583e3 100644
--- a/libgimpwidgets/meson.build
+++ b/libgimpwidgets/meson.build
@@ -1,34 +1,59 @@
 
-global_cflags = []
-global_lflags = []
-
-global_cflags += [
-]
-
-if platform_win32
-  global_cflags += '-no-undefined'
-  global_lflags += '-lgdi32'
-endif
+gimpwidgetsenums = custom_target('gimpwidgetsenums.c',
+  input : [ 'gimpwidgetsenums.h', ],
+  output: [ 'gimpwidgetsenums.c', ],
+  command: [
+    gimp_mkenums,
+    '--fhead','#include "config.h"\n'+
+              '#include <gio/gio.h>\n'+
+              '#include "libgimpbase/gimpbase.h"\n'+
+              '#include "gimpwidgetsenums.h"\n'+
+              '#include "libgimp/libgimp-intl.h"\n',
+    '--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','    { @VALUENAME@, @valuedesc@, @valuehelp@ },',
+    '--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_domain (type, GETTEXT_PACKAGE "-libgimp");\n'+
+              '      gimp_type_set_translation_context (type, "@enumnick@");\n'+
+              '      gimp_@type@_set_value_descriptions (type, descs);\n'+
+              '    }\n'+
+              '\n'+
+              '  return type;\n'+
+              '}\n',
+    '@INPUT@',
+  ],
+  capture: true,
+)
 
-if platform_osx
-  global_cflags += '-xobjective-c'
-  global_lflags += ['-framework', 'Cocoa']
-endif
+gimpwidgetsmarshal = gnome.genmarshal('gimpwidgetsmarshal',
+  prefix: '_gimp_widgets_marshal',
+  sources: 'gimpwidgetsmarshal.list',
+  install_header: false,
+)
 
-if os_win32
-  # global_lflags += '-lole32'
-  # global_lflags += ['-export-symbols', 'gimpwidgets.def']
+if gtk_mac_integration_ok
+  gimppickbutton = 'gimppickbutton-quartz.c'
+else
+  gimppickbutton = 'gimppickbutton-default.c'
 endif
 
 
-global_cflags += [
-  '-DG_LOG_DOMAIN="'+ 'LibGimpWidgets' + '"',
-  '-DGIMP_WIDGETS_COMPILATION',
-]
-
-
-
-
 libgimpwidgets_sources = [
   'gimp3migration.c',
   'gimpbrowser.c',
@@ -91,20 +116,9 @@ libgimpwidgets_sources = [
   'gimpwidgets.c',
   'gimpwidgetsutils.c',
   'gimpzoommodel.c',
-]
-
-if gtk_mac_integration_ok
-  libgimpwidgets_sources += 'gimppickbutton-quartz.c'
-  global_cflags += '-xobjective-c'
-else
-  libgimpwidgets_sources += 'gimppickbutton-default.c'
-endif
-
-# TODO mkenums
-libgimpwidgets_sources += [
-  'gimpwidgetsenums.c',
-  'gimpwidgetsmarshal.c',
-  'gimpwidgetsmarshal.h',
+  gimpwidgetsenums,
+  gimpwidgetsmarshal,
+  gimppickbutton,
 ]
 
 libgimpwidgets_headers = [
@@ -172,34 +186,52 @@ libgimpwidgets_headers = [
 ]
 
 
+libgimpwidgets_cflags = [
+  '-DG_LOG_DOMAIN="LibGimpWidgets"',
+  '-DGIMP_WIDGETS_COMPILATION',
+]
+
+libgimpwidgets_lflags = [
+  libgimpbase,
+  libgimpcolor,
+  libgimpconfig,
+]
+
+if os_win32
+  libgimpwidgets_lflags += ['-export-symbols', 'gimpwidgets.def']
+  libgimpwidgets_lflags += '-lgdi32'
+endif
+
+
 libgimpwidgets = library('gimpwidgets-'+ api_version,
   libgimpwidgets_sources,
   include_directories: rootInclude,
   dependencies: [
     gegl, gtk2, lcms, math
   ],
-  c_args: global_cflags,
-  link_with: [ global_lflags, libgimpbase, libgimpcolor, libgimpconfig, ],
+  c_args:     [ libgimp_cflags, libgimpwidgets_cflags, ],
+  link_with:  [ libgimp_lflags, libgimpwidgets_lflags, ],
 )
 
 install_headers(
   libgimpwidgets_headers,
-  install_dir: join_paths('gimp-' + api_version, 'libgimpwidgets'),
+  install_dir: join_paths(gimp_api_name, 'libgimpwidgets'),
 )
 
 
-# test programs, not installed
+# Test programs, not installed
 
-# test_preview_area = executable('test-preview-area',
-#   'test-preview-area.c',
-#   include_directories: rootInclude,
-#   dependencies: [
-#     gtk2,
-#   ],
-#   c_args: global_cflags,
-#   link_with: libgimpbase,
-#   install: false,
-# )
+test_preview_area = executable('test-preview-area',
+  'test-preview-area.c',
+  include_directories: rootInclude,
+  dependencies: [
+    gtk2,
+  ],
+  c_args:     [ libgimp_cflags, libgimpwidgets_cflags, ],
+  link_with:  [ libgimp_lflags, libgimpwidgets_lflags, libgimpwidgets, ],
+  install: false,
+  build_by_default: false,
+)
 
 test_eevl = executable('test-eevl',
   'test-eevl.c',
@@ -207,7 +239,7 @@ test_eevl = executable('test-eevl',
   dependencies: [
     glib, gtk2,
   ],
-  c_args: global_cflags,
-  link_with: [ libgimpcolor, libgimpwidgets, ],
+  c_args:     [ libgimp_cflags, libgimpwidgets_cflags, ],
+  link_with:  [ libgimp_lflags, libgimpwidgets_lflags, libgimpwidgets, ],
   install: false,
 )
diff --git a/meson.build b/meson.build
index 469ef6a..9c3cbe0 100644
--- a/meson.build
+++ b/meson.build
@@ -57,6 +57,8 @@ tool_version       = '2.0'
 user_version       = '2.9'
 
 gimp_command = 'gimp-' + app_version
+gimp_api_name = 'gimp-' + api_version
+package_string = prettyname + ' ' + meson.project_version()
 
 stable = (minor_version % 2 == 0)
 conf.set10('GIMP_UNSTABLE', not stable)
@@ -258,6 +260,11 @@ cc.has_argument('-maltivec')
 cc.has_argument('-mabi=altivec')
 
 
+if os_win32
+  ole32 = cc.find_library('ole32')
+endif
+
+
 # TODO shared memory handling
 
 # OpenMP
@@ -675,6 +682,14 @@ add_project_arguments([
 )
 
 
+# Check for internal tools
+defcheck            = find_program(join_paths('tools', 'defcheck.py'))
+extract_vector_icon = find_program(join_paths('tools', 'extract-vector-icon.sh'))
+generate_changelog  = find_program(join_paths('tools', 'generate_changelog.sh'))
+generate_news       = find_program(join_paths('tools', 'generate-news'))
+gimp_mkenums        = find_program(join_paths('tools', 'gimp-mkenums'))
+gimppath2svg        = find_program(join_paths('tools', 'gimppath2svg.py'))
+module_dependencies = find_program(join_paths('tools', 'module-dependencies.py'))
 
 
 ################################################################################
@@ -745,8 +760,39 @@ has_nl_measurement = cc.has_function(
   prefix: '#include<langinfo.h>',
 )
 
+################################################################################
+# Set/regroup common CFlags for subdirs
+
+libgimp_cflags = [
+  '-DPREFIX="'+ prefix + '"',
+  '-DGIMPDIR="'+ gimpdir + '"',
+  '-DPACKAGE_STRING="'+ package_string + '"',
+  '-DDATADIR="'+ datadir + '"',
+  '-DLOCALEDIR="'+ localedir + '"',
+  '-DPLUGINDIR="'+ plugindir + '"',
+  '-DSYSCONFDIR="'+ sysconfdir + '"',
+  '-DGIMP_PACKAGE="'+ meson.project_name() + '"',
+  '-DGIMP_DATA_VERSION="'+ data_version + '"',
+  '-DGIMP_USER_VERSION="'+ user_version + '"',
+  '-DGIMP_SYSCONF_VERSION="'+ sysconf_version + '"',
+  '-DGIMP_PLUGIN_VERSION="'+ plugin_version + '"',
+]
+libgimp_lflags = []
+
+if platform_win32
+  libgimp_cflags += '-no-undefined'
+endif
+
+if platform_osx
+  libgimp_cflags += '-xobjective-c'
+  libgimp_lflags += ['-framework', 'Cocoa']
+endif
+
 rootInclude = include_directories('.')
 
+################################################################################
+# Subdirs
+
 # Data / Desktop / xml files
 subdir('cursors')
 subdir('data')
@@ -822,7 +868,7 @@ pkgconfig.generate(filebase: 'gimp-' + pkgconfig_version,
     '-lgimpbase-'   + api_version,
   ],
   subdirs: [
-    'gimp-' + api_version,
+    gimp_api_name,
   ],
   variables: [
     'gimpdatadir=' + datadir,
@@ -843,7 +889,7 @@ pkgconfig.generate(filebase: 'gimpthumb-' + pkgconfig_version,
     '-lgimpthumb-'  + api_version,
   ],
   subdirs: [
-    'gimp-' + api_version,
+    gimp_api_name,
   ],
 )
 pkgconfig.generate(filebase: 'gimpui-' + pkgconfig_version,
@@ -861,7 +907,7 @@ pkgconfig.generate(filebase: 'gimpui-' + pkgconfig_version,
     '-lgimpmodule-'  + api_version,
   ],
   subdirs: [
-    'gimp-' + api_version,
+    gimp_api_name,
   ],
 )
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]