Merge branch 'fix-gmodule-macos' into 'master'

gmodule: use dl implementation on macOS

Closes #1887

See merge request GNOME/glib!1091
This commit is contained in:
Nirbheek Chauhan 2019-09-07 14:59:20 +00:00
commit 031b3de2ea
3 changed files with 29 additions and 7 deletions

View File

@ -13,12 +13,12 @@ if host_system == 'windows'
# dlopen() filepath must be of the form /path/libname.a(libname.so) # dlopen() filepath must be of the form /path/libname.a(libname.so)
elif host_system == 'aix' elif host_system == 'aix'
g_module_impl = 'G_MODULE_IMPL_AR' g_module_impl = 'G_MODULE_IMPL_AR'
elif have_dlopen_dlsym
g_module_impl = 'G_MODULE_IMPL_DL'
# NSLinkModule (dyld) in system libraries (Darwin) # NSLinkModule (dyld) in system libraries (Darwin)
elif cc.has_function('NSLinkModule') elif cc.has_function('NSLinkModule')
g_module_impl = 'G_MODULE_IMPL_DYLD' g_module_impl = 'G_MODULE_IMPL_DYLD'
g_module_need_uscore = 1 g_module_need_uscore = 1
elif have_dlopen_dlsym
g_module_impl = 'G_MODULE_IMPL_DL'
endif endif
# additional checks for G_MODULE_IMPL_DL # additional checks for G_MODULE_IMPL_DL

View File

@ -44,9 +44,17 @@ tests = {
'type-test' : {}, 'type-test' : {},
'unicode-caseconv' : {}, 'unicode-caseconv' : {},
'unicode-encoding' : {}, 'unicode-encoding' : {},
'module-test' : { 'module-test-library' : {
'dependencies' : [libgmodule_dep], 'dependencies' : [libgmodule_dep],
'export_dynamic' : true, 'export_dynamic' : true,
'source': 'module-test.c',
'c_args': ['-DMODULE_TYPE="library"'],
},
'module-test-plugin' : {
'dependencies' : [libgmodule_dep],
'export_dynamic' : true,
'source': 'module-test.c',
'c_args': ['-DMODULE_TYPE="plugin"'],
}, },
'cxx-test' : { 'cxx-test' : {
'source' : 'cxx-test.cpp', 'source' : 'cxx-test.cpp',
@ -87,11 +95,25 @@ if installed_tests_enabled
) )
endif endif
module_suffix = []
# Keep the autotools convention for shared module suffix because GModule
# depends on it: https://gitlab.gnome.org/GNOME/glib/issues/520
if ['darwin', 'ios'].contains(host_machine.system())
module_suffix = 'so'
endif
foreach module : ['moduletestplugin_a', 'moduletestplugin_b'] foreach module : ['moduletestplugin_a', 'moduletestplugin_b']
shared_module(module, 'lib@0@.c'.format(module), shared_module(module + '_plugin', 'lib@0@.c'.format(module),
dependencies : [libglib_dep, libgmodule_dep], dependencies : [libglib_dep, libgmodule_dep],
install_dir : installed_tests_execdir, install_dir : installed_tests_execdir,
install : installed_tests_enabled install : installed_tests_enabled,
name_suffix : module_suffix
)
shared_library(module + '_library', 'lib@0@.c'.format(module),
dependencies : [libglib_dep, libgmodule_dep],
install_dir : installed_tests_execdir,
install : installed_tests_enabled,
name_suffix : module_suffix
) )
endforeach endforeach

View File

@ -90,8 +90,8 @@ main (int argc,
if (!g_module_supported ()) if (!g_module_supported ())
g_error ("dynamic modules not supported"); g_error ("dynamic modules not supported");
plugin_a = g_test_build_filename (G_TEST_BUILT, MODULE_FILENAME_PREFIX "moduletestplugin_a", NULL); plugin_a = g_test_build_filename (G_TEST_BUILT, MODULE_FILENAME_PREFIX "moduletestplugin_a_" MODULE_TYPE, NULL);
plugin_b = g_test_build_filename (G_TEST_BUILT, MODULE_FILENAME_PREFIX "moduletestplugin_b", NULL); plugin_b = g_test_build_filename (G_TEST_BUILT, MODULE_FILENAME_PREFIX "moduletestplugin_b_" MODULE_TYPE, NULL);
/* module handles */ /* module handles */