118 lines
3.7 KiB
CMake
118 lines
3.7 KiB
CMake
# For more information about using CMake with Android Studio, read the
|
|
# documentation: https://d.android.com/studio/projects/add-native-code.html
|
|
|
|
# Sets the minimum version of CMake required to build the native library.
|
|
|
|
cmake_minimum_required(VERSION 3.4.1)
|
|
|
|
# Creates and names a library, sets it as either STATIC or SHARED, and provides
|
|
# the relative paths to its source code. You can define multiple libraries, and
|
|
# CMake builds them for you. Gradle automatically packages shared libraries with
|
|
# your APK.
|
|
|
|
set(PaddleLite_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../../../PaddleLite")
|
|
include_directories(${PaddleLite_DIR}/cxx/include)
|
|
|
|
set(OpenCV_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../../../OpenCV/sdk/native/jni")
|
|
message(STATUS "opencv dir: ${OpenCV_DIR}")
|
|
find_package(OpenCV REQUIRED)
|
|
message(STATUS "OpenCV libraries: ${OpenCV_LIBS}")
|
|
include_directories(${OpenCV_INCLUDE_DIRS})
|
|
aux_source_directory(. SOURCES)
|
|
set(CMAKE_CXX_FLAGS
|
|
"${CMAKE_CXX_FLAGS} -ffast-math -Ofast -Os"
|
|
)
|
|
set(CMAKE_CXX_FLAGS
|
|
"${CMAKE_CXX_FLAGS} -fvisibility=hidden -fvisibility-inlines-hidden -fdata-sections -ffunction-sections"
|
|
)
|
|
set(CMAKE_SHARED_LINKER_FLAGS
|
|
"${CMAKE_SHARED_LINKER_FLAGS} -Wl,--gc-sections -Wl,-z,nocopyreloc")
|
|
|
|
add_library(
|
|
# Sets the name of the library.
|
|
Native
|
|
# Sets the library as a shared library.
|
|
SHARED
|
|
# Provides a relative path to your source file(s).
|
|
${SOURCES})
|
|
|
|
find_library(
|
|
# Sets the name of the path variable.
|
|
log-lib
|
|
# Specifies the name of the NDK library that you want CMake to locate.
|
|
log)
|
|
|
|
add_library(
|
|
# Sets the name of the library.
|
|
paddle_light_api_shared
|
|
# Sets the library as a shared library.
|
|
SHARED
|
|
# Provides a relative path to your source file(s).
|
|
IMPORTED)
|
|
|
|
set_target_properties(
|
|
# Specifies the target library.
|
|
paddle_light_api_shared
|
|
# Specifies the parameter you want to define.
|
|
PROPERTIES
|
|
IMPORTED_LOCATION
|
|
${PaddleLite_DIR}/cxx/libs/${ANDROID_ABI}/libpaddle_light_api_shared.so
|
|
# Provides the path to the library you want to import.
|
|
)
|
|
|
|
|
|
# Specifies libraries CMake should link to your target library. You can link
|
|
# multiple libraries, such as libraries you define in this build script,
|
|
# prebuilt third-party libraries, or system libraries.
|
|
|
|
target_link_libraries(
|
|
# Specifies the target library.
|
|
Native
|
|
paddle_light_api_shared
|
|
${OpenCV_LIBS}
|
|
GLESv2
|
|
EGL
|
|
jnigraphics
|
|
${log-lib}
|
|
)
|
|
|
|
add_custom_command(
|
|
TARGET Native
|
|
POST_BUILD
|
|
COMMAND
|
|
${CMAKE_COMMAND} -E copy
|
|
${PaddleLite_DIR}/cxx/libs/${ANDROID_ABI}/libc++_shared.so
|
|
${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/libc++_shared.so)
|
|
|
|
add_custom_command(
|
|
TARGET Native
|
|
POST_BUILD
|
|
COMMAND
|
|
${CMAKE_COMMAND} -E copy
|
|
${PaddleLite_DIR}/cxx/libs/${ANDROID_ABI}/libpaddle_light_api_shared.so
|
|
${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/libpaddle_light_api_shared.so)
|
|
|
|
add_custom_command(
|
|
TARGET Native
|
|
POST_BUILD
|
|
COMMAND
|
|
${CMAKE_COMMAND} -E copy
|
|
${PaddleLite_DIR}/cxx/libs/${ANDROID_ABI}/libhiai.so
|
|
${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/libhiai.so)
|
|
|
|
add_custom_command(
|
|
TARGET Native
|
|
POST_BUILD
|
|
COMMAND
|
|
${CMAKE_COMMAND} -E copy
|
|
${PaddleLite_DIR}/cxx/libs/${ANDROID_ABI}/libhiai_ir.so
|
|
${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/libhiai_ir.so)
|
|
|
|
add_custom_command(
|
|
TARGET Native
|
|
POST_BUILD
|
|
COMMAND
|
|
${CMAKE_COMMAND} -E copy
|
|
${PaddleLite_DIR}/cxx/libs/${ANDROID_ABI}/libhiai_ir_build.so
|
|
${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/libhiai_ir_build.so)
|