summaryrefslogtreecommitdiff
path: root/libre/glib2-static/fix-static-build-589.diff
diff options
context:
space:
mode:
authorAndreas Grapentin <andreas@grapentin.org>2019-02-11 16:00:09 +0100
committerAndreas Grapentin <andreas@grapentin.org>2019-02-11 16:01:25 +0100
commit60f0cdc48f5478e4e6bc2e7ae02feb8c28ab1ae5 (patch)
treeeaa85fe774bd8429ee9fb78456930ffc3d2ecc64 /libre/glib2-static/fix-static-build-589.diff
parent3b8859c6d5a88275e9b6e88fbf1a5a38dc2da93f (diff)
pcr/glib2-static: fix meson build
Diffstat (limited to 'libre/glib2-static/fix-static-build-589.diff')
-rw-r--r--libre/glib2-static/fix-static-build-589.diff211
1 files changed, 211 insertions, 0 deletions
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 <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);