Even if the system supports tls, the x server may not have been built with it. As i recall, there is an issue with mismatching tls between x and drivers... Can a non-tls server load a tls driver?
Anyway, if there's an issue there, this check must be more complicated -- it can't be just, "does the system support this", it would instead need to be "can the system support this and is it enabled in the x server." IIRC Eric and ajax and Dan know more, but there should also be a discussion of this in the xorg-devel and/or mesa archives. -tom On 15.02.2012, at 12:41, zhigang.g...@linux.intel.com wrote: > From: Zhigang Gong <zhigang.g...@linux.intel.com> > > If the system support tls, we prefer to enable it by default > just as xserver does. Actually, the checking code is copied > from xserver/configure.ac. > According to nobled's suggestion, move the checking before > enable_asm. As if tls_model is not supported, then asm may > can't work correctly. Then we check the tls model first, > and if doesn't support it, we need to disable the asm code. > Here is the reference: > https://bugs.freedesktop.org/show_bug.cgi?id=35268 > > Signed-off-by: Zhigang Gong <zhigang.g...@linux.intel.com> > Reviewed-by: Dan Nicholson <dbn.li...@gmail.com> > --- > acinclude.m4 | 41 +++++++++++++++++++++++++++++++++++++++++ > configure.ac | 25 ++++++++++++++++++++++--- > 2 files changed, 63 insertions(+), 3 deletions(-) > > diff --git a/acinclude.m4 b/acinclude.m4 > index a5b389d..23805f3 100644 > --- a/acinclude.m4 > +++ b/acinclude.m4 > @@ -117,3 +117,44 @@ if test "$enable_pic" != no; then > fi > AC_SUBST([PIC_FLAGS]) > ])# MESA_PIC_FLAGS > + > +dnl TLS detection > +AC_DEFUN([MESA_TLS], > +[AC_MSG_CHECKING(for thread local storage (TLS) support) > +AC_CACHE_VAL(ac_cv_tls, [ > + ac_cv_tls=none > + keywords="__thread __declspec(thread)" > + for kw in $keywords ; do > + AC_TRY_COMPILE([int $kw test;], [], ac_cv_tls=$kw) > + done > +]) > +AC_MSG_RESULT($ac_cv_tls) > + > +if test "$ac_cv_tls" != "none"; then > + STRICT_CFLAGS="-pedantic -Werror" > + # Add -Werror=attributes if supported (gcc 4.2 & later) > + AC_MSG_CHECKING([if $CC supports -Werror=attributes]) > + save_CFLAGS="$CFLAGS" > + CFLAGS="$CFLAGS $STRICT_CFLAGS -Werror=attributes" > + AC_TRY_COMPILE([int test;], [], > + [STRICT_CFLAGS="$STRICT_CFLAGS -Werror=attributes" > + AC_MSG_RESULT([yes])], > + [AC_MSG_RESULT([no])]) > + CFLAGS="$save_CFLAGS $STRICT_CFLAGS" > + > + AC_MSG_CHECKING(for tls_model attribute support) > + AC_CACHE_VAL(ac_cv_tls_model, [ > + AC_TRY_COMPILE([int $ac_cv_tls > __attribute__((tls_model("initial-exec"))) test;], [], > + ac_cv_tls_model=yes, ac_cv_tls_model=no) > + ]) > + AC_MSG_RESULT($ac_cv_tls_model) > + > + if test "x$ac_cv_tls_model" = "xyes" ; then > + TLS=$ac_cv_tls' __attribute__((tls_model(\"initial-exec\")))' > + else > + TLS=$ac_cv_tls > + fi > + DEFINES="$DEFINES -DTLS=\"$TLS\"" > + CFLAGS="$save_CFLAGS" > +fi > +]) > diff --git a/configure.ac b/configure.ac > index b2b1ab8..3226a09 100644 > --- a/configure.ac > +++ b/configure.ac > @@ -433,6 +433,11 @@ AC_SUBST([VG_LIB_GLOB]) > AC_SUBST([GLAPI_LIB_GLOB]) > > dnl > +dnl Check tls model support > +dnl > +MESA_TLS > + > +dnl > dnl Arch/platform-specific settings > dnl > AC_ARG_ENABLE([asm], > @@ -446,6 +451,14 @@ ASM_FLAGS="" > MESA_ASM_SOURCES="" > GLAPI_ASM_SOURCES="" > AC_MSG_CHECKING([whether to enable assembly]) > + > +if test "x$ac_cv_tls_model" = "xno" ; then > +dnl > +dnl If tls model is not supported, disable asm. > +dnl > + enable_asm=no > +fi > + > test "x$enable_asm" = xno && AC_MSG_RESULT([no]) > # disable if cross compiling on x86/x86_64 since we must run gen_matypes > if test "x$enable_asm" = xyes && test "x$cross_compiling" = xyes; then > @@ -1102,9 +1115,15 @@ dnl > > AC_ARG_ENABLE([glx-tls], > [AS_HELP_STRING([--enable-glx-tls], > - [enable TLS support in GLX @<:@default=disabled@:>@])], > - [GLX_USE_TLS="$enableval"], > - [GLX_USE_TLS=no]) > + [enable TLS support in GLX @<:@default=auto@:>@])], > + [GLX_USE_TLS=$enableval > + if test "x$GLX_USE_TLS" = "xyes" && test "${ac_cv_tls}" = "none" ; then > + AC_MSG_ERROR([GLX with TLS support requested, but the compiler does > not support it.]) > + fi], > + [GLX_USE_TLS=no > + if test "${ac_cv_tls}" != "none" ; then > + GLX_USE_TLS=yes > + fi]) > AC_SUBST(GLX_TLS, ${GLX_USE_TLS}) > > AS_IF([test "x$GLX_USE_TLS" = xyes], > -- > 1.7.4.4 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev