]> git.ipfire.org Git - thirdparty/json-c.git/commitdiff
CMake: Add an option to disable the use of thread-local storage.
authorBjörn Esser <besser82@fedoraproject.org>
Mon, 18 May 2020 09:38:58 +0000 (11:38 +0200)
committerBjörn Esser <besser82@fedoraproject.org>
Mon, 18 May 2020 10:27:19 +0000 (12:27 +0200)
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.

CMakeLists.txt

index 254d324c94c479f320457ef3ff4ea63080ee1f8e..180d6e934a89480637e56a87a75381b5e09fe46f 100644 (file)
@@ -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.