X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/d18e17592e7aabd2cb96fd154858e0a3987d2800..62977f85b9661de237a3cd2be8a2f76a95ca7b5f:/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt index 4272462fe2..76a32dabdd 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -60,28 +60,40 @@ if(APPLE AND (CMAKE_C_COMPILER_VERSION VERSION_LESS "4.6")) set(HAVE_UCONTEXT_H 0) endif() + +### Setup Options +include(${CMAKE_HOME_DIRECTORY}/tools/cmake/Option.cmake) + ### SMPI vs. Fortran -if ((NOT DEFINED enable_smpi OR enable_smpi) AND 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) +if ((NOT DEFINED enable_smpi) OR enable_smpi) + if(enable_fortran) + include(FindGFortran) + else() + SET(SMPI_FORTRAN 0) + endif() + + 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) + enable_language(Fortran OPTIONAL) endif() - CMAKE_FORCE_Fortran_COMPILER(smpiff smpiff) - enable_language(Fortran OPTIONAL) endif() #-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-# @@ -107,18 +119,16 @@ set(libsimgrid_version "${release_version}") set(libsimgrid-java_version "${release_version}") ### SET THE LIBRARY EXTENSION -if(APPLE) #MAC +if(APPLE) set(LIB_EXE "dylib") +elseif(WIN32) + set(LIB_EXE "a") + set(BIN_EXE ".exe") else() - if(WIN32) #WINDOWS - set(LIB_EXE "a") - set(BIN_EXE ".exe") - else() #UNIX - set(LIB_EXE "so") - endif() + set(LIB_EXE "so") endif() -execute_process(COMMAND ${CMAKE_LINKER} --version OUTPUT_VARIABLE LINKER_VERSION) +execute_process(COMMAND ${CMAKE_LINKER} -version OUTPUT_VARIABLE LINKER_VERSION) string(REGEX MATCH "[0-9].[0-9]*" LINKER_VERSION "${LINKER_VERSION}") ### Find programs and paths @@ -128,6 +138,15 @@ if(NOT PERL_FOUND) message(FATAL_ERROR "Please install Perl to compile SimGrid.") endif() +# tesh.py needs python 3 (or the module python-subprocess32 on python2.8+) +set(PythonInterp_FIND_VERSION 3) +set(PythonInterp_FIND_VERSION_COUNT 1) +set(PythonInterp_FIND_VERSION_MAJOR 3) +include(FindPythonInterp) +if(NOT PYTHONINTERP_FOUND) + message(FATAL_ERROR "Please install Python (version 3 or higher).") +endif() + if (APPLE) set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib") set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) @@ -165,8 +184,7 @@ endif() include_directories(${INCLUDES}) -### Setup Options -include(${CMAKE_HOME_DIRECTORY}/tools/cmake/Option.cmake) + ### Determine the assembly flavor that we need today set(HAVE_RAW_CONTEXTS 0) @@ -285,7 +303,9 @@ endif() 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) +if(NOT APPLE) # OS X El Capitan deprecates this function + CHECK_LIBRARY_EXISTS(pthread sem_init "" HAVE_SEM_INIT_LIB) +endif() 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) @@ -383,11 +403,6 @@ if (enable_model-checking AND enable_ns3) endif() if(enable_smpi) - if(enable_fortran) - include(FindGFortran) - else() - SET(SMPI_FORTRAN 0) - endif() SET(HAVE_SMPI 1) if("${CMAKE_SYSTEM}" MATCHES "Linux") SET(USE_LIBUTIL 0) @@ -524,6 +539,8 @@ if(HAVE_PTHREAD) endif() endif() file(REMOVE sem_init) + else() + set(HAVE_SEM_INIT 0) endif() if(NOT HAVE_SEM_OPEN AND NOT HAVE_SEM_INIT) @@ -878,21 +895,8 @@ endforeach() ### Setup the distrib include(${CMAKE_HOME_DIRECTORY}/tools/cmake/Distrib.cmake) -### Build the doc (Windows downloads the doc instead of regenerating) -# -if(NOT WIN32) - include(${CMAKE_HOME_DIRECTORY}/tools/cmake/Documentation.cmake) -else() - find_program(WGET_PROGRAM NAMES wget) - message(STATUS "wget: ${WGET_PROGRAM}") - if(WGET_PROGRAM) - ADD_CUSTOM_TARGET(documentation - COMMENT "Downloading the SimGrid documentation..." - COMMAND ${WGET_PROGRAM} -r -np -nH -nd http://simgrid.gforge.inria.fr/simgrid/${release_version}/doc/ - WORKING_DIRECTORY ${CMAKE_HOME_DIRECTORY}/doc/html - ) - endif() -endif() +### Build the docs if asked to +include(${CMAKE_HOME_DIRECTORY}/tools/cmake/Documentation.cmake) ### Print the result of configuration message("")