X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/ba5e8b528ff29715f5a9008137e117a9fbcc24b0..517c8af545eefa8baf9a5439f242a4bd021f9085:/tools/cmake/CompleteInFiles.cmake diff --git a/tools/cmake/CompleteInFiles.cmake b/tools/cmake/CompleteInFiles.cmake index 26f50efb74..ed50629d62 100644 --- a/tools/cmake/CompleteInFiles.cmake +++ b/tools/cmake/CompleteInFiles.cmake @@ -17,7 +17,11 @@ IF(CMAKE_SYSTEM_PROCESSOR MATCHES ".86|AMD64|amd64") message(STATUS "System processor: x86_64 (${CMAKE_SYSTEM_PROCESSOR}, 64 bits)") set(PROCESSOR_x86_64 1) ENDIF() - set(HAVE_RAWCTX 1) + if (MSVC) + message(STATUS "Disable fast raw contextes on Microsoft Visual.") + else() + set(HAVE_RAWCTX 1) + endif() ELSEIF(CMAKE_SYSTEM_PROCESSOR MATCHES "^alpha") message(STATUS "System processor: alpha") @@ -62,13 +66,12 @@ else() set(MPI_ADDRESS_SIZE 8) endif() -message(STATUS "Cmake version ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}") - include(CheckFunctionExists) include(CheckTypeSize) include(CheckIncludeFile) include(CheckIncludeFiles) include(CheckLibraryExists) +include(CheckSymbolExists) include(TestBigEndian) TEST_BIG_ENDIAN(BIGENDIAN) @@ -148,20 +151,22 @@ CHECK_LIBRARY_EXISTS(rt clock_gettime "" HAVE_POSIX_GETTIME) if(CMAKE_SYSTEM_NAME MATCHES "Darwin") set(CMAKE_REQUIRED_DEFINITIONS "-D_XOPEN_SOURCE=700 -D_DARWIN_C_SOURCE") +elseif(MINGW) + add_definitions(-D__USE_MINGW_ANSI_STDIO=1) + set(CMAKE_REQUIRED_DEFINITIONS "-D__USE_MINGW_ANSI_STDIO=1") +else() + set(CMAKE_REQUIRED_DEFINITIONS "-D_GNU_SOURCE") endif() -CHECK_INCLUDE_FILES("time.h;sys/time.h" TIME_WITH_SYS_TIME) CHECK_INCLUDE_FILES("stdlib.h;stdarg.h;string.h;float.h" STDC_HEADERS) -CHECK_INCLUDE_FILE("pthread.h" HAVE_PTHREAD_H) +if(NOT WIN32) + CHECK_INCLUDE_FILE("pthread.h" HAVE_PTHREAD_H) +endif() CHECK_INCLUDE_FILE("valgrind/valgrind.h" HAVE_VALGRIND_VALGRIND_H) CHECK_INCLUDE_FILE("socket.h" HAVE_SOCKET_H) -CHECK_INCLUDE_FILE("sys/socket.h" HAVE_SYS_SOCKET_H) CHECK_INCLUDE_FILE("stat.h" HAVE_STAT_H) 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) @@ -170,10 +175,6 @@ CHECK_INCLUDE_FILE("sys/time.h" HAVE_SYS_TIME_H) CHECK_INCLUDE_FILE("sys/param.h" HAVE_SYS_PARAM_H) CHECK_INCLUDE_FILE("sys/sysctl.h" HAVE_SYS_SYSCTL_H) CHECK_INCLUDE_FILE("time.h" HAVE_TIME_H) -CHECK_INCLUDE_FILE("inttypes.h" HAVE_INTTYPES_H) -CHECK_INCLUDE_FILE("memory.h" HAVE_MEMORY_H) -CHECK_INCLUDE_FILE("stdlib.h" HAVE_STDLIB_H) -CHECK_INCLUDE_FILE("strings.h" HAVE_STRINGS_H) CHECK_INCLUDE_FILE("string.h" HAVE_STRING_H) CHECK_INCLUDE_FILE("ucontext.h" HAVE_UCONTEXT_H) CHECK_INCLUDE_FILE("stdio.h" HAVE_STDIO_H) @@ -186,15 +187,24 @@ CHECK_FUNCTION_EXISTS(sysconf HAVE_SYSCONF) CHECK_FUNCTION_EXISTS(readv HAVE_READV) CHECK_FUNCTION_EXISTS(popen HAVE_POPEN) CHECK_FUNCTION_EXISTS(signal HAVE_SIGNAL) -CHECK_FUNCTION_EXISTS(snprintf HAVE_SNPRINTF) -CHECK_FUNCTION_EXISTS(vsnprintf HAVE_VSNPRINTF) -CHECK_FUNCTION_EXISTS(asprintf HAVE_ASPRINTF) -CHECK_FUNCTION_EXISTS(vasprintf HAVE_VASPRINTF) + +CHECK_SYMBOL_EXISTS(snprintf stdio.h HAVE_SNPRINTF) +CHECK_SYMBOL_EXISTS(vsnprintf stdio.h HAVE_VSNPRINTF) +CHECK_SYMBOL_EXISTS(asprintf stdio.h HAVE_ASPRINTF) +CHECK_SYMBOL_EXISTS(vasprintf stdio.h HAVE_VASPRINTF) + +if(MINGW) + # The detection of asprintf fails on MinGW, assumingly because it's + # defined as an inline function in stdio.h instead of a regular + # function. So force the result to be 1 despite of the test. + set(HAVE_ASPRINTF 1) + set(HAVE_VASPRINTF 1) +endif() + CHECK_FUNCTION_EXISTS(makecontext HAVE_MAKECONTEXT) -CHECK_FUNCTION_EXISTS(mmap HAVE_MMAP) CHECK_FUNCTION_EXISTS(process_vm_readv HAVE_PROCESS_VM_READV) -CHECK_FUNCTION_EXISTS(strdup SIMGRID_HAVE_STRDUP) -CHECK_FUNCTION_EXISTS(_strdup SIMGRID_HAVE__STRDUP) + +CHECK_FUNCTION_EXISTS(mmap HAVE_MMAP) #Check if __thread is defined execute_process( @@ -210,7 +220,11 @@ else() endif() # 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" AND NOT "${CMAKE_SYSTEM}" MATCHES "GNU" AND NOT "${CMAKE_SYSTEM}" MATCHES "Darwin") +IF(HAVE_MMAP AND + NOT "${CMAKE_SYSTEM}" MATCHES "Linux" AND + NOT "${CMAKE_SYSTEM}" MATCHES "kFreeBSD" AND + NOT "${CMAKE_SYSTEM}" MATCHES "GNU" AND + NOT "${CMAKE_SYSTEM}" MATCHES "Darwin") SET(HAVE_MMAP 0) message(STATUS "Warning: MMAP is thought as non functional on this architecture (${CMAKE_SYSTEM})") ENDIF() @@ -222,7 +236,7 @@ else() endif() -if(WIN32) #THOSE FILES ARE FUNCTIONS ARE NOT DETECTED BUT THEY SHOULD... +if(WIN32) # Those files are not detected despite being present set(HAVE_UCONTEXT_H 1) set(HAVE_MAKECONTEXT 1) set(HAVE_SNPRINTF 1) @@ -275,11 +289,6 @@ if(enable_smpi) endif() endif() -#-------------------------------------------------------------------------------------------------- -### Check for some architecture dependent values -CHECK_TYPE_SIZE(int SIZEOF_INT) -CHECK_TYPE_SIZE(void* SIZEOF_VOIDP) - #-------------------------------------------------------------------------------------------------- ### Check for GNU dynamic linker CHECK_INCLUDE_FILE("dlfcn.h" HAVE_DLFCN_H) @@ -320,12 +329,6 @@ endif() #-------------------------------------------------------------------------------------------------- ### Initialize of CONTEXT THREADS -if(HAVE_PTHREAD) - set(pthread 1) -elseif(pthread) - set(pthread 0) -endif() - if(HAVE_PTHREAD) ### Test that we have a way to create semaphores @@ -794,14 +797,6 @@ if(ADDR2LINE) set(ADDR2LINE "${ADDR2LINE}/addr2line") endif() -### Check if OSX can compile with ucontext (with gcc 4.[1-5] it is broken) -if(APPLE) - if(APPLE_NEED_GCC_VERSION GREATER COMPILER_C_VERSION_MAJOR_MINOR) - message(STATUS "Ucontext can't be used with this version of gcc (must be greater than 4.5)") - set(HAVE_UCONTEXT_H 0) - endif() -endif() - ### File to create configure_file("${CMAKE_HOME_DIRECTORY}/src/context_sysv_config.h.in"