X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/86ddcf4540e2c93370475c1988adb24993ef05ec..d832f2766cc024c1eaf8b90f2425b3c260e86ac2:/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt index 2fe4ab6ea8..3747faf7a7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,6 +1,6 @@ -cmake_minimum_required(VERSION 2.6) -# Java requires 2.8.6 -message(STATUS "Cmake version ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}.${CMAKE_PATCH_VERSION}$") +cmake_minimum_required(VERSION 2.8.8) +message(STATUS "Cmake version ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}.${CMAKE_PATCH_VERSION}") +set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_HOME_DIRECTORY}/tools/cmake/Modules) project(SimGrid C CXX) @@ -30,11 +30,11 @@ else() # gcc or clang set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g3") set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -g") - if (CMAKE_COMPILER_IS_GNUCC) - if (COMPILER_CXX_VERSION_MAJOR_MINOR STRLESS "4.7") + if (CMAKE_COMPILER_IS_GNUCC) + if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS "4.7") message(FATAL_ERROR - "SimGrid needs at least g++ version 4.7 to compile " - "(c++11 support of previous versions is too limited).") + "SimGrid needs at least g++ version 4.7 to compile but you have ${CMAKE_CXX_COMPILER_VERSION}." + "You need a sufficient support of c++11 to compile SimGrid.") endif() endif() @@ -45,7 +45,7 @@ else() # gcc or clang set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11") else() message(FATAL_ERROR - "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support. " + "The compiler ${CMAKE_CXX_COMPILER} (v${CMAKE_CXX_COMPILER_VERSION}) has no C++11 support. " "Please use a decent C++ compiler.") endif() @@ -56,11 +56,11 @@ else() # gcc or clang set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu11") else() message(FATAL_ERROR - "The compiler ${CMAKE_C_COMPILER} has no C11 support. " + "The compiler ${CMAKE_C_COMPILER} (v${CMAKE_C_COMPILER_VERSION}) has no C11 support. " "Please use a decent C compiler " "(note that c++11 support of ${CMAKE_CXX_COMPILER} seems ok).") endif() - if(APPLE AND ("4.6" GREATER COMPILER_C_VERSION_MAJOR_MINOR)) + if(APPLE AND (CMAKE_C_COMPILER_VERSION VERSION_LESS "4.6")) ### gcc 4.[1-5] cannot compile ucontext on OSX message(STATUS "Ucontext can't be used with this version of gcc (must be greater than 4.5)") set(HAVE_UCONTEXT_H 0) @@ -132,43 +132,29 @@ else() endif() endif() -if(${CMAKE_C_COMPILER_ID} STREQUAL "GNU") - exec_program("${CMAKE_C_COMPILER} --version" OUTPUT_VARIABLE "COMPILER_C_VERSION") - exec_program("${CMAKE_CXX_COMPILER} --version" OUTPUT_VARIABLE "COMPILER_CXX_VERSION") - string(REGEX MATCH "[0-9].[0-9].[0-9]" COMPILER_C_VERSION "${COMPILER_C_VERSION}") - string(REGEX MATCH "[0-9].[0-9].[0-9]" COMPILER_CXX_VERSION "${COMPILER_CXX_VERSION}") - - string(REGEX MATCH "^[0-9].[0-9]" COMPILER_C_VERSION_MAJOR_MINOR "${COMPILER_C_VERSION}") - string(REPLACE "${COMPILER_C_VERSION_MAJOR_MINOR}." "" COMPILER_C_VERSION_PATCH "${COMPILER_C_VERSION}") -endif() - exec_program("${CMAKE_LINKER} --version" OUTPUT_VARIABLE "LINKER_VERSION") string(REGEX MATCH "[0-9].[0-9]*" LINKER_VERSION "${LINKER_VERSION}") ### Find programs and paths FIND_PROGRAM(GCOV_PATH gcov) include(FindPerl) -if(NOT PERL_EXECUTABLE) - message(FATAL_ERROR "-- SimGrid cannot be compiled without Perl installed -- sorry. Bailling out.") +if(NOT PERL_FOUND) + message(FATAL_ERROR "Please install Perl to compile SimGrid.") endif() if (APPLE) set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib") set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) endif() - -### Set some variables for Cmake SET(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}/lib) ### Compute the include paths set(INCLUDES ${CMAKE_HOME_DIRECTORY} ${CMAKE_HOME_DIRECTORY}/include - ${CMAKE_HOME_DIRECTORY}/src ${CMAKE_HOME_DIRECTORY}/src/include ${CMAKE_BINARY_DIR} ${CMAKE_BINARY_DIR}/include - ${CMAKE_BINARY_DIR}/src ) if(WIN32) @@ -194,30 +180,13 @@ if(WIN32) string(REGEX REPLACE "/bin/gcc.*" "/include" CMAKE_INCLUDE_WIN "${CMAKE_INCLUDE_WIN}") string(REGEX REPLACE "/bin/gcc.*" "/lib" CMAKE_LIB_WIN "${CMAKE_LIB_WIN}") set(INCLUDES ${INCLUDES} ${CMAKE_INCLUDE_WIN}) - - if(CMAKE_COMPILER_IS_GNUCC) - set(__GNUC__ 1) - exec_program("${CMAKE_C_COMPILER} --version" OUTPUT_VARIABLE "COMPILER_C_VERSION") - string(REGEX MATCH "[0-9].[0-9].[0-9]" COMPILER_C_VERSION "${COMPILER_C_VERSION}") - string(REGEX MATCH "^[0-9]" COMPILER_C_MAJOR_VERSION "${COMPILER_C_VERSION}") - string(REGEX MATCH "^[0-9].[0-9]" COMPILER_C_MINOR_VERSION "${COMPILER_C_VERSION}") - string(REGEX REPLACE "^${COMPILER_C_MAJOR_VERSION}." "" COMPILER_C_MINOR_VERSION "${COMPILER_C_MINOR_VERSION}") - endif() - - set(NSIS_WIN_VERSION $ENV{PROCESSOR_ARCHITEW6432}) - if(NSIS_WIN_VERSION MATCHES "") - set(NSIS_WIN_VERSION $ENV{PROCESSOR_ARCHITECTURE}) - endif() - if(${NSIS_WIN_VERSION}) - string(TOLOWER ${NSIS_WIN_VERSION} NSIS_WIN_VERSION) - endif() + unset(CMAKE_INCLUDE_WIN) set(_XBT_WIN32 1) - message(STATUS "C_COMPILER ${CMAKE_C_COMPILER} ${COMPILER_C_VERSION_MAJOR_MINOR}") - message(STATUS "CXX_COMPILER ${CMAKE_CXX_COMPILER} ${COMPILER_CXX_VERSION_MAJOR_MINOR}") + message(STATUS "C_COMPILER ${CMAKE_C_COMPILER} ${CMAKE_C_COMPILER_VERSION}") + message(STATUS "CXX_COMPILER ${CMAKE_CXX_COMPILER} ${CMAKE_CXX_COMPILER_VERSION}") message(STATUS "CMAKE_RC_COMPILER ${CMAKE_RC_COMPILER}") - message(STATUS "INCLUDE ${CMAKE_INCLUDE_WIN}") message(STATUS "LIB ${CMAKE_LIB_WIN}") message(STATUS "MAKE_PROGRAM ${CMAKE_MAKE_PROGRAM}") message(STATUS "CMAKE_BUILD_TOOL ${CMAKE_BUILD_TOOL}") @@ -232,11 +201,6 @@ include_directories(${INCLUDES}) ### Setup Options include(${CMAKE_HOME_DIRECTORY}/tools/cmake/Option.cmake) -set(CMAKE_MODULE_PATH - ${CMAKE_MODULE_PATH} - ${CMAKE_HOME_DIRECTORY}/tools/cmake/Modules - ) - ### Determine the assembly flavor that we need today include(CMakeDetermineSystem) IF(CMAKE_SYSTEM_PROCESSOR MATCHES ".86|AMD64|amd64") @@ -255,12 +219,6 @@ IF(CMAKE_SYSTEM_PROCESSOR MATCHES ".86|AMD64|amd64") ENDIF() -if(ARCH_32_BITS) - set(MPI_ADDRESS_SIZE 4) -else() - set(MPI_ADDRESS_SIZE 8) -endif() - include(CheckFunctionExists) include(CheckTypeSize) include(CheckIncludeFile) @@ -271,18 +229,6 @@ include(CheckSymbolExists) include(FindGraphviz) include(FindLibSigc++) -if(enable_java) - find_package(Java REQUIRED COMPONENTS Runtime Development) - find_package(JNI REQUIRED) - message("-- [Java] JNI found: ${JNI_FOUND}") - message("-- [Java] JNI include dirs: ${JNI_INCLUDE_DIRS}") - if(enable_maintainer_mode) - find_package(SWIG REQUIRED) - include(UseSWIG) - message("-- [Java] Swig found: ${SWIG_FOUND} (version ${SWIG_VERSION})") - endif() - set(HAVE_Java 1) -endif() if(enable_scala) find_package(Scala REQUIRED) message("-- [Scala] scalac found: ${SCALA_COMPILE}") @@ -335,13 +281,16 @@ endif() # Checks for header libraries functions. CHECK_LIBRARY_EXISTS(dl dlopen "" HAVE_DLOPEN_IN_LIBDL) CHECK_LIBRARY_EXISTS(execinfo backtrace "" HAVE_BACKTRACE_IN_LIBEXECINFO) -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) -CHECK_LIBRARY_EXISTS(pthread sem_timedwait "" HAVE_SEM_TIMEDWAIT_LIB) -CHECK_LIBRARY_EXISTS(pthread pthread_mutex_timedlock "" HAVE_MUTEX_TIMEDLOCK_LIB) CHECK_LIBRARY_EXISTS(rt clock_gettime "" HAVE_POSIX_GETTIME) +if(NOT WIN32) # We don't want to have winpthread-1.dll in the jarfile + 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) + CHECK_LIBRARY_EXISTS(pthread sem_timedwait "" HAVE_SEM_TIMEDWAIT_LIB) + CHECK_LIBRARY_EXISTS(pthread pthread_mutex_timedlock "" HAVE_MUTEX_TIMEDLOCK_LIB) +endif() + if(CMAKE_SYSTEM_NAME MATCHES "Darwin") set(CMAKE_REQUIRED_DEFINITIONS "-D_XOPEN_SOURCE=700 -D_DARWIN_C_SOURCE") elseif(MINGW) @@ -356,6 +305,7 @@ CHECK_INCLUDE_FILE("valgrind/valgrind.h" HAVE_VALGRIND_VALGRIND_H) CHECK_INCLUDE_FILE("socket.h" HAVE_SOCKET_H) CHECK_INCLUDE_FILE("stat.h" HAVE_STAT_H) CHECK_INCLUDE_FILE("sys/stat.h" HAVE_SYS_STAT_H) +CHECK_INCLUDE_FILE("sys/ptrace.h" HAVE_SYS_PTRACE_H) CHECK_INCLUDE_FILE("windows.h" HAVE_WINDOWS_H) CHECK_INCLUDE_FILE("errno.h" HAVE_ERRNO_H) CHECK_INCLUDE_FILE("unistd.h" HAVE_UNISTD_H) @@ -468,13 +418,15 @@ endif() if(enable_smpi) include(FindGFortran) - #really checks for objdump for privatization - find_package(BinUtils QUIET) SET(HAVE_SMPI 1) - - if( NOT "${CMAKE_OBJDUMP}" MATCHES "CMAKE_OBJDUMP-NOTFOUND" AND HAVE_MMAP) + if("${CMAKE_SYSTEM}" MATCHES "Linux") + SET(USE_LIBUTIL 0) SET(HAVE_PRIVATIZATION 1) + elseif("${CMAKE_SYSTEM}" MATCHES "^FreeBSD") + SET(USE_LIBUTIL 0) + SET(HAVE_PRIVATIZATION 0) else() + message (STATUS "Warning: no support for SMPI automatic privatization on this platform") SET(HAVE_PRIVATIZATION 0) endif() endif() @@ -1176,8 +1128,6 @@ endif() SET_DIRECTORY_PROPERTIES(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${generated_files_to_clean}") -configure_file("${CMAKE_HOME_DIRECTORY}/tools/cmake/src/simgrid.nsi.in" "${CMAKE_BINARY_DIR}/simgrid.nsi" @ONLY IMMEDIATE) - ### Define source packages for Libs include(${CMAKE_HOME_DIRECTORY}/tools/cmake/DefinePackages.cmake) @@ -1225,7 +1175,7 @@ else() find_program(WGET_PROGRAM NAMES wget) message(STATUS "wget: ${WGET_PROGRAM}") if(WGET_PROGRAM) - ADD_CUSTOM_TARGET(simgrid_documentation + 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