-
Notifications
You must be signed in to change notification settings - Fork 4
/
CMakeLists.txt
98 lines (81 loc) · 3.7 KB
/
CMakeLists.txt
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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
cmake_minimum_required(VERSION 3.26.1)
project(riptide_cpp LANGUAGES C CXX)
enable_testing()
include(CTest)
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/")
include(CheckIPOSupported)
set(CMAKE_VERBOSE_MAKEFILE on)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
# CMAKE_CXX_COMPILER_ID - actual compiler used
# CMAKE_CXX_SIMULATE_ID - compiler simulated ABI
# CMAKE_CXX_COMPILER_FRONTEND_VARIANT - compiler simulated front-end
message(STATUS "CMake compiler=${CMAKE_CXX_COMPILER_ID}(${CMAKE_CXX_COMPILER_VERSION}), ABI=${CMAKE_CXX_SIMULATE_ID}(${CMAKE_CXX_SIMULATE_VERSION}), front-end=${CMAKE_CXX_COMPILER_FRONTEND_VARIANT}")
# PROJ_COMPILER_ID - compiler ABI (real or simulated)
if(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" OR CMAKE_CXX_SIMULATE_ID STREQUAL "MSVC")
set(PROJ_COMPILER_ID "MSVC")
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_SIMULATE_ID STREQUAL "GNU")
set(PROJ_COMPILER_ID "GNU")
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang" OR CMAKE_CXX_SIMULATE_ID STREQUAL "AppleClang" OR CMAKE_CXX_COMPILER STREQUAL "clang")
set(PROJ_COMPILER_ID "LLVM")
else()
message(FATAL_ERROR "Unknown compiler ID")
endif()
# PROJ_COMPILER_FRONTEND - compiler front-end (real or simulated)
if(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" OR CMAKE_CXX_COMPILER_FRONTEND_VARIANT STREQUAL "MSVC")
set(PROJ_COMPILER_FRONTEND "MSVC")
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_FRONTEND_VARIANT STREQUAL "GNU")
set(PROJ_COMPILER_FRONTEND "GNU")
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang" OR CMAKE_CXX_COMPILER_FRONTEND_VARIANT STREQUAL "AppleClang" OR CMAKE_CXX_COMPILER_ID STREQUAL "clang")
set(PROJ_COMPILER_FRONTEND "LLVM")
else()
message(FATAL_ERROR "Unknown compiler front-end")
endif()
# PROJ_COMPILER_TOOLSET - compiler toolset (if available)
if(PROJ_COMPILER_ID STREQUAL "MSVC")
# Using MSVC_TOOLSET_VERSION is not reliable, so test MSVC_VERSION like auto_link.h does.
if(MSVC_VERSION)
if(MSVC_VERSION GREATER_EQUAL "1910" AND MSVC_VERSION LESS "1920")
set(PROJ_COMPILER_TOOLSET "v141")
elseif((MSVC_VERSION GREATER_EQUAL "1920" AND MSVC_VERSION LESS "1930"))
set(PROJ_COMPILER_TOOLSET "v142")
elseif((MSVC_VERSION GREATER_EQUAL "1930" AND MSVC_VERSION LESS "1940"))
set(PROJ_COMPILER_TOOLSET "v143")
else()
message(FATAL_ERROR "Unknown MSVC_VERSION, ${MSVC_VERSION}")
endif()
else()
message(FATAL_ERROR "MSVC_VERSION is not defined")
endif()
elseif(PROJ_COMPILER_ID STREQUAL "GNU")
# No toolset variants
elseif(PROJ_COMPILER_ID STREQUAL "LLVM")
# No toolset variants
else()
message(FATAL_ERROR "Unexpected proj compiler ID, ${PROJ_COMPILER_ID}")
endif()
message(STATUS "Proj compiler=${PROJ_COMPILER_ID}, toolset=${PROJ_COMPILER_TOOLSET}, path=${CMAKE_CXX_COMPILER}")
include(AddCommonSettings)
include(AddPythonSupport)
include(CopyRuntimeDeps)
set(CMAKE_POSITION_INDEPENDENT_CODE TRUE)
# Under setupbuild, exclude all dependencies from install target to avoid polluting distribution.
if(SETUPBUILD OR SKBUILD)
set(EXLUSION_SPECIFIER EXCLUDE_FROM_ALL)
else()
unset(EXCLUSION_SPECIFIER)
endif()
add_subdirectory(external ${EXLUSION_SPECIFIER})
macro(verbose_find_package)
message("Finding package ${ARGV0}")
find_package(${ARGN})
message("Found package ${ARGV0} config: ${${ARGV0}_CONFIG}")
endmacro()
verbose_find_package(benchmark CONFIG REQUIRED)
verbose_find_package(TBB CONFIG REQUIRED)
verbose_find_package(zstd REQUIRED)
add_subdirectory(src)
add_subdirectory(bench ${EXLUSION_SPECIFIER})
add_subdirectory(test ${EXLUSION_SPECIFIER})
add_subdirectory(extras ${EXLUSION_SPECIFIER})