-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
82 lines (62 loc) · 2.37 KB
/
Copy pathCMakeLists.txt
File metadata and controls
82 lines (62 loc) · 2.37 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
cmake_minimum_required(VERSION 3.20)
project(cedra LANGUAGES CXX)
# We should not use directly CMAKE_CXX_STANDARD because
# it would override user variable value if library included
# using `add_subdirectory` command
set(CDR_CXX_STANDARD 20)
include(CTest)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
list(APPEND CDR_COMMON_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR})
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
############# SANITIZERS SUPPORT #############
option(CDR_WITH_ASAN "Enable AddressSanitizer" OFF)
option(CDR_WITH_TSAN "Enable ThreadSanitizer" OFF)
option(CDR_WITH_UBSAN "Enable UndefinedBehaviorSanitizer" OFF)
include(CdrSanitizers)
if(CDR_WITH_ASAN)
_cdr_add_sanitizer_interface(cdr_asan_interface address)
endif()
if(CDR_WITH_TSAN)
_cdr_add_sanitizer_interface(cdr_tsan_interface thread)
endif()
if(CDR_WITH_UBSAN)
_cdr_add_sanitizer_interface(cdr_ubsan_interface undefined)
endif()
##############################################
include(CdrHelpers)
option(CDR_BUILD_TESTS "If ON CDR will build all of cedra's own tests" ON)
option(CDR_BUILD_BENCH "If ON CDR will build all of cedra's own benchmarks" ON)
message(STATUS "Building tests: ${CDR_BUILD_TESTS}")
message(STATUS "Building benchmarks: ${CDR_BUILD_BENCH}")
# If project included using `add_subdirectory(cedra)`
# we don't need to perform proper installation
if(NOT CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR)
option(CDR_ENABLE_INSTALL "Enable installing" OFF)
else()
option(CDR_ENABLE_INSTALL "Enable installing" ON)
endif()
include(PrepareDependencies)
add_subdirectory(cdr)
if (CDR_ENABLE_INSTALL)
include(CMakePackageConfigHelpers)
install(EXPORT CdrTargets
FILE CdrTargets.cmake
NAMESPACE cdr::
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/cedra
)
configure_package_config_file(
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/CdrConfig.cmake.in"
"${CMAKE_CURRENT_BINARY_DIR}/CdrConfig.cmake"
INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/cedra
)
write_basic_package_version_file(
"${CMAKE_CURRENT_BINARY_DIR}/CdrConfigVersion.cmake"
VERSION 0.1.0
COMPATIBILITY AnyNewerVersion
)
install(FILES
"${CMAKE_CURRENT_BINARY_DIR}/CdrConfig.cmake"
"${CMAKE_CURRENT_BINARY_DIR}/CdrConfigVersion.cmake"
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/cedra
)
endif()