diff --git a/CMakeLists.txt b/CMakeLists.txt index 4003cb87f8dd6831868f78f9624205e1204a9578..5508ad034d1ecfe74cf322ec0e74bd2999b63bc2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -52,6 +52,7 @@ include(CbmGenerateConfig) include(CbmMacros) include(CbmTargets) include(CbmCompilerSettings) +include(ROOTMacros) include(FairMacros) include(WriteConfigFile) @@ -63,10 +64,105 @@ include(ROOTMacros) # existence of FAIRROOTPATH and SIMPATH variables Check_Prerequisites() -# Has to be called after the CMAKE_MODULE_PATH contains the FairRoot -# directories since the file is part of FairRoot -set(FairRoot_DIR ${FAIRROOTPATH}) +#Fairsoft Modules Path +list(PREPEND CMAKE_PREFIX_PATH ${SIMPATH}) + +#Searches for ROOT Package +find_package(ROOT 6.22 CONFIG REQUIRED) +if(ROOT_FOUND) + Message("Root was found") + set(ROOT_CINT_EXECUTABLE ${SIMPATH}/bin/rootcling) + set(ROOT_CONFIG_EXECUTABLE ${SIMPATH}/bin/root-config) + set(ROOT_INCLUDE_DIR ${ROOT_INCLUDE_DIRS}) +endif() + +find_package(FairCMakeModules REQUIRED) +include(FairFindPackage2) + +#Searches for FairLogger Package +find_package2(PUBLIC FairLogger) +# at the end after all find_package[2] calls, call once +find_package2_implicit_dependencies() +if(FairLogger_FOUND) + Message("FairLogger was found") + set(FAIRLOGGER_FOUND TRUE) + set(FAIRLOGGER_INCLUDE_DIR ${FairLogger_INCDIR}/fairlogger) + + # CbmRoot expects that the Logger include statement does not need any + # additional path in the statement + # The target FairLogger::FairLogger does not provide the needed info + # So we add the additional subdirectory here to the target + get_target_property(_incDirs FairLogger::FairLogger INTERFACE_INCLUDE_DIRECTORIES) + set_target_properties(FairLogger::FairLogger PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${_incDirs}/fairlogger" + ) +endif() + +#Searches for VMC Package +if(ROOT_vmc_FOUND) + set(VMCLIB ROOT::VMC) + Message("Root_VMC was found") +else() + find_package2(PUBLIC VMC REQUIRED) + set(VMCLIB VMCLibrary) +endif() +if(VMC_FOUND) + Message("VMC was found") +endif() + +#Searches for FairROOT Package +#include(FairRootTargets) find_package(FairRoot REQUIRED) +if(FAIRROOT_FOUND) + Message("FairRoot was found") +endif() + + +#Searching for Boost Package +find_package(Boost COMPONENTS serialization regex filesystem log container program_options) +if(Boost_FOUND) + Message("Boost was found") +endif() + + +#Searching for Geant4 Package +find_package(Geant4 CONFIG REQUIRED) +if(Geant4_FOUND) + Message("Geant4 was found") +endif() + + +#Searching for VGM Package +find_package(VGM CONFIG REQUIRED) +if(VGM_FOUND) + Message("VGM was found") +endif() + +#Searching for Geant4VMC Package +find_package(Geant4VMC CONFIG REQUIRED) +if(Geant4VMC_FOUND) + Message("Geant4VMC was found") +endif() + +#Searching for Geant3 Package +find_package(Geant3 CONFIG REQUIRED) +if(Geant3_FOUND) + Message("Geant3 was found") +endif() + +#Searching for SSE +find_package(SSE REQUIRED) +if(SSE_FOUND) + Message("SSE was found") +endif() + + +#Searching for FairMQ +find_package(FairMQ CONFIG REQUIRED) +if(FairMQ_FOUND) + Message("FairMQ was found") + set(FAIRMQ_INCLUDE_DIR ${FairMQ_INCDIR}/fairmq) +endif() # Check if the compiler supports the needed C++ standard # Check for the minimum required versions of FairSoft and FairRoot @@ -75,9 +171,6 @@ check_external_stack() # Set the compiler flags set_compiler_flags() -# Allow to find <package>Config.cmake files in the FairSoft installation -set(CMAKE_PREFIX_PATH ${SIMPATH} ${CMAKE_PREFIX_PATH}) - # Define where the produced targets are placed in the binary directory Set(LIBRARY_OUTPUT_PATH "${CMAKE_BINARY_DIR}/lib") Set(EXECUTABLE_OUTPUT_PATH "${CMAKE_BINARY_DIR}/bin") @@ -94,69 +187,6 @@ set(FAIRROOT_LIBRARY_PROPERTIES ${FAIRROOT_LIBRARY_PROPERTIES} SOVERSION "${CBMROOT_MAJOR_VERSION}" ) -# searches for needed packages -# REQUIRED means that cmake will stop if this packages are not found -# For example the framework can run without GEANT4, but ROOT is -# mandatory -find_package(ROOT 6.22.08 REQUIRED) -set(ROOT_CINT_EXECUTABLE ${SIMPATH}/bin/rootcling) -set(ROOT_INCLUDE_DIR ${ROOT_INCLUDE_DIRS}) -set(ROOT_CONFIG_EXECUTABLE ${SIMPATH}/bin/root-config) -if("${ROOT_VERSION_MAJOR}.${ROOT_VERSION_MINOR}" VERSION_LESS 6.26) - Execute_Process(COMMAND ${ROOT_CONFIG_EXECUTABLE} --has-vmc - OUTPUT_VARIABLE ROOT_vmc_FOUND - ) - - String(STRIP ${ROOT_vmc_FOUND} ROOT_vmc_FOUND) - If(NOT ROOT_vmc_FOUND) - set(CMAKE_PREFIX_PATH ${SIMPATH} ${CMAKE_PREFIX_PATH}) - find_package2(PUBLIC VMC REQUIRED) - set(VMCLIB VMCLibrary) - endif() -else() - set(CMAKE_PREFIX_PATH ${SIMPATH} ${CMAKE_PREFIX_PATH}) - find_package2(PUBLIC VMC REQUIRED) - set(VMCLIB VMCLibrary) -endif() - -find_package2(PUBLIC Geant3 REQUIRED) -if(Geant3_FOUND) - Message("Geant3 was found") - Set(Geant3_LIBRARY_DIR ${Geant3_DIR}/../../${Geant3_CMAKE_INSTALL_LIBDIR}) - FIND_PATH(Geant3_SYSTEM_DIR NAMES data PATHS - ${Geant3_DIR}/../../share/geant3 - ${Geant3_DIR}/../../share/Geant3-${Geant3_VERSION} - NO_DEFAULT_PATH) -endif() - -find_package(GEANT4) -find_package(GEANT4DATA) -find_package(GEANT4VMC) -find_package(TBB) -find_package(SSE) -find_package(ZeroMQ) - -Set(Boost_NO_SYSTEM_PATHS TRUE) -Set(Boost_NO_BOOST_CMAKE TRUE) -set(BOOST_ROOT ${SIMPATH}) -Message("-- Looking for Boost ...") -# If an older version of boost is found both of the variables below are -# cached and in a second cmake run, a good boost version is found even -# if the version is to old. -# To overcome this problem both variables are cleared before checking -# for boost. -Unset(Boost_INCLUDE_DIR CACHE) -Unset(Boost_LIBRARY_DIRS CACHE) -find_package(Boost 1.48 COMPONENTS program_options thread system timer serialization regex log log_setup filesystem) -If (Boost_FOUND) - Set(Boost_Avail 1) -Else (Boost_FOUND) - Set(Boost_Avail 0) -EndIf (Boost_FOUND) - -Find_Package(FairLogger) -Find_Package(FairMQ) - find_package(OpenMP) # set a variable which should be used in all CMakeLists.txt @@ -203,6 +233,7 @@ endif() # Must be the first subdirectory since the defined targets are needed by # following targets add_subdirectory (external) + set (BASE_INCLUDE_DIRECTORIES ${BASE_INCLUDE_DIRECTORIES} ${XPU_INCLUDE_DIRECTORY} # Required for XPU_D macro in base data types @@ -235,7 +266,7 @@ endif() add_subdirectory (macro) add_subdirectory(fles) -If(FAIRMQ_FOUND) +If(FairMQ_FOUND) add_subdirectory(MQ) EndIf() diff --git a/cmake/modules/CbmChecks.cmake b/cmake/modules/CbmChecks.cmake index 21dce0b846fac064d668678764d4aa3431d59e77..8474043a5ded5e6565e53d033fbcdd70516111e3 100644 --- a/cmake/modules/CbmChecks.cmake +++ b/cmake/modules/CbmChecks.cmake @@ -52,7 +52,9 @@ Please set this environment variable or pass -DFAIRROOTPATH=<path> and and execu if (NOT DEFINED FAIRROOTPATH) set(FAIRROOTPATH $ENV{FAIRROOTPATH} PARENT_SCOPE) endif() - + if (NOT DEFINED FairRoot_DIR) + set(FairRoot_DIR ${FAIRROOTPATH} PARENT_SCOPE) + endif() endfunction() function(check_external_stack)