diff --git a/CMakeLists.txt b/CMakeLists.txt index f84301c1f394b412d66c453b850a415188fd8e8e..1c0289ea9e040e7d299fe9493b811c5b6582a8d0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -45,16 +45,6 @@ set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/modules" ${CMAKE_MODULE_PATH}) set(CMAKE_PREFIX_PATH $ENV{SIMPATH} ${CMAKE_PREFIX_PATH}) set(CMAKE_INSTALL_LIBDIR lib) -# Check if the compiler support specific C++11 features -# Up to now this is only a check since the code does not use -# any of the features of the new standard - -IF(FAIRROOTPATH) - Set(CheckSrcDir "${FAIRROOTPATH}/share/fairbase/cmake/checks") -ELSE(FAIRROOTPATH) - Set(CheckSrcDir "${CMAKE_SOURCE_DIR}/cmake/checks") -ENDIF(FAIRROOTPATH) - if(FAIRROOTPATH) find_package(FairRoot) SET(MY_ROOT_INCLUDE_PATH ${FAIRROOT_INCLUDE_DIR}) @@ -70,9 +60,6 @@ if(FAIRROOTPATH) EndIf(CMAKE_INSTALL_PREFIX) endif(FAIRROOTPATH) -include(CheckCXX11Features) - - # Load some basic macros which are needed later on include(CbmMacros) include(FairMacros) @@ -81,38 +68,28 @@ include(CTest) include(CheckCompiler) Include(ExternalProject) -# CbmRoot uses from 22.07.15 C++11, so we need an compiler which supports C++11 +# CbmRoot needs from 07.04.22 at least C++17 support, so we need an compiler which supports +# this C++ standard. # Check if the used compiler support C++11. If not stop with an error message -# Check also if FairSoft and FairRoot have been compiled with C++11 support -If(NOT _HAS_CXX11_FLAG) - Message(FATAL_ERROR "The used C++ compiler (${CMAKE_CXX_COMPILER}) does not support C++11. CbmRoot can only be compiled with compilers supporting C++11. Please install such an compiler.") +# Check also if FairSoft and FairRoot have been compiled with C++17 support +include(CheckCXXCompilerFlag) +check_cxx_compiler_flag("-std=c++17" _HAS_CXX17_FLAG) + +If(NOT _HAS_CXX17_FLAG) + Message(FATAL_ERROR "The used C++ compiler (${CMAKE_CXX_COMPILER}) does not support C++17. CbmRoot can only be compiled with compilers supporting C++17. Please install such an compiler.") EndIf() Execute_process(COMMAND $ENV{SIMPATH}/bin/fairsoft-config --cxxflags OUTPUT_VARIABLE _res_fairsoft_config OUTPUT_STRIP_TRAILING_WHITESPACE) -String(FIND ${_res_fairsoft_config} "-std=c++11" POS_C++11) -If(${POS_C++11} EQUAL -1) - String(FIND ${_res_fairsoft_config} "-std=c++14" POS_C++11) - If(${POS_C++11} EQUAL -1) - String(FIND ${_res_fairsoft_config} "-std=c++17" POS_C++11) - If(${POS_C++11} EQUAL -1) - Message(FATAL_ERROR "FairSoft wasn't compiled with support for c++11 or above. Please recompile FairSoft with a compiler which supports c++11, c++14 or c++17.") - else() - set(CMAKE_CXX_STANDARD 17) - EndIf() - else() - set(CMAKE_CXX_STANDARD 14) - EndIf() +String(FIND ${_res_fairsoft_config} "-std=c++17" POS_C++17) +If(${POS_C++17} EQUAL -1) + Message(FATAL_ERROR "FairSoft wasn't compiled with support for c++17. Please recompile FairSoft with a compiler which supports c++17.") else() - set(CMAKE_CXX_STANDARD 11) + set(CMAKE_CXX_STANDARD 17) EndIf() Execute_process(COMMAND $ENV{SIMPATH}/bin/fairsoft-config --root-version OUTPUT_VARIABLE _res_root_version OUTPUT_STRIP_TRAILING_WHITESPACE) -String(FIND ${_res_root_version} "Usage" POS_USAGE) -If(${POS_USAGE} EQUAL 1) - Message(FATAL_ERROR "FairSoft version to old. At least nov15 compiled with ROOT6 is needed.") -EndIf() If(NOT ${_res_root_version} EQUAL 6) - Message(FATAL_ERROR "FairSoft was not compiled with ROOT6. At least FairSoft nov15 compiled with ROOT6 is needed.") + Message(FATAL_ERROR "FairSoft was not compiled with ROOT6.") EndIf() # Extract the FairRoot version from fairroot-config @@ -121,14 +98,14 @@ EndIf() FairRootVersion() FairSoftVersion() -# Since 20.02.2019 CbmRoot need at least FairRoot v18.0.5 and FairSoft may18 +# Since 07.04.2022 CbmRoot need at least FairRoot v18.6.7 and FairSoft apr21p2 # Check if FairRoot and FairSoft have at least this versions -If(FairRoot_VERSION VERSION_LESS 18.0.5) - Message(FATAL_ERROR "\n CbmRoot needs at least FairRoot version v18.0.5. \n You use FairRoot ${FairRoot_VERSION}. Please upgrade your FairRoot version.") +If(FairRoot_VERSION VERSION_LESS 18.6.7) + Message(FATAL_ERROR "\n CbmRoot needs at least FairRoot version v18.6.7. \n You use FairRoot ${FairRoot_VERSION}. Please upgrade your FairRoot version.") EndIf() -# FairSoft version 18.5.0 means may18 -If(FairSoft_VERSION VERSION_LESS 18.5.0) - Message(FATAL_ERROR "\n CbmRoot needs at least FairSoft version may18. \n You use FairSoft ${_fairsoft_version}. Please upgrade your FairSoft version.") +# FairSoft version 21.4.0 means apr21 +If(FairSoft_VERSION VERSION_LESS 21.4.0) + Message(FATAL_ERROR "\n CbmRoot needs at least FairSoft version apr21p2. \n You use FairSoft ${_fairsoft_version}. Please upgrade your FairSoft version.") EndIf() Execute_process(COMMAND $ENV{FAIRROOTPATH}/bin/fairroot-config --fairsoft_path OUTPUT_VARIABLE _simpath OUTPUT_STRIP_TRAILING_WHITESPACE) @@ -305,13 +282,6 @@ else(CBMROOT_MINIMAL) Find_Package(FairLogger) Find_Package(FairMQ) - if(FAIRMQ_FOUND) - if(EXISTS ${FAIRMQ_LIBRARY_DIR}/${CMAKE_SHARED_LIBRARY_PREFIX}FairMQStateMachine${CMAKE_SHARED_LIBRARY_SUFFIX}) - set(FairMQ_HAS_StateMachine TRUE) - else() - set(FairMQ_HAS_StateMachine FALSE) - endif() - endif() find_package(OpenMP) @@ -385,9 +355,7 @@ add_subdirectory (external) ### Base directories add_subdirectory (core) -if (${CMAKE_CXX_STANDARD} EQUAL 17) - add_subdirectory (algo) -endif() +add_subdirectory (algo) add_subdirectory (sim) add_subdirectory (reco) add_subdirectory (analysis)