cmake_minimum_required(VERSION 3.13)
project(sanitizers VERSION 26.0.0)
set(CMAKE_SKIP_RPATH TRUE)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
get_filename_component(ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR} ABSOLUTE)
get_filename_component(THIRD_PARTY_DIR ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty ABSOLUTE)
get_filename_component(JSON_INC ${THIRD_PARTY_DIR}/json/include/ ABSOLUTE)
get_filename_component(SECUREC_INC_DIR ${THIRD_PARTY_DIR}/securec/include ABSOLUTE)
get_filename_component(SANITIZER_INC_DIR csrc/include ABSOLUTE)
get_filename_component(SANITIZER_THIRDPARTY_INCLUDE csrc/include/thirdparty ABSOLUTE)
get_filename_component(MSOPSCOMMON_INC ${CMAKE_CURRENT_SOURCE_DIR}/msopscommon/csrc/kernel_injection/include/ ABSOLUTE)
find_program(CCACHE_PROGRAM ccache)
if(CCACHE_PROGRAM)
message(STATUS "Using ccache: ${CCACHE_PROGRAM}")
set(CMAKE_C_COMPILER_LAUNCHER ${CCACHE_PROGRAM})
set(CMAKE_CXX_COMPILER_LAUNCHER ${CCACHE_PROGRAM})
else()
message(STATUS "ccache not found, using native compiler.")
endif()
if (${CMAKE_INSTALL_PREFIX} STREQUAL "/usr/local" OR ${CMAKE_INSTALL_PREFIX} STREQUAL "/usr" OR NOT DEFINED CMAKE_INSTALL_PREFIX)
set(CMAKE_INSTALL_PREFIX ${ROOT_DIR}/output CACHE STRING "install prefix" FORCE)
message(STATUS "No install prefix selected, default to ${CMAKE_INSTALL_PREFIX}")
endif()
option(BUILD_TESTS "build unit tests" OFF)
include(cmake/options.cmake)
include(cmake/module/securec.cmake)
add_subdirectory(csrc)
add_subdirectory(bin)
if (BUILD_TESTS)
message(STATUS "Enable UT test build")
enable_testing()
add_subdirectory(thirdparty)
add_subdirectory(test)
else()
include(cmake/module/llvm.cmake)
include(cmake/module/preparePackage.cmake)
endif()
option(BUILD_INJECTION "build function injection library" ON)
if(BUILD_INJECTION)
set(BUILD_TESTS off)
add_subdirectory(msopscommon EXCLUDE_FROM_ALL)
add_custom_command(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/tmp.cpp
COMMAND touch ${CMAKE_CURRENT_BINARY_DIR}/tmp.cpp
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
)
add_custom_target(injection_laucher ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/tmp.cpp)
add_dependencies(injection_laucher mssanitizer_injection kernel_launcher_bin)
install(TARGETS mssanitizer_injection kernel_launcher_bin
RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX}/bin
LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/lib64
)
endif()