This change introduced a regression when building with clang on darwin (and possibly other configurations as well):
http://tinderbox.x.org/builds/2011-03-22-0007 http://cgit.freedesktop.org/xorg/xserver/commit/?id=93393411e39fbb0f72cf6c2f79ebde177aa86932 This is because the AX_TLS macro tests for __thread and __declspec(thread), but the server assumes __thread. This issue probably exists elsewhere as well... I'll try to come up with something later this week... --Jeremy On Dec 22, 2010, at 14:30, tom fogal wrote: > Attached are two patches, one for util/macros and the second for > xorg/xserver, which are aimed at getting --enable/--disable-glx-tls to > be identified automatically, instead of defaulting to disabled. Lack > of TLS leads to non-PIC code, which is particularly annoying in an > SELinux environment. > > See: > > http://www.mail-archive.com/mesa-dev@lists.freedesktop.org/msg04310.html > http://lists.x.org/archives/xorg-devel/2009-November/003411.html > http://www.mail-archive.com/mesa-dev@lists.freedesktop.org/msg04289.html > > for a little more background. > > I'm not really sure about any policy of adding a macro and requiring > it in another package; I had to bump the version number so that the X > server could be sure the macro exists. Not sure if that's the correct > thing to do. Please educate me. > > PLEASE NOTE: that the XORG_TLS macro is derived from a macro I got from > the autoconf macro archive, which is GPLd. The output (configure) has > no restrictions, and I hear this is okay at least for Mesa [1], but > it's definitely worth noting. > > -tom > > [1] http://www.mail-archive.com/mesa3d-dev@lists.sourceforge.net/msg12457.html > > From c3db2935b6e3883a8dec61eacf482b514f011fa1 Mon Sep 17 00:00:00 2001 > From: Tom Fogal <tfo...@alumni.unh.edu> > Date: Wed, 22 Dec 2010 14:34:55 -0700 > Subject: [PATCH] Add macro for detecting thread local storage support. > > This adds an XORG_TLS macro which attempts to identify if the > underlying compiler/platform supports thread local storage (TLS). > > It also increases the package version number, so that a dependent > package can be sure the macro exists. > > Signed-off-by: Tom Fogal <tfo...@alumni.unh.edu> > --- > configure.ac | 2 +- > xorg-macros.m4.in | 75 +++++++++++++++++++++++++++++++++++++++++++++++++++++ > 2 files changed, 76 insertions(+), 1 deletions(-) > > diff --git a/configure.ac b/configure.ac > index a64a5bb..c83b8b2 100644 > --- a/configure.ac > +++ b/configure.ac > @@ -23,7 +23,7 @@ dnl Process this file with autoconf to create configure. > > AC_PREREQ([2.60]) > AC_INIT([util-macros], > - [1.11.0], > + [1.12.0], > [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], > [util-macros]) > AC_CONFIG_SRCDIR([Makefile.am]) > diff --git a/xorg-macros.m4.in b/xorg-macros.m4.in > index c7df523..b5f52d8 100644 > --- a/xorg-macros.m4.in > +++ b/xorg-macros.m4.in > @@ -1128,3 +1128,78 @@ mv \$(top_srcdir)/.INSTALL.tmp \$(top_srcdir)/INSTALL) > \ > echo 'util-macros \"pkgdatadir\" from xorg-macros.pc not found: installing > possibly empty INSTALL.' >&2)" > AC_SUBST([INSTALL_CMD]) > ]) # XORG_INSTALL > + > +# =========================================================================== > +# http://www.nongnu.org/autoconf-archive/ax_tls.html > +# =========================================================================== > +# > +# SYNOPSIS > +# > +# XORG_TLS (renamed from AX_TLS) > +# > +# DESCRIPTION > +# > +# Provides a test for the compiler support of thread local storage (TLS) > +# extensions. Defines TLS if it is found. Currently only knows about GCC > +# and MSVC. I think SunPro uses the same as GCC, and Borland apparently > +# supports either. > +# > +# LICENSE > +# > +# Copyright (c) 2008 Alan Woodland <aj...@aber.ac.uk> > +# > +# This program is free software: you can redistribute it and/or modify it > +# under the terms of the GNU General Public License as published by the > +# Free Software Foundation, either version 3 of the License, or (at your > +# option) any later version. > +# > +# This program is distributed in the hope that it will be useful, but > +# WITHOUT ANY WARRANTY; without even the implied warranty of > +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General > +# Public License for more details. > +# > +# You should have received a copy of the GNU General Public License along > +# with this program. If not, see <http://www.gnu.org/licenses/>. > +# > +# As a special exception, the respective Autoconf Macro's copyright owner > +# gives unlimited permission to copy, distribute and modify the configure > +# scripts that are the output of Autoconf when processing the Macro. You > +# need not follow the terms of the GNU General Public License when using > +# or distributing such scripts, even though portions of the text of the > +# Macro appear in them. The GNU General Public License (GPL) does govern > +# all other use of the material that constitutes the Autoconf Macro. > +# > +# This special exception to the GPL applies to versions of the Autoconf > +# Macro released by the Autoconf Archive. When you make and distribute a > +# modified version of the Autoconf Macro, you may extend this special > +# exception to the GPL to apply to your modified version as well. > + > +AC_DEFUN([XORG_TLS], [ > + AC_MSG_CHECKING(for thread local storage (TLS) class) > + AC_CACHE_VAL(ac_cv_tls, [ > + ax_tls_keywords="__thread __declspec(thread) none" > + for ax_tls_keyword in $ax_tls_keywords; do > + case $ax_tls_keyword in > + none) ac_cv_tls=none ; break ;; > + *) > + AC_TRY_COMPILE( > + [#include <stdlib.h> > + static void > + foo(void) { > + static ] $ax_tls_keyword [ int bar; > + exit(1); > + }], > + [], > + [ac_cv_tls=$ax_tls_keyword ; break], > + ac_cv_tls=none > + ) > + esac > + done > +]) > + > + if test "$ac_cv_tls" != "none"; then > + dnl AC_DEFINE([TLS], [], [If the compiler supports a TLS storage class > define it to that here]) > + AC_DEFINE_UNQUOTED([TLS], $ac_cv_tls, [If the compiler supports a TLS > storage class define it to that here]) > + fi > + AC_MSG_RESULT($ac_cv_tls) > +]) > -- > 1.7.0.2 > > From 1f5d0c4a4c93c0379ccf4ba962a461423b2e756c Mon Sep 17 00:00:00 2001 > From: Tom Fogal <tfo...@alumni.unh.edu> > Date: Wed, 22 Dec 2010 14:39:48 -0700 > Subject: [PATCH] Autodetect TLS support instead of defaulting to disabled. > > Uses the XORG_TLS macro to figure out if the current platform > supports TLS. If it does, enable TLS automagically. Still > respects --enable option, regardless. > > Require 1.12 of the macros package, because that is when the > XORG_TLS macro was introduced. > > Signed-off-by: Tom Fogal <tfo...@alumni.unh.edu> > --- > configure.ac | 11 ++++++++--- > 1 files changed, 8 insertions(+), 3 deletions(-) > > diff --git a/configure.ac b/configure.ac > index 1ceffe7..f667ff2 100644 > --- a/configure.ac > +++ b/configure.ac > @@ -35,7 +35,7 @@ AM_MAINTAINER_MODE > # Require xorg-macros minimum of 1.10 for XORG_CHECK_SGML_DOCTOOLS > m4_ifndef([XORG_MACROS_VERSION], > [m4_fatal([must install xorg-macros 1.10 or later before running > autoconf/autogen])]) > -XORG_MACROS_VERSION(1.10) > +XORG_MACROS_VERSION(1.12) > XORG_DEFAULT_OPTIONS > XORG_WITH_DOXYGEN(1.6.1) > XORG_CHECK_SGML_DOCTOOLS(1.5) > @@ -597,9 +597,14 @@ dnl GLX build options > AC_ARG_ENABLE(aiglx, AS_HELP_STRING([--enable-aiglx], [Build > accelerated indirect GLX (default: enabled)]), > [AIGLX=$enableval], > [AIGLX=yes]) > -AC_ARG_ENABLE(glx-tls, AS_HELP_STRING([--enable-glx-tls], [Build GLX > with TLS support (default: disabled)]), > +XORG_TLS > +AC_ARG_ENABLE(glx-tls, AS_HELP_STRING([--enable-glx-tls], [Build GLX > with TLS support (default: auto)]), > [GLX_USE_TLS=$enableval], > - [GLX_USE_TLS=no]) > + [GLX_USE_TLS=no > + if test "${ac_cv_tls}" != "none" ; then > + GLX_USE_TLS=yes > + fi]) > +AC_SUBST(GLX_TLS, ${GLX_USE_TLS}) > > dnl Extensions. > AC_ARG_ENABLE(registry, AS_HELP_STRING([--disable-registry], [Build > string registry module (default: enabled)]), [XREGISTRY=$enableval], > [XREGISTRY=yes]) > -- > 1.7.0.2 > > _______________________________________________ > xorg-devel@lists.x.org: X.Org development > Archives: http://lists.x.org/archives/xorg-devel > Info: http://lists.x.org/mailman/listinfo/xorg-devel _______________________________________________ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel