AC_MSG_WARN([wxMutex won't be recursive on this platform])
fi
fi
-
+
dnl test for compiler thread-specific variables support
AC_CACHE_CHECK([for __thread keyword],
wx_cv_cc___thread,
- [
- AC_TRY_COMPILE([#include <pthread.h>],
- [
- static __thread int n = 0;
- static __thread int *p = 0;
- ],
- wx_cv_cc___thread=yes,
- wx_cv_cc___thread=no
- )
- ])
+ [
+ AC_TRY_COMPILE([#include <pthread.h>],
+ [
+ static __thread int n = 0;
+ static __thread int *p = 0;
+ ],
+ wx_cv_cc___thread=yes,
+ wx_cv_cc___thread=no
+ )
+ ]
+ )
+
+ if test "$wx_cv_cc___thread" = "yes"; then
+ AX_GXX_VERSION
+ if test -n "$ax_cv_gxx_version"; then
+ dnl g++ supports __thread since at least version 3.3 but its support
+ dnl seems to be broken until 4.1, see
+ dnl http://thread.gmane.org/gmane.comp.lib.wxwidgets.devel/108388
+ dnl
+ dnl NB: we still need to test __thread support with
+ dnl AC_TRY_COMPILE above even for g++ 4 as it doesn't
+ dnl support it for all architectures (e.g. it doesn't
+ dnl work under OS X)
+ AC_MSG_CHECKING([whether __thread support in g++ is usable])
+ case "$ax_cv_gxx_version" in
+ 1.* | 2.* | 3.* )
+ AC_MSG_RESULT([no, it's broken])
+ wx_cv_cc___thread=no
+ ;;
+ *)
+ AC_MSG_RESULT([yes, it works])
+ ;;
+ esac
+ fi
+ fi
if test "$wx_cv_cc___thread" = "yes"; then
AC_DEFINE(HAVE___THREAD_KEYWORD)
if test "x$INTELCC" = "xyes" ; then
dnl Warnings which can't be easily suppressed in C code are disabled:
dnl
- dnl remark #810: conversion from "x" to "y" may lose significant bits
- dnl remark #869: parameter "foo" was never referenced
- dnl remark #1572: floating-point equality and inequality comparisons
- dnl are unreliable
- dnl remark #1684: conversion from pointer to same-sized integral type
- dnl
- dnl (for others see below)
- CWARNINGS="-Wall -wd810,869,981,1418,1572,1684"
+ dnl #810: conversion from "x" to "y" may lose significant bits
+ dnl #869: parameter "foo" was never referenced
+ dnl #1572: floating-point equality and inequality comparisons
+ dnl are unreliable
+ dnl #1684: conversion from pointer to same-sized integral type
+ dnl #2259: non-pointer conversion from "x" to "y" may lose significant
+ dnl bits
+ CWARNINGS="-Wall -wd810,869,981,1418,1572,1684,2259"
elif test "$GCC" = yes ; then
CWARNINGS="-Wall -Wundef"
fi
dnl (279) are generated for standard macros and so there is nothing we can
dnl do about them
dnl
- dnl remark #279: controlling expression is constant
- dnl remark #383: value copied to temporary, reference to temporary used
- dnl remark #444: destructor for base class "xxx" is not virtual
- dnl remark #810: conversion from "x" to "y" may lose significant bits
- dnl remark #869: parameter "foo" was never referenced
- dnl remark #981: operands are evaluated in unspecified order
- dnl remark #1418: external definition with no prior declaration
- dnl remark #1419: external declaration in primary source file
- CXXWARNINGS="-Wall -wd279,383,444,810,869,981,1418,1419"
+ dnl #279: controlling expression is constant
+ dnl #383: value copied to temporary, reference to temporary used
+ dnl #444: destructor for base class "xxx" is not virtual
+ dnl #981: operands are evaluated in unspecified order
+ dnl #1418: external definition with no prior declaration
+ dnl #1419: external declaration in primary source file
+ dnl #1881: argument must be a constant null pointer value
+ dnl
+ dnl (for others see CWARNINGS above)
+ CXXWARNINGS="-Wall -wd279,383,444,810,869,981,1418,1419,1881,2259"
elif test "$GXX" = yes ; then
CXXWARNINGS="-Wall -Wundef -Wunused-parameter -Wno-ctor-dtor-privacy"
AX_CXXFLAGS_GCC_OPTION(-Woverloaded-virtual, CXXWARNINGS)