Add wxUSE_COMPILER_TLS to allow disabling compiler TLS support.
Compiler TLS support is broken under Win32/MSVC when used for a code which is part of a dynamically loaded DLL, so allow disabling it. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@71792 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
233f786e8e
commit
b33e9f4031
7
configure
vendored
7
configure
vendored
@ -32030,7 +32030,7 @@ EOF
|
||||
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
|
||||
test $ac_status = 0; }; } ; then :
|
||||
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
|
||||
$as_echo "yes" >&6; }
|
||||
|
||||
ax_gcc_version_option=yes
|
||||
@ -32038,7 +32038,7 @@ $as_echo "yes" >&6; }
|
||||
|
||||
else
|
||||
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
|
||||
$as_echo "no" >&6; }
|
||||
|
||||
ax_gcc_version_option=no
|
||||
@ -32509,6 +32509,9 @@ done
|
||||
|
||||
fi
|
||||
|
||||
$as_echo "#define wxUSE_COMPILER_TLS 1" >>confdefs.h
|
||||
|
||||
|
||||
if test "$wxUSE_THREADS" = "yes"; then
|
||||
$as_echo "#define wxUSE_THREADS 1" >>confdefs.h
|
||||
|
||||
|
@ -5226,6 +5226,10 @@ dnl AC_CHECK_FUNC(getaddrinfo, AC_DEFINE(HAVE_GETADDRINFO), [
|
||||
dnl ]
|
||||
dnl )
|
||||
|
||||
dnl This is currently always defined under Unix, there is no reason to ever
|
||||
dnl disable compiler TLS support there.
|
||||
AC_DEFINE(wxUSE_COMPILER_TLS)
|
||||
|
||||
if test "$wxUSE_THREADS" = "yes"; then
|
||||
AC_DEFINE(wxUSE_THREADS)
|
||||
|
||||
|
@ -92,6 +92,7 @@ library:
|
||||
@itemdef{wxUSE_COLOURPICKERCTRL, Use wxColourPickerCtrl class.}
|
||||
@itemdef{wxUSE_COMBOBOX, Use wxComboBox class.}
|
||||
@itemdef{wxUSE_COMBOCTRL, Use wxComboCtrl class.}
|
||||
@itemdef{wxUSE_COMPILER_TLS, Can be set to 0 to prevent using compile thread-specific variables support.}
|
||||
@itemdef{wxUSE_CONFIG, Use wxConfig and related classes.}
|
||||
@itemdef{wxUSE_CONFIG_NATIVE, When enabled use native OS configuration instead of the wxFileConfig class.}
|
||||
@itemdef{wxUSE_CONSOLE_EVENTLOOP, Enable event loop in console programs.}
|
||||
|
@ -92,6 +92,14 @@
|
||||
# endif
|
||||
#endif /* wxUSE_ANY */
|
||||
|
||||
#ifndef wxUSE_COMPILER_TLS
|
||||
# ifdef wxABORT_ON_CONFIG_ERROR
|
||||
# error "wxUSE_COMPILER_TLS must be defined, please read comment near the top of this file."
|
||||
# else
|
||||
# define wxUSE_COMPILER_TLS 0
|
||||
# endif
|
||||
#endif /* !defined(wxUSE_COMPILER_TLS) */
|
||||
|
||||
#ifndef wxUSE_CONSOLE_EVENTLOOP
|
||||
# ifdef wxABORT_ON_CONFIG_ERROR
|
||||
# error "wxUSE_CONSOLE_EVENTLOOP must be defined, please read comment near the top of this file."
|
||||
|
@ -267,6 +267,17 @@
|
||||
// Recommended setting: 1 if you want to support multiple languages
|
||||
#define wxUSE_PRINTF_POS_PARAMS 1
|
||||
|
||||
// Enable the use of compiler-specific thread local storage keyword, if any.
|
||||
// This is used for wxTLS_XXX() macros implementation and normally should use
|
||||
// the compiler-provided support as it's simpler and more efficient, but must
|
||||
// not use it if wxWidgets is used in a dynamically loaded Win32 (i.e. using
|
||||
// LoadLibrary()/GetProcAddress()) as this triggers a bug in compiler TLS
|
||||
// support that results in crashes when any TLS variables are used. So if you
|
||||
// are building a Win32 DLL using wxWidgets that can be loaded dynamically, set
|
||||
// this to 0.
|
||||
//
|
||||
// Default is 1, but set to 0 if the scenario above is applicable.
|
||||
#define wxUSE_COMPILER_TLS 1
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// Interoperability with the standard library.
|
||||
|
@ -267,6 +267,17 @@
|
||||
// Recommended setting: 1 if you want to support multiple languages
|
||||
#define wxUSE_PRINTF_POS_PARAMS 1
|
||||
|
||||
// Enable the use of compiler-specific thread local storage keyword, if any.
|
||||
// This is used for wxTLS_XXX() macros implementation and normally should use
|
||||
// the compiler-provided support as it's simpler and more efficient, but must
|
||||
// not use it if wxWidgets is used in a dynamically loaded Win32 (i.e. using
|
||||
// LoadLibrary()/GetProcAddress()) as this triggers a bug in compiler TLS
|
||||
// support that results in crashes when any TLS variables are used. So if you
|
||||
// are building a Win32 DLL using wxWidgets that can be loaded dynamically, set
|
||||
// this to 0.
|
||||
//
|
||||
// Default is 1, but set to 0 if the scenario above is applicable.
|
||||
#define wxUSE_COMPILER_TLS 1
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// Interoperability with the standard library.
|
||||
|
@ -267,6 +267,17 @@
|
||||
// Recommended setting: 1 if you want to support multiple languages
|
||||
#define wxUSE_PRINTF_POS_PARAMS 1
|
||||
|
||||
// Enable the use of compiler-specific thread local storage keyword, if any.
|
||||
// This is used for wxTLS_XXX() macros implementation and normally should use
|
||||
// the compiler-provided support as it's simpler and more efficient, but must
|
||||
// not use it if wxWidgets is used in a dynamically loaded Win32 (i.e. using
|
||||
// LoadLibrary()/GetProcAddress()) as this triggers a bug in compiler TLS
|
||||
// support that results in crashes when any TLS variables are used. So if you
|
||||
// are building a Win32 DLL using wxWidgets that can be loaded dynamically, set
|
||||
// this to 0.
|
||||
//
|
||||
// Default is 1, but set to 0 if the scenario above is applicable.
|
||||
#define wxUSE_COMPILER_TLS 1
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// Interoperability with the standard library.
|
||||
|
@ -267,6 +267,17 @@
|
||||
// Recommended setting: 1 if you want to support multiple languages
|
||||
#define wxUSE_PRINTF_POS_PARAMS 1
|
||||
|
||||
// Enable the use of compiler-specific thread local storage keyword, if any.
|
||||
// This is used for wxTLS_XXX() macros implementation and normally should use
|
||||
// the compiler-provided support as it's simpler and more efficient, but must
|
||||
// not use it if wxWidgets is used in a dynamically loaded Win32 (i.e. using
|
||||
// LoadLibrary()/GetProcAddress()) as this triggers a bug in compiler TLS
|
||||
// support that results in crashes when any TLS variables are used. So if you
|
||||
// are building a Win32 DLL using wxWidgets that can be loaded dynamically, set
|
||||
// this to 0.
|
||||
//
|
||||
// Default is 1, but set to 0 if the scenario above is applicable.
|
||||
#define wxUSE_COMPILER_TLS 1
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// Interoperability with the standard library.
|
||||
|
@ -267,6 +267,17 @@
|
||||
// Recommended setting: 1 if you want to support multiple languages
|
||||
#define wxUSE_PRINTF_POS_PARAMS 1
|
||||
|
||||
// Enable the use of compiler-specific thread local storage keyword, if any.
|
||||
// This is used for wxTLS_XXX() macros implementation and normally should use
|
||||
// the compiler-provided support as it's simpler and more efficient, but must
|
||||
// not use it if wxWidgets is used in a dynamically loaded Win32 (i.e. using
|
||||
// LoadLibrary()/GetProcAddress()) as this triggers a bug in compiler TLS
|
||||
// support that results in crashes when any TLS variables are used. So if you
|
||||
// are building a Win32 DLL using wxWidgets that can be loaded dynamically, set
|
||||
// this to 0.
|
||||
//
|
||||
// Default is 1, but set to 0 if the scenario above is applicable.
|
||||
#define wxUSE_COMPILER_TLS 1
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// Interoperability with the standard library.
|
||||
|
@ -268,6 +268,17 @@
|
||||
// Recommended setting: 1 if you want to support multiple languages
|
||||
#define wxUSE_PRINTF_POS_PARAMS 1
|
||||
|
||||
// Enable the use of compiler-specific thread local storage keyword, if any.
|
||||
// This is used for wxTLS_XXX() macros implementation and normally should use
|
||||
// the compiler-provided support as it's simpler and more efficient, but must
|
||||
// not use it if wxWidgets is used in a dynamically loaded Win32 (i.e. using
|
||||
// LoadLibrary()/GetProcAddress()) as this triggers a bug in compiler TLS
|
||||
// support that results in crashes when any TLS variables are used. So if you
|
||||
// are building a Win32 DLL using wxWidgets that can be loaded dynamically, set
|
||||
// this to 0.
|
||||
//
|
||||
// Default is 1, but set to 0 if the scenario above is applicable.
|
||||
#define wxUSE_COMPILER_TLS 1
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// Interoperability with the standard library.
|
||||
|
@ -263,6 +263,17 @@
|
||||
// Recommended setting: 1 if you want to support multiple languages
|
||||
#define wxUSE_PRINTF_POS_PARAMS 1
|
||||
|
||||
// Enable the use of compiler-specific thread local storage keyword, if any.
|
||||
// This is used for wxTLS_XXX() macros implementation and normally should use
|
||||
// the compiler-provided support as it's simpler and more efficient, but must
|
||||
// not use it if wxWidgets is used in a dynamically loaded Win32 (i.e. using
|
||||
// LoadLibrary()/GetProcAddress()) as this triggers a bug in compiler TLS
|
||||
// support that results in crashes when any TLS variables are used. So if you
|
||||
// are building a Win32 DLL using wxWidgets that can be loaded dynamically, set
|
||||
// this to 0.
|
||||
//
|
||||
// Default is 1, but set to 0 if the scenario above is applicable.
|
||||
#define wxUSE_COMPILER_TLS 1
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// Interoperability with the standard library.
|
||||
|
@ -22,10 +22,13 @@
|
||||
#if !wxUSE_THREADS
|
||||
#define wxHAS_COMPILER_TLS
|
||||
#define wxTHREAD_SPECIFIC_DECL
|
||||
// otherwise try to find the compiler-specific way to handle TLS unless
|
||||
// explicitly disabled by setting wxUSE_COMPILER_TLS to 0 (it is 1 by default).
|
||||
#elif wxUSE_COMPILER_TLS
|
||||
// __thread keyword is not supported correctly by MinGW, at least in some
|
||||
// configurations, see http://sourceforge.net/support/tracker.php?aid=2837047
|
||||
// and when in doubt we prefer to not use it at all.
|
||||
#elif defined(HAVE___THREAD_KEYWORD) && !defined(__MINGW32__)
|
||||
#if defined(HAVE___THREAD_KEYWORD) && !defined(__MINGW32__)
|
||||
#define wxHAS_COMPILER_TLS
|
||||
#define wxTHREAD_SPECIFIC_DECL __thread
|
||||
// MSVC has its own version which might be supported by some other Windows
|
||||
@ -33,7 +36,8 @@
|
||||
#elif wxCHECK_VISUALC_VERSION(7)
|
||||
#define wxHAS_COMPILER_TLS
|
||||
#define wxTHREAD_SPECIFIC_DECL __declspec(thread)
|
||||
#endif
|
||||
#endif // compilers
|
||||
#endif // wxUSE_COMPILER_TLS
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// define wxTLS_TYPE()
|
||||
|
@ -266,6 +266,17 @@
|
||||
// Recommended setting: 1 if you want to support multiple languages
|
||||
#define wxUSE_PRINTF_POS_PARAMS 1
|
||||
|
||||
// Enable the use of compiler-specific thread local storage keyword, if any.
|
||||
// This is used for wxTLS_XXX() macros implementation and normally should use
|
||||
// the compiler-provided support as it's simpler and more efficient, but must
|
||||
// not use it if wxWidgets is used in a dynamically loaded Win32 (i.e. using
|
||||
// LoadLibrary()/GetProcAddress()) as this triggers a bug in compiler TLS
|
||||
// support that results in crashes when any TLS variables are used. So if you
|
||||
// are building a Win32 DLL using wxWidgets that can be loaded dynamically, set
|
||||
// this to 0.
|
||||
//
|
||||
// Default is 1, but set to 0 if the scenario above is applicable.
|
||||
#define wxUSE_COMPILER_TLS 1
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// Interoperability with the standard library.
|
||||
|
@ -202,6 +202,7 @@
|
||||
|
||||
#define wxUSE_PRINTF_POS_PARAMS 0
|
||||
|
||||
#define wxUSE_COMPILER_TLS 0
|
||||
|
||||
|
||||
#define wxUSE_STL 0
|
||||
|
Loading…
Reference in New Issue
Block a user