Skip to content

Commit

Permalink
gnome: Add MSVC compatibility to the framework test
Browse files Browse the repository at this point in the history
This is necessary for running this test manually under Windows.
  • Loading branch information
amyspark committed Feb 15, 2025
1 parent 637925f commit 3783881
Show file tree
Hide file tree
Showing 10 changed files with 71 additions and 8 deletions.
4 changes: 4 additions & 0 deletions test cases/frameworks/7 gnome/gir/dep1/dep1.def
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
EXPORTS
meson_dep1_new
meson_dep1_just_return_it
meson_dep1_get_type
4 changes: 4 additions & 0 deletions test cases/frameworks/7 gnome/gir/dep1/dep2/dep2.def
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
EXPORTS
meson_dep2_new
meson_dep2_return_message
meson_dep2_get_type
5 changes: 5 additions & 0 deletions test cases/frameworks/7 gnome/gir/dep1/dep2/meson.build
Original file line number Diff line number Diff line change
Expand Up @@ -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',
Expand Down
4 changes: 4 additions & 0 deletions test cases/frameworks/7 gnome/gir/dep1/dep3/dep3.def
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
EXPORTS
meson_dep3_new
meson_dep3_return_message
meson_dep3_get_type
5 changes: 5 additions & 0 deletions test cases/frameworks/7 gnome/gir/dep1/dep3/meson.build
Original file line number Diff line number Diff line change
Expand Up @@ -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',
Expand Down
5 changes: 5 additions & 0 deletions test cases/frameworks/7 gnome/gir/dep1/meson.build
Original file line number Diff line number Diff line change
Expand Up @@ -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',
Expand Down
4 changes: 4 additions & 0 deletions test cases/frameworks/7 gnome/gir/meson-sample.def
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
EXPORTS
meson_sample_new
meson_sample_print_message
meson_sample_get_type
4 changes: 4 additions & 0 deletions test cases/frameworks/7 gnome/gir/meson-sample2.def
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
EXPORTS
meson_sample2_new
meson_sample2_print_message
meson_sample2_get_type
13 changes: 6 additions & 7 deletions test cases/frameworks/7 gnome/gir/meson.build
Original file line number Diff line number Diff line change
Expand Up @@ -17,13 +17,15 @@ girlib = shared_library(
sources : libsources,
c_args: '-DMESON_TEST_2',
dependencies : [gobj, dep1_dep],
vs_module_defs: 'meson-sample.def',
install : true
)

girlib2 = shared_library(
'gir_lib2',
sources : lib2sources,
dependencies : [gobj],
vs_module_defs: 'meson-sample2.def',
install : true
)

Expand Down Expand Up @@ -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']
Expand All @@ -72,6 +77,7 @@ endif
gnome.generate_gir(
girs,
sources : girs_sources,
env : envdata,
nsversion : '1.0',
namespace : 'Meson',
symbol_prefix : 'meson',
Expand All @@ -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)
31 changes: 30 additions & 1 deletion test cases/frameworks/7 gnome/meson.build
Original file line number Diff line number Diff line change
Expand Up @@ -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')
Expand All @@ -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')
Expand Down

0 comments on commit 3783881

Please sign in to comment.