X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/3893493151bcdbed55ef359cdfea4563ee8cddb8..38da63051a83ab4237c4abec7e4745851523875f:/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt index 7a211133eb..9a61a62483 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -186,21 +186,26 @@ include_directories(${INCLUDES}) include(${CMAKE_HOME_DIRECTORY}/tools/cmake/Option.cmake) ### Determine the assembly flavor that we need today +set(HAVE_RAW_CONTEXTS 0) include(CMakeDetermineSystem) IF(CMAKE_SYSTEM_PROCESSOR MATCHES ".86|AMD64|amd64") IF(${ARCH_32_BITS}) message(STATUS "System processor: i686 (${CMAKE_SYSTEM_PROCESSOR}, 32 bits)") set(PROCESSOR_i686 1) + set(PROCESSOR_x86_64 0) ELSE() message(STATUS "System processor: x86_64 (${CMAKE_SYSTEM_PROCESSOR}, 64 bits)") + set(PROCESSOR_i686 0) set(PROCESSOR_x86_64 1) ENDIF() if (WIN32) - message(STATUS "Disable fast raw contextes on Windows.") + message(STATUS "Disable fast raw contexts on Windows.") else() set(HAVE_RAW_CONTEXTS 1) endif() - +ELSE() + set(PROCESSOR_i686 0) + set(PROCESSOR_x86_64 0) ENDIF() include(CheckFunctionExists) @@ -270,6 +275,7 @@ CHECK_LIBRARY_EXISTS(rt clock_gettime "" HAVE_POSIX_GETTIME) CHECK_LIBRARY_EXISTS(pthread pthread_create "" HAVE_PTHREAD) CHECK_LIBRARY_EXISTS(pthread sem_init "" HAVE_SEM_INIT_LIB) CHECK_LIBRARY_EXISTS(pthread sem_open "" HAVE_SEM_OPEN_LIB) +set(HAVE_PTHREAD_SETAFFINITY 0) CHECK_LIBRARY_EXISTS(pthread pthread_setaffinity_np "" HAVE_PTHREAD_SETAFFINITY) if(CMAKE_SYSTEM_NAME MATCHES "Darwin") @@ -282,6 +288,15 @@ else() set(CMAKE_REQUIRED_DEFINITIONS "-D_GNU_SOURCE") endif() +SET(HAVE_VALGRIND_H 0) +SET(HAVE_UNISTD_H 0) +SET(HAVE_EXECINFO_H 0) +SET(HAVE_SIGNAL_H 0) +SET(HAVE_SYS_PARAM_H 0) +SET(HAVE_SYS_SYSCTL_H 0) +SET(HAVE_UCONTEXT_H 0) +SET(HAVE_FUTEX_H 0) + CHECK_INCLUDE_FILE("valgrind/valgrind.h" HAVE_VALGRIND_H) CHECK_INCLUDE_FILE("unistd.h" HAVE_UNISTD_H) CHECK_INCLUDE_FILE("execinfo.h" HAVE_EXECINFO_H) @@ -291,6 +306,14 @@ CHECK_INCLUDE_FILE("sys/sysctl.h" HAVE_SYS_SYSCTL_H) CHECK_INCLUDE_FILE("ucontext.h" HAVE_UCONTEXT_H) CHECK_INCLUDE_FILE("linux/futex.h" HAVE_FUTEX_H) +SET(HAVE_GETTIMEOFDAY 0) +SET(HAVE_NANOSLEEP 0) +SET(HAVE_GETDTABLESIZE 0) +SET(HAVE_SYSCONF 0) +SET(HAVE_POPEN 0) +SET(HAVE_PROCESS_VM_READV 0) +SET(HAVE_MMAP 0) + CHECK_FUNCTION_EXISTS(gettimeofday HAVE_GETTIMEOFDAY) CHECK_FUNCTION_EXISTS(nanosleep HAVE_NANOSLEEP) CHECK_FUNCTION_EXISTS(getdtablesize HAVE_GETDTABLESIZE) @@ -299,6 +322,7 @@ CHECK_FUNCTION_EXISTS(popen HAVE_POPEN) CHECK_FUNCTION_EXISTS(process_vm_readv HAVE_PROCESS_VM_READV) CHECK_FUNCTION_EXISTS(mmap HAVE_MMAP) +SET(HAVE_VASPRINTF 0) CHECK_SYMBOL_EXISTS(vasprintf stdio.h HAVE_VASPRINTF) if(MINGW) # The detection of vasprintf fails on MinGW, assumingly because it's @@ -307,6 +331,19 @@ if(MINGW) set(HAVE_VASPRINTF 1) endif() + +#Check if __thread is defined +execute_process( + COMMAND "${CMAKE_C_COMPILER} ${CMAKE_HOME_DIRECTORY}/tools/cmake/test_prog/prog_thread_storage.c -o testprog" + WORKING_DIRECTORY ${CMAKE_BINARY_DIR} + RESULT_VARIABLE HAVE_thread_storage_run) +file(REMOVE testprog) +if(HAVE_thread_storage_run) + set(HAVE_THREAD_LOCAL_STORAGE 1) +else() + set(HAVE_THREAD_LOCAL_STORAGE 0) +endif() + # Our usage of mmap is Linux-specific (flag MAP_ANONYMOUS), but kFreeBSD uses a GNU libc IF(HAVE_MMAP AND NOT "${CMAKE_SYSTEM}" MATCHES "Linux" AND @@ -317,7 +354,7 @@ IF(HAVE_MMAP AND message(STATUS "Warning: MMAP is thought as non functional on this architecture (${CMAKE_SYSTEM})") ENDIF() -if(HAVE_MMAP) +if(HAVE_MMAP AND HAVE_THREAD_LOCAL_STORAGE) SET(HAVE_MMALLOC 1) else() SET(HAVE_MMALLOC 0) @@ -360,6 +397,8 @@ if(enable_smpi) message (STATUS "Warning: no support for SMPI automatic privatization on this platform") SET(HAVE_PRIVATIZATION 0) endif() +else() + SET(HAVE_SMPI 0) endif() #--------------------------------------------------------------------------------------------------