diff options
author | Henning Heinold <heinold@inf.fu-berlin.de> | 2009-07-30 02:37:25 +0200 |
---|---|---|
committer | Henning Heinold <heinold@inf.fu-berlin.de> | 2009-07-30 02:37:25 +0200 |
commit | d894b5a78eeb5509fe817808234727b86660d430 (patch) | |
tree | ff419e36ca8258a3041e4f81ed5e7857aac0a039 /recipes/util-linux-ng | |
parent | 40cf96ddd235e78d7ce54fe81f9a86e486ba9b6c (diff) |
util-linux-ng: fix tls detection
* breaks msvc support for now
* bump PR
Diffstat (limited to 'recipes/util-linux-ng')
-rw-r--r-- | recipes/util-linux-ng/util-linux-ng-2.16/tls.patch | 70 | ||||
-rw-r--r-- | recipes/util-linux-ng/util-linux-ng_2.16.bb | 3 |
2 files changed, 72 insertions, 1 deletions
diff --git a/recipes/util-linux-ng/util-linux-ng-2.16/tls.patch b/recipes/util-linux-ng/util-linux-ng-2.16/tls.patch new file mode 100644 index 0000000000..bdb29cae1f --- /dev/null +++ b/recipes/util-linux-ng/util-linux-ng-2.16/tls.patch @@ -0,0 +1,70 @@ +Index: util-linux-ng-2.16/m4/tls.m4 +=================================================================== +--- util-linux-ng-2.16.orig/m4/tls.m4 2009-07-04 01:20:03.000000000 +0200 ++++ util-linux-ng-2.16/m4/tls.m4 2009-07-30 01:57:30.151697033 +0200 +@@ -18,31 +18,26 @@ + # version as well. + # + AC_DEFUN([AX_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 +-]) ++ AC_CACHE_CHECK([for thread local storage (TLS) class], ++ ac_cv_tls, ++ [AC_LINK_IFELSE([__thread int a; int b; int main() { return a = b; }], ++ [chktls_save_LDFLAGS="$LDFLAGS" ++ LDFLAGS="-shared -Wl,--no-undefined $LDFLAGS" ++ chktls_save_CFLAGS="$CFLAGS" ++ CFLAGS="-fPIC $CFLAGS" ++ dnl If -shared works, test if TLS works in a shared library. ++ AC_LINK_IFELSE([int f() { return 0; }], ++ AC_LINK_IFELSE([__thread int a; int b; int f() { return a = b; }], ++ [ac_cv_tls=yes], ++ [ac_cv_tls=no]), ++ [ac_cv_tls=yes]) ++ CFLAGS="$chktls_save_CFLAGS" ++ LDFLAGS="$chktls_save_LDFLAGS"], [ac_cv_tls=no]) ++ ]) + +- 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) ++ AS_IF([test "x$ac_cv_tls" = "xyes"], ++ [AC_DEFINE([TLS], 1, ++ [Define this if the compiler supports __thread for Thread-Local Storage]) ++ $1], ++ [$2]) + ]) +Index: util-linux-ng-2.16/shlibs/uuid/src/gen_uuid.c +=================================================================== +--- util-linux-ng-2.16.orig/shlibs/uuid/src/gen_uuid.c 2009-07-30 02:31:48.518159459 +0200 ++++ util-linux-ng-2.16/shlibs/uuid/src/gen_uuid.c 2009-07-30 02:32:04.867871183 +0200 +@@ -99,7 +99,7 @@ + #endif + + #ifdef TLS +-#define THREAD_LOCAL static TLS ++#define THREAD_LOCAL static __thread + #else + #define THREAD_LOCAL static + #endif diff --git a/recipes/util-linux-ng/util-linux-ng_2.16.bb b/recipes/util-linux-ng/util-linux-ng_2.16.bb index 78d8150d04..c22219a816 100644 --- a/recipes/util-linux-ng/util-linux-ng_2.16.bb +++ b/recipes/util-linux-ng/util-linux-ng_2.16.bb @@ -1,8 +1,9 @@ require util-linux-ng.inc -PR = "${INC_PR}.1" +PR = "${INC_PR}.2" SRC_URI += "file://uclibc-compile.patch;patch=1 \ + file://tls.patch;patch=1 \ " EXTRA_OECONF += " --enable-libuuid --enable-libblkid \ |