Select Git revision
CMakeLists.txt
-
Stéphane Del Pino authored
Now indicated build options, compiler and enabled Kokkos devices in execution preamble
Stéphane Del Pino authoredNow indicated build options, compiler and enabled Kokkos devices in execution preamble
CMakeLists.txt 2.91 KiB
include_directories(${CMAKE_CURRENT_SOURCE_DIR})
include_directories(${CMAKE_CURRENT_BINARY_DIR})
# ------------------- Source files --------------------
add_library(
PastisUtils
BuildInfo.cpp
BacktraceManager.cpp
ConsoleManager.cpp
FPEManager.cpp
PastisUtils.cpp
RevisionInfo.cpp
SignalManager.cpp)
# --------------- get git revision info ---------------
# Generates revision header file
add_custom_target(
PastisGitRevison
ALL
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/pastis_git_revision.hpp
)
set_source_files_properties(
${CMAKE_CURRENT_BINARY_DIR}/pastis_git_revision.hpp
PROPERTIES
GENERATED TRUE
HEADER_FILE_ONLY TRUE
)
# --------- check git revision info at build ----------
add_custom_command(TARGET PastisGitRevison
COMMAND ${CMAKE_COMMAND} -E remove -f
${CMAKE_CURRENT_BINARY_DIR}/pastis_git_revision
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/pastis_git_revision.hpp
COMMENT ""
)
add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/pastis_git_revision.hpp
PRE_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_if_different
${CMAKE_CURRENT_BINARY_DIR}/pastis_git_revision
${CMAKE_CURRENT_BINARY_DIR}/pastis_git_revision.hpp
COMMENT ""
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/pastis_git_revision
VERBATIM
)
add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/pastis_git_revision
PRE_BUILD
COMMAND ${CMAKE_COMMAND} -DCMAKE_PASTIS_VERSION=${Pastis_VERSION} -DPASTIS_SOURCE_DIR=${PASTIS_SOURCE_DIR} -P ${PASTIS_SOURCE_DIR}/cmake/GetPastisGitRevision.cmake
COMMENT "Check pastis git status"
VERBATIM
)
# ----------------- get version info ------------------
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/pastis_version.hpp.in"
"${CMAKE_CURRENT_BINARY_DIR}/pastis_version.hpp"
@ONLY)
list(
APPEND
SOURCES
${CMAKE_CURRENT_BINARY_DIR}/pastis_git_revision.hpp
${CMAKE_CURRENT_BINARY_DIR}/pastis_version.hpp
${PASTIS_BINARY_DIR}/pastis_config.hpp
)
include_directories(${CMAKE_CURRENT_BINARY_DIR})
include_directories(${PASTIS_BINARY_DIR})
include_directories(${PASTIS_SOURCE_DIR}/packages/rang/include)
# Additional dependencies
add_dependencies(
PastisUtils
PastisGitRevison)
# ---------------- Checks for includes ----------------
# Checks for FPE
include(CheckIncludeFile)
check_include_file(fenv.h PASTIS_HAS_FENV_H)
# Checks for host system name
if (CMAKE_HOST_SYSTEM_NAME STREQUAL "Linux")
set(SYSTEM_IS_LINUX 1)
elseif(CMAKE_HOST_SYSTEM_NAME STREQUAL "Darwin")
set(SYSTEM_IS_DARWIN 1)
elseif(CMAKE_HOST_SYSTEM_NAME STREQUAL "Windows")
set(SYSTEM_IS_WINDOWS 1)
else()
message(WARNMSG "Your system is ${CMAKE_HOST_SYSTEM_NAME} which may not be managed!")
endif()
# Generates pastis_config.hpp
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/pastis_config.hpp.in"
"${CMAKE_CURRENT_BINARY_DIR}/pastis_config.hpp"
@ONLY)
# Generates pastis_build_info.hpp
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/pastis_build_info.hpp.in"
"${CMAKE_CURRENT_BINARY_DIR}/pastis_build_info.hpp"
@ONLY)