已合并
fix: 统一USE_CXX11_ABI管理,移除分散的ABI宏定义 #4408
yelongjian创建于 11 天前
fix: 统一USE_CXX11_ABI管理,移除分散的ABI宏定义 #4408
已合并
yelongjian创建于 11 天前
6 个文件变更+5-235
@@ -13,6 +13,9 @@ include(cmake/fetch_cann_cmake.cmake)
13project(CANN-GRAPH-ENGINE)13project(CANN-GRAPH-ENGINE)
14 14 
15init_cann_project()15init_cann_project()
16+if(NOT DEFINED USE_CXX11_ABI)
17+ set(USE_CXX11_ABI 0)
18+endif()
16set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ${RULE_LAUNCH})19set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ${RULE_LAUNCH})
17set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK ${RULE_LAUNCH})20set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK ${RULE_LAUNCH})
18set(BASE_DIR ${CMAKE_CURRENT_LIST_DIR})21set(BASE_DIR ${CMAKE_CURRENT_LIST_DIR})
@@ -80,21 +83,16 @@ cmake_print_variables(BUILD_COMPONENT)
80cmake_print_variables(ENABLE_BUILD_DEVICE USE_CXX11_ABI CMAKE_TOOLCHAIN_FILE)83cmake_print_variables(ENABLE_BUILD_DEVICE USE_CXX11_ABI CMAKE_TOOLCHAIN_FILE)
81cmake_print_variables(CMAKE_CXX_COMPILER_ID)84cmake_print_variables(CMAKE_CXX_COMPILER_ID)
82 85 
83-if(ENABLE_BUILD_DEVICE)86+if(NOT ENABLE_BUILD_DEVICE)
84- # 非MDC编译流程
85- set(USE_CXX11_ABI 0)
86-else()
87 string(FIND "${CMAKE_TOOLCHAIN_FILE}" "ubuntu18.04-x86_64-llvm-toolchain.cmake" SUBSTRING_FOUND)87 string(FIND "${CMAKE_TOOLCHAIN_FILE}" "ubuntu18.04-x86_64-llvm-toolchain.cmake" SUBSTRING_FOUND)
88 if(SUBSTRING_FOUND GREATER_EQUAL 0)88 if(SUBSTRING_FOUND GREATER_EQUAL 0)
89 set(CMAKE_SKIP_INSTALL_ALL_DEPENDENCY false)89 set(CMAKE_SKIP_INSTALL_ALL_DEPENDENCY false)
90 # MDC编译运行态90 # MDC编译运行态
91 message("[MDC compile] MDC compile runtime state.")91 message("[MDC compile] MDC compile runtime state.")
92- add_compile_definitions(_GLIBCXX_USE_CXX11_ABI=${USE_CXX11_ABI})
93 set(MDC_COMPILE_RUNTIME ON)92 set(MDC_COMPILE_RUNTIME ON)
94 else()93 else()
95 # MDC编译开发态94 # MDC编译开发态
96 message("[MDC compile] MDC compile develop state.")95 message("[MDC compile] MDC compile develop state.")
97- set(USE_CXX11_ABI 0)
98 endif()96 endif()
99endif()97endif()
100 98 
@@ -22,7 +22,7 @@ RULE_LAUNCH_ARG=""
22# MDC build para22# MDC build para
23ENABLE_BUILD_DEVICE=ON23ENABLE_BUILD_DEVICE=ON
24ENABLE_MOD_EXT=OFF24ENABLE_MOD_EXT=OFF
25-USE_CXX11_ABI=125+USE_CXX11_ABI=0
26CMAKE_TOOLCHAIN_FILE=""26CMAKE_TOOLCHAIN_FILE=""
27MDC_BUILD_COMPONENT=""27MDC_BUILD_COMPONENT=""
28CMAKE_TOOLCHAIN_PREFIX="${BASEPATH}/../cmake/toolchain"28CMAKE_TOOLCHAIN_PREFIX="${BASEPATH}/../cmake/toolchain"
@@ -34,9 +34,6 @@ add_cann_target_options()
34 34 
35########## ge_intf_pub_base ##########35########## ge_intf_pub_base ##########
36add_library(ge_intf_pub_base INTERFACE)36add_library(ge_intf_pub_base INTERFACE)
37-target_link_libraries(ge_intf_pub_base INTERFACE
38- $<BUILD_INTERFACE:intf_pub_base>
39-)
40target_compile_options(ge_intf_pub_base INTERFACE37target_compile_options(ge_intf_pub_base INTERFACE
41 -Werror38 -Werror
42 $<$<AND:$<CXX_COMPILER_ID:GNU>,$<VERSION_GREATER_EQUAL:${CMAKE_CXX_COMPILER_VERSION},14.0>>:-Wno-free-nonheap-object>39 $<$<AND:$<CXX_COMPILER_ID:GNU>,$<VERSION_GREATER_EQUAL:${CMAKE_CXX_COMPILER_VERSION},14.0>>:-Wno-free-nonheap-object>
@@ -49,8 +46,6 @@ target_compile_options(ge_intf_pub_base INTERFACE
49 -DFWK_SUPPORT_TRAINING_TRACE>46 -DFWK_SUPPORT_TRAINING_TRACE>
50)47)
51target_compile_definitions(ge_intf_pub_base INTERFACE48target_compile_definitions(ge_intf_pub_base INTERFACE
52- $<$<OR:$<STREQUAL:${PRODUCT_SIDE},device>,$<BOOL:${MDC_COMPILE_RUNTIME}>>:_GLIBCXX_USE_CXX11_ABI=1>
53- $<$<AND:$<NOT:$<STREQUAL:${PRODUCT_SIDE},device>>,$<NOT:$<BOOL:${MDC_COMPILE_RUNTIME}>>>:_GLIBCXX_USE_CXX11_ABI=0>
54 $<$<BOOL:${ENABLE_TEST}>:SUPPORT_LARGE_MODEL_ENABLE=1>49 $<$<BOOL:${ENABLE_TEST}>:SUPPORT_LARGE_MODEL_ENABLE=1>
55)50)
56target_link_options(ge_intf_pub_base INTERFACE51target_link_options(ge_intf_pub_base INTERFACE
@@ -19,12 +19,6 @@ set(INC_DIR
19 "${CMAKE_BINARY_DIR}/proto/graphengine_protos/"19 "${CMAKE_BINARY_DIR}/proto/graphengine_protos/"
20 )20 )
21 21 
22-if(NOT MDC_COMPILE_RUNTIME)
23- add_definitions(-D_GLIBCXX_USE_CXX11_ABI=0)
24-else()
25- add_definitions(-D_GLIBCXX_USE_CXX11_ABI=${USE_CXX11_ABI})
26-endif()
27- 
28file(GLOB LLM_SRC_LIST22file(GLOB LLM_SRC_LIST
29 "${CMAKE_CURRENT_LIST_DIR}/api/*.cc"23 "${CMAKE_CURRENT_LIST_DIR}/api/*.cc"
30 "${CMAKE_CURRENT_LIST_DIR}/common/*.cc"24 "${CMAKE_CURRENT_LIST_DIR}/common/*.cc"
@@ -1,216 +0,0 @@
1-# -----------------------------------------------------------------------------------------------------------
2-# Copyright (c) 2025 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-if(POLICY CMP0135)
12- cmake_policy(SET CMP0135 NEW)
13-endif()
14- 
15-include(ExternalProject)
16-include(GNUInstallDirs)
17- 
18-set(PROTOBUF_SRC_DIR ${CMAKE_BINARY_DIR}/protobuf-src)
19-set(PROTOBUF_DL_DIR ${CMAKE_BINARY_DIR}/downloads)
20-set(PROTOBUF_STATIC_PKG_DIR ${CMAKE_BINARY_DIR}/protobuf_static)
21-set(PROTOBUF_SHARED_PKG_DIR ${CMAKE_BINARY_DIR}/protobuf_shared)
22-set(PROTOBUF_HOST_STATIC_PKG_DIR ${CMAKE_BINARY_DIR}/protobuf_host_static)
23- 
24-set(SECURITY_COMPILE_OPT "-Wl,-z,relro,-z,now,-z,noexecstack -s -Wl,-Bsymbolic")
25-set(PROTOBUF_CXXFLAGS "${SECURITY_COMPILE_OPT} -Wno-maybe-uninitialized -Wno-unused-parameter -fPIC -fstack-protector-all -D_FORTIFY_SOURCE=2 -D_GLIBCXX_USE_CXX11_ABI=1 ${OPTIMIZE_OPTION} -Dgoogle=ascend_private")
26-set(HOST_PROTOBUF_CXXFLAGS "${SECURITY_COMPILE_OPT} -Wno-maybe-uninitialized -Wno-unused-parameter -fPIC -fstack-protector-all -D_FORTIFY_SOURCE=2 -D_GLIBCXX_USE_CXX11_ABI=0 ${OPTIMIZE_OPTION} -Dgoogle=ascend_private")
27- 
28-if (PRODUCT_SIDE STREQUAL "device")
29- message(STATUS "[UDF protobuf] Building for device side")
30- set(HOST_PROTOBUF_CXXFLAGS ${PROTOBUF_CXXFLAGS})
31-endif()
32- 
33-set(HOST_PROTOBUF_CXXFLAGS "${HOST_PROTOBUF_CXXFLAGS}")
34-message(STATUS "[UDF protobuf] HOST_PROTOBUF_CXXFLAGS is ${HOST_PROTOBUF_CXXFLAGS}")
35- 
36-# 使用设备端工具链生成 ascend_protobuf_static
37-set(CMAKE_CXX_COMPILER_ ${TOOLCHAIN_DIR}/bin/aarch64-target-linux-gnu-g++)
38-set(CMAKE_C_COMPILER_ ${TOOLCHAIN_DIR}/bin/aarch64-target-linux-gnu-gcc)
39-set(SOURCE_DIR ${PROTOBUF_SRC_DIR})
40- 
41-set(PROTOBUF_PATH ${CANN_3RD_LIB_PATH}/protobuf)
42-set(ABSEIL_PATH ${CANN_3RD_LIB_PATH}/abseil-cpp)
43-set(PATCH_PATH ${CMAKE_CURRENT_SOURCE_DIR})
44- 
45-if ((NOT EXISTS "${PROTOBUF_PATH}/protobuf-all-25.1.tar.gz" AND NOT EXISTS "${PROTOBUF_PATH}/protobuf-25.1.tar.gz") OR
46- NOT EXISTS "${ABSEIL_PATH}/abseil-cpp-20230802.1.tar.gz")
47- message(STATUS "[UDF protobuf] protobuf tar.gz not exists or abseil-cpp-20230802.1.tar.gz not exists")
48- set(REQ_URL "https://gitcode.com/cann-src-third-party/protobuf/releases/download/v25.1/protobuf-25.1.tar.gz")
49- set(ABS_REQ_URL "https://gitcode.com/cann-src-third-party/abseil-cpp/releases/download/20230802.1/abseil-cpp-20230802.1.tar.gz")
50- 
51- ExternalProject_Add(protobuf_src_dl
52- URL ${REQ_URL}
53- TLS_VERIFY OFF
54- DOWNLOAD_DIR ${PROTOBUF_DL_DIR}/
55- DOWNLOAD_NO_EXTRACT 1
56- CONFIGURE_COMMAND ""
57- BUILD_COMMAND ""
58- INSTALL_COMMAND ""
59- )
60- 
61- ExternalProject_Add(abseil_src_dl
62- URL ${ABS_REQ_URL}
63- TLS_VERIFY OFF
64- DOWNLOAD_DIR ${PROTOBUF_DL_DIR}/abseil-cpp/
65- DOWNLOAD_NO_EXTRACT 1
66- CONFIGURE_COMMAND ""
67- BUILD_COMMAND ""
68- INSTALL_COMMAND ""
69- )
70- 
71- # 下载/解压 protobuf 源码
72- ExternalProject_Add(protobuf_src
73- DOWNLOAD_COMMAND ""
74- COMMAND tar -zxf ${PROTOBUF_DL_DIR}/protobuf-25.1.tar.gz --strip-components 1 -C ${SOURCE_DIR}
75- COMMAND tar -zxf ${PROTOBUF_DL_DIR}/abseil-cpp/abseil-cpp-20230802.1.tar.gz --strip-components 1 -C ${SOURCE_DIR}/third_party/abseil-cpp
76- PATCH_COMMAND cd ${SOURCE_DIR} && patch -p1 < ${PATCH_PATH}/protobuf_25.1_change_version.patch && cd ${SOURCE_DIR}/third_party/abseil-cpp && patch -p1 < ${PATCH_PATH}/protobuf-hide_absl_symbols.patch
77- CONFIGURE_COMMAND ""
78- BUILD_COMMAND ""
79- INSTALL_COMMAND ""
80- )
81- 
82- 
83- add_dependencies(protobuf_src protobuf_src_dl abseil_src_dl)
84-else()
85- if(EXISTS "${PROTOBUF_PATH}/protobuf-all-25.1.tar.gz")
86- set(PROTOBUF_FILE_NAME "protobuf-all-25.1.tar.gz")
87- else()
88- set(PROTOBUF_FILE_NAME "protobuf-25.1.tar.gz")
89- endif()
90- message(STATUS "[UDF protobuf] protobuf tar.gz exists: ${PROTOBUF_FILE_NAME}")
91- ExternalProject_Add(protobuf_src
92- DOWNLOAD_COMMAND ""
93- COMMAND tar -zxf ${CANN_3RD_LIB_PATH}/protobuf/${PROTOBUF_FILE_NAME} --strip-components 1 -C ${SOURCE_DIR}
94- COMMAND tar -zxf ${CANN_3RD_LIB_PATH}/abseil-cpp/abseil-cpp-20230802.1.tar.gz --strip-components 1 -C ${SOURCE_DIR}/third_party/abseil-cpp
95- PATCH_COMMAND cd ${SOURCE_DIR} && patch -p1 < ${PATCH_PATH}/protobuf_25.1_change_version.patch && cd ${SOURCE_DIR}/third_party/abseil-cpp && patch -p1 < ${PATCH_PATH}/protobuf-hide_absl_symbols.patch
96- CONFIGURE_COMMAND ""
97- BUILD_COMMAND ""
98- INSTALL_COMMAND ""
99- )
100-endif()
101- 
102-ExternalProject_Add(protobuf_static_build
103- DEPENDS protobuf_src
104- SOURCE_DIR ${PROTOBUF_SRC_DIR}
105- DOWNLOAD_COMMAND ""
106- UPDATE_COMMAND ""
107- CONFIGURE_COMMAND ${CMAKE_COMMAND}
108- -G ${CMAKE_GENERATOR}
109- -DCMAKE_C_COMPILER_LAUNCHER=${CMAKE_C_COMPILER_LAUNCHER}
110- -DCMAKE_CXX_COMPILER_LAUNCHER=${CMAKE_CXX_COMPILER_LAUNCHER}
111- -DTOOLCHAIN_DIR=${TOOLCHAIN_DIR}
112- -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}
113- -DCMAKE_INSTALL_LIBDIR=lib
114- -DBUILD_SHARED_LIBS=OFF
115- -Dprotobuf_WITH_ZLIB=OFF
116- -DLIB_PREFIX=ascend_
117- -DCMAKE_SKIP_RPATH=TRUE
118- -Dprotobuf_BUILD_TESTS=OFF
119- -DCMAKE_CXX_STANDARD=14
120- -DCMAKE_CXX_FLAGS=${HOST_PROTOBUF_CXXFLAGS}
121- -DCMAKE_INSTALL_PREFIX=${PROTOBUF_STATIC_PKG_DIR}
122- -Dprotobuf_BUILD_PROTOC_BINARIES=OFF
123- -DABSL_COMPILE_OBJ=TRUE
124- <SOURCE_DIR>
125- BUILD_COMMAND $(MAKE)
126- INSTALL_COMMAND $(MAKE) install
127- EXCLUDE_FROM_ALL TRUE
128-)
129- 
130-ExternalProject_Add(protobuf_shared_build
131- DEPENDS protobuf_src
132- SOURCE_DIR ${PROTOBUF_SRC_DIR}
133- DOWNLOAD_COMMAND ""
134- UPDATE_COMMAND ""
135- CONFIGURE_COMMAND ${CMAKE_COMMAND}
136- -G ${CMAKE_GENERATOR}
137- -DTOOLCHAIN_DIR=${TOOLCHAIN_DIR}
138- -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}
139- -DCMAKE_C_COMPILER_LAUNCHER=${CMAKE_C_COMPILER_LAUNCHER}
140- -DCMAKE_CXX_COMPILER_LAUNCHER=${CMAKE_CXX_COMPILER_LAUNCHER}
141- -DCMAKE_INSTALL_LIBDIR=lib
142- -DBUILD_SHARED_LIBS=ON
143- -Dprotobuf_WITH_ZLIB=OFF
144- -DLIB_PREFIX=ascend_
145- -DCMAKE_SKIP_RPATH=TRUE
146- -Dprotobuf_BUILD_TESTS=OFF
147- -DCMAKE_CXX_STANDARD=14
148- -DCMAKE_CXX_FLAGS=${HOST_PROTOBUF_CXXFLAGS}
149- -DCMAKE_INSTALL_PREFIX=${PROTOBUF_SHARED_PKG_DIR}
150- -Dprotobuf_BUILD_PROTOC_BINARIES=OFF
151- <SOURCE_DIR>
152- BUILD_COMMAND $(MAKE)
153- INSTALL_COMMAND $(MAKE) install
154- EXCLUDE_FROM_ALL TRUE
155-)
156- 
157-ExternalProject_Add(protobuf_host_static_build
158- DEPENDS protobuf_src
159- SOURCE_DIR ${PROTOBUF_SRC_DIR}
160- DOWNLOAD_COMMAND ""
161- UPDATE_COMMAND ""
162- CONFIGURE_COMMAND ${CMAKE_COMMAND}
163- -G ${CMAKE_GENERATOR}
164- -DCMAKE_C_COMPILER_LAUNCHER=${CMAKE_C_COMPILER_LAUNCHER}
165- -DCMAKE_CXX_COMPILER_LAUNCHER=${CMAKE_CXX_COMPILER_LAUNCHER}
166- -DCMAKE_INSTALL_LIBDIR=lib
167- -DBUILD_SHARED_LIBS=OFF
168- -Dprotobuf_WITH_ZLIB=OFF
169- -DLIB_PREFIX=host_ascend_
170- -DCMAKE_SKIP_RPATH=TRUE
171- -Dprotobuf_BUILD_TESTS=OFF
172- -DCMAKE_CXX_STANDARD=14
173- -DCMAKE_CXX_FLAGS=${HOST_PROTOBUF_CXXFLAGS}
174- -DCMAKE_INSTALL_PREFIX=${PROTOBUF_HOST_STATIC_PKG_DIR}
175- -Dprotobuf_BUILD_PROTOC_BINARIES=OFF
176- -DABSL_COMPILE_OBJ=TRUE
177- <SOURCE_DIR>
178- BUILD_COMMAND $(MAKE)
179- INSTALL_COMMAND $(MAKE) install
180- EXCLUDE_FROM_ALL TRUE
181-)
182- 
183-set(PROTOBUF_HOST_DIR ${CMAKE_BINARY_DIR}/protobuf_host)
184-ExternalProject_Add(protobuf_host_build
185- DEPENDS protobuf_src
186- SOURCE_DIR ${PROTOBUF_SRC_DIR}
187- DOWNLOAD_COMMAND ""
188- UPDATE_COMMAND ""
189- CONFIGURE_COMMAND ${CMAKE_COMMAND}
190- -DCMAKE_C_COMPILER_LAUNCHER=${CMAKE_C_COMPILER_LAUNCHER}
191- -DCMAKE_CXX_COMPILER_LAUNCHER=${CMAKE_CXX_COMPILER_LAUNCHER}
192- -DCMAKE_INSTALL_PREFIX=${PROTOBUF_HOST_DIR}
193- -Dprotobuf_BUILD_TESTS=OFF
194- -DCMAKE_CXX_STANDARD=14
195- -Dprotobuf_WITH_ZLIB=OFF
196- <SOURCE_DIR>
197- BUILD_COMMAND $(MAKE)
198- INSTALL_COMMAND $(MAKE) install
199- EXCLUDE_FROM_ALL TRUE
200-)
201- 
202-add_executable(host_protoc IMPORTED)
203-set_target_properties(host_protoc PROPERTIES
204- IMPORTED_LOCATION ${PROTOBUF_HOST_DIR}/bin/protoc
205-)
206-add_dependencies(host_protoc protobuf_host_build)
207- 
208-add_library(ascend_protobuf_static_lib STATIC IMPORTED)
209-set_target_properties(ascend_protobuf_static_lib PROPERTIES
210- IMPORTED_LOCATION ${PROTOBUF_STATIC_PKG_DIR}/lib/libascend_protobuf.a
211-)
212- 
213-add_library(ascend_protobuf_static INTERFACE)
214-target_include_directories(ascend_protobuf_static INTERFACE ${PROTOBUF_STATIC_PKG_DIR}/include)
215-target_link_libraries(ascend_protobuf_static INTERFACE ascend_protobuf_static_lib)
216-add_dependencies(ascend_protobuf_static protobuf_static_build)
@@ -23,7 +23,6 @@ target_compile_definitions(func2graph PRIVATE
23)23)
24 24 
25target_compile_options(func2graph PRIVATE25target_compile_options(func2graph PRIVATE
26- -D_GLIBCXX_USE_CXX11_ABI=0
27 -fstack-protector-all26 -fstack-protector-all
28 -fvisibility-inlines-hidden27 -fvisibility-inlines-hidden
29)28)