mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2024-12-30 17:36:16 +01:00
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:
commit
031b3de2ea
@ -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
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
@ -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 */
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user