project(nnopbase_st)
cmake_minimum_required(VERSION 3.14.1)
set(CMAKE_CXX_STANDARD 17)
add_compile_definitions(__CCE_KT_TEST__=1)
add_compile_definitions(NNOPBASE_ST)
message(STATUS "nnopbase_st_test compile start")
if(DEFINED ENV{ASCEND_HOME_PATH})
set(ASCEND_PATH $ENV{ASCEND_HOME_PATH})
else()
if ("$ENV{USER}" STREQUAL "root")
set(ASCEND_PATH /usr/local/Ascend/cann)
else ()
set(ASCEND_PATH $ENV{HOME}/Ascend/cann)
endif ()
endif()
message(STATUS "Search libs under install path ${ASCEND_PATH}")
set(ASCEND_INCLUDE_DIR ${ASCEND_PATH}/include)
set(ASCEND_PKG_INC_DIR ${ASCEND_PATH}/pkg_inc)
set(NNOPBASE_ST_DIR ${CMAKE_CURRENT_SOURCE_DIR})
set(OPS_BASE_PATH ${NNOPBASE_ST_DIR}/../../..)
get_filename_component(OPS_BASE_PATH "${OPS_BASE_PATH}" ABSOLUTE)
message(STATUS "NNOPBASE_ST_DIR: ${NNOPBASE_ST_DIR}")
message(STATUS "OPS_BASE_PATH: ${OPS_BASE_PATH}")
file(GLOB utils_proto_src_files ${OPS_BASE_PATH}/src/nnopbase/aicpu/proto/*.proto)
protobuf_generate(aicpu PROTO_SRCS PROTO_HDRS ${utils_proto_src_files})
file(GLOB cpu_proto_src_files ${OPS_BASE_PATH}/src/nnopbase/aicpu/cpu_proto/*.proto)
protobuf_generate(aicpu_proto CPU_PROTO_SRCS CPU_PROTO_HDRS ${cpu_proto_src_files})
message(STATUS "generate aicpu successfully")
set(NNOPBASE_STEST_HEADERS
${OPS_BASE_PATH}/src/nnopbase/common/inc/
${OPS_BASE_PATH}/src/nnopbase/common/op_info_record/
${OPS_BASE_PATH}/src/nnopbase/composite_op/
${OPS_BASE_PATH}/src/nnopbase/composite_op/aclnn_engine/
${OPS_BASE_PATH}/src/nnopbase/individual_op/
${OPS_BASE_PATH}/src/nnopbase/individual_op/api
${OPS_BASE_PATH}/src/nnopbase/individual_op/executor
${OPS_BASE_PATH}/src/nnopbase/individual_op/utils
${OPS_BASE_PATH}/include/
${OPS_BASE_PATH}/include/nnopbase/
${OPS_BASE_PATH}/include/nnopbase/opdev/
${OPS_BASE_PATH}/tests/nnopbase/common/
${CANN_3RD_LIB_PATH}/gtest/include/
${CANN_3RD_LIB_PATH}/json/include/
${CANN_3RD_LIB_PATH}/mockcpp/include/
${CMAKE_BINARY_DIR}/mockcpp/include/
${ASCEND_INCLUDE_DIR}/
${ASCEND_INCLUDE_DIR}/experiment/metadef/
${ASCEND_PKG_INC_DIR}/
${ASCEND_PKG_INC_DIR}/dump/
${ASCEND_PKG_INC_DIR}/profiling/
${ASCEND_PKG_INC_DIR}/runtime/
${ASCEND_PKG_INC_DIR}/runtime/runtime/
${CMAKE_BINARY_DIR}/proto/aicpu/
${CMAKE_BINARY_DIR}/proto/aicpu_proto/
${CMAKE_BINARY_DIR}/protobuf_static/include/
)
file(GLOB_RECURSE NNOPBASE_SRC_FILES CONFIGURE_DEPENDS
${OPS_BASE_PATH}/src/nnopbase/composite_op/*.cpp
${OPS_BASE_PATH}/src/nnopbase/common/*.cpp
${OPS_BASE_PATH}/src/nnopbase/stub/*.cpp
${OPS_BASE_PATH}/src/nnopbase/tls_guardian/*.cpp
${OPS_BASE_PATH}/src/nnopbase/aicpu/task_handler/*.cpp
${OPS_BASE_PATH}/src/nnopbase/op_common/*.cpp
${OPS_BASE_PATH}/src/nnopbase/individual_op/api/*.cpp
${OPS_BASE_PATH}/src/nnopbase/individual_op/executor/*.cpp
${OPS_BASE_PATH}/src/nnopbase/individual_op/utils/*.cpp
)
file(GLOB_RECURSE NNOPBASE_TEST_COMMON_CASE_SRC_FILES CONFIGURE_DEPENDS
${NNOPBASE_ST_DIR}/composite_op/*.cpp
)
file(GLOB_RECURSE NNOPBASE_TEST_COMMON_SRC_FILES CONFIGURE_DEPENDS
${NNOPBASE_ST_DIR}/../common/utils/*cpp
${NNOPBASE_ST_DIR}/../common/depends/metadef/space_registry_stub.cpp
${NNOPBASE_ST_DIR}/../common/depends/op/aclnn_bninference_d_kernel_stub.cpp
${NNOPBASE_ST_DIR}/../common/depends/op/aclnn_custom_op_stub.cpp
${NNOPBASE_ST_DIR}/../common/depends/op/op_stub.cpp
${NNOPBASE_ST_DIR}/../common/depends/runtime/runtime_stub.cpp
${NNOPBASE_ST_DIR}/../common/depends/dump/dump_stub.cpp
${NNOPBASE_ST_DIR}/../common/depends/platform/platform_stub.cpp
${NNOPBASE_ST_DIR}/../common/depends/acl/aclrt_stub.cpp
${NNOPBASE_ST_DIR}/../common/depends/profiler/profiler_stub.cpp
${NNOPBASE_ST_DIR}/../common/depends/op/aclnn_mul_stub.cpp
${NNOPBASE_UT_DIR}/../common/depends/mmpa/mmpa_stub.cpp
)
add_executable(nnopbase_stest
${NNOPBASE_ST_DIR}/main.cpp
${NNOPBASE_SRC_FILES}
${NNOPBASE_TEST_COMMON_SRC_FILES}
${NNOPBASE_TEST_COMMON_CASE_SRC_FILES}
${PROTO_HDRS}
${CPU_PROTO_HDRS}
)
target_compile_definitions(nnopbase_stest PRIVATE RUN_TEST TLS_GUARDIAN_ __LLT__)
target_include_directories(nnopbase_stest PRIVATE
${NNOPBASE_STEST_HEADERS}
)
target_compile_options(nnopbase_stest PRIVATE
-g
-fno-omit-frame-pointer
-fno-stack-protector
-fno-sanitize-recover
-fno-sanitize=vptr,alignment
-fno-access-control
)
target_link_libraries(nnopbase_stest PRIVATE
intf_pub
-Wl,--no-as-needed
${ASCEND_HOME_PATH}/lib64/libruntime.so
${ASCEND_HOME_PATH}/lib64/libunified_dlog.so
${ASCEND_HOME_PATH}/lib64/libascend_dump.so
${ASCEND_HOME_PATH}/lib64/libc_sec.so
${ASCEND_HOME_PATH}/lib64/libexe_graph.so
${ASCEND_HOME_PATH}/lib64/libacl_rt.so
${ASCEND_HOME_PATH}/lib64/libmetadef.so
${ASCEND_HOME_PATH}/lib64/liberror_manager.so
${ASCEND_HOME_PATH}/lib64/libopp_registry.so
${ASCEND_HOME_PATH}/lib64/libmmpa.so
${ASCEND_HOME_PATH}/lib64/libprofapi.so
${ASCEND_HOME_PATH}/lib64/libplatform.so
${ASCEND_HOME_PATH}/lib64/libregister.so
${ASCEND_HOME_PATH}/lib64/libgraph.so
${ASCEND_HOME_PATH}/lib64/libgraph_base.so
${ASCEND_HOME_PATH}/lib64/libascend_protobuf.so
-Wl,--as-needed
json
gtest
gtest_main
-ldl
$<$<BOOL:${ENABLE_COVERAGE}>:gcov>
${opInfoRecordLinkLibraries}
mockcpp
ascend_protobuf_static
PUBLIC
)
target_compile_definitions(nnopbase_stest PRIVATE google=ascend_private)
set(NNOPBASE_LLT_MOCK_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../mock)
get_filename_component(NNOPBASE_LLT_MOCK_DIR "${NNOPBASE_LLT_MOCK_DIR}" ABSOLUTE)
target_compile_definitions(nnopbase_stest
PRIVATE
OP_API_COMMON_UT_SRC_DIR=\"${NNOPBASE_LLT_MOCK_DIR}\"
)
if(ENABLE_COVERAGE)
target_compile_options(nnopbase_stest PRIVATE
--coverage
-fprofile-arcs
-ftest-coverage)
endif()