cmake_minimum_required(VERSION 3.14.1)
project(AccData VERSION 1.0.0 LANGUAGES CXX C)
set(CMAKE_CXX_STANDARD 17)
set(PROJECT_SECUREC_DIR /usr/local/Ascend/driver)
set(PROJECT_3RDPARTY_SRC_DIR ${PROJECT_SOURCE_DIR}/3rdparty)
set(PROJECT_BUILD_PATH ${PROJECT_SOURCE_DIR}/build)
set(PROJECT_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/output)
set(PROJECT_3RDPARTY_BIN_DIR ${PROJECT_OUTPUT_PATH}/3rdparty)
set(ENV{3RDPARTY_BIN_DIR} ${PROJECT_3RDPARTY_BIN_DIR})
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/output/AccData/bin)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/output/AccData/lib)
if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE Release)
endif()
message(STATUS "CMAKE_BUILD_TYPE: ${CMAKE_BUILD_TYPE}")
option(ENABLE_TRACER "Enable tracer" OFF)
if(ENABLE_TRACER)
message("!!!!!tracer is enabled!!!!!")
add_definitions(-DENABLE_TRACER)
endif()
add_compile_options(-fPIC)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
set(CMAKE_SKIP_RPATH TRUE)
if (${CMAKE_BUILD_TYPE} MATCHES "Release")
add_compile_options($<$<COMPILE_LANGUAGE:C,CXX>:-s>)
add_compile_options($<$<COMPILE_LANGUAGE:C,CXX>:-fstack-protector-all>)
add_compile_options($<$<COMPILE_LANGUAGE:C,CXX>:-Wall>)
add_compile_options($<$<COMPILE_LANGUAGE:C,CXX>:-O3>)
add_compile_options($<$<COMPILE_LANGUAGE:C,CXX>:-D_FORTIFY_SOURCE=2>)
add_link_options($<$<COMPILE_LANGUAGE:C,CXX>:-Wl,-z,now,-z,relro,-z,noexecstack>)
add_link_options($<$<COMPILE_LANGUAGE:C,CXX>:-s>)
add_link_options($<$<COMPILE_LANGUAGE:C,CXX>:-O3>)
else ()
add_compile_options($<$<COMPILE_LANGUAGE:C,CXX>:-O0>)
add_compile_options($<$<COMPILE_LANGUAGE:C,CXX>:-g>)
add_compile_options($<$<COMPILE_LANGUAGE:C,CXX>:-fstack-protector-all>)
add_link_options($<$<COMPILE_LANGUAGE:C,CXX>:-O0>)
add_link_options($<$<COMPILE_LANGUAGE:C,CXX>:-g>)
add_link_options($<$<COMPILE_LANGUAGE:C,CXX>:-Wl,-z,now,-z,relro,-z,noexecstack>)
add_compile_definitions(ACCDATA_USE_BACKTRACE)
endif (${CMAKE_BUILD_TYPE} MATCHES "Release")
string(REPLACE ";" " " CMAKE_CXX_FLAGS "${CXX_FLAGS}")
file(GLOB_RECURSE SECUREC_HEADERS
${PROJECT_SECUREC_DIR}/securec.h
)
if(NOT SECUREC_HEADERS)
message(FATAL_ERROR "securec.h not found!")
endif()
list(GET SECUREC_HEADERS 0 SECUREC_HEADER)
get_filename_component(SECUREC_INCLUDE_DIR ${SECUREC_HEADER} DIRECTORY)
add_subdirectory(3rdparty)
include_directories(
${PROJECT_3RDPARTY_BIN_DIR}/pybind11/include/
${SECUREC_INCLUDE_DIR}
)
add_subdirectory(src)