IAP GITLAB

Skip to content
Snippets Groups Projects
Commit 3fc1364f authored by ralfulrich's avatar ralfulrich Committed by Hans Dembinski
Browse files

cmake script style and comments

parent d25314c1
No related branches found
No related tags found
1 merge request!118adding coverage reports and lcov
...@@ -33,79 +33,85 @@ set (CMAKE_CXX_EXTENSIONS OFF) ...@@ -33,79 +33,85 @@ set (CMAKE_CXX_EXTENSIONS OFF)
enable_testing () enable_testing ()
set (CTEST_OUTPUT_ON_FAILURE 1) set (CTEST_OUTPUT_ON_FAILURE 1)
# Set the possible values of build type for cmake-gui and command line check
set (ALLOWED_BUILD_TYPES Debug Release MinSizeRel RelWithDebInfo Coverage)
set_property (CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS ${ALLOWED_BUILD_TYPES})
# Set a default build type if none was specified # Set a default build type if none was specified
set (default_build_type "Release") # by default: "Debug", if local ".git" directory is found, otherwise "Release"
set (DEFAULT_BUILD_TYPE "Release")
if (EXISTS "${CMAKE_SOURCE_DIR}/.git") if (EXISTS "${CMAKE_SOURCE_DIR}/.git")
set (default_build_type "Debug") set (DEFAULT_BUILD_TYPE "Debug")
endif () endif ()
# Set the possible values of build type for cmake-gui and command line check
set (allowed_build_types Debug Release MinSizeRel RelWithDebInfo Coverage)
set_property (CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS ${allowed_build_types})
if (NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) if (NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
message (STATUS "Setting build type to '${default_build_type}' as no other was specified.") message (STATUS "Setting build type to '${DEFAULT_BUILD_TYPE}' as no other was specified.")
set (CMAKE_BUILD_TYPE "${default_build_type}" CACHE set (CMAKE_BUILD_TYPE "${DEFAULT_BUILD_TYPE}" CACHE
STRING "Choose the type of build." FORCE) STRING "Choose the type of build." FORCE)
else (NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) else (NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
# Ignore capitalization when build type is selected manually and check for valid setting # Ignore capitalization when build type is selected manually and check for valid setting
string (TOLOWER ${CMAKE_BUILD_TYPE} selected_lower) string (TOLOWER ${CMAKE_BUILD_TYPE} SELECTED_LOWER)
string (TOLOWER "${allowed_build_types}" build_types_lower) string (TOLOWER "${ALLOWED_BUILD_TYPES}" BUILD_TYPES_LOWER)
if (NOT selected_lower IN_LIST build_types_lower) if (NOT SELECTED_LOWER IN_LIST BUILD_TYPES_LOWER)
message (FATAL_ERROR "Unknown build type: ${CMAKE_BUILD_TYPE} [allowed: ${allowed_build_types}]") message (FATAL_ERROR "Unknown build type: ${CMAKE_BUILD_TYPE} [allowed: ${ALLOWED_BUILD_TYPES}]")
endif () endif ()
message (STATUS "Build type is: ${CMAKE_BUILD_TYPE}") message (STATUS "Build type is: ${CMAKE_BUILD_TYPE}")
endif (NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) endif (NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
# enable warnings and disallow non-standard language # enable warnings and disallow non-standard language
# configure the various build types here, too
set (CMAKE_CXX_FLAGS "-Wall -pedantic -Wextra -Wno-ignored-qualifiers") set (CMAKE_CXX_FLAGS "-Wall -pedantic -Wextra -Wno-ignored-qualifiers")
set (CMAKE_CXX_FLAGS_DEBUG "-O0 -g") set (CMAKE_CXX_FLAGS_DEBUG "-O0 -g")
set (CMAKE_CXX_FLAGS_RELEASE "-O3 -g") # -O2 would not trade speed for size, neither O2/3 use fast-math set (CMAKE_CXX_FLAGS_RELEASE "-O3") # -O2 would not trade speed for size, neither O2/3 use fast-math
set (CMAKE_CXX_FLAGS_MINSIZEREL "-O2")
set (CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O3 -g")
set (CMAKE_Fortran_FLAGS "-std=legacy") set (CMAKE_Fortran_FLAGS "-std=legacy")
# setup coverage target # setup coverage build type
set (CMAKE_CXX_FLAGS_COVERAGE "${CMAKE_CXX_FLAGS_DEBUG} --coverage") set (CMAKE_CXX_FLAGS_COVERAGE "-g --coverage")
set (CMAKE_EXE_LINKER_FLAGS_COVERAGE "--coverage") set (CMAKE_EXE_LINKER_FLAGS_COVERAGE "--coverage")
set (CMAKE_SHARED_LINKER_FLAGS_COVERAGE "--coverage") set (CMAKE_SHARED_LINKER_FLAGS_COVERAGE "--coverage")
# clang produces a lot of unecessary warnings without this: # 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>") add_compile_options ("$<$<OR:$<CXX_COMPILER_ID:Clang>,$<CXX_COMPILER_ID:AppleClang>>:-Wno-nonportable-include-path>")
# COAST - interface # COAST - interface, this requires CORSIKA7 to be installed first
# COAST will allow you to program code in CORSIKA8 and execute it inside CORSIKA7
if (WITH_COAST) if (WITH_COAST)
message (STATUS "Compiling CORSIKA8 for the use with COAST/corsika7.") message (STATUS "Compiling CORSIKA8 for the use with COAST/corsika7.")
add_compile_options ("-fPIC") add_compile_options ("-fPIC")
endif () endif ()
# generate coverage report # targets and settings needed to generate coverage reports
if (CMAKE_BUILD_TYPE STREQUAL Coverage) if (CMAKE_BUILD_TYPE STREQUAL Coverage)
find_package (Perl REQUIRED) find_package (Perl REQUIRED)
set (GCOV gcov CACHE STRING "gcov executable" FORCE) set (GCOV gcov CACHE STRING "gcov executable" FORCE)
set (LCOV_BIN_DIR "${PROJECT_SOURCE_DIR}/ThirdParty/lcov/bin") set (LCOV_BIN_DIR "${PROJECT_SOURCE_DIR}/ThirdParty/lcov/bin")
# collect coverage data # collect coverage data
add_custom_command(OUTPUT raw-coverage.info add_custom_command (
OUTPUT raw-coverage.info
COMMAND ${CMAKE_COMMAND} -E echo "Note: you need to run ctest at least once to generate the coverage data" COMMAND ${CMAKE_COMMAND} -E echo "Note: you need to run ctest at least once to generate the coverage data"
COMMAND ${LCOV_BIN_DIR}/lcov --gcov-tool=${GCOV} --directory . --capture --output-file raw-coverage.info) COMMAND ${LCOV_BIN_DIR}/lcov --gcov-tool=${GCOV} --directory . --capture --output-file raw-coverage.info
)
# remove uninteresting entries # remove uninteresting entries
add_custom_command(OUTPUT coverage.info add_custom_command (
OUTPUT coverage.info
COMMAND ${LCOV_BIN_DIR}/lcov --remove raw-coverage.info "*/usr/*" --output-file coverage2.info COMMAND ${LCOV_BIN_DIR}/lcov --remove raw-coverage.info "*/usr/*" --output-file coverage2.info
COMMAND ${LCOV_BIN_DIR}/lcov --remove coverage2.info "*/ThirdParty/*" --output-file coverage.info COMMAND ${LCOV_BIN_DIR}/lcov --remove coverage2.info "*/ThirdParty/*" --output-file coverage.info
COMMAND ${CMAKE_COMMAND} -E remove coverage2.info COMMAND ${CMAKE_COMMAND} -E remove coverage2.info
DEPENDS raw-coverage.info) DEPENDS raw-coverage.info
)
# generate html report # generate html report
add_custom_command(OUTPUT coverage-report add_custom_command (
OUTPUT coverage-report
COMMAND ${LCOV_BIN_DIR}/genhtml coverage.info -o coverage-report COMMAND ${LCOV_BIN_DIR}/genhtml coverage.info -o coverage-report
DEPENDS coverage.info) DEPENDS coverage.info
)
add_custom_target(coverage DEPENDS coverage-report) add_custom_target(coverage DEPENDS coverage-report)
endif () endif ()
#add_custom_target (corsika_pre_build)
#add_custom_command (TARGET corsika_pre_build PRE_BUILD COMMAND "${PROJECT_SOURCE_DIR}/pre_compile.py")
find_package (Pythia8) # optional find_package (Pythia8) # optional
find_package (Eigen3 REQUIRED) find_package (Eigen3 REQUIRED)
#find_package (HDF5) # not yet needed
# order of subdirectories # order of subdirectories
add_subdirectory (ThirdParty) add_subdirectory (ThirdParty)
......
...@@ -17,7 +17,9 @@ add_library ( ...@@ -17,7 +17,9 @@ add_library (
INTERFACE INTERFACE
) )
CORSIKA_COPY_HEADERS_TO_NAMESPACE (CORSIKAstackinterface ${CORSIKAstackinterface_NAMESPACE} ${CORSIKAstackinterface_HEADERS}) CORSIKA_COPY_HEADERS_TO_NAMESPACE (
CORSIKAstackinterface ${CORSIKAstackinterface_NAMESPACE} ${CORSIKAstackinterface_HEADERS}
)
target_include_directories ( target_include_directories (
CORSIKAstackinterface CORSIKAstackinterface
...@@ -27,10 +29,8 @@ target_include_directories ( ...@@ -27,10 +29,8 @@ target_include_directories (
) )
install ( install (
FILES FILES ${CORSIKAstackinterface_HEADERS}
${CORSIKAstackinterface_HEADERS} DESTINATION include/${CORSIKAstackinterface_NAMESPACE}
DESTINATION
include/${CORSIKAstackinterface_NAMESPACE}
) )
#code testing #code testing
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment