[gtk+/wip/meson: 136/136] build: Fix the introspection build



commit c63a6c425e4d4046bbca9786bb961028f8ee3451
Author: Emmanuele Bassi <ebassi gnome org>
Date:   Fri Apr 28 15:23:45 2017 +0100

    build: Fix the introspection build
    
    GSK has various enumeration types that are currently not used; while
    they may go away, currently they are built and introspected. If we want
    the introspection machinery to work, and still use static libraries to
    build GDK and GSK into the GTK shared library, then we need to reference
    the get_type() function of these enumeration types somewhere, to avoid
    the linker discarding it, and thus breaking the build.
    
    As luck would have it, we have an autogenerated bit of C that refers to
    all the get_type() functions in the library; if we add the GSK types to
    it, then we get the reference we're looking for, and the build succeeds.

 gtk/gentypefuncs.py |    2 +-
 gtk/meson.build     |   13 ++++++++-----
 2 files changed, 9 insertions(+), 6 deletions(-)
---
diff --git a/gtk/gentypefuncs.py b/gtk/gentypefuncs.py
index 5c1db6a..0e42002 100644
--- a/gtk/gentypefuncs.py
+++ b/gtk/gentypefuncs.py
@@ -23,7 +23,7 @@ for filename in in_files:
     for line in f:
       line = line.rstrip('\n').rstrip('\r')
       # print line
-      match = re.search(r'\bg[td]k_[a-zA-Z0-9_]*_get_type\b', line)
+      match = re.search(r'\bg[tds]k_[a-zA-Z0-9_]*_get_type\b', line)
       if match:
         func = match.group(0)
         if not func in funcs:
diff --git a/gtk/meson.build b/gtk/meson.build
index 02c352f..40a452c 100644
--- a/gtk/meson.build
+++ b/gtk/meson.build
@@ -741,14 +741,14 @@ gtkprivatetypebuiltins_h = gtkprivatetypebuiltins[1]
 
 # Generate gtktypefuncs.inc
 typefuncs = custom_target('gtktypefuncs.inc',
-                          depends: gdkenum_h,
+                          depends: [ gdkenum_h, gskenum_h, ],
                           output: 'gtktypefuncs.inc',
                           input: gdk_headers +
                             gtk_public_headers +
                             gtk_deprecated_headers +
                             gtk_private_headers +
                             [ gtktypebuiltins_h, ] +
-                            [ gdkenum_h, ],
+                            [ gdkenum_h, gskenum_h, ],
                           command: [
                             find_program('gentypefuncs.py'),
                             '@OUTPUT@',
@@ -890,7 +890,8 @@ libgtk = shared_library('gtk-4',
                         c_args: gtk_cargs + common_cflags,
                         include_directories: [confinc, gdkinc, gskinc, gtkinc],
                         dependencies: gtk_deps + [libgdk_dep, libgsk_dep],
-                        link_with: [libgdk, libgsk, included_input_modules],
+                        link_with: [libgdk, libgsk, ],
+                        link_whole: included_input_modules,
                         link_args: common_ldflags,
                         install: true)
 
@@ -901,7 +902,7 @@ libgtk_dep = declare_dependency(sources: [gtkversion, gtktypebuiltins_h],
                                 link_args: common_ldflags)
 
 # Introspection
-if false
+if not meson.is_cross_build()
   gir_args = [
     '--c-include=gtk/gtk.h',
   ]
@@ -933,12 +934,13 @@ if false
                        dependencies: gdk_gir_dep,
                        extra_args: [
                          '--c-include=gdk/gdkx.h',
+                         '--include-uninstalled=./gtk/Gdk-4.0.gir',
                          '-DGDK_COMPILATION',
                        ])
   endif
 
   gsk_gir = gnome.generate_gir(libgtk,
-                               sources: gsk_public_headers + gsk_gen_headers + gsk_public_sources,
+                               sources: gsk_public_headers + gsk_public_sources + [ gskenum_h ],
                                namespace: 'Gsk',
                                nsversion: gtk_api_version,
                                identifier_prefix: 'Gsk',
@@ -956,6 +958,7 @@ if false
                                    dependencies: gdk_gir_dep,
                                    sources: gsk_gir)
 
+
   gnome.generate_gir(libgtk,
                      sources: gtk_public_headers + gtk_public_sources + dnd_sources + a11y_headers + 
a11y_sources + [
                        gtktypebuiltins_h,


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