From 0cdc0463acd34306540d54caff03f624848efe2c Mon Sep 17 00:00:00 2001 From: rulrich <ralf.m.ulrich@kit.edu> Date: Mon, 1 Jun 2020 03:35:42 +0200 Subject: [PATCH] conex --- CMakeLists.txt | 55 ------ CMakeModules/FindCONEX.cmake | 125 +++++++----- CMakeModules/FindConex.cmake | 100 ---------- CMakeModules/FindPythia8.cmake | 43 +++-- Framework/Geometry/CMakeLists.txt | 9 +- Framework/Logging/CMakeLists.txt | 2 +- Framework/Utilities/CMakeLists.txt | 4 +- Processes/CONEX/CMakeLists.txt | 4 +- Processes/InteractionCounter/CMakeLists.txt | 2 +- Processes/Pythia/CMakeLists.txt | 2 +- ThirdParty/CMakeLists.txt | 199 ++++++++++++-------- 11 files changed, 239 insertions(+), 306 deletions(-) delete mode 100644 CMakeModules/FindConex.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 1aa80e6cf..2524a36f3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -21,9 +21,6 @@ enable_language (Fortran) # TEMPORARY: this should be removed, the sanitizers should be always enabled option (WITH_CORSIKA_SANITIZERS_ENABLED "temporary way to globally disable sanitizers until the currently failing tests are fixed" OFF) option (WITH_COAST "Flag to switch on/off COAST (reverse) interface" OFF) -set (WITH_EIGEN3 "" CACHE STRING "Selection of eigen3 package. Can be \'c8\' or path to installation. If empty: search system, if not found use ThirdParty/eigen3." FORCE) -set (WITH_PYTHIA8 "" CACHE STRING "Selection of pythia8 package. Can be \'c8\' or path to installation. If empty: search system, if not found use ThirdParty/pythia8." FORCE) -set (WITH_BOOST "" CACHE STRING "Selection of boost libaries. Can be \'c8\' or path to installation. If empty: search system, if not found use ThirdParty/boost." FORCE) # check for python set (Python_ADDITIONAL_VERSIONS 3) @@ -120,58 +117,6 @@ endif () # add call to ./do-copyright.py to run as unit-test-case add_test (NAME copyright_notices COMMAND ./do-copyright.py WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) -# check for Pythia8: either use ThirdParty/pythia8 or system-level installation -message ("***** Configuring Pythia8 version") -if (WITH_PYTHIA8) - string (TOLOWER ${WITH_PYTHIA8} WITH_PYTHIA8_LOWER) - if ("x_${WITH_PYTHIA8_LOWER}" STREQUAL "x_c8") - message ("Use Pythia8 from ThirdParty folder") - else () - message ("Searching Pythia8 installed at location ${WITH_PYTHIA8}") - set (PYTHIA8_DIR ${WITH_PYTHIA8}) - find_package (Pythia8 REQUIRED) - endif () -else (WITH_PYTHIA8) - message ("Searching Pythia8 installed at system-level") - find_package (Pythia8) # if not found here, will automatically pick ThirdParty version -endif (WITH_PYTHIA8) - -# check for CxRoot/CONEX: either use ThirdParty/cxroot or system-level installation -message ("***** Configuring CxRoot/CONEX version") -if (WITH_CONEX) - string (TOLOWER ${WITH_CONEX} WITH_CONEX_LOWER) - if ("x_${WITH_CONEX_LOWER}" STREQUAL "x_c8") - message ("Use CONEX from ThirdParty folder") - else () - message ("Searching CxRoot/CONEX installed at location ${WITH_CONEX}") - set (CONEX_DIR ${WITH_CONEX}) - find_package (CONEX REQUIRED) - endif () -else (WITH_CONEX) - message ("Searching CxRoot/CONEX installed at system-level") - find_package (CONEX) # if not found here, will automatically pick ThirdParty version -endif (WITH_CONEX) - -# check for Eigen3: either use ThirdParty/eigen3 or system-level installation -message ("***** Configuring eigen3 version") -if (WITH_EIGEN3) - string (TOLOWER ${WITH_EIGEN3} WITH_EIGEN3_LOWER) - if ("x_${WITH_EIGEN3_LOWER}" STREQUAL "x_c8") - message ("Use eigen3 from ThirdParty folder") - else () - message ("Using eigen3 installed at location ${WITH_EIGEN3}") - list (APPEND CMAKE_MODULE_PATH "${WITH_EIGEN3}/cmake") - # set (EIGEN3_INCLUDE_DIR "${WITH_EIGEN3}" CACHE PATH "eigen3 directory") - find_package (Eigen3 REQUIRED NO_MODULE) - endif () -else (WITH_EIGEN3) - message ("Searching eigen3 installed at system-level") - find_package (Eigen3 NO_MODULE) # if not found here, will automatically pick ThirdParty version -endif (WITH_EIGEN3) - -# some final info output -message ("Use eigen3 version: ${EIGEN3_VERSION} from ${EIGEN3_INCLUDE_DIR}") - # include potential ThirdParty code provided with CORSIKA add_subdirectory (ThirdParty) diff --git a/CMakeModules/FindCONEX.cmake b/CMakeModules/FindCONEX.cmake index 860009583..a3eecd173 100644 --- a/CMakeModules/FindCONEX.cmake +++ b/CMakeModules/FindCONEX.cmake @@ -1,3 +1,13 @@ +# +# (c) Copyright 2020 CORSIKA Project, corsika-project@lists.kit.edu +# +# See file AUTHORS for a list of contributors. +# +# This software is distributed under the terms of the GNU General Public +# Licence version 3 (GPL Version 3). See file LICENSE for a full version of +# the license. +# + # - find Conex # # This module defines @@ -5,27 +15,43 @@ # CONEX_PREFIX # CONEX_INCLUDE_DIR -FIND_PATH (CONEX_PREFIX +set (SEARCH_conex_ + ${WITH_CONEX} + ${CONEXROOT} + ${CONEX_ROOT} + $ENV{CONEXROOT} + $ENV{CONEX_ROOT} + ) + +find_path (CONEX_PREFIX NAMES lib/${CMAKE_SYSTEM_NAME} - PATHS $ENV{CONEXROOT} + PATHS ${SEARCH_conex_} DOC "The CONEX root directory" NO_DEFAULT_PATH -) + ) -FIND_PATH (CONEX_INCLUDE_DIR +find_path (CONEX_INCLUDE_DIR NAMES ConexDynamicInterface.h - PATHS ${CONEX_PREFIX}/src + PATHS ${CONEX_PREFIX} + PATH_SUFFIXES src DOC "The CONEX include directory" -) + ) + +find_library (CONEX_LIBRARY + NAMES libCONEXdynamic.a + PATHS ${CONEX_PREFIX} + PATH_SUFFIXES lib/${CMAKE_SYSTEM_NAME} + DOC "The CONEX library" + ) -IF (CONEX_INCLUDE_DIR) - SET (CONEX_FOUND TRUE) - ADD_DEFINITIONS (-D_CONEX_PREFIX=\"${CONEX_PREFIX}\" -D_CONEX_SYSTEM=\"${CMAKE_SYSTEM_NAME}\") - IF (NOT Conex_FIND_QUIETLY) - MESSAGE (STATUS "Conex include directory is ${CONEX_INCLUDE_DIR}") - ENDIF () - SET (CMAKE_REQUIRED_INCLUDES ${CONEX_INCLUDE_DIR}) - CHECK_CXX_SOURCE_COMPILES ( +if (CONEX_INCLUDE_DIR) + if (NOT CONEX_FIND_QUIETLY) + message (STATUS "Conex include directory is ${CONEX_INCLUDE_DIR}") + endif () + + set (CMAKE_REQUIRED_INCLUDES ${CONEX_INCLUDE_DIR}) + include (CheckCXXSourceCompiles) + check_cxx_source_compiles ( " #include <conexHEModels.h> @@ -36,10 +62,11 @@ IF (CONEX_INCLUDE_DIR) if (test == eSibyll23) return 0; return 0; } - " + " HAS_SIBYLL23 - ) - CHECK_CXX_SOURCE_COMPILES ( + ) + + check_cxx_source_compiles ( " #include <conexHEModels.h> @@ -52,8 +79,9 @@ IF (CONEX_INCLUDE_DIR) } " HAS_EPOS_LHC - ) - CHECK_CXX_SOURCE_COMPILES ( + ) + + check_cxx_source_compiles ( " #include <ConexDynamicInterface.h> #include <ConexDynamicInterface.cc> @@ -66,35 +94,38 @@ IF (CONEX_INCLUDE_DIR) } " HAS_LEADINGINTERACTION_INTERFACE - ) - IF (HAS_LEADINGINTERACTION_INTERFACE) + ) + + if (HAS_LEADINGINTERACTION_INTERFACE) # at least conex2r5.65 - ADD_DEFINITIONS (-D_CONEX2R_VERSION=565) - IF (NOT Conex_FIND_QUIETLY) - MESSAGE (STATUS "Conex has interface to leading interactions. Set _CONEX2R_VERSION=565.") - ENDIF () - ELSEIF (HAS_SIBYLL23) + set (CONEX_VERSION 565) + if (NOT CONEX_FIND_QUIETLY) + message (STATUS "Conex has interface to leading interactions. Set _CONEX2R_VERSION=565.") + endif () + elseif (HAS_SIBYLL23) # at least conex2r5.30 - ADD_DEFINITIONS (-D_CONEX2R_VERSION=530) - IF (NOT Conex_FIND_QUIETLY) - MESSAGE (STATUS "Conex has SIBYLL2.3. Set _CONEX2R_VERSION=530.") - ENDIF () - ELSEIF (HAS_EPOS_LHC) + set (CONEX_VERSION 530) + if (NOT CONEX_FIND_QUIETLY) + message (STATUS "Conex has SIBYLL2.3. Set _CONEX2R_VERSION=530.") + endif () + elseif (HAS_EPOS_LHC) # at least conex2r4.36 - ADD_DEFINITIONS (-D_CONEX2R_VERSION=436) - IF (NOT Conex_FIND_QUIETLY) - MESSAGE (STATUS "Conex has EPOS-LHC. Set _CONEX2R_VERSION=436.") - ENDIF () - ELSE () + set (CONEX_VERSION 436) + if (NOT CONEX_FIND_QUIETLY) + message (STATUS "Conex has EPOS-LHC. Set _CONEX2R_VERSION=436.") + endif () + else () # pre LHC - ADD_DEFINITIONS (-D_CONEX2R_VERSION=300) - IF (NOT Conex_FIND_QUIETLY) - MESSAGE (STATUS "Conex is pre-LHC. Set _CONEX2R_VERSION=300.") - ENDIF () - ENDIF () -ELSE () - SET (CONEX_FOUND FALSE) - IF (Conex_FIND_REQUIRED) - MESSAGE (FATAL_ERROR "Could not find Conex!") - ENDIF () -ENDIF () + set (CONEX_VERSION 300) + if (NOT CONEX_FIND_QUIETLY) + message (STATUS "Conex is pre-LHC. Set _CONEX2R_VERSION=300.") + endif () + endif () +endif () + +# standard cmake infrastructure: +include (FindPackageHandleStandardArgs) +find_package_handle_standard_args (CONEX + "Did not find system-level CONEX." + CONEX_INCLUDE_DIR CONEX_LIBRARY CONEX_VERSION) +mark_as_advanced (CONEX_INCLUDE_DIR CONEX_LIBRARY CONEX_VERSION) diff --git a/CMakeModules/FindConex.cmake b/CMakeModules/FindConex.cmake deleted file mode 100644 index 6eeedb5a7..000000000 --- a/CMakeModules/FindConex.cmake +++ /dev/null @@ -1,100 +0,0 @@ -# - find Conex -# -# This module defines -# CONEX_FOUND -# CONEX_ROOT_DIR -# CONEX_INCLUDE_DIR - -FIND_PATH (CONEX_ROOT_DIR - NAMES lib/${CMAKE_SYSTEM_NAME} - PATHS $ENV{CONEXROOT} - DOC "The CONEX root directory" - NO_DEFAULT_PATH -) - -FIND_PATH (CONEX_INCLUDE_DIR - NAMES ConexDynamicInterface.h - PATHS ${CONEX_ROOT_DIR}/src - DOC "The CONEX include directory" -) - -IF (CONEX_INCLUDE_DIR) - SET (CONEX_FOUND TRUE) - ADD_DEFINITIONS (-D_CONEX_PREFIX=\"${CONEX_ROOT_DIR}\" -D_CONEX_SYSTEM=\"${CMAKE_SYSTEM_NAME}\") - IF (NOT Conex_FIND_QUIETLY) - MESSAGE (STATUS "Conex include directory is ${CONEX_INCLUDE_DIR}") - ENDIF () - SET (CMAKE_REQUIRED_INCLUDES ${CONEX_INCLUDE_DIR}) - CHECK_CXX_SOURCE_COMPILES ( - " - #include <conexHEModels.h> - - int - main() - { - EHEModel test = eSibyll23; - if (test == eSibyll23) return 0; - return 0; - } - " - HAS_SIBYLL23 - ) - CHECK_CXX_SOURCE_COMPILES ( - " - #include <conexHEModels.h> - - int - main() - { - EHEModel test = eEposLHC; - if (test == eEposLHC) return 0; - return 0; - } - " - HAS_EPOS_LHC - ) - CHECK_CXX_SOURCE_COMPILES ( - " - #include <ConexDynamicInterface.h> - #include <ConexDynamicInterface.cc> - int - main() - { - ConexDynamicInterface cdi(eSibyll23); - cdi.GetLeadingInteractionsParticleData(); - return 0; - } - " - HAS_LEADINGINTERACTION_INTERFACE - ) - IF (HAS_LEADINGINTERACTION_INTERFACE) - # at least conex2r5.65 - ADD_DEFINITIONS (-D_CONEX2R_VERSION=565) - IF (NOT Conex_FIND_QUIETLY) - MESSAGE (STATUS "Conex has interface to leading interactions. Set _CONEX2R_VERSION=565.") - ENDIF () - ELSEIF (HAS_SIBYLL23) - # at least conex2r5.30 - ADD_DEFINITIONS (-D_CONEX2R_VERSION=530) - IF (NOT Conex_FIND_QUIETLY) - MESSAGE (STATUS "Conex has SIBYLL2.3. Set _CONEX2R_VERSION=530.") - ENDIF () - ELSEIF (HAS_EPOS_LHC) - # at least conex2r4.36 - ADD_DEFINITIONS (-D_CONEX2R_VERSION=436) - IF (NOT Conex_FIND_QUIETLY) - MESSAGE (STATUS "Conex has EPOS-LHC. Set _CONEX2R_VERSION=436.") - ENDIF () - ELSE () - # pre LHC - ADD_DEFINITIONS (-D_CONEX2R_VERSION=300) - IF (NOT Conex_FIND_QUIETLY) - MESSAGE (STATUS "Conex is pre-LHC. Set _CONEX2R_VERSION=300.") - ENDIF () - ENDIF () -ELSE () - SET (CONEX_FOUND FALSE) - IF (Conex_FIND_REQUIRED) - MESSAGE (FATAL_ERROR "Could not find Conex!") - ENDIF () -ENDIF () diff --git a/CMakeModules/FindPythia8.cmake b/CMakeModules/FindPythia8.cmake index 8248388e4..6b47fd9c3 100644 --- a/CMakeModules/FindPythia8.cmake +++ b/CMakeModules/FindPythia8.cmake @@ -14,12 +14,12 @@ # function (Pythia8_CONFIG_ option variable type doc) - execute_process(COMMAND ${Pythia8_CONFIG} ${option} + execute_process (COMMAND ${Pythia8_CONFIG} ${option} OUTPUT_VARIABLE _local_out_ RESULT_VARIABLE _local_res_) - string(REGEX REPLACE "\n$" "" _local_out_ "${_local_out_}") + string (REGEX REPLACE "\n$" "" _local_out_ "${_local_out_}") if (NOT ${_local_res_} EQUAL 0) - message ("Error in running ${Pythia8_CONFIG} ${option}") + message (WARNING "Error in running ${Pythia8_CONFIG} ${option}") else () set (${variable} "${_local_out_}" CACHE ${type} ${doc}) endif () @@ -38,6 +38,7 @@ endfunction (Pythia8_CONFIG_) # set (SEARCH_Pythia8_ + ${WITH_PYTHIA8} ${PYTHIA8_DIR} $ENV{PYTHIA8_DIR} ${PYTHIA8} @@ -46,35 +47,51 @@ set (SEARCH_Pythia8_ $ENV{PYTHIA8DIR} ${PYTHIA8_ROOT} $ENV{PYTHIA8_ROOT} - /opt/pythia8) + /opt/pythia8 + ) find_program (Pythia8_CONFIG NAME pythia8-config PATHS ${SEARCH_Pythia8_} - PATH_SUFFIXES "/bin" - DOC "The location of the pythia8-config script") + PATH_SUFFIXES bin + DOC "The location of the pythia8-config script" + ) if (Pythia8_CONFIG) - set (HAVE_Pythia8 1 CACHE BOOL "presence of pythia8, found via pythia8-config") + Pythia8_CONFIG_ ("--includedir" Pythia8_INCLUDE_DIR PATH "pythia8 include directory") Pythia8_CONFIG_ ("--prefix" Pythia8_PREFIX PATH "pythia8 prefix directory") - find_library (Pythia8_LIBRARY NAMES "libpythia8.a" "libpythia8.so" PATH_SUFFIXES "lib" PATHS ${Pythia8_PREFIX} NO_DEFAULT_PATH DOC "pythia8 library") + find_library (Pythia8_LIBRARY + NAMES libpythia8.a libpythia8.so + PATH_SUFFIXES lib + PATHS ${Pythia8_PREFIX} + NO_DEFAULT_PATH + DOC "pythia8 library" + ) set (Pythia8_VERSION "n/a") + else () - set (HAVE_Pythia8 1 CACHE BOOL "presence of pythia8, found via include/lib") # if we get here, pythia8-config was not found by CMake so we use # CMake to try and find Pythia8 for us (but let the user know first). # We set these variables to exactly match the format of pythia8-config. # If any one of the variables is not found, CMake will automatically report # that Pythia8 is NOT FOUND (which is what we want). - message ("pythia8-config was not found. Attempting to manually locate Pythia8...") + message (STATUS "pythia8-config was not found. Attempting to manually locate Pythia8...") # find the main header - find_path (Pythia8_INCLUDE_DIR NAME "Pythia8/Pythia.h" PATH_SUFFIXES "include" PATHS ${SEARCH_Pythia8_}) + find_path (Pythia8_INCLUDE_DIR + NAME Pythia8/Pythia.h + PATH_SUFFIXES include + PATHS ${SEARCH_Pythia8_} + ) # and find the main library - find_library (Pythia8_LIBRARY NAMES "libpythia8.a" "libpythia8.so" PATH_SUFFIXES "lib" PATHS ${SEARCH_Pythia8_}) + find_library (Pythia8_LIBRARY + NAMES libpythia8.a libpythia8.so + PATH_SUFFIXES lib + PATHS ${SEARCH_Pythia8_} + ) endif () # also determine Pythia8 detailed version number @@ -87,6 +104,6 @@ endif () # standard cmake infrastructure: include (FindPackageHandleStandardArgs) find_package_handle_standard_args (Pythia8 - "Did not find system-level Pythia8. Switching to CORSIKA version." + "Did not find system-level Pythia8." Pythia8_INCLUDE_DIR Pythia8_LIBRARY Pythia8_VERSION) mark_as_advanced (Pythia8_INCLUDE_DIR Pythia8_LIBRARY Pythia8_VERSION) diff --git a/Framework/Geometry/CMakeLists.txt b/Framework/Geometry/CMakeLists.txt index 1a2754d1c..de2f6c5bb 100644 --- a/Framework/Geometry/CMakeLists.txt +++ b/Framework/Geometry/CMakeLists.txt @@ -41,7 +41,7 @@ target_link_libraries ( CORSIKAgeometry CORSIKAunits CORSIKAutilities - CORSIKAeigen3 + C8::ext::eigen3 ) target_include_directories ( @@ -51,12 +51,6 @@ target_include_directories ( $<INSTALL_INTERFACE:include/include> ) -#target_include_directories ( -# CORSIKAgeometry -# SYSTEM -# PUBLIC "${EIGEN3_INCLUDE_DIR}" -# ) - install ( TARGETS CORSIKAgeometry LIBRARY DESTINATION lib @@ -77,7 +71,6 @@ target_link_libraries ( CORSIKA_ADD_TEST(testFourVector) target_link_libraries ( testFourVector - CORSIKAboost CORSIKAgeometry CORSIKAunits CORSIKAtesting diff --git a/Framework/Logging/CMakeLists.txt b/Framework/Logging/CMakeLists.txt index de7cb2dae..4743b2b34 100644 --- a/Framework/Logging/CMakeLists.txt +++ b/Framework/Logging/CMakeLists.txt @@ -29,7 +29,7 @@ target_include_directories ( INTERFACE $<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/include> $<INSTALL_INTERFACE:include/> - CORSIKAboost + C8::ext:boost ) # install library diff --git a/Framework/Utilities/CMakeLists.txt b/Framework/Utilities/CMakeLists.txt index 1cd925d90..6baab4e54 100644 --- a/Framework/Utilities/CMakeLists.txt +++ b/Framework/Utilities/CMakeLists.txt @@ -53,8 +53,8 @@ target_link_libraries ( CORSIKAutilities CORSIKAgeometry CORSIKAunits - CORSIKAboost # so far only for MetaProgramming - CORSIKAeigen3 # for COMboost + C8::ext::boost # so far only for MetaProgramming + C8::ext::eigen3 # for COMboost ) target_include_directories ( diff --git a/Processes/CONEX/CMakeLists.txt b/Processes/CONEX/CMakeLists.txt index 2ddb73305..7aa2f4d61 100644 --- a/Processes/CONEX/CMakeLists.txt +++ b/Processes/CONEX/CMakeLists.txt @@ -1,12 +1,10 @@ set ( MODEL_SOURCES - #${CONEX_INCLUDE_DIR}/ConexDynamicInterface.cc CONEX.cc ) set ( MODEL_HEADERS - #ConexDynamicInterface.h CONEX.h ) @@ -37,7 +35,7 @@ target_link_libraries ( CORSIKAenvironment CORSIKAsetup CORSIKArandom - CORSIKAconex + C8::ext::conex ) target_include_directories ( diff --git a/Processes/InteractionCounter/CMakeLists.txt b/Processes/InteractionCounter/CMakeLists.txt index 4821b249f..f828ac98a 100644 --- a/Processes/InteractionCounter/CMakeLists.txt +++ b/Processes/InteractionCounter/CMakeLists.txt @@ -30,7 +30,7 @@ target_link_libraries ( CORSIKAunits CORSIKAprocesssequence CORSIKAthirdparty - CORSIKAboost + C8::ext::boost ) target_include_directories ( diff --git a/Processes/Pythia/CMakeLists.txt b/Processes/Pythia/CMakeLists.txt index e5028dd93..f4fab9493 100644 --- a/Processes/Pythia/CMakeLists.txt +++ b/Processes/Pythia/CMakeLists.txt @@ -40,7 +40,7 @@ target_link_libraries ( CORSIKAenvironment CORSIKAsetup CORSIKArandom - CORSIKApythia8 + C8::ext::pythia8 ) target_include_directories ( diff --git a/ThirdParty/CMakeLists.txt b/ThirdParty/CMakeLists.txt index 05ddcd26d..01dcd69b5 100644 --- a/ThirdParty/CMakeLists.txt +++ b/ThirdParty/CMakeLists.txt @@ -1,5 +1,3 @@ -include(ExternalProject) - add_library (CORSIKAthirdparty INTERFACE) target_include_directories (CORSIKAthirdparty SYSTEM @@ -11,12 +9,40 @@ target_include_directories (CORSIKAthirdparty SYSTEM install (DIRECTORY phys DESTINATION include/ThirdParty/) install (DIRECTORY catch2 DESTINATION include/ThirdParty/) -# boost +include(ExternalProject) + +# eventually add AUTO here, too: +set (ThirdPartyChoiceValues "C8;SYSTEM" CACHE STRING + "List of possible values for the ThirdParty package choice") +mark_as_advanced (ThirdPartyChoiceValues) + + + +############################################################################## +# check for boost: either use C8 or system-level installation + +message ("***** Configuring boost version") + +set (USE_BOOST_C8 "C8" CACHE STRING + "Selection of boost package. Can be \'C8\' or \'SYSTEM\'. Default: \'C8\'.") +set_property (CACHE USE_BOOST_C8 PROPERTY STRINGS ${ThirdPartyChoiceValues}) +message (STATUS "USE_BOOST_C8='${USE_BOOST_C8}'") + +add_library (C8::ext::boost INTERFACE IMPORTED GLOBAL) +if ("x_${USE_BOOST_C8}" STREQUAL "x_SYSTEM") + find_package (Boost REQUIRED mp11 iterator core format interval optional type_index histogram) + + message (STATUS "Using system-level boost version ${Boost_VERSION} at ${Boost_INCLUDE_DIR}") + set_target_properties ( + C8::ext::boost PROPERTIES + INTERFACE_LINK_LIBRARIES Boost::headers + ) + set (Boost_FOUND 1 PARENT_SCOPE) + +else () -add_library (CORSIKAboost INTERFACE IMPORTED GLOBAL) -if (NOT Boost_FOUND) set (_C8_Boost_VERSION "107300") - message ("Building ThirdParty/boost using boost-${_C8_Boost_VERSION}.tar.bz2") + message (STATUS "Building ThirdParty/boost using boost-${_C8_Boost_VERSION}.tar.bz2") ExternalProject_Add (boost URL ${CMAKE_CURRENT_SOURCE_DIR}/boost-${_C8_Boost_VERSION}.tar.bz2 URL_MD5 895e35757f133f01c451fc93229aae6b @@ -35,7 +61,7 @@ if (NOT Boost_FOUND) set (Boost_PREFIX ${INSTALL_DIR}/..) set (Boost_INCLUDE_DIR ${Boost_PREFIX}) set (Boost_LIBRARY_DIR ${Boost_PREFIX}) - add_dependencies (CORSIKAboost boost) + add_dependencies (C8::ext::boost boost) # create include directory at config time file (MAKE_DIRECTORY ${Boost_INCLUDE_DIR}) @@ -43,33 +69,48 @@ if (NOT Boost_FOUND) set (Boost_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/share/externals/boost) install (DIRECTORY ${Boost_PREFIX}/ DESTINATION ${Boost_INSTALL_DIR}) - message ("Use ThirdParty boost include dir ${Boost_INCLUDE_DIR}") + message (STATUS "Use ThirdParty boost include dir ${Boost_INCLUDE_DIR}") set_target_properties ( - CORSIKAboost PROPERTIES + C8::ext::boost PROPERTIES INTERFACE_INCLUDE_DIRECTORIES $<BUILD_INTERFACE:${Boost_INCLUDE_DIR}> ) -else (NOT Boost_FOUND) +endif () - message ("Using system-level boost version ${Boost_VERSION} at ${Boost_INCLUDE_DIR}") - set_target_properties ( - CORSIKAboost PROPERTIES - INTERFACE_LINK_LIBRARIES Boost::headers - ) + +############################################################################## +# check for Eigen3: either use ThirdParty/eigen3 or system-level installation + +message ("***** Configuring eigen3 version") + +set (USE_EIGEN3_C8 "C8" CACHE STRING + "Selection of eigen3 package. Can be \'C8\' or \'SYSTEM\'. Default: \'C8\'.") +set_property (CACHE USE_EIGEN3_C8 PROPERTY STRINGS ${ThirdPartyChoiceValues}) +message (STATUS "USE_EIGEN3_C8='${USE_EIGEN3_C8}'") + +add_library (C8::ext::eigen3 INTERFACE IMPORTED GLOBAL) +if ("x_${USE_EIGEN3_C8}" STREQUAL "x_SYSTEM") -endif (NOT Boost_FOUND) + if (WITH_EIGEN3) + list (APPEND CMAKE_MODULE_PATH "${WITH_EIGEN3}/cmake") + endif (WITH_EIGEN3) + find_package (Eigen3 REQUIRED NO_MODULE) + message (STATUS "Using system-level eigen3 version ${Eigen3_VERSION} at ${Eigen3_INCLUDE_DIR}") + set_target_properties ( + C8::ext::eigen3 PROPERTIES + INTERFACE_LINK_LIBRARIES Eigen3::Eigen + ) +set (Eigen3_FOUND 1 PARENT_SCOPE) -# eigen3 +else () -add_library (CORSIKAeigen3 INTERFACE IMPORTED GLOBAL) -if (NOT Eigen3_FOUND) set (_C8_Eigen3_VERSION "eigen-eigen-b3f3d4950030") - message ("Building ThirdParty/eigen3 using ${_C8_Eigen3_VERSION}.tar.bz2") + message (STATUS "Building ThirdParty/eigen3 using ${_C8_Eigen3_VERSION}.tar.bz2") ExternalProject_Add (eigen3 URL ${CMAKE_CURRENT_SOURCE_DIR}/${_C8_Eigen3_VERSION}.tar.bz2 - URL_MD5 8ffed5895a851894ad866888d4e64685 + URL_MD5 e83549a79d1b721da0f8899ab34edf95 SOURCE_DIR ${CMAKE_CURRENT_BINARY_DIR}/eigen3/install/eigen INSTALL_DIR ${CMAKE_CURRENT_BINARY_DIR}/eigen3/install/eigen CONFIGURE_COMMAND "" @@ -78,13 +119,11 @@ if (NOT Eigen3_FOUND) BUILD_IN_SOURCE ON EXCLUDE_FROM_ALL FALSE ) - set (HAVE_Eigen3 1 CACHE BOOL "presence of eigen3, via external-project-add in ThirdParty folder") set (Eigen3_FOUND 1 PARENT_SCOPE) ExternalProject_Get_Property (eigen3 INSTALL_DIR) set (Eigen3_PREFIX ${INSTALL_DIR}/..) - set (Eigen3_INCLUDE_DIR ${Eigen3_PREFIX}) - set (Eigen3_LIBRARY_DIR ${Eigen3_PREFIX}) - add_dependencies (CORSIKAeigen3 eigen3) + set (Eigen3_INCLUDE_DIR ${Eigen3_PREFIX}/eigen) + add_dependencies (C8::ext::eigen3 eigen3) # create include directory at config time file (MAKE_DIRECTORY ${Eigen3_INCLUDE_DIR}) @@ -92,30 +131,44 @@ if (NOT Eigen3_FOUND) set (Eigen3_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/share/externals/eigen3) install (DIRECTORY ${Eigen3_PREFIX}/ DESTINATION ${Eigen3_INSTALL_DIR}) - message ("Use ThirdParty eigen3 include dir ${Eigen3_INCLUDE_DIR}") + message (STATUS "Use ThirdParty eigen3 include dir ${Eigen3_INCLUDE_DIR}") set_target_properties ( - CORSIKAeigen3 PROPERTIES + C8::ext::eigen3 PROPERTIES INTERFACE_INCLUDE_DIRECTORIES $<BUILD_INTERFACE:${Eigen3_INCLUDE_DIR}> ) -else (NOT Eigen3_FOUND) +endif () - message ("Using system-level eigen3 version ${Eigen3_VERSION} at ${Eigen3_INCLUDE_DIR}") - set_target_properties ( - CORSIKAeigen3 PROPERTIES - INTERFACE_LINK_LIBRARIES Eigen3::Eigen - ) + +############################################################################## +# check for Pythia8: either use C8 or system-level installation + +message ("***** Configuring Pythia8 version") + +set (USE_PYTHIA8_C8 "C8" CACHE STRING + "Selection of pythia8 package. Can be \'C8\' or \'SYSTEM\'. Default: \'C8\'.") +set_property (CACHE USE_PYTHIA8_C8 PROPERTY STRINGS ${ThirdPartyChoiceValues}) +message (STATUS "USE_PYTHIA8_C8='${USE_PYTHIA8_C8}'") + +add_library (C8::ext::pythia8 STATIC IMPORTED GLOBAL) +if ("x_${USE_PYTHIA8_C8}" STREQUAL "x_SYSTEM") -endif (NOT Eigen3_FOUND) + find_package (Pythia8 REQUIRED) + message (STATUS "Using system-level Pythia8 version ${Pythia8_VERSION} at ${Pythia8_INCLUDE_DIR}") + set_target_properties ( + C8::ext::pythia8 PROPERTIES + IMPORTED_LOCATION ${Pythia8_LIBRARY} + IMPORTED_LINK_INTERFACE_LIBRARIES dl + INTERFACE_INCLUDE_DIRECTORIES ${Pythia8_INCLUDE_DIR} + ) + set (Pythia8_FOUND 1 PARENT_SCOPE) -# Pythia8 +else () -add_library (CORSIKApythia8 STATIC IMPORTED GLOBAL) -if (NOT Pythia8_FOUND) set (_C8_Pythia8_VERSION "8235") - message ("Building ThirdParty/pythia8 using pythia${_C8_Pythia8_VERSION}-stripped.tar.bz2") - message ("This will take a bit.....") + message (STATUS "Building ThirdParty/pythia8 using pythia${_C8_Pythia8_VERSION}-stripped.tar.bz2") + message (STATUS "This will take a bit.....") ExternalProject_Add (pythia8 URL ${CMAKE_CURRENT_SOURCE_DIR}/pythia${_C8_Pythia8_VERSION}-stripped.tar.bz2 URL_MD5 83132880c0594b808bd7fd37fb642606 @@ -125,14 +178,13 @@ if (NOT Pythia8_FOUND) BUILD_IN_SOURCE ON EXCLUDE_FROM_ALL TRUE ) - set (HAVE_Pythia8 1 CACHE BOOL "presence of pythia8, via external-project-add in ThirdParty folder") set (Pythia8_FOUND 1 PARENT_SCOPE) ExternalProject_Get_Property (pythia8 INSTALL_DIR) set (Pythia8_VERSION ${_C8_Pythia8_VERSION} CACHE STRING "Version of Pythia8") set (Pythia8_PREFIX ${INSTALL_DIR}) set (Pythia8_INCLUDE_DIR ${Pythia8_PREFIX}/include) set (Pythia8_LIBRARY ${Pythia8_PREFIX}/lib/libpythia8.a) - add_dependencies (CORSIKApythia8 pythia8) + add_dependencies (C8::ext::pythia8 pythia8) # create include directory at config time file (MAKE_DIRECTORY ${Pythia8_INCLUDE_DIR}) @@ -141,33 +193,44 @@ if (NOT Pythia8_FOUND) install (DIRECTORY ${INSTALL_DIR}/ DESTINATION ${Pythia8_INSTALL_DIR}) set_target_properties ( - CORSIKApythia8 PROPERTIES + C8::ext::pythia8 PROPERTIES IMPORTED_LOCATION ${Pythia8_LIBRARY} IMPORTED_LINK_INTERFACE_LIBRARIES dl INTERFACE_INCLUDE_DIRECTORIES $<BUILD_INTERFACE:${Pythia8_INCLUDE_DIR}> ) -else (NOT Pythia8_FOUND) +endif () - message ("Using system-level Pythia8 version ${Pythia8_VERSION} at ${Pythia8_INCLUDE_DIR}") + + +############################################################################## +# check for CxRoot/CONEX: either use ThirdParty/cxroot or system-level installation + +message ("***** Configuring CxRoot/CONEX version") + +set (USE_CONEX_C8 "C8" CACHE STRING + "Selection of conex package. Can be \'C8\' or \'SYSTEM\'. Default: \'C8\'.") +set_property (CACHE USE_CONEX_C8 PROPERTY STRINGS ${ThirdPartyChoiceValues}) +message (STATUS "USE_CONEX_C8='${USE_CONEX_C8}'") + +add_library (C8::ext::conex STATIC IMPORTED GLOBAL) +if ("x_${USE_CONEX_C8}" STREQUAL "x_SYSTEM") + + find_package (CONEX REQUIRED) + message (STATUS "Using system-level CONEX version at ${CONEX_INCLUDE_DIR}") set_target_properties ( - CORSIKApythia8 PROPERTIES - IMPORTED_LOCATION ${Pythia8_LIBRARY} + C8::ext::conex PROPERTIES + IMPORTED_LOCATION ${CONEX_PREFIX}/lib/${CMAKE_SYSTEM_NAME}/libCONEXdynamic.a IMPORTED_LINK_INTERFACE_LIBRARIES dl - INTERFACE_INCLUDE_DIRECTORIES ${Pythia8_INCLUDE_DIR} + INTERFACE_INCLUDE_DIRECTORIES ${CONEX_INCLUDE_DIR} ) - -endif (NOT Pythia8_FOUND) - - + set (CONEX_FOUND 1 PARENT_SCOPE) -# CONEX/CXROOT +else () -add_library (CORSIKAconex STATIC IMPORTED GLOBAL) -if (NOT CONEX_FOUND) - message ("Building ThirdParty/cxroot is obtained via git and compiled") - message ("This will take a bit.....") + message (STATUS "Building conex obtained via git and compiled") + message (STATUS "This will take a bit.....") ExternalProject_Add (cxroot GIT_REPOSITORY https://gitlab.ikp.kit.edu/AirShowerPhysics/cxroot.git GIT_TAG origin/master @@ -181,37 +244,23 @@ if (NOT CONEX_FOUND) BUILD_IN_SOURCE ON EXCLUDE_FROM_ALL TRUE ) - set (HAVE_CONEX 1 CACHE BOOL "presence of conex, via external-project-add in ThirdParty folder") set (CONEX_FOUND 1 PARENT_SCOPE) ExternalProject_Get_Property (cxroot INSTALL_DIR) set (CONEX_PREFIX ${INSTALL_DIR}) set (CONEX_INCLUDE_DIR ${CONEX_PREFIX}/src) set (CONEX_INCLUDE_DIR ${CONEX_PREFIX}/src PARENT_SCOPE) - add_dependencies (CORSIKAconex cxroot) + add_dependencies (C8::ext::conex cxroot) # create include directory at config time file (MAKE_DIRECTORY ${CONEX_INCLUDE_DIR}) - set (CONEX_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/share/externals/cxroot) - install (DIRECTORY ${INSTALL_DIR}/ DESTINATION ${CONEX_INSTALL_DIR}) - set_target_properties ( - CORSIKAconex PROPERTIES - IMPORTED_LOCATION ${CONEX_PREFIX}/lib/Linux/libCONEXdynamic.a + C8::ext::conex PROPERTIES + IMPORTED_LOCATION ${CONEX_LIBRARY} IMPORTED_LINK_INTERFACE_LIBRARIES dl INTERFACE_INCLUDE_DIRECTORIES $<BUILD_INTERFACE:${CONEX_INCLUDE_DIR}> ) - -else (NOT CONEX_FOUND) - - message ("Using system-level CONEX version at ${CXROOT_INCLUDE_DIR}") - set_target_properties ( - CORSIKAconex PROPERTIES - IMPORTED_LOCATION ${CONEX_PREFIX}/lib/${CMAKE_SYSTEM_NAME}/libCONEXdynamic.a - IMPORTED_LINK_INTERFACE_LIBRARIES dl - INTERFACE_INCLUDE_DIRECTORIES ${CONEX_INCLUDE_DIR} - ) - -endif (NOT CONEX_FOUND) + +endif () -- GitLab