[Compile] Support build FastDeploy with GLIBCXX_ABI=0 (#1528)

* Support abi=0 build

* trigger ci

* fix cmake
This commit is contained in:
Jason
2023-03-07 09:45:30 +08:00
committed by GitHub
parent 5411a30138
commit bf2ba72f1b
5 changed files with 53 additions and 4 deletions

View File

@@ -38,7 +38,11 @@ include(${PROJECT_SOURCE_DIR}/cmake/utils.cmake)
if(NOT MSVC)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_FLAGS "-Wno-format -g0 -O3")
if(NEED_ABI0)
add_definitions(-D_GLIBCXX_USE_CXX11_ABI=0)
else()
add_definitions(-D_GLIBCXX_USE_CXX11_ABI=1)
endif()
endif(NOT MSVC)
if(UNIX AND (NOT APPLE) AND (NOT ANDROID) AND (NOT WITH_TIMVX))

View File

@@ -4,6 +4,9 @@ CMAKE_MINIMUM_REQUIRED(VERSION 3.8)
set(FASTDEPLOY_VERSION @FASTDEPLOY_VERSION@)
set(LIBRARY_NAME @LIBRARY_NAME@)
# If compile with GLIBC_CXX_ABI=0
set(NEED_ABI0 @NEED_ABI0@)
# Hardware and Language API
set(WITH_GPU @WITH_GPU@)
set(WITH_IPU @WITH_IPU@)
@@ -66,7 +69,11 @@ include(${CMAKE_CURRENT_LIST_DIR}/utils.cmake)
if(NOT MSVC)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_FLAGS "-Wno-format")
if(NEED_ABI0=ON)
add_definitions(-D_GLIBCXX_USE_CXX11_ABI=0)
else()
add_definitions(-D_GLIBCXX_USE_CXX11_ABI=1)
endif()
endif(NOT MSVC)
# Set FastDeploy static lib definitions

View File

@@ -41,7 +41,12 @@ else()
if(CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "aarch64")
message("Cannot compile with openvino while in linux-aarch64 platform")
else()
set(OPENVINO_FILENAME "l_openvino_toolkit_centos7_${OPENVINO_VERSION}")
set(OPENVINO_VERSION "dev.2023.03.2")
if(NEED_ABI0)
set(OPENVINO_FILENAME "openvino-linux-x64-20230302-abi0")
else()
set(OPENVINO_FILENAME "openvino-linux-x64-20230302")
endif()
endif()
endif()
set(OPENVINO_URL "${OPENVINO_URL_PREFIX}${OPENVINO_FILENAME}${COMPRESSED_SUFFIX}")

View File

@@ -107,10 +107,18 @@ else()
set(PADDLEINFERENCE_VERSION "2.4-dev1")
set(PADDLEINFERENCE_FILE "paddle_inference-linux-x64-ipu-${PADDLEINFERENCE_VERSION}.tgz")
endif()
if(NEED_ABI0)
if(WITH_GPU OR WITH_PU)
message(WARNING "While NEED_ABI0=ON, only support CPU now, will fallback to CPU.")
endif()
set(PADDLEINFERENCE_FILE "paddle_inference-linux-x64-2.4.0-abi0.tgz")
endif()
endif()
endif()
set(PADDLEINFERENCE_URL "${PADDLEINFERENCE_URL_BASE}${PADDLEINFERENCE_FILE}")
ExternalProject_Add(
${PADDLEINFERENCE_PROJECT}
${EXTERNAL_PROJECT_LOG_ARGS}

View File

@@ -0,0 +1,25 @@
import sys
import os
import shutil
dirname = sys.argv[1]
bc_dirname = sys.argv[2]
if os.path.exists(bc_dirname):
raise Exception("Path {} is already exists.".format(bc_dirname))
os.makedirs(bc_dirname)
# copy include files
shutil.copytree(os.path.join(dirname, "include"), os.path.join(bc_dirname, "include"))
# copy libraries
shutil.copytree(os.path.join(dirname, "lib"), os.path.join(bc_dirname, "lib"))
third_libs = os.path.join(dirname, "third_libs")
for root, dirs, files in os.walk(third_libs):
for f in files:
if f.strip().count(".so") > 0 or f.strip() == "plugins.xml":
full_path = os.path.join(root, f)
shutil.copy(full_path, os.path.join(bc_dirname, "lib"))