X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/a6990bbf9ccc93448560bac29baa1a938ca38e50..26a6811b6e54b4a9d6274725ca376dbf979972d4:/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt index 3aab3e42a3..786e63d830 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -39,6 +39,10 @@ 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 set(CMAKE_THREAD_PREFER_PTHREAD TRUE) find_package(Threads) @@ -238,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}) @@ -258,17 +254,40 @@ else() endif() endif() -find_package(Boost COMPONENTS context) -set(Boost_FOUND 1) # This component is optional +# cmake before 3.13.1 does not know about stacktrace components. Fix 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) @@ -287,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) @@ -410,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() @@ -442,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() @@ -528,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 ## @@ -607,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 @@ -635,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)