-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathCMakeLists.txt
60 lines (48 loc) · 2.07 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
# --------------------------------------------------------------------------------------------------
# Root cmake file for the Volo project.
# --------------------------------------------------------------------------------------------------
cmake_minimum_required(VERSION 3.19)
if(${CMAKE_VERSION} VERSION_GREATER "3.20")
cmake_policy(SET CMP0116 NEW) # Support Ninja dep-files in subdirectories.
endif()
project(Volo VERSION 0.1.0 LANGUAGES C)
# Custom options.
set(FAST "Off" CACHE BOOL "Fast mode, disables various runtime validations")
set(TRACE "On" CACHE BOOL "Trace mode, enables runtime performance tracing")
set(LTO "Off" CACHE BOOL "Link time optimization")
set(SANITIZE "Off" CACHE BOOL "Should santiser instrumentation be enabled")
# Diagnostic information.
message(STATUS "Configuring Volo")
message(STATUS "* Host system: ${CMAKE_HOST_SYSTEM}")
message(STATUS "* Host processor: ${CMAKE_SYSTEM_PROCESSOR}")
message(STATUS "* CMake version: ${CMAKE_VERSION}")
message(STATUS "* Source path: ${PROJECT_SOURCE_DIR}")
message(STATUS "* Build path: ${PROJECT_BINARY_DIR}")
message(STATUS "* Compiler: ${CMAKE_C_COMPILER_ID}")
message(STATUS "* Generator: ${CMAKE_GENERATOR}")
message(STATUS "* Fast: ${FAST}")
message(STATUS "* Trace: ${TRACE}")
message(STATUS "* Lto: ${LTO}")
message(STATUS "* Sanitize: ${SANITIZE}")
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/modules")
include(cmake/compiler.cmake)
include(cmake/debug.cmake)
include(cmake/findpkg.cmake)
include(cmake/platform.cmake)
include(cmake/test.cmake)
# Setup global platform specific defines.
detect_platform()
set_platform_defines()
# Setup global compiler specific defines and options.
detect_compiler()
set_compiler_defines()
set_compile_options()
# Generate a 'compile_commands.json' for intellisense (for example clangd).
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
message(STATUS "Configuring libraries")
add_subdirectory(libs)
message(STATUS "Configuring applications")
add_subdirectory(apps)
message(STATUS "Configuring utility targets")
configure_test_target()
configure_dbgsetup_target()