diff options
author | Diego 'Flameeyes' Pettenò <flameeyes@gmail.com> | 2008-08-08 14:03:54 +0200 |
---|---|---|
committer | Diego 'Flameeyes' Pettenò <flameeyes@gmail.com> | 2008-08-08 15:09:38 +0200 |
commit | daf3e8b97d09d85d51eac34b9d5acf4545d03a2d (patch) | |
tree | 80f422f11a8764611eb311b12504e00130be4484 | |
parent | 81969a73a494a36356e764cf3576aa48c101bffb (diff) |
Create a new macro for checking compiler support for TLS.
Create a new macro that can be shared between projects to check for
__thread support by the compiler. This macro might come useful for
xine-lib too so I want to keep it separate for easier importing it
over.
Name the defined macro SUPPORT_TLS___THREAD to follow the same style
as the checks from attributes.m4.
-rw-r--r-- | configure.ac | 12 | ||||
-rw-r--r-- | m4/tls.m4 | 17 | ||||
-rw-r--r-- | src/pulsecore/thread.h | 2 |
3 files changed, 19 insertions, 12 deletions
diff --git a/configure.ac b/configure.ac index f56be997..7c9da77c 100644 --- a/configure.ac +++ b/configure.ac @@ -199,17 +199,7 @@ else esac fi -AC_MSG_CHECKING([whether $CC knows __thread]) -AC_LANG_CONFTEST([static __thread int a = 6; int main() { a = 5; }]) -$CC conftest.c $CFLAGS -o conftest > /dev/null 2> /dev/null -ret=$? -rm -f conftest.o conftest -if test $ret -eq 0 ; then - AC_DEFINE([HAVE_TLS_BUILTIN], 1, [Have __thread().]) - AC_MSG_RESULT([yes]) -else - AC_MSG_RESULT([no]) -fi +CC_CHECK_TLS AC_MSG_CHECKING([whether $CC knows _Bool]) AC_LANG_CONFTEST([int main() { _Bool b; }]) diff --git a/m4/tls.m4 b/m4/tls.m4 new file mode 100644 index 00000000..3808f06e --- /dev/null +++ b/m4/tls.m4 @@ -0,0 +1,17 @@ +AC_DEFUN([CC_CHECK_TLS], [ + AC_CACHE_CHECK([whether $CC knows __thread for Thread-Local Storage], + cc_cv_tls___thread, + [AC_COMPILE_IFELSE( + AC_LANG_PROGRAM( + [[static __thread int a = 6;]], + [[a = 5;]]), + [cc_cv_tls___thread=yes], + [cc_cv_tls___thread=no]) + ]) + + AS_IF([test "x$cc_cv_tls___thread" = "xyes"], + [AC_DEFINE([SUPPORT_TLS___THREAD], 1, + [Define this if the compiler supports __thread for Thread-Local Storage]) + $1], + [$2]) +]) diff --git a/src/pulsecore/thread.h b/src/pulsecore/thread.h index f3aca13e..87e850d6 100644 --- a/src/pulsecore/thread.h +++ b/src/pulsecore/thread.h @@ -86,7 +86,7 @@ void *pa_tls_set(pa_tls *t, void *userdata); } \ struct __stupid_useless_struct_to_allow_trailing_semicolon -#ifdef HAVE_TLS_BUILTIN +#ifdef SUPPORT_TLS___THREAD /* An optimized version of the above that requires no dynamic * allocation if the compiler supports __thread */ #define PA_STATIC_TLS_DECLARE_NO_FREE(name) \ |