-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
112 lines (94 loc) · 2.32 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
99
100
101
102
103
104
105
106
107
108
109
110
111
112
cmake_minimum_required(VERSION 3.27)
file(READ ".versioning/current" current_version)
string(STRIP "${current_version}" current_version)
project(
shadow-cast
LANGUAGES CXX
VERSION ${current_version}
)
if (CMAKE_BUILD_TYPE STREQUAL "")
message(STATUS "Defaulting CMAKE_BUILD_TYPE to Release")
set(CMAKE_BUILD_TYPE "Release")
endif()
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
set(CMAKE_CXX_STANDARD 20)
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}/cmake)
include(CPPCheck)
include(GNUInstallDirs)
include(CheckIPOSupported)
check_ipo_supported(
RESULT SHADOW_CAST_IPO_SUPPORTED
OUTPUT SHADOW_CAST_IPO_SUPORTED_OUTPUT
LANGUAGES CXX
)
if (SHADOW_CAST_IPO_SUPPORTED)
message(STATUS "IPO supported. Enabling")
set(CMAKE_INTERPROCEDURAL_OPTIMIZATION ON)
else ()
message(STATUS "IPO not supported: ${SHADOW_CAST_IPO_SUPORTED_OUTPUT}")
endif ()
string(TOLOWER ${CMAKE_CXX_BYTE_ORDER} SHADOW_CAST_BYTE_ORDER)
add_compile_options(-Wall -Werror -Wextra -Wshadow)
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
add_compile_options(-O0)
endif()
find_package(Pipewire REQUIRED)
find_package(
FFMpeg REQUIRED
COMPONENTS
avcodec
avdevice
avfilter
avformat
avutil
swresample
swscale
)
find_package(X11 REQUIRED)
find_package(DRM REQUIRED)
option(
SHADOW_CAST_ENABLE_TESTS
"Enable tests for ${PROJECT_NAME}"
OFF
)
option(
SHADOW_CAST_ENABLE_ASAN
"Enable ASan for ${PROJECT_NAME}"
OFF
)
option(
SHADOW_CAST_ENABLE_TSAN
"Enable TSan for ${PROJECT_NAME}"
OFF
)
option(
SHADOW_CAST_ENABLE_HISTOGRAMS
"Enable audio and video histograms for ${PROJECT_NAME}"
OFF
)
if (SHADOW_CAST_ENABLE_ASAN)
add_compile_options(-fsanitize=address)
add_link_options(-fsanitize=address)
endif()
if (SHADOW_CAST_ENABLE_TSAN)
add_compile_options(-fsanitize=thread)
add_link_options(-fsanitize=thread)
endif()
add_subdirectory(src)
if(SHADOW_CAST_ENABLE_TESTS)
enable_testing()
add_subdirectory(tests)
endif()
configure_file(
tools/install-helper.sh.in
install-helper.sh
FILE_PERMISSIONS
OWNER_READ OWNER_WRITE OWNER_EXECUTE
GROUP_READ GROUP_WRITE
WORLD_READ WORLD_WRITE
@ONLY
)
install(
TARGETS shadow-cast shadow-cast-kms
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)