cmake_minimum_required(VERSION 3.15)
project(vcann-runtime)
set(CMAKE_SKIP_RPATH TRUE)
message(STATUS "CMakeList start ${CMAKE_CURRENT_SOURCE_DIR}")
file(GLOB SRC_LIST
src/*.c
src/ascend/*.c
src/tools/*.c
src/utils/*.c
)
set(SECURE_COMPILE_OPTIONS
-O2
-Wall
-Wextra
-Wformat-nonliteral
-Wformat-security
-Wformat-y2k
-Wfloat-equal
-std=gnu11
-fPIC
-fstack-protector-strong
-fvisibility=hidden
-fno-common
)
include(${CMAKE_CURRENT_SOURCE_DIR}/scripts/cmake/securec.cmake)
set(INCLUDE_DIRS
$ENV{ASCEND_HOME_PATH}/include
$ENV{ASCEND_HOME_PATH}/pkg_inc/runtime
$ENV{ASCEND_HOME_PATH}/pkg_inc/runtime/runtime
$ENV{ASCEND_HOME_PATH}/pkg_inc/runtime/runtime/rts
$ENV{ASCEND_HOME_PATH}/pkg_inc/profiling
$ENV{ASCEND_HOME_PATH}/pkg_inc/
$ENV{ASCEND_HOME_PATH}/pkg_inc/msprof
$ENV{ENPU_ASCEND_DRIVER_PATH}/driver/include
$ENV{ASCEND_HOME_PATH}/include/experiment/runtime
$ENV{ASCEND_HOME_PATH}/include/experiment/msprof
)
set(LINK_DIRS
$ENV{ASCEND_HOME_PATH}/runtime
$ENV{ASCEND_HOME_PATH}/lib64
$ENV{ENPU_ASCEND_DRIVER_PATH}/driver/lib64/driver
)
set(LINK_LIBS dcmi)
message(STATUS "CMakeList build start")
add_library(vruntime SHARED src/ascend/hook.c ${SRC_LIST})
add_custom_command(
TARGET vruntime POST_BUILD
COMMAND chmod 400 $<TARGET_FILE:vruntime>
)
target_link_options(vruntime PRIVATE
-Wl,-z,relro,-z,now,-z,noexecstack
-s
)
target_include_directories(vruntime PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src/include)
target_include_directories(vruntime SYSTEM PRIVATE ${INCLUDE_DIRS})
target_link_directories(vruntime PRIVATE ${LINK_DIRS})
target_link_libraries(vruntime PRIVATE ${LINK_LIBS} c_sec ascendcl)
target_compile_options(vruntime PRIVATE ${SECURE_COMPILE_OPTIONS})
target_compile_definitions(vruntime PRIVATE _GLIBCXX_USE_CXX11_ABI=0)
add_executable(enpu-monitor src/tools/monitor.c ${SRC_LIST})
add_custom_command(
TARGET enpu-monitor POST_BUILD
COMMAND chmod 500 $<TARGET_FILE:enpu-monitor>
)
target_link_options(enpu-monitor PRIVATE
-Wl,-z,relro,-z,now,-z,noexecstack
-s
)
target_include_directories(enpu-monitor PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src/include)
target_include_directories(enpu-monitor SYSTEM PRIVATE ${INCLUDE_DIRS})
target_link_directories(enpu-monitor PRIVATE ${LINK_DIRS})
target_link_libraries(enpu-monitor PRIVATE ${LINK_LIBS} c_sec ascendcl pthread dl rt)
target_compile_options(enpu-monitor PRIVATE ${SECURE_COMPILE_OPTIONS})
target_compile_definitions(enpu-monitor PRIVATE _GLIBCXX_USE_CXX11_ABI=0)
option(BUILD_TESTS "Build tests" OFF)
option(ENABLE_COVERAGE "Enable coverage reporting" OFF)
if(BUILD_TESTS)
enable_testing()
add_subdirectory(test)
endif()
message(STATUS "CMakeList end")