summaryrefslogtreecommitdiff
path: root/test cases/frameworks
diff options
context:
space:
mode:
authorCharles Brunet <charles.brunet@optelgroup.com>2024-10-29 16:51:36 -0400
committerDylan Baker <dylan@pnwbakers.com>2024-12-06 10:50:32 -0800
commitd8ea5c4d8875bf198f088c603868edf66a3c7c65 (patch)
treeb9f6460e2969a01216f72b8e569cf39a8184548f /test cases/frameworks
parent2fd0dacf06712857993496b7da1dc16dce71f523 (diff)
downloadmeson-d8ea5c4d8875bf198f088c603868edf66a3c7c65.tar.gz
fix generate_gir with BothLibraries dependency
Co-authored-by: Xavier Claessens <xclaesse@gmail.com>
Diffstat (limited to 'test cases/frameworks')
-rw-r--r--test cases/frameworks/38 gir both_libraries/bar.c7
-rw-r--r--test cases/frameworks/38 gir both_libraries/bar.h1
-rw-r--r--test cases/frameworks/38 gir both_libraries/foo.c6
-rw-r--r--test cases/frameworks/38 gir both_libraries/foo.h1
-rw-r--r--test cases/frameworks/38 gir both_libraries/meson.build42
-rw-r--r--test cases/frameworks/38 gir both_libraries/test.json3
6 files changed, 60 insertions, 0 deletions
diff --git a/test cases/frameworks/38 gir both_libraries/bar.c b/test cases/frameworks/38 gir both_libraries/bar.c
new file mode 100644
index 000000000..4cb41f798
--- /dev/null
+++ b/test cases/frameworks/38 gir both_libraries/bar.c
@@ -0,0 +1,7 @@
+#include "bar.h"
+#include "foo.h"
+
+int bar_func(void)
+{
+ return foo_func() + 42;
+}
diff --git a/test cases/frameworks/38 gir both_libraries/bar.h b/test cases/frameworks/38 gir both_libraries/bar.h
new file mode 100644
index 000000000..d22827b83
--- /dev/null
+++ b/test cases/frameworks/38 gir both_libraries/bar.h
@@ -0,0 +1 @@
+int bar_func(void);
diff --git a/test cases/frameworks/38 gir both_libraries/foo.c b/test cases/frameworks/38 gir both_libraries/foo.c
new file mode 100644
index 000000000..b88aa91da
--- /dev/null
+++ b/test cases/frameworks/38 gir both_libraries/foo.c
@@ -0,0 +1,6 @@
+#include "foo.h"
+
+int foo_func(void)
+{
+ return 42;
+}
diff --git a/test cases/frameworks/38 gir both_libraries/foo.h b/test cases/frameworks/38 gir both_libraries/foo.h
new file mode 100644
index 000000000..2a0867249
--- /dev/null
+++ b/test cases/frameworks/38 gir both_libraries/foo.h
@@ -0,0 +1 @@
+int foo_func(void);
diff --git a/test cases/frameworks/38 gir both_libraries/meson.build b/test cases/frameworks/38 gir both_libraries/meson.build
new file mode 100644
index 000000000..cb9cdd31f
--- /dev/null
+++ b/test cases/frameworks/38 gir both_libraries/meson.build
@@ -0,0 +1,42 @@
+project('gir both libraries', 'c')
+
+gir = dependency('gobject-introspection-1.0', required: false)
+if not gir.found()
+ error('MESON_SKIP_TEST gobject-introspection not found.')
+endif
+
+if host_machine.system() == 'cygwin'
+ # FIXME: g-ir-scanner seems broken on cygwin:
+ # ERROR: can't resolve libraries to shared libraries: foo++
+ error('MESON_SKIP_TEST g-ir-scanner is broken on cygwin.')
+endif
+
+gnome = import('gnome')
+
+# Regression test simulating how GStreamer generate its GIRs.
+# Generated gobject-introspection binaries for every GStreamer libraries must
+# first call gst_init() defined in the main libgstreamer, which means they need
+# to link on that lib.
+# A regression caused by https://github.com/mesonbuild/meson/pull/12632 made
+# Meson not link the binary generated for bar with libfoo in the case it uses
+# both_libraries().
+
+libfoo = both_libraries('foo', 'foo.c')
+foo_gir = gnome.generate_gir(libfoo,
+ namespace: 'foo',
+ nsversion: '1.0',
+ sources: ['foo.c', 'foo.h'],
+)
+foo_dep = declare_dependency(
+ link_with: libfoo,
+ sources: foo_gir,
+)
+
+libbar = both_libraries('bar', 'bar.c', dependencies: foo_dep)
+gnome.generate_gir(libbar,
+ namespace: 'bar',
+ nsversion: '1.0',
+ sources: ['bar.c', 'bar.h'],
+ extra_args: '--add-init-section=extern void foo_func(void);foo_func();',
+ dependencies: foo_dep,
+)
diff --git a/test cases/frameworks/38 gir both_libraries/test.json b/test cases/frameworks/38 gir both_libraries/test.json
new file mode 100644
index 000000000..82ac42a29
--- /dev/null
+++ b/test cases/frameworks/38 gir both_libraries/test.json
@@ -0,0 +1,3 @@
+{
+ "expect_skip_on_jobname": ["azure", "macos", "msys2", "cygwin"]
+} \ No newline at end of file