summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEmmanuele Bassi <ebassi@gnome.org>2017-04-28 15:23:45 +0100
committerEmmanuele Bassi <ebassi@gnome.org>2017-04-28 23:12:52 +0100
commitaa25678780c74a529dda06c6204925fb8884c55f (patch)
tree31da7957a3273c8420c6340a5aee73a564714f90
parent82cca7453fb491b835ce1d5a3d4ad49bc038653e (diff)
downloadgtk+-aa25678780c74a529dda06c6204925fb8884c55f.tar.gz
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.
-rw-r--r--gtk/gentypefuncs.py2
-rw-r--r--gtk/meson.build13
2 files changed, 9 insertions, 6 deletions
diff --git a/gtk/gentypefuncs.py b/gtk/gentypefuncs.py
index 5c1db6a59f..0e42002a17 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 02c352fb4d..40a452cafe 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,