|
- 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)
|