cmake_minimum_required(VERSION 3.19.3)
project(atb_probe)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
set(CMAKE_SKIP_RPATH TRUE)
set(AIT_LOGGER_PATH ${CMAKE_CURRENT_SOURCE_DIR}/ait_logger)
set(UTILS_PATH ${CMAKE_CURRENT_SOURCE_DIR}/utils)
find_package(nlohmannjson MODULE REQUIRED)
find_package(securec MODULE REQUIRED)
if (DEFINED ENV{ATB_PROBE_ABI})
if ($ENV{ATB_PROBE_ABI} STREQUAL "0")
set(LIB_NAME atb_probe_abi0)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_GLIBCXX_USE_CXX11_ABI=0")
message("ABI is set to 0. Compiling with cxx11_abi=0.")
else()
set(LIB_NAME atb_probe_abi1)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_GLIBCXX_USE_CXX11_ABI=1")
message("ABI is not 0. Compiling with cxx11_abi=1.")
endif()
else()
set(LIB_NAME atb_probe_abi0)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_GLIBCXX_USE_CXX11_ABI=0")
message("ABI is not set. Compiling with cxx11_abi=0.")
endif()
include_directories(${AIT_LOGGER_PATH})
include_directories(${UTILS_PATH})
file(GLOB_RECURSE LIB_SRC ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp)
file(GLOB_RECURSE SECUREC_SRC ${SECUREC_DIR}/src/*.c)
add_library(${LIB_NAME} SHARED ${LIB_SRC} ${SECUREC_SRC})
target_compile_options(${LIB_NAME} PRIVATE
-fPIC
-pie
-fstack-protector-all
-O2
-D_FORTIFY_SOURCE=2
-ftrapv
)
add_compile_options(-fstack-check)
target_link_options(${LIB_NAME} PRIVATE
-Wl,-z,relro,-z,now,-z,noexecstack
-s
)
target_link_libraries(${LIB_NAME} PRIVATE
libstdc++fs.a
-lpthread
)
set(ATB_PROBE_LIB_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../python/msprobe/lib/)
install(TARGETS ${LIB_NAME} LIBRARY DESTINATION ${ATB_PROBE_LIB_DIR})