From 60f0cdc48f5478e4e6bc2e7ae02feb8c28ab1ae5 Mon Sep 17 00:00:00 2001 From: Andreas Grapentin Date: Mon, 11 Feb 2019 16:00:09 +0100 Subject: pcr/glib2-static: fix meson build --- libre/glib2-static/fix-static-build-589.diff | 211 +++++++++++++++++++++++++++ 1 file changed, 211 insertions(+) create mode 100644 libre/glib2-static/fix-static-build-589.diff (limited to 'libre/glib2-static/fix-static-build-589.diff') diff --git a/libre/glib2-static/fix-static-build-589.diff b/libre/glib2-static/fix-static-build-589.diff new file mode 100644 index 000000000..cde19b391 --- /dev/null +++ b/libre/glib2-static/fix-static-build-589.diff @@ -0,0 +1,211 @@ +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 + 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); -- cgit v1.2.3