X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/2fc459da5e81c223895e15121c21678aa8f445f1..b7242b68db364ebb1e2b011d27528767384bdd85:/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt index 25cd68fa92..3d9417b9e2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -32,32 +32,15 @@ if (CMAKE_COMPILER_IS_GNUCC) endif() endif() -## We need a decent support of the c++11 standard -include(CheckCXXCompilerFlag) -CHECK_CXX_COMPILER_FLAG("-std=gnu++11" COMPILER_SUPPORTS_CXX11) -if(COMPILER_SUPPORTS_CXX11) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11") -else() - message(FATAL_ERROR - "The compiler ${CMAKE_CXX_COMPILER} (v${CMAKE_CXX_COMPILER_VERSION}) has no C++11 support. " - "Please install a decent C++ compiler (remove CMakeCache.txt once it's installed).") -endif() - -### And we need C11 standard, too -include(CheckCCompilerFlag) -CHECK_C_COMPILER_FLAG("-std=gnu11" COMPILER_SUPPORTS_C11) -if(COMPILER_SUPPORTS_C11) - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu11") -else() - message(FATAL_ERROR - "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 (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) +## We need a decent support of the C++11 and C11 standards +set(CMAKE_CXX_STANDARD 11) +set(CMAKE_CXX_STANDARD_REQUIRED ON) + +set(CMAKE_C_STANDARD 11) +set(CMAKE_C_STANDARD_REQUIRED ON) + +if (CMAKE_C_COMPILER_ID STREQUAL "Intel" AND CMAKE_C11_EXTENSION_COMPILE_OPTION STREQUAL "-std=c11") + set(CMAKE_C11_EXTENSION_COMPILE_OPTION "-std=gnu11") endif() ### Check threading support @@ -108,7 +91,7 @@ endif() #-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-# set(SIMGRID_VERSION_MAJOR "3") -set(SIMGRID_VERSION_MINOR "20") +set(SIMGRID_VERSION_MINOR "21") set(SIMGRID_VERSION_PATCH "90") set(SIMGRID_VERSION_EXTRA "-DEVEL") # Extra words to add to version string (e.g. -rc1) @@ -139,9 +122,9 @@ 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") +if("${CMAKE_SYSTEM_NAME}" MATCHES "kFreeBSD|Linux") find_library(DL_LIBRARY dl) -endif("${CMAKE_SYSTEM}" MATCHES "Linux") +endif() ### Find programs and paths FIND_PROGRAM(GCOV_PATH gcov) @@ -259,15 +242,7 @@ if(enable_smpi_papi) endif() endif() -# Not finding this is perfectly OK -find_package(Boost 1.59 COMPONENTS unit_test_framework) -if (Boost_UNIT_TEST_FRAMEWORK_FOUND) - message(STATUS "Enabling the Boost-based unit tests.") -else() - message(STATUS "Disabling the Boost-based unit tests -- please install libboost-test-dev (>= v1.59).") -endif() - - +# But we do need the core of Boost find_package(Boost 1.48) if(Boost_FOUND) include_directories(${Boost_INCLUDE_DIRS}) @@ -279,17 +254,40 @@ else() endif() endif() -find_package(Boost COMPONENTS context) -set(Boost_FOUND 1) # This component is optional +# cmake up to 3.12.3 (at least) does not know about stacktrace components. Inform it. +# Usable components: https://www.boost.org/doc/libs/1_65_1/doc/html/stacktrace/configuration_and_build.html +set(_Boost_STACKTRACE_HEADERS "boost/stacktrace.hpp") +set(_Boost_STACKTRACE_BACKTRACE_HEADERS "boost/stacktrace.hpp") + +find_package(Boost 1.59 COMPONENTS context stacktrace_backtrace unit_test_framework) +set(Boost_FOUND 1) # These components are optionals +message(STATUS "Mandatory components found. SimGrid is compilable.") +message(STATUS "Looking for optional Boost components:") + +if (Boost_STACKTRACE_BACKTRACE_FOUND) + message (STATUS " stacktrace: found. Activating human-readable stack traces.") + set(HAVE_BOOST_STACKTRACE 1) + set(SIMGRID_DEP "${SIMGRID_DEP} -lboost_stacktrace_backtrace") +else() + message (STATUS " stacktrace: MISSING. Install libboost-stacktrace-dev to display the stacktraces.") + set(HAVE_BOOST_STACKTRACE 0) +endif() + if(Boost_CONTEXT_FOUND) - message(STATUS "Found Boost.Context") + message (STATUS " context: found. Activating Boost contexts.") set(HAVE_BOOST_CONTEXTS 1) else() - message (" boost : found.") - message (" boost-context: missing. Install libboost-context-dev for this optional feature.") + message (STATUS " context: MISSING. Install libboost-context-dev for this optional feature.") set(HAVE_BOOST_CONTEXTS 0) endif() +if (Boost_UNIT_TEST_FRAMEWORK_FOUND) + message(STATUS " unit_test_framework: found. Activating the Boost-based unit tests.") +else() + message(STATUS " unit_test_framework: MISSING. Install libboost-test-dev (>= v1.59) to activate the Unit Tests.") +endif() + + # Checks for header libraries functions. CHECK_LIBRARY_EXISTS(rt clock_gettime "" HAVE_POSIX_GETTIME) @@ -308,20 +306,17 @@ endif() 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) CHECK_INCLUDE_FILE("signal.h" HAVE_SIGNAL_H) CHECK_INCLUDE_FILE("sys/param.h" HAVE_SYS_PARAM_H) 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) -CHECK_FUNCTION_EXISTS(backtrace HAVE_BACKTRACE) CHECK_FUNCTION_EXISTS(dlfunc HAVE_DLFUNC) CHECK_FUNCTION_EXISTS(gettimeofday HAVE_GETTIMEOFDAY) CHECK_FUNCTION_EXISTS(nanosleep HAVE_NANOSLEEP) CHECK_FUNCTION_EXISTS(getdtablesize HAVE_GETDTABLESIZE) 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) @@ -431,7 +426,7 @@ if(CMAKE_USE_PTHREADS_INIT) RUN_OUTPUT_VARIABLE semopen_runmsg) if(semopen_compilable) - if(NOT semopen_retval) # error if not 0 + if(NOT semopen_retval) # error if not 0 message(STATUS "sem_open is compilable and executable") set(HAVE_SEM_OPEN 1) else() @@ -463,7 +458,7 @@ if(CMAKE_USE_PTHREADS_INIT) RUN_OUTPUT_VARIABLE seminit_runmsg) if(seminit_compilable) - if(NOT seminit_retval) # error if not 0 + if(NOT seminit_retval) # error if not 0 message(STATUS "sem_init is compilable and executable") set(HAVE_SEM_INIT 1) else() @@ -549,12 +544,6 @@ endif() file(REMOVE test_stackgrowth) #-------------------------------------------------------------------------------------------------- -### check for addr2line -find_path(ADDR2LINE NAMES addr2line PATHS NO_DEFAULT_PATHS) -if(ADDR2LINE) - set(ADDR2LINE "${ADDR2LINE}/addr2line") -endif() - ############### ## GIT version check ## @@ -628,6 +617,7 @@ if(NS3_LIBRARY_PATH) endif() set(CMAKE_SMPI_COMMAND "${CMAKE_SMPI_COMMAND}:\${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}\"") set(SMPIMAIN ${libdir}/simgrid/smpimain) +set(SMPIREPLAYMAIN ${libdir}/simgrid/smpireplaymain) configure_file(${CMAKE_HOME_DIRECTORY}/include/smpi/mpif.h.in ${CMAKE_BINARY_DIR}/include/smpi/mpif.h @ONLY) #configure mpif.f90 to build mpi.mod @@ -656,6 +646,7 @@ if(NS3_LIBRARY_PATH) endif() set(CMAKE_SMPI_COMMAND "${CMAKE_SMPI_COMMAND}:\${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}\"") set(SMPIMAIN ${CMAKE_BINARY_DIR}/lib/simgrid/smpimain) +set(SMPIREPLAYMAIN ${CMAKE_BINARY_DIR}/lib/simgrid/smpireplaymain) foreach(script cc cxx ff f90 run) configure_file(${CMAKE_HOME_DIRECTORY}/src/smpi/smpi${script}.in ${CMAKE_BINARY_DIR}/smpi_script/bin/smpi${script} @ONLY)