cmake_minimum_required(VERSION 3.16)
if(UT_TEST_ALL OR OP_GRAPH_UT)
gen_es_math_lib_ready()
if(TARGET ${OP_GRAPH_MODULE_NAME}_cases_obj)
add_dependencies(${OP_GRAPH_MODULE_NAME}_cases_obj json build_es_math)
target_link_libraries(${OP_GRAPH_MODULE_NAME}_cases_obj PRIVATE es_math)
endif()
set(OP_GRAPH_UT_EXE ${PKG_NAME}_op_graph_ut)
add_executable(${OP_GRAPH_UT_EXE}
test_op_graph_main.cpp
)
target_include_directories(${OP_GRAPH_UT_EXE} PRIVATE
${OP_PROTO_INCLUDE}
${OPBASE_INC_DIRS}
${PROJECT_SOURCE_DIR}/common/inc
)
set_target_properties(${OP_GRAPH_UT_EXE} PROPERTIES
SKIP_BUILD_RPATH TRUE
)
target_compile_definitions(${OP_GRAPH_UT_EXE} PRIVATE LOG_CPP)
target_compile_options(${OP_GRAPH_UT_EXE} PUBLIC -fPIE -fno-access-control)
add_dependencies(${OP_GRAPH_UT_EXE} json build_es_math opbase_util_objs opbase_infer_objs)
target_link_directories(${OP_GRAPH_UT_EXE} PRIVATE ${ASCEND_DIR}/${SYSTEM_PREFIX}/lib64)
target_link_libraries(${OP_GRAPH_UT_EXE} PRIVATE
es_math
$<BUILD_INTERFACE:intf_llt_pub_asan_cxx17>
-Wl,--whole-archive
$<$<TARGET_EXISTS:${OP_GRAPH_MODULE_NAME}_static_lib>:${OP_GRAPH_MODULE_NAME}_static_lib>
-Wl,--no-whole-archive
-Wl,--no-as-needed
metadef
-Wl,--as-needed
error_manager
exe_graph
graph_base
GTest::gtest
graph
register
platform
unified_dlog
opp_registry
c_sec
ge_common
dl
)
if(ENABLE_UT_EXEC)
if(NOT "${GTEST_FILTER}" STREQUAL "")
set(GTEST_FILTER_ARG "--gtest_filter=${GTEST_FILTER}")
else()
set(GTEST_FILTER_ARG "")
endif()
if(${ENABLE_ASAN} STREQUAL "TRUE")
execute_process(
COMMAND ${CMAKE_C_COMPILER} -print-file-name=libasan.so
OUTPUT_VARIABLE LIBASAN_PATH
OUTPUT_STRIP_TRAILING_WHITESPACE
RESULT_VARIABLE result
)
if(NOT result EQUAL 0)
message(FATAL_ERROR "compiler not support asan, please disable asan")
endif()
execute_process(
COMMAND ${CMAKE_C_COMPILER} -print-file-name=libstdc++.so
OUTPUT_VARIABLE LIBSTDC_PATH
OUTPUT_STRIP_TRAILING_WHITESPACE
RESULT_VARIABLE stdc_result
)
if(NOT stdc_result EQUAL 0)
message(FATAL_ERROR "not find libstdc++.so, please confirm.")
endif()
add_custom_command(
TARGET ${OP_GRAPH_UT_EXE} POST_BUILD
COMMAND export LD_LIBRARY_PATH=${CMAKE_BINARY_DIR}/es_packages_math/lib64:${CMAKE_BINARY_DIR}/es_packages/lib64:${LIB_OP_TILING_SO_PATH}:$ENV{LD_LIBRARY_PATH} && BUILD_PATH=${BUILD_PATH}
LD_PRELOAD=${LIBASAN_PATH}:${LIBSTDC_PATH} ASAN_OPTIONS=detect_leaks=0 && ./${OP_GRAPH_UT_EXE} ${GTEST_FILTER_ARG}
COMMENT "Run ops op_graph utest with asan"
)
else()
add_custom_command(
TARGET ${OP_GRAPH_UT_EXE} POST_BUILD
COMMAND export LD_LIBRARY_PATH=${CMAKE_BINARY_DIR}/es_packages_math/lib64:${CMAKE_BINARY_DIR}/es_packages/lib64:${LIB_OP_TILING_SO_PATH}:$ENV{LD_LIBRARY_PATH}:${ASCEND_DIR}/${SYSTEM_PREFIX}/lib64 && ./${OP_GRAPH_UT_EXE} ${GTEST_FILTER_ARG}
COMMENT "Run ops op_graph utest"
)
endif()
endif()
if(${ENABLE_VALGRIND} STREQUAL "TRUE")
if(NOT LIB_OP_TILING_SO_PATH)
message(FATAL_ERROR "Can not found optiling so!")
return()
endif()
add_custom_command(
TARGET ${OP_GRAPH_UT_EXE} POST_BUILD
COMMAND export LD_LIBRARY_PATH=${LIB_OP_TILING_SO_PATH}:$ENV{LD_LIBRARY_PATH} &&
valgrind --undef-value-errors=no --leak-check=full ./${OP_GRAPH_UT_EXE} ${GTEST_FILTER_ARG}
COMMENT "Run ops op_graph utest by valgrind"
)
endif()
endif()