[gimp/wip/nielsdg/gir-split] Split GIR into Gimp-3.0 and GimpUi-3.0



commit da6dbe9ffec498d4634385664021bb62e36401f6
Author: Niels De Graef <nielsdegraef gmail com>
Date:   Fri May 8 21:41:00 2020 +0200

    Split GIR into Gimp-3.0 and GimpUi-3.0
    
    Fixes https://gitlab.gnome.org/GNOME/gimp/-/issues/4065

 libgimp/Makefile.am | 73 ++++++++++++++++++++++++++++++++++++++-------
 libgimp/meson.build | 86 +++++++++++++++++++++++++++++++----------------------
 2 files changed, 113 insertions(+), 46 deletions(-)
---
diff --git a/libgimp/Makefile.am b/libgimp/Makefile.am
index d05f09d8aa..b65bff955c 100644
--- a/libgimp/Makefile.am
+++ b/libgimp/Makefile.am
@@ -253,7 +253,8 @@ include ../libgimpmodule/Makefile.gi
 include ../libgimpthumb/Makefile.gi
 include ../libgimpwidgets/Makefile.gi
 
-INTROSPECTION_GIRS =
+INTROSPECTION_GIRS = Gimp-@GIMP_API_VERSION@.gir GimpUi-@GIMP_API_VERSION@.gir
+
 INTROSPECTION_SCANNER_ARGS = \
        --warn-all                      \
        --add-include-path="$(srcdir)"  \
@@ -265,6 +266,7 @@ INTROSPECTION_COMPILER_ARGS = \
 
 INTROSPECTION_SCANNER_ENV = CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" CPPFLAGS="$(CPPFLAGS)" 
CXXFLAGS="$(CXXFLAGS)"
 
+### First GIR: Gimp
 Gimp-@GIMP_API_VERSION@.gir: \
        libgimp-@GIMP_API_VERSION@.la                           \
        libgimpui-@GIMP_API_VERSION@.la                         \
@@ -277,6 +279,8 @@ Gimp-@GIMP_API_VERSION@.gir: \
        ../libgimpwidgets/libgimpwidgets-@GIMP_API_VERSION@.la  \
        Makefile
 
+Gimp_@GIMP_API_MAJOR_VERSION@_@GIMP_API_MINOR_VERSION@_gir_EXPORT_PACKAGES = gimp-@GIMP_API_VERSION@
+
 # The various other GObject-Introspected libraries our API references
 # (i.e. types used in parameters or returned values).
 Gimp_@GIMP_API_MAJOR_VERSION@_@GIMP_API_MINOR_VERSION@_gir_INCLUDES = \
@@ -310,31 +314,80 @@ Gimp_@GIMP_API_MAJOR_VERSION@_@GIMP_API_MINOR_VERSION@_gir_CFLAGS = \
 
 Gimp_@GIMP_API_MAJOR_VERSION@_@GIMP_API_MINOR_VERSION@_gir_LIBS = \
        ../libgimp/libgimp-@GIMP_API_VERSION@.la                \
-       ../libgimp/libgimpui-@GIMP_API_VERSION@.la              \
        ../libgimpbase/libgimpbase-@GIMP_API_VERSION@.la        \
        ../libgimpcolor/libgimpcolor-@GIMP_API_VERSION@.la      \
        ../libgimpconfig/libgimpconfig-@GIMP_API_VERSION@.la    \
        ../libgimpmath/libgimpmath-@GIMP_API_VERSION@.la        \
-       ../libgimpmodule/libgimpmodule-@GIMP_API_VERSION@.la    \
-       ../libgimpthumb/libgimpthumb-@GIMP_API_VERSION@.la      \
-       ../libgimpwidgets/libgimpwidgets-@GIMP_API_VERSION@.la
+       ../libgimpmodule/libgimpmodule-@GIMP_API_VERSION@.la
 
 Gimp_@GIMP_API_MAJOR_VERSION@_@GIMP_API_MINOR_VERSION@_gir_FILES =     \
        $(libgimp_introspectable)                                       \
        ../libgimp/gimpparamspecs-body.c                                \
-       $(libgimpui_introspectable)                                     \
        $(libgimpbase_introspectable)                                   \
        $(libgimpcolor_introspectable)                                  \
        $(libgimpconfig_introspectable)                                 \
        $(libgimpmath_introspectable)                                   \
-       $(libgimpmodule_introspectable)                                 \
-       $(libgimpthumb_introspectable)                                  \
-       $(libgimpwidgets_introspectable)
+       $(libgimpmodule_introspectable)
 
 Gimp_@GIMP_API_MAJOR_VERSION@_@GIMP_API_MINOR_VERSION@_gir_SCANNERFLAGS = \
+       --identifier-prefix Gimp        \
+       --symbol-prefix gimp    \
        --c-include="libgimp/gimp.h"
 
