已合并
精简cmake #18
Hyunbin创建于 7月1日
精简cmake #18
已合并
Hyunbin创建于 7月1日
共 5 个文件变更+64-47
@@ -6,3 +6,4 @@ AGENTS.md
6.opencode/6.opencode/
7.cursor/7.cursor/
8.agent/8.agent/
9+third_party/
@@ -7,8 +7,8 @@
7## 文件权限控制7## 文件权限控制
8 8 
9- 建议用户在主机(包括宿主机)及容器中设置运行系统umask值为0027及以上,保障新增文件夹默认最高权限为750,新增文件默认最高权限为640。9- 建议用户在主机(包括宿主机)及容器中设置运行系统umask值为0027及以上,保障新增文件夹默认最高权限为750,新增文件默认最高权限为640。
10-- 建议用户对个人隐私数据、商业资产、源文件和代码开发过程中保存的各类文件等敏感内容做好权限控制等安全措施。例如涉及本项目安装目录权限管控、输入公共数据文件权限管控,设定的权限建议参考[A-文件(夹)各场景权限管控推荐最大值](#a-文件夹各场景权限管控推荐最大值)。10+- 建议用户对个人隐私数据、商业资产、源文件和代码开发过程中保存的各类文件等敏感内容做好权限控制等安全措施。例如涉及本项目安装目录权限管控、输入公共数据文件权限管控,设定的权限建议参考[A-文件(夹)各场景权限管控推荐最大值](https://gitcode.com/cann/asc-devkit/blob/master/SECURITY.md#a-文件夹各场景权限管控推荐最大值)。
11-- 用户安装和使用过程需要做好权限控制,建议参考[A-文件(夹)各场景权限管控推荐最大值](#a-文件夹各场景权限管控推荐最大值)文件权限参考进行设置。11+- 用户安装和使用过程需要做好权限控制,建议参考[A-文件(夹)各场景权限管控推荐最大值](https://gitcode.com/cann/asc-devkit/blob/master/SECURITY.md#a-文件夹各场景权限管控推荐最大值)文件权限参考进行设置。
12 12 
13## 构建安全声明13## 构建安全声明
14 14 
@@ -24,7 +24,7 @@
24 24 
25| 类型 | 开源代码地址 | 文件名 | 公网IP地址/公网URL地址/域名/邮箱地址/压缩文件地址 | 用途说明 |25| 类型 | 开源代码地址 | 文件名 | 公网IP地址/公网URL地址/域名/邮箱地址/压缩文件地址 | 用途说明 |
26| :------------: |:------------------------------------------------------------------------------------------:|:----------------------------------------------------------| :---------------------------------------------------------- |:-----------------------------------------|26| :------------: |:------------------------------------------------------------------------------------------:|:----------------------------------------------------------| :---------------------------------------------------------- |:-----------------------------------------|
27-| 不涉及 | 不涉及 | 不涉及 | 不涉及 | 不涉及 |27+| 依赖 | 不涉及 | cmake/third_party/gtest.cmake | https://gitcode.com/cann-src-third-party/googletest/releases/download/v1.14.0/googletest-1.14.0.tar.gz | 从gitcode下载googletest源码,作用编译依赖 |
28---28---
29 29 
30## 漏洞机制说明30## 漏洞机制说明
@@ -24,6 +24,7 @@ CPU_CORES=$(grep -c "^processor" /proc/cpuinfo)
24THREAD_NUM="${CPU_CORES}"24THREAD_NUM="${CPU_CORES}"
25 25 
26Ascend_CANN_PACKAGE_PATH=""26Ascend_CANN_PACKAGE_PATH=""
27+CANN_3RD_LIB_PATH="${SCRIPT_DIR}/third_party"
27 28 
28# 默认构建类型:Release / Debug29# 默认构建类型:Release / Debug
29BUILD_TYPE="Release"30BUILD_TYPE="Release"
@@ -91,6 +92,8 @@ usage() {
91 echo " -t, --test Build and run all unit tests"92 echo " -t, --test Build and run all unit tests"
92 echo " --cov Enable code coverage for unit tests"93 echo " --cov Enable code coverage for unit tests"
93 echo " --make_clean Clean build artifacts"94 echo " --make_clean Clean build artifacts"
95+ echo " --cann_3rd_lib_path=<PATH>"
96+ echo " Set CANN third_party package install path, Default:./third_party"
94 echo " --build-type=<TYPE>"97 echo " --build-type=<TYPE>"
95 echo " Specify build type (TYPE options: Release/Debug), Default:Release"98 echo " Specify build type (TYPE options: Release/Debug), Default:Release"
96}99}
@@ -114,6 +117,10 @@ parse_args() {
114 clean_build117 clean_build
115 exit 0118 exit 0
116 ;;119 ;;
120+ --cann_3rd_lib_path=*)
121+ CANN_3RD_LIB_PATH="$(realpath "${1#*=}")"
122+ shift
123+ ;;
117 *)124 *)
118 log "ERROR" "未知参数:$1"125 log "ERROR" "未知参数:$1"
119 usage126 usage
@@ -136,6 +143,7 @@ set_env() {
136 log "INFO" "the path of cann package is ${ASCEND_HOME_PATH}" 143 log "INFO" "the path of cann package is ${ASCEND_HOME_PATH}"
137 Ascend_CANN_PACKAGE_PATH=${ASCEND_HOME_PATH}144 Ascend_CANN_PACKAGE_PATH=${ASCEND_HOME_PATH}
138 CUSTOM_OPTION+=("-DASCEND_CANN_PACKAGE_PATH=${Ascend_CANN_PACKAGE_PATH}")145 CUSTOM_OPTION+=("-DASCEND_CANN_PACKAGE_PATH=${Ascend_CANN_PACKAGE_PATH}")
146+ CUSTOM_OPTION+=("-DCANN_3RD_LIB_PATH=${CANN_3RD_LIB_PATH}")
139}147}
140 148 
141clean_build() {149clean_build() {
@@ -0,0 +1,39 @@
1+# ----------------------------------------------------------------------------------------------------------
2+# Copyright (c) 2026 Huawei Technologies Co., Ltd.
3+# This program is free software, you can redistribute it and/or modify it under the terms and conditions of
4+# CANN Open Software License Agreement Version 2.0 (the "License").
5+# Please refer to the License for details. You may not use this file except in compliance with the License.
6+# THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED,
7+# INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
8+# See LICENSE in the root of the software repository for the full text of the License.
9+# ----------------------------------------------------------------------------------------------------------
10+ 
11+# 引入 CANN/cmake 库
12+if(NOT PROJECT_SOURCE_DIR)
13+ if(CANN_3RD_LIB_PATH AND IS_DIRECTORY "${CANN_3RD_LIB_PATH}/cann-cmake")
14+ include("${CANN_3RD_LIB_PATH}/cann-cmake/function/prepare.cmake")
15+ else()
16+ include(FetchContent)
17+ 
18+ set(CANN_CMAKE_TAG "master-025")
19+ if(CANN_3RD_LIB_PATH AND EXISTS "${CANN_3RD_LIB_PATH}/cmake-${CANN_CMAKE_TAG}.tar.gz")
20+ FetchContent_Declare(
21+ cann-cmake
22+ URL "${CANN_3RD_LIB_PATH}/cmake-${CANN_CMAKE_TAG}.tar.gz"
23+ URL_HASH SHA256=1e8888249828083f059bdc9614ce09cdaefac8a682defe18b73b83cd45bde213
24+ )
25+ else()
26+ FetchContent_Declare(
27+ cann-cmake
28+ GIT_REPOSITORY https://gitcode.com/cann/cmake.git
29+ GIT_TAG ${CANN_CMAKE_TAG}
30+ GIT_SHALLOW TRUE
31+ )
32+ endif()
33+ FetchContent_GetProperties(cann-cmake)
34+ if(NOT cann-cmake_POPULATED)
35+ FetchContent_Populate(cann-cmake)
36+ endif()
37+ include("${cann-cmake_SOURCE_DIR}/function/prepare.cmake")
38+ endif()
39+endif()
@@ -10,14 +10,20 @@
10 10 
11cmake_minimum_required(VERSION 3.16)11cmake_minimum_required(VERSION 3.16)
12 12 
13+set(ASCCOMM_UT_ROOT ${CMAKE_CURRENT_LIST_DIR})
14+get_filename_component(ASCCOMM_ROOT ${ASCCOMM_UT_ROOT}/../.. ABSOLUTE)
15+if(NOT CANN_3RD_LIB_PATH)
16+ set(CANN_3RD_LIB_PATH "${ASCCOMM_ROOT}/third_party" CACHE PATH "CANN third_party path" FORCE)
17+endif()
18+ 
19+include("${ASCCOMM_ROOT}/cmake/fetch_cann_cmake.cmake")
20+ 
13project(asccomm_hcomm_ut LANGUAGES C CXX)21project(asccomm_hcomm_ut LANGUAGES C CXX)
22+init_cann_project(PREPEND_MODULE_PATH)
14 23 
15set(CMAKE_CXX_STANDARD 17)24set(CMAKE_CXX_STANDARD 17)
16set(CMAKE_CXX_STANDARD_REQUIRED ON)25set(CMAKE_CXX_STANDARD_REQUIRED ON)
17 26 
18-set(ASCCOMM_UT_ROOT ${CMAKE_CURRENT_LIST_DIR})
19-get_filename_component(ASCCOMM_ROOT ${ASCCOMM_UT_ROOT}/../.. ABSOLUTE)
20- 
21set(PRODUCT_TYPE_LIST "ascend950pr_9599_AIV;ascend910B1_AIC" CACHE STRING "Hcomm UT product types")27set(PRODUCT_TYPE_LIST "ascend950pr_9599_AIV;ascend910B1_AIC" CACHE STRING "Hcomm UT product types")
22set(TEST_MOD "all" CACHE STRING "Comma-separated UT targets to build and run, or all")28set(TEST_MOD "all" CACHE STRING "Comma-separated UT targets to build and run, or all")
23option(ASCCOMM_UT_RUN_AFTER_BUILD "Run UT targets after build" ON)29option(ASCCOMM_UT_RUN_AFTER_BUILD "Run UT targets after build" ON)
@@ -52,58 +58,24 @@ set(ASCENDC_DIR "${ASCEND_CANN_ARCH_DIR}/asc" CACHE PATH "AscendC headers path")
52 58 
53set(ASCCOMM_CANN_INCLUDE_DIRS59set(ASCCOMM_CANN_INCLUDE_DIRS
54 ${ASCEND_CANN_PACKAGE_PATH}/include60 ${ASCEND_CANN_PACKAGE_PATH}/include
55- ${ASCEND_CANN_ARCH_DIR}/include
56- ${ASCEND_CANN_ARCH_DIR}/include/acl
57- ${ASCEND_CANN_ARCH_DIR}/pkg_inc
58- ${ASCEND_CANN_ARCH_DIR}/pkg_inc/base
59- ${ASCEND_CANN_ARCH_DIR}/pkg_inc/mmpa
60- ${ASCEND_CANN_ARCH_DIR}/pkg_inc/profiling
61- ${ASCEND_CANN_ARCH_DIR}/pkg_inc/runtime
62- ${ASCEND_CANN_ARCH_DIR}/pkg_inc/runtime/runtime
63 ${ASCENDC_DIR}61 ${ASCENDC_DIR}
64 ${ASCENDC_DIR}/include62 ${ASCENDC_DIR}/include
65 ${ASCENDC_DIR}/include/basic_api63 ${ASCENDC_DIR}/include/basic_api
66- ${ASCENDC_DIR}/include/simt_api
67- ${ASCENDC_DIR}/include/adv_api
68- ${ASCENDC_DIR}/include/utils
69- ${ASCENDC_DIR}/include/utils/tiling
70- ${ASCENDC_DIR}/impl
71 ${ASCENDC_DIR}/impl/basic_api64 ${ASCENDC_DIR}/impl/basic_api
72- ${ASCENDC_DIR}/impl/simt_api
73)65)
74set(ASCCOMM_TIKICPU_DIR ${ASCEND_CANN_PACKAGE_PATH}/tools/tikicpulib/lib)66set(ASCCOMM_TIKICPU_DIR ${ASCEND_CANN_PACKAGE_PATH}/tools/tikicpulib/lib)
75set(ASCCOMM_TIKICPU_INCLUDE_DIR ${ASCCOMM_TIKICPU_DIR}/include)67set(ASCCOMM_TIKICPU_INCLUDE_DIR ${ASCCOMM_TIKICPU_DIR}/include)
76set(ASCCOMM_TIKICPU_LIB64_DIR ${ASCEND_CANN_PACKAGE_PATH}/tools/tikicpulib/lib64)68set(ASCCOMM_TIKICPU_LIB64_DIR ${ASCEND_CANN_PACKAGE_PATH}/tools/tikicpulib/lib64)
77set(ASCCOMM_CPUDEBUG_LIB64_DIR ${ASCEND_CANN_PACKAGE_PATH}/tools/cpudebug/lib64)69set(ASCCOMM_CPUDEBUG_LIB64_DIR ${ASCEND_CANN_PACKAGE_PATH}/tools/cpudebug/lib64)
78-set(ASCCOMM_UT_RUNTIME_DIRS
79- ${ASCEND_CANN_PACKAGE_PATH}/lib64
80- ${ASCEND_CANN_ARCH_DIR}/lib64
81- ${ASCEND_CANN_ARCH_DIR}/devlib/device
82- ${ASCCOMM_TIKICPU_DIR}
83- ${ASCCOMM_TIKICPU_LIB64_DIR}
84- ${ASCCOMM_CPUDEBUG_LIB64_DIR}
85-)
86-string(REPLACE ";" ":" ASCCOMM_UT_LD_LIBRARY_PATH "${ASCCOMM_UT_RUNTIME_DIRS}")
87- 
88-link_directories(
89- ${ASCEND_CANN_PACKAGE_PATH}/lib64
90- ${ASCEND_CANN_ARCH_DIR}/lib64
91-)
92 70 
93find_package(GTest QUIET)71find_package(GTest QUIET)
94if(TARGET GTest::gtest)72if(TARGET GTest::gtest)
95 set(ASCCOMM_GTEST_TARGET GTest::gtest)73 set(ASCCOMM_GTEST_TARGET GTest::gtest)
96 set(ASCCOMM_GTEST_USES_CXX11_ABI0 OFF)74 set(ASCCOMM_GTEST_USES_CXX11_ABI0 OFF)
97-elseif(CANN_3RD_LIB_PATH AND EXISTS "${CANN_3RD_LIB_PATH}/gtest/include/gtest/gtest.h")
98- add_library(asccomm_gtest STATIC IMPORTED)
99- set_target_properties(asccomm_gtest PROPERTIES
100- IMPORTED_LOCATION "${CANN_3RD_LIB_PATH}/gtest/lib64/libgtest.a"
101- INTERFACE_INCLUDE_DIRECTORIES "${CANN_3RD_LIB_PATH}/gtest/include"
102- )
103- set(ASCCOMM_GTEST_TARGET asccomm_gtest)
104- set(ASCCOMM_GTEST_USES_CXX11_ABI0 ON)
105else()75else()
106- message(FATAL_ERROR "GTest not found. Install GTest or set CANN_3RD_LIB_PATH to the CANN third_party directory.")76+ add_cann_third_party(gtest)
77+ set(ASCCOMM_GTEST_TARGET GTest::gtest)
78+ set(ASCCOMM_GTEST_USES_CXX11_ABI0 ON)
107endif()79endif()
108 80 
109add_library(intf_llt_pub_basic INTERFACE)81add_library(intf_llt_pub_basic INTERFACE)
@@ -187,10 +159,7 @@ function(run_llt_test)
187 set(ENV_PREFIX "")159 set(ENV_PREFIX "")
188 endif()160 endif()
189 161 
190- set(_llt_runtime_dirs ${ASCCOMM_UT_RUNTIME_DIRS})162+ set(_llt_runtime_dirs ${LLT_RUNTIME_DIRS})
191- if(LLT_RUNTIME_DIRS)
192- set(_llt_runtime_dirs ${LLT_RUNTIME_DIRS})
193- endif()
194 string(REPLACE ";" ":" _llt_ld_library_path "${_llt_runtime_dirs}")163 string(REPLACE ";" ":" _llt_ld_library_path "${_llt_runtime_dirs}")
195 164 
196 if(LLT_FILTERS)165 if(LLT_FILTERS)