X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/72643e283c3f6fdc452a75d939ab975c22867fc5..11644e1a44c3ff95e0fbd27e63e654ca647b30e8:/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt index d37c886a53..fc13ea5c7d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -66,34 +66,22 @@ include(${CMAKE_HOME_DIRECTORY}/tools/cmake/Option.cmake) ### SMPI vs. Fortran if ((NOT DEFINED enable_smpi) OR enable_smpi) - if(enable_fortran) - include(FindGFortran) - else() - SET(SMPI_FORTRAN 0) - endif() + # First unset the compiler in case we're re-running cmake over a previous + # configuration where it was saved as smpiff + unset(CMAKE_Fortran_COMPILER) - if(NOT APPLE) # smpi is enabled by default - # Call enable_language(Fortran) in order to load the build rules for this language, needed by - # teshsuite/smpi/mpich-test/. Use CMAKE_FORCE_Fortran_COMPILER to bypass checks for a working compiler (smpiff - # doesn't exist at configure time). - include(CMakeForceCompiler) - if(NOT COMMAND CMAKE_FORCE_Fortran_COMPILER) - MACRO(CMAKE_FORCE_Fortran_COMPILER compiler id) - SET(CMAKE_Fortran_COMPILER "${compiler}") - SET(CMAKE_Fortran_COMPILER_ID_RUN TRUE) - SET(CMAKE_Fortran_COMPILER_ID ${id}) - SET(CMAKE_Fortran_COMPILER_WORKS TRUE) - SET(CMAKE_Fortran_COMPILER_FORCED TRUE) - - # Set old compiler id variables. - IF("${CMAKE_Fortran_COMPILER_ID}" MATCHES "GNU") - SET(CMAKE_COMPILER_IS_GNUG77 1) - ENDIF("${CMAKE_Fortran_COMPILER_ID}" MATCHES "GNU") - ENDMACRO(CMAKE_FORCE_Fortran_COMPILER) - endif() - CMAKE_FORCE_Fortran_COMPILER(smpiff smpiff) + SET(SMPI_FORTRAN 0) + if(enable_fortran) enable_language(Fortran OPTIONAL) endif() + + if(CMAKE_Fortran_COMPILER) + # Fortran compiler detected: save it, then replace by smpiff + set(SAVED_Fortran_COMPILER "${CMAKE_Fortran_COMPILER}" CACHE FILEPATH "The real Fortran compiler") + set(CMAKE_Fortran_COMPILER smpiff) + set(SMPI_FORTRAN 1) + endif(CMAKE_Fortran_COMPILER) + endif() #-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-# @@ -131,6 +119,11 @@ endif() execute_process(COMMAND ${CMAKE_LINKER} -version OUTPUT_VARIABLE LINKER_VERSION) string(REGEX MATCH "[0-9].[0-9]*" LINKER_VERSION "${LINKER_VERSION}") +### Set the library providing dlopen +if("${CMAKE_SYSTEM}" MATCHES "Linux") + find_library(dl DL_LIBRARY) +endif("${CMAKE_SYSTEM}" MATCHES "Linux") + ### Find programs and paths FIND_PROGRAM(GCOV_PATH gcov) include(FindPerl) @@ -337,6 +330,7 @@ CHECK_FUNCTION_EXISTS(sysconf HAVE_SYSCONF) CHECK_FUNCTION_EXISTS(popen HAVE_POPEN) CHECK_FUNCTION_EXISTS(process_vm_readv HAVE_PROCESS_VM_READV) CHECK_FUNCTION_EXISTS(mmap HAVE_MMAP) +CHECK_FUNCTION_EXISTS(mremap HAVE_MREMAP) CHECK_SYMBOL_EXISTS(vasprintf stdio.h HAVE_VASPRINTF) if(MINGW) @@ -358,16 +352,6 @@ 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 - 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() - if(HAVE_MMAP AND HAVE_THREAD_LOCAL_STORAGE) SET(HAVE_MMALLOC 1) else() @@ -386,6 +370,11 @@ else() SET(HAVE_MALLOCATOR 0) endif() +if(enable_model-checking AND NOT "${CMAKE_SYSTEM}" MATCHES "Linux") + message(WARNING "Support for model-checking has not been enabled on ${CMAKE_SYSTEM}: disabling it") + set(enable_model-checking FALSE) + set(HAVE_MC 0) +endif() if(enable_model-checking AND HAVE_MMALLOC) SET(HAVE_MC 1) include(FindLibunwind) @@ -422,7 +411,7 @@ endif() ### Check for GNU dynamic linker CHECK_INCLUDE_FILE("dlfcn.h" HAVE_DLFCN_H) if (HAVE_DLFCN_H) - execute_process(COMMAND ${CMAKE_C_COMPILER} ${CMAKE_HOME_DIRECTORY}/tools/cmake/test_prog/prog_gnu_dynlinker.c -ldl -o test_gnu_ld + execute_process(COMMAND ${CMAKE_C_COMPILER} ${CMAKE_HOME_DIRECTORY}/tools/cmake/test_prog/prog_gnu_dynlinker.c ${DL_LIBRARY} -o test_gnu_ld WORKING_DIRECTORY ${CMAKE_BINARY_DIR} OUTPUT_VARIABLE HAVE_GNU_LD_compil ) @@ -895,6 +884,9 @@ endforeach() ### Setup the distrib include(${CMAKE_HOME_DIRECTORY}/tools/cmake/Distrib.cmake) +### Build the docs if asked to +include(${CMAKE_HOME_DIRECTORY}/tools/cmake/Documentation.cmake) + ### Print the result of configuration message("") message("##########################################") @@ -944,7 +936,7 @@ else() endif() endif() if(CMAKE_Fortran_COMPILER) - message(" Compiler: Fortran ...........: ${CMAKE_Fortran_COMPILER} (id: ${CMAKE_Fortran_COMPILER_ID})") + message(" Compiler: Fortran ...........: ${SAVED_Fortran_COMPILER} (id: ${CMAKE_Fortran_COMPILER_ID})") message(" version .............: ${CMAKE_Fortran_COMPILER_VERSION}") endif() message(" Linker: .....................: ${CMAKE_LINKER}")