cnorxz/CMakeLists.txt

76 lines
2.3 KiB
CMake
Raw Normal View History

cmake_minimum_required(VERSION 3.0)
2020-09-03 13:05:49 +02:00
project(cnorxz)
2023-02-22 02:38:51 +01:00
execute_process(COMMAND bash "-c" "git rev-parse HEAD" OUTPUT_VARIABLE GIT_HASH OUTPUT_STRIP_TRAILING_WHITESPACE)
2023-02-28 14:15:16 +01:00
execute_process(COMMAND bash "-c" "git tag -l --sort=refname 'v*' | tail -n1" OUTPUT_VARIABLE GIT_TAG OUTPUT_STRIP_TRAILING_WHITESPACE)
2023-02-22 12:06:56 +01:00
execute_process(COMMAND bash "-c" "git rev-list -n 1 ${GIT_TAG}" OUTPUT_VARIABLE GIT_TAG_HASH OUTPUT_STRIP_TRAILING_WHITESPACE)
2023-02-22 02:38:51 +01:00
string(SUBSTRING ${GIT_TAG} 1 -1 VERSION)
2023-02-22 12:06:56 +01:00
if(NOT (${GIT_HASH} EQUAL ${GIT_TAG_HASH}))
2023-02-22 02:38:51 +01:00
string(SUBSTRING ${GIT_HASH} 0 7 GIT_HASH_SHORT)
set(VERSION "${VERSION}-${GIT_HASH_SHORT}")
endif()
2020-09-03 13:05:49 +02:00
if(CMAKE_COMPILER_IS_GNUCXX)
if(NOT CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 7.0)
message(FATAL_ERROR "require gcc version >= 7.0")
endif()
else()
message(WARNING "compiler ${CMAKE_CXX_COMPILER_ID} officially not supported")
endif()
2022-12-04 21:57:18 +01:00
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Werror -std=c++17 -Wpedantic -O2 -march=native -faligned-new -funroll-loops -fopenmp")
2017-03-23 21:05:40 +01:00
enable_testing()
2018-11-05 15:43:31 +01:00
if(IS_ABSOLUTE "${CMAKE_INSTALL_PREFIX}")
set(INSTALL_PATH ${CMAKE_INSTALL_PREFIX})
else()
#set(INSTALL_PATH ${CMAKE_SOURCE_DIR}/install)
get_filename_component(INSTALL_PATH ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_PREFIX} ABSOLUTE)
endif()
message(STATUS "found absolute install path '${INSTALL_PATH}'")
find_package( GTest REQUIRED )
if(GTest_FOUND)
include_directories(${GTEST_INCLUDE_DIRS})
else()
message(FATAL_ERROR "GTest not found")
endif()
2017-11-20 22:30:07 +01:00
find_package(Threads REQUIRED)
if(Threads_FOUND)
2017-12-18 14:02:37 +01:00
#include_directories(${Threads_INCLUDE_DIRS})
2017-11-20 22:30:07 +01:00
else()
message(FATAL_ERROR "Threads not found")
endif()
2023-01-13 01:40:19 +01:00
if(DEFINED ENABLE_hdf5)
set(ENABLE_hdf5 ${ENABLE_hdf5} CACHE BOOL "enable hdf5")
else()
set(ENABLE_hdf5 TRUE CACHE BOOL "enable hdf5")
endif()
2023-02-27 20:09:06 +01:00
if(DEFINED ENABLE_cereal)
set(ENABLE_cereal ${ENABLE_cereal} CACHE BOOL "enable hdf5")
else()
set(ENABLE_cereal TRUE CACHE BOOL "enable hdf5")
endif()
find_package(cereal QUIET)
if(cereal_FOUND)
message(STATUS "found cereal")
add_definitions(-DHAVE_CEREAL)
else()
message(STATUS "no cereal")
if(ENABLE_cereal)
message(FATAL_ERROR "cereal has been enabled but the cereal library has not been found")
endif()
endif()
2023-02-22 02:38:51 +01:00
add_definitions(-DVERSION="${VERSION}")
add_definitions(-DGIT_COMMIT="${GIT_HASH}")
add_definitions(-DCXX_FLAGS="${CMAKE_CXX_FLAGS}")
add_subdirectory(src)