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)
|
|
|
|
|
2024-01-01 17:31:21 +08:00
|
|
|
# Check IPO
|
|
|
|
include(CheckIPOSupported)
|
|
|
|
check_ipo_supported(RESULT ipo_result OUTPUT ipo_output)
|
|
|
|
|
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
|
2024-01-01 21:31:54 +08:00
|
|
|
${PROJECT_SOURCE_DIR}/user.c
|
2022-10-09 00:06:07 +08:00
|
|
|
${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
|
2023-12-27 23:40:11 +08:00
|
|
|
add_library(woj_sandbox SHARED ${PROJECT_SOURCE_DIR}/library.c ${PROJECT_SOURCE_DIR}/inject.c ${SRC_FILES})
|
2024-01-01 17:31:21 +08:00
|
|
|
add_executable(woj_launcher ${PROJECT_SOURCE_DIR}/library.c ${PROJECT_SOURCE_DIR}/launcher.c ${SRC_FILES})
|
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
|
|
|
|
2024-01-01 17:31:21 +08:00
|
|
|
set(TARGETS woj_sandbox woj_launcher)
|
2022-10-02 14:09:25 +08:00
|
|
|
|
2024-01-01 17:31:21 +08:00
|
|
|
foreach (TARGET ${TARGETS})
|
|
|
|
# Link seccomp
|
|
|
|
target_link_libraries(${TARGET} ${CMAKE_SOURCE_DIR}/libseccomp/src/.libs/libseccomp.a)
|
2022-10-02 22:38:45 +08:00
|
|
|
|
2024-01-01 17:31:21 +08:00
|
|
|
# Disable symbol export
|
|
|
|
set_target_properties(${TARGET} PROPERTIES C_VISIBILITY_PRESET hidden)
|
|
|
|
set_property(TARGET ${TARGET} APPEND_STRING PROPERTY LINK_FLAGS " -Wl,--version-script=${VERSION_SCRIPT}")
|
|
|
|
set_target_properties(${TARGET} PROPERTIES LINK_DEPENDS ${VERSION_SCRIPT})
|
2023-12-28 00:58:15 +08:00
|
|
|
|
2024-01-01 17:31:21 +08:00
|
|
|
# Optimization
|
|
|
|
if (ipo_result)
|
|
|
|
set_property(TARGET ${TARGET} PROPERTY INTERPROCEDURAL_OPTIMIZATION TRUE)
|
|
|
|
endif ()
|
|
|
|
endforeach (TARGET)
|