-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
98 lines (78 loc) · 2.65 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.14)
include(cmake/in-source-guard.cmake)
cmake_policy(SET CMP0048 NEW)
project(
Instrmt
VERSION 0.1.0
LANGUAGES CXX
)
set(CMAKE_CXX_STANDARD 14)
include(cmake/instrmt-macros.cmake)
# For convenience, write libraries and executables in root of build tree.
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
# Main library
add_library(instrmt SHARED
instrmt/details/engine.cxx
instrmt/details/utils.cxx)
target_include_directories(instrmt
PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
$<INSTALL_INTERFACE:include>)
target_link_libraries(instrmt PRIVATE dl)
# TTY engine
add_library(instrmt-tty MODULE instrmt/tty/tty-engine.cxx)
target_link_libraries(instrmt-tty PRIVATE instrmt)
# TTY wrapper
add_library(instrmt-tty-wrapper INTERFACE)
target_include_directories(instrmt-tty-wrapper
INTERFACE
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
$<INSTALL_INTERFACE:include>
)
target_compile_definitions(instrmt-tty-wrapper INTERFACE "INSTRMT_CXX_WRAPPER=\"instrmt/tty/tty-wrapper.hxx\"")
option(INSTRMT_BUILD_ITT_ENGINE "" ON)
if (INSTRMT_BUILD_ITT_ENGINE)
find_itt()
# ITT engine
add_library(instrmt-itt MODULE instrmt/itt/itt-engine.cxx)
target_link_libraries(instrmt-itt PRIVATE instrmt ittnotify)
# ITT wrapper
add_library(instrmt-itt-wrapper INTERFACE)
target_include_directories(instrmt-itt-wrapper
INTERFACE
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
$<INSTALL_INTERFACE:include>
)
target_compile_definitions(instrmt-itt-wrapper INTERFACE "INSTRMT_CXX_WRAPPER=\"instrmt/itt/itt-wrapper.hxx\"")
target_link_libraries(instrmt-itt-wrapper INTERFACE ittnotify)
endif()
option(INSTRMT_BUILD_TRACY_ENGINE "" ON)
if (INSTRMT_BUILD_TRACY_ENGINE)
find_package(Tracy)
# Tracy engine
add_library(instrmt-tracy MODULE instrmt/tracy/tracy-engine.cxx)
target_link_libraries(instrmt-tracy PRIVATE instrmt Tracy::TracyClient)
# Tracy wrapper
add_library(instrmt-tracy-wrapper INTERFACE)
target_include_directories(instrmt-tracy-wrapper
INTERFACE
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
$<INSTALL_INTERFACE:include>
)
target_compile_definitions(instrmt-tracy-wrapper INTERFACE "INSTRMT_CXX_WRAPPER=\"instrmt/tracy/tracy-wrapper.hxx\"" "TRACY_ENABLE")
target_link_libraries(instrmt-tracy-wrapper INTERFACE Tracy::TracyClient)
endif()
# Install rules
if(NOT CMAKE_SKIP_INSTALL_RULES)
include(cmake/install-rules.cmake)
endif()
# Tests
include(CTest)
if(BUILD_TESTING)
add_subdirectory(test)
endif()
# Benchmarks
option(BUILD_BENCHMARKS "" ON)
if (BUILD_BENCHMARKS)
add_subdirectory(benchmarks)
endif()