123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212 |
- diff --git a/gio/tests/giomodule.c b/gio/tests/giomodule.c
- index e832e95d37b6c19c9a7fce2adbc6eb47aced4256..893357110e0d74e94fd7f40b5f3172964b545daa 100644
- --- a/gio/tests/giomodule.c
- +++ b/gio/tests/giomodule.c
- @@ -76,51 +76,57 @@ test_extension_point (void)
- static void
- test_module_scan_all (void)
- {
- - if (g_test_subprocess ())
- + if (g_module_supported ())
- {
- - GIOExtensionPoint *ep;
- - GIOExtension *ext;
- - GList *list;
- - ep = g_io_extension_point_register ("test-extension-point");
- - g_io_modules_scan_all_in_directory (g_test_get_filename (G_TEST_BUILT, "modules", NULL));
- - g_io_modules_scan_all_in_directory (g_test_get_filename (G_TEST_BUILT, "modules/.libs", NULL));
- - list = g_io_extension_point_get_extensions (ep);
- - g_assert_cmpint (g_list_length (list), ==, 2);
- - ext = list->data;
- - g_assert_cmpstr (g_io_extension_get_name (ext), ==, "test-b");
- - ext = list->next->data;
- - g_assert_cmpstr (g_io_extension_get_name (ext), ==, "test-a");
- - return;
- + if (g_test_subprocess ())
- + {
- + GIOExtensionPoint *ep;
- + GIOExtension *ext;
- + GList *list;
- + ep = g_io_extension_point_register ("test-extension-point");
- + g_io_modules_scan_all_in_directory (g_test_get_filename (G_TEST_BUILT, "modules", NULL));
- + g_io_modules_scan_all_in_directory (g_test_get_filename (G_TEST_BUILT, "modules/.libs", NULL));
- + list = g_io_extension_point_get_extensions (ep);
- + g_assert_cmpint (g_list_length (list), ==, 2);
- + ext = list->data;
- + g_assert_cmpstr (g_io_extension_get_name (ext), ==, "test-b");
- + ext = list->next->data;
- + g_assert_cmpstr (g_io_extension_get_name (ext), ==, "test-a");
- + return;
- + }
- + g_test_trap_subprocess (NULL, 0, 7);
- + g_test_trap_assert_passed ();
- }
- - g_test_trap_subprocess (NULL, 0, 7);
- - g_test_trap_assert_passed ();
- }
-
- static void
- test_module_scan_all_with_scope (void)
- {
- - if (g_test_subprocess ())
- + if (g_module_supported ())
- {
- - GIOExtensionPoint *ep;
- - GIOModuleScope *scope;
- - GIOExtension *ext;
- - GList *list;
- + if (g_test_subprocess ())
- + {
- + GIOExtensionPoint *ep;
- + GIOModuleScope *scope;
- + GIOExtension *ext;
- + GList *list;
-
- - ep = g_io_extension_point_register ("test-extension-point");
- - scope = g_io_module_scope_new (G_IO_MODULE_SCOPE_BLOCK_DUPLICATES);
- - g_io_module_scope_block (scope, "libtestmoduleb." G_MODULE_SUFFIX);
- - g_io_modules_scan_all_in_directory_with_scope (g_test_get_filename (G_TEST_BUILT, "modules", NULL), scope);
- - list = g_io_extension_point_get_extensions (ep);
- - g_io_modules_scan_all_in_directory_with_scope (g_test_get_filename (G_TEST_BUILT, "modules/.libs", NULL), scope);
- - list = g_io_extension_point_get_extensions (ep);
- - g_assert_cmpint (g_list_length (list), ==, 1);
- - ext = list->data;
- - g_assert_cmpstr (g_io_extension_get_name (ext), ==, "test-a");
- - g_io_module_scope_free (scope);
- - return;
- + ep = g_io_extension_point_register ("test-extension-point");
- + scope = g_io_module_scope_new (G_IO_MODULE_SCOPE_BLOCK_DUPLICATES);
- + g_io_module_scope_block (scope, "libtestmoduleb." G_MODULE_SUFFIX);
- + g_io_modules_scan_all_in_directory_with_scope (g_test_get_filename (G_TEST_BUILT, "modules", NULL), scope);
- + list = g_io_extension_point_get_extensions (ep);
- + g_io_modules_scan_all_in_directory_with_scope (g_test_get_filename (G_TEST_BUILT, "modules/.libs", NULL), scope);
- + list = g_io_extension_point_get_extensions (ep);
- + g_assert_cmpint (g_list_length (list), ==, 1);
- + ext = list->data;
- + g_assert_cmpstr (g_io_extension_get_name (ext), ==, "test-a");
- + g_io_module_scope_free (scope);
- + return;
- + }
- + g_test_trap_subprocess (NULL, 0, 7);
- + g_test_trap_assert_passed ();
- }
- - g_test_trap_subprocess (NULL, 0, 7);
- - g_test_trap_assert_passed ();
- }
-
- int
- diff --git a/gmodule/meson.build b/gmodule/meson.build
- index e4a6a1c811c97ea32e27c79a766dd31205e7789b..77ffdc476a631eed8403a88b08006e6fb4b16494 100644
- --- a/gmodule/meson.build
- +++ b/gmodule/meson.build
- @@ -8,7 +8,8 @@ libdl_dep = [ ]
- g_module_lib_args = [ ]
- g_module_impl = ''
-
- -dlopen_dlsym_test_code = '''
- +if get_option('default_library') != 'static'
- + dlopen_dlsym_test_code = '''
- #include <dlfcn.h>
- int glib_underscore_test (void) { return 42; }
- int main (int argc, char ** argv) {
- @@ -21,48 +22,49 @@ int main (int argc, char ** argv) {
- return (!f2 || f1);
- }'''
-
- -# On Windows force native WIN32 shared lib loader
- -if host_system == 'windows'
- - g_module_impl = 'G_MODULE_IMPL_WIN32'
- -# Force native AIX library loader
- -# dlopen() filepath must be of the form /path/libname.a(libname.so)
- -elif host_system == 'aix'
- - g_module_impl = 'G_MODULE_IMPL_AR'
- -elif cc.links(dlopen_dlsym_test_code, name : 'dlopen() and dlsym() in system libraries')
- - g_module_impl = 'G_MODULE_IMPL_DL'
- -# NSLinkModule (dyld) in system libraries (Darwin)
- -elif cc.has_function('NSLinkModule')
- - g_module_impl = 'G_MODULE_IMPL_DYLD'
- - g_module_need_uscore = 1
- -elif cc.links(dlopen_dlsym_test_code, args : '-ldl', name : 'dlopen() and dlsym() in libdl')
- - g_module_impl = 'G_MODULE_IMPL_DL'
- - libdl_dep = cc.find_library('dl')
- - g_module_lib_args = '-ldl'
- -endif
- + # On Windows force native WIN32 shared lib loader
- + if host_system == 'windows'
- + g_module_impl = 'G_MODULE_IMPL_WIN32'
- + # Force native AIX library loader
- + # dlopen() filepath must be of the form /path/libname.a(libname.so)
- + elif host_system == 'aix'
- + g_module_impl = 'G_MODULE_IMPL_AR'
- + elif cc.links(dlopen_dlsym_test_code, name : 'dlopen() and dlsym() in system libraries')
- + g_module_impl = 'G_MODULE_IMPL_DL'
- + # NSLinkModule (dyld) in system libraries (Darwin)
- + elif cc.has_function('NSLinkModule')
- + g_module_impl = 'G_MODULE_IMPL_DYLD'
- + g_module_need_uscore = 1
- + elif cc.links(dlopen_dlsym_test_code, args : '-ldl', name : 'dlopen() and dlsym() in libdl')
- + g_module_impl = 'G_MODULE_IMPL_DL'
- + libdl_dep = cc.find_library('dl')
- + g_module_lib_args = '-ldl'
- + endif
-
- -# additional checks for G_MODULE_IMPL_DL
- -if g_module_impl == 'G_MODULE_IMPL_DL'
- - # FIXME: check for OSF1/5.0 RTLD_GLOBAL brokenness (is this still relevant?)
- + # additional checks for G_MODULE_IMPL_DL
- + if g_module_impl == 'G_MODULE_IMPL_DL'
- + # FIXME: check for OSF1/5.0 RTLD_GLOBAL brokenness (is this still relevant?)
-
- - # Check whether we need preceding underscores
- - if cc.get_id() == 'msvc'
- - message('Building for MSVC: assuming that symbols are prefixed with underscore')
- - g_module_need_uscore = 1
- - elif meson.has_exe_wrapper()
- - # FIXME: communicate result via stdout instead of return value, so non-0 return is not printed in bold red
- - rres = cc.run(dlopen_dlsym_test_code,
- - args : g_module_lib_args,
- - name : 'dlsym() preceding underscores')
- - if host_system == 'windows' or rres.returncode() == 0
- + # Check whether we need preceding underscores
- + if cc.get_id() == 'msvc'
- + message('Building for MSVC: assuming that symbols are prefixed with underscore')
- g_module_need_uscore = 1
- + elif meson.has_exe_wrapper()
- + # FIXME: communicate result via stdout instead of return value, so non-0 return is not printed in bold red
- + rres = cc.run(dlopen_dlsym_test_code,
- + args : g_module_lib_args,
- + name : 'dlsym() preceding underscores')
- + if host_system == 'windows' or rres.returncode() == 0
- + g_module_need_uscore = 1
- + endif
- + else
- + message('Cross-compiling: assuming that symbols aren\'t prefixed with underscore')
- + g_module_need_uscore = 0
- endif
- - else
- - message('Cross-compiling: assuming that symbols aren\'t prefixed with underscore')
- - g_module_need_uscore = 0
- - endif
-
- - if cc.has_function('dlerror', args : g_module_lib_args)
- - g_module_have_dlerror = 1
- + if cc.has_function('dlerror', args : g_module_lib_args)
- + g_module_have_dlerror = 1
- + endif
- endif
- endif
-
- diff --git a/tests/module-test.c b/tests/module-test.c
- index fbf23169f730f3ecf2f24c1071f6ee1869fdc2fe..04a12128923258fe0ab0b37e618fe89b11cb0327 100644
- --- a/tests/module-test.c
- +++ b/tests/module-test.c
- @@ -82,7 +82,7 @@ main (int argc,
- g_test_init (&argc, &argv, NULL);
-
- if (!g_module_supported ())
- - g_error ("dynamic modules not supported");
- + return 0;
-
- plugin_a = g_test_build_filename (G_TEST_BUILT, "libmoduletestplugin_a", NULL);
- plugin_b = g_test_build_filename (G_TEST_BUILT, "libmoduletestplugin_b", NULL);
|