# ----------------------------------------------------------------------------------------------------------- # Copyright (c) 2025 Huawei Technologies Co., Ltd. # This program is free software, you can redistribute it and/or modify it under the terms and conditions of # CANN Open Software License Agreement Version 2.0 (the "License"). # Please refer to the License for details. You may not use this file except in compliance with the License. # THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, # INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE. # See LICENSE in the root of the software repository for the full text of the License. # ----------------------------------------------------------------------------------------------------------- ######################################################################################################################## # 预定义变量 ######################################################################################################################## # 所使用的产品类型 set(OPS_ADV_UTEST_OPS_TEST_ASCEND_PRODUCT_TYPE ascend910B1) ######################################################################################################################## # 环境检查 ######################################################################################################################## if (EXISTS ${ASCEND_CANN_PACKAGE_PATH}/tools/tikicpulib/lib/cmake) list(APPEND CMAKE_PREFIX_PATH ${ASCEND_CANN_PACKAGE_PATH}/tools/tikicpulib/lib/cmake) else() list(APPEND CMAKE_PREFIX_PATH ${ASCEND_CANN_PACKAGE_PATH}/toolkit/tools/tikicpulib/lib/cmake) endif() find_package(tikicpulib REQUIRED) # ASAN / UBSAN 场景随编译执行用例场景下, 将相关检查在编译前执行, 避免出现编译完成后又无法执行的情况, 影响使用体验. # 仅 GNU 编译器需要设置 LD_PRELOAD if ((ENABLE_ASAN OR ENABLE_UBSAN) AND "${CMAKE_C_COMPILER_ID}" STREQUAL "GNU") message(STATUS "CMAKE_CXX_COMPILER_ID=${CMAKE_CXX_COMPILER_ID}") if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU") set(SAN_LD_PRELOAD "LD_PRELOAD=") if (ENABLE_ASAN) # libasan.so execute_process(COMMAND ${CMAKE_C_COMPILER} --print-file-name=libasan.so RESULT_VARIABLE _RST OUTPUT_VARIABLE ASAN_SHARED_PATH) if (_RST) message(FATAL_ERROR "Can't get libasan.so path with ${CMAKE_C_COMPILER}") endif () get_filename_component(ASAN_SHARED_PATH "${ASAN_SHARED_PATH}" DIRECTORY) get_filename_component(ASAN_SHARED_PATH "${ASAN_SHARED_PATH}/libasan.so" REALPATH) if (NOT EXISTS ${ASAN_SHARED_PATH}) message(FATAL_ERROR "ASAN_SHARED_PATH=${ASAN_SHARED_PATH} not exist.") endif () set(SAN_LD_PRELOAD "${SAN_LD_PRELOAD}:${ASAN_SHARED_PATH}") endif () if (ENABLE_UBSAN) # libubsan.so execute_process(COMMAND ${CMAKE_C_COMPILER} --print-file-name=libubsan.so RESULT_VARIABLE _RST OUTPUT_VARIABLE UBSAN_SHARED_PATH) if (_RST) message(FATAL_ERROR "Can't get libubsan.so path with ${CMAKE_C_COMPILER}") endif () get_filename_component(UBSAN_SHARED_PATH "${UBSAN_SHARED_PATH}" DIRECTORY) get_filename_component(UBSAN_SHARED_PATH "${UBSAN_SHARED_PATH}/libubsan.so" REALPATH) if (NOT EXISTS ${UBSAN_SHARED_PATH}) message(FATAL_ERROR "UBSAN_SHARED_PATH=${UBSAN_SHARED_PATH} not exist.") endif () set(SAN_LD_PRELOAD "${SAN_LD_PRELOAD}:${UBSAN_SHARED_PATH}") endif () # libstdc++.so execute_process(COMMAND ${CMAKE_C_COMPILER} --print-file-name=libstdc++.so RESULT_VARIABLE _RST OUTPUT_VARIABLE STDC_SHARED_PATH) if (_RST) message(FATAL_ERROR "Can't get libstdc++.so path with ${CMAKE_C_COMPILER}") endif () get_filename_component(STDC_SHARED_PATH "${STDC_SHARED_PATH}" DIRECTORY) get_filename_component(STDC_SHARED_PATH "${STDC_SHARED_PATH}/libstdc++.so" REALPATH) if (NOT EXISTS ${STDC_SHARED_PATH}) message(FATAL_ERROR "STDC_SHARED_PATH=${STDC_SHARED_PATH} not exist.") endif () set(SAN_LD_PRELOAD "${SAN_LD_PRELOAD}:${STDC_SHARED_PATH}") endif () endif () ######################################################################################################################## # 公共配置 ######################################################################################################################## # 开关类 option(TESTS_UT_OPS_TEST_CI_PR "Build UTest in push request scene." OFF)