### SET THE LIBRARY EXTENSION AND GCC VERSION
if(APPLE) #MAC
- set(GCC_NEED_VERSION "4.5")
set(LIB_EXE "dylib")
else(APPLE)
if(WIN32) #WINDOWS
CHECK_FUNCTION_EXISTS(makecontext HAVE_MAKECONTEXT)
CHECK_FUNCTION_EXISTS(mmap HAVE_MMAP)
+#Check if __thread is defined
+exec_program("${CMAKE_C_COMPILER} -lpthread ${CMAKE_HOME_DIRECTORY}/buildtools/Cmake/test_prog/prog_thread_storage.c"
+ OUTPUT_VARIABLE HAVE_thread_storage_run)
+if(HAVE_thread_storage_run)
+ set(HAVE_THREAD_LOCAL_STORAGE 0)
+else(HAVE_thread_storage_run)
+ set(HAVE_THREAD_LOCAL_STORAGE 1)
+endif(HAVE_thread_storage_run)
+
# Our usage of mmap is Linux-specific (flag MAP_ANONYMOUS), but kFreeBSD uses a GNU libc
IF(NOT "${CMAKE_SYSTEM}" MATCHES "Linux" AND NOT "${CMAKE_SYSTEM}" MATCHES "kFreeBSD")
SET(HAVE_MMAP 0)
#cmakedefine SIZEOF_INT @SIZEOF_INT@
#cmakedefine SIZEOF_VOIDP @SIZEOF_VOIDP@
+/* If __thread is available */
+#cmakedefine HAVE_THREAD_LOCAL_STORAGE @HAVE_THREAD_LOCAL_STORAGE@
+
#ifndef __STRICT_ANSI__
#cmakedefine __STRICT_ANSI__ @__STRICT_ANSI__@
#endif
/* Tracking of latency bound */
#cmakedefine HAVE_LATENCY_BOUND_TRACKING @HAVE_LATENCY_BOUND_TRACKING@
+/* If __thread is available */
+#cmakedefine HAVE_THREAD_LOCAL_STORAGE @HAVE_THREAD_LOCAL_STORAGE@
+
+
SG_END_DECL()
#endif /* SIMGRID_PUBLIC_CONFIG_H */
extern char* smx_context_factory_name;
extern int smx_context_stack_size;
-#if defined(CONTEXT_THREADS) && !defined(APPLE)
-#define HAVE_THREAD_LOCAL_STORAGE 1
-#endif
-
#ifdef HAVE_THREAD_LOCAL_STORAGE
extern __thread smx_context_t smx_current_context;
#else