/
CMakeLists.txt
260 lines (198 loc) · 6.42 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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
# Copyright (c) 2014-2017, David Hirvonen
# All rights reserved.
##########################################
### Initial 3RDPARTY SRC/PKG libraries ###
##########################################
# Initialize default lists and populate as we go
set(DRISHTI_SDK_3RDPARTY_PKG_LIBS)
set(DRISHTI_SDK_3RDPARTY_SRC_LIBS)
set(LIB_TYPE STATIC)
################
### 3rdparty ###
################
sugar_include(${DRISHTI_3RD_PARTY_DIR})
##############
### OpenCV ###
##############
hunter_add_package(OpenCV)
find_package(OpenCV REQUIRED)
list(APPEND DRISHTI_SDK_3RDPARTY_PKG_LIBS ${OpenCV_LIBS})
message("OpenCV_INCLUDE_DIRS = ${OpenCV_INCLUDE_DIRS}")
message("OpenCV_LIB_DIR = ${OpenCV_LIB_DIR}")
message("OpenCV_LIBRARIES = ${OpenCV_LIBRARIES}")
message("OpenCV_LIB_COMPONENTS = ${OpenCV_LIB_COMPONENTS}")
message("OpenCV_LIBS = ${OpenCV_LIBS}")
message("${CMAKE_MODULE_PATH}")
#############
### Beast ### :: optional :: (header only)
#############
option(DRISHTI_USE_BEAST "Use beast (boost) websocket lib" OFF)
if(DRISHTI_USE_BEAST)
hunter_add_package(Beast)
find_package(Beast CONFIG REQUIRED)
# !!! Limit use to applicaiton layer + callbacks, don't add to core libraries !!!!
endif()
###########
### acf ###
###########
if(DRISHTI_BUILD_ACF)
hunter_add_package(acf)
find_package(acf CONFIG REQUIRED)
list(APPEND DRISHTI_SDK_3RDPARTY_PKG_LIBS acf::acf)
endif()
##############
### spdlog ###
##############
hunter_add_package(spdlog)
find_package(spdlog CONFIG REQUIRED)
list(APPEND DRISHTI_SDK_3RDPARTY_PKG_LIBS spdlog::spdlog)
##############
### cereal ### (header only)
##############
hunter_add_package(cereal)
find_package(cereal CONFIG REQUIRED)
list(APPEND DRISHTI_SDK_3RDPARTY_PKG_LIBS cereal::cereal)
############
### dlib ### (header only)
############
hunter_add_package(dlib)
find_package(dlib CONFIG REQUIRED)
list(APPEND DRISHTI_SDK_3RDPARTY_PKG_LIBS dlib::dlib)
###########
### glm ### (header only)
###########
if(DRISHTI_BUILD_OGLES_GPGPU)
hunter_add_package(glm)
find_package(glm CONFIG REQUIRED)
list(APPEND DRISHTI_SDK_3RDPARTY_PKG_LIBS glm)
endif()
############
### half ### (header only)
############
hunter_add_package(half)
find_package(half CONFIG REQUIRED)
list(APPEND DRISHTI_SDK_3RDPARTY_PKG_LIBS half::half)
##############
### Eigen3 ### (header only)
##############
hunter_add_package(Eigen)
find_package(Eigen3 CONFIG REQUIRED)
list(APPEND DRISHTI_SDK_3RDPARTY_PKG_LIBS Eigen3::Eigen)
###############
### cvmatio ###
###############
if(DRISHTI_BUILD_ACF)
if(DRISHTI_SERIALIZE_WITH_CVMATIO)
hunter_add_package(cvmatio)
find_package(cvmatio REQUIRED CONFIG)
list(APPEND DRISHTI_SDK_3RDPARTY_PKG_LIBS cvmatio::cvmatio)
endif()
endif()
#######################
### thread-pool-cpp ### (header only)
#######################
drishti_option(DRISHTI_USE_THREAD_POOL_CPP "Use thread-pool-cpp submodule" ON IF(DRISHTI_HAVE_THREAD_LOCAL_STORAGE))
if(DRISHTI_USE_THREAD_POOL_CPP)
hunter_add_package(thread-pool-cpp)
find_package(thread-pool-cpp CONFIG REQUIRED)
list(APPEND DRISHTI_SDK_3RDPARTY_PKG_LIBS thread-pool-cpp::thread-pool-cpp) # Add library
endif()
###############
### xgboost ###
###############
hunter_add_package(xgboost)
find_package(xgboost CONFIG REQUIRED)
list(APPEND DRISHTI_SDK_3RDPARTY_PKG_LIBS xgboost::xgboost) # Add library
###################
### ogles_gpgpu ###
###################
if(DRISHTI_BUILD_OGLES_GPGPU)
hunter_add_package(ogles_gpgpu)
find_package(ogles_gpgpu CONFIG REQUIRED)
list(APPEND DRISHTI_SDK_3RDPARTY_PKG_LIBS ogles_gpgpu::ogles_gpgpu) # Add library
set(OGLES_GPGPU_LIB ogles_gpgpu::ogles_gpgpu)
endif()
##################
### NEON_2_SSE ### (header only)
##################
hunter_add_package(ARM_NEON_2_x86_SSE)
find_package(ARM_NEON_2_x86_SSE CONFIG REQUIRED)
list(APPEND DRISHTI_SDK_3RDPARTY_PKG_LIBS ARM_NEON_2_x86_SSE::ARM_NEON_2_x86_SSE)
################
### sse2neon ### (header only)
#################
hunter_add_package(sse2neon)
find_package(sse2neon CONFIG REQUIRED)
list(APPEND DRISHTI_SDK_3RDPARTY_PKG_LIBS sse2neon::sse2neon) # Add library
# We use aglet for an "off screen" OpenGL context.
# This currently provides 3 options:
# * GLFWContext for most desktop systems (can provide Window)
# * GLContextIOS
# * GLContextAndroid
# Note: Android emulator supports GPU use
if(DRISHTI_DO_GPU_TESTING OR (DRISHTI_HAS_GPU AND DRISHTI_BUILD_HCI))
hunter_add_package(aglet)
find_package(aglet CONFIG REQUIRED)
endif()
#############
### boost ###
#############
# Note: Used for boost::fileystem::path() (de)construction
# TODO: Find a lighterweight alternative for portble path manipulation
hunter_add_package(Boost COMPONENTS filesystem system)
find_package(Boost CONFIG REQUIRED system filesystem)
list(APPEND DRISHTI_SDK_3RDPARTY_PKG_LIBS Boost::filesystem Boost::system)
###########
### eos ### :: experimental :: (header only)
###########
set(EOS_LIB "") # Make EOS_LIB optional
if(DRISHTI_BUILD_EOS)
hunter_add_package(eos)
find_package(eos CONFIG REQUIRED)
set(EOS_LIB eos::eos Boost::filesystem)
list(APPEND DRISHTI_SDK_3RDPARTY_PKG_LIBS ${EOS_LIB}) # Add library
endif()
############
### dest ### :: experimental ::
############
if(DRISHTI_BUILD_DEST)
hunter_add_package(dest)
find_package(dest CONFIG REQUIRED)
list(APPEND DRISHTI_SDK_3RDPARTY_PKG_LIBS dest::dest) # Add library
endif()
############
## imshow ## :: experimental ::
############
drishti_option(DRISHTI_USE_IMSHOW "Use imshow library for local packages" ON IF NOT(ANDROID OR IOS OR MSVC))
if(DRISHTI_USE_IMSHOW)
hunter_add_package(imshow)
find_package(imshow CONFIG REQUIRED)
list(APPEND DRISHTI_SDK_3RDPARTY_PKG_LIBS imshow::imshow) # Add library
endif()
set(DRISHTI_SDK_3RDPARTY_LIBS
${DRISHTI_SDK_3RDPARTY_SRC_LIBS}
${DRISHTI_SDK_3RDPARTY_PKG_LIBS}
)
include(sugar_include)
sugar_include(.)
# Add the sub-libraries
add_subdirectory(lib)
###############
### cxxopts ### :: std::regex >= gcc 4.8
###############
hunter_add_package(cxxopts)
find_package(cxxopts CONFIG REQUIRED)
# Build standalone examples using the public API
if(DRISHTI_BUILD_EXAMPLES)
# Simulate naming from find_package(drishti CONFIG REQUIRED) use case
target_include_directories(drishti PUBLIC $<BUILD_INTERFACE:${DRISHTI_INCLUDE_DIRECTORIES}/drishti>)
add_subdirectory(examples)
endif()
# Include *nix style console apps (some will run on iOS and Android)
if(DRISHTI_BUILD_UTILITIES)
add_subdirectory(app)
endif()
# (Optional) build unit tests
if(DRISHTI_BUILD_TESTS)
add_subdirectory(tests)
endif()