-
Notifications
You must be signed in to change notification settings - Fork 23
/
CMakeLists.txt
96 lines (80 loc) · 3.57 KB
/
CMakeLists.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
# Copyright (c) 2021 Vivante Corporation
#
# Permission is hereby granted, free of charge, to any person obtaining a
# copy of this software and associated documentation files (the "Software"),
# to deal in the Software without restriction, including without limitation
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
# and/or sell copies of the Software, and to permit persons to whom the
# Software is furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
# DEALINGS IN THE SOFTWARE.
#
cmake_minimum_required(VERSION 3.16)
option(TFLITE_ENABLE_MULTI_DEVICE "Enable multi devices support" OFF)
option(TFLITE_ENABLE_OPTIMIZE "Enable optimize tiny yolov4" OFF)
option(TFLITE_ENABLE_NODE_TRACE "Enable node trace" OFF)
if(TFLITE_ENABLE_OPTIMIZE)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DVSI_FEAT_OP_CUSTOM_TINY_YOLOV4_POSTPROCESS -DENABLE_TENSOR_CACHE")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DVSI_FEAT_OP_CUSTOM_TINY_YOLOV4_POSTPROCESS -DENABLE_TENSOR_CACHE")
endif()
if(NOT CMAKE_BUILD_TYPE)
message(STATUS "Setting build type to Release, for debug builds use"
"'-DCMAKE_BUILD_TYPE=Debug'.")
set(CMAKE_BUILD_TYPE "Release")
endif()
project(tflite_vx_delegate)
OPTION(ENABLE_NBG_SUPPORT "enable customized nbg op in tflite" ON)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
if(ANDROID_TOOLCHAIN)
# bypass warning as error since tensorflow lite can not pass with android ndk r22b
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-error -Wno-c++11-narrowing")
endif()
set(CMAKE_MODULE_PATH
"${CMAKE_CURRENT_LIST_DIR}/cmake/modules"
${CMAKE_MODULE_PATH}
)
find_package(tensorflow REQUIRED)
find_package(tim-vx REQUIRED)
list(APPEND VX_DELEGATES_SRCS
${CMAKE_CURRENT_SOURCE_DIR}/delegate_main.cc
${CMAKE_CURRENT_SOURCE_DIR}/op_map.cc
${CMAKE_CURRENT_SOURCE_DIR}/utils.cc
${CMAKE_CURRENT_SOURCE_DIR}/vx_delegate_adaptor.cc
)
if(TFLITE_ENABLE_MULTI_DEVICE)
ADD_DEFINITIONS(-DMULTI_DEVICE_FEATURE_MODE)
endif()
if(TFLITE_ENABLE_NODE_TRACE)
ADD_DEFINITIONS(-DNODE_TRACE_DB_MODE)
endif()
add_library(vx_delegate SHARED ${VX_DELEGATES_SRCS})
list(APPEND VX_CUSTOM_OP_SRCS
${CMAKE_CURRENT_SOURCE_DIR}/vsi_npu_custom_op.cc
)
if(ANDROID_TOOLCHAIN)
list(APPEND VX_DELEGATE_DEPENDENCIES log)
endif()
target_link_libraries(vx_delegate ${VX_DELEGATE_DEPENDENCIES})
if((NOT DEFINED TIM_VX_INSTALL))
target_link_libraries(vx_delegate -Wl,--whole-archive tim-vx)
endif()
add_library(vx_custom_op STATIC ${VX_CUSTOM_OP_SRCS})
target_include_directories(vx_custom_op PUBLIC ${PROJECT_SOURCE_DIR})
target_link_libraries(vx_custom_op TensorFlow::tensorflow-lite)
add_dependencies(vx_custom_op vx_delegate)
set_target_properties(benchmark_model PROPERTIES INTERFACE_LINK_LIBRARIES vx_custom_op)
set_target_properties(label_image PROPERTIES INTERFACE_LINK_LIBRARIES vx_custom_op)
add_subdirectory(examples/minimal)
if(TFLITE_ENABLE_MULTI_DEVICE)
add_subdirectory(examples/multi_device)
endif()