Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
If ucontext.h is not present don't try to run prog_AC_CHECK_MCSC.c.
[simgrid.git] / buildtools / Cmake / CompleteInFiles.cmake
index 842a2c6..72a6c6c 100644 (file)
@@ -52,6 +52,7 @@ CHECK_INCLUDE_FILE("sys/stat.h" HAVE_SYS_STAT_H)
 CHECK_INCLUDE_FILE("windows.h" HAVE_WINDOWS_H)
 CHECK_INCLUDE_FILE("winsock.h" HAVE_WINSOCK_H)
 CHECK_INCLUDE_FILE("winsock2.h" HAVE_WINSOCK2_H)
+CHECK_INCLUDE_FILE("WinDef.h" HAVE_WINDEF_H)
 CHECK_INCLUDE_FILE("errno.h" HAVE_ERRNO_H)
 CHECK_INCLUDE_FILE("unistd.h" HAVE_UNISTD_H)
 CHECK_INCLUDE_FILE("execinfo.h" HAVE_EXECINFO_H)
@@ -68,7 +69,6 @@ CHECK_INCLUDE_FILE("ucontext.h" HAVE_UCONTEXT_H)
 CHECK_INCLUDE_FILE("stdio.h" HAVE_STDIO_H)
 CHECK_INCLUDE_FILE("linux/futex.h" HAVE_FUTEX_H)
 
-
 CHECK_FUNCTION_EXISTS(gettimeofday HAVE_GETTIMEOFDAY)
 CHECK_FUNCTION_EXISTS(usleep HAVE_USLEEP)
 CHECK_FUNCTION_EXISTS(getdtablesize HAVE_GETDTABLESIZE)
@@ -82,6 +82,16 @@ CHECK_FUNCTION_EXISTS(asprintf HAVE_ASPRINTF)
 CHECK_FUNCTION_EXISTS(vasprintf HAVE_VASPRINTF)
 CHECK_FUNCTION_EXISTS(makecontext HAVE_MAKECONTEXT)
 CHECK_FUNCTION_EXISTS(mmap HAVE_MMAP)
+CHECK_FUNCTION_EXISTS(mergesort HAVE_MERGESORT)
+
+#Check if __thread is defined
+exec_program("${CMAKE_C_COMPILER} ${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")
@@ -198,6 +208,7 @@ IF(CMAKE_CROSSCOMPILING)
                set(IS_WINDOWS 1)       
        ENDIF(WIN32)
 ELSE(CMAKE_CROSSCOMPILING)
+    if(HAVE_UCONTEXT_H)
        try_run(RUN_mcsc_VAR COMPILE_mcsc_VAR
                ${simgrid_BINARY_DIR}
                ${CMAKE_HOME_DIRECTORY}/buildtools/Cmake/test_prog/prog_AC_CHECK_MCSC.c
@@ -210,12 +221,15 @@ ELSE(CMAKE_CROSSCOMPILING)
                        STRING(REPLACE "\n" "" mcsc "${mcsc}")
                        if(mcsc)
                                set(mcsc "yes")
-                       elseif(mcsc)
+                       else(mcsc)
                                set(mcsc "no")
                        endif(mcsc)
-               else(EXISTS "${simgrid_BINARY_DIR}/conftestval" AND COMPILE_mcsc_VAR)
+           else(EXISTS "${simgrid_BINARY_DIR}/conftestval" AND COMPILE_mcsc_VAR)
                        set(mcsc "no")
                endif(EXISTS "${simgrid_BINARY_DIR}/conftestval" AND COMPILE_mcsc_VAR)
+       else(HAVE_UCONTEXT_H)
+        set(mcsc "no")   
+       endif(HAVE_UCONTEXT_H)
 ENDIF(CMAKE_CROSSCOMPILING)
 
 if(mcsc MATCHES "no" AND pthread)