IAP GITLAB

Skip to content
Snippets Groups Projects
CMakeLists.txt 3.85 KiB
Newer Older
cmake_minimum_required (VERSION 3.9)
# we would need 3.16 to have CMP0097 for external subproject submodule (non) support
ralfulrich's avatar
ralfulrich committed

#+++++++++++++++++++++++++++++
# project name
#
project( CORSIKA8_Modules_Tests_Examples )
#
#
#+++++++++++++++++++++++++++++
# warn user if system is not UNIX
#
if(NOT UNIX)
  message(FATAL_ERROR "| CORSIKA8 > This is an unsupported system.")
endif()
#
#+++++++++++++++++++++++++++++
# cmake path dir
#
SET(CORSIKA8_CMAKE_DIR "${PROJECT_SOURCE_DIR}/cmake")
SET(CMAKE_MODULE_PATH  "${CORSIKA8_CMAKE_DIR}" ${CMAKE_MODULE_PATH})
SET(CMAKE_VERBOSE_MAKEFILE  ON)
#
#+++++++++++++++++++++++++++++
# check if compiler is C++17 compliant
#
include(CheckCXXCompilerFlag)
CHECK_CXX_COMPILER_FLAG("--std=c++17" COMPILER_SUPPORTS_CXX17)
if(NOT COMPILER_SUPPORTS_CXX17)
 message(FATAL "| CORSIKA8 > The compiler ${CMAKE_CXX_COMPILER} has no C++17 support. Please use a different C++ compiler.")
endif()

# set CXX compile flags and options and warning settings
set (CMAKE_CXX_EXTENSIONS OFF)
ralfulrich's avatar
ralfulrich committed
# enable warnings and disallow non-standard language
# configure the various build types here, too
# FYI: optimizer flags: -O2 would not trade speed for size, neither O2/3 use fast-math
# debug: O0, relwithdebinfo: 02, release: O3, minsizerel: Os (all defaults)
set (CMAKE_CXX_FLAGS "-Wall -pedantic -Wextra -Wno-ignored-qualifiers")
ralfulrich's avatar
ralfulrich committed
set (CMAKE_Fortran_FLAGS "-std=legacy -Wfunction-elimination")
# clang produces a lot of unecessary warnings without this:
add_compile_options ("$<$<OR:$<CXX_COMPILER_ID:Clang>,$<CXX_COMPILER_ID:AppleClang>>:-Wno-nonportable-include-path>")
# ctest config
enable_testing ()
set (CTEST_OUTPUT_ON_FAILURE 1)
#+++++++++++++++++++++++++++++
# get CORSIKA8
#
find_package(CORSIKA8 REQUIRED)
include_directories(${CORSIKA8_INCLUDE_DIR})
# those are needed, since some headers (namely GeneratedParticleProperties.inc) are produced by python script from ParticleData.xml
add_subdirectory(corsika/framework) 
add_subdirectory(corsika/modules/sibyll) 
ralfulrich's avatar
ralfulrich committed
add_subdirectory(corsika/modules/qgsjetII) 
#
#+++++++++++++++++++++++++++++
# get Eigen3 
#
find_package( Eigen3 REQUIRED )
include_directories(${EIGEN3_INCLUDE_DIR})

#+++++++++++++++++++++++++++++
# get catch2 
#
find_package( Catch2 REQUIRED )

#+++++++++++++++++++++++++++++
# use spdlog
#
add_subdirectory(externals/spdlog)
add_dependencies(CORSIKA8 spdlog::spdlog)

#+++++++++++++++++++++++++++++
# get phys_units
#
find_package( PhysUnits REQUIRED )

#+++++++++++++++++++++++++++++
# get Pythia
#
ralfulrich's avatar
ralfulrich committed
#find_package( Pythia8 REQUIRED )
add_subdirectory(dependencies/pythia)
if(Pythia_FOUND)
include_directories(${Pythia_INCLUDE_DIR})
endif(Pythia_FOUND)
#
#+++++++++++++++++++++++++++++
# get UrQMD
#
#find_package( UrQMD REQUIRED )
ralfulrich's avatar
ralfulrich committed
add_subdirectory(dependencies/urqmd)
if(UrQMD_FOUND)
include_directories(${UrQMD_INCLUDE_DIR})
endif(UrQMD_FOUND)
#
#+++++++++++++++++++++++++++++
# get Sybill
#
# find_package( Sibyll REQUIRED )
add_subdirectory (dependencies/sibyll)
if(Sibyll_FOUND)
include_directories(${Sibyll_INCLUDE_DIR})
endif(Sibyll_FOUND)
#
#+++++++++++++++++++++++++++++
# get QGSJETII
#
#find_package( QGSJETII REQUIRED )
ralfulrich's avatar
ralfulrich committed
add_subdirectory (dependencies/qgsjetII)
if(QGSJETII_FOUND)
include_directories(${QGSJETII_INCLUDE_DIR})
endif(QGSJETII_FOUND)
#
#
#+++++++++++++++++++++++++++++
# =~~~~~~~~~~~~~~~~~~~~~~~~~=
#  = Add of subdirectories =
# =~~~~~~~~~~~~~~~~~~~~~~~~~=
#+++++++++++++++++++++++++++++
#
# modules
# 
#add_subdirectory (dependencies/Pythia)
#add_subdirectory (dependencies/Sibyll)
#add_subdirectory (dependencies/QGSJetII)
#add_subdirectory (dependencies/UrQMD)
#
#+++++++++++++++++++++++++++++++
# tests
# 
add_subdirectory (tests/framework)
add_subdirectory (tests/media)
add_subdirectory (tests/stack)
add_subdirectory (tests/modules)
#
#+++++++++++++++++++++++++++++++
# examples
# 
ralfulrich's avatar
ralfulrich committed
add_subdirectory (examples)
#
#+++++++++++++++++++++++++++++++
#
ralfulrich's avatar
ralfulrich committed
# final summary output
feature_summary (WHAT ALL)