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)                             \ | 
