find_package(Threads REQUIRED)
find_package(SQLite3 REQUIRED)
find_package(Protobuf REQUIRED
PATHS
${THIRD_PARTY_DIR}/protobuf/build
NO_DEFAULT_PATH
)
set(CMAKE_SKIP_RPATH TRUE)
file(GLOB_RECURSE PROFILER_SRC "${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp")
add_library(ms_service_profiler SHARED
${PROFILER_SRC}
)
target_include_directories(ms_service_profiler PUBLIC
${CMAKE_CURRENT_SOURCE_DIR}/include
${THIRD_PARTY_DIR}/json/include
${THIRD_PARTY_DIR}/ascend/include
${SQLite3_INCLUDE_DIR}
)
target_compile_options(ms_service_profiler PRIVATE
-fvisibility-inlines-hidden
-fPIC
-fstack-protector-all
-fno-strict-aliasing
-fno-common
-Wfloat-equal
-Wextra
-D_FORTIFY_SOURCE=2
-DENABLE_PROF
-O2
)
if(ms_service_profiler_BUILD_TESTS)
target_compile_options(ms_service_profiler PRIVATE
-fvisibility=default
)
else()
target_compile_options(ms_service_profiler PRIVATE
-fvisibility=hidden
)
endif()
target_link_libraries(ms_service_profiler PUBLIC
ascendcl
msprofiler
ms_tools_ext
mspti
sqlite3
boundscheck
opentelemetry
protobuf::libprotobuf
dl
pthread
rt
)
if (DEFINED ENV{ASCEND_TOOLKIT_HOME})
set(TOOLKIT_BASE_PATH $ENV{ASCEND_TOOLKIT_HOME})
message(STATUS ${TOOLKIT_BASE_PATH})
target_include_directories(ms_service_profiler PRIVATE
${TOOLKIT_BASE_PATH}/include
${TOOLKIT_BASE_PATH}/aarch64-linux/include
${TOOLKIT_BASE_PATH}/x86_64-linux/include
${TOOLKIT_BASE_PATH}/tools/mstx/include
)
target_link_directories(ms_service_profiler PRIVATE
${TOOLKIT_BASE_PATH}/lib64
${TOOLKIT_BASE_PATH}/aarch64-linux/devlib
${TOOLKIT_BASE_PATH}/x86_64-linux/devlib
)
endif ()
target_link_options(ms_service_profiler PRIVATE
-Wl,-z,relro,-z,now,-z,noexecstack
-Wl,-Bsymbolic
-Wl,--exclude-libs=ALL
$<$<NOT:$<STREQUAL:${CMAKE_BUILD_TYPE},Debug>>:-s>
)
install(TARGETS ms_service_profiler
LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/ms_service_profiler
)