summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXavier Claessens <xavier.claessens@collabora.com>2018-05-15 14:05:50 -0400
committerXavier Claessens <xavier.claessens@collabora.com>2018-05-16 10:21:07 -0400
commit2477c7b05faa26d62bd151f82c8087c471f62292 (patch)
tree7cfe10f5905cbb008824550d21a1a7df3b72f54f
parent4b82738f0ada5f807145639082a8dc0c993bd41f (diff)
downloadglib-2477c7b05faa26d62bd151f82c8087c471f62292.tar.gz
Meson: add 'force_posix_threads' option
This allows building with posix threads on Windows. It is generally better to use win32 threads implementation on Windows, but this option can be used in case it causes issues, or for performance comparison for example. https://bugzilla.gnome.org/show_bug.cgi?id=784995
-rw-r--r--glib/meson.build4
-rw-r--r--meson.build11
-rw-r--r--meson_options.txt5
3 files changed, 13 insertions, 7 deletions
diff --git a/glib/meson.build b/glib/meson.build
index a97d11f6c..1010f5d92 100644
--- a/glib/meson.build
+++ b/glib/meson.build
@@ -204,15 +204,15 @@ if host_system == 'windows'
)
glib_win_res = windows.compile_resources(glib_win_rc)
glib_sources += [glib_win_res]
- glib_sources += files('gthread-win32.c')
glib_sources += files('gwin32.c', 'gspawn-win32.c', 'giowin32.c')
platform_deps = [winsock2, cc.find_library('winmm')]
else
- glib_sources += files('gthread-posix.c')
glib_sources += files('glib-unix.c', 'gspawn.c', 'giounix.c')
platform_deps = []
endif
+glib_sources += files('gthread-@0@.c'.format(threads_implementation))
+
if enable_dtrace
glib_dtrace_obj = dtrace_obj_gen.process('glib_probes.d')
glib_dtrace_hdr = dtrace_hdr_gen.process('glib_probes.d')
diff --git a/meson.build b/meson.build
index 511b0393d..4ccb312cb 100644
--- a/meson.build
+++ b/meson.build
@@ -1476,15 +1476,16 @@ endif
# === Threads ===
-# Let meson figure out all this business and whether -pthread or whatnot is needed
-# FIXME: probably needs more tweaking in meson for things like -D_REENTRANT etc.
-thread_dep = dependency('threads')
-
# Determination of thread implementation
-if host_system == 'windows'
+if host_system == 'windows' and not get_option('force_posix_threads')
+ thread_dep = []
+ threads_implementation = 'win32'
glibconfig_conf.set('g_threads_impl_def', 'WIN32')
glib_conf.set('THREADS_WIN32', 1)
else
+ # FIXME: probably needs more tweaking in meson for things like -D_REENTRANT etc.
+ thread_dep = dependency('threads')
+ threads_implementation = 'posix'
pthread_prefix = '''
#ifndef _GNU_SOURCE
# define _GNU_SOURCE
diff --git a/meson_options.txt b/meson_options.txt
index 60a541d92..3d816d365 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -68,3 +68,8 @@ option('bsymbolic_functions',
type : 'boolean',
value : true,
description : 'link with -Bsymbolic-functions if supported')
+
+option('force_posix_threads',
+ type : 'boolean',
+ value : false,
+ description : 'Also use posix threads in case the platform defaults to another implementation (on Windows for example)')