Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
stenzek
GitHub Repository: stenzek/duckstation
Path: blob/master/dep/biscuit/src/CMakeLists.txt
4253 views
1
# Main library
2
3
add_library(biscuit
4
# Source files
5
assembler.cpp
6
assembler_crypto.cpp
7
assembler_vector.cpp
8
code_buffer.cpp
9
cpuinfo.cpp
10
11
# Headers
12
"${PROJECT_SOURCE_DIR}/include/biscuit/assembler.hpp"
13
"${PROJECT_SOURCE_DIR}/include/biscuit/assert.hpp"
14
"${PROJECT_SOURCE_DIR}/include/biscuit/code_buffer.hpp"
15
"${PROJECT_SOURCE_DIR}/include/biscuit/csr.hpp"
16
"${PROJECT_SOURCE_DIR}/include/biscuit/isa.hpp"
17
"${PROJECT_SOURCE_DIR}/include/biscuit/label.hpp"
18
"${PROJECT_SOURCE_DIR}/include/biscuit/registers.hpp"
19
"${PROJECT_SOURCE_DIR}/include/biscuit/vector.hpp"
20
"${PROJECT_SOURCE_DIR}/include/biscuit/cpuinfo.hpp"
21
)
22
add_library(biscuit::biscuit ALIAS biscuit)
23
24
target_include_directories(biscuit
25
PUBLIC
26
$<INSTALL_INTERFACE:include>
27
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>
28
29
PRIVATE
30
${CMAKE_CURRENT_SOURCE_DIR}
31
)
32
33
target_compile_features(biscuit
34
PRIVATE
35
cxx_std_20
36
)
37
38
if (MSVC)
39
target_compile_options(biscuit
40
PRIVATE
41
/MP
42
/Zi
43
/Zo
44
/permissive-
45
/EHsc
46
/utf-8
47
/volatile:iso
48
/Zc:externConstexpr
49
/Zc:inline
50
/Zc:throwingNew
51
52
# Warnings
53
/W4
54
/we4062 # enumerator 'identifier' in a switch of enum 'enumeration' is not handled
55
/we4101 # 'identifier': unreferenced local variable
56
/we4265 # 'class': class has virtual functions, but destructor is not virtual
57
/we4287 # 'operator' : unsigned/negative constant mismatch
58
/we4365 # 'action' : conversion from 'type_1' to 'type_2', signed/unsigned mismatch
59
/we4388 # signed/unsigned mismatch
60
/we4547 # 'operator' : operator before comma has no effect; expected operator with side-effect
61
/we4549 # 'operator1': operator before comma has no effect; did you intend 'operator2'?
62
/we4555 # Expression has no effect; expected expression with side-effect
63
/we4715 # 'function': not all control paths return a value
64
/we4834 # Discarding return value of function with 'nodiscard' attribute
65
/we5038 # data member 'member1' will be initialized after data member 'member2'
66
)
67
elseif (("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang") OR ("${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU"))
68
target_compile_options(biscuit
69
PRIVATE
70
-Wall
71
-Wextra
72
-Wconversion
73
-Wsign-conversion
74
75
-Werror=array-bounds
76
-Werror=cast-qual
77
-Werror=ignored-qualifiers
78
-Werror=implicit-fallthrough
79
-Werror=sign-compare
80
-Werror=reorder
81
-Werror=uninitialized
82
-Werror=unused-function
83
-Werror=unused-result
84
-Werror=unused-variable
85
)
86
endif()
87
88
if (BISCUIT_CODE_BUFFER_MMAP)
89
target_compile_definitions(biscuit
90
PRIVATE
91
-DBISCUIT_CODE_BUFFER_MMAP
92
)
93
endif()
94
95
# Install target
96
97
include(GNUInstallDirs)
98
set(BISCUIT_INSTALL_CONFIGDIR "${CMAKE_INSTALL_LIBDIR}/cmake/biscuit")
99
100
# Set install target and relevant includes.
101
install(TARGETS biscuit
102
EXPORT biscuit-targets
103
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
104
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
105
)
106
install(
107
DIRECTORY "${PROJECT_SOURCE_DIR}/include/"
108
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
109
)
110
111
# Export targets to a script
112
install(EXPORT biscuit-targets
113
FILE
114
biscuit-targets.cmake
115
NAMESPACE
116
biscuit::
117
DESTINATION
118
"${BISCUIT_INSTALL_CONFIGDIR}"
119
)
120
121
# Now create the config version script
122
include(CMakePackageConfigHelpers)
123
write_basic_package_version_file(
124
"${CMAKE_CURRENT_BINARY_DIR}/biscuit-config-version.cmake"
125
VERSION
126
${PROJECT_VERSION}
127
COMPATIBILITY
128
SameMajorVersion
129
)
130
131
configure_package_config_file(
132
"${PROJECT_SOURCE_DIR}/cmake/biscuit-config.cmake.in"
133
"${CMAKE_CURRENT_BINARY_DIR}/biscuit-config.cmake"
134
135
INSTALL_DESTINATION "${BISCUIT_INSTALL_CONFIGDIR}"
136
)
137
138
# Now install the config and version files.
139
install(FILES
140
"${CMAKE_CURRENT_BINARY_DIR}/biscuit-config.cmake"
141
"${CMAKE_CURRENT_BINARY_DIR}/biscuit-config-version.cmake"
142
143
DESTINATION "${BISCUIT_INSTALL_CONFIGDIR}"
144
)
145
146
# Export library from the build tree.
147
export(EXPORT biscuit-targets
148
FILE
149
"${CMAKE_CURRENT_BINARY_DIR}/biscuit-targets.cmake"
150
NAMESPACE
151
biscuit::
152
)
153
export(PACKAGE biscuit)
154
155