aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Dmitrij D. Czarkoff <czarkoff@gmail.com>2016-10-20 16:51:21 +0200
committerGravatar wm4 <wm4@nowhere>2016-10-20 17:51:57 +0200
commitee2ba599e7b0aa002dc7257458c19bdb64fd6252 (patch)
treefe5aa113d758a2d57e72505e11a723a7f6cfebfd
parent26458419a79339a186028cb26d842f3b9fa9eb23 (diff)
build: don't rely on "__thread" being always available with GCC
Thread-local storage in GCC is platform-specific, and some platforms that are otherwise perfectly capable of running mpv may lack TLS support in GCC. This change adds a test for GCC variant of TLS and relies on its result instead of assumption. Provided that LLVM's `__thread` support is similar to GCC, the test is called "GCC/LLVM TLS". Signed-off-by: wm4 <wm4@nowhere>
-rw-r--r--video/out/opengl/context.c2
-rw-r--r--wscript4
2 files changed, 5 insertions, 1 deletions
diff --git a/video/out/opengl/context.c b/video/out/opengl/context.c
index 0f5b61e37c..fb3471cd3b 100644
--- a/video/out/opengl/context.c
+++ b/video/out/opengl/context.c
@@ -125,7 +125,7 @@ int mpgl_validate_backend_opt(struct mp_log *log, const struct m_option *opt,
#if HAVE_C11_TLS
#define MP_TLS _Thread_local
-#elif defined(__GNUC__)
+#elif HAVE_GCC_TLS
#define MP_TLS __thread
#endif
diff --git a/wscript b/wscript
index ccdf3a9fdc..9fa00b01f0 100644
--- a/wscript
+++ b/wscript
@@ -186,6 +186,10 @@ main_dependencies = [
'desc': 'C11 TLS support',
'func': check_statement('stddef.h', 'static _Thread_local int x = 0'),
}, {
+ 'name': 'gcc-tls',
+ 'desc': 'GCC TLS support',
+ 'func': check_statement('stddef.h', 'static __thread int x = 0'),
+ }, {
'name': 'librt',
'desc': 'linking with -lrt',
'deps': [ 'pthreads' ],