Fix TLS detection: test with linker, add --disable-compiler-tls
[urcu.git] / configure.ac
index 02ad2721589a7ae138167511c1d3fa64b9165341..1d04062f48f41d32022cb2adeec70c1628b95cea 100644 (file)
@@ -28,7 +28,20 @@ AH_TEMPLATE([CONFIG_RCU_COMPAT_ARCH], [Compatibility mode for i386 which lacks c
 AH_TEMPLATE([CONFIG_RCU_ARM_HAVE_DMB], [Use the dmb instruction if available for use on ARM.])
 AH_TEMPLATE([CONFIG_RCU_TLS], [TLS provided by the compiler.])
 
-AX_TLS(AC_DEFINE_UNQUOTED([CONFIG_RCU_TLS], $ac_cv_tls), [:])
+# Allow overriding storage used for TLS variables.
+AC_ARG_ENABLE([compiler-tls],
+       AS_HELP_STRING([--disable-compiler-tls], [Use pthread_getspecific() to emulate Thread Local Storage (TLS) variables.]),
+       [def_compiler_tls=$enableval],
+       [def_compiler_tls="yes"])
+
+# If not overridden, use ax_tls.m4 to check if TLS is available.
+AS_IF([test "x$def_compiler_tls" = "xyes"],
+       [AX_TLS([def_tls_detect=$ac_cv_tls], [:])],
+       [:])
+
+AS_IF([test "x$def_tls_detect" = "x"],
+       [:],
+       [AC_DEFINE_UNQUOTED([CONFIG_RCU_TLS], $def_tls_detect)])
 
 # Checks for programs.
 AC_PROG_CC
@@ -46,7 +59,7 @@ AC_FUNC_MMAP
 AC_CHECK_FUNCS([bzero gettimeofday munmap sched_getcpu strtoul sysconf])
 
 # Find arch type
-AS_CASE([$target_cpu],
+AS_CASE([$host_cpu],
        [i386], [ARCHTYPE="x86" && SUBARCHTYPE="x86compat"],
        [i486], [ARCHTYPE="x86"],
        [i586], [ARCHTYPE="x86"],
@@ -77,7 +90,7 @@ AS_IF([test "x$SUBARCHTYPE" = xx86compat],[
        AC_DEFINE([CONFIG_RCU_COMPAT_ARCH], [1])
 ])
 
-AS_IF([test "$target_cpu" = "armv7l"],[
+AS_IF([test "$host_cpu" = "armv7l"],[
        CFLAGS="$CFLAGS -mcpu=cortex-a9 -mtune=cortex-a9 -O1"
 ])
 
@@ -105,7 +118,7 @@ AS_IF([test "x$ARCHTYPE" = "xx86"],[
        #For now, using lock; addl compatibility mode even for i686, because the
        #Pentium III is seen as a i686, but lacks mfence instruction.
        #Only using fence for x86_64.
-       AS_IF([test "x$target_cpu" != "xi386" -a "x$target_cpu" != "xi486" -a "x$target_cpu" != "xi586" -a "x$target_cpu" != "xi686"],[
+       AS_IF([test "x$host_cpu" != "xi386" -a "x$host_cpu" != "xi486" -a "x$host_cpu" != "xi586" -a "x$host_cpu" != "xi686"],[
                AC_MSG_RESULT([yes])
                AC_DEFINE([CONFIG_RCU_HAVE_FENCE], [1])
        ],[
@@ -252,3 +265,9 @@ AS_IF([test "x$def_smp_support" = "xyes"],[
 ],[
        AS_ECHO("SMP support disabled.")
 ])
+
+AS_IF([test "x$def_tls_detect" = "x"],[
+       AS_ECHO("Thread Local Storage (TLS): pthread_getspecific().")
+],[
+       AS_ECHO("Thread Local Storage (TLS): $def_tls_detect.")
+])
This page took 0.02334 seconds and 4 git commands to generate.