NKDBsec/modules/common/CMakeLists.txt

67 lines
2.4 KiB
CMake

cmake_minimum_required(VERSION 2.8)
project(common)
# External packages
if(UNIX)
find_package(LibDL)
find_package(LibRT)
endif()
# Link libraries
if(UNIX)
list(APPEND LINKLIBS ${LIBDL_LIBRARIES})
list(APPEND LINKLIBS ${LIBRT_LIBRARIES})
endif()
set(__SO_VERSION__ ${SO_VERSION})
configure_file(
"${CMAKE_CURRENT_SOURCE_DIR}/src/version.cpp.in"
"${CMAKE_CURRENT_SOURCE_DIR}/src/version.cpp"
)
#add_definitions(-DCOMMON_COMPILED_LIB)
SET(ADD_LINK_LIB_FLAGS "-Wl,--rpath=$ORIGIN../:$ORIGIN")
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${ADD_LINK_LIB_FLAGS}")
IF(USE_GMTASSL)
# GMSSL
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/3rd/gmssl/include)
link_directories(${CMAKE_CURRENT_SOURCE_DIR}/3rd/gmssl/lib)
link_libraries(tacrypto tassl)
ELSE()
# OpenSSL
find_package(OpenSSL REQUIRED)
include_directories(${OPENSSL_INCLUDE_DIR})
link_libraries(${OPENSSL_LIBRARIES})
ENDIF()
# Library
file(GLOB_RECURSE LIB_HEADER_FILES "include/*.h")
file(GLOB_RECURSE LIB_SOURCE_FILES "src/*.cpp")
set_source_files_properties(${LIB_SOURCE_FILES} PROPERTIES COMPILE_FLAGS "${PEDANTIC_COMPILE_FLAGS}")
add_library(common SHARED ${LIB_HEADER_FILES} ${LIB_SOURCE_FILES})
target_include_directories(common PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include" PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include/utils")
add_dependencies (common spdlog)
target_link_libraries(common ${LINKLIBS} common spdlog)
set_target_properties(common PROPERTIES FOLDER "common"
APPEND_STRING PROPERTY LINK_FLAGS " ${ADD_LINK_LIB_FLAGS}")
list(APPEND LINKLIBS common)
if(COMMAND target_precompile_headers AND ROSETTA_ENABLE_PCH)
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/cmake/pch.h.in ${PROJECT_BINARY_DIR}/common_pch.h @ONLY)
target_precompile_headers(common PRIVATE ${PROJECT_BINARY_DIR}/common_pch.h)
message(STATUS "set PCH with common path: ${PROJECT_BINARY_DIR}/common_pch.h")
endif()
# Tests
IF(ROSETTA_COMPILE_TESTS)
file(GLOB TESTS_HEADER_FILES "tests/*.h")
file(GLOB TESTS_SOURCE_FILES "tests/*.cpp")
set_source_files_properties(${TESTS_SOURCE_FILES} PROPERTIES COMPILE_FLAGS "${PEDANTIC_COMPILE_FLAGS}")
add_executable(common-tests ${TESTS_HEADER_FILES} ${TESTS_SOURCE_FILES} ${Catch2})
target_include_directories(common-tests PRIVATE ${Catch2})
target_link_libraries(common-tests ${LINKLIBS})
set_target_properties(common-tests PROPERTIES FOLDER tests)
ENDIF()