-INTROSPECTION_GIRS += Gimp-@GIMP_API_VERSION@.gir
+### Second GIR: GimpUi
+GimpUi-@GIMP_API_VERSION@.gir: \
+       Gimp-@GIMP_API_VERSION@.gir     \
+       libgimpui-@GIMP_API_VERSION@.la                         \
+       ../libgimpwidgets/libgimpwidgets-@GIMP_API_VERSION@.la  \
+       Makefile
+
+GimpUi_@GIMP_API_MAJOR_VERSION@_@GIMP_API_MINOR_VERSION@_gir_EXPORT_PACKAGES = gimp-ui-@GIMP_API_VERSION@
+
+# The various other GObject-Introspected libraries our API references
+# (i.e. types used in parameters or returned values).
+GimpUi_@GIMP_API_MAJOR_VERSION@_@GIMP_API_MINOR_VERSION@_gir_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
+
+GimpUi_@GIMP_API_MAJOR_VERSION@_@GIMP_API_MINOR_VERSION@_gir_CFLAGS = \
+       -DGIMP_COMPILATION              \
+       -DGIMP_BASE_COMPILATION         \
+       -DGIMP_COLOR_COMPILATION        \
+       -DGIMP_CONFIG_COMPILATION       \
+       -DGIMP_MATH_COMPILATION         \
+       -DGIMP_MODULE_COMPILATION       \
+       -DGIMP_THUMB_COMPILATION        \
+       -DGIMP_WIDGETS_COMPILATION      \
+       $(AM_CFLAGS)                    \
+       $(AM_CPPFLAGS)                  \
+       -I$(top_builddir)               \
+       -I$(top_srcdir)                 \
+       $(CAIRO_CFLAGS)                 \
+       $(GDK_PIXBUF_CFLAGS)            \
+       $(BABL_CFLAGS)                  \
+       $(GEGL_CFLAGS)                  \
+       $(GTK_CFLAGS)
+
+GimpUi_@GIMP_API_MAJOR_VERSION@_@GIMP_API_MINOR_VERSION@_gir_LIBS = \
+       ../libgimp/libgimpui-@GIMP_API_VERSION@.la              \
+       ../libgimpwidgets/libgimpwidgets-@GIMP_API_VERSION@.la
+
+GimpUi_@GIMP_API_MAJOR_VERSION@_@GIMP_API_MINOR_VERSION@_gir_FILES =   \
+       $(libgimpui_introspectable)                                     \
+       $(libgimpwidgets_introspectable)
+
+GimpUi_@GIMP_API_MAJOR_VERSION@_@GIMP_API_MINOR_VERSION@_gir_SCANNERFLAGS = \
+       --identifier-prefix Gimp        \
+       --symbol-prefix gimp    \
+       --include-uninstalled=Gimp-@GIMP_API_VERSION@.gir       \
+       --c-include="libgimp/gimpui.h"
+
 
 girdir = $(datadir)/gir-1.0
 gir_DATA = $(INTROSPECTION_GIRS)
diff --git a/libgimp/meson.build b/libgimp/meson.build
index 272578ec40..1caaa9c147 100644
--- a/libgimp/meson.build
+++ b/libgimp/meson.build
@@ -336,19 +336,21 @@ install_headers(
 
 ### GObject introspection
 
-introspectable_files = [
+libgimp_introspectable_files = [
   libgimp_introspectable,
-  libgimpui_introspectable,
   libgimpbase_introspectable,
   libgimpcolor_introspectable,
   libgimpconfig_introspectable,
   libgimpmath_introspectable,
   libgimpmodule_introspectable,
-  libgimpthumb_introspectable,
-  libgimpwidgets_introspectable,
   'gimpparamspecs-body.c',
 ]
 
+libgimpui_introspectable_files = [
+  libgimpui_introspectable,
+  libgimpwidgets_introspectable,
+]
+
 if meson.is_cross_build()
   gobject_introspection_warning = '\n      '.join(['',
     'GObject Introspection is disabled while cross-compiling because',
@@ -360,52 +362,64 @@ if meson.is_cross_build()
   warning(gobject_introspection_warning)
   warnings += gobject_introspection_warning
 else
+  libgimp_gir_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',
+  ]
+
+  gir_args = [
+    '-DGIMP_COMPILATION',
+    '-DGIMP_BASE_COMPILATION',
+    '-DGIMP_COLOR_COMPILATION',
+    '-DGIMP_CONFIG_COMPILATION',
+    '-DGIMP_MATH_COMPILATION',
+    '-DGIMP_MODULE_COMPILATION',
+    '-DGIMP_THUMB_COMPILATION',
+    '-DGIMP_WIDGETS_COMPILATION',
+    '-DGIMP_DISABLE_DEPRECATED',
+    '--quiet',
+  ]
+
   libgimp_gir = gnome.generate_gir(
     libgimp,
-    libgimpui,
     libgimpbase,
     libgimpcolor,
     libgimpconfig,
     libgimpmath,
     libgimpmodule,
-    libgimpthumb,
-    libgimpwidgets,
 
-    sources: introspectable_files,
+    sources: libgimp_introspectable_files,
     nsversion: gimp_api_version,
     namespace: 'Gimp',
     identifier_prefix: 'Gimp',
-    # symbol_prefix: 'gimp',
+    symbol_prefix: 'gimp',
+    export_packages: 'gimp-' + gimp_api_version,
     header: 'libgimp/gimp.h',
+    includes: libgimp_gir_includes,
+    extra_args: gir_args,
+    include_directories: rootInclude,
+    install: true,
+  )
 
-    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',
-      '-DGIMP_DISABLE_DEPRECATED',
-      '--quiet',
-    ],
-
-    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,
-    ],
+  libgimpui_gir = gnome.generate_gir(
+    libgimpui,
+    libgimpwidgets,
 
+    sources: libgimpui_introspectable_files,
+    nsversion: gimp_api_version,
+    namespace: 'GimpUi',
+    identifier_prefix: 'Gimp',
+    symbol_prefix: 'gimp',
+    export_packages: 'gimp-ui-' + gimp_api_version,
+    header: 'libgimp/gimpui.h',
+    includes: [ libgimp_gir_includes, libgimp_gir[0] ],
+    extra_args: gir_args,
     include_directories: rootInclude,
     install: true,
   )


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