@@ -30,6 +30,44 @@ if openmp_dep.found()
3030    dependencies +=  openmp_dep
3131endif 
3232
33+ # Thread-local storage detection (borrowed from NumPy) 
34+ optional_variable_attributes =  [
35+   [' thread_local' ' HAVE_THREAD_LOCAL' # C23 
36+   [' _Thread_local' ' HAVE__THREAD_LOCAL' # C11/C17 
37+   [' __thread' ' HAVE___THREAD' # GCC/Clang 
38+   [' __declspec(thread)' ' HAVE___DECLSPEC_THREAD_' # MSVC 
39+ ]
40+ 
41+ if  not  is_variable (' cdata' 
42+   cdata =  configuration_data ()
43+ endif 
44+ 
45+ foreach  optional_attr : optional_variable_attributes
46+   attr =  optional_attr[0 ]
47+   code =  ''' 
48+     #pragma GCC diagnostic error "-Wattributes" 
49+     #pragma clang diagnostic error "-Wattributes" 
50+      
51+     int @0@ foo; 
52+      
53+     int main() { 
54+       return 0; 
55+     } 
56+   '''  .format(attr)
57+   
58+   if  c.compiles(code, name : optional_attr[0 ])
59+     cdata.set10(optional_attr[1 ], true )
60+     message (' Thread-local storage support found: @0@' 
61+   endif 
62+ endforeach 
63+ 
64+ configure_file (
65+   output : ' quaddtype_config.h' 
66+   configuration : cdata
67+ )
68+ 
69+ build_includes =  include_directories (' .' 
70+ 
3371includes =  include_directories (
3472    [
3573        incdir_numpy,
@@ -84,5 +122,5 @@ py.extension_module('_quaddtype_main',
84122  dependencies : dependencies,
85123  install : true ,
86124  subdir : ' numpy_quaddtype' 
87-   include_directories : includes
125+   include_directories : [ includes, build_includes] 
88126)
0 commit comments