From: Björn Esser Date: Mon, 18 May 2020 09:38:58 +0000 (+0200) Subject: CMake: Add an option to disable the use of thread-local storage. X-Git-Tag: json-c-0.15-20200726~44^2~2 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=78642dcb9b9b58bd0111ffba5e46b9346b8d486b;p=json-c CMake: Add an option to disable the use of thread-local storage. Using thread-local storage may not be desired in all environments and/or use-cases, thus there should be an option to disable its use on purpose. Fixes #451. --- diff --git a/CMakeLists.txt b/CMakeLists.txt index 254d324..180d6e9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -87,6 +87,7 @@ option(ENABLE_RDRAND "Enable RDRAND Hardware RNG Hash Seed" option(ENABLE_THREADING "Enable partial threading support." OFF) option(DISABLE_WERROR "Avoid treating compiler warnings as fatal errors" OFF) option(DISABLE_BSYMBOLIC "Avoid linking with -Bsymbolic-function" OFF) +option(DISABLE_THREAD_LOCAL_STORAGE "Disable Thread-Local Storage (HAVE___THREAD)" OFF) if (UNIX OR MINGW OR CYGWIN) list(APPEND CMAKE_REQUIRED_DEFINITIONS -D_GNU_SOURCE) @@ -217,14 +218,16 @@ check_c_source_compiles( "int main() { int i, x = 0; i = __sync_add_and_fetch(&x,1); return x; }" HAVE_ATOMIC_BUILTINS) -check_c_source_compiles( - "__thread int x = 0; int main() { return 0; }" - HAVE___THREAD) +if (NOT DISABLE_THREAD_LOCAL_STORAGE) + check_c_source_compiles( + "__thread int x = 0; int main() { return 0; }" + HAVE___THREAD) -if (HAVE___THREAD) - set(SPEC___THREAD __thread) -elseif (MSVC) - set(SPEC___THREAD __declspec(thread)) + if (HAVE___THREAD) + set(SPEC___THREAD __thread) + elseif (MSVC) + set(SPEC___THREAD __declspec(thread)) + endif() endif() # Hardware random number is not available on Windows? Says, config.h.win32. Best to preserve compatibility.