From 3783881722835897242f2dcadd02e22e56171625 Mon Sep 17 00:00:00 2001 From: "L. E. Segovia" Date: Tue, 11 Feb 2025 14:18:04 -0300 Subject: [PATCH] gnome: Add MSVC compatibility to the framework test This is necessary for running this test manually under Windows. --- .../frameworks/7 gnome/gir/dep1/dep1.def | 4 +++ .../frameworks/7 gnome/gir/dep1/dep2/dep2.def | 4 +++ .../7 gnome/gir/dep1/dep2/meson.build | 5 +++ .../frameworks/7 gnome/gir/dep1/dep3/dep3.def | 4 +++ .../7 gnome/gir/dep1/dep3/meson.build | 5 +++ .../frameworks/7 gnome/gir/dep1/meson.build | 5 +++ .../frameworks/7 gnome/gir/meson-sample.def | 4 +++ .../frameworks/7 gnome/gir/meson-sample2.def | 4 +++ test cases/frameworks/7 gnome/gir/meson.build | 13 ++++---- test cases/frameworks/7 gnome/meson.build | 31 ++++++++++++++++++- 10 files changed, 71 insertions(+), 8 deletions(-) create mode 100644 test cases/frameworks/7 gnome/gir/dep1/dep1.def create mode 100644 test cases/frameworks/7 gnome/gir/dep1/dep2/dep2.def create mode 100644 test cases/frameworks/7 gnome/gir/dep1/dep3/dep3.def create mode 100644 test cases/frameworks/7 gnome/gir/meson-sample.def create mode 100644 test cases/frameworks/7 gnome/gir/meson-sample2.def diff --git a/test cases/frameworks/7 gnome/gir/dep1/dep1.def b/test cases/frameworks/7 gnome/gir/dep1/dep1.def new file mode 100644 index 000000000000..8e1ab6732b46 --- /dev/null +++ b/test cases/frameworks/7 gnome/gir/dep1/dep1.def @@ -0,0 +1,4 @@ +EXPORTS + meson_dep1_new + meson_dep1_just_return_it + meson_dep1_get_type diff --git a/test cases/frameworks/7 gnome/gir/dep1/dep2/dep2.def b/test cases/frameworks/7 gnome/gir/dep1/dep2/dep2.def new file mode 100644 index 000000000000..c3995d986061 --- /dev/null +++ b/test cases/frameworks/7 gnome/gir/dep1/dep2/dep2.def @@ -0,0 +1,4 @@ +EXPORTS + meson_dep2_new + meson_dep2_return_message + meson_dep2_get_type diff --git a/test cases/frameworks/7 gnome/gir/dep1/dep2/meson.build b/test cases/frameworks/7 gnome/gir/dep1/dep2/meson.build index 4004f22d6d4d..30307f591677 100644 --- a/test cases/frameworks/7 gnome/gir/dep1/dep2/meson.build +++ b/test cases/frameworks/7 gnome/gir/dep1/dep2/meson.build @@ -4,12 +4,17 @@ dep2lib = shared_library( 'dep2lib', sources : dep2sources, dependencies : gobj, + vs_module_defs: 'dep2.def', install : true ) +envdata.append('GI_TYPELIB_PATH', dep2lib.outdir()) +envdata.append(var, dep2lib.outdir()) + dep2gir = gnome.generate_gir( dep2lib, sources : dep2sources, + env : envdata, nsversion : '1.0', namespace : 'MesonDep2', symbol_prefix : 'meson', diff --git a/test cases/frameworks/7 gnome/gir/dep1/dep3/dep3.def b/test cases/frameworks/7 gnome/gir/dep1/dep3/dep3.def new file mode 100644 index 000000000000..428d11fd7489 --- /dev/null +++ b/test cases/frameworks/7 gnome/gir/dep1/dep3/dep3.def @@ -0,0 +1,4 @@ +EXPORTS + meson_dep3_new + meson_dep3_return_message + meson_dep3_get_type diff --git a/test cases/frameworks/7 gnome/gir/dep1/dep3/meson.build b/test cases/frameworks/7 gnome/gir/dep1/dep3/meson.build index 1ef77656368d..dccbe83bc3c9 100644 --- a/test cases/frameworks/7 gnome/gir/dep1/dep3/meson.build +++ b/test cases/frameworks/7 gnome/gir/dep1/dep3/meson.build @@ -4,12 +4,17 @@ dep3lib = shared_library( 'dep3lib', sources : dep3sources, dependencies : gobj, + vs_module_defs: 'dep3.def', install : true ) +envdata.append('GI_TYPELIB_PATH', dep3lib.outdir()) +envdata.append(var, dep3lib.outdir()) + dep3gir = gnome.generate_gir( dep3lib, sources : dep3sources, + env : envdata, nsversion : '1.0', namespace : 'MesonDep3', symbol_prefix : 'meson', diff --git a/test cases/frameworks/7 gnome/gir/dep1/meson.build b/test cases/frameworks/7 gnome/gir/dep1/meson.build index 2f03ede296e8..dbbb5cc2b2f3 100644 --- a/test cases/frameworks/7 gnome/gir/dep1/meson.build +++ b/test cases/frameworks/7 gnome/gir/dep1/meson.build @@ -8,14 +8,19 @@ dep1lib = shared_library( 'dep1lib', sources : dep1sources, dependencies : gobj, + vs_module_defs: 'dep1.def', install : true ) +envdata.append('GI_TYPELIB_PATH', dep1lib.outdir()) +envdata.append(var, dep1lib.outdir()) + # But the gir does need it because it we use the MesonDep2* structure defined # in the header dep1gir = gnome.generate_gir( dep1lib, sources : dep1sources, + env : envdata, nsversion : '1.0', namespace : 'MesonDep1', symbol_prefix : 'meson', diff --git a/test cases/frameworks/7 gnome/gir/meson-sample.def b/test cases/frameworks/7 gnome/gir/meson-sample.def new file mode 100644 index 000000000000..a3c96f5bfd0c --- /dev/null +++ b/test cases/frameworks/7 gnome/gir/meson-sample.def @@ -0,0 +1,4 @@ +EXPORTS + meson_sample_new + meson_sample_print_message + meson_sample_get_type diff --git a/test cases/frameworks/7 gnome/gir/meson-sample2.def b/test cases/frameworks/7 gnome/gir/meson-sample2.def new file mode 100644 index 000000000000..4299370f00a9 --- /dev/null +++ b/test cases/frameworks/7 gnome/gir/meson-sample2.def @@ -0,0 +1,4 @@ +EXPORTS + meson_sample2_new + meson_sample2_print_message + meson_sample2_get_type diff --git a/test cases/frameworks/7 gnome/gir/meson.build b/test cases/frameworks/7 gnome/gir/meson.build index 2ecc89b01111..7078893f94a3 100644 --- a/test cases/frameworks/7 gnome/gir/meson.build +++ b/test cases/frameworks/7 gnome/gir/meson.build @@ -17,6 +17,7 @@ girlib = shared_library( sources : libsources, c_args: '-DMESON_TEST_2', dependencies : [gobj, dep1_dep], + vs_module_defs: 'meson-sample.def', install : true ) @@ -24,6 +25,7 @@ girlib2 = shared_library( 'gir_lib2', sources : lib2sources, dependencies : [gobj], + vs_module_defs: 'meson-sample2.def', install : true ) @@ -54,6 +56,9 @@ girexe = executable( fake_dep = dependency('no-way-this-exists', required: false) +envdata.append('GI_TYPELIB_PATH', girlib.outdir()) +envdata.append(var, girlib.outdir()) + # g-ir-scanner ignores CFLAGS for MSVC flags_dep_for_msvc = declare_dependency( compile_args: ['-DMESON_TEST_2'] @@ -72,6 +77,7 @@ endif gnome.generate_gir( girs, sources : girs_sources, + env : envdata, nsversion : '1.0', namespace : 'Meson', symbol_prefix : 'meson', @@ -83,12 +89,5 @@ gnome.generate_gir( ) test('gobject introspection/c', girexe) -gir_paths = ':'.join([girlib.outdir(), dep1lib.outdir(), dep2lib.outdir(), dep3lib.outdir()]) -envdata = environment() -envdata.append('GI_TYPELIB_PATH', gir_paths, separator : ':') -envdata.append('LD_LIBRARY_PATH', gir_paths) -if ['windows', 'cygwin'].contains(host_machine.system()) - envdata.append('PATH', gir_paths) -endif test('gobject introspection/py', find_program('prog.py'), env : envdata) diff --git a/test cases/frameworks/7 gnome/meson.build b/test cases/frameworks/7 gnome/meson.build index f75ca93a105e..9f8a83a2db60 100644 --- a/test cases/frameworks/7 gnome/meson.build +++ b/test cases/frameworks/7 gnome/meson.build @@ -44,7 +44,7 @@ endif gnome = import('gnome') gio = dependency('gio-2.0') -giounix = dependency('gio-unix-2.0') +giounix = dependency('gio-unix-2.0', required: host_machine.system() != 'windows', disabler: true) glib = dependency('glib-2.0') gobj = dependency('gobject-2.0') gir = dependency('gobject-introspection-1.0') @@ -62,6 +62,35 @@ endif # Test that static deps don't error out when static libraries aren't found glib_static = dependency('glib-2.0', static : true) + +envdata = environment() +if ['darwin', 'ios'].contains(host_machine.system()) + var = 'DYLD_LIBRARY_PATH' +elif ['windows', 'cygwin'].contains(host_machine.system()) + var = 'PATH' +else + var = 'LD_LIBRARY_PATH' +endif + +current_library_path = run_command( + [ + py3, + '-c', + 'import os; print(os.environ["@0@"]) if "@0@" in os.environ else ""'.format(var) + ], + capture: true, + check: true, +).stdout().strip() +if current_library_path != '' + envdata.set(var, current_library_path) +endif +if ['windows', 'cygwin'].contains(host_machine.system()) + bindir = gir.get_variable(pkgconfig: 'bindir', default_value: '') + if bindir != '' + envdata.prepend(var, bindir) + endif +endif + subdir('resources-data') subdir('resources') subdir('gir')