1
1
cmake_minimum_required (VERSION 3.13)
2
2
3
- project (rlbox-cpp17
3
+ project (rlbox-sandboxing-api
4
4
VERSION 0.1
5
- DESCRIPTION "RLBox safe sandboxing API in C++17" )
5
+ DESCRIPTION "RLBox safe sandboxing API in C++17"
6
+ HOMEPAGE_URL "https://github.com/PLSysSec/rlbox_sandboxing_api" )
6
7
7
8
set (CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR} /cmake" ${CMAKE_MODULE_PATH} )
8
9
@@ -95,12 +96,21 @@ if(NOT Catch2_FOUND)
95
96
list (APPEND CMAKE_MODULE_PATH "${catch2_SOURCE_DIR} /contrib" )
96
97
endif ()
97
98
99
+ file (GLOB_RECURSE
100
+ RLBOX_SOURCE_FILES
101
+ code/include /*.[chi]pp
102
+ code/include /*.[chi]xx
103
+ code/include /*.cc
104
+ code/include /*.hh
105
+ code/include /*.ii
106
+ code/include /*.[CHI])
107
+
98
108
# Documentation ###################
109
+
99
110
find_package (Doxygen QUIET )
100
111
101
112
if (DOXYGEN_FOUND)
102
- # Technique from https://devblogs.microsoft.com/cppblog/clear-functional-c
103
- # -documentation-with-sphinx-breathe-doxygen-cmake/
113
+ # Technique from https://devblogs.microsoft.com/cppblog/clear-functional-c-documentation-with-sphinx-breathe-doxygen-cmake/
104
114
set (DOXYGEN_PROJECT_NAME "RLBox" )
105
115
set (DOXYGEN_INPUT_DIR ${CMAKE_CURRENT_SOURCE_DIR} /code/include )
106
116
set (DOXYGEN_OUTPUT_DIR ${CMAKE_CURRENT_SOURCE_DIR} /docs/doxygen)
@@ -111,15 +121,6 @@ if(DOXYGEN_FOUND)
111
121
# Replace variables inside @@ with the current values
112
122
configure_file (${DOXYFILE_IN} ${DOXYFILE_OUT} @ONLY)
113
123
114
- file (GLOB_RECURSE
115
- RLBOX_SOURCE_FILES
116
- code/include /*.[chi]pp
117
- code/include /*.[chi]xx
118
- code/include /*.cc
119
- code/include /*.hh
120
- code/include /*.ii
121
- code/include /*.[CHI])
122
-
123
124
file (MAKE_DIRECTORY ${DOXYGEN_OUTPUT_DIR} )
124
125
add_custom_command (OUTPUT ${DOXYGEN_INDEX_FILE}
125
126
DEPENDS ${RLBOX_SOURCE_FILES}
@@ -158,17 +159,50 @@ endif()
158
159
159
160
# Targets ###################
160
161
162
+ include (GNUInstallDirs)
163
+
161
164
find_package (Threads REQUIRED)
162
- add_library (rlbox-cpp17-lib INTERFACE )
163
- target_include_directories (rlbox-cpp17-lib INTERFACE code/include )
164
- target_link_libraries (rlbox-cpp17-lib INTERFACE ${CMAKE_THREAD_LIBS_INIT} )
165
+ add_library (${PROJECT_NAME} INTERFACE )
166
+ target_include_directories (${PROJECT_NAME} INTERFACE
167
+ $<BUILD_INTERFACE:${${PROJECT_NAME} _SOURCE_DIR}/code/include >
168
+ $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR} >)
169
+ target_compile_features (${PROJECT_NAME} INTERFACE cxx_std_17)
170
+ target_link_libraries (${PROJECT_NAME} INTERFACE ${CMAKE_THREAD_LIBS_INIT} )
171
+ set_target_properties (${PROJECT_NAME} PROPERTIES PUBLIC_HEADER "${RLBOX_SOURCE_FILES} " )
172
+
173
+ # Install ###################
174
+
175
+ include (CMakePackageConfigHelpers)
176
+
177
+ write_basic_package_version_file("${PROJECT_NAME} ConfigVersion.cmake"
178
+ VERSION ${CMAKE_PROJECT_VERSION}
179
+ COMPATIBILITY SameMajorVersion)
180
+
181
+ set (DATAROOT_CONFIG_DESTINATION "${CMAKE_INSTALL_DATAROOTDIR} /cmake/${PROJECT_NAME} " )
182
+ configure_package_config_file(${PROJECT_SOURCE_DIR} /cmake/${PROJECT_NAME} Config.cmake.in
183
+ ${PROJECT_BINARY_DIR} /${PROJECT_NAME} Config.cmake
184
+ INSTALL_DESTINATION ${DATAROOT_CONFIG_DESTINATION}
185
+ PATH_VARS CMAKE_INSTALL_INCLUDEDIR)
186
+ install (TARGETS ${PROJECT_NAME}
187
+ EXPORT ${PROJECT_NAME} -targets
188
+ PUBLIC_HEADER DESTINATION "${CMAKE_INSTALL_INCLUDEDIR} /rlbox"
189
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
190
+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
191
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} )
192
+ install (EXPORT ${PROJECT_NAME} -targets
193
+ FILE ${PROJECT_NAME} Targets.cmake
194
+ DESTINATION ${DATAROOT_CONFIG_DESTINATION} )
195
+ install (FILES "${PROJECT_BINARY_DIR} /${PROJECT_NAME} Config.cmake"
196
+ "${PROJECT_BINARY_DIR} /${PROJECT_NAME} ConfigVersion.cmake"
197
+ DESTINATION ${DATAROOT_CONFIG_DESTINATION} )
165
198
166
199
# Tests ###################
167
200
168
201
include (CTest)
169
202
include (Catch)
170
203
171
204
# Test rlbox features
205
+
172
206
add_executable (test_rlbox
173
207
code/tests/test_main.cpp
174
208
code/tests/rlbox/test_app_pointers.cpp
@@ -193,7 +227,7 @@ add_executable(test_rlbox
193
227
194
228
target_include_directories (test_rlbox PRIVATE code/tests/rlbox)
195
229
196
- target_link_libraries (test_rlbox Catch2::Catch2 rlbox-cpp17-lib )
230
+ target_link_libraries (test_rlbox Catch2::Catch2 ${PROJECT_NAME} )
197
231
198
232
catch_discover_tests(test_rlbox)
199
233
@@ -205,7 +239,7 @@ add_executable(test_rlbox_transition_timers
205
239
206
240
target_include_directories (test_rlbox_transition_timers PRIVATE code/tests/rlbox)
207
241
208
- target_link_libraries (test_rlbox_transition_timers Catch2::Catch2 rlbox-cpp17-lib )
242
+ target_link_libraries (test_rlbox_transition_timers Catch2::Catch2 ${PROJECT_NAME} )
209
243
210
244
catch_discover_tests(test_rlbox_transition_timers)
211
245
@@ -217,11 +251,12 @@ add_executable(test_rlbox_transition_customization
217
251
218
252
target_include_directories (test_rlbox_transition_customization PRIVATE code/tests/rlbox)
219
253
220
- target_link_libraries (test_rlbox_transition_customization Catch2::Catch2 rlbox-cpp17-lib )
254
+ target_link_libraries (test_rlbox_transition_customization Catch2::Catch2 ${PROJECT_NAME} )
221
255
222
256
catch_discover_tests(test_rlbox_transition_customization)
223
257
224
258
# Test rlbox glue
259
+
225
260
add_library (rlbox_glue_lib_static STATIC code/tests/rlbox_glue/lib/libtest.c)
226
261
target_include_directories (rlbox_glue_lib_static
227
262
PUBLIC code/tests/rlbox_glue/lib)
@@ -237,7 +272,7 @@ target_include_directories(test_rlbox_glue PUBLIC code/tests/rlbox_glue)
237
272
238
273
target_link_libraries (test_rlbox_glue
239
274
Catch2::Catch2
240
- rlbox-cpp17-lib
275
+ ${PROJECT_NAME}
241
276
rlbox_glue_lib_static)
242
277
243
278
catch_discover_tests(test_rlbox_glue)
@@ -249,7 +284,7 @@ target_include_directories(test_rlbox_glue_embedder_vars PUBLIC code/tests/rlbox
249
284
250
285
target_link_libraries (test_rlbox_glue_embedder_vars
251
286
Catch2::Catch2
252
- rlbox-cpp17-lib
287
+ ${PROJECT_NAME}
253
288
rlbox_glue_lib_static)
254
289
255
290
catch_discover_tests(test_rlbox_glue_embedder_vars)
@@ -263,15 +298,14 @@ target_compile_definitions(test_rlbox_glue_dylib PUBLIC GLUE_LIB_PATH="$<TARGET_
263
298
264
299
target_link_libraries (test_rlbox_glue_dylib
265
300
Catch2::Catch2
266
- rlbox-cpp17-lib
301
+ ${PROJECT_NAME}
267
302
${CMAKE_DL_LIBS} )
268
303
269
304
add_dependencies (test_rlbox_glue_dylib rlbox_glue_lib_shared)
270
305
271
306
catch_discover_tests(test_rlbox_glue_dylib)
272
307
273
-
274
- # Shortcuts ###################
308
+ # make check
275
309
276
310
add_custom_target (
277
311
check
0 commit comments