| 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, |
| ) |