|
|
|
@@ -19,9 +19,12 @@ if(ENABLE_ASAN) |
|
|
|
set(CMAKE_C_FLAGS "${CMAKE_CXX_FLAGS} ${OPTION_CXX_FLAGS} -lasan") |
|
|
|
endif() |
|
|
|
|
|
|
|
include_directories(${LITE_DIR}) |
|
|
|
set(MICRO_CMAKE_PATH ${MICRO_DIR}/cmake) |
|
|
|
set(OPERATOR_LIBRARY_PATH ${CMAKE_BINARY_DIR}/operator_library) |
|
|
|
set(HEADER_PATH "${OPERATOR_LIBRARY_PATH}/include") |
|
|
|
set(LIB_PATH "${OPERATOR_LIBRARY_PATH}/lib") |
|
|
|
set(NNACL_DIR ${LITE_DIR}/nnacl) |
|
|
|
|
|
|
|
message("===========>start to pack operators' head file") |
|
|
|
file(REMOVE_RECURSE ${OPERATOR_LIBRARY_PATH}) |
|
|
|
@@ -40,24 +43,78 @@ file(COPY ${CMAKE_BINARY_DIR}/cmsis/CMSIS/Core/Include |
|
|
|
DESTINATION ${HEADER_PATH}/CMSIS/Core) |
|
|
|
|
|
|
|
if(PLATFORM_ARM64) |
|
|
|
set(MICRO_BUILD_ARM64 ON) |
|
|
|
add_compile_definitions(ENABLE_ARM64) |
|
|
|
endif() |
|
|
|
|
|
|
|
if(PLATFORM_ARM32) |
|
|
|
add_compile_definitions(ENABLE_ARM32) |
|
|
|
add_definitions(-mfloat-abi=softfp -mfpu=neon) |
|
|
|
endif() |
|
|
|
|
|
|
|
if(PLATFORM_ARM64 OR PLATFORM_ARM32) |
|
|
|
add_compile_definitions(ENABLE_NEON) |
|
|
|
add_compile_definitions(ENABLE_ARM) |
|
|
|
endif() |
|
|
|
|
|
|
|
file(GLOB KERNEL_SRC |
|
|
|
${NNACL_DIR}/*.c |
|
|
|
${NNACL_DIR}/base/*.c |
|
|
|
${NNACL_DIR}/fp32/*.c |
|
|
|
${NNACL_DIR}/int8/*.c |
|
|
|
) |
|
|
|
|
|
|
|
if(PLATFORM_ARM64) |
|
|
|
file(GLOB ASSEMBLY_SRC ${NNACL_DIR}/assembly/arm64/*.S) |
|
|
|
set_property(SOURCE ${ASSEMBLY_SRC} PROPERTY LANGUAGE C) |
|
|
|
endif() |
|
|
|
|
|
|
|
if(PLATFORM_ARM32) |
|
|
|
set(MICRO_BUILD_ARM32A ON) |
|
|
|
file(GLOB ASSEMBLY_SRC ${NNACL_DIR}/assembly/arm32/*.S) |
|
|
|
set_property(SOURCE ${ASSEMBLY_SRC} PROPERTY LANGUAGE C) |
|
|
|
endif() |
|
|
|
|
|
|
|
include(${MICRO_CMAKE_PATH}/package_android.cmake) |
|
|
|
include(${MICRO_CMAKE_PATH}/package_nnacl.cmake) |
|
|
|
set(NNACL_OPS ${KERNEL_SRC} ${ASSEMBLY_SRC}) |
|
|
|
set(RUNTIME_SRC ${LITE_DIR}/src/runtime/thread_pool.c) |
|
|
|
|
|
|
|
include(${MICRO_CMAKE_PATH}/package_cmsis.cmake) |
|
|
|
include(${MICRO_CMAKE_PATH}/package_wrapper.cmake) |
|
|
|
|
|
|
|
list(APPEND OP_FILES ${NNACL_OPS} ${WRAPPER_SRC} ${RUNTIME_SRC}) |
|
|
|
|
|
|
|
set(LIB_PATH "${OPERATOR_LIBRARY_PATH}/lib") |
|
|
|
if(NOT PLATFORM_ARM64 AND NOT PLATFORM_ARM32) |
|
|
|
list(APPEND OP_FILES ${CMSIS_OPS}) |
|
|
|
endif() |
|
|
|
|
|
|
|
|
|
|
|
# generate static library |
|
|
|
add_library(ops STATIC ${OP_FILES}) |
|
|
|
|
|
|
|
function(create_library) |
|
|
|
string(CONCAT library_name "lib" ops ".a") |
|
|
|
string(CONCAT opt_name "lib" opt_ops ".a") |
|
|
|
set(ANDROID_AR |
|
|
|
${ANDROID_NDK}/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-ar) |
|
|
|
add_custom_command(TARGET ops |
|
|
|
POST_BUILD |
|
|
|
COMMAND rm -rf tmp |
|
|
|
COMMAND mkdir tmp |
|
|
|
COMMAND mv ${opt_name} ./tmp && cd ./tmp && ${ANDROID_AR} -x ${opt_name} |
|
|
|
COMMAND mv ${library_name} ./tmp && cd ./tmp && ${ANDROID_AR} -x ${library_name} |
|
|
|
COMMENT "unzip raw static library ${library_name}" |
|
|
|
COMMAND ${ANDROID_AR} cr ${library_name} ./tmp/*.o |
|
|
|
COMMAND rm -rf tmp |
|
|
|
COMMENT "generate specified static library ${library_name}" |
|
|
|
) |
|
|
|
endfunction() |
|
|
|
|
|
|
|
if(PLATFORM_ARM64) |
|
|
|
file(GLOB OPT_SRC ${NNACL_DIR}/assembly/opt/*.S) |
|
|
|
set_property(SOURCE ${OPT_SRC} PROPERTY LANGUAGE C) |
|
|
|
add_library(opt_ops STATIC ${OPT_SRC}) |
|
|
|
|
|
|
|
add_dependencies(ops opt_ops) |
|
|
|
set_target_properties(opt_ops PROPERTIES COMPILE_FLAGS -march=armv8.2-a+dotprod) |
|
|
|
create_library() |
|
|
|
endif() |
|
|
|
|
|
|
|
install(TARGETS ops ARCHIVE DESTINATION ${LIB_PATH}) |