mirror of
https://salsa.debian.org/xorg-team/lib/pixman
synced 2025-09-01 02:10:49 +00:00
Expand TLS support beyond __thread to __declspec(thread)
This code was pretty much coppied from a similar commit that I made to xorg-server in April. cf: xorg/xserver: bb4d145bd25e2aee988b100ecf1105ea3b6a40b8 Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com>
This commit is contained in:
parent
61d999b910
commit
a069da6c66
26
configure.ac
26
configure.ac
@ -788,26 +788,28 @@ fi
|
||||
dnl =====================================
|
||||
dnl Thread local storage
|
||||
|
||||
support_for__thread=no
|
||||
|
||||
AC_MSG_CHECKING(for __thread)
|
||||
AC_LINK_IFELSE([AC_LANG_SOURCE([[
|
||||
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([
|
||||
#if defined(__MINGW32__) && !(__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5))
|
||||
#error This MinGW version has broken __thread support
|
||||
#endif
|
||||
#ifdef __OpenBSD__
|
||||
#error OpenBSD has broken __thread support
|
||||
#endif
|
||||
static __thread int x ;
|
||||
int main () { x = 123; return x; }
|
||||
]])], support_for__thread=yes)
|
||||
|
||||
if test $support_for__thread = yes; then
|
||||
AC_DEFINE([TOOLCHAIN_SUPPORTS__THREAD],[],[Whether the tool chain supports __thread])
|
||||
int $kw test;], [], ac_cv_tls=$kw)
|
||||
done
|
||||
])
|
||||
AC_MSG_RESULT($ac_cv_tls)
|
||||
|
||||
if test "$ac_cv_tls" != "none"; then
|
||||
AC_DEFINE_UNQUOTED([TLS], $pixman_tls, [The compiler supported TLS storage class])
|
||||
fi
|
||||
|
||||
AC_MSG_RESULT($support_for__thread)
|
||||
|
||||
dnl
|
||||
dnl posix tls
|
||||
dnl
|
||||
@ -858,7 +860,7 @@ AC_DEFUN([PIXMAN_CHECK_PTHREAD],[dnl
|
||||
fi
|
||||
])
|
||||
|
||||
if test $support_for__thread = no; then
|
||||
if test $ac_cv_tls = none ; then
|
||||
support_for_pthread_setspecific=no
|
||||
|
||||
AC_MSG_CHECKING(for pthread_setspecific)
|
||||
|
@ -97,10 +97,10 @@
|
||||
# define PIXMAN_GET_THREAD_LOCAL(name) \
|
||||
(&name)
|
||||
|
||||
#elif defined(TOOLCHAIN_SUPPORTS__THREAD)
|
||||
#elif defined(TLS)
|
||||
|
||||
# define PIXMAN_DEFINE_THREAD_LOCAL(type, name) \
|
||||
static __thread type name
|
||||
static TLS type name
|
||||
# define PIXMAN_GET_THREAD_LOCAL(name) \
|
||||
(&name)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user