mirror of
https://github.com/PaddlePaddle/FastDeploy.git
synced 2025-10-06 00:57:33 +08:00
[Android] Add WITH_TENSOR_FUNCS option -> Android (#1512)
* [Android] Add WITH_TENSOR_FUNCS option -> Android * [Android] move android cmake codes -> android.cmake * [Android] move android cmake codes -> android.cmake
This commit is contained in:
218
CMakeLists.txt
218
CMakeLists.txt
@@ -13,7 +13,7 @@
|
||||
# limitations under the License.
|
||||
|
||||
PROJECT(fastdeploy C CXX)
|
||||
CMAKE_MINIMUM_REQUIRED (VERSION 3.10)
|
||||
CMAKE_MINIMUM_REQUIRED(VERSION 3.10)
|
||||
|
||||
|
||||
option(CSRCS_DIR_NAME "Name of source code directory")
|
||||
@@ -46,12 +46,6 @@ if(UNIX AND (NOT APPLE) AND (NOT ANDROID) AND (NOT WITH_TIMVX))
|
||||
endif()
|
||||
|
||||
|
||||
if(ANDROID)
|
||||
# To reduce the volume of the library
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g0 -Ofast -ffast-math -ffunction-sections -fdata-sections")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g0 -Ofast -ffast-math -ffunction-sections -fdata-sections")
|
||||
endif()
|
||||
|
||||
############################# Basic Options for FastDeploy ################################
|
||||
option(WITH_GPU "Whether WITH_GPU=ON, will enable onnxruntime-gpu/paddle-infernce-gpu/poros-gpu" OFF)
|
||||
option(WITH_IPU "Whether WITH_IPU=ON, will enable paddle-infernce-ipu" OFF)
|
||||
@@ -76,14 +70,6 @@ option(WITH_KUNLUNXIN "Whether to compile for KunlunXin XPU deploy." OFF)
|
||||
option(WITH_TESTING "Whether to compile with unittest." OFF)
|
||||
option(WITH_CAPI "Whether to compile with c api." OFF)
|
||||
option(WITH_CSHARPAPI "Whether to compile with c# api" OFF)
|
||||
############################# Options for Android cross compiling #########################
|
||||
if(ANDROID)
|
||||
option(WITH_OPENCV_STATIC "Whether to use OpenCV static lib for Android." OFF)
|
||||
option(WITH_LITE_STATIC "Whether to use Paddle Lite static lib for Android." OFF)
|
||||
option(WITH_OPENMP "Whether to use OpenMP support for Android." OFF)
|
||||
option(WITH_JAVA "Whether to build JNI lib for Android." OFF)
|
||||
option(WITH_STATIC_LIB "Whether to build FastDeploy static lib." OFF)
|
||||
endif()
|
||||
|
||||
# Whether to build fastdeploy with vision/text/... examples, only for testings.
|
||||
option(BUILD_EXAMPLES "Whether to build fastdeploy with vision examples" OFF)
|
||||
@@ -95,7 +81,6 @@ set(ORT_DIRECTORY "" CACHE PATH "User can specify the installed onnxruntime dire
|
||||
set(OPENCV_DIRECTORY "" CACHE PATH "User can specify the installed opencv directory.")
|
||||
set(OPENVINO_DIRECTORY "" CACHE PATH "User can specify the installed openvino directory.")
|
||||
|
||||
|
||||
# Whether to build fastdeploy on device Nvidia Jetson
|
||||
# Only support CPU Inference & GPU(TensorRT) Inference Now
|
||||
option(BUILD_ON_JETSON "Whether to build fastdeploy on Nvidia Jetson" OFF)
|
||||
@@ -151,6 +136,12 @@ if(WITH_IPU)
|
||||
add_definitions(-DWITH_IPU)
|
||||
endif()
|
||||
|
||||
if(ANDROID)
|
||||
include(${PROJECT_SOURCE_DIR}/cmake/android.cmake)
|
||||
check_android_options_policy()
|
||||
set_android_cxx_complie_flags()
|
||||
endif()
|
||||
|
||||
# Check for macOS architecture
|
||||
get_osx_architecture()
|
||||
|
||||
@@ -170,9 +161,9 @@ file(GLOB_RECURSE DEPLOY_OPENVINO_SRCS ${PROJECT_SOURCE_DIR}/${CSRCS_DIR_NAME}/f
|
||||
file(GLOB_RECURSE DEPLOY_RKNPU2_SRCS ${PROJECT_SOURCE_DIR}/${CSRCS_DIR_NAME}/fastdeploy/runtime/backends/rknpu2/*.cc)
|
||||
file(GLOB_RECURSE DEPLOY_SOPHGO_SRCS ${PROJECT_SOURCE_DIR}/${CSRCS_DIR_NAME}/fastdeploy/runtime/backends/sophgo/*.cc)
|
||||
file(GLOB_RECURSE DEPLOY_LITE_SRCS ${PROJECT_SOURCE_DIR}/${CSRCS_DIR_NAME}/fastdeploy/runtime/backends/lite/*.cc)
|
||||
file(GLOB_RECURSE DEPLOY_VISION_SRCS ${PROJECT_SOURCE_DIR}/${CSRCS_DIR_NAME}/fastdeploy/vision/*.cc)
|
||||
file(GLOB_RECURSE DEPLOY_ENCRYPTION_SRCS ${PROJECT_SOURCE_DIR}/${CSRCS_DIR_NAME}/fastdeploy/encryption/*.cc)
|
||||
file(GLOB_RECURSE DEPLOY_PIPELINE_SRCS ${PROJECT_SOURCE_DIR}/${CSRCS_DIR_NAME}/fastdeploy/pipeline/*.cc)
|
||||
file(GLOB_RECURSE DEPLOY_VISION_SRCS ${PROJECT_SOURCE_DIR}/${CSRCS_DIR_NAME}/fastdeploy/vision/*.cc)
|
||||
file(GLOB_RECURSE DEPLOY_TEXT_SRCS ${PROJECT_SOURCE_DIR}/${CSRCS_DIR_NAME}/fastdeploy/text/*.cc)
|
||||
file(GLOB_RECURSE DEPLOY_PYBIND_SRCS ${PROJECT_SOURCE_DIR}/${CSRCS_DIR_NAME}/fastdeploy/pybind/*.cc ${PROJECT_SOURCE_DIR}/${CSRCS_DIR_NAME}/fastdeploy/*_pybind.cc)
|
||||
if(WITH_GPU)
|
||||
@@ -183,7 +174,12 @@ if(WITH_GPU)
|
||||
file(GLOB_RECURSE DEPLOY_TEXT_CUDA_SRCS ${PROJECT_SOURCE_DIR}/${CSRCS_DIR_NAME}/fastdeploy/text/*.cu)
|
||||
list(APPEND DEPLOY_TEXT_SRCS ${DEPLOY_TEXT_CUDA_SRCS})
|
||||
endif()
|
||||
list(REMOVE_ITEM ALL_DEPLOY_SRCS ${DEPLOY_ORT_SRCS} ${DEPLOY_PADDLE_SRCS} ${DEPLOY_POROS_SRCS} ${DEPLOY_TRT_SRCS} ${DEPLOY_OPENVINO_SRCS} ${DEPLOY_LITE_SRCS} ${DEPLOY_VISION_SRCS} ${DEPLOY_TEXT_SRCS} ${DEPLOY_PIPELINE_SRCS} ${DEPLOY_RKNPU2_SRCS} ${DEPLOY_SOPHGO_SRCS} ${DEPLOY_ENCRYPTION_SRCS})
|
||||
list(REMOVE_ITEM ALL_DEPLOY_SRCS ${DEPLOY_ORT_SRCS} ${DEPLOY_PADDLE_SRCS}
|
||||
${DEPLOY_POROS_SRCS} ${DEPLOY_TRT_SRCS}
|
||||
${DEPLOY_OPENVINO_SRCS} ${DEPLOY_LITE_SRCS}
|
||||
${DEPLOY_VISION_SRCS} ${DEPLOY_TEXT_SRCS}
|
||||
${DEPLOY_PIPELINE_SRCS} ${DEPLOY_RKNPU2_SRCS}
|
||||
${DEPLOY_SOPHGO_SRCS} ${DEPLOY_ENCRYPTION_SRCS})
|
||||
|
||||
set(DEPEND_LIBS "")
|
||||
|
||||
@@ -196,6 +192,13 @@ if(WIN32)
|
||||
add_definitions(-DEIGEN_STRONG_INLINE=inline)
|
||||
endif()
|
||||
|
||||
if(ANDROID)
|
||||
# Set tensor function/openmp compile policy after
|
||||
# ALL_DEPLOY_SRCS/DEPEND_LIBS defined
|
||||
set_android_tensor_funcs_compile_policy()
|
||||
set_android_openmp_compile_policy()
|
||||
endif()
|
||||
|
||||
# sw(sunway) not support thread_local semantic
|
||||
if(WITH_SW)
|
||||
add_definitions(-DEIGEN_AVOID_THREAD_LOCAL)
|
||||
@@ -211,9 +214,6 @@ endif()
|
||||
|
||||
if(ENABLE_LITE_BACKEND)
|
||||
add_definitions(-DENABLE_LITE_BACKEND)
|
||||
if(WITH_LITE_STATIC)
|
||||
add_definitions(-DWITH_LITE_STATIC)
|
||||
endif()
|
||||
include(${PROJECT_SOURCE_DIR}/cmake/paddlelite.cmake)
|
||||
list(APPEND ALL_DEPLOY_SRCS ${DEPLOY_LITE_SRCS})
|
||||
list(APPEND DEPEND_LIBS external_paddle_lite)
|
||||
@@ -454,17 +454,7 @@ string(STRIP "${FASTDEPLOY_VERSION}" FASTDEPLOY_VERSION)
|
||||
if (APPLE)
|
||||
set_target_properties(${LIBRARY_NAME} PROPERTIES COMPILE_FLAGS "-fvisibility=hidden")
|
||||
elseif(ANDROID)
|
||||
set_target_properties(${LIBRARY_NAME} PROPERTIES COMPILE_FLAGS "-fvisibility=hidden")
|
||||
# strip debug C++ symbol table
|
||||
set(COMMON_LINK_FLAGS "-Wl,-exclude-libs,ALL")
|
||||
set(COMMON_LINK_FLAGS_REL "-Wl,-s,--gc-sections,-exclude-libs,ALL")
|
||||
if(WITH_OPENCV_STATIC OR WITH_LITE_STATIC)
|
||||
set(COMMON_LINK_FLAGS "${COMMON_LINK_FLAGS},--allow-multiple-definition")
|
||||
set(COMMON_LINK_FLAGS_REL "${COMMON_LINK_FLAGS_REL},--allow-multiple-definition")
|
||||
endif()
|
||||
set_target_properties(${LIBRARY_NAME} PROPERTIES LINK_FLAGS ${COMMON_LINK_FLAGS})
|
||||
set_target_properties(${LIBRARY_NAME} PROPERTIES LINK_FLAGS_RELEASE ${COMMON_LINK_FLAGS_REL})
|
||||
set_target_properties(${LIBRARY_NAME} PROPERTIES LINK_FLAGS_MINSIZEREL ${COMMON_LINK_FLAGS_REL})
|
||||
set_android_library_cxx_link_flags()
|
||||
elseif(MSVC)
|
||||
else()
|
||||
if(WITH_GPU)
|
||||
@@ -486,41 +476,9 @@ if(MSVC)
|
||||
set_source_files_properties(${FD_FILES_REQUIRE_BIGOBJ} PROPERTIES COMPILE_FLAGS "/bigobj")
|
||||
endif()
|
||||
|
||||
# extra depend libs for android
|
||||
if(ANDROID)
|
||||
find_library(log-lib log)
|
||||
list(APPEND DEPEND_LIBS ${log-lib})
|
||||
if(WITH_LITE_STATIC)
|
||||
# need omp for static Paddle Lite lib
|
||||
set(WITH_OPENMP ON CACHE BOOL "Force WITH_OPENMP=ON while WITH_LITE_STATIC=ON" FORCE)
|
||||
message(STATUS "Force WITH_OPENMP=${WITH_OPENMP} while WITH_LITE_STATIC=ON")
|
||||
endif()
|
||||
if(WITH_OPENMP)
|
||||
include(${PROJECT_SOURCE_DIR}/cmake/openmp.cmake)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
target_link_libraries(${LIBRARY_NAME} ${DEPEND_LIBS})
|
||||
|
||||
################################ JNI & STATIC LIB: FastDeploy Android JNI & STATIC Lib ###############################
|
||||
if(ANDROID AND WITH_JAVA)
|
||||
include(${PROJECT_SOURCE_DIR}/cmake/fastdeploy_jni.cmake)
|
||||
endif()
|
||||
|
||||
if(ANDROID AND WITH_STATIC_LIB)
|
||||
# Here, we use a dummy target (fastdelpoy_dummy)
|
||||
# to form a build dependency tree for fastdeploy_static lib.
|
||||
add_library(fastdelpoy_dummy STATIC ${ALL_DEPLOY_SRCS})
|
||||
# Still add ${DEPEND_LIBS} for cmake to form link_libraries
|
||||
# property tree for a static library.
|
||||
target_link_libraries(fastdelpoy_dummy ${DEPEND_LIBS})
|
||||
# Build fastdelpoy_dummy when the third-party
|
||||
# libraries (opencv, paddle lite, flycv) are ready.
|
||||
add_dependencies(fastdelpoy_dummy ${LIBRARY_NAME})
|
||||
# Add WITH_STATIC_LIB compile definitions, see lite_backend.cc.
|
||||
target_compile_definitions(fastdelpoy_dummy PRIVATE WITH_STATIC_LIB)
|
||||
target_compile_definitions(fastdelpoy_dummy PRIVATE WITH_STATIC_LIB_AT_COMPILING)
|
||||
bundle_static_library(fastdelpoy_dummy fastdeploy_static bundle_fastdeploy)
|
||||
if(ANDROID)
|
||||
set_android_extra_libraries_target()
|
||||
endif()
|
||||
|
||||
##################################### Examples ####################################
|
||||
@@ -567,40 +525,13 @@ if(WIN32)
|
||||
RUNTIME DESTINATION lib
|
||||
)
|
||||
elseif(ANDROID)
|
||||
if(WITH_STATIC_LIB)
|
||||
install(
|
||||
FILES
|
||||
${CMAKE_CURRENT_BINARY_DIR}/libfastdeploy_static.a
|
||||
DESTINATION lib/${ANDROID_ABI}
|
||||
)
|
||||
else()
|
||||
install(
|
||||
TARGETS ${LIBRARY_NAME}
|
||||
LIBRARY DESTINATION lib/${ANDROID_ABI}
|
||||
)
|
||||
endif()
|
||||
# Install omp into fastdeploy lib dir if WITH_OPENMP=ON
|
||||
# and WITH_LITE_STATIC=OFF.
|
||||
if(WITH_OPENMP AND (NOT WITH_LITE_STATIC) AND OpenMP_CXX_FOUND AND ENABLE_OPENMP_SHARED)
|
||||
install(
|
||||
FILES
|
||||
${OpenMP_CXX_LIBRARIES}
|
||||
DESTINATION ${CMAKE_INSTALL_PREFIX}/lib/${ANDROID_ABI}
|
||||
)
|
||||
endif()
|
||||
# install Android JNI lib
|
||||
if(WITH_JAVA)
|
||||
install(
|
||||
TARGETS fastdeploy_jni
|
||||
LIBRARY DESTINATION jni/${ANDROID_ABI}
|
||||
)
|
||||
endif()
|
||||
set_android_libraries_installation()
|
||||
else()
|
||||
install(
|
||||
TARGETS ${LIBRARY_NAME}
|
||||
LIBRARY DESTINATION lib
|
||||
)
|
||||
LIBRARY DESTINATION lib)
|
||||
endif()
|
||||
|
||||
install(
|
||||
DIRECTORY ${PROJECT_SOURCE_DIR}/${CSRCS_DIR_NAME}/fastdeploy
|
||||
DESTINATION ${CMAKE_INSTALL_PREFIX}/include
|
||||
@@ -614,76 +545,12 @@ if(NOT ANDROID)
|
||||
DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/third_libs/install
|
||||
DESTINATION ${CMAKE_INSTALL_PREFIX}/third_libs
|
||||
)
|
||||
install(
|
||||
DIRECTORY ${PROJECT_SOURCE_DIR}/examples
|
||||
DESTINATION ${CMAKE_INSTALL_PREFIX}
|
||||
)
|
||||
else()
|
||||
# opencv/flycv always needs to be provided to users because our api
|
||||
# explicitly depends on opencv's and flycv's api in headers.
|
||||
# The headers and libs of opencv must be install.
|
||||
if(ENABLE_VISION)
|
||||
if(WITH_OPENCV_STATIC AND WITH_STATIC_LIB)
|
||||
# Only need to install headers while building
|
||||
# FastDeploy static lib. (TODO:qiuyanjun)
|
||||
install(
|
||||
DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/third_libs/install/opencv/sdk/native/jni/include
|
||||
DESTINATION ${CMAKE_INSTALL_PREFIX}/third_libs/install/opencv/sdk/native/jni
|
||||
)
|
||||
else()
|
||||
install(
|
||||
DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/third_libs/install/opencv
|
||||
DESTINATION ${CMAKE_INSTALL_PREFIX}/third_libs/install
|
||||
)
|
||||
endif()
|
||||
# only need flycv's headers (may also install libs? TODO:qiuyanjun)
|
||||
if(ENABLE_FLYCV)
|
||||
if(WITH_FLYCV_STATIC)
|
||||
install(
|
||||
DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/third_libs/install/flycv/include
|
||||
DESTINATION ${CMAKE_INSTALL_PREFIX}/third_libs/install/flycv
|
||||
)
|
||||
else()
|
||||
install(
|
||||
DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/third_libs/install/flycv
|
||||
DESTINATION ${CMAKE_INSTALL_PREFIX}/third_libs/install
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
endif(ENABLE_VISION)
|
||||
# fast_tokenizer's static lib is not avaliable now!
|
||||
# may support some days later(TODO:qiuyanjun)
|
||||
if(ENABLE_TEXT)
|
||||
install(
|
||||
DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/third_libs/install/fast_tokenizer
|
||||
DESTINATION ${CMAKE_INSTALL_PREFIX}/third_libs/install
|
||||
)
|
||||
endif()
|
||||
# some libs may not to install while in static mode
|
||||
if(ENABLE_LITE_BACKEND)
|
||||
if(WITH_LITE_STATIC)
|
||||
if(WITH_STATIC_LIB)
|
||||
install(
|
||||
DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/third_libs/install/paddlelite/include
|
||||
DESTINATION ${CMAKE_INSTALL_PREFIX}/third_libs/install/paddlelite
|
||||
)
|
||||
endif()
|
||||
else()
|
||||
install(
|
||||
DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/third_libs/install/paddlelite
|
||||
DESTINATION ${CMAKE_INSTALL_PREFIX}/third_libs/install
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(WIN32 AND BUILD_EXAMPLES)
|
||||
get_windows_path(_tmp_install_dir ${CMAKE_CURRENT_BINARY_DIR}/third_libs/install)
|
||||
get_windows_path(_publish_exe_dir ${EXECUTABLE_OUTPUT_PATH}/Release)
|
||||
list(GET CMAKE_CONFIGURATION_TYPES 0 _CONFIG_TYPE)
|
||||
if((${CMAKE_BUILD_TYPE} MATCHES "Release") OR (${_CONFIG_TYPE} MATCHES "Release"))
|
||||
install(TARGETS ${LIBRARY_NAME} RUNTIME DESTINATION ${EXECUTABLE_OUTPUT_PATH}/Release)
|
||||
add_custom_target(
|
||||
copy_fd_third_dlls_examples ALL COMMAND
|
||||
cmd /C ${PROJECT_SOURCE_DIR}/scripts/fastdeploy_init.bat install ${_tmp_install_dir} ${_publish_exe_dir} noconfirm)
|
||||
add_dependencies(copy_fd_third_dlls_examples ${LIBRARY_NAME} copy_yaml_library)
|
||||
endif()
|
||||
set_android_third_libs_installation()
|
||||
endif()
|
||||
|
||||
install(
|
||||
@@ -695,17 +562,11 @@ install(
|
||||
${PROJECT_SOURCE_DIR}/FastDeployCSharp.cmake
|
||||
${PROJECT_SOURCE_DIR}/cmake/FastDeployConfig.cmake
|
||||
${PROJECT_SOURCE_DIR}/cmake/utils.cmake
|
||||
${PROJECT_SOURCE_DIR}/cmake/summary.cmake
|
||||
${PROJECT_SOURCE_DIR}/cmake/openmp.cmake
|
||||
DESTINATION ${CMAKE_INSTALL_PREFIX}
|
||||
)
|
||||
|
||||
if(NOT ANDROID)
|
||||
install(
|
||||
DIRECTORY ${PROJECT_SOURCE_DIR}/examples
|
||||
DESTINATION ${CMAKE_INSTALL_PREFIX}
|
||||
)
|
||||
endif()
|
||||
|
||||
install(
|
||||
FILES ${PROJECT_SOURCE_DIR}/cmake/gflags.cmake
|
||||
DESTINATION ${CMAKE_INSTALL_PREFIX}/utils
|
||||
@@ -742,6 +603,19 @@ endif()
|
||||
|
||||
include(${PROJECT_SOURCE_DIR}/cmake/config_cpack.cmake)
|
||||
|
||||
if(WIN32 AND BUILD_EXAMPLES)
|
||||
get_windows_path(_tmp_install_dir ${CMAKE_CURRENT_BINARY_DIR}/third_libs/install)
|
||||
get_windows_path(_publish_exe_dir ${EXECUTABLE_OUTPUT_PATH}/Release)
|
||||
list(GET CMAKE_CONFIGURATION_TYPES 0 _CONFIG_TYPE)
|
||||
if((${CMAKE_BUILD_TYPE} MATCHES "Release") OR (${_CONFIG_TYPE} MATCHES "Release"))
|
||||
install(TARGETS ${LIBRARY_NAME} RUNTIME DESTINATION ${EXECUTABLE_OUTPUT_PATH}/Release)
|
||||
add_custom_target(
|
||||
copy_fd_third_dlls_examples ALL COMMAND
|
||||
cmd /C ${PROJECT_SOURCE_DIR}/scripts/fastdeploy_init.bat install ${_tmp_install_dir} ${_publish_exe_dir} noconfirm)
|
||||
add_dependencies(copy_fd_third_dlls_examples ${LIBRARY_NAME} copy_yaml_library)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
############################### Building: FastDeploy Python Wheel #############################
|
||||
if(BUILD_FASTDEPLOY_PYTHON)
|
||||
add_definitions(-DBUILD_FASTDEPLOY_PYTHON)
|
||||
|
@@ -1,6 +1,23 @@
|
||||
CMAKE_MINIMUM_REQUIRED(VERSION 3.8)
|
||||
|
||||
# FastDeploy basic infos
|
||||
set(FASTDEPLOY_VERSION @FASTDEPLOY_VERSION@)
|
||||
set(LIBRARY_NAME @LIBRARY_NAME@)
|
||||
|
||||
# Hardware and Language API
|
||||
set(WITH_GPU @WITH_GPU@)
|
||||
set(WITH_IPU @WITH_IPU@)
|
||||
set(WITH_ASCEND @WITH_ASCEND@)
|
||||
set(WITH_DIRECTML @WITH_DIRECTML@)
|
||||
set(WITH_TIMVX @WITH_TIMVX@)
|
||||
set(WITH_KUNLUNXIN @WITH_KUNLUNXIN@)
|
||||
set(WITH_CAPI @WITH_CAPI@)
|
||||
set(WITH_CSHARPAPI @WITH_CSHARPAPI@)
|
||||
set(WITH_TESTING @WITH_TESTING@)
|
||||
set(BUILD_ON_JETSON @BUILD_ON_JETSON@)
|
||||
set(RKNN2_TARGET_SOC "@RKNN2_TARGET_SOC@")
|
||||
|
||||
# Inference backend and FastDeploy Moudle
|
||||
set(ENABLE_ORT_BACKEND @ENABLE_ORT_BACKEND@)
|
||||
set(ENABLE_RKNPU2_BACKEND @ENABLE_RKNPU2_BACKEND@)
|
||||
set(ENABLE_SOPHGO_BACKEND @ENABLE_SOPHGO_BACKEND@)
|
||||
@@ -8,36 +25,35 @@ set(ENABLE_LITE_BACKEND @ENABLE_LITE_BACKEND@)
|
||||
set(ENABLE_PADDLE_BACKEND @ENABLE_PADDLE_BACKEND@)
|
||||
set(ENABLE_OPENVINO_BACKEND @ENABLE_OPENVINO_BACKEND@)
|
||||
set(ENABLE_POROS_BACKEND @ENABLE_POROS_BACKEND@)
|
||||
set(POROS_VERSION @POROS_VERSION@)
|
||||
set(ENABLE_TRT_BACKEND @ENABLE_TRT_BACKEND@)
|
||||
set(ENABLE_PADDLE2ONNX @ENABLE_PADDLE2ONNX@)
|
||||
|
||||
set(ENABLE_VISION @ENABLE_VISION@)
|
||||
set(ENABLE_FLYCV @ENABLE_FLYCV@)
|
||||
set(ENABLE_CVCUDA @ENABLE_CVCUDA@)
|
||||
set(ENABLE_TEXT @ENABLE_TEXT@)
|
||||
set(ENABLE_ENCRYPTION @ENABLE_ENCRYPTION@)
|
||||
set(BUILD_ON_JETSON @BUILD_ON_JETSON@)
|
||||
set(ENABLE_BENCHMARK @ENABLE_BENCHMARK@)
|
||||
|
||||
# Version infos and custom settings for third libs
|
||||
set(PADDLEINFERENCE_VERSION @PADDLEINFERENCE_VERSION@)
|
||||
set(POROS_VERSION @POROS_VERSION@)
|
||||
set(OPENVINO_VERSION @OPENVINO_VERSION@)
|
||||
set(WITH_LITE_STATIC @WITH_LITE_STATIC@)
|
||||
set(WITH_OPENCV_STATIC @WITH_OPENCV_STATIC@)
|
||||
set(WITH_FLYCV_STATIC @WITH_FLYCV_STATIC@)
|
||||
set(WITH_OPENMP @WITH_OPENMP@)
|
||||
set(WITH_JAVA @WITH_JAVA@)
|
||||
set(OPENCV_FILENAME @OPENCV_FILENAME@)
|
||||
set(OPENVINO_FILENAME @OPENVINO_FILENAME@)
|
||||
set(PADDLELITE_FILENAME @PADDLELITE_FILENAME@)
|
||||
set(LIBRARY_NAME @LIBRARY_NAME@)
|
||||
set(OPENCV_DIRECTORY "@OPENCV_DIRECTORY@")
|
||||
set(ORT_DIRECTORY "@ORT_DIRECTORY@")
|
||||
set(OPENVINO_DIRECTORY "@OPENVINO_DIRECTORY@")
|
||||
set(RKNN2_TARGET_SOC "@RKNN2_TARGET_SOC@")
|
||||
set(WITH_KUNLUNXIN @WITH_KUNLUNXIN@)
|
||||
set(WITH_CAPI @WITH_CAPI@)
|
||||
# Whether to use FastDeploy static lib. The default
|
||||
# value for this option is determined by the SDK
|
||||
# build-time options.
|
||||
set(WITH_STATIC_LIB @WITH_STATIC_LIB@)
|
||||
|
||||
# Android: specific option for Android OS
|
||||
set(WITH_ANDROID_STATIC_LIB @WITH_ANDROID_STATIC_LIB@)
|
||||
set(WITH_ANDROID_LITE_STATIC @WITH_ANDROID_LITE_STATIC@)
|
||||
set(WITH_ANDROID_OPENCV_STATIC @WITH_ANDROID_OPENCV_STATIC@)
|
||||
set(WITH_ANDROID_FLYCV_STATIC @WITH_ANDROID_FLYCV_STATIC@)
|
||||
set(WITH_ANDROID_OPENMP @WITH_ANDROID_OPENMP@)
|
||||
set(WITH_ANDROID_JAVA @WITH_ANDROID_JAVA@)
|
||||
set(WITH_ANDROID_TENSOR_FUNCS @WITH_ANDROID_TENSOR_FUNCS@)
|
||||
|
||||
set(FASTDEPLOY_LIBS "")
|
||||
set(FASTDEPLOY_INCS "")
|
||||
@@ -54,25 +70,27 @@ if(NOT MSVC)
|
||||
endif(NOT MSVC)
|
||||
|
||||
# Set FastDeploy static lib definitions
|
||||
if(WITH_LITE_STATIC)
|
||||
if(WITH_ANDROID_LITE_STATIC)
|
||||
add_definitions(-DWITH_LITE_STATIC)
|
||||
add_definitions(-DWITH_ANDROID_LITE_STATIC)
|
||||
endif()
|
||||
|
||||
if(WITH_STATIC_LIB)
|
||||
if(WITH_ANDROID_STATIC_LIB)
|
||||
add_definitions(-DWITH_STATIC_LIB)
|
||||
add_definitions(-DWITH_ANDROID_STATIC_LIB)
|
||||
# add_definitions(-DWITH_STATIC_WARNING)
|
||||
endif()
|
||||
|
||||
# Still need omp while using FastDeploy static lib.
|
||||
# This is due to the use of openmp for Paddle Lite's
|
||||
# static library.
|
||||
if(ANDROID AND WITH_STATIC_LIB AND WITH_LITE_STATIC)
|
||||
if(ANDROID AND WITH_ANDROID_STATIC_LIB AND WITH_ANDROID_LITE_STATIC)
|
||||
include(${CMAKE_CURRENT_LIST_DIR}/openmp.cmake)
|
||||
endif()
|
||||
|
||||
if(ANDROID)
|
||||
add_library(fastdeploy STATIC IMPORTED GLOBAL)
|
||||
if(WITH_STATIC_LIB)
|
||||
if(WITH_ANDROID_STATIC_LIB)
|
||||
set_property(TARGET fastdeploy PROPERTY IMPORTED_LOCATION
|
||||
${CMAKE_CURRENT_LIST_DIR}/lib/${ANDROID_ABI}/lib${LIBRARY_NAME}_static.a)
|
||||
else()
|
||||
@@ -80,7 +98,7 @@ if(ANDROID)
|
||||
${CMAKE_CURRENT_LIST_DIR}/lib/${ANDROID_ABI}/lib${LIBRARY_NAME}.so)
|
||||
endif()
|
||||
list(APPEND FASTDEPLOY_LIBS fastdeploy)
|
||||
if(WITH_OPENMP AND (NOT WITH_LITE_STATIC))
|
||||
if(WITH_ANDROID_OPENMP AND (NOT WITH_ANDROID_LITE_STATIC))
|
||||
add_library(fastdeploy_omp STATIC IMPORTED GLOBAL)
|
||||
set_property(TARGET fastdeploy_omp PROPERTY IMPORTED_LOCATION ${CMAKE_CURRENT_LIST_DIR}/lib/${ANDROID_ABI}/libomp.so)
|
||||
list(APPEND FASTDEPLOY_LIBS fastdeploy_omp)
|
||||
@@ -144,8 +162,8 @@ endif()
|
||||
if(ENABLE_LITE_BACKEND)
|
||||
set(LITE_DIR ${CMAKE_CURRENT_LIST_DIR}/third_libs/install/${PADDLELITE_FILENAME})
|
||||
if(ANDROID)
|
||||
if(WITH_LITE_STATIC)
|
||||
if(WITH_STATIC_LIB)
|
||||
if(WITH_ANDROID_LITE_STATIC)
|
||||
if(WITH_ANDROID_STATIC_LIB)
|
||||
list(APPEND FASTDEPLOY_INCS ${LITE_DIR}/include)
|
||||
endif()
|
||||
else()
|
||||
@@ -223,8 +241,8 @@ if(ENABLE_VISION)
|
||||
endif()
|
||||
message(STATUS "The path of OpenCV is ${OpenCV_DIR}.")
|
||||
if(ANDROID)
|
||||
if(WITH_OPENCV_STATIC)
|
||||
if(WITH_STATIC_LIB)
|
||||
if(WITH_ANDROID_OPENCV_STATIC)
|
||||
if(WITH_ANDROID_STATIC_LIB)
|
||||
# Only need the headers of opencv while using FastDeploy static lib.
|
||||
list(APPEND FASTDEPLOY_INCS ${OpenCV_DIR}/include)
|
||||
else()
|
||||
@@ -265,7 +283,7 @@ if(ENABLE_VISION)
|
||||
include_directories(${CMAKE_CURRENT_LIST_DIR}/third_libs/install/flycv/include)
|
||||
set(FLYCV_LIB_DIR ${CMAKE_CURRENT_LIST_DIR}/third_libs/install/flycv/lib)
|
||||
if(ANDROID)
|
||||
if(NOT WITH_FLYCV_STATIC)
|
||||
if(NOT WITH_ANDROID_FLYCV_STATIC)
|
||||
add_library(flycv_shared STATIC IMPORTED GLOBAL)
|
||||
set_property(TARGET flycv_shared PROPERTY IMPORTED_LOCATION ${FLYCV_LIB_DIR}/${ANDROID_ABI}/libflycv_shared.so)
|
||||
list(APPEND FASTDEPLOY_LIBS flycv_shared)
|
||||
@@ -336,7 +354,7 @@ if(ANDROID)
|
||||
endif()
|
||||
|
||||
# Update CXX LINKER's FLAGS, reference: https://zhuanlan.zhihu.com/p/595527528
|
||||
if(ANDROID AND (WITH_OPENCV_STATIC OR WITH_LITE_STATIC))
|
||||
if(ANDROID AND (WITH_ANDROID_OPENCV_STATIC OR WITH_ANDROID_LITE_STATIC))
|
||||
set(COMMON_LINK_FLAGS_REL "-Wl,-s,--gc-sections,-exclude-libs,ALL")
|
||||
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${COMMON_LINK_FLAGS_REL} -Wl,-allow-multiple-definition" CACHE INTERNAL "" FORCE)
|
||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${COMMON_LINK_FLAGS_REL} -Wl,-allow-multiple-definition" CACHE INTERNAL "" FORCE)
|
||||
@@ -344,74 +362,8 @@ endif()
|
||||
|
||||
remove_duplicate_libraries(FASTDEPLOY_LIBS)
|
||||
|
||||
# Print compiler information
|
||||
message(STATUS "")
|
||||
message(STATUS "*************FastDeploy Building Summary**********")
|
||||
message(STATUS " CMake version : ${CMAKE_VERSION}")
|
||||
message(STATUS " CMake command : ${CMAKE_COMMAND}")
|
||||
message(STATUS " System : ${CMAKE_SYSTEM_NAME}")
|
||||
message(STATUS " C++ compiler : ${CMAKE_CXX_COMPILER}")
|
||||
message(STATUS " C++ compiler version : ${CMAKE_CXX_COMPILER_VERSION}")
|
||||
message(STATUS " CXX flags : ${CMAKE_CXX_FLAGS}")
|
||||
message(STATUS " EXE linker flags : ${CMAKE_EXE_LINKER_FLAGS}")
|
||||
message(STATUS " Shared linker flags : ${CMAKE_SHARED_LINKER_FLAGS}")
|
||||
get_directory_property(tmp DIRECTORY ${PROJECT_SOURCE_DIR} COMPILE_DEFINITIONS)
|
||||
message(STATUS " Compile definitions : ${tmp}")
|
||||
message(STATUS " CMAKE_PREFIX_PATH : ${CMAKE_PREFIX_PATH}")
|
||||
message(STATUS " CMAKE_INSTALL_PREFIX : ${CMAKE_INSTALL_PREFIX}")
|
||||
message(STATUS " CMAKE_MODULE_PATH : ${CMAKE_MODULE_PATH}")
|
||||
message(STATUS "")
|
||||
message(STATUS " WITH_GPU : ${WITH_GPU}")
|
||||
message(STATUS " WITH_CAPI : ${WITH_CAPI}")
|
||||
message(STATUS " ENABLE_ORT_BACKEND : ${ENABLE_ORT_BACKEND}")
|
||||
message(STATUS " ENABLE_RKNPU2_BACKEND : ${ENABLE_RKNPU2_BACKEND}")
|
||||
message(STATUS " ENABLE_SOPHGO_BACKEND : ${ENABLE_SOPHGO_BACKEND}")
|
||||
message(STATUS " ENABLE_PADDLE_BACKEND : ${ENABLE_PADDLE_BACKEND}")
|
||||
message(STATUS " ENABLE_POROS_BACKEND : ${ENABLE_POROS_BACKEND}")
|
||||
message(STATUS " ENABLE_OPENVINO_BACKEND : ${ENABLE_OPENVINO_BACKEND}")
|
||||
message(STATUS " ENABLE_TRT_BACKEND : ${ENABLE_TRT_BACKEND}")
|
||||
message(STATUS " ENABLE_LITE_BACKEND : ${ENABLE_LITE_BACKEND}")
|
||||
|
||||
if(ENABLE_PADDLE_BACKEND)
|
||||
message(STATUS " Paddle Inference version : ${PADDLEINFERENCE_VERSION}")
|
||||
endif()
|
||||
if(ENABLE_POROS_BACKEND)
|
||||
message(STATUS " Poros version : ${POROS_VERSION}")
|
||||
endif()
|
||||
if(ENABLE_OPENVINO_BACKEND)
|
||||
message(STATUS " OpenVINO version : ${OPENVINO_VERSION}")
|
||||
endif()
|
||||
message(STATUS " ENABLE_TRT_BACKEND : ${ENABLE_TRT_BACKEND}")
|
||||
message(STATUS " ENABLE_VISION : ${ENABLE_VISION}")
|
||||
message(STATUS " ENABLE_CVCUDA : ${ENABLE_CVCUDA}")
|
||||
message(STATUS " ENABLE_TEXT : ${ENABLE_TEXT}")
|
||||
message(STATUS " ENABLE_ENCRYPTION : ${ENABLE_ENCRYPTION}")
|
||||
if(WITH_GPU)
|
||||
message(STATUS " CUDA_DIRECTORY : ${CUDA_DIRECTORY}")
|
||||
endif()
|
||||
if(OPENCV_DIRECTORY)
|
||||
message(STATUS " OPENCV_DIRECTORY : ${OPENCV_DIRECTORY}")
|
||||
endif()
|
||||
if(ORT_DIRECTORY)
|
||||
message(STATUS " ORT_DIRECTORY : ${ORT_DIRECTORY}")
|
||||
endif()
|
||||
if(OPENVINO_DIRECTORY)
|
||||
message(STATUS " OPENVINO_DIRECTORY : ${OPENVINO_DIRECTORY}")
|
||||
endif()
|
||||
if(ANDROID)
|
||||
message(STATUS " ANDROID_ABI : ${ANDROID_ABI}")
|
||||
message(STATUS " ANDROID_PLATFORM : ${ANDROID_PLATFORM}")
|
||||
message(STATUS " ANDROID_NDK : ${ANDROID_NDK}")
|
||||
message(STATUS " ANDROID_NDK_MAJOR : ${ANDROID_NDK_MAJOR}")
|
||||
message(STATUS " WITH_STATIC_LIB: : ${WITH_STATIC_LIB}")
|
||||
message(STATUS " WITH_OPENCV_STATIC: : ${WITH_OPENCV_STATIC}")
|
||||
message(STATUS " WITH_FLYCV_STATIC: : ${WITH_FLYCV_STATIC}")
|
||||
if(ENABLE_LITE_BACKEND)
|
||||
message(STATUS " WITH_LITE_STATIC : ${WITH_LITE_STATIC}")
|
||||
endif()
|
||||
message(STATUS " WITH_OPENMP: : ${WITH_OPENMP}")
|
||||
message(STATUS " WITH_JAVA: : ${WITH_JAVA}")
|
||||
endif()
|
||||
include(${CMAKE_CURRENT_LIST_DIR}/summary.cmake)
|
||||
fastdeploy_summary()
|
||||
message(STATUS " DEPENDENCY_LIBS : ${FASTDEPLOY_LIBS}")
|
||||
|
||||
if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
|
||||
@@ -424,7 +376,7 @@ endif()
|
||||
function(install_fastdeploy_libraries DESTINATION_DIR)
|
||||
# No dynamic libs need to install while using
|
||||
# FastDeploy static lib.
|
||||
if(WITH_STATIC_LIB)
|
||||
if(ANDROID AND WITH_ANDROID_STATIC_LIB)
|
||||
return()
|
||||
endif()
|
||||
set(DYN_LIB_SUFFIX "*.so*")
|
||||
@@ -452,14 +404,14 @@ function(install_fastdeploy_libraries DESTINATION_DIR)
|
||||
endif()
|
||||
list(REMOVE_ITEM ALL_DEPS_DYN_LIBS ${ALL_OPENCV_DYN_LIBS})
|
||||
|
||||
if(NOT WITH_OPENCV_STATIC)
|
||||
if(WIN32)
|
||||
file(GLOB OPENCV_DYN_LIBS ${OpenCV_DIR}/x64/vc15/bin/${DYN_LIB_SUFFIX})
|
||||
elseif(ANDROID)
|
||||
file(GLOB OPENCV_DYN_LIBS ${OpenCV_NATIVE_DIR}/libs/${ANDROID_ABI}/${DYN_LIB_SUFFIX})
|
||||
else() # linux/mac
|
||||
file(GLOB OPENCV_DYN_LIBS ${OpenCV_DIR}/lib/${DYN_LIB_SUFFIX})
|
||||
endif()
|
||||
if(WIN32)
|
||||
file(GLOB OPENCV_DYN_LIBS ${OpenCV_DIR}/x64/vc15/bin/${DYN_LIB_SUFFIX})
|
||||
file(INSTALL ${OPENCV_DYN_LIBS} DESTINATION ${DESTINATION_DIR})
|
||||
elseif(ANDROID AND (NOT WITH_ANDROID_OPENCV_STATIC))
|
||||
file(GLOB OPENCV_DYN_LIBS ${OpenCV_NATIVE_DIR}/libs/${ANDROID_ABI}/${DYN_LIB_SUFFIX})
|
||||
file(INSTALL ${OPENCV_DYN_LIBS} DESTINATION ${DESTINATION_DIR})
|
||||
else() # linux/mac
|
||||
file(GLOB OPENCV_DYN_LIBS ${OpenCV_DIR}/lib/${DYN_LIB_SUFFIX})
|
||||
file(INSTALL ${OPENCV_DYN_LIBS} DESTINATION ${DESTINATION_DIR})
|
||||
endif()
|
||||
|
||||
@@ -467,11 +419,10 @@ function(install_fastdeploy_libraries DESTINATION_DIR)
|
||||
if(ENABLE_FLYCV)
|
||||
file(GLOB_RECURSE ALL_FLYCV_DYN_LIBS ${FLYCV_LIB_DIR}/${DYN_LIB_SUFFIX})
|
||||
list(REMOVE_ITEM ALL_DEPS_DYN_LIBS ${ALL_FLYCV_DYN_LIBS})
|
||||
if(NOT WITH_FLYCV_STATIC)
|
||||
if(ANDROID AND (NOT WITH_ANDROID_FLYCV_STATIC))
|
||||
file(INSTALL ${ALL_FLYCV_DYN_LIBS} DESTINATION ${DESTINATION_DIR})
|
||||
endif()
|
||||
endif()
|
||||
|
||||
endif()
|
||||
|
||||
if(ENABLE_OPENVINO_BACKEND)
|
||||
|
238
cmake/android.cmake
Normal file
238
cmake/android.cmake
Normal file
@@ -0,0 +1,238 @@
|
||||
# Copyright (c) 2023 PaddlePaddle Authors. All Rights Reserved.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
############################# Options for Android cross compiling #########################
|
||||
|
||||
|
||||
# Options only for FastDeploy Android lib.
|
||||
if(ANDROID)
|
||||
# These options are only support for Android now. Some options, such as
|
||||
# WITH_OPENMP/WITH_JAVA/WITH_STATIC_LIB may export to main CMakeLists.txt
|
||||
# to support IOS/NON Android JAVA API/..., etc.
|
||||
option(WITH_ANDROID_OPENCV_STATIC "Whether to use OpenCV static lib for Android." OFF)
|
||||
option(WITH_ANDROID_FLYCV_STATIC "Whether to use FlyCV static lib for Android." OFF)
|
||||
option(WITH_ANDROID_LITE_STATIC "Whether to use Paddle Lite static lib for Android." OFF)
|
||||
option(WITH_ANDROID_OPENMP "Whether to use OpenMP support for Android." OFF)
|
||||
option(WITH_ANDROID_JAVA "Whether to build JNI lib for Android." OFF)
|
||||
option(WITH_ANDROID_STATIC_LIB "Whether to build FastDeploy static lib." OFF)
|
||||
option(WITH_ANDROID_TENSOR_FUNCS "Whether to build FastDeploy tensor function." ON)
|
||||
else()
|
||||
message(FATAL_ERROR "WITH_ANDROID_xxx options only support for Android!")
|
||||
endif()
|
||||
|
||||
# Check Android ABI policy.
|
||||
function(check_android_options_policy)
|
||||
if((NOT ANDROID_ABI MATCHES "armeabi-v7a") AND (NOT ANDROID_ABI MATCHES "arm64-v8a"))
|
||||
message(FATAL_ERROR "FastDeploy with FlyCV only support armeabi-v7a, arm64-v8a now.")
|
||||
endif()
|
||||
if(ENABLE_FLYCV OR ENABLE_TEXT OR ENABLE_LITE_BACKEND OR WITH_ANDROID_OPENMP)
|
||||
if(NOT ANDROID_TOOLCHAIN MATCHES "clang")
|
||||
message(FATAL_ERROR "Currently, only support clang toolchain while cross compiling FastDeploy for Android with Paddle Lite/FlyCV/FastTokenizer/OpenMP, but found ${ANDROID_TOOLCHAIN}.")
|
||||
endif()
|
||||
endif()
|
||||
if(WITH_ANDROID_STATIC_LIB)
|
||||
message(STATUS "Found WITH_ANDROID_STATIC_LIB=ON:")
|
||||
if(ENABLE_LITE_BACKEND AND (NOT WITH_ANDROID_LITE_STATIC))
|
||||
set(WITH_ANDROID_LITE_STATIC ON CACHE BOOL "\tForce WITH_ANDROID_LITE_STATIC=ON" FORCE)
|
||||
endif()
|
||||
if(ENABLE_VISION AND (NOT WITH_ANDROID_OPENCV_STATIC))
|
||||
set(WITH_ANDROID_OPENCV_STATIC ON CACHE BOOL "\tForce WITH_ANDROID_LITE_STATIC=ON" FORCE)
|
||||
endif()
|
||||
if(ENABLE_FLYCV AND (NOT WITH_ANDROID_FLYCV_STATIC))
|
||||
set(WITH_ANDROID_FLYCV_STATIC ON CACHE BOOL "\tForce WITH_ANDROID_LITE_STATIC=ON" FORCE)
|
||||
endif()
|
||||
if(ENABLE_TEXT)
|
||||
message(FATAL_ERROR "Not support to build FastDeploy static lib with Text API now!")
|
||||
endif()
|
||||
endif()
|
||||
# Add WITH_LITE_STATIC/WITH_ANDROID_LITE_STATIC compile definitions, see lite_backend.cc.
|
||||
if(WITH_ANDROID_LITE_STATIC)
|
||||
add_definitions(-DWITH_LITE_STATIC)
|
||||
add_definitions(-DWITH_ANDROID_LITE_STATIC)
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
# Compile flags for FastDeploy Android lib.
|
||||
function(set_android_cxx_complie_flags)
|
||||
if(ANDROID)
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g0 -Os -Ofast -ffast-math -ffunction-sections -fdata-sections" PARENT_SCOPE)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g0 -Os -Ofast -ffast-math -ffunction-sections -fdata-sections" PARENT_SCOPE)
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
# Extra depend libs for FastDeploy Android lib (OMP&log lib).
|
||||
function(set_android_openmp_compile_policy)
|
||||
if(ANDROID)
|
||||
find_library(log-lib log)
|
||||
list(APPEND DEPEND_LIBS ${log-lib})
|
||||
set(DEPEND_LIBS ${DEPEND_LIBS} PARENT_SCOPE)
|
||||
if(WITH_ANDROID_LITE_STATIC)
|
||||
# Need omp for static Paddle Lite lib
|
||||
set(WITH_ANDROID_OPENMP ON CACHE BOOL "Force WITH_ANDROID_OPENMP=ON while WITH_ANDROID_LITE_STATIC=ON" FORCE)
|
||||
message(STATUS "Force WITH_ANDROID_OPENMP=${WITH_ANDROID_OPENMP} while WITH_ANDROID_LITE_STATIC=ON")
|
||||
endif()
|
||||
if(WITH_ANDROID_OPENMP)
|
||||
include(${PROJECT_SOURCE_DIR}/cmake/openmp.cmake)
|
||||
endif()
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
# Processing tensor function source for Android.
|
||||
function(set_android_tensor_funcs_compile_policy)
|
||||
if(ANDROID AND (NOT WITH_ANDROID_TENSOR_FUNCS))
|
||||
if(ENABLE_VISION OR ENABLE_TEXT OR ENABLE_TRT_BACKEND)
|
||||
message(FATAL_ERROR "WITH_ANDROID_TENSOR_FUNCS must be set as ON, while ENABLE_VISION/ENABLE_TEXT/ENABLE_TRT_BACKEND is ON.")
|
||||
endif()
|
||||
file(GLOB_RECURSE DEPLOY_FUNCS_SRCS ${PROJECT_SOURCE_DIR}/${CSRCS_DIR_NAME}/fastdeploy/function/*.cc)
|
||||
list(REMOVE_ITEM ALL_DEPLOY_SRCS ${DEPLOY_FUNCS_SRCS})
|
||||
set(ALL_DEPLOY_SRCS ${ALL_DEPLOY_SRCS} PARENT_SCOPE)
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
# Link flags for FastDeploy Android lib.
|
||||
function(set_android_library_cxx_link_flags)
|
||||
if(ANDROID)
|
||||
set_target_properties(${LIBRARY_NAME} PROPERTIES COMPILE_FLAGS "-fvisibility=hidden")
|
||||
# Strip debug C++ symbol table
|
||||
set(COMMON_LINK_FLAGS "-Wl,-exclude-libs,ALL")
|
||||
set(COMMON_LINK_FLAGS_REL "-Wl,-s,--gc-sections,-exclude-libs,ALL")
|
||||
if(WITH_ANDROID_OPENCV_STATIC OR WITH_ANDROID_LITE_STATIC)
|
||||
set(COMMON_LINK_FLAGS "${COMMON_LINK_FLAGS},--allow-multiple-definition" CACHE INTERNAL "" FORCE)
|
||||
set(COMMON_LINK_FLAGS_REL "${COMMON_LINK_FLAGS_REL},--allow-multiple-definition" CACHE INTERNAL "" FORCE)
|
||||
endif()
|
||||
set_target_properties(${LIBRARY_NAME} PROPERTIES LINK_FLAGS ${COMMON_LINK_FLAGS})
|
||||
set_target_properties(${LIBRARY_NAME} PROPERTIES LINK_FLAGS_RELEASE ${COMMON_LINK_FLAGS_REL})
|
||||
set_target_properties(${LIBRARY_NAME} PROPERTIES LINK_FLAGS_MINSIZEREL ${COMMON_LINK_FLAGS_REL})
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
# FastDeploy Android JNI lib & FastDeploy static lib.
|
||||
function(set_android_extra_libraries_target)
|
||||
if(ANDROID AND WITH_ANDROID_JAVA)
|
||||
include(${PROJECT_SOURCE_DIR}/cmake/fastdeploy_jni.cmake)
|
||||
endif()
|
||||
|
||||
if(ANDROID AND WITH_ANDROID_STATIC_LIB)
|
||||
# Here, we use a dummy target (fastdelpoy_dummy)
|
||||
# to form a build dependency tree for fastdeploy_static lib.
|
||||
add_library(fastdelpoy_dummy STATIC ${ALL_DEPLOY_SRCS})
|
||||
# Still add ${DEPEND_LIBS} for cmake to form link_libraries
|
||||
# property tree for a static library.
|
||||
target_link_libraries(fastdelpoy_dummy ${DEPEND_LIBS})
|
||||
# Build fastdelpoy_dummy when the third-party
|
||||
# libraries (opencv, paddle lite, flycv) are ready.
|
||||
add_dependencies(fastdelpoy_dummy ${LIBRARY_NAME})
|
||||
# Add WITH_STATIC_LIB/WITH_ANDROID_STATIC_LIB compile definitions, see lite_backend.cc.
|
||||
target_compile_definitions(fastdelpoy_dummy PRIVATE WITH_STATIC_LIB WITH_ANDROID_STATIC_LIB)
|
||||
target_compile_definitions(fastdelpoy_dummy PRIVATE WITH_STATIC_LIB_AT_COMPILING
|
||||
WITH_ANDROID_STATIC_LIB_AT_COMPILING)
|
||||
bundle_static_library(fastdelpoy_dummy fastdeploy_static bundle_fastdeploy)
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
# Install FastDepploy Android lib.
|
||||
function(set_android_libraries_installation)
|
||||
if(ANDROID)
|
||||
if(WITH_ANDROID_STATIC_LIB)
|
||||
install(
|
||||
FILES
|
||||
${CMAKE_CURRENT_BINARY_DIR}/libfastdeploy_static.a
|
||||
DESTINATION lib/${ANDROID_ABI}
|
||||
)
|
||||
else()
|
||||
install(
|
||||
TARGETS ${LIBRARY_NAME}
|
||||
LIBRARY DESTINATION lib/${ANDROID_ABI}
|
||||
)
|
||||
endif()
|
||||
# Install omp into fastdeploy lib dir if WITH_OPENMP=ON
|
||||
# and WITH_LITE_STATIC=OFF.
|
||||
if(WITH_ANDROID_OPENMP AND (NOT WITH_ANDROID_LITE_STATIC)
|
||||
AND OpenMP_CXX_FOUND AND ENABLE_OPENMP_SHARED)
|
||||
install(
|
||||
FILES
|
||||
${OpenMP_CXX_LIBRARIES}
|
||||
DESTINATION ${CMAKE_INSTALL_PREFIX}/lib/${ANDROID_ABI}
|
||||
)
|
||||
endif()
|
||||
# install Android JNI lib
|
||||
if(WITH_ANDROID_JAVA)
|
||||
install(
|
||||
TARGETS fastdeploy_jni
|
||||
LIBRARY DESTINATION jni/${ANDROID_ABI}
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
# Install third_libs
|
||||
function(set_android_third_libs_installation)
|
||||
if(ANDROID)
|
||||
# opencv/flycv always needs to be provided to users because our api
|
||||
# explicitly depends on opencv's and flycv's api in headers.
|
||||
# The headers and libs of opencv must be install.
|
||||
if(ENABLE_VISION)
|
||||
if(WITH_ANDROID_OPENCV_STATIC AND WITH_ANDROID_STATIC_LIB)
|
||||
# Only need to install headers while building
|
||||
# FastDeploy static lib. (TODO:qiuyanjun)
|
||||
install(
|
||||
DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/third_libs/install/opencv/sdk/native/jni/include
|
||||
DESTINATION ${CMAKE_INSTALL_PREFIX}/third_libs/install/opencv/sdk/native/jni
|
||||
)
|
||||
else()
|
||||
install(
|
||||
DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/third_libs/install/opencv
|
||||
DESTINATION ${CMAKE_INSTALL_PREFIX}/third_libs/install
|
||||
)
|
||||
endif()
|
||||
# Only need flycv's headers (may also install libs? TODO:qiuyanjun)
|
||||
if(ENABLE_FLYCV)
|
||||
if(WITH_ANDROID_FLYCV_STATIC)
|
||||
install(
|
||||
DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/third_libs/install/flycv/include
|
||||
DESTINATION ${CMAKE_INSTALL_PREFIX}/third_libs/install/flycv
|
||||
)
|
||||
else()
|
||||
install(
|
||||
DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/third_libs/install/flycv
|
||||
DESTINATION ${CMAKE_INSTALL_PREFIX}/third_libs/install
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
endif(ENABLE_VISION)
|
||||
# fast_tokenizer's static lib is not avaliable now!
|
||||
# may support some days later(TODO:qiuyanjun)
|
||||
if(ENABLE_TEXT)
|
||||
install(
|
||||
DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/third_libs/install/fast_tokenizer
|
||||
DESTINATION ${CMAKE_INSTALL_PREFIX}/third_libs/install
|
||||
)
|
||||
endif()
|
||||
# Some libs may not to install while in static mode
|
||||
if(ENABLE_LITE_BACKEND)
|
||||
if(WITH_ANDROID_LITE_STATIC)
|
||||
if(WITH_ANDROID_STATIC_LIB)
|
||||
install(
|
||||
DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/third_libs/install/paddlelite/include
|
||||
DESTINATION ${CMAKE_INSTALL_PREFIX}/third_libs/install/paddlelite
|
||||
)
|
||||
endif()
|
||||
else()
|
||||
install(
|
||||
DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/third_libs/install/paddlelite
|
||||
DESTINATION ${CMAKE_INSTALL_PREFIX}/third_libs/install
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
endfunction()
|
@@ -76,13 +76,6 @@ elseif(APPLE)
|
||||
set(FASTTOKENIZER_FILE "fast_tokenizer-osx-x86_64-${FASTTOKENIZER_VERSION}.tgz")
|
||||
endif()
|
||||
elseif(ANDROID)
|
||||
# check ABI, toolchain
|
||||
if((NOT ANDROID_ABI MATCHES "armeabi-v7a") AND (NOT ANDROID_ABI MATCHES "arm64-v8a"))
|
||||
message(FATAL_ERROR "FastDeploy with FastTokenizer on Android only support armeabi-v7a, arm64-v8a now.")
|
||||
endif()
|
||||
if(NOT ANDROID_TOOLCHAIN MATCHES "clang")
|
||||
message(FATAL_ERROR "Currently, only support clang toolchain while cross compiling FastDeploy for Android with FastTokenizer, but found ${ANDROID_TOOLCHAIN}.")
|
||||
endif()
|
||||
# set(FASTTOKENIZER_FILE "fast_tokenizer-android-${ANDROID_ABI}-${FASTTOKENIZER_VERSION}.tgz")
|
||||
set(FASTTOKENIZER_FILE "fast_tokenizer-lite-android-${ANDROID_ABI}-${FASTTOKENIZER_VERSION}.tgz")
|
||||
else()
|
||||
|
@@ -12,7 +12,7 @@
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
if(WITH_JAVA)
|
||||
if(WITH_ANDROID_JAVA)
|
||||
set(JNI_SRCS_FOUND OFF)
|
||||
if(NOT ANDROID)
|
||||
message(FATAL_ERROR "Only support jni lib for Android now!")
|
||||
@@ -33,7 +33,7 @@ if(WITH_JAVA)
|
||||
# Build fastdelpoy_jni_dummy when the third-party
|
||||
# libraries (opencv, paddle lite, flycv) are ready.
|
||||
add_dependencies(fastdelpoy_jni_dummy ${LIBRARY_NAME})
|
||||
target_compile_definitions(fastdelpoy_jni_dummy PRIVATE WITH_JAVA)
|
||||
target_compile_definitions(fastdelpoy_jni_dummy PRIVATE WITH_ANDROID_JAVA)
|
||||
if(TARGET fastdelpoy_jni_dummy)
|
||||
add_library(fastdeploy_jni SHARED ${JNI_SRCS})
|
||||
target_link_libraries(fastdeploy_jni fastdelpoy_jni_dummy ${DEPEND_LIBS}
|
||||
|
@@ -35,18 +35,6 @@ set(CMAKE_BUILD_RPATH "${CMAKE_BUILD_RPATH}"
|
||||
|
||||
include_directories(${FLYCV_INC_DIR})
|
||||
|
||||
option(WITH_FLYCV_STATIC "Whether to use FlyCV static lib for Android/Linux." OFF)
|
||||
|
||||
# ABI check
|
||||
if(ANDROID)
|
||||
if((NOT ANDROID_ABI MATCHES "armeabi-v7a") AND (NOT ANDROID_ABI MATCHES "arm64-v8a"))
|
||||
message(FATAL_ERROR "FastDeploy with FlyCV only support armeabi-v7a, arm64-v8a now.")
|
||||
endif()
|
||||
if(NOT ANDROID_TOOLCHAIN MATCHES "clang")
|
||||
message(FATAL_ERROR "Currently, only support clang toolchain while cross compiling FastDeploy for Android with FlyCV, but found ${ANDROID_TOOLCHAIN}.")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(WIN32)
|
||||
set(FLYCV_COMPILE_LIB
|
||||
"${FLYCV_INSTALL_DIR}/lib/flycv.lib"
|
||||
@@ -56,26 +44,20 @@ elseif(APPLE)
|
||||
"${FLYCV_INSTALL_DIR}/lib/libflycv.dylib"
|
||||
CACHE FILEPATH "flycv compile library." FORCE)
|
||||
elseif(ANDROID)
|
||||
if(WITH_FLYCV_STATIC)
|
||||
if(WITH_ANDROID_FLYCV_STATIC)
|
||||
set(FLYCV_COMPILE_LIB
|
||||
"${FLYCV_INSTALL_DIR}/lib/${ANDROID_ABI}/libflycv_static.a"
|
||||
CACHE FILEPATH "flycv compile library." FORCE)
|
||||
"${FLYCV_INSTALL_DIR}/lib/${ANDROID_ABI}/libflycv_static.a"
|
||||
CACHE FILEPATH "flycv compile library." FORCE)
|
||||
else()
|
||||
set(FLYCV_COMPILE_LIB
|
||||
"${FLYCV_INSTALL_DIR}/lib/${ANDROID_ABI}/libflycv_shared.so"
|
||||
CACHE FILEPATH "flycv compile library." FORCE)
|
||||
endif()
|
||||
else()
|
||||
if(WITH_FLYCV_STATIC)
|
||||
set(FLYCV_COMPILE_LIB
|
||||
"${FLYCV_INSTALL_DIR}/lib/libflycv_static.a"
|
||||
CACHE FILEPATH "flycv compile library." FORCE)
|
||||
else()
|
||||
set(FLYCV_COMPILE_LIB
|
||||
"${FLYCV_INSTALL_DIR}/lib/libflycv_shared.so"
|
||||
"${FLYCV_INSTALL_DIR}/lib/${ANDROID_ABI}/libflycv_shared.so"
|
||||
CACHE FILEPATH "flycv compile library." FORCE)
|
||||
endif()
|
||||
endif(WIN32)
|
||||
else()
|
||||
set(FLYCV_COMPILE_LIB
|
||||
"${FLYCV_INSTALL_DIR}/lib/libflycv_shared.so"
|
||||
CACHE FILEPATH "flycv compile library." FORCE)
|
||||
endif()
|
||||
|
||||
set(FLYCV_URL_BASE "https://bj.bcebos.com/fastdeploy/third_libs/")
|
||||
set(FLYCV_VERSION "1.0.0")
|
||||
@@ -151,7 +133,7 @@ set_property(TARGET external_flycv PROPERTY IMPORTED_LOCATION
|
||||
add_dependencies(external_flycv ${FLYCV_PROJECT})
|
||||
|
||||
set(FLYCV_LIBRARIES external_flycv)
|
||||
if(WITH_FLYCV_STATIC)
|
||||
if(WITH_ANDROID_FLYCV_STATIC)
|
||||
if (ANDROID)
|
||||
add_library(external_flycv_png16 STATIC IMPORTED GLOBAL)
|
||||
add_library(external_flycv_turbojpeg STATIC IMPORTED GLOBAL)
|
||||
@@ -168,27 +150,7 @@ if(WITH_FLYCV_STATIC)
|
||||
list(APPEND FLYCV_LIBRARIES external_flycv_png16)
|
||||
list(APPEND FLYCV_LIBRARIES external_flycv_turbojpeg)
|
||||
list(APPEND FLYCV_LIBRARIES external_flycv_z)
|
||||
elseif(APPLE OR WIN32)
|
||||
message(FATAL_ERROR "Not support FlyCV static lib for APPLE/WIN32 now!")
|
||||
else()
|
||||
if((CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64") OR (CMAKE_SYSTEM_PROCESSOR MATCHES "arm"))
|
||||
message(FATAL_ERROR "Not support FlyCV static lib for aarch64/arm linux now!")
|
||||
else()
|
||||
add_library(external_flycv_png16 STATIC IMPORTED GLOBAL)
|
||||
add_library(external_flycv_turbojpeg STATIC IMPORTED GLOBAL)
|
||||
add_library(external_flycv_z STATIC IMPORTED GLOBAL)
|
||||
set_property(TARGET external_flycv_png16 PROPERTY IMPORTED_LOCATION
|
||||
"${FLYCV_INSTALL_DIR}/lib/libpng16.a")
|
||||
set_property(TARGET external_flycv_turbojpeg PROPERTY IMPORTED_LOCATION
|
||||
"${FLYCV_INSTALL_DIR}/lib/libturbojpeg.a")
|
||||
set_property(TARGET external_flycv_z PROPERTY IMPORTED_LOCATION
|
||||
"${FLYCV_INSTALL_DIR}/lib/libz.a")
|
||||
add_dependencies(external_flycv_png16 ${FLYCV_PROJECT})
|
||||
add_dependencies(external_flycv_turbojpeg ${FLYCV_PROJECT})
|
||||
add_dependencies(external_flycv_z ${FLYCV_PROJECT})
|
||||
list(APPEND FLYCV_LIBRARIES external_flycv_png16)
|
||||
list(APPEND FLYCV_LIBRARIES external_flycv_turbojpeg)
|
||||
list(APPEND FLYCV_LIBRARIES external_flycv_z)
|
||||
endif()
|
||||
message(FATAL_ERROR "Not support FlyCV static lib for APPLE/WIN32/Linux now!")
|
||||
endif()
|
||||
endif()
|
@@ -87,7 +87,7 @@ function(remove_redundant_opencv_android_abi_libraries OPENCV_JNI_DIR)
|
||||
# remove redundant content
|
||||
file(REMOVE_RECURSE ${OPENCV_ANDROID_ETC_DIR})
|
||||
file(REMOVE_RECURSE ${OPENCV_ANDROID_JAVA_DIR})
|
||||
if(WITH_OPENCV_STATIC)
|
||||
if(WITH_ANDROID_OPENCV_STATIC)
|
||||
foreach(_ocv_android_abi ${ALL_OPENCV_ANDROID_ABI})
|
||||
if(NOT ${_ocv_android_abi} MATCHES ${ANDROID_ABI})
|
||||
set(_curr_abi_libs_dir ${OPENCV_ANDROID_LIBS_DIR}/${_ocv_android_abi})
|
||||
@@ -124,7 +124,7 @@ if(OPENCV_DIRECTORY)
|
||||
# For Android, the custom path to OpenCV with JNI should look like:
|
||||
# -DOPENCV_DIRECTORY=your-path-to/OpenCV-android-sdk/sdk/native/jni
|
||||
if(ANDROID)
|
||||
if(WITH_OPENCV_STATIC)
|
||||
if(WITH_ANDROID_OPENCV_STATIC)
|
||||
set(OpenCV_DIR ${OPENCV_DIRECTORY})
|
||||
find_package(OpenCV REQUIRED PATHS ${OpenCV_DIR})
|
||||
include_directories(${OpenCV_INCLUDE_DIRS})
|
||||
@@ -150,7 +150,7 @@ if(OPENCV_DIRECTORY)
|
||||
else()
|
||||
message(STATUS "Use the default OpenCV lib from: ${OPENCV_URL}")
|
||||
if(ANDROID)
|
||||
if(WITH_OPENCV_STATIC)
|
||||
if(WITH_ANDROID_OPENCV_STATIC)
|
||||
# When FastDeploy uses the OpenCV static library, there is no need to install OpenCV to FastDeploy thirds_libs
|
||||
download_and_decompress(${OPENCV_URL} ${CMAKE_CURRENT_BINARY_DIR}/${OPENCV_FILENAME}${COMPRESSED_SUFFIX} ${THIRD_PARTY_PATH}/install)
|
||||
if(EXISTS ${THIRD_PARTY_PATH}/install/opencv)
|
||||
|
@@ -12,22 +12,16 @@
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
if(NOT WITH_OPENMP)
|
||||
message(FATAL_ERROR "Please set WITH_OPENMP=ON before inclue openmp.cmake")
|
||||
endif()
|
||||
|
||||
if(ANDROID)
|
||||
|
||||
if(NOT ANDROID_TOOLCHAIN MATCHES "clang")
|
||||
message(FATAL_ERROR "Currently, only support clang toolchain while cross compiling FastDeploy for Android with OpenMP support, but found ${ANDROID_TOOLCHAIN}.")
|
||||
if(NOT WITH_ANDROID_OPENMP)
|
||||
message(FATAL_ERROR "Please set WITH_ANDROID_OPENMP=ON before inclue openmp.cmake")
|
||||
endif()
|
||||
|
||||
find_package(OpenMP REQUIRED)
|
||||
set(ENABLE_OPENMP_SHARED ON CACHE BOOL "" FORCE)
|
||||
if(WITH_LITE_STATIC)
|
||||
if(WITH_ANDROID_LITE_STATIC)
|
||||
# Can use static/shared omp lib if WITH_LITE_STATIC=ON
|
||||
if(OPENMP_FOUND OR OpenMP_CXX_FOUND)
|
||||
add_definitions(-DWITH_OPENMP)
|
||||
add_definitions(-DWITH_ANDROID_OPENMP)
|
||||
if(${ANDROID_NDK_MAJOR})
|
||||
if(${ANDROID_NDK_MAJOR} GREATER 20)
|
||||
set(ENABLE_OPENMP_SHARED OFF CACHE BOOL "" FORCE)
|
||||
@@ -42,17 +36,17 @@ if(ANDROID)
|
||||
endif()
|
||||
else()
|
||||
if(OPENMP_FOUND OR OpenMP_CXX_FOUND)
|
||||
add_definitions(-DWITH_OPENMP)
|
||||
# Can only use shared omp lib if WITH_LITE_STATIC=OFF
|
||||
add_definitions(-DWITH_ANDROID_OPENMP)
|
||||
# Can only use shared omp lib if WITH_ANDROID_LITE_STATIC=OFF
|
||||
set(OPENMP_LINK_FLAGS "-fopenmp")
|
||||
else()
|
||||
message(FATAL_ERROR "Could not found OpenMP!")
|
||||
endif()
|
||||
endif()
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
|
||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${OPENMP_LINK_FLAGS}")
|
||||
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${OPENMP_LINK_FLAGS}")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}" PARENT_SCOPE)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}" PARENT_SCOPE)
|
||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${OPENMP_LINK_FLAGS}" PARENT_SCOPE)
|
||||
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${OPENMP_LINK_FLAGS}" PARENT_SCOPE)
|
||||
message(STATUS "Found OpenMP ${OpenMP_VERSION} ${OpenMP_CXX_VERSION}")
|
||||
message(STATUS "OpenMP C flags: ${OpenMP_C_FLAGS}")
|
||||
message(STATUS "OpenMP CXX flags: ${OpenMP_CXX_FLAGS}")
|
||||
@@ -60,13 +54,6 @@ if(ANDROID)
|
||||
message(STATUS "OpenMP OpenMP_CXX_LIB_NAMES: ${OpenMP_CXX_LIB_NAMES}")
|
||||
message(STATUS "OpenMP OpenMP_CXX_LIBRARIES: ${OpenMP_CXX_LIBRARIES}")
|
||||
message(STATUS "ENABLE_OPENMP_SHARED: ${ENABLE_OPENMP_SHARED}")
|
||||
|
||||
elseif(WIN32)
|
||||
message(FATAL_ERROR "WITH_OPENMP=ON option is not support for WIN32 now!")
|
||||
elseif(APPLE)
|
||||
message(FATAL_ERROR "WITH_OPENMP=ON option is not support for APPLE now!")
|
||||
elseif(IOS)
|
||||
message(FATAL_ERROR "WITH_OPENMP=ON option is not support for IOS now!")
|
||||
else()
|
||||
message(FATAL_ERROR "WITH_OPENMP=ON option is not support for Linux now!")
|
||||
message(FATAL_ERROR "WITH_ANDOIRD_OPENMP=ON option is not support for WIN32/APPLE/IOS/Linux!")
|
||||
endif()
|
||||
|
@@ -36,16 +36,6 @@ set(CMAKE_BUILD_RPATH "${CMAKE_BUILD_RPATH}" "${PADDLELITE_LIB_DIR}")
|
||||
|
||||
set(PADDLELITE_URL_PREFIX "https://bj.bcebos.com/fastdeploy/third_libs")
|
||||
|
||||
if(ANDROID)
|
||||
# check ABI, toolchain
|
||||
if((NOT ANDROID_ABI MATCHES "armeabi-v7a") AND (NOT ANDROID_ABI MATCHES "arm64-v8a"))
|
||||
message(FATAL_ERROR "FastDeploy with Paddle Lite only support armeabi-v7a, arm64-v8a now.")
|
||||
endif()
|
||||
if(NOT ANDROID_TOOLCHAIN MATCHES "clang")
|
||||
message(FATAL_ERROR "Currently, only support clang toolchain while cross compiling FastDeploy for Android with Paddle Lite backend, but found ${ANDROID_TOOLCHAIN}.")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(NOT PADDLELITE_URL)
|
||||
if(WIN32 OR APPLE OR IOS)
|
||||
message(FATAL_ERROR "Doesn't support windows/mac/ios platform with backend Paddle Lite now.")
|
||||
@@ -65,7 +55,7 @@ endif()
|
||||
|
||||
if(WIN32 OR APPLE OR IOS)
|
||||
message(FATAL_ERROR "Doesn't support windows/mac/ios platform with backend Paddle Lite now.")
|
||||
elseif(ANDROID AND WITH_LITE_STATIC)
|
||||
elseif(ANDROID AND WITH_ANDROID_LITE_STATIC)
|
||||
set(PADDLELITE_LIB "${PADDLELITE_LIB_DIR}/libpaddle_api_full_bundled.a")
|
||||
set(PADDLELITE_REMOVE_LIB "${PADDLELITE_LIB_DIR}/libpaddle_full_api_shared.so")
|
||||
else()
|
||||
|
@@ -54,22 +54,6 @@ function(fastdeploy_summary)
|
||||
message(STATUS " WITH_KUNLUNXIN : ${WITH_KUNLUNXIN}")
|
||||
message(STATUS " WITH_CAPI : ${WITH_CAPI}")
|
||||
message(STATUS " WITH_CSHARPAPI : ${WITH_CSHARPAPI}")
|
||||
if(ENABLE_FLYCV)
|
||||
message(STATUS " WITH_FLYCV_STATIC: : ${WITH_FLYCV_STATIC}")
|
||||
endif()
|
||||
if(ANDROID)
|
||||
message(STATUS " WITH_STATIC_LIB: : ${WITH_STATIC_LIB}")
|
||||
message(STATUS " WITH_OPENCV_STATIC: : ${WITH_OPENCV_STATIC}")
|
||||
if(ENABLE_LITE_BACKEND)
|
||||
message(STATUS " WITH_LITE_STATIC : ${WITH_LITE_STATIC}")
|
||||
endif()
|
||||
message(STATUS " WITH_OPENMP: : ${WITH_OPENMP}")
|
||||
message(STATUS " WITH_JAVA: : ${WITH_JAVA}")
|
||||
message(STATUS " ANDROID_ABI : ${ANDROID_ABI}")
|
||||
message(STATUS " ANDROID_PLATFORM : ${ANDROID_PLATFORM}")
|
||||
message(STATUS " ANDROID_NDK : ${ANDROID_NDK}")
|
||||
message(STATUS " ANDROID_NDK_MAJOR : ${ANDROID_NDK_MAJOR}")
|
||||
endif()
|
||||
if(ENABLE_ORT_BACKEND)
|
||||
message(STATUS " ONNXRuntime version : ${ONNXRUNTIME_VERSION}")
|
||||
endif()
|
||||
@@ -90,4 +74,17 @@ function(fastdeploy_summary)
|
||||
message(STATUS " Python executable : ${PYTHON_EXECUTABLE}")
|
||||
message(STATUS " Python includes : ${PYTHON_INCLUDE_DIR}")
|
||||
endif()
|
||||
if(ANDROID)
|
||||
message(STATUS " ANDROID_STATIC_LIB: : ${WITH_ANDROID_STATIC_LIB}")
|
||||
message(STATUS " ANDROID_OPENCV_STATIC: : ${WITH_ANDROID_OPENCV_STATIC}")
|
||||
message(STATUS " ANDROID_FLYCV_STATIC: : ${WITH_ANDROID_FLYCV_STATIC}")
|
||||
message(STATUS " ANDROID_LITE_STATIC : ${WITH_ANDROID_LITE_STATIC}")
|
||||
message(STATUS " ANDROID_OPENMP: : ${WITH_ANDROID_OPENMP}")
|
||||
message(STATUS " ANDROID_JAVA: : ${WITH_ANDROID_JAVA}")
|
||||
message(STATUS " ANDROID_TENSOR_FUNCS: : ${WITH_ANDROID_TENSOR_FUNCS}")
|
||||
message(STATUS " ANDROID_ABI : ${ANDROID_ABI}")
|
||||
message(STATUS " ANDROID_PLATFORM : ${ANDROID_PLATFORM}")
|
||||
message(STATUS " ANDROID_NDK : ${ANDROID_NDK}")
|
||||
message(STATUS " ANDROID_NDK_MAJOR : ${ANDROID_NDK_MAJOR}")
|
||||
endif()
|
||||
endfunction()
|
||||
|
@@ -93,9 +93,9 @@ __build_fastdeploy_android_shared() {
|
||||
-DENABLE_TEXT=OFF \
|
||||
-DENABLE_VISION=ON \
|
||||
-DBUILD_EXAMPLES=ON \
|
||||
-DWITH_OPENCV_STATIC=OFF \
|
||||
-DWITH_LITE_STATIC=OFF \
|
||||
-DWITH_OPENMP=OFF \
|
||||
-DWITH_ANDROID_OPENCV_STATIC=OFF \
|
||||
-DWITH_ANDROID_LITE_STATIC=OFF \
|
||||
-DWITH_ANDROID_OPENMP=OFF \
|
||||
-DCMAKE_INSTALL_PREFIX=${FASDEPLOY_INSTALL_DIR} \
|
||||
-Wno-dev ../../.. && make -j8 && make install
|
||||
|
||||
|
@@ -94,9 +94,9 @@ __build_fastdeploy_android_shared() {
|
||||
-DENABLE_VISION=ON \
|
||||
-DBUILD_EXAMPLES=OFF \
|
||||
-DENABLE_BENCHMARK=ON \
|
||||
-DWITH_OPENCV_STATIC=OFF \
|
||||
-DWITH_LITE_STATIC=OFF \
|
||||
-DWITH_OPENMP=OFF \
|
||||
-DWITH_ANDROID_OPENCV_STATIC=OFF \
|
||||
-DWITH_ANDROID_LITE_STATIC=OFF \
|
||||
-DWITH_ANDROID_OPENMP=OFF \
|
||||
-DWITH_TESTING=OFF \
|
||||
-DCMAKE_INSTALL_PREFIX=${FASDEPLOY_INSTALL_DIR} \
|
||||
-Wno-dev ../../.. && make -j8 && make install
|
||||
|
114
scripts/android/build_android_cpp_with_runtime_only.sh
Executable file
114
scripts/android/build_android_cpp_with_runtime_only.sh
Executable file
@@ -0,0 +1,114 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
set +x
|
||||
|
||||
# -------------------------------------------------------------------------------
|
||||
# mutable global variables
|
||||
# -------------------------------------------------------------------------------
|
||||
TOOLCHAIN=clang # gcc/clang toolchain
|
||||
|
||||
# -------------------------------------------------------------------------------
|
||||
# readonly global variables
|
||||
# -------------------------------------------------------------------------------
|
||||
readonly ROOT_PATH=$(pwd)
|
||||
readonly ANDROID_ABI=$1
|
||||
readonly ANDROID_PLATFORM="android-$2"
|
||||
readonly BUILD_ROOT=build/Android
|
||||
readonly BUILD_DIR=${BUILD_ROOT}/${ANDROID_ABI}-api-$2
|
||||
|
||||
# -------------------------------------------------------------------------------
|
||||
# tasks
|
||||
# -------------------------------------------------------------------------------
|
||||
__make_build_dir() {
|
||||
if [ ! -d "${BUILD_DIR}" ]; then
|
||||
echo "-- [INFO] BUILD_DIR: ${BUILD_DIR} not exists, setup manually ..."
|
||||
if [ ! -d "${BUILD_ROOT}" ]; then
|
||||
mkdir -p "${BUILD_ROOT}" && echo "-- [INFO] Created ${BUILD_ROOT} !"
|
||||
fi
|
||||
mkdir -p "${BUILD_DIR}" && echo "-- [INFO] Created ${BUILD_DIR} !"
|
||||
else
|
||||
echo "-- [INFO] Found BUILD_DIR: ${BUILD_DIR}"
|
||||
fi
|
||||
}
|
||||
|
||||
__check_cxx_envs() {
|
||||
if [ $LDFLAGS ]; then
|
||||
echo "-- [INFO] Found LDFLAGS: ${LDFLAGS}, \c"
|
||||
echo "unset it before crossing compiling ${ANDROID_ABI}"
|
||||
unset LDFLAGS
|
||||
fi
|
||||
if [ $CPPFLAGS ]; then
|
||||
echo "-- [INFO] Found CPPFLAGS: ${CPPFLAGS}, \c"
|
||||
echo "unset it before crossing compiling ${ANDROID_ABI}"
|
||||
unset CPPFLAGS
|
||||
fi
|
||||
if [ $CPLUS_INCLUDE_PATH ]; then
|
||||
echo "-- [INFO] Found CPLUS_INCLUDE_PATH: ${CPLUS_INCLUDE_PATH}, \c"
|
||||
echo "unset it before crossing compiling ${ANDROID_ABI}"
|
||||
unset CPLUS_INCLUDE_PATH
|
||||
fi
|
||||
if [ $C_INCLUDE_PATH ]; then
|
||||
echo "-- [INFO] Found C_INCLUDE_PATH: ${C_INCLUDE_PATH}, \c"
|
||||
echo "unset it before crossing compiling ${ANDROID_ABI}"
|
||||
unset C_INCLUDE_PATH
|
||||
fi
|
||||
}
|
||||
|
||||
__set_android_ndk() {
|
||||
if [ -z $ANDROID_NDK ]; then
|
||||
echo "-- [INFO] ANDROID_NDK not exists, please setup manually ..."
|
||||
exit 0
|
||||
else
|
||||
echo "-- [INFO] Found ANDROID_NDK: ${ANDROID_NDK}"
|
||||
fi
|
||||
if [ "$ANDROID_NDK" ]; then
|
||||
NDK_VERSION=$(echo $ANDROID_NDK | egrep -o "[0-9]{2}" | head -n 1)
|
||||
if [ "$NDK_VERSION" -gt 17 ]; then
|
||||
TOOLCHAIN=clang
|
||||
fi
|
||||
echo "-- [INFO] Checked ndk version: ${NDK_VERSION}"
|
||||
echo "-- [INFO] Selected toolchain: ${TOOLCHAIN}"
|
||||
fi
|
||||
}
|
||||
|
||||
__build_fastdeploy_android_shared() {
|
||||
|
||||
local ANDROID_STL=c++_shared # c++_static
|
||||
local ANDROID_TOOLCHAIN=${TOOLCHAIN}
|
||||
local TOOLCHAIN_FILE=${ANDROID_NDK}/build/cmake/android.toolchain.cmake
|
||||
local FASDEPLOY_INSTALL_DIR="${ROOT_PATH}/${BUILD_DIR}/install"
|
||||
cd "${BUILD_DIR}" && echo "-- [INFO] Working Dir: ${PWD}"
|
||||
|
||||
cmake -DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN_FILE} \
|
||||
-DCMAKE_BUILD_TYPE=MinSizeRel \
|
||||
-DANDROID_ABI=${ANDROID_ABI} \
|
||||
-DANDROID_NDK=${ANDROID_NDK} \
|
||||
-DANDROID_PLATFORM=${ANDROID_PLATFORM} \
|
||||
-DANDROID_STL=${ANDROID_STL} \
|
||||
-DANDROID_TOOLCHAIN=${ANDROID_TOOLCHAIN} \
|
||||
-DENABLE_LITE_BACKEND=ON \
|
||||
-DENABLE_FLYCV=OFF \
|
||||
-DENABLE_TEXT=OFF \
|
||||
-DENABLE_VISION=OFF \
|
||||
-DWITH_ANDROID_LITE_STATIC=ON \
|
||||
-DWITH_ANDROID_TENSOR_FUNCS=OFF \
|
||||
-DBUILD_EXAMPLES=OFF \
|
||||
-DCMAKE_INSTALL_PREFIX=${FASDEPLOY_INSTALL_DIR} \
|
||||
-Wno-dev ../../.. && make -j8 && make install
|
||||
|
||||
echo "-- [INFO][built][${ANDROID_ABI}][${BUILD_DIR}/install]"
|
||||
}
|
||||
|
||||
main() {
|
||||
__make_build_dir
|
||||
__check_cxx_envs
|
||||
__set_android_ndk
|
||||
__build_fastdeploy_android_shared
|
||||
exit 0
|
||||
}
|
||||
|
||||
main
|
||||
|
||||
# Usage:
|
||||
# ./scripts/android/build_android_cpp_with_runtime_only.sh arm64-v8a 21
|
||||
# ./scripts/android/build_android_cpp_with_runtime_only.sh armeabi-v7a 21
|
@@ -93,12 +93,11 @@ __build_fastdeploy_android_shared() {
|
||||
-DENABLE_TEXT=OFF \
|
||||
-DENABLE_VISION=ON \
|
||||
-DBUILD_EXAMPLES=OFF \
|
||||
-DWITH_OPENCV_STATIC=ON \
|
||||
-DWITH_FLYCV_STATIC=ON \
|
||||
-DWITH_LITE_STATIC=ON \
|
||||
-DWITH_STATIC_LIB=ON \
|
||||
-DWITH_OPENMP=ON \
|
||||
-DWITH_JAVA=ON \
|
||||
-DWITH_ANDROID_OPENCV_STATIC=ON \
|
||||
-DWITH_ANDROID_FLYCV_STATIC=ON \
|
||||
-DWITH_ANDROID_LITE_STATIC=ON \
|
||||
-DWITH_ANDROID_OPENMP=ON \
|
||||
-DWITH_ANDROID_JAVA=OFF \
|
||||
-DCMAKE_INSTALL_PREFIX=${FASDEPLOY_INSTALL_DIR} \
|
||||
-Wno-dev ../../.. && make -j8 && make install
|
||||
|
||||
|
@@ -93,12 +93,12 @@ __build_fastdeploy_android_shared() {
|
||||
-DENABLE_TEXT=ON \
|
||||
-DENABLE_VISION=ON \
|
||||
-DBUILD_EXAMPLES=OFF \
|
||||
-DWITH_OPENCV_STATIC=ON \
|
||||
-DWITH_FLYCV_STATIC=ON \
|
||||
-DWITH_LITE_STATIC=ON \
|
||||
-DWITH_STATIC_LIB=OFF \
|
||||
-DWITH_OPENMP=ON \
|
||||
-DWITH_JAVA=ON \
|
||||
-DWITH_ANDROID_OPENCV_STATIC=ON \
|
||||
-DWITH_ANDROID_FLYCV_STATIC=ON \
|
||||
-DWITH_ANDROID_LITE_STATIC=ON \
|
||||
-DWITH_ANDROID_STATIC_LIB=OFF \
|
||||
-DWITH_ANDROID_OPENMP=ON \
|
||||
-DWITH_ANDROID_JAVA=OFF \
|
||||
-DCMAKE_INSTALL_PREFIX=${FASDEPLOY_INSTALL_DIR} \
|
||||
-Wno-dev ../../.. && make -j8 && make install
|
||||
|
||||
|
@@ -93,9 +93,10 @@ __build_fastdeploy_android_shared() {
|
||||
-DENABLE_TEXT=ON \
|
||||
-DENABLE_VISION=ON \
|
||||
-DBUILD_EXAMPLES=ON \
|
||||
-DWITH_OPENCV_STATIC=OFF \
|
||||
-DWITH_LITE_STATIC=OFF \
|
||||
-DWITH_OPENMP=OFF \
|
||||
-DWITH_ANDROID_OPENCV_STATIC=OFF \
|
||||
-DWITH_ANDROID_FLYCV_STATIC=OFF \
|
||||
-DWITH_ANDROID_LITE_STATIC=OFF \
|
||||
-DWITH_ANDROID_OPENMP=OFF \
|
||||
-DCMAKE_INSTALL_PREFIX=${FASDEPLOY_INSTALL_DIR} \
|
||||
-Wno-dev ../../.. && make -j8 && make install
|
||||
|
||||
|
@@ -93,8 +93,8 @@ __build_fastdeploy_android_shared() {
|
||||
-DENABLE_TEXT=ON \
|
||||
-DENABLE_VISION=OFF \
|
||||
-DBUILD_EXAMPLES=OFF \
|
||||
-DWITH_LITE_STATIC=ON \
|
||||
-DWITH_OPENMP=ON \
|
||||
-DWITH_ANDROID_LITE_STATIC=ON \
|
||||
-DWITH_ANDROID_OPENMP=ON \
|
||||
-DCMAKE_INSTALL_PREFIX=${FASDEPLOY_INSTALL_DIR} \
|
||||
-Wno-dev ../../.. && make -j8 && make install
|
||||
|
||||
|
Reference in New Issue
Block a user