woj-sandbox/CMakeLists.txt

43 lines
1.5 KiB
CMake
Raw Normal View History

2022-10-09 15:43:25 +08:00
cmake_minimum_required(VERSION 3.22)
2022-10-02 14:09:25 +08:00
project(woj_sandbox C)
set(CMAKE_C_STANDARD 23)
2022-10-04 14:30:11 +08:00
# Handle __FILE__ in logging
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fmacro-prefix-map=${CMAKE_SOURCE_DIR}=.")
2022-10-02 22:38:45 +08:00
# Source files
2022-10-09 00:06:07 +08:00
file(GLOB SRC_FILES
${PROJECT_SOURCE_DIR}/resource.c
${PROJECT_SOURCE_DIR}/sandbox.c
${PROJECT_SOURCE_DIR}/rules/*.c
${PROJECT_SOURCE_DIR}/utils/*.c)
2022-10-02 14:09:25 +08:00
set(VERSION_SCRIPT ${PROJECT_SOURCE_DIR}/version_script.txt)
2022-10-02 22:38:45 +08:00
# Include
2022-10-02 14:09:25 +08:00
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/libseccomp/include)
2022-10-02 22:38:45 +08:00
# Targets
2022-10-09 00:06:07 +08:00
add_library(woj_sandbox SHARED ${PROJECT_SOURCE_DIR}/library.c ${SRC_FILES})
add_executable(woj_launcher ${PROJECT_SOURCE_DIR}/launcher.c)
2023-12-27 23:15:50 +08:00
add_executable(woj_test ${PROJECT_SOURCE_DIR}/test.c)
2022-10-02 14:09:25 +08:00
2022-10-02 22:38:45 +08:00
# Link seccomp
2022-10-02 14:09:25 +08:00
target_link_libraries(woj_sandbox ${CMAKE_SOURCE_DIR}/libseccomp/src/.libs/libseccomp.a)
2022-10-09 00:06:07 +08:00
target_link_libraries(woj_launcher ${CMAKE_SOURCE_DIR}/libseccomp/src/.libs/libseccomp.a)
2022-10-02 14:09:25 +08:00
2022-10-02 22:38:45 +08:00
# Disable symbol export
2022-10-02 14:09:25 +08:00
set_target_properties(woj_sandbox PROPERTIES C_VISIBILITY_PRESET hidden)
2022-10-02 22:38:45 +08:00
set_property(TARGET woj_sandbox APPEND_STRING PROPERTY LINK_FLAGS " -Wl,--version-script=${VERSION_SCRIPT}")
2022-10-02 14:09:25 +08:00
set_target_properties(woj_sandbox PROPERTIES LINK_DEPENDS ${VERSION_SCRIPT})
2022-10-02 22:38:45 +08:00
# Optimization
include(CheckIPOSupported)
check_ipo_supported(RESULT ipo_result OUTPUT ipo_output)
if (ipo_result)
set_property(TARGET woj_sandbox PROPERTY INTERPROCEDURAL_OPTIMIZATION TRUE)
2022-10-09 00:06:07 +08:00
set_property(TARGET woj_launcher PROPERTY INTERPROCEDURAL_OPTIMIZATION TRUE)
2022-10-02 22:38:45 +08:00
else ()
message(WARNING "IPO is not supported: ${ipo_output}")
endif ()