You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
141 lines
5.1 KiB
141 lines
5.1 KiB
cmake_minimum_required(VERSION 3.12)
|
|
set(CMAKE_CXX_STANDARD 14)
|
|
|
|
if(ENABLE_PREDICT_ARM64)
|
|
set(TARGS "arm64")
|
|
elseif(ENABLE_PREDICT_ARM32)
|
|
set(TARGS "arm32")
|
|
else()
|
|
set(TARGS "x86")
|
|
endif()
|
|
message("TARGET is set to ${TARGS}")
|
|
|
|
set(CMAKE_VERBOSE_MAKEFILE ON)
|
|
set(CMAKE_SKIP_RPATH TRUE)
|
|
|
|
if(MSVC)
|
|
message("not support MSVC")
|
|
else(MSVC)
|
|
include(CheckCXXCompilerFlag)
|
|
check_cxx_compiler_flag("-std=c++11" SUPPORT_CXX11)
|
|
if ("${CMAKE_BUILD_TYPE}" STREQUAL "Debug")
|
|
message("Build in Debug mode")
|
|
set(CMAKE_C_FLAGS "-O0 -g -Wall -Werror -fPIC [${CMAKE_C_FLAGS} -rdynamic")
|
|
set(CMAKE_CXX_FLAGS "-O0 -g -Wall -Werror -fPIC -std=c++11 ${CMAKE_CXX_FLAGS} -rdynamic")
|
|
else()
|
|
set(CMAKE_C_FLAGS "-D_FORTIFY_SOURCE=2 -O2 -fno-rtti -fvisibility=hidden -Wall -Werror -fPIC -fstack-protector-strong ${CMAKE_C_FLAGS}")
|
|
set(CMAKE_CXX_FLAGS "-D_FORTIFY_SOURCE=2 -O2 -fno-rtti -fvisibility=hidden -Wall -Werror -fPIC -fstack-protector-strong -std=c++11 ${CMAKE_CXX_FLAGS}")
|
|
set(CMAKE_EXE_LINKER_FLAGS "-Wl,-z,relro,-z,now -Wl,-z,noexecstack")
|
|
endif ()
|
|
if (CMAKE_CXX_COMPILER_ID MATCHES "GNU" AND
|
|
CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 7.0)
|
|
set(CMAKE_CXX_FLAGS "-Wall -Werror -faligned-new ${CMAKE_CXX_FLAGS}")
|
|
endif()
|
|
if (CODE_COVERAGE)
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Werror -fprofile-arcs -ftest-coverage -O0")
|
|
endif()
|
|
endif(MSVC)
|
|
|
|
|
|
if("${TARGS}" STREQUAL "x86")
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D__x86_64__ -fno-strict-aliasing")
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D__x86_64__ -fno-strict-aliasing")
|
|
endif()
|
|
|
|
|
|
set(PRJ_SRC_DIR "${PROJECT_SOURCE_DIR}")
|
|
set(PRJ_KLIB_DIR "${PROJECT_SOURCE_DIR}")
|
|
set(PRJ_LITE_DIR "${PROJECT_SOURCE_DIR}/lite")
|
|
|
|
# include directories
|
|
message("current PRJ DIR: ${PROJECT_SOURCE_DIR}")
|
|
message("current SUB_PRJ DIR: ${PRJ_SRC_DIR}")
|
|
message("current KLIB DIR: ${PRJ_KLIB_DIR}")
|
|
message("current PRJ_LITE_DIR: ${PRJ_LITE_DIR}")
|
|
message("CMAKE_CURRENT_BINARY_DIR: ${CMAKE_CURRENT_BINARY_DIR}")
|
|
set(DMLC_CORE "${TVM_BUILD_SOURCE}/3rdparty/dmlc-core")
|
|
set(DLPACK "${TVM_BUILD_SOURCE}/3rdparty/dlpack")
|
|
set(PREDICT "${PRJ_SRC_DIR}/../../")
|
|
set(SECUREC "${PRJ_SRC_DIR}/../../../third_party/securec")
|
|
message("include dir: ${DLPACK}/include")
|
|
include_directories(${DLPACK}/include)
|
|
include_directories(${DMLC_CORE}/include)
|
|
include_directories(${TVM_BUILD_SOURCE}/include)
|
|
include_directories(${TVM_BUILD_SOURCE}/src/pass)
|
|
include_directories(${PRJ_LITE_DIR})
|
|
include_directories(${PRJ_LITE_DIR}/include)
|
|
include_directories(${PRJ_LITE_DIR}/../../..)
|
|
include_directories(${PRJ_LITE_DIR}/../../../include)
|
|
include_directories(${PRJ_LITE_DIR}/../../../src/runtime)
|
|
include_directories(${PRJ_LITE_DIR}/../../../common)
|
|
include_directories(${SECUREC})
|
|
message("SECUREC: " "${SECUREC}/build/src")
|
|
include_directories(${PREDICT})
|
|
include_directories(${PREDICT}/src)
|
|
include_directories(${PRJ_SRC_DIR}/../../../third_party/flatbuffers/include)
|
|
include_directories(${PRJ_SRC_DIR}/../../../third_party)
|
|
# Source file lists
|
|
file(GLOB_RECURSE TVM_KERNEL_SRC
|
|
src/api/*.cc
|
|
src/tflite/TFLite_Detection_PostProcess.cc)
|
|
|
|
set (TVM_RUNTIME_FLG $ENV{TVM_RUNTIME_ON})
|
|
if ("${TVM_RUNTIME_FLG}" STREQUAL "true")
|
|
message("Using TVM runtime function")
|
|
file(GLOB TVM_RUNTIME_SRCS
|
|
${TVM_ROOT}/apps/howto_deploy/tvm_runtime_pack.cc)
|
|
else()
|
|
message("Using LITE runtime function")
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DLITE_RUNTIME_ON -DTVM_RUNTIME_HEADER_ONLY -DLITE_THREAD_POOL_SHARED")
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DLITE_RUNTIME_ON -DTVM_RUNTIME_HEADER_ONLY -DLITE_THREAD_POOL_SHARED")
|
|
file(GLOB_RECURSE TVM_RUNTIME_SRCS
|
|
${PREDICT}/src/runtime/*.cc)
|
|
endif()
|
|
|
|
if("${TARGS}" STREQUAL "arm32" OR "${TARGS}" STREQUAL "arm64")
|
|
set(CMAKE_SKIP_BUILD_RPATH TRUE)
|
|
set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
|
|
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
|
|
endif()
|
|
|
|
set(LIB_X86_PATH "${PRJ_KLIB_DIR}/build/lib_x86")
|
|
set(LIB_ARM64_PATH "${PRJ_KLIB_DIR}/build/lib_arm64")
|
|
set(LIB_ARM32_PATH "${PRJ_KLIB_DIR}/build/lib_arm32")
|
|
if("${TARGS}" STREQUAL "x86")
|
|
set(KLIBS_PATH "${LIB_X86_PATH}")
|
|
elseif("${TARGS}" STREQUAL "arm64")
|
|
set(KLIBS_PATH "${LIB_ARM64_PATH}")
|
|
elseif("${TARGS}" STREQUAL "arm32")
|
|
set(KLIBS_PATH "${LIB_ARM32_PATH}")
|
|
else()
|
|
message(ERROR " not suport ${TARGS}")
|
|
endif()
|
|
|
|
file(GLOB_RECURSE KERNEL_LIBS "${KLIBS_PATH}/*.o")
|
|
message("KERNEL_PATH= ${KLIBS_PATH}")
|
|
|
|
add_compile_options(-DTVM_CUDA_RUNTIM=0)
|
|
add_compile_options(-DTVM_METAL_RUNTIM=0)
|
|
add_compile_options(-DTVM_OPENCL_RUNTIM=0)
|
|
|
|
link_directories(${KLIBS_PATH})
|
|
|
|
add_library(tvm_runtime_pack STATIC ${TVM_RUNTIME_SRCS})
|
|
add_library(kernel_manager STATIC ${TVM_KERNEL_SRC})
|
|
add_library(tvm_kernel_static STATIC ${TVM_KERNEL_SRC} ${KERNEL_LIBS})
|
|
add_library(tvm_kernel SHARED ${TVM_KERNEL_SRC} ${KERNEL_LIBS})
|
|
set_target_properties(tvm_kernel PROPERTIES LINK_FLAGS "-Wl,-z,relro,-z,now -Wl,-z,noexecstack")
|
|
|
|
set(KERNEL_LD_LIB tvm_runtime_pack dl)
|
|
|
|
if("${TARGS}" STREQUAL "x86")
|
|
set(KERNEL_LD_LIB ${KERNEL_LD_LIB} pthread)
|
|
else()
|
|
set(ANDROID_ALLOW_UNDEFINED_SYMBOLS TRUE)
|
|
endif()
|
|
|
|
target_link_libraries(tvm_kernel ${KERNEL_LD_LIB} libsecurec.a)
|
|
target_link_libraries(tvm_kernel_static OBJECT tvm_runtime_pack libsecurec.a)
|
|
|
|
add_dependencies(tvm_kernel securec)
|