Merged
统一CXX11_ABI计算逻辑,修复三方库构建配置问题 #289
zhaoyingdongAdd on Aug 19
统一CXX11_ABI计算逻辑,修复三方库构建配置问题 #289
Merged
zhaoyingdongAdd on Aug 19
Merged fromDeleted :masterintocann/cmakemaster
Total: 27 files changed+149-225
@@ -48,7 +48,7 @@ pre-commit run --all-files # manual full-repo check
48- **`CANN_TOP_DIR`** is resolved as the parent of this repo (`function/function.cmake:31`). Package dependency resolution reads `version.cmake` files from `${CANN_TOP_DIR}/${pkg_dir}` — `superbuild/config.cmake` maps both package→source dir (`CANN_PACKAGE_DIR_*`) and package→components (`CANN_PACKAGE_COMPONENTS_*`); update both when adding a package.48- **`CANN_TOP_DIR`** is resolved as the parent of this repo (`function/function.cmake:31`). Package dependency resolution reads `version.cmake` files from `${CANN_TOP_DIR}/${pkg_dir}` — `superbuild/config.cmake` maps both package→source dir (`CANN_PACKAGE_DIR_*`) and package→components (`CANN_PACKAGE_COMPONENTS_*`); update both when adding a package.
49- **Device cross-compile** uses `toolchain/aarch64-hcc-toolchain.cmake` (aarch64 target via hcc; compiler is `${TOOLCHAIN_DIR}/bin/aarch64-target-linux-gnu-gcc`, where `TOOLCHAIN_DIR` defaults to `${ASCEND_INSTALL_PATH}/toolkit/toolchain/hcc`). Host builds compile in-process via `add_subdirectory` of each sibling repo under `CANN_TOP_DIR`; only device builds run as a separate `ExternalProject_Add` step. `PRODUCT_SIDE` (`host`/`device`) controls which source dirs are added — host adds `<pkg>`, device adds `<pkg>/cmake/device` (the `cmake/device` subdir arg passed to `get_package_dirs` at `superbuild/device/CMakeLists.txt:17`). Device cross-compile is auto-skipped when no selected package has a `cmake/device` subdir; `calc_device_packages` also excludes `ge-executor`/`ge-compiler` (pure host-side packages sharing the `ge` repo with `dflow-executor`) so they never trigger device build. `--build_host_only` forces it off via `ENABLE_BUILD_DEVICE=FALSE`; when `build.sh` is not used, `ENABLE_BUILD_DEVICE` defaults to `TRUE` (`superbuild/CMakeLists.txt:43-47`).49- **Device cross-compile** uses `toolchain/aarch64-hcc-toolchain.cmake` (aarch64 target via hcc; compiler is `${TOOLCHAIN_DIR}/bin/aarch64-target-linux-gnu-gcc`, where `TOOLCHAIN_DIR` defaults to `${ASCEND_INSTALL_PATH}/toolkit/toolchain/hcc`). Host builds compile in-process via `add_subdirectory` of each sibling repo under `CANN_TOP_DIR`; only device builds run as a separate `ExternalProject_Add` step. `PRODUCT_SIDE` (`host`/`device`) controls which source dirs are added — host adds `<pkg>`, device adds `<pkg>/cmake/device` (the `cmake/device` subdir arg passed to `get_package_dirs` at `superbuild/device/CMakeLists.txt:17`). Device cross-compile is auto-skipped when no selected package has a `cmake/device` subdir; `calc_device_packages` also excludes `ge-executor`/`ge-compiler` (pure host-side packages sharing the `ge` repo with `dflow-executor`) so they never trigger device build. `--build_host_only` forces it off via `ENABLE_BUILD_DEVICE=FALSE`; when `build.sh` is not used, `ENABLE_BUILD_DEVICE` defaults to `TRUE` (`superbuild/CMakeLists.txt:43-47`).
50- **`__FILE__` macro rewriting:** Both `prepare.cmake` (non-Ninja) and the toolchain file override `CMAKE_C/CXX_COMPILE_OBJECT` to emit only the basename in `__FILE__`, plus `-Wno-builtin-macro-redefined`. Preserve this when touching compile rules.50- **`__FILE__` macro rewriting:** Both `prepare.cmake` (non-Ninja) and the toolchain file override `CMAKE_C/CXX_COMPILE_OBJECT` to emit only the basename in `__FILE__`, plus `-Wno-builtin-macro-redefined`. Preserve this when touching compile rules.
51-- **ABI:** Host defaults to `_GLIBCXX_USE_CXX11_ABI=0` (old ABI); device leaves it unset. See `intf_pub/intf_pub_linux.cmake:38`. `USE_CXX11_ABI` overrides this.51+- **ABI:** `CANN_CXX11_ABI` is computed once in `init_cann_project()` (`function/prepare.cmake`) and consumed by `intf_pub` + all third-party scripts. Host defaults to `_GLIBCXX_USE_CXX11_ABI=0` (old ABI); device defaults to `1`. `USE_CXX11_ABI` overrides either. See `intf_pub/intf_pub_linux.cmake:57`.
52- **ccache** is on by default (`ENABLE_CCACHE`).52- **ccache** is on by default (`ENABLE_CCACHE`).
53- **Dependency pairs are stride-2 lists:** `set_cann_build_dependencies`/`set_cann_run_dependencies` append `pkg;version` pairs to `CANN_VERSION_*_BUILD_DEPS`/`_RUN_DEPS`. Consumers (`get_build_pkg_deps` in `function/function.cmake`, `scripts/version/generate_version_info.py`) walk the list 2 at a time, so changing the call format requires updating both (flagged in code comments).53- **Dependency pairs are stride-2 lists:** `set_cann_build_dependencies`/`set_cann_run_dependencies` append `pkg;version` pairs to `CANN_VERSION_*_BUILD_DEPS`/`_RUN_DEPS`. Consumers (`get_build_pkg_deps` in `function/function.cmake`, `scripts/version/generate_version_info.py`) walk the list 2 at a time, so changing the call format requires updating both (flagged in code comments).
54- **Never set `EXCLUDE_FROM_ALL` on `add_subdirectory`** — CMake then skips that dir's `install()` rules, silently dropping components from packages. `set_cann_all_targets` (`function/function.cmake:182`) instead marks individual *targets* `EXCLUDE_FROM_ALL` and aggregates wanted ones under `cann_all_targets`; the `add_subdirectory` calls in `superbuild/CMakeLists.txt:67` deliberately omit it for the same reason.54- **Never set `EXCLUDE_FROM_ALL` on `add_subdirectory`** — CMake then skips that dir's `install()` rules, silently dropping components from packages. `set_cann_all_targets` (`function/function.cmake:182`) instead marks individual *targets* `EXCLUDE_FROM_ALL` and aggregates wanted ones under `cann_all_targets`; the `add_subdirectory` calls in `superbuild/CMakeLists.txt:67` deliberately omit it for the same reason.
@@ -143,7 +143,7 @@ get_pkg_dependencies("runtime")
143- **安全加固**:`-fstack-protector-strong`、`-fPIC`、`-Wall -Wextra`143- **安全加固**:`-fstack-protector-strong`、`-fPIC`、`-Wall -Wextra`
144- **Sanitizer**:ASan/TSan/UBSan,通过 `ENABLE_ASAN`/`ENABLE_TSAN`/`ENABLE_UBSAN` 控制144- **Sanitizer**:ASan/TSan/UBSan,通过 `ENABLE_ASAN`/`ENABLE_TSAN`/`ENABLE_UBSAN` 控制
145- **严格告警**:`-Wformat=2`/`-Wduplicated-branches`/`-Wlogical-op` 等,通过 `ENABLE_STRICT_WARNINGS` 控制(默认关闭)。须在首次 include `intf_pub` 之前设置方可生效145- **严格告警**:`-Wformat=2`/`-Wduplicated-branches`/`-Wlogical-op` 等,通过 `ENABLE_STRICT_WARNINGS` 控制(默认关闭)。须在首次 include `intf_pub` 之前设置方可生效
146-- **ABI**:host 默认 `_GLIBCXX_USE_CXX11_ABI=0`(旧 ABI),device 不设置,`USE_CXX11_ABI` 可覆盖146+- **ABI**:`CANN_CXX11_ABI` 在 `init_cann_project()` 中统一计算(`function/prepare.cmake`),供 `intf_pub` 及三方库共用。host 默认 `_GLIBCXX_USE_CXX11_ABI=0`(旧 ABI),device 默认 `1`,`USE_CXX11_ABI` 可覆盖
147- **`__FILE__` 宏改写**:非 Ninja 模式下,编译规则被覆写为只输出文件名(不输出完整路径),同时添加 `-Wno-builtin-macro-redefined`。device 工具链文件中同样覆写147- **`__FILE__` 宏改写**:非 Ninja 模式下,编译规则被覆写为只输出文件名(不输出完整路径),同时添加 `-Wno-builtin-macro-redefined`。device 工具链文件中同样覆写
148 148 
149### C++ 标准149### C++ 标准
@@ -137,7 +137,7 @@ cmake -B build -DCMAKE_BUILD_TYPE=Debug ...
137| `ENABLE_ASAN` | 启用 AddressSanitizer | `FALSE` |137| `ENABLE_ASAN` | 启用 AddressSanitizer | `FALSE` |
138| `ENABLE_GCOV` | 启用代码覆盖率 | `FALSE` |138| `ENABLE_GCOV` | 启用代码覆盖率 | `FALSE` |
139| `ENABLE_STRICT_WARNINGS` | 启用增强告警(须在首次 include `intf_pub` 前设置) | `FALSE` |139| `ENABLE_STRICT_WARNINGS` | 启用增强告警(须在首次 include `intf_pub` 前设置) | `FALSE` |
140-| `USE_CXX11_ABI` | 覆盖 CXX11 ABI 设置(host 默认 `0`) | 自动 |140+| `USE_CXX11_ABI` | 覆盖 CXX11 ABI 设置(host 默认 `0`,device 默认 `1`) | 自动 |
141| `CMAKE_BUILD_TYPE` | 构建类型 | `Release` |141| `CMAKE_BUILD_TYPE` | 构建类型 | `Release` |
142 142 
143## host 侧与 device 侧构建143## host 侧与 device 侧构建
@@ -167,7 +167,7 @@ cmake --build build -j8
167|------|------|--------|167|------|------|--------|
168| 工具链 | 系统默认 GCC | hcc 交叉编译工具链 |168| 工具链 | 系统默认 GCC | hcc 交叉编译工具链 |
169| `PRODUCT_SIDE` | `host`(或不设置) | `device` |169| `PRODUCT_SIDE` | `host`(或不设置) | `device` |
170-| ABI | `_GLIBCXX_USE_CXX11_ABI=0` | 不设置 |170+| ABI | `_GLIBCXX_USE_CXX11_ABI=0` | `_GLIBCXX_USE_CXX11_ABI=1` |
171| 源码目录 | `<pkg>/` | `<pkg>/cmake/device/` |171| 源码目录 | `<pkg>/` | `<pkg>/cmake/device/` |
172 172 
173## 环境依赖173## 环境依赖
@@ -130,6 +130,20 @@ macro(init_cann_project)
130 set(PRODUCT_SIDE "${CANN_PRODUCT_SIDE}")130 set(PRODUCT_SIDE "${CANN_PRODUCT_SIDE}")
131 endif()131 endif()
132 132 
133+ # 统一计算 CXX11 ABI 值,供 intf_pub 和三方库共用
134+ # USE_CXX11_ABI 支持 0/1/ON/OFF/TRUE/FALSE 等布尔写法,统一归一化为 0 或 1
135+ if(DEFINED USE_CXX11_ABI)
136+ if(USE_CXX11_ABI)
137+ set(CANN_CXX11_ABI 1)
138+ else()
139+ set(CANN_CXX11_ABI 0)
140+ endif()
141+ elseif(NOT PRODUCT_SIDE STREQUAL "device")
142+ set(CANN_CXX11_ABI 0)
143+ else()
144+ set(CANN_CXX11_ABI 1)
145+ endif()
146+ 
133 if(POLICY CMP0135)147 if(POLICY CMP0135)
134 cmake_policy(SET CMP0135 NEW)148 cmake_policy(SET CMP0135 NEW)
135 endif()149 endif()
@@ -53,18 +53,22 @@ if(ENABLE_STRICT_WARNINGS)
53 )53 )
54endif()54endif()
55 55 
56-unset(CXX11_ABI_VALUE)56+# ABI 值由 init_cann_project() 统一计算,此处直接引用
57-if(DEFINED USE_CXX11_ABI)57+# 若未调用 init_cann_project()(如直接 include intf_pub),使用与 init_cann_project 一致的默认值
58- if(USE_CXX11_ABI)58+if(NOT DEFINED CANN_CXX11_ABI)
59- set(CXX11_ABI_VALUE 1)59+ if(DEFINED USE_CXX11_ABI)
60+ if(USE_CXX11_ABI)
61+ set(CANN_CXX11_ABI 1)
62+ else()
63+ set(CANN_CXX11_ABI 0)
64+ endif()
65+ elseif(NOT PRODUCT_SIDE STREQUAL "device")
66+ set(CANN_CXX11_ABI 0)
60 else()67 else()
61- set(CXX11_ABI_VALUE 0)68+ set(CANN_CXX11_ABI 1)
62 endif()69 endif()
63-elseif(NOT PRODUCT_SIDE STREQUAL "device")
64- set(CXX11_ABI_VALUE 0)
65endif()70endif()
66- 71+if(DEFINED CANN_CXX11_ABI)
67-if(DEFINED CXX11_ABI_VALUE)
68 # 支持target通设置CANN_GLIBCXX_USE_CXX11_ABI属性,配置_GLIBCXX_USE_CXX11_ABI编译宏的值72 # 支持target通设置CANN_GLIBCXX_USE_CXX11_ABI属性,配置_GLIBCXX_USE_CXX11_ABI编译宏的值
69 string(CONCAT _GEN_EXPR73 string(CONCAT _GEN_EXPR
70 "$<$<COMPILE_LANGUAGE:CXX>:"74 "$<$<COMPILE_LANGUAGE:CXX>:"
@@ -73,7 +77,7 @@ if(DEFINED CXX11_ABI_VALUE)
73 "$<STREQUAL:$<TARGET_PROPERTY:CANN_GLIBCXX_USE_CXX11_ABI>,0>,"77 "$<STREQUAL:$<TARGET_PROPERTY:CANN_GLIBCXX_USE_CXX11_ABI>,0>,"
74 "$<BOOL:$<TARGET_PROPERTY:CANN_GLIBCXX_USE_CXX11_ABI>>>,"78 "$<BOOL:$<TARGET_PROPERTY:CANN_GLIBCXX_USE_CXX11_ABI>>>,"
75 "_GLIBCXX_USE_CXX11_ABI=$<TARGET_PROPERTY:CANN_GLIBCXX_USE_CXX11_ABI>,"79 "_GLIBCXX_USE_CXX11_ABI=$<TARGET_PROPERTY:CANN_GLIBCXX_USE_CXX11_ABI>,"
76- "_GLIBCXX_USE_CXX11_ABI=${CXX11_ABI_VALUE}>>"80+ "_GLIBCXX_USE_CXX11_ABI=${CANN_CXX11_ABI}>>"
77 )81 )
78 target_compile_definitions(intf_pub_base INTERFACE82 target_compile_definitions(intf_pub_base INTERFACE
79 "${_GEN_EXPR}"83 "${_GEN_EXPR}"
@@ -9,10 +9,6 @@
9# ----------------------------------------------------------------------------9# ----------------------------------------------------------------------------
10include_guard(GLOBAL)10include_guard(GLOBAL)
11 11 
12-if(POLICY CMP0135)
13- cmake_policy(SET CMP0135 NEW)
14-endif()
15- 
16unset(abseil-cpp_FOUND CACHE)12unset(abseil-cpp_FOUND CACHE)
17unset(ABSL_SOURCE_DIR CACHE)13unset(ABSL_SOURCE_DIR CACHE)
18 14 
@@ -61,11 +57,9 @@ else()
61 57 
62 if(EXISTS ${CANN_3RD_LIB_PATH}/abseil-cpp/backport-CVE-2025-0838.patch)58 if(EXISTS ${CANN_3RD_LIB_PATH}/abseil-cpp/backport-CVE-2025-0838.patch)
63 set(ABSL_CVE_PATCH_FILE ${CANN_3RD_LIB_PATH}/abseil-cpp/backport-CVE-2025-0838.patch)59 set(ABSL_CVE_PATCH_FILE ${CANN_3RD_LIB_PATH}/abseil-cpp/backport-CVE-2025-0838.patch)
64- message(STATUS "[ThirdParty][abseil-cpp] cve patch use cache: ${ABSL_CVE_PATCH_FILE}")
65 add_custom_target(abseil_cve_patch)60 add_custom_target(abseil_cve_patch)
66 elseif(EXISTS ${ABS_PKG_DIR}/backport-CVE-2025-0838.patch)61 elseif(EXISTS ${ABS_PKG_DIR}/backport-CVE-2025-0838.patch)
67 set(ABSL_CVE_PATCH_FILE ${ABS_PKG_DIR}/backport-CVE-2025-0838.patch)62 set(ABSL_CVE_PATCH_FILE ${ABS_PKG_DIR}/backport-CVE-2025-0838.patch)
68- message(STATUS "[ThirdParty][abseil-cpp] cve patch use cache: ${ABSL_CVE_PATCH_FILE}")
69 add_custom_target(abseil_cve_patch)63 add_custom_target(abseil_cve_patch)
70 else()64 else()
71 # 路径不能与 abseil 源码目录相同,构建时会清理65 # 路径不能与 abseil 源码目录相同,构建时会清理
@@ -85,6 +79,9 @@ else()
85 )79 )
86 message(STATUS "[ThirdParty][abseil-cpp] cve patch need download to: ${ABSL_CVE_PATCH_FILE}")80 message(STATUS "[ThirdParty][abseil-cpp] cve patch need download to: ${ABSL_CVE_PATCH_FILE}")
87 endif()81 endif()
82+ if(TARGET abseil_cve_patch)
83+ message(STATUS "[ThirdParty][abseil-cpp] cve patch use cache: ${ABSL_CVE_PATCH_FILE}")
84+ endif()
88 85 
89 ExternalProject_Add(abseil_build86 ExternalProject_Add(abseil_build
90 URL ${REQ_URL}87 URL ${REQ_URL}
@@ -92,7 +89,7 @@ else()
92 DOWNLOAD_DIR ${ABS_PKG_DIR}89 DOWNLOAD_DIR ${ABS_PKG_DIR}
93 SOURCE_DIR ${ABS_INSTALL_DIR}90 SOURCE_DIR ${ABS_INSTALL_DIR}
94 TIMEOUT 30091 TIMEOUT 300
95- PATCH_COMMAND patch -p1 < ${CMAKE_CURRENT_LIST_DIR}/patch/protobuf-hide_absl_symbols.patch && patch -p1 < ${ABSL_CVE_PATCH_FILE} && patch -p1 < ${CMAKE_CURRENT_LIST_DIR}/patch/fix-gcc15-gcc16-container-memory-cstdint.patch92+ PATCH_COMMAND patch --forward --batch --quiet -r - -p1 < ${CMAKE_CURRENT_LIST_DIR}/patch/protobuf-hide_absl_symbols.patch && patch --forward --batch --quiet -r - -p1 < ${ABSL_CVE_PATCH_FILE} && patch --forward --batch --quiet -r - -p1 < ${CMAKE_CURRENT_LIST_DIR}/patch/fix-gcc15-gcc16-container-memory-cstdint.patch
96 CONFIGURE_COMMAND ""93 CONFIGURE_COMMAND ""
97 BUILD_COMMAND ""94 BUILD_COMMAND ""
98 INSTALL_COMMAND ""95 INSTALL_COMMAND ""
@@ -43,7 +43,7 @@ else()
43endif()43endif()
44 44 
45include(ExternalProject)45include(ExternalProject)
46-set(benchmark_CXXFLAGS "-D_GLIBCXX_USE_CXX11_ABI=${USE_CXX11_ABI} -D_FORTIFY_SOURCE=2 -O2 -fstack-protector-all -Wl,-z,relro,-z,now,-z,noexecstack")46+set(benchmark_CXXFLAGS "-D_GLIBCXX_USE_CXX11_ABI=${CANN_CXX11_ABI} -D_FORTIFY_SOURCE=2 -O2 -fstack-protector-all -Wl,-z,relro,-z,now,-z,noexecstack")
47set(BENCHMARK_TOOLCHAIN_ARGS)47set(BENCHMARK_TOOLCHAIN_ARGS)
48if(CMAKE_TOOLCHAIN_FILE)48if(CMAKE_TOOLCHAIN_FILE)
49 list(APPEND BENCHMARK_TOOLCHAIN_ARGS -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE})49 list(APPEND BENCHMARK_TOOLCHAIN_ARGS -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE})
@@ -13,10 +13,6 @@ include(ExternalProject)
13unset(boost_FOUND CACHE)13unset(boost_FOUND CACHE)
14unset(BOOST_INCLUDE CACHE)14unset(BOOST_INCLUDE CACHE)
15 15 
16-if(NOT OPEN_PKG_PATH)
17- set(OPEN_PKG_PATH ${CANN_3RD_LIB_PATH}/pkg)
18-endif()
19- 
20set(BOOST_DOWNLOAD_PATH ${CANN_3RD_LIB_PATH}/pkg)16set(BOOST_DOWNLOAD_PATH ${CANN_3RD_LIB_PATH}/pkg)
21set(BOOST_SRC_PATH ${CANN_3RD_LIB_PATH}/boost)17set(BOOST_SRC_PATH ${CANN_3RD_LIB_PATH}/boost)
22set(BOOST_INSTALL_PATH ${CANN_3RD_LIB_PATH}/lib_cache/boost)18set(BOOST_INSTALL_PATH ${CANN_3RD_LIB_PATH}/lib_cache/boost)
@@ -44,16 +40,17 @@ if(boost_FOUND AND NOT FORCE_REBUILD_CANN_3RD)
44else()40else()
45 if(EXISTS ${CANN_3RD_LIB_PATH}/boost/${BOOST_FILE})41 if(EXISTS ${CANN_3RD_LIB_PATH}/boost/${BOOST_FILE})
46 set(REQ_URL ${CANN_3RD_LIB_PATH}/boost/${BOOST_FILE})42 set(REQ_URL ${CANN_3RD_LIB_PATH}/boost/${BOOST_FILE})
47- message(STATUS "[ThirdParty][boost] Found local boost package: ${REQ_URL}")
48 elseif(EXISTS ${CANN_3RD_LIB_PATH}/${BOOST_FILE})43 elseif(EXISTS ${CANN_3RD_LIB_PATH}/${BOOST_FILE})
49 # 离线编译场景,优先使用已下载的包44 # 离线编译场景,优先使用已下载的包
50 set(REQ_URL ${CANN_3RD_LIB_PATH}/${BOOST_FILE})45 set(REQ_URL ${CANN_3RD_LIB_PATH}/${BOOST_FILE})
51- message(STATUS "[ThirdParty][boost] Found local boost package: ${REQ_URL}")
52 else()46 else()
53 # 下载并解压47 # 下载并解压
54- message(STATUS "[ThirdParty][boost] Downloading ${BOOST_NAME} from ${DOWNLOAD_URL}")48+ message(STATUS "[ThirdParty][boost] Downloading ${BOOST_FILE} from ${DOWNLOAD_URL}")
55 set(REQ_URL ${DOWNLOAD_URL})49 set(REQ_URL ${DOWNLOAD_URL})
56 endif()50 endif()
51+ if(EXISTS ${REQ_URL})
52+ message(STATUS "[ThirdParty][boost] Found local boost package: ${REQ_URL}")
53+ endif()
57 54 
58 ExternalProject_Add(third_party_boost55 ExternalProject_Add(third_party_boost
59 URL ${REQ_URL}56 URL ${REQ_URL}
@@ -64,6 +61,7 @@ else()
64 CONFIGURE_COMMAND "" # 无需编译,只需解压61 CONFIGURE_COMMAND "" # 无需编译,只需解压
65 BUILD_COMMAND ""62 BUILD_COMMAND ""
66 INSTALL_COMMAND ""63 INSTALL_COMMAND ""
64+ EXCLUDE_FROM_ALL TRUE
67 )65 )
68endif()66endif()
69 67 
@@ -87,7 +85,7 @@ ExternalProject_Add(third_party_boost_headers
87 runtime-link=shared85 runtime-link=shared
88 threading=multi86 threading=multi
89 cxxstd=1787 cxxstd=17
90- "cxxflags=-fPIC -fstack-protector-all -D_FORTIFY_SOURCE=2 -fvisibility=hidden -fvisibility-inlines-hidden -fno-common -D_GLIBCXX_USE_CXX11_ABI=0 -DBOOST_FILESYSTEM_NO_CXX20_ATOMIC_REF"88+ "cxxflags=-fPIC -fstack-protector-all -D_FORTIFY_SOURCE=2 -fvisibility=hidden -fvisibility-inlines-hidden -fno-common -D_GLIBCXX_USE_CXX11_ABI=${CANN_CXX11_ABI} -DBOOST_FILESYSTEM_NO_CXX20_ATOMIC_REF"
91 install89 install
92 INSTALL_COMMAND ""90 INSTALL_COMMAND ""
93 BUILD_BYPRODUCTS ${BOOST_FILESYSTEM_LIBRARY}91 BUILD_BYPRODUCTS ${BOOST_FILESYSTEM_LIBRARY}
@@ -106,9 +104,7 @@ add_library(Boost::filesystem ALIAS boost_filesystem)
106 104 
107# use for dvpp service105# use for dvpp service
108add_library(boost INTERFACE)106add_library(boost INTERFACE)
109-set_property(TARGET boost PROPERTY107+target_include_directories(boost SYSTEM INTERFACE ${BOOST_SRC_PATH})
110- INTERFACE_INCLUDE_DIRECTORIES ${BOOST_SRC_PATH}
111-)
112add_library(Boost::boost ALIAS boost)108add_library(Boost::boost ALIAS boost)
113if(TARGET third_party_boost)109if(TARGET third_party_boost)
114 add_dependencies(third_party_boost_headers third_party_boost)110 add_dependencies(third_party_boost_headers third_party_boost)
@@ -10,33 +10,30 @@
10 10 
11include_guard(GLOBAL)11include_guard(GLOBAL)
12 12 
13-if(POLICY CMP0135)
14- cmake_policy(SET CMP0135 NEW)
15-endif()
16- 
17if(PRODUCT_SIDE STREQUAL "device")13if(PRODUCT_SIDE STREQUAL "device")
18- set(CARES_INTALL_PATH ${CANN_3RD_LIB_PATH}/lib_cache/device/c-ares)14+ set(CARES_INSTALL_PATH ${CANN_3RD_LIB_PATH}/lib_cache/device/c-ares)
19 set(CARES_PKG_PATH ${CANN_3RD_LIB_PATH}/pkg/device)15 set(CARES_PKG_PATH ${CANN_3RD_LIB_PATH}/pkg/device)
20else()16else()
21- set(CARES_INTALL_PATH ${CANN_3RD_LIB_PATH}/lib_cache/c-ares)17+ set(CARES_INSTALL_PATH ${CANN_3RD_LIB_PATH}/lib_cache/c-ares)
22 set(CARES_PKG_PATH ${CANN_3RD_LIB_PATH}/pkg)18 set(CARES_PKG_PATH ${CANN_3RD_LIB_PATH}/pkg)
23endif()19endif()
24 20 
25-set(CARES_FILE ${CARES_INTALL_PATH}/include/ares.h)21+set(CARES_FILE ${CARES_INSTALL_PATH}/include/ares.h)
26if (EXISTS ${CARES_FILE})22if (EXISTS ${CARES_FILE})
27- message(STATUS "[ThirdPartyLib][c-ares] ${CARES_FILE} found.")23+ message(STATUS "[ThirdParty][cares] ${CARES_FILE} found.")
28 add_custom_target(cares_build)24 add_custom_target(cares_build)
29else()25else()
30 26 
31 if(EXISTS ${CANN_3RD_LIB_PATH}/c-ares/c-ares-1.19.1.tar.gz)27 if(EXISTS ${CANN_3RD_LIB_PATH}/c-ares/c-ares-1.19.1.tar.gz)
32 set(REQ_URL "${CANN_3RD_LIB_PATH}/c-ares/c-ares-1.19.1.tar.gz")28 set(REQ_URL "${CANN_3RD_LIB_PATH}/c-ares/c-ares-1.19.1.tar.gz")
33- message(STATUS "[ThirdPartyLib][c-ares] ${REQ_URL} found.")
34 elseif(EXISTS ${CANN_3RD_LIB_PATH}/c-ares-1.19.1.tar.gz)29 elseif(EXISTS ${CANN_3RD_LIB_PATH}/c-ares-1.19.1.tar.gz)
35 set(REQ_URL "${CANN_3RD_LIB_PATH}/c-ares-1.19.1.tar.gz")30 set(REQ_URL "${CANN_3RD_LIB_PATH}/c-ares-1.19.1.tar.gz")
36- message(STATUS "[ThirdPartyLib][c-ares] ${REQ_URL} found.")
37 else()31 else()
38 set(REQ_URL "https://cann-3rd.obs.cn-north-4.myhuaweicloud.com/c-ares/c-ares-1.19.1.tar.gz")32 set(REQ_URL "https://cann-3rd.obs.cn-north-4.myhuaweicloud.com/c-ares/c-ares-1.19.1.tar.gz")
39- message(STATUS "[ThirdPartyLib][c-ares] ${REQ_URL} not found, need download.")33+ message(STATUS "[ThirdParty][cares] ${REQ_URL} not found, need download.")
34+ endif()
35+ if(EXISTS ${REQ_URL})
36+ message(STATUS "[ThirdParty][cares] ${REQ_URL} found.")
40 endif()37 endif()
41 38 
42 include(ExternalProject)39 include(ExternalProject)
@@ -45,11 +42,11 @@ else()
45 URL_HASH SHA256=321700399b72ed0e037d0074c629e7741f6b2ec2dda92956abe3e9671d3e268e42 URL_HASH SHA256=321700399b72ed0e037d0074c629e7741f6b2ec2dda92956abe3e9671d3e268e
46 TIMEOUT 30043 TIMEOUT 300
47 DOWNLOAD_DIR ${CARES_PKG_PATH}44 DOWNLOAD_DIR ${CARES_PKG_PATH}
48- SOURCE_DIR ${CARES_INTALL_PATH}45+ SOURCE_DIR ${CARES_INSTALL_PATH}
49 CONFIGURE_COMMAND ""46 CONFIGURE_COMMAND ""
50 BUILD_COMMAND ""47 BUILD_COMMAND ""
51 INSTALL_COMMAND ""48 INSTALL_COMMAND ""
52 EXCLUDE_FROM_ALL TRUE49 EXCLUDE_FROM_ALL TRUE
53- DWONLOAD_NO_PROGRESS TRUE50+ DOWNLOAD_NO_PROGRESS TRUE
54 )51 )
55endif()52endif()
@@ -9,10 +9,6 @@
9# -----------------------------------------------------------------------------------------------------------9# -----------------------------------------------------------------------------------------------------------
10include_guard(GLOBAL)10include_guard(GLOBAL)
11 11 
12-if(POLICY CMP0135)
13- cmake_policy(SET CMP0135 NEW)
14-endif()
15- 
16if(EXISTS "${CANN_3RD_LIB_PATH}/eigen-5.0.0.tar.gz")12if(EXISTS "${CANN_3RD_LIB_PATH}/eigen-5.0.0.tar.gz")
17 message(STATUS "[ThirdParty][eigen] tar.gz found in cache: ${CANN_3RD_LIB_PATH}/eigen-5.0.0.tar.gz")13 message(STATUS "[ThirdParty][eigen] tar.gz found in cache: ${CANN_3RD_LIB_PATH}/eigen-5.0.0.tar.gz")
18 set(REQ_URL "${CANN_3RD_LIB_PATH}/eigen-5.0.0.tar.gz")14 set(REQ_URL "${CANN_3RD_LIB_PATH}/eigen-5.0.0.tar.gz")
@@ -23,7 +19,7 @@ elseif(IS_DIRECTORY "${CANN_3RD_LIB_PATH}/eigen")
23 message(STATUS "[ThirdParty][eigen] path found in cache: ${CANN_3RD_LIB_PATH}/eigen")19 message(STATUS "[ThirdParty][eigen] path found in cache: ${CANN_3RD_LIB_PATH}/eigen")
24 set(REQ_URL "${CANN_3RD_LIB_PATH}/eigen")20 set(REQ_URL "${CANN_3RD_LIB_PATH}/eigen")
25else()21else()
26- message("[ThirdParty][eigen] package needs to be downloaded.")22+ message(STATUS "[ThirdParty][eigen] package needs to be downloaded.")
27 set(REQ_URL "https://cann-3rd.obs.cn-north-4.myhuaweicloud.com/eigen/eigen-5.0.0.tar.gz")23 set(REQ_URL "https://cann-3rd.obs.cn-north-4.myhuaweicloud.com/eigen/eigen-5.0.0.tar.gz")
28endif()24endif()
29 25 
@@ -36,17 +32,14 @@ ExternalProject_Add(external_eigen
36 PREFIX third_party32 PREFIX third_party
37 INSTALL_COMMAND ""33 INSTALL_COMMAND ""
38 BUILD_COMMAND ""34 BUILD_COMMAND ""
39- INSTALL_COMMAND ""35+ EXCLUDE_FROM_ALL TRUE
40)36)
41 37 
42ExternalProject_Get_Property(external_eigen SOURCE_DIR)38ExternalProject_Get_Property(external_eigen SOURCE_DIR)
43 39 
44add_library(Eigen INTERFACE)40add_library(Eigen INTERFACE)
45target_compile_options(Eigen INTERFACE -w)41target_compile_options(Eigen INTERFACE -w)
46- 42+target_include_directories(Eigen SYSTEM INTERFACE "${SOURCE_DIR}")
47-set_target_properties(Eigen PROPERTIES
48- INTERFACE_INCLUDE_DIRECTORIES "${SOURCE_DIR}"
49-)
50add_dependencies(Eigen external_eigen)43add_dependencies(Eigen external_eigen)
51 44 
52add_library(Eigen3::Eigen ALIAS Eigen)45add_library(Eigen3::Eigen ALIAS Eigen)
@@ -9,9 +9,6 @@
9# -----------------------------------------------------------------------------------------------------------9# -----------------------------------------------------------------------------------------------------------
10include_guard(GLOBAL)10include_guard(GLOBAL)
11include(ExternalProject)11include(ExternalProject)
12-if(POLICY CMP0135)
13- cmake_policy(SET CMP0135 NEW)
14-endif()
15 12 
16include(${CMAKE_CURRENT_LIST_DIR}/openssl.cmake)13include(${CMAKE_CURRENT_LIST_DIR}/openssl.cmake)
17include(${CMAKE_CURRENT_LIST_DIR}/re2.cmake)14include(${CMAKE_CURRENT_LIST_DIR}/re2.cmake)
@@ -152,7 +149,7 @@ else()
152 )149 )
153 endif()150 endif()
154 151 
155- set(GRPC_CXX_FLAGS "-Wl,-z,relro,-z,now,-z,noexecstack -D_FORTIFY_SOURCE=2 -O2 -fstack-protector-all -s -D_GLIBCXX_USE_CXX11_ABI=${USE_CXX11_ABI}")152+ set(GRPC_CXX_FLAGS "-Wl,-z,relro,-z,now,-z,noexecstack -D_FORTIFY_SOURCE=2 -O2 -fstack-protector-all -s -D_GLIBCXX_USE_CXX11_ABI=${CANN_CXX11_ABI}")
156 set(GRPC_TOOLCHAIN_ARGS)153 set(GRPC_TOOLCHAIN_ARGS)
157 if(CMAKE_TOOLCHAIN_FILE)154 if(CMAKE_TOOLCHAIN_FILE)
158 list(APPEND GRPC_TOOLCHAIN_ARGS -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE})155 list(APPEND GRPC_TOOLCHAIN_ARGS -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE})
@@ -166,18 +163,18 @@ else()
166 TIMEOUT 300163 TIMEOUT 300
167 ${GRPC_EXTRA_ARGS}164 ${GRPC_EXTRA_ARGS}
168 PATCH_COMMAND ${CMAKE_COMMAND} -E make_directory <SOURCE_DIR>/third_party/opencensus-proto/src165 PATCH_COMMAND ${CMAKE_COMMAND} -E make_directory <SOURCE_DIR>/third_party/opencensus-proto/src
169- COMMAND patch -p1 < ${CMAKE_CURRENT_LIST_DIR}/patch/grpc-fix-compile-bug-in-device.patch166+ COMMAND patch --forward --batch --quiet -r - -p1 < ${CMAKE_CURRENT_LIST_DIR}/patch/grpc-fix-compile-bug-in-device.patch
170 CONFIGURE_COMMAND ${CMAKE_COMMAND}167 CONFIGURE_COMMAND ${CMAKE_COMMAND}
171 # zlib168 # zlib
172 -DgRPC_ZLIB_PROVIDER=module169 -DgRPC_ZLIB_PROVIDER=module
173 -DZLIB_ROOT_DIR=${ZLIB_SRC_DIR}170 -DZLIB_ROOT_DIR=${ZLIB_SRC_DIR}
174 # cares171 # cares
175 -DgRPC_CARES_PROVIDER=module172 -DgRPC_CARES_PROVIDER=module
176- -DCARES_ROOT_DIR=${CARES_INTALL_PATH}173+ -DCARES_ROOT_DIR=${CARES_INSTALL_PATH}
177 -DCARES_BUILD_TOOLS=OFF174 -DCARES_BUILD_TOOLS=OFF
178 # re2175 # re2
179 -DgRPC_RE2_PROVIDER=module176 -DgRPC_RE2_PROVIDER=module
180- -DRE2_ROOT_DIR=${RE2_INTALL_PATH}177+ -DRE2_ROOT_DIR=${RE2_INSTALL_PATH}
181 # absl178 # absl
182 -DgRPC_ABSL_PROVIDER=module179 -DgRPC_ABSL_PROVIDER=module
183 -DABSL_ROOT_DIR=${ABS_INSTALL_DIR}180 -DABSL_ROOT_DIR=${ABS_INSTALL_DIR}
@@ -240,7 +237,7 @@ else()
240 )237 )
241 endif()238 endif()
242 239 
243- set(GRPC_CXX_FLAGS "-Wl,-z,relro,-z,now,-z,noexecstack -D_FORTIFY_SOURCE=2 -O2 -fstack-protector-all -s -D_GLIBCXX_USE_CXX11_ABI=${USE_CXX11_ABI}")240+ set(GRPC_CXX_FLAGS "-Wl,-z,relro,-z,now,-z,noexecstack -D_FORTIFY_SOURCE=2 -O2 -fstack-protector-all -s -D_GLIBCXX_USE_CXX11_ABI=${CANN_CXX11_ABI}")
244 241 
245 ExternalProject_Add(protoc_grpc_build242 ExternalProject_Add(protoc_grpc_build
246 URL ${REQ_URL}243 URL ${REQ_URL}
@@ -248,16 +245,16 @@ else()
248 TIMEOUT 300245 TIMEOUT 300
249 ${GRPC_EXTRA_ARGS}246 ${GRPC_EXTRA_ARGS}
250 PATCH_COMMAND ${CMAKE_COMMAND} -E make_directory <SOURCE_DIR>/third_party/opencensus-proto/src247 PATCH_COMMAND ${CMAKE_COMMAND} -E make_directory <SOURCE_DIR>/third_party/opencensus-proto/src
251- COMMAND patch -p1 < ${CMAKE_CURRENT_LIST_DIR}/patch/grpc-fix-compile-bug-in-device.patch248+ COMMAND patch --forward --batch --quiet -r - -p1 < ${CMAKE_CURRENT_LIST_DIR}/patch/grpc-fix-compile-bug-in-device.patch
252 CONFIGURE_COMMAND ${CMAKE_COMMAND}249 CONFIGURE_COMMAND ${CMAKE_COMMAND}
253 # zlib250 # zlib
254 -DgRPC_ZLIB_PROVIDER=none251 -DgRPC_ZLIB_PROVIDER=none
255 # cares252 # cares
256 -DgRPC_CARES_PROVIDER=module253 -DgRPC_CARES_PROVIDER=module
257- -DCARES_ROOT_DIR=${CARES_INTALL_PATH}254+ -DCARES_ROOT_DIR=${CARES_INSTALL_PATH}
258 # re2255 # re2
259 -DgRPC_RE2_PROVIDER=module256 -DgRPC_RE2_PROVIDER=module
260- -DRE2_ROOT_DIR=${RE2_INTALL_PATH}257+ -DRE2_ROOT_DIR=${RE2_INSTALL_PATH}
261 # absl258 # absl
262 -DgRPC_ABSL_PROVIDER=module259 -DgRPC_ABSL_PROVIDER=module
263 -DABSL_ROOT_DIR=${ABS_INSTALL_DIR}260 -DABSL_ROOT_DIR=${ABS_INSTALL_DIR}
@@ -19,8 +19,6 @@ unset(GMOCK_MAIN_STATIC_LIBRARY CACHE)
19 19 
20set(GTEST_INSTALL_PATH ${CANN_3RD_LIB_PATH}/lib_cache/gtest)20set(GTEST_INSTALL_PATH ${CANN_3RD_LIB_PATH}/lib_cache/gtest)
21set(GTEST_DOWNLOAD_PATH ${CANN_3RD_LIB_PATH}/pkg)21set(GTEST_DOWNLOAD_PATH ${CANN_3RD_LIB_PATH}/pkg)
22-message(STATUS "[ThirdParty][gtest] GTEST_INSTALL_PATH=${GTEST_INSTALL_PATH}")
23-message(STATUS "[ThirdParty][gtest] GTEST_DOWNLOAD_PATH=${GTEST_DOWNLOAD_PATH}")
24 22 
25find_path(GTEST_INCLUDE23find_path(GTEST_INCLUDE
26 NAMES gtest/gtest.h24 NAMES gtest/gtest.h
@@ -69,8 +67,6 @@ find_package_handle_standard_args(gtest
69 GMOCK_MAIN_STATIC_LIBRARY67 GMOCK_MAIN_STATIC_LIBRARY
70)68)
71 69 
72-message(STATUS "[ThirdParty][gtest] Found GTest: ${gtest_FOUND}")
73- 
74if(gtest_FOUND AND NOT FORCE_REBUILD_CANN_3RD)70if(gtest_FOUND AND NOT FORCE_REBUILD_CANN_3RD)
75 message(STATUS "[ThirdParty][gtest] GTest found in ${GTEST_INSTALL_PATH}, and not force rebuild")71 message(STATUS "[ThirdParty][gtest] GTest found in ${GTEST_INSTALL_PATH}, and not force rebuild")
76else()72else()
@@ -95,12 +91,8 @@ else()
95 set(GTEST_PROJECT_URL "https://cann-3rd.obs.cn-north-4.myhuaweicloud.com/googletest/googletest-1.14.0.tar.gz")91 set(GTEST_PROJECT_URL "https://cann-3rd.obs.cn-north-4.myhuaweicloud.com/googletest/googletest-1.14.0.tar.gz")
96 endif()92 endif()
97 93 
98- if(NOT DEFINED USE_CXX11_ABI)94+ set(GTEST_CXXFLAGS "-D_GLIBCXX_USE_CXX11_ABI=${CANN_CXX11_ABI} -O2 -D_FORTIFY_SOURCE=2 -fPIC -fstack-protector-all -Wl,-z,relro,-z,now,-z,noexecstack")
99- set(USE_CXX11_ABI 0)95+ set(GTEST_CFLAGS "-O2 -D_FORTIFY_SOURCE=2 -fPIC -fstack-protector-all -Wl,-z,relro,-z,now,-z,noexecstack")
100- endif()
101- 
102- set(GTEST_CXXFLAGS "-D_GLIBCXX_USE_CXX11_ABI=${USE_CXX11_ABI} -O2 -D_FORTIFY_SOURCE=2 -fPIC -fstack-protector-all -Wl,-z,relro,-z,now,-z,noexecstack")
103- set(GTEST_CFLAGS "-D_GLIBCXX_USE_CXX11_ABI=${USE_CXX11_ABI} -O2 -D_FORTIFY_SOURCE=2 -fPIC -fstack-protector-all -Wl,-z,relro,-z,now,-z,noexecstack")
104 96 
105 include(ExternalProject)97 include(ExternalProject)
106 # adaptive the gtest upgrade scenario, reset the installation path.98 # adaptive the gtest upgrade scenario, reset the installation path.
@@ -150,5 +142,3 @@ set_target_properties(GTest::gmock PROPERTIES
150 INTERFACE_INCLUDE_DIRECTORIES ${GTEST_INCLUDE}142 INTERFACE_INCLUDE_DIRECTORIES ${GTEST_INCLUDE}
151 IMPORTED_LOCATION ${GTEST_INSTALL_PATH}/lib/libgmock.a143 IMPORTED_LOCATION ${GTEST_INSTALL_PATH}/lib/libgmock.a
152)144)
153- 
154-message(STATUS "[ThirdParty][gtest] configured successfully.")
@@ -52,12 +52,6 @@ find_library(GMOCK_MAIN_LIBRARY
52 NO_CMAKE_FIND_ROOT_PATH52 NO_CMAKE_FIND_ROOT_PATH
53 PATHS ${GTEST_INSTALL_PATH})53 PATHS ${GTEST_INSTALL_PATH})
54 54 
55-find_program(CCACHE_PROGRAM ccache)
56-if(CCACHE_PROGRAM)
57- set(CMAKE_C_COMPILER_LAUNCHER ${CCACHE_PROGRAM})
58- set(CMAKE_CXX_COMPILER_LAUNCHER ${CCACHE_PROGRAM})
59-endif()
60- 
61include(FindPackageHandleStandardArgs)55include(FindPackageHandleStandardArgs)
62find_package_handle_standard_args(gtest56find_package_handle_standard_args(gtest
63 FOUND_VAR57 FOUND_VAR
@@ -68,7 +62,6 @@ find_package_handle_standard_args(gtest
68 GTEST_MAIN_LIBRARY62 GTEST_MAIN_LIBRARY
69 GMOCK_LIBRARY63 GMOCK_LIBRARY
70 GMOCK_MAIN_LIBRARY)64 GMOCK_MAIN_LIBRARY)
71-message(STATUS "[ThirdParty][gtest_shared] shared FOUND found:${gtest_FOUND}")
72 65 
73if(GTEST_FOUND AND NOT FORCE_REBUILD_CANN_3RD)66if(GTEST_FOUND AND NOT FORCE_REBUILD_CANN_3RD)
74 message(STATUS "[ThirdParty][gtest_shared] shared found in ${GTEST_INSTALL_PATH}, and not force rebuild cann third_party")67 message(STATUS "[ThirdParty][gtest_shared] shared found in ${GTEST_INSTALL_PATH}, and not force rebuild cann third_party")
@@ -80,8 +73,8 @@ else()
80 message(STATUS "[ThirdParty][gtest_shared] not use cache, download the source code")73 message(STATUS "[ThirdParty][gtest_shared] not use cache, download the source code")
81 set(REQ_URL "https://cann-3rd.obs.cn-north-4.myhuaweicloud.com/googletest/googletest-1.14.0.tar.gz")74 set(REQ_URL "https://cann-3rd.obs.cn-north-4.myhuaweicloud.com/googletest/googletest-1.14.0.tar.gz")
82 endif()75 endif()
83- set (gtest_CXXFLAGS "-D_GLIBCXX_USE_CXX11_ABI=0 -O2 -D_FORTIFY_SOURCE=2 -fPIC -fstack-protector-all -Wl,-z,relro,-z,now,-z,noexecstack")76+ set (gtest_CXXFLAGS "-D_GLIBCXX_USE_CXX11_ABI=${CANN_CXX11_ABI} -O2 -D_FORTIFY_SOURCE=2 -fPIC -fstack-protector-all -Wl,-z,relro,-z,now,-z,noexecstack")
84- set (gtest_CFLAGS "-D_GLIBCXX_USE_CXX11_ABI=0 -O2 -D_FORTIFY_SOURCE=2 -fPIC -fstack-protector-all -Wl,-z,relro,-z,now,-z,noexecstack")77+ set (gtest_CFLAGS "-O2 -D_FORTIFY_SOURCE=2 -fPIC -fstack-protector-all -Wl,-z,relro,-z,now,-z,noexecstack")
85 78 
86 include(ExternalProject)79 include(ExternalProject)
87 ExternalProject_Add(gtest_shared_build80 ExternalProject_Add(gtest_shared_build
@@ -96,8 +89,8 @@ else()
96 -DCMAKE_INSTALL_PREFIX=${GTEST_INSTALL_PATH}89 -DCMAKE_INSTALL_PREFIX=${GTEST_INSTALL_PATH}
97 -DCMAKE_INSTALL_LIBDIR=lib6490 -DCMAKE_INSTALL_LIBDIR=lib64
98 -DBUILD_SHARED_LIBS=ON91 -DBUILD_SHARED_LIBS=ON
99- -DCMAKE_C_COMPILER_LAUNCHER=${CCACHE_PROGRAM}92+ -DCMAKE_C_COMPILER_LAUNCHER=${CMAKE_C_COMPILER_LAUNCHER}
100- -DCMAKE_CXX_COMPILER_LAUNCHER=${CCACHE_PROGRAM}93+ -DCMAKE_CXX_COMPILER_LAUNCHER=${CMAKE_CXX_COMPILER_LAUNCHER}
101 <SOURCE_DIR>94 <SOURCE_DIR>
102 BUILD_COMMAND $(MAKE)95 BUILD_COMMAND $(MAKE)
103 INSTALL_COMMAND $(MAKE) install96 INSTALL_COMMAND $(MAKE) install
@@ -117,8 +110,6 @@ add_dependencies(GTestShared::gtest_main gtest_shared_build)
117add_library(GTestShared::gmock_main SHARED IMPORTED GLOBAL)110add_library(GTestShared::gmock_main SHARED IMPORTED GLOBAL)
118add_dependencies(GTestShared::gmock_main gtest_shared_build)111add_dependencies(GTestShared::gmock_main gtest_shared_build)
119 112 
120-message(STATUS "[ThirdParty][gtest_shared] GTEST_INSTALL_PATH = ${GTEST_INSTALL_PATH}")
121- 
122if (NOT EXISTS ${GTEST_INSTALL_PATH}/include)113if (NOT EXISTS ${GTEST_INSTALL_PATH}/include)
123 file(MAKE_DIRECTORY "${GTEST_INSTALL_PATH}/include")114 file(MAKE_DIRECTORY "${GTEST_INSTALL_PATH}/include")
124endif ()115endif ()
@@ -9,9 +9,6 @@
9# the software repository for the full text of the License.9# the software repository for the full text of the License.
10# ----------------------------------------------------------------------------10# ----------------------------------------------------------------------------
11include_guard(GLOBAL)11include_guard(GLOBAL)
12-if(POLICY CMP0135)
13- cmake_policy(SET CMP0135 NEW)
14-endif()
15 12 
16set(JPEG_TAR_PKG_PATH ${CANN_3RD_LIB_PATH}/libjpeg-turbo/libjpeg-turbo-3.0.1.tar.gz)13set(JPEG_TAR_PKG_PATH ${CANN_3RD_LIB_PATH}/libjpeg-turbo/libjpeg-turbo-3.0.1.tar.gz)
17if(EXISTS "${JPEG_TAR_PKG_PATH}")14if(EXISTS "${JPEG_TAR_PKG_PATH}")
@@ -19,7 +16,7 @@ if(EXISTS "${JPEG_TAR_PKG_PATH}")
19else()16else()
20 set(REQ_URL "https://cann-3rd.obs.cn-north-4.myhuaweicloud.com/libjpeg-turbo/libjpeg-turbo-3.0.1.tar.gz")17 set(REQ_URL "https://cann-3rd.obs.cn-north-4.myhuaweicloud.com/libjpeg-turbo/libjpeg-turbo-3.0.1.tar.gz")
21endif()18endif()
22-message("[ThirdParty][libjpeg-turbo] valued url path: ${REQ_URL}.")19+message(STATUS "[ThirdParty][libjpeg-turbo] valued url path: ${REQ_URL}.")
23 20 
24set(JPEG_C_FLAGS "-fPIC -fexceptions -D_FORTIFY_SOURCE=2 -O2 -fvisibility=hidden -DCONFIG_MASK_JWARN")21set(JPEG_C_FLAGS "-fPIC -fexceptions -D_FORTIFY_SOURCE=2 -O2 -fvisibility=hidden -DCONFIG_MASK_JWARN")
25set(JPEG_INSTALL_PATH ${CMAKE_CURRENT_BINARY_DIR}/libjpeg-turbo)22set(JPEG_INSTALL_PATH ${CMAKE_CURRENT_BINARY_DIR}/libjpeg-turbo)
@@ -39,7 +36,7 @@ ExternalProject_Add(third_party_jpeg
39 URL_HASH SHA256=22429507714ae147b3acacd299e82099fce5d9f456882fc28e252e4579ba2a7536 URL_HASH SHA256=22429507714ae147b3acacd299e82099fce5d9f456882fc28e252e4579ba2a75
40 TIMEOUT 30037 TIMEOUT 300
41 CONFIGURE_COMMAND ${CMAKE_COMMAND}38 CONFIGURE_COMMAND ${CMAKE_COMMAND}
42- -DCMAKE_C_COMPILER_LAUNCHER=${CCACHE_PROGRAM}39+ -DCMAKE_C_COMPILER_LAUNCHER=${CMAKE_C_COMPILER_LAUNCHER}
43 -DCMAKE_C_FLAGS=${JPEG_C_FLAGS}40 -DCMAKE_C_FLAGS=${JPEG_C_FLAGS}
44 -DCMAKE_INSTALL_PREFIX=${JPEG_INSTALL_PATH}41 -DCMAKE_INSTALL_PREFIX=${JPEG_INSTALL_PATH}
45 -DCMAKE_INSTALL_DEFAULT_LIBDIR=lib42 -DCMAKE_INSTALL_DEFAULT_LIBDIR=lib
@@ -64,7 +61,7 @@ set_target_properties(jpeg PROPERTIES
64add_dependencies(jpeg third_party_jpeg)61add_dependencies(jpeg third_party_jpeg)
65 62 
66add_library(jpeg_headers INTERFACE)63add_library(jpeg_headers INTERFACE)
67-target_include_directories(jpeg_headers INTERFACE ${JPEG_INSTALL_PATH}/include)64+target_include_directories(jpeg_headers SYSTEM INTERFACE ${JPEG_INSTALL_PATH}/include)
68add_dependencies(jpeg_headers third_party_jpeg)65add_dependencies(jpeg_headers third_party_jpeg)
69 66 
70add_library(static_turbojpeg STATIC IMPORTED)67add_library(static_turbojpeg STATIC IMPORTED)
@@ -15,9 +15,6 @@ endif()
15 15 
16unset(json_FOUND CACHE)16unset(json_FOUND CACHE)
17unset(JSON_SOURCE CACHE)17unset(JSON_SOURCE CACHE)
18-if(NOT OPEN_PKG_PATH)
19- set(OPEN_PKG_PATH ${CANN_3RD_LIB_PATH}/pkg)
20-endif()
21 18 
22set(JSON_DOWNLOAD_PATH ${CANN_3RD_LIB_PATH}/pkg)19set(JSON_DOWNLOAD_PATH ${CANN_3RD_LIB_PATH}/pkg)
23 20 
@@ -76,7 +73,7 @@ if(NOT json_FOUND OR FORCE_REBUILD_CANN_3RD)
76 ExternalProject_Add(third_party_json73 ExternalProject_Add(third_party_json
77 ${JSON_URL_ARGS}74 ${JSON_URL_ARGS}
78 ${JSON_DOWNLOAD_ARGS}75 ${JSON_DOWNLOAD_ARGS}
79- PATCH_COMMAND patch -N --batch --quiet -r - -p1 < ${CMAKE_CURRENT_LIST_DIR}/patch/json_3.12.0_change_version.patch76+ PATCH_COMMAND patch --forward --batch --quiet -r - -p1 < ${CMAKE_CURRENT_LIST_DIR}/patch/json_3.12.0_change_version.patch
80 SOURCE_DIR ${JSON_SOURCE_PATH}77 SOURCE_DIR ${JSON_SOURCE_PATH}
81 CONFIGURE_COMMAND ""78 CONFIGURE_COMMAND ""
82 BUILD_COMMAND ""79 BUILD_COMMAND ""
@@ -85,13 +82,12 @@ if(NOT json_FOUND OR FORCE_REBUILD_CANN_3RD)
85 )82 )
86endif()83endif()
87 84 
88-message(STATUS "[ThirdParty][json] build json end, JSON_SOURCE_PATH: ${JSON_SOURCE_PATH}.")
89if(NOT TARGET json)85if(NOT TARGET json)
90 add_library(json INTERFACE)86 add_library(json INTERFACE)
91 add_dependencies(json third_party_json)87 add_dependencies(json third_party_json)
92 # use for transformer service's reference path88 # use for transformer service's reference path
93 set(JSON_INCLUDE_DIR ${JSON_SOURCE_PATH}/include)89 set(JSON_INCLUDE_DIR ${JSON_SOURCE_PATH}/include)
94- target_include_directories(json INTERFACE ${JSON_SOURCE_PATH}/include)90+ target_include_directories(json SYSTEM INTERFACE ${JSON_SOURCE_PATH}/include)
95 target_compile_definitions(json INTERFACE91 target_compile_definitions(json INTERFACE
96 nlohmann=ascend_nlohmann # 如果需要命名空间重映射92 nlohmann=ascend_nlohmann # 如果需要命名空间重映射
97 )93 )
@@ -37,10 +37,6 @@ set(LLVM_INSTALL_PATH ${CANN_3RD_LIB_PATH}/lib_cache/llvm_${LLVM_PROJECT_VERSION
37set(LLVM_DOWNLOAD_PATH ${CANN_3RD_LIB_PATH}/pkg)37set(LLVM_DOWNLOAD_PATH ${CANN_3RD_LIB_PATH}/pkg)
38set(LLVM_ARCHIVE ${LLVM_DOWNLOAD_PATH}/llvm-project-${LLVM_PROJECT_TAG}.tar.gz)38set(LLVM_ARCHIVE ${LLVM_DOWNLOAD_PATH}/llvm-project-${LLVM_PROJECT_TAG}.tar.gz)
39 39 
40-message(STATUS "[ThirdParty][llvm] LLVM_SOURCE_PATH=${LLVM_SOURCE_PATH}")
41-message(STATUS "[ThirdParty][llvm] LLVM_INSTALL_PATH=${LLVM_INSTALL_PATH}")
42-message(STATUS "[ThirdParty][llvm] LLVM_DOWNLOAD_PATH=${LLVM_DOWNLOAD_PATH}")
43- 
44if(NOT CMAKE_FIND_LIBRARY_PREFIXES)40if(NOT CMAKE_FIND_LIBRARY_PREFIXES)
45 set(CMAKE_FIND_LIBRARY_PREFIXES "lib")41 set(CMAKE_FIND_LIBRARY_PREFIXES "lib")
46endif()42endif()
@@ -86,9 +82,6 @@ find_package_handle_standard_args(llvm
86 MLIR_SUPPORT_LIBRARY82 MLIR_SUPPORT_LIBRARY
87)83)
88 84 
89-message(STATUS "[ThirdParty][llvm] Found LLVM/MLIR install cache: ${llvm_FOUND}")
90-message(STATUS "[ThirdParty][llvm] LLVM_REQUIRE_SOURCE=${LLVM_REQUIRE_SOURCE}")
91- 
92if(llvm_FOUND AND NOT FORCE_REBUILD_CANN_3RD AND NOT LLVM_REQUIRE_SOURCE)85if(llvm_FOUND AND NOT FORCE_REBUILD_CANN_3RD AND NOT LLVM_REQUIRE_SOURCE)
93 message(STATUS "[ThirdParty][llvm] LLVM/MLIR found in ${LLVM_INSTALL_PATH}, and not force rebuild")86 message(STATUS "[ThirdParty][llvm] LLVM/MLIR found in ${LLVM_INSTALL_PATH}, and not force rebuild")
94 return()87 return()
@@ -103,7 +96,6 @@ else()
103 message(STATUS "[ThirdParty][llvm] Downloading LLVM from ${LLVM_PROJECT_URL}")96 message(STATUS "[ThirdParty][llvm] Downloading LLVM from ${LLVM_PROJECT_URL}")
104 set(REQ_URL ${LLVM_PROJECT_URL})97 set(REQ_URL ${LLVM_PROJECT_URL})
105endif()98endif()
106-message("[ThirdParty][llvm] valued url path: ${REQ_URL}.")
107 99 
108include(ExternalProject)100include(ExternalProject)
109ExternalProject_Add(third_party_llvm101ExternalProject_Add(third_party_llvm
@@ -117,5 +109,3 @@ ExternalProject_Add(third_party_llvm
117 INSTALL_COMMAND ""109 INSTALL_COMMAND ""
118 EXCLUDE_FROM_ALL TRUE110 EXCLUDE_FROM_ALL TRUE
119)111)
120- 
121-message(STATUS "[ThirdParty][llvm] configured successfully.")
@@ -13,10 +13,6 @@ set(MAKESELF_NAME "makeself")
13set(MAKESELF_PATH "${CANN_3RD_LIB_PATH}/${MAKESELF_NAME}")13set(MAKESELF_PATH "${CANN_3RD_LIB_PATH}/${MAKESELF_NAME}")
14set(MAKESELF_TAR_PATH "${CANN_3RD_LIB_PATH}/makeself-release-2.5.0-patch1.tar.gz")14set(MAKESELF_TAR_PATH "${CANN_3RD_LIB_PATH}/makeself-release-2.5.0-patch1.tar.gz")
15 15 
16-if(POLICY CMP0135)
17- cmake_policy(SET CMP0135 NEW)
18-endif()
19- 
20# 新增:检查本地 tar.gz 包是否存在16# 新增:检查本地 tar.gz 包是否存在
21if (EXISTS "${MAKESELF_TAR_PATH}")17if (EXISTS "${MAKESELF_TAR_PATH}")
22 message(STATUS "[ThirdParty][makeself] found local tar.gz package: ${MAKESELF_TAR_PATH}, extracting...")18 message(STATUS "[ThirdParty][makeself] found local tar.gz package: ${MAKESELF_TAR_PATH}, extracting...")
@@ -9,8 +9,6 @@
9# -----------------------------------------------------------------------------------------------------------9# -----------------------------------------------------------------------------------------------------------
10include_guard(GLOBAL)10include_guard(GLOBAL)
11 11 
12-set(open_source_target_name mockcpp)
13- 
14if(CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL "aarch64")12if(CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL "aarch64")
15 set(mockcpp_CXXFLAGS "-fPIC")13 set(mockcpp_CXXFLAGS "-fPIC")
16else()14else()
@@ -19,11 +17,7 @@ endif()
19set(mockcpp_FLAGS "-fPIC")17set(mockcpp_FLAGS "-fPIC")
20set(mockcpp_LINKER_FLAGS "")18set(mockcpp_LINKER_FLAGS "")
21 19 
22-if(NOT DEFINED USE_CXX11_ABI)20+set(mockcpp_CXXFLAGS "${mockcpp_CXXFLAGS} -D_GLIBCXX_USE_CXX11_ABI=${CANN_CXX11_ABI}")
23- set(USE_CXX11_ABI 0)
24-endif()
25-set(mockcpp_CXXFLAGS "${mockcpp_CXXFLAGS} -D_GLIBCXX_USE_CXX11_ABI=${USE_CXX11_ABI}")
26-set(mockcpp_FLAGS "${mockcpp_FLAGS} -D_GLIBCXX_USE_CXX11_ABI=${USE_CXX11_ABI}")
27 21 
28#依赖蓝区二进制仓mockcpp22#依赖蓝区二进制仓mockcpp
29set(FILE_NAME mockcpp-2.7.tar.gz)23set(FILE_NAME mockcpp-2.7.tar.gz)
@@ -32,16 +26,13 @@ set(MOCKCPP_DOWNLOAD_PATH ${CANN_3RD_LIB_PATH}/pkg)
32set(MOCKCPP_SOURCE_PATH ${CANN_3RD_LIB_PATH}/mockcpp)26set(MOCKCPP_SOURCE_PATH ${CANN_3RD_LIB_PATH}/mockcpp)
33set(MOCK_INSTALL_PATH ${CANN_3RD_LIB_PATH}/lib_cache/mockcpp)27set(MOCK_INSTALL_PATH ${CANN_3RD_LIB_PATH}/lib_cache/mockcpp)
34 28 
35-message(STATUS "[ThirdParty][mockcpp] cmake install prefix ${CMAKE_INSTALL_PREFIX}")
36include(ExternalProject)29include(ExternalProject)
37 30 
38if(EXISTS ${CANN_3RD_LIB_PATH}/mockcpp-2.7-h5.patch)31if(EXISTS ${CANN_3RD_LIB_PATH}/mockcpp-2.7-h5.patch)
39 set(PATCH_FILE "${CANN_3RD_LIB_PATH}/mockcpp-2.7-h5.patch")32 set(PATCH_FILE "${CANN_3RD_LIB_PATH}/mockcpp-2.7-h5.patch")
40- message(STATUS "[ThirdParty][mockcpp] patch use cache: ${PATCH_FILE}")
41 add_custom_target(mockcpp_patch)33 add_custom_target(mockcpp_patch)
42elseif(EXISTS ${MOCKCPP_DOWNLOAD_PATH}/mockcpp-2.7-h5.patch)34elseif(EXISTS ${MOCKCPP_DOWNLOAD_PATH}/mockcpp-2.7-h5.patch)
43 set(PATCH_FILE ${MOCKCPP_DOWNLOAD_PATH}/mockcpp-2.7-h5.patch)35 set(PATCH_FILE ${MOCKCPP_DOWNLOAD_PATH}/mockcpp-2.7-h5.patch)
44- message(STATUS "[ThirdParty][mockcpp] patch use cache: ${PATCH_FILE}")
45 add_custom_target(mockcpp_patch)36 add_custom_target(mockcpp_patch)
46else()37else()
47 set(PATCH_FILE ${MOCKCPP_DOWNLOAD_PATH}/mockcpp-2.7-h5.patch)38 set(PATCH_FILE ${MOCKCPP_DOWNLOAD_PATH}/mockcpp-2.7-h5.patch)
@@ -60,8 +51,10 @@ else()
60 )51 )
61 message(STATUS "[ThirdParty][mockcpp] patch need download to: ${PATCH_FILE}")52 message(STATUS "[ThirdParty][mockcpp] patch need download to: ${PATCH_FILE}")
62endif()53endif()
54+if(TARGET mockcpp_patch)
55+ message(STATUS "[ThirdParty][mockcpp] patch use cache: ${PATCH_FILE}")
56+endif()
63 57 
64-message(STATUS "[ThirdParty][mockcpp] CMAKE_COMMAND is ${CMAKE_COMMAND}")
65if(EXISTS ${CANN_3RD_LIB_PATH}/mockcpp/${FILE_NAME})58if(EXISTS ${CANN_3RD_LIB_PATH}/mockcpp/${FILE_NAME})
66 set(REQ_URL ${CANN_3RD_LIB_PATH}/mockcpp/${FILE_NAME})59 set(REQ_URL ${CANN_3RD_LIB_PATH}/mockcpp/${FILE_NAME})
67 message(STATUS "[ThirdParty][mockcpp] use cache file: ${REQ_URL}")60 message(STATUS "[ThirdParty][mockcpp] use cache file: ${REQ_URL}")
@@ -80,7 +73,7 @@ ExternalProject_Add(mockcpp_static_build
80 DEPENDS third_party_boost mockcpp_patch73 DEPENDS third_party_boost mockcpp_patch
81 DOWNLOAD_DIR ${MOCKCPP_DOWNLOAD_PATH}74 DOWNLOAD_DIR ${MOCKCPP_DOWNLOAD_PATH}
82 SOURCE_DIR ${MOCKCPP_SOURCE_PATH}75 SOURCE_DIR ${MOCKCPP_SOURCE_PATH}
83- PATCH_COMMAND patch -p1 < ${PATCH_FILE}76+ PATCH_COMMAND patch --forward --batch --quiet -r - -p1 < ${PATCH_FILE}
84 CONFIGURE_COMMAND ${CMAKE_COMMAND} -G ${CMAKE_GENERATOR}77 CONFIGURE_COMMAND ${CMAKE_COMMAND} -G ${CMAKE_GENERATOR}
85 -DCMAKE_CXX_FLAGS=${mockcpp_CXXFLAGS}78 -DCMAKE_CXX_FLAGS=${mockcpp_CXXFLAGS}
86 -DCMAKE_C_FLAGS=${mockcpp_FLAGS}79 -DCMAKE_C_FLAGS=${mockcpp_FLAGS}
@@ -84,10 +84,11 @@ else()
84 # ========== 编译选项 ==========84 # ========== 编译选项 ==========
85 set(OPENSSL_OPTION "-fstack-protector-all -D_FORTIFY_SOURCE=2 -fvisibility=hidden -O2 -Wl,-z,relro,-z,now,-z,noexecstack -Wl,--build-id=none -s")85 set(OPENSSL_OPTION "-fstack-protector-all -D_FORTIFY_SOURCE=2 -fvisibility=hidden -O2 -Wl,-z,relro,-z,now,-z,noexecstack -Wl,--build-id=none -s")
86 86 
87- find_program(CCACHE_PROGRAM ccache)87+ # ccache 由 init_cann_project() 统一探测并设置到 CMAKE_*_COMPILER_LAUNCHER;
88- if(CCACHE_PROGRAM)88+ # OpenSSL 非 CMake 构建(Configure+make),不支持 launcher 语义,需前缀拼接。
89- set(OPENSSL_CC "${CCACHE_PROGRAM} ${CMAKE_C_COMPILER}")89+ if(CMAKE_C_COMPILER_LAUNCHER)
90- set(OPENSSL_CXX "${CCACHE_PROGRAM} ${CMAKE_CXX_COMPILER}")90+ set(OPENSSL_CC "${CMAKE_C_COMPILER_LAUNCHER} ${CMAKE_C_COMPILER}")
91+ set(OPENSSL_CXX "${CMAKE_CXX_COMPILER_LAUNCHER} ${CMAKE_CXX_COMPILER}")
91 else()92 else()
92 set(OPENSSL_CC "${CMAKE_C_COMPILER}")93 set(OPENSSL_CC "${CMAKE_C_COMPILER}")
93 set(OPENSSL_CXX "${CMAKE_CXX_COMPILER}")94 set(OPENSSL_CXX "${CMAKE_CXX_COMPILER}")
@@ -144,7 +145,6 @@ else()
144 endif()145 endif()
145endif()146endif()
146 147 
147-message(STATUS "[ThirdParty][openssl] libcrypto: ${CRYPTO_LIB_PATH} libssl: ${SSL_LIB_PATH} include: ${OPENSSL_INCLUDE}")
148if(NOT TARGET crypto_static)148if(NOT TARGET crypto_static)
149 add_library(crypto_static STATIC IMPORTED GLOBAL)149 add_library(crypto_static STATIC IMPORTED GLOBAL)
150 add_dependencies(crypto_static openssl_project)150 add_dependencies(crypto_static openssl_project)
@@ -9,10 +9,6 @@
9# -----------------------------------------------------------------------------------------------------------9# -----------------------------------------------------------------------------------------------------------
10include_guard(GLOBAL)10include_guard(GLOBAL)
11 11 
12-if(POLICY CMP0135)
13- cmake_policy(SET CMP0135 NEW)
14-endif()
15- 
16include(ExternalProject)12include(ExternalProject)
17include(GNUInstallDirs)13include(GNUInstallDirs)
18include(${CMAKE_CURRENT_LIST_DIR}/abseil-cpp.cmake)14include(${CMAKE_CURRENT_LIST_DIR}/abseil-cpp.cmake)
@@ -32,7 +28,7 @@ if(PRODUCT_SIDE STREQUAL "device")
32 set(LIB_SUB_DIR "lib64/device/lib64")28 set(LIB_SUB_DIR "lib64/device/lib64")
33 29 
34 # in device mode, need another path to save lib.30 # in device mode, need another path to save lib.
35- message("[ThirdParty][protobuf] device mode set protobuf lib path")31+ message(STATUS "[ThirdParty][protobuf] device mode set protobuf lib path")
36 set(PROTOBUF_STATIC_PKG_DIR ${CANN_3RD_LIB_PATH}/lib_cache/device/protobuf_static)32 set(PROTOBUF_STATIC_PKG_DIR ${CANN_3RD_LIB_PATH}/lib_cache/device/protobuf_static)
37 set(PROTOBUF_SHARED_PKG_DIR ${CANN_3RD_LIB_PATH}/lib_cache/device/protobuf_shared)33 set(PROTOBUF_SHARED_PKG_DIR ${CANN_3RD_LIB_PATH}/lib_cache/device/protobuf_shared)
38 set(PROTOBUF_HOST_STATIC_PKG_DIR ${CANN_3RD_LIB_PATH}/lib_cache/device/protobuf_host_static)34 set(PROTOBUF_HOST_STATIC_PKG_DIR ${CANN_3RD_LIB_PATH}/lib_cache/device/protobuf_host_static)
@@ -47,18 +43,11 @@ endif()
47# ==========================================================================================================43# ==========================================================================================================
48# 2. Compile Flags & Optimization44# 2. Compile Flags & Optimization
49# ==========================================================================================================45# ==========================================================================================================
46+include(${CMAKE_CURRENT_LIST_DIR}/protobuf_sym_rename.cmake)
50set(SECURITY_COMPILE_OPT "-Wl,-z,relro,-z,now,-z,noexecstack -s -Wl,-Bsymbolic")47set(SECURITY_COMPILE_OPT "-Wl,-z,relro,-z,now,-z,noexecstack -s -Wl,-Bsymbolic")
51-set(DEV_PROTOBUF_SHARED_CXXFLAGS "${SECURITY_COMPILE_OPT} -Wno-maybe-uninitialized -Wno-unused-parameter -fPIC -fstack-protector-all -D_FORTIFY_SOURCE=2 -D_GLIBCXX_USE_CXX11_ABI=1 -O2 -Dgoogle=ascend_private")48+set(PROTOBUF_SHARED_CXXFLAGS "${SECURITY_COMPILE_OPT} -Wno-maybe-uninitialized -Wno-unused-parameter -fPIC -fstack-protector-all -D_FORTIFY_SOURCE=2 -D_GLIBCXX_USE_CXX11_ABI=${CANN_CXX11_ABI} -O2 -Dgoogle=ascend_private ${PROTOBUF_SYM_RENAME}")
52-set(HOST_PROTOBUF_SHARED_CXXFLAGS "${SECURITY_COMPILE_OPT} -Wno-maybe-uninitialized -Wno-unused-parameter -fPIC -fstack-protector-all -D_FORTIFY_SOURCE=2 -D_GLIBCXX_USE_CXX11_ABI=0 -O2 -Dgoogle=ascend_private")49+set(PROTOBUF_STATIC_CXXFLAGS "-fvisibility=hidden -fvisibility-inlines-hidden -Wno-maybe-uninitialized -Wno-unused-parameter -fPIC -fstack-protector-all -D_FORTIFY_SOURCE=2 -D_GLIBCXX_USE_CXX11_ABI=${CANN_CXX11_ABI} -O2 -Dgoogle=ascend_private ${PROTOBUF_SYM_RENAME}")
53-set(DEV_PROTOBUF_STATIC_CXXFLAGS "-fvisibility=hidden -fvisibility-inlines-hidden -Wno-maybe-uninitialized -Wno-unused-parameter -fPIC -fstack-protector-all -D_FORTIFY_SOURCE=2 -D_GLIBCXX_USE_CXX11_ABI=1 -O2 -Dgoogle=ascend_private")
54-set(HOST_PROTOBUF_STATIC_CXXFLAGS "-fvisibility=hidden -fvisibility-inlines-hidden -Wno-maybe-uninitialized -Wno-unused-parameter -fPIC -fstack-protector-all -D_FORTIFY_SOURCE=2 -D_GLIBCXX_USE_CXX11_ABI=0 -O2 -Dgoogle=ascend_private")
55 50 
56-message("[ThirdParty][protobuf] PRODUCT_SIDE: ${PRODUCT_SIDE}")
57-message("[ThirdParty][protobuf] CMAKE_TOOLCHAIN_FILE: ${CMAKE_TOOLCHAIN_FILE}")
58-if(PRODUCT_SIDE STREQUAL "device")
59- set(HOST_PROTOBUF_SHARED_CXXFLAGS ${DEV_PROTOBUF_SHARED_CXXFLAGS})
60- set(HOST_PROTOBUF_STATIC_CXXFLAGS ${DEV_PROTOBUF_STATIC_CXXFLAGS})
61-endif()
62set(PROTOBUF_TOOLCHAIN_ARGS)51set(PROTOBUF_TOOLCHAIN_ARGS)
63if(CMAKE_TOOLCHAIN_FILE)52if(CMAKE_TOOLCHAIN_FILE)
64 list(APPEND PROTOBUF_TOOLCHAIN_ARGS -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE})53 list(APPEND PROTOBUF_TOOLCHAIN_ARGS -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE})
@@ -70,10 +59,6 @@ if(CMAKE_TOOLCHAIN_FILE AND NOT PRODUCT_SIDE STREQUAL "device")
70 list(APPEND PROTOBUF_TOOLCHAIN_ARGS -DLLVM_PATH=${LLVM_PATH})59 list(APPEND PROTOBUF_TOOLCHAIN_ARGS -DLLVM_PATH=${LLVM_PATH})
71endif()60endif()
72 61 
73-include(${CMAKE_CURRENT_LIST_DIR}/protobuf_sym_rename.cmake)
74-set(HOST_PROTOBUF_SHARED_CXXFLAGS "${HOST_PROTOBUF_SHARED_CXXFLAGS} ${PROTOBUF_SYM_RENAME}")
75-set(HOST_PROTOBUF_STATIC_CXXFLAGS "${HOST_PROTOBUF_STATIC_CXXFLAGS} ${PROTOBUF_SYM_RENAME}")
76- 
77# ==========================================================================================================62# ==========================================================================================================
78# 3. Find Existing Libraries & Protoc63# 3. Find Existing Libraries & Protoc
79# ==========================================================================================================64# ==========================================================================================================
@@ -125,11 +110,6 @@ find_path(ASCEND_PROTOBUF_SHARED_INCLUDE
125 NO_DEFAULT_PATH110 NO_DEFAULT_PATH
126)111)
127 112 
128-message("[ThirdParty][protobuf] PROTOC_PROGRAM : ${PROTOC_PROGRAM}.")
129-message("[ThirdParty][protobuf] ASCEND_PROTOBUF_STATIC_LIB : ${ASCEND_PROTOBUF_STATIC_LIB}.")
130-message("[ThirdParty][protobuf] HOST_PROTOBUF_STATIC_LIB : ${HOST_PROTOBUF_STATIC_LIB}.")
131-message("[ThirdParty][protobuf] ASCEND_PROTOBUF_SHARED_LIB : ${ASCEND_PROTOBUF_SHARED_LIB}.")
132- 
133# 解析 protobuf 源码包路径113# 解析 protobuf 源码包路径
134if (EXISTS ${CANN_3RD_LIB_PATH}/protobuf-all-25.1.tar.gz)114if (EXISTS ${CANN_3RD_LIB_PATH}/protobuf-all-25.1.tar.gz)
135 set(REQ_URL ${CANN_3RD_LIB_PATH}/protobuf-all-25.1.tar.gz)115 set(REQ_URL ${CANN_3RD_LIB_PATH}/protobuf-all-25.1.tar.gz)
@@ -142,7 +122,7 @@ else()
142endif()122endif()
143 123 
144if(NOT EXISTS ${REQ_URL})124if(NOT EXISTS ${REQ_URL})
145- message("[ThirdParty][protobuf] ${REQ_URL} not found, need download.")125+ message(STATUS "[ThirdParty][protobuf] ${REQ_URL} not found, need download.")
146 set(REQ_URL "https://cann-3rd.obs.cn-north-4.myhuaweicloud.com/protobuf/protobuf-25.1.tar.gz")126 set(REQ_URL "https://cann-3rd.obs.cn-north-4.myhuaweicloud.com/protobuf/protobuf-25.1.tar.gz")
147endif()127endif()
148 128 
@@ -158,7 +138,7 @@ ExternalProject_Add(protobuf_src
158 URL_HASH SHA256=9bd87b8280ef720d3240514f884e56a712f2218f0d693b48050c836028940a42138 URL_HASH SHA256=9bd87b8280ef720d3240514f884e56a712f2218f0d693b48050c836028940a42
159 TIMEOUT 300139 TIMEOUT 300
160 DOWNLOAD_DIR ${PROTOBUF_DOWNLOAD_DIR}140 DOWNLOAD_DIR ${PROTOBUF_DOWNLOAD_DIR}
161- PATCH_COMMAND patch --forward --batch -p1 < ${CMAKE_CURRENT_LIST_DIR}/patch/protobuf_25.1_change_version.patch141+ PATCH_COMMAND patch --forward --batch --quiet -r - -p1 < ${CMAKE_CURRENT_LIST_DIR}/patch/protobuf_25.1_change_version.patch
162 CONFIGURE_COMMAND ""142 CONFIGURE_COMMAND ""
163 BUILD_COMMAND ""143 BUILD_COMMAND ""
164 INSTALL_COMMAND ""144 INSTALL_COMMAND ""
@@ -175,14 +155,14 @@ set(PROTOBUF_SRC_DIR ${SOURCE_DIR} CACHE INTERNAL "protobuf src dir")
175add_library(ascend_protobuf SHARED IMPORTED GLOBAL)155add_library(ascend_protobuf SHARED IMPORTED GLOBAL)
176add_library(ascend_protobuf_shared_headers INTERFACE IMPORTED GLOBAL)156add_library(ascend_protobuf_shared_headers INTERFACE IMPORTED GLOBAL)
177if(ASCEND_PROTOBUF_SHARED_INCLUDE AND ASCEND_PROTOBUF_SHARED_LIB)157if(ASCEND_PROTOBUF_SHARED_INCLUDE AND ASCEND_PROTOBUF_SHARED_LIB)
178- message("[ThirdParty][protobuf] protobuf_shared use cache.")158+ message(STATUS "[ThirdParty][protobuf] protobuf_shared use cache.")
179 set_target_properties(ascend_protobuf PROPERTIES159 set_target_properties(ascend_protobuf PROPERTIES
180 IMPORTED_LOCATION ${ASCEND_PROTOBUF_SHARED_LIB}160 IMPORTED_LOCATION ${ASCEND_PROTOBUF_SHARED_LIB}
181 INTERFACE_INCLUDE_DIRECTORIES ${ASCEND_PROTOBUF_SHARED_INCLUDE}161 INTERFACE_INCLUDE_DIRECTORIES ${ASCEND_PROTOBUF_SHARED_INCLUDE}
182 )162 )
183 set(_ASCEND_PROTOBUF_SHARED_INCLUDE ${ASCEND_PROTOBUF_SHARED_INCLUDE})163 set(_ASCEND_PROTOBUF_SHARED_INCLUDE ${ASCEND_PROTOBUF_SHARED_INCLUDE})
184else()164else()
185- message("[ThirdParty][protobuf] protobuf_shared build.")165+ message(STATUS "[ThirdParty][protobuf] protobuf_shared build.")
186 ExternalProject_Add(protobuf_shared_build166 ExternalProject_Add(protobuf_shared_build
187 DEPENDS protobuf_src167 DEPENDS protobuf_src
188 SOURCE_DIR ${PROTOBUF_SRC_DIR}168 SOURCE_DIR ${PROTOBUF_SRC_DIR}
@@ -201,7 +181,7 @@ else()
201 -DLIB_PREFIX=ascend_181 -DLIB_PREFIX=ascend_
202 -DCMAKE_SKIP_RPATH=TRUE182 -DCMAKE_SKIP_RPATH=TRUE
203 -Dprotobuf_BUILD_TESTS=OFF183 -Dprotobuf_BUILD_TESTS=OFF
204- -DCMAKE_CXX_FLAGS=${HOST_PROTOBUF_SHARED_CXXFLAGS}184+ -DCMAKE_CXX_FLAGS=${PROTOBUF_SHARED_CXXFLAGS}
205 -DCMAKE_INSTALL_PREFIX=${PROTOBUF_SHARED_PKG_DIR}185 -DCMAKE_INSTALL_PREFIX=${PROTOBUF_SHARED_PKG_DIR}
206 -Dprotobuf_BUILD_PROTOC_BINARIES=OFF186 -Dprotobuf_BUILD_PROTOC_BINARIES=OFF
207 -DABSL_ROOT_DIR=${ABS_INSTALL_DIR}187 -DABSL_ROOT_DIR=${ABS_INSTALL_DIR}
@@ -218,7 +198,7 @@ else()
218 add_dependencies(ascend_protobuf protobuf_shared_build)198 add_dependencies(ascend_protobuf protobuf_shared_build)
219 add_dependencies(ascend_protobuf_shared_headers protobuf_shared_build)199 add_dependencies(ascend_protobuf_shared_headers protobuf_shared_build)
220endif()200endif()
221-target_include_directories(ascend_protobuf_shared_headers INTERFACE ${PROTOBUF_SHARED_PKG_DIR}/include)201+target_include_directories(ascend_protobuf_shared_headers SYSTEM INTERFACE ${PROTOBUF_SHARED_PKG_DIR}/include)
222create_imported_interface_include_directories(ascend_protobuf)202create_imported_interface_include_directories(ascend_protobuf)
223 203 
224# use for runtime: PROTOBUF_SHARED_LIB_DIR204# use for runtime: PROTOBUF_SHARED_LIB_DIR
@@ -229,10 +209,10 @@ set(PROTOBUF_SHARED_LIB_DIR "${PROTOBUF_SHARED_PKG_DIR}/lib")
229# ---------------------------------------------------------209# ---------------------------------------------------------
230add_executable(host_protoc IMPORTED GLOBAL)210add_executable(host_protoc IMPORTED GLOBAL)
231if(PROTOC_PROGRAM)211if(PROTOC_PROGRAM)
232- message("[ThirdParty][protobuf] protoc use cache.")212+ message(STATUS "[ThirdParty][protobuf] protoc use cache.")
233 set_target_properties(host_protoc PROPERTIES IMPORTED_LOCATION ${PROTOC_PROGRAM})213 set_target_properties(host_protoc PROPERTIES IMPORTED_LOCATION ${PROTOC_PROGRAM})
234else()214else()
235- message("[ThirdParty][protobuf] protoc build.")215+ message(STATUS "[ThirdParty][protobuf] protoc build.")
236 ExternalProject_Add(protobuf_host_build216 ExternalProject_Add(protobuf_host_build
237 DEPENDS protobuf_src217 DEPENDS protobuf_src
238 SOURCE_DIR ${PROTOBUF_SRC_DIR}218 SOURCE_DIR ${PROTOBUF_SRC_DIR}
@@ -265,7 +245,7 @@ add_custom_target(protoc DEPENDS host_protoc)
265add_library(ascend_protobuf_static STATIC IMPORTED GLOBAL)245add_library(ascend_protobuf_static STATIC IMPORTED GLOBAL)
266add_library(ascend_protobuf_static_headers INTERFACE IMPORTED GLOBAL)246add_library(ascend_protobuf_static_headers INTERFACE IMPORTED GLOBAL)
267if(ASCEND_PROTOBUF_STATIC_INCLUDE AND ASCEND_PROTOBUF_STATIC_LIB)247if(ASCEND_PROTOBUF_STATIC_INCLUDE AND ASCEND_PROTOBUF_STATIC_LIB)
268- message("[ThirdParty][protobuf] protobuf_static use cache.")248+ message(STATUS "[ThirdParty][protobuf] protobuf_static use cache.")
269 set_target_properties(ascend_protobuf_static PROPERTIES249 set_target_properties(ascend_protobuf_static PROPERTIES
270 IMPORTED_LOCATION ${ASCEND_PROTOBUF_STATIC_LIB}250 IMPORTED_LOCATION ${ASCEND_PROTOBUF_STATIC_LIB}
271 INTERFACE_INCLUDE_DIRECTORIES ${ASCEND_PROTOBUF_STATIC_INCLUDE}251 INTERFACE_INCLUDE_DIRECTORIES ${ASCEND_PROTOBUF_STATIC_INCLUDE}
@@ -273,7 +253,7 @@ if(ASCEND_PROTOBUF_STATIC_INCLUDE AND ASCEND_PROTOBUF_STATIC_LIB)
273 set(_ASCEND_PROTOBUF_STATIC_INCLUDE ${ASCEND_PROTOBUF_STATIC_INCLUDE})253 set(_ASCEND_PROTOBUF_STATIC_INCLUDE ${ASCEND_PROTOBUF_STATIC_INCLUDE})
274 set(PROTOBUF_STATIC_FINAL_PATH ${ASCEND_PROTOBUF_STATIC_LIB})254 set(PROTOBUF_STATIC_FINAL_PATH ${ASCEND_PROTOBUF_STATIC_LIB})
275else()255else()
276- message("[ThirdParty][protobuf] protobuf_static build.")256+ message(STATUS "[ThirdParty][protobuf] protobuf_static build.")
277 ExternalProject_Add(protobuf_static_build257 ExternalProject_Add(protobuf_static_build
278 DEPENDS protobuf_src258 DEPENDS protobuf_src
279 SOURCE_DIR ${PROTOBUF_SRC_DIR}259 SOURCE_DIR ${PROTOBUF_SRC_DIR}
@@ -292,7 +272,7 @@ else()
292 -DLIB_PREFIX=ascend_272 -DLIB_PREFIX=ascend_
293 -DCMAKE_SKIP_RPATH=TRUE273 -DCMAKE_SKIP_RPATH=TRUE
294 -Dprotobuf_BUILD_TESTS=OFF274 -Dprotobuf_BUILD_TESTS=OFF
295- -DCMAKE_CXX_FLAGS=${HOST_PROTOBUF_STATIC_CXXFLAGS}275+ -DCMAKE_CXX_FLAGS=${PROTOBUF_STATIC_CXXFLAGS}
296 -DCMAKE_INSTALL_PREFIX=${PROTOBUF_STATIC_PKG_DIR}276 -DCMAKE_INSTALL_PREFIX=${PROTOBUF_STATIC_PKG_DIR}
297 -Dprotobuf_BUILD_PROTOC_BINARIES=OFF277 -Dprotobuf_BUILD_PROTOC_BINARIES=OFF
298 -DABSL_COMPILE_OBJ=TRUE278 -DABSL_COMPILE_OBJ=TRUE
@@ -311,7 +291,7 @@ else()
311 add_dependencies(ascend_protobuf_static_headers protobuf_static_build)291 add_dependencies(ascend_protobuf_static_headers protobuf_static_build)
312 set(PROTOBUF_STATIC_FINAL_PATH ${PROTOBUF_STATIC_PKG_DIR}/lib/libascend_protobuf.a)292 set(PROTOBUF_STATIC_FINAL_PATH ${PROTOBUF_STATIC_PKG_DIR}/lib/libascend_protobuf.a)
313endif()293endif()
314-target_include_directories(ascend_protobuf_static_headers INTERFACE ${_ASCEND_PROTOBUF_STATIC_INCLUDE})294+target_include_directories(ascend_protobuf_static_headers SYSTEM INTERFACE ${_ASCEND_PROTOBUF_STATIC_INCLUDE})
315create_imported_interface_include_directories(ascend_protobuf_static)295create_imported_interface_include_directories(ascend_protobuf_static)
316 296 
317# ---------------------------------------------------------297# ---------------------------------------------------------
@@ -319,14 +299,14 @@ create_imported_interface_include_directories(ascend_protobuf_static)
319# ---------------------------------------------------------299# ---------------------------------------------------------
320add_library(protobuf_static STATIC IMPORTED GLOBAL)300add_library(protobuf_static STATIC IMPORTED GLOBAL)
321if(HOST_PROTOBUF_STATIC_INCLUDE AND HOST_PROTOBUF_STATIC_LIB)301if(HOST_PROTOBUF_STATIC_INCLUDE AND HOST_PROTOBUF_STATIC_LIB)
322- message("[ThirdParty][protobuf] protobuf_host_static use cache.")302+ message(STATUS "[ThirdParty][protobuf] protobuf_host_static use cache.")
323 set_target_properties(protobuf_static PROPERTIES303 set_target_properties(protobuf_static PROPERTIES
324 IMPORTED_LOCATION ${HOST_PROTOBUF_STATIC_LIB}304 IMPORTED_LOCATION ${HOST_PROTOBUF_STATIC_LIB}
325 INTERFACE_INCLUDE_DIRECTORIES "${HOST_PROTOBUF_STATIC_INCLUDE}"305 INTERFACE_INCLUDE_DIRECTORIES "${HOST_PROTOBUF_STATIC_INCLUDE}"
326 )306 )
327 set(PROTOBUF_HOST_STATIC_FINAL_PATH ${HOST_PROTOBUF_STATIC_LIB})307 set(PROTOBUF_HOST_STATIC_FINAL_PATH ${HOST_PROTOBUF_STATIC_LIB})
328else()308else()
329- message("[ThirdParty][protobuf] protobuf_host_static build.")309+ message(STATUS "[ThirdParty][protobuf] protobuf_host_static build.")
330 ExternalProject_Add(protobuf_host_static_build310 ExternalProject_Add(protobuf_host_static_build
331 DEPENDS protobuf_src311 DEPENDS protobuf_src
332 SOURCE_DIR ${PROTOBUF_SRC_DIR}312 SOURCE_DIR ${PROTOBUF_SRC_DIR}
@@ -344,7 +324,7 @@ else()
344 -DLIB_PREFIX=host_ascend_324 -DLIB_PREFIX=host_ascend_
345 -DCMAKE_SKIP_RPATH=TRUE325 -DCMAKE_SKIP_RPATH=TRUE
346 -Dprotobuf_BUILD_TESTS=OFF326 -Dprotobuf_BUILD_TESTS=OFF
347- -DCMAKE_CXX_FLAGS=${HOST_PROTOBUF_STATIC_CXXFLAGS}327+ -DCMAKE_CXX_FLAGS=${PROTOBUF_STATIC_CXXFLAGS}
348 -DCMAKE_INSTALL_PREFIX=${PROTOBUF_HOST_STATIC_PKG_DIR}328 -DCMAKE_INSTALL_PREFIX=${PROTOBUF_HOST_STATIC_PKG_DIR}
349 -Dprotobuf_BUILD_PROTOC_BINARIES=OFF329 -Dprotobuf_BUILD_PROTOC_BINARIES=OFF
350 -DABSL_COMPILE_OBJ=TRUE330 -DABSL_COMPILE_OBJ=TRUE
@@ -8,11 +8,11 @@
8# See LICENSE in the root of the software repository for the full text of the License.8# See LICENSE in the root of the software repository for the full text of the License.
9# -----------------------------------------------------------------------------------------------------------9# -----------------------------------------------------------------------------------------------------------
10# NOTICE !! PROTOBUF VERSION CHANGE MAY REDEFINED THESE GLOBAL VARIABLES10# NOTICE !! PROTOBUF VERSION CHANGE MAY REDEFINED THESE GLOBAL VARIABLES
11-# The content of `PROTOBUF_SYM_RENAME` is auto generated by the step:11+# The context of `PROTOBUF_SYM_RENAME` is auto generated by the step:
12# 1. goto the code root12# 1. goto the code root
13# 2. cd open_source/protobuf && mkdir objects && cd objects && cmake ../cmake/ -Dprotobuf_BUILD_TESTS=OFF -Dprotobuf_BUILD_SHARED_LIBS=1 && make -j1613# 2. cd open_source/protobuf && mkdir objects && cd objects && cmake ../cmake/ -Dprotobuf_BUILD_TESTS=OFF -Dprotobuf_BUILD_SHARED_LIBS=1 && make -j16
14-# 3. readelf --dyn-syms -W libascend_protobuf.so.3.13.0.0 |grep GLOBAL |grep DEFAULT |grep OBJECT |grep -v _ZN | grep -v UND | awk '{print "-D"$8"="$8"_25_1_0 \\"}'14+# 3. readelf --dyn-syms -W libascend_protobuf.so.25.1.0.0 |grep GLOBAL |grep DEFAULT |grep OBJECT |grep -v _ZN | grep -v UND | awk '{print "-D"$8"="$8"_25_1_0 \\"}'
15-# 4. notes, please change protobuf version 3.13.0.0 and 25_1_0 in the command parameter of readelf15+# 4. notes, please change protobuf version 25.1.0.0 and 25_1_0 in the command parameter of readelf
16# need help : wangkai86@huawei.com16# need help : wangkai86@huawei.com
17set(PROTOBUF_SYM_RENAME " \17set(PROTOBUF_SYM_RENAME " \
18-Ddescriptor_table_google_2fprotobuf_2fsource_5fcontext_2eproto=descriptor_table_google_2fprotobuf_2fsource_5fcontext_2eproto_25_1_0 \18-Ddescriptor_table_google_2fprotobuf_2fsource_5fcontext_2eproto=descriptor_table_google_2fprotobuf_2fsource_5fcontext_2eproto_25_1_0 \
@@ -66,9 +66,7 @@ else()
66endif()66endif()
67 67 
68add_library(pybind11 INTERFACE)68add_library(pybind11 INTERFACE)
69-set_target_properties(pybind11 PROPERTIES69+target_include_directories(pybind11 SYSTEM INTERFACE "${pybind11_INCLUDE_DIR}")
70- INTERFACE_INCLUDE_DIRECTORIES "${pybind11_INCLUDE_DIR}"
71-)
72if(TARGET pybind11_build)70if(TARGET pybind11_build)
73 add_dependencies(pybind11 pybind11_build)71 add_dependencies(pybind11 pybind11_build)
74endif()72endif()
@@ -13,10 +13,6 @@ check_cann_build_tool(pkg-config)
13unset(rdma_core_FOUND CACHE)13unset(rdma_core_FOUND CACHE)
14unset(RDMA_CORE_INCLUDE CACHE)14unset(RDMA_CORE_INCLUDE CACHE)
15 15 
16-if(POLICY CMP0135)
17- cmake_policy(SET CMP0135 NEW)
18-endif()
19- 
20if(PRODUCT_SIDE STREQUAL "device")16if(PRODUCT_SIDE STREQUAL "device")
21 set(RDMA_CORE_SRC_DIR ${CANN_3RD_LIB_PATH}/lib_cache/device/rdma_core_src)17 set(RDMA_CORE_SRC_DIR ${CANN_3RD_LIB_PATH}/lib_cache/device/rdma_core_src)
22 set(RDMA_CORE_BUILD_DIR ${CANN_3RD_LIB_PATH}/lib_cache/device/rdma_core_build)18 set(RDMA_CORE_BUILD_DIR ${CANN_3RD_LIB_PATH}/lib_cache/device/rdma_core_build)
@@ -53,7 +49,7 @@ add_library(rdma_core_headers INTERFACE)
53 49 
54if(rdma_core_FOUND AND NOT FORCE_REBUILD_CANN_3RD)50if(rdma_core_FOUND AND NOT FORCE_REBUILD_CANN_3RD)
55 set(RDMA_CORE_INCLUDE_DIR "${RDMA_CORE_INCLUDE}")51 set(RDMA_CORE_INCLUDE_DIR "${RDMA_CORE_INCLUDE}")
56- message(STATUS "[ThirdParty][rdma-core] rdma-core found in ${RDMA_CORE_BUILD_PATH}, and not force rebuild cann third_party")52+ message(STATUS "[ThirdParty][rdma-core] rdma-core found in ${RDMA_CORE_BUILD_DIR}, and not force rebuild cann third_party")
57else()53else()
58 if(EXISTS "${RDMA_CORE_PKG_DIR}/${RDMA_CORE_PATCH_FILE}")54 if(EXISTS "${RDMA_CORE_PKG_DIR}/${RDMA_CORE_PATCH_FILE}")
59 set(RDMA_CORE_PATCH "${RDMA_CORE_PKG_DIR}/${RDMA_CORE_PATCH_FILE}")55 set(RDMA_CORE_PATCH "${RDMA_CORE_PKG_DIR}/${RDMA_CORE_PATCH_FILE}")
@@ -105,7 +101,7 @@ else()
105 TIMEOUT 300101 TIMEOUT 300
106 SOURCE_DIR ${RDMA_CORE_SRC_DIR}102 SOURCE_DIR ${RDMA_CORE_SRC_DIR}
107 DOWNLOAD_DIR ${RDMA_CORE_PKG_DIR}103 DOWNLOAD_DIR ${RDMA_CORE_PKG_DIR}
108- PATCH_COMMAND patch -p1 -i "${RDMA_CORE_PATCH}"104+ PATCH_COMMAND patch --forward --batch --quiet -r - -p1 -i "${RDMA_CORE_PATCH}"
109 CONFIGURE_COMMAND ""105 CONFIGURE_COMMAND ""
110 BUILD_COMMAND ""106 BUILD_COMMAND ""
111 INSTALL_COMMAND ""107 INSTALL_COMMAND ""
@@ -10,19 +10,15 @@
10 10 
11include_guard(GLOBAL)11include_guard(GLOBAL)
12 12 
13-if(POLICY CMP0135)
14- cmake_policy(SET CMP0135 NEW)
15-endif()
16- 
17if(PRODUCT_SIDE STREQUAL "device")13if(PRODUCT_SIDE STREQUAL "device")
18- set(RE2_INTALL_PATH ${CANN_3RD_LIB_PATH}/lib_cache/device/re2)14+ set(RE2_INSTALL_PATH ${CANN_3RD_LIB_PATH}/lib_cache/device/re2)
19 set(RE2_PKG_PATH ${CANN_3RD_LIB_PATH}/pkg/device)15 set(RE2_PKG_PATH ${CANN_3RD_LIB_PATH}/pkg/device)
20else()16else()
21- set(RE2_INTALL_PATH ${CANN_3RD_LIB_PATH}/lib_cache/re2)17+ set(RE2_INSTALL_PATH ${CANN_3RD_LIB_PATH}/lib_cache/re2)
22 set(RE2_PKG_PATH ${CANN_3RD_LIB_PATH}/pkg)18 set(RE2_PKG_PATH ${CANN_3RD_LIB_PATH}/pkg)
23endif()19endif()
24 20 
25-set(RE2_FILE ${RE2_INTALL_PATH}/re2.h)21+set(RE2_FILE ${RE2_INSTALL_PATH}/re2.h)
26if (EXISTS ${RE2_FILE})22if (EXISTS ${RE2_FILE})
27 message(STATUS "[ThirdParty][re2] re2.h found.")23 message(STATUS "[ThirdParty][re2] re2.h found.")
28 add_custom_target(re2_build)24 add_custom_target(re2_build)
@@ -45,12 +41,12 @@ else()
45 URL_HASH SHA256=cd191a311b84fcf37310e5cd876845b4bf5aee76fdd755008eef3b6478ce07bb41 URL_HASH SHA256=cd191a311b84fcf37310e5cd876845b4bf5aee76fdd755008eef3b6478ce07bb
46 TIMEOUT 30042 TIMEOUT 300
47 DOWNLOAD_DIR ${RE2_PKG_PATH}43 DOWNLOAD_DIR ${RE2_PKG_PATH}
48- SOURCE_DIR ${RE2_INTALL_PATH}44+ SOURCE_DIR ${RE2_INSTALL_PATH}
49- PATCH_COMMAND patch -N --batch --quiet -r - -p1 < ${CMAKE_CURRENT_LIST_DIR}/patch/re2-add_compatible_functions.patch45+ PATCH_COMMAND patch --forward --batch --quiet -r - -p1 < ${CMAKE_CURRENT_LIST_DIR}/patch/re2-add_compatible_functions.patch
50 CONFIGURE_COMMAND ""46 CONFIGURE_COMMAND ""
51 BUILD_COMMAND ""47 BUILD_COMMAND ""
52 INSTALL_COMMAND ""48 INSTALL_COMMAND ""
53 EXCLUDE_FROM_ALL TRUE49 EXCLUDE_FROM_ALL TRUE
54- DWONLOAD_NO_PROGRESS TRUE50+ DOWNLOAD_NO_PROGRESS TRUE
55 )51 )
56endif()52endif()
@@ -9,28 +9,25 @@
9# -----------------------------------------------------------------------------------------------------------9# -----------------------------------------------------------------------------------------------------------
10include_guard(GLOBAL)10include_guard(GLOBAL)
11 11 
12-if(POLICY CMP0135)
13- cmake_policy(SET CMP0135 NEW)
14-endif()
15- 
16set(seccomp_download_dependent FALSE)12set(seccomp_download_dependent FALSE)
17if(IS_DIRECTORY "${CANN_3RD_LIB_PATH}/../tools/minios/arm64/include/libseccomp")13if(IS_DIRECTORY "${CANN_3RD_LIB_PATH}/../tools/minios/arm64/include/libseccomp")
18- message("[ThirdParty][seccomp] use tools cache.")14+ message(STATUS "[ThirdParty][seccomp] use tools cache.")
19 set(LIB_SECCOMP_INCLUDE_PATH "${CANN_3RD_LIB_PATH}/../tools/minios/arm64/include/libseccomp")15 set(LIB_SECCOMP_INCLUDE_PATH "${CANN_3RD_LIB_PATH}/../tools/minios/arm64/include/libseccomp")
20elseif (EXISTS "${CANN_3RD_LIB_PATH}/lib_cache/libseccomp-2.5.4/include/seccomp.h")16elseif (EXISTS "${CANN_3RD_LIB_PATH}/lib_cache/libseccomp-2.5.4/include/seccomp.h")
21- message("[ThirdParty][seccomp] use opensource cache.")17+ message(STATUS "[ThirdParty][seccomp] use opensource cache.")
22 set(LIB_SECCOMP_INCLUDE_PATH "${CANN_3RD_LIB_PATH}/lib_cache/libseccomp-2.5.4/include")18 set(LIB_SECCOMP_INCLUDE_PATH "${CANN_3RD_LIB_PATH}/lib_cache/libseccomp-2.5.4/include")
23else()19else()
24 if(EXISTS "${CANN_3RD_LIB_PATH}/libseccomp-2.5.4.tar.gz")20 if(EXISTS "${CANN_3RD_LIB_PATH}/libseccomp-2.5.4.tar.gz")
25- message("[ThirdParty][seccomp] use cache.")
26 set(REQ_URL "${CANN_3RD_LIB_PATH}/libseccomp-2.5.4.tar.gz")21 set(REQ_URL "${CANN_3RD_LIB_PATH}/libseccomp-2.5.4.tar.gz")
27 elseif(NOT EXISTS "${CANN_3RD_LIB_PATH}/libseccomp-2.5.4/")22 elseif(NOT EXISTS "${CANN_3RD_LIB_PATH}/libseccomp-2.5.4/")
28- message("[ThirdParty][seccomp] not use cache in ${CANN_3RD_LIB_PATH}, download seccomp.")23+ message(STATUS "[ThirdParty][seccomp] not use cache in ${CANN_3RD_LIB_PATH}, download seccomp.")
29 set(REQ_URL "https://cann-3rd.obs.cn-north-4.myhuaweicloud.com/libseccomp/libseccomp-2.5.4.tar.gz")24 set(REQ_URL "https://cann-3rd.obs.cn-north-4.myhuaweicloud.com/libseccomp/libseccomp-2.5.4.tar.gz")
30 else()25 else()
31- message("[ThirdParty][seccomp] use cache.")
32 set(REQ_URL "${CANN_3RD_LIB_PATH}/libseccomp-2.5.4/")26 set(REQ_URL "${CANN_3RD_LIB_PATH}/libseccomp-2.5.4/")
33 endif()27 endif()
28+ if(EXISTS "${REQ_URL}")
29+ message(STATUS "[ThirdParty][seccomp] use cache.")
30+ endif()
34 include(ExternalProject)31 include(ExternalProject)
35 ExternalProject_Add(external_seccomp32 ExternalProject_Add(external_seccomp
36 URL ${REQ_URL}33 URL ${REQ_URL}
@@ -41,6 +38,7 @@ else()
41 CONFIGURE_COMMAND cd <SOURCE_DIR> && ./autogen.sh && ./configure --prefix=<INSTALL_DIR>38 CONFIGURE_COMMAND cd <SOURCE_DIR> && ./autogen.sh && ./configure --prefix=<INSTALL_DIR>
42 INSTALL_COMMAND ""39 INSTALL_COMMAND ""
43 BUILD_COMMAND ""40 BUILD_COMMAND ""
41+ EXCLUDE_FROM_ALL TRUE
44 )42 )
45 43 
46 ExternalProject_Get_Property(external_seccomp SOURCE_DIR)44 ExternalProject_Get_Property(external_seccomp SOURCE_DIR)
@@ -49,9 +47,7 @@ else()
49endif()47endif()
50 48 
51add_library(seccomp_headers INTERFACE)49add_library(seccomp_headers INTERFACE)
52-set_target_properties(seccomp_headers PROPERTIES50+target_include_directories(seccomp_headers SYSTEM INTERFACE "${LIB_SECCOMP_INCLUDE_PATH}")
53- INTERFACE_INCLUDE_DIRECTORIES "${LIB_SECCOMP_INCLUDE_PATH}"
54-)
55if(seccomp_download_dependent)51if(seccomp_download_dependent)
56 add_dependencies(seccomp_headers external_seccomp)52 add_dependencies(seccomp_headers external_seccomp)
57endif()53endif()
@@ -34,13 +34,13 @@ else()
34 elseif(EXISTS ${CMAKE_FILE})34 elseif(EXISTS ${CMAKE_FILE})
35 message(STATUS "[ThirdParty][symengine] ${CMAKE_FILE} found, symengine is ready without patch installed.")35 message(STATUS "[ThirdParty][symengine] ${CMAKE_FILE} found, symengine is ready without patch installed.")
36 list(APPEND SYMENGINE_EXTRA_ARGS36 list(APPEND SYMENGINE_EXTRA_ARGS
37- PATCH_COMMAND patch -p1 < ${CMAKE_CURRENT_LIST_DIR}/patch/symengine_add_mod.patch37+ PATCH_COMMAND patch --forward --batch --quiet -r - -p1 < ${CMAKE_CURRENT_LIST_DIR}/patch/symengine_add_mod.patch
38 )38 )
39 elseif(EXISTS ${REQ_URL})39 elseif(EXISTS ${REQ_URL})
40 message(STATUS "[ThirdParty][symengine] ${REQ_URL} found.")40 message(STATUS "[ThirdParty][symengine] ${REQ_URL} found.")
41 list(APPEND SYMENGINE_EXTRA_ARGS41 list(APPEND SYMENGINE_EXTRA_ARGS
42 URL ${REQ_URL}42 URL ${REQ_URL}
43- PATCH_COMMAND patch -p1 < ${CMAKE_CURRENT_LIST_DIR}/patch/symengine_add_mod.patch43+ PATCH_COMMAND patch --forward --batch --quiet -r - -p1 < ${CMAKE_CURRENT_LIST_DIR}/patch/symengine_add_mod.patch
44 )44 )
45 else()45 else()
46 message(STATUS "[ThirdParty][symengine] symengine not found, need download.")46 message(STATUS "[ThirdParty][symengine] symengine not found, need download.")
@@ -50,10 +50,10 @@ else()
50 URL_HASH SHA256=1b5c3b0bc6a9f187635f93585649f24a18e9c7f2167cebcd885edeaaf211d95650 URL_HASH SHA256=1b5c3b0bc6a9f187635f93585649f24a18e9c7f2167cebcd885edeaaf211d956
51 TIMEOUT 30051 TIMEOUT 300
52 DOWNLOAD_DIR ${CANN_3RD_LIB_PATH}/symengine52 DOWNLOAD_DIR ${CANN_3RD_LIB_PATH}/symengine
53- PATCH_COMMAND patch -p1 < ${CMAKE_CURRENT_LIST_DIR}/patch/symengine_add_mod.patch53+ PATCH_COMMAND patch --forward --batch --quiet -r - -p1 < ${CMAKE_CURRENT_LIST_DIR}/patch/symengine_add_mod.patch
54 )54 )
55 endif()55 endif()
56- set(SYMENGINE_CXXFLAGS "-fPIC -D_GLIBCXX_USE_CXX11_ABI=0 -std=c++17")56+ set(SYMENGINE_CXXFLAGS "-fPIC -D_GLIBCXX_USE_CXX11_ABI=${CANN_CXX11_ABI} -std=c++17")
57 include(ExternalProject)57 include(ExternalProject)
58 ExternalProject_Add(symengine_build58 ExternalProject_Add(symengine_build
59 SOURCE_DIR ${CANN_3RD_LIB_PATH}/symengine59 SOURCE_DIR ${CANN_3RD_LIB_PATH}/symengine
@@ -8,9 +8,6 @@
8# See LICENSE in the root of the software repository for the full text of the License.8# See LICENSE in the root of the software repository for the full text of the License.
9# -----------------------------------------------------------------------------------------------------------9# -----------------------------------------------------------------------------------------------------------
10include_guard(GLOBAL)10include_guard(GLOBAL)
11-if(POLICY CMP0135)
12- cmake_policy(SET CMP0135 NEW)
13-endif()
14include(ExternalProject)11include(ExternalProject)
15 12 
16set(ZLIB_INSTALL_DIR ${CANN_3RD_LIB_PATH}/lib_cache/zlib)13set(ZLIB_INSTALL_DIR ${CANN_3RD_LIB_PATH}/lib_cache/zlib)
@@ -35,21 +32,31 @@ set_target_properties(minizip_static PROPERTIES
35 INTERFACE_LINK_LIBRARIES ${ZLIB_LIBRARY}32 INTERFACE_LINK_LIBRARIES ${ZLIB_LIBRARY}
36)33)
37 34 
38-set(REQ_URL "${CANN_3RD_LIB_PATH}/zlib/zlib-1.2.13.tar.xz")35+set(ZLIB_GZ_HASH SHA256=1525952a0a567581792613a9723333d7f8cc20b87a81f920fb8bc7e3f2251428)
39-set(REQ_URL_BACK "${CANN_3RD_LIB_PATH}/zlib/zlib-1.2.13.tar.gz")36+set(ZLIB_XZ_HASH SHA256=d14c38e313afc35a9a8760dadf26042f51ea0f5d154b0630a31da0540107fb98)
40-if(EXISTS ${REQ_URL})37+ 
41- message(STATUS "[ThirdParty][zlib] ${REQ_URL} found.")38+if(EXISTS "${CANN_3RD_LIB_PATH}/zlib/zlib-1.2.13.tar.xz")
42-elseif(EXISTS ${REQ_URL_BACK})39+ set(REQ_URL "${CANN_3RD_LIB_PATH}/zlib/zlib-1.2.13.tar.xz")
43- message(STATUS "[ThirdParty][zlib] ${REQ_URL_BACK} found.")40+ set(ZLIB_URL_HASH ${ZLIB_XZ_HASH})
44- set(REQ_URL ${REQ_URL_BACK})41+elseif(EXISTS "${CANN_3RD_LIB_PATH}/zlib/zlib-1.2.13.tar.gz")
42+ set(REQ_URL "${CANN_3RD_LIB_PATH}/zlib/zlib-1.2.13.tar.gz")
43+ set(ZLIB_URL_HASH ${ZLIB_GZ_HASH})
44+elseif(EXISTS "${CANN_3RD_LIB_PATH}/zlib-1.2.13.tar.gz")
45+ set(REQ_URL "${CANN_3RD_LIB_PATH}/zlib-1.2.13.tar.gz")
46+ set(ZLIB_URL_HASH ${ZLIB_GZ_HASH})
45else()47else()
46- message(STATUS "[ThirdParty][zlib] ${REQ_URL} not found, need download.")
47 set(REQ_URL "https://cann-3rd.obs.cn-north-4.myhuaweicloud.com/zlib/zlib-1.2.13.tar.gz")48 set(REQ_URL "https://cann-3rd.obs.cn-north-4.myhuaweicloud.com/zlib/zlib-1.2.13.tar.gz")
49+ set(ZLIB_URL_HASH ${ZLIB_GZ_HASH})
50+ message(STATUS "[ThirdParty][zlib] ${REQ_URL} not found, need download.")
51+endif()
52+if(EXISTS "${REQ_URL}")
53+ message(STATUS "[ThirdParty][zlib] ${REQ_URL} found.")
48endif()54endif()
49ExternalProject_Add(zlib_src55ExternalProject_Add(zlib_src
50 URL ${REQ_URL}56 URL ${REQ_URL}
57+ URL_HASH ${ZLIB_URL_HASH}
51 TIMEOUT 30058 TIMEOUT 300
52- PATCH_COMMAND patch -p1 < ${CMAKE_CURRENT_LIST_DIR}/patch/zlib_add_minizip_static_lib.patch59+ PATCH_COMMAND patch --forward --batch --quiet -r - -p1 < ${CMAKE_CURRENT_LIST_DIR}/patch/zlib_add_minizip_static_lib.patch
53 CONFIGURE_COMMAND ""60 CONFIGURE_COMMAND ""
54 BUILD_COMMAND ""61 BUILD_COMMAND ""
55 INSTALL_COMMAND ""62 INSTALL_COMMAND ""
@@ -59,7 +66,7 @@ ExternalProject_Get_Property(zlib_src SOURCE_DIR)
59set(ZLIB_SRC_DIR ${SOURCE_DIR})66set(ZLIB_SRC_DIR ${SOURCE_DIR})
60 67 
61if(EXISTS ${ZLIB_LIBRARY} AND EXISTS ${MINIZIP_LIBRARY})68if(EXISTS ${ZLIB_LIBRARY} AND EXISTS ${MINIZIP_LIBRARY})
62- message(STATUS "zlib lib found in ${ZLIB_LIBRARY}.")69+ message(STATUS "[ThirdParty][zlib] lib found in ${ZLIB_LIBRARY}.")
63else()70else()
64 set(ZLIB_C_FLAGS "-fPIC -fexceptions -O2")71 set(ZLIB_C_FLAGS "-fPIC -fexceptions -O2")
65 set(ZLIB_TOOLCHAIN_ARGS)72 set(ZLIB_TOOLCHAIN_ARGS)