blob: d09e54910611422db73909f8cbb1aef7a9bfe72f [file] [log] [blame]
telsoa014fcda012018-03-09 14:13:49 +00001cmake_minimum_required (VERSION 3.0.2) # 3.0.2 required for return() statement used in AddDllCopyCommands.cmake.
2project(armnn)
3
4set(additional_cmake_files)
5list(APPEND additional_cmake_files
6 cmake/Utils.cmake
7 cmake/GlobalConfig.cmake
8 cmake/AddDllCopyCommands.cmake)
9
10foreach(cmake_file ${additional_cmake_files})
11 include(${cmake_file})
12endforeach()
13
14if (BUILD_TESTS)
15 add_subdirectory(tests)
16endif()
17
18# Include the additional cmake files in their own target so that they will appear nicely in IDEs
19add_custom_target(AdditionalCMakeFiles SOURCES ${additional_cmake_files})
20
21set(armnnUtils_sources)
22list(APPEND armnnUtils_sources
23 src/armnnUtils/GraphTopologicalSort.hpp
24 src/armnnUtils/Logging.hpp
25 src/armnnUtils/Permute.hpp
26 src/armnnUtils/Logging.cpp
27 src/armnnUtils/Permute.cpp
28 )
29if(BUILD_CAFFE_PARSER)
30 list(APPEND armnnUtils_sources
31 src/armnnUtils/ParserPrototxtFixture.hpp
32 )
33endif()
34
35add_library_ex(armnnUtils STATIC ${armnnUtils_sources})
36
37if(BUILD_CAFFE_PARSER)
38 # ArmNN Parser source files required for all build options
39 set(armnn_caffe_parser_sources)
40 list(APPEND armnn_caffe_parser_sources
41 include/armnnCaffeParser/ICaffeParser.hpp
42 src/armnnCaffeParser/CaffeParser.hpp
43 src/armnnCaffeParser/CaffeParser.cpp
44 ${CAFFE_GENERATED_SOURCES}/caffe/proto/caffe.pb.cc
45 )
46 # The generated Caffe protobuf .cc file is not warning clean and we can't fix them.
47 if(COMPILER_IS_GNU_LIKE)
48 set_source_files_properties(${CAFFE_GENERATED_SOURCES}/caffe/proto/caffe.pb.cc PROPERTIES COMPILE_FLAGS "-Wno-conversion -Wno-sign-conversion")
49 endif()
50
51 add_library_ex(armnnCaffeParser SHARED ${armnn_caffe_parser_sources})
52 set_target_properties(armnnCaffeParser PROPERTIES COMPILE_FLAGS "${CAFFE_PARSER_ADDITIONAL_COMPILE_FLAGS}")
53
54 target_include_directories(armnnCaffeParser PRIVATE src/armnnUtils)
55
56 target_link_libraries(armnnCaffeParser ${Boost_LOG_LIBRARY} ${Boost_THREAD_LIBRARY} ${Boost_SYSTEM_LIBRARY})
57
58 target_link_libraries(armnnCaffeParser armnn)
59 target_link_libraries(armnnCaffeParser ${PROTOBUF_LIBRARIES})
60endif()
61
62# ArmNN source files required for all build options
63list(APPEND armnn_sources
64 include/armnn/ArmNN.hpp
65 include/armnn/Descriptors.hpp
66 include/armnn/DescriptorsFwd.hpp
67 include/armnn/IRuntime.hpp
68 include/armnn/INetwork.hpp
69 include/armnn/Tensor.hpp
70 include/armnn/TensorFwd.hpp
71 include/armnn/Types.hpp
72 include/armnn/TypesUtils.hpp
73 include/armnn/Utils.hpp
74 include/armnn/LayerSupport.hpp
75 include/armnn/Version.hpp
76 src/armnn/backends/ClWorkloadFactory.hpp
77 src/armnn/backends/ClWorkloadFactory.cpp
78 src/armnn/backends/ClLayerSupport.cpp
79 src/armnn/backends/ClLayerSupport.hpp
80 src/armnn/backends/CpuTensorHandleFwd.hpp
81 src/armnn/backends/CpuTensorHandle.hpp
82 src/armnn/backends/CpuTensorHandle.cpp
83 src/armnn/backends/RefWorkloadFactory.cpp
84 src/armnn/backends/RefWorkloadFactory.hpp
85 src/armnn/backends/RefLayerSupport.cpp
86 src/armnn/backends/RefLayerSupport.hpp
87 src/armnn/backends/MakeWorkloadHelper.hpp
88 src/armnn/backends/NeonWorkloadFactory.cpp
89 src/armnn/backends/NeonWorkloadFactory.hpp
90 src/armnn/backends/NeonLayerSupport.cpp
91 src/armnn/backends/NeonLayerSupport.hpp
92 src/armnn/backends/Workload.hpp
93 src/armnn/backends/WorkloadDataFwd.hpp
94 src/armnn/backends/WorkloadData.hpp
95 src/armnn/backends/WorkloadData.cpp
96 src/armnn/backends/WorkloadFactory.hpp
97 src/armnn/backends/WorkloadFactory.cpp
98 src/armnn/backends/WorkloadInfo.hpp
99 src/armnn/backends/MemCopyWorkload.cpp
100 src/armnn/backends/MemCopyWorkload.hpp
101 src/armnn/backends/RefWorkloads/Broadcast.hpp
102 src/armnn/backends/RefWorkloads/Broadcast.cpp
103 src/armnn/backends/RefWorkloads/RefMergerUint8Workload.cpp
104 src/armnn/backends/RefWorkloads/RefConstantUint8Workload.hpp
105 src/armnn/backends/RefWorkloads/Addition.hpp
106 src/armnn/backends/RefWorkloads/ConvImpl.hpp
107 src/armnn/backends/RefWorkloads/RefResizeBilinearUint8Workload.cpp
108 src/armnn/backends/RefWorkloads/RefMultiplicationUint8Workload.hpp
109 src/armnn/backends/RefWorkloads/FullyConnected.cpp
110 src/armnn/backends/RefWorkloads/RefFullyConnectedFloat32Workload.cpp
111 src/armnn/backends/RefWorkloads/RefSoftmaxFloat32Workload.cpp
112 src/armnn/backends/RefWorkloads/RefBaseConstantWorkload.hpp
113 src/armnn/backends/RefWorkloads/RefConvolution2dUint8Workload.hpp
114 src/armnn/backends/RefWorkloads/RefSplitterUint8Workload.hpp
115 src/armnn/backends/RefWorkloads/RefActivationFloat32Workload.cpp
116 src/armnn/backends/RefWorkloads/RefBatchNormalizationUint8Workload.cpp
117 src/armnn/backends/RefWorkloads/RefResizeBilinearUint8Workload.hpp
118 src/armnn/backends/RefWorkloads/Multiplication.cpp
119 src/armnn/backends/RefWorkloads/RefMultiplicationUint8Workload.cpp
120 src/armnn/backends/RefWorkloads/RefL2NormalizationFloat32Workload.hpp
121 src/armnn/backends/RefWorkloads/Multiplication.hpp
122 src/armnn/backends/RefWorkloads/RefActivationUint8Workload.hpp
123 src/armnn/backends/RefWorkloads/RefBaseConstantWorkload.cpp
124 src/armnn/backends/RefWorkloads/RefAdditionUint8Workload.cpp
125 src/armnn/backends/RefWorkloads/RefResizeBilinearFloat32Workload.cpp
126 src/armnn/backends/RefWorkloads/RefBatchNormalizationFloat32Workload.cpp
127 src/armnn/backends/RefWorkloads/RefPooling2dFloat32Workload.hpp
128 src/armnn/backends/RefWorkloads/RefWorkloadUtils.hpp
129 src/armnn/backends/RefWorkloads/RefMergerUint8Workload.hpp
130 src/armnn/backends/RefWorkloads/RefFullyConnectedFloat32Workload.hpp
131 src/armnn/backends/RefWorkloads/Softmax.hpp
132 src/armnn/backends/RefWorkloads/RefMergerFloat32Workload.hpp
133 src/armnn/backends/RefWorkloads/Addition.cpp
134 src/armnn/backends/RefWorkloads/RefFakeQuantizationFloat32Workload.cpp
135 src/armnn/backends/RefWorkloads/TensorBufferArrayView.hpp
136 src/armnn/backends/RefWorkloads/ResizeBilinear.cpp
137 src/armnn/backends/RefWorkloads/RefBatchNormalizationFloat32Workload.hpp
138 src/armnn/backends/RefWorkloads/Splitter.hpp
139 src/armnn/backends/RefWorkloads/RefFullyConnectedUint8Workload.hpp
140 src/armnn/backends/RefWorkloads/RefSoftmaxUint8Workload.cpp
141 src/armnn/backends/RefWorkloads/RefReshapeFloat32Workload.hpp
142 src/armnn/backends/RefWorkloads/RefDepthwiseConvolution2dUint8Workload.hpp
143 src/armnn/backends/RefWorkloads/FullyConnected.hpp
144 src/armnn/backends/RefWorkloads/RefFloorFloat32Workload.hpp
145 src/armnn/backends/RefWorkloads/RefDepthwiseConvolution2dFloat32Workload.cpp
146 src/armnn/backends/RefWorkloads/RefPooling2dUint8Workload.cpp
147 src/armnn/backends/RefWorkloads/RefFloorFloat32Workload.cpp
148 src/armnn/backends/RefWorkloads/ConvImpl.cpp
149 src/armnn/backends/RefWorkloads/RefSoftmaxFloat32Workload.hpp
150 src/armnn/backends/RefWorkloads/RefSoftmaxUint8Workload.hpp
151 src/armnn/backends/RefWorkloads/RefReshapeUint8Workload.hpp
152 src/armnn/backends/RefWorkloads/Activation.cpp
153 src/armnn/backends/RefWorkloads/RefResizeBilinearFloat32Workload.hpp
154 src/armnn/backends/RefWorkloads/RefAdditionUint8Workload.hpp
155 src/armnn/backends/RefWorkloads/RefReshapeUint8Workload.cpp
156 src/armnn/backends/RefWorkloads/RefMultiplicationFloat32Workload.hpp
157 src/armnn/backends/RefWorkloads/RefL2NormalizationFloat32Workload.cpp
158 src/armnn/backends/RefWorkloads/RefConvolution2dFloat32Workload.cpp
159 src/armnn/backends/RefWorkloads/RefBatchNormalizationUint8Workload.hpp
160 src/armnn/backends/RefWorkloads/RefConvolution2dUint8Workload.cpp
161 src/armnn/backends/RefWorkloads/ResizeBilinear.hpp
162 src/armnn/backends/RefWorkloads/RefNormalizationFloat32Workload.hpp
163 src/armnn/backends/RefWorkloads/RefDepthwiseConvolution2dFloat32Workload.hpp
164 src/armnn/backends/RefWorkloads/RefSplitterFloat32Workload.cpp
165 src/armnn/backends/RefWorkloads/RefActivationUint8Workload.cpp
166 src/armnn/backends/RefWorkloads/RefPooling2dUint8Workload.hpp
167 src/armnn/backends/RefWorkloads/BatchNormImpl.hpp
168 src/armnn/backends/RefWorkloads/RefSplitterUint8Workload.cpp
169 src/armnn/backends/RefWorkloads/Activation.hpp
170 src/armnn/backends/RefWorkloads/RefPooling2dFloat32Workload.cpp
171 src/armnn/backends/RefWorkloads/Merger.hpp
172 src/armnn/backends/RefWorkloads/RefSplitterFloat32Workload.hpp
173 src/armnn/backends/RefWorkloads/RefConstantFloat32Workload.hpp
174 src/armnn/backends/RefWorkloads/RefActivationFloat32Workload.hpp
175 src/armnn/backends/RefWorkloads/RefMultiplicationFloat32Workload.cpp
176 src/armnn/backends/RefWorkloads/RefReshapeFloat32Workload.cpp
177 src/armnn/backends/RefWorkloads/RefNormalizationFloat32Workload.cpp
178 src/armnn/backends/RefWorkloads/Softmax.cpp
179 src/armnn/backends/RefWorkloads/RefDepthwiseConvolution2dUint8Workload.cpp
180 src/armnn/backends/RefWorkloads/RefConstantUint8Workload.cpp
181 src/armnn/backends/RefWorkloads/RefConstantFloat32Workload.cpp
182 src/armnn/backends/RefWorkloads/Pooling2d.cpp
183 src/armnn/backends/RefWorkloads/RefAdditionFloat32Workload.cpp
184 src/armnn/backends/RefWorkloads/RefConvolution2dFloat32Workload.hpp
185 src/armnn/backends/RefWorkloads/RefAdditionFloat32Workload.hpp
186 src/armnn/backends/RefWorkloads/RefMergerFloat32Workload.cpp
187 src/armnn/backends/RefWorkloads/Pooling2d.hpp
188 src/armnn/backends/RefWorkloads/RefFullyConnectedUint8Workload.cpp
189 src/armnn/backends/RefWorkloads/RefFakeQuantizationFloat32Workload.hpp
190 src/armnn/backends/RefWorkloads/RefPermuteWorkload.hpp
191 src/armnn/backends/RefWorkloads/RefPermuteWorkload.cpp
192 src/armnn/InternalTypes.hpp
193 src/armnn/InternalTypes.cpp
194 src/armnn/LayerFwd.hpp
195 src/armnn/Layer.hpp
196 src/armnn/Layer.cpp
197 src/armnn/LayersFwd.hpp
198 src/armnn/Layers.hpp
199 src/armnn/Layers.cpp
200 src/armnn/Runtime.hpp
201 src/armnn/Runtime.cpp
202 src/armnn/Descriptors.cpp
203 src/armnn/LoadedNetwork.hpp
204 src/armnn/LoadedNetwork.cpp
205 src/armnn/Exceptions.cpp
206 src/armnn/Graph.hpp
207 src/armnn/Graph.cpp
208 src/armnn/Network.hpp
209 src/armnn/Network.cpp
210 src/armnn/backends/OutputHandler.hpp
211 src/armnn/backends/OutputHandler.cpp
212 src/armnn/Profiling.cpp
213 src/armnn/Tensor.cpp
214 src/armnn/Utils.cpp
215 src/armnn/LayerSupport.cpp
216 src/armnn/LayerSupportCommon.hpp
217 src/armnn/optimizations/All.hpp
218 src/armnn/optimizations/MovePermuteUp.hpp
219 src/armnn/optimizations/Optimization.hpp
220 src/armnn/optimizations/OptimizeConsecutiveReshapes.hpp
221 src/armnn/optimizations/OptimizeInversePermutes.hpp
222 src/armnn/optimizations/PermuteAsReshape.hpp
223 src/armnn/optimizations/SquashEqualSiblings.hpp
224 src/armnn/Optimizer.hpp
225 src/armnn/Optimizer.cpp
226 )
227
228if(ARMCOMPUTENEON)
229 # Additionally include source files for ARM Compute NEON backend
230 list(APPEND armnn_sources
231 src/armnn/backends/NeonWorkloads/NeonActivationFloat32Workload.cpp
232 src/armnn/backends/NeonWorkloads/NeonActivationFloat32Workload.hpp
233 src/armnn/backends/NeonWorkloads/NeonActivationUint8Workload.cpp
234 src/armnn/backends/NeonWorkloads/NeonActivationUint8Workload.hpp
235 src/armnn/backends/NeonWorkloads/NeonAdditionFloat32Workload.cpp
236 src/armnn/backends/NeonWorkloads/NeonAdditionFloat32Workload.hpp
237 src/armnn/backends/NeonWorkloads/NeonBaseConstantWorkload.hpp
238 src/armnn/backends/NeonWorkloads/NeonBaseMergerWorkload.hpp
239 src/armnn/backends/NeonWorkloads/NeonBaseSplitterWorkload.hpp
240 src/armnn/backends/NeonWorkloads/NeonBatchNormalizationFloat32Workload.cpp
241 src/armnn/backends/NeonWorkloads/NeonBatchNormalizationFloat32Workload.hpp
242 src/armnn/backends/NeonWorkloads/NeonConstantFloat32Workload.cpp
243 src/armnn/backends/NeonWorkloads/NeonConstantFloat32Workload.hpp
244 src/armnn/backends/NeonWorkloads/NeonConstantUint8Workload.cpp
245 src/armnn/backends/NeonWorkloads/NeonConstantUint8Workload.hpp
246 src/armnn/backends/NeonWorkloads/NeonConvolution2dBaseWorkload.cpp
247 src/armnn/backends/NeonWorkloads/NeonConvolution2dBaseWorkload.hpp
248 src/armnn/backends/NeonWorkloads/NeonConvolution2dFloat32Workload.cpp
249 src/armnn/backends/NeonWorkloads/NeonConvolution2dFloat32Workload.hpp
250 src/armnn/backends/NeonWorkloads/NeonDepthwiseConvolutionFloat32Workload.cpp
251 src/armnn/backends/NeonWorkloads/NeonDepthwiseConvolutionFloat32Workload.hpp
252 src/armnn/backends/NeonWorkloads/NeonDepthwiseConvolutionUint8Workload.cpp
253 src/armnn/backends/NeonWorkloads/NeonDepthwiseConvolutionUint8Workload.hpp
254 src/armnn/backends/NeonWorkloads/NeonFloorFloat32Workload.cpp
255 src/armnn/backends/NeonWorkloads/NeonFloorFloat32Workload.hpp
256 src/armnn/backends/NeonWorkloads/NeonFullyConnectedFloat32Workload.cpp
257 src/armnn/backends/NeonWorkloads/NeonFullyConnectedFloat32Workload.hpp
258 src/armnn/backends/NeonWorkloads/NeonL2NormalizationFloat32Workload.cpp
259 src/armnn/backends/NeonWorkloads/NeonL2NormalizationFloat32Workload.hpp
260 src/armnn/backends/NeonWorkloads/NeonMergerFloat32Workload.cpp
261 src/armnn/backends/NeonWorkloads/NeonMergerFloat32Workload.hpp
262 src/armnn/backends/NeonWorkloads/NeonMergerUint8Workload.cpp
263 src/armnn/backends/NeonWorkloads/NeonMergerUint8Workload.hpp
264 src/armnn/backends/NeonWorkloads/NeonMultiplicationFloat32Workload.cpp
265 src/armnn/backends/NeonWorkloads/NeonMultiplicationFloat32Workload.hpp
266 src/armnn/backends/NeonWorkloads/NeonNormalizationFloat32Workload.cpp
267 src/armnn/backends/NeonWorkloads/NeonNormalizationFloat32Workload.hpp
268 src/armnn/backends/NeonWorkloads/NeonPermuteWorkload.cpp
269 src/armnn/backends/NeonWorkloads/NeonPermuteWorkload.hpp
270 src/armnn/backends/NeonWorkloads/NeonPooling2dBaseWorkload.cpp
271 src/armnn/backends/NeonWorkloads/NeonPooling2dBaseWorkload.hpp
272 src/armnn/backends/NeonWorkloads/NeonPooling2dFloat32Workload.cpp
273 src/armnn/backends/NeonWorkloads/NeonPooling2dFloat32Workload.hpp
274 src/armnn/backends/NeonWorkloads/NeonPooling2dUint8Workload.cpp
275 src/armnn/backends/NeonWorkloads/NeonPooling2dUint8Workload.hpp
276 src/armnn/backends/NeonWorkloads/NeonReshapeFloat32Workload.cpp
277 src/armnn/backends/NeonWorkloads/NeonReshapeFloat32Workload.hpp
278 src/armnn/backends/NeonWorkloads/NeonReshapeUint8Workload.cpp
279 src/armnn/backends/NeonWorkloads/NeonReshapeUint8Workload.hpp
280 src/armnn/backends/NeonWorkloads/NeonSoftmaxFloat32Workload.cpp
281 src/armnn/backends/NeonWorkloads/NeonSoftmaxFloat32Workload.hpp
282 src/armnn/backends/NeonWorkloads/NeonSoftmaxUint8Workload.cpp
283 src/armnn/backends/NeonWorkloads/NeonSoftmaxUint8Workload.hpp
284 src/armnn/backends/NeonWorkloads/NeonSplitterFloat32Workload.cpp
285 src/armnn/backends/NeonWorkloads/NeonSplitterFloat32Workload.hpp
286 src/armnn/backends/NeonWorkloads/NeonSplitterUint8Workload.cpp
287 src/armnn/backends/NeonWorkloads/NeonSplitterUint8Workload.hpp
288 src/armnn/backends/NeonWorkloadUtils.cpp
289 src/armnn/backends/NeonWorkloadUtils.hpp
290 src/armnn/backends/NeonTensorHandle.hpp)
291endif()
292if(ARMCOMPUTECL)
293 # Additionally include source files for ARM Compute OpenCL backend
294 list(APPEND armnn_sources
295 src/armnn/backends/ClWorkloads/ClActivationFloat32Workload.cpp
296 src/armnn/backends/ClWorkloads/ClActivationFloat32Workload.hpp
297 src/armnn/backends/ClWorkloads/ClActivationUint8Workload.cpp
298 src/armnn/backends/ClWorkloads/ClActivationUint8Workload.hpp
299 src/armnn/backends/ClWorkloads/ClAdditionFloat32Workload.cpp
300 src/armnn/backends/ClWorkloads/ClAdditionFloat32Workload.hpp
301 src/armnn/backends/ClWorkloads/ClBaseConstantWorkload.cpp
302 src/armnn/backends/ClWorkloads/ClBaseConstantWorkload.hpp
303 src/armnn/backends/ClWorkloads/ClBaseMergerWorkload.hpp
304 src/armnn/backends/ClWorkloads/ClBatchNormalizationFloat32Workload.cpp
305 src/armnn/backends/ClWorkloads/ClBatchNormalizationFloat32Workload.hpp
306 src/armnn/backends/ClWorkloads/ClConstantFloat32Workload.cpp
307 src/armnn/backends/ClWorkloads/ClConstantFloat32Workload.hpp
308 src/armnn/backends/ClWorkloads/ClConstantUint8Workload.cpp
309 src/armnn/backends/ClWorkloads/ClConstantUint8Workload.hpp
310 src/armnn/backends/ClWorkloads/ClConvolution2dFloat32Workload.cpp
311 src/armnn/backends/ClWorkloads/ClConvolution2dFloat32Workload.hpp
312 src/armnn/backends/ClWorkloads/ClConvolution2dUint8Workload.cpp
313 src/armnn/backends/ClWorkloads/ClConvolution2dUint8Workload.hpp
314 src/armnn/backends/ClWorkloads/ClDepthwiseConvolutionFloat32Workload.cpp
315 src/armnn/backends/ClWorkloads/ClDepthwiseConvolutionFloat32Workload.hpp
316 src/armnn/backends/ClWorkloads/ClDepthwiseConvolutionUint8Workload.cpp
317 src/armnn/backends/ClWorkloads/ClDepthwiseConvolutionUint8Workload.hpp
318 src/armnn/backends/ClWorkloads/ClDepthwiseConvolutionHelper.hpp
319 src/armnn/backends/ClWorkloads/ClFloorFloat32Workload.cpp
320 src/armnn/backends/ClWorkloads/ClFloorFloat32Workload.hpp
321 src/armnn/backends/ClWorkloads/ClFullyConnectedFloat32Workload.cpp
322 src/armnn/backends/ClWorkloads/ClFullyConnectedFloat32Workload.hpp
323 src/armnn/backends/ClWorkloads/ClL2NormalizationFloat32Workload.cpp
324 src/armnn/backends/ClWorkloads/ClL2NormalizationFloat32Workload.hpp
325 src/armnn/backends/ClWorkloads/ClMergerFloat32Workload.cpp
326 src/armnn/backends/ClWorkloads/ClMergerFloat32Workload.hpp
327 src/armnn/backends/ClWorkloads/ClMergerUint8Workload.cpp
328 src/armnn/backends/ClWorkloads/ClMergerUint8Workload.hpp
329 src/armnn/backends/ClWorkloads/ClMultiplicationFloat32Workload.cpp
330 src/armnn/backends/ClWorkloads/ClMultiplicationFloat32Workload.hpp
331 src/armnn/backends/ClWorkloads/ClNormalizationFloat32Workload.cpp
332 src/armnn/backends/ClWorkloads/ClNormalizationFloat32Workload.hpp
333 src/armnn/backends/ClWorkloads/ClPermuteWorkload.cpp
334 src/armnn/backends/ClWorkloads/ClPermuteWorkload.hpp
335 src/armnn/backends/ClWorkloads/ClPooling2dBaseWorkload.cpp
336 src/armnn/backends/ClWorkloads/ClPooling2dBaseWorkload.hpp
337 src/armnn/backends/ClWorkloads/ClPooling2dFloat32Workload.cpp
338 src/armnn/backends/ClWorkloads/ClPooling2dFloat32Workload.hpp
339 src/armnn/backends/ClWorkloads/ClPooling2dUint8Workload.cpp
340 src/armnn/backends/ClWorkloads/ClPooling2dUint8Workload.hpp
341 src/armnn/backends/ClWorkloads/ClReshapeFloat32Workload.cpp
342 src/armnn/backends/ClWorkloads/ClReshapeFloat32Workload.hpp
343 src/armnn/backends/ClWorkloads/ClReshapeUint8Workload.cpp
344 src/armnn/backends/ClWorkloads/ClReshapeUint8Workload.hpp
345 src/armnn/backends/ClWorkloads/ClResizeBilinearFloat32Workload.cpp
346 src/armnn/backends/ClWorkloads/ClResizeBilinearFloat32Workload.hpp
347 src/armnn/backends/ClWorkloads/ClSoftmaxFloat32Workload.cpp
348 src/armnn/backends/ClWorkloads/ClSoftmaxFloat32Workload.hpp
349 src/armnn/backends/ClWorkloads/ClSoftmaxUint8Workload.cpp
350 src/armnn/backends/ClWorkloads/ClSoftmaxUint8Workload.hpp
351 src/armnn/backends/ClWorkloads/ClSplitterFloat32Workload.cpp
352 src/armnn/backends/ClWorkloads/ClSplitterFloat32Workload.hpp
353 src/armnn/backends/ClWorkloads/ClSplitterUint8Workload.cpp
354 src/armnn/backends/ClWorkloads/ClSplitterUint8Workload.hpp
355 src/armnn/backends/ClWorkloadUtils.hpp
356 src/armnn/backends/ClTensorHandle.hpp)
357endif()
358# Files shared by all ARM Compute backends
359if(ARMCOMPUTENEON OR ARMCOMPUTECL)
360 list(APPEND armnn_sources
361 src/armnn/backends/ArmComputeTensorUtils.hpp
362 src/armnn/backends/ArmComputeTensorUtils.cpp
363 src/armnn/backends/ArmComputeUtils.hpp)
364endif()
365
366# Files used for Streamline-based profiling backend
367if(PROFILING_BACKEND_STREAMLINE)
368 list(APPEND armnn_sources
369 ${GATOR_ROOT}/annotate/streamline_annotate.h
370 ${GATOR_ROOT}/annotate/streamline_annotate.c)
371endif()
372
373add_library_ex(armnn SHARED ${armnn_sources})
374target_include_directories(armnn PRIVATE src/armnn)
375target_include_directories(armnn PRIVATE src/armnnUtils)
376target_link_libraries(armnn armnnUtils)
377target_link_libraries(armnn ${CMAKE_DL_LIBS})
378
379install(TARGETS armnn DESTINATION ${CMAKE_INSTALL_PREFIX}/lib)
380if(BUILD_CAFFE_PARSER)
381 install(TARGETS armnnCaffeParser DESTINATION ${CMAKE_INSTALL_PREFIX}/lib)
382endif()
383install(DIRECTORY include/ DESTINATION ${CMAKE_INSTALL_PREFIX}/include)
384
385target_link_libraries(armnn ${Boost_LOG_LIBRARY} ${Boost_THREAD_LIBRARY} ${Boost_SYSTEM_LIBRARY})
386
387if(ARMCOMPUTENEON OR ARMCOMPUTECL)
388 target_link_libraries(armnn ${ARMCOMPUTE_LIBRARIES})
389endif()
390if(ARMCOMPUTECL)
391 target_link_libraries(armnn ${OPENCL_LIBRARIES})
392endif()
393
394if(PROFILING_BACKEND_STREAMLINE)
395 target_link_libraries(armnn pthread)
396endif()
397
398
399if(BUILD_UNIT_TESTS)
400 set(unittest_sources)
401 list(APPEND unittest_sources
402 src/armnn/test/UnitTests.cpp
403 src/armnn/test/UnitTests.hpp
404 src/armnn/test/EndToEndTest.cpp
405 src/armnn/test/UtilsTests.cpp
406 src/armnn/test/GraphTests.cpp
407 src/armnn/test/RuntimeTests.cpp
408 src/armnn/test/CreateWorkload.hpp
409 src/armnn/test/TensorTest.cpp
410 src/armnn/test/TensorHelpers.hpp
411 src/armnn/test/Network_test.cpp
412 src/armnn/test/GraphUtils.hpp
413 src/armnn/backends/test/IsLayerSupportedTest.cpp
414 src/armnn/backends/test/IsLayerSupportedTestImpl.hpp
415 src/armnn/backends/test/Reference.cpp
416 src/armnn/backends/test/WorkloadDataValidation.cpp
417 src/armnn/backends/test/TensorCopyUtils.hpp
418 src/armnn/backends/test/TensorCopyUtils.cpp
419 src/armnn/backends/test/LayerTests.hpp
420 src/armnn/backends/test/LayerTests.cpp
421 src/armnn/backends/test/Conv2dTestImpl.hpp
422 src/armnn/backends/test/ActivationTestImpl.hpp
423 src/armnn/backends/test/ActivationFixture.hpp
424 src/armnn/backends/test/Pooling2dTestImpl.hpp
425 src/armnn/backends/test/ReshapeTestImpl.hpp
426 src/armnn/backends/test/PermuteTestImpl.hpp
427 src/armnn/backends/test/FullyConnectedTestImpl.hpp
428 src/armnn/backends/test/SplitterTestImpl.hpp
429 src/armnn/backends/test/NormTestImpl.hpp
430 src/armnn/backends/test/BatchNormTestImpl.hpp
431 src/armnn/backends/test/WorkloadTestUtils.hpp
432 src/armnn/backends/test/CreateWorkloadRef.cpp
433 src/armnn/backends/test/QuantizeHelper.hpp)
434
435 if(ARMCOMPUTENEON)
436 list(APPEND unittest_sources
437 src/armnn/backends/test/ArmComputeNeon.cpp
438 src/armnn/backends/test/CreateWorkloadNeon.cpp
439 src/armnn/test/CreateWorkloadClNeon.hpp)
440 endif()
441
442 if(ARMCOMPUTECL)
443 list(APPEND unittest_sources
444 src/armnn/backends/test/ArmComputeCl.cpp
445 src/armnn/backends/test/CreateWorkloadCl.cpp
446 src/armnn/test/CreateWorkloadClNeon.hpp)
447 endif()
448
449 if(ARMCOMPUTENEON OR ARMCOMPUTECL)
450 list(APPEND unittest_sources
451 src/armnn/backends/test/MemCopyTests.cpp)
452 endif()
453
454 if(BUILD_CAFFE_PARSER)
455 list(APPEND unittest_sources
456 src/armnnCaffeParser/test/TestAdd.cpp
457 src/armnnCaffeParser/test/TestConcat.cpp
458 src/armnnCaffeParser/test/TestDropout.cpp
459 src/armnnCaffeParser/test/TestInputs.cpp
460 src/armnnCaffeParser/test/TestMul.cpp
461 src/armnnCaffeParser/test/TestPooling2d.cpp
462 src/armnnCaffeParser/test/TestInPlace.cpp
463 src/armnnCaffeParser/test/TestMultiInputsOutputs.cpp
464 src/armnnCaffeParser/test/TestSplit.cpp
465 )
466 endif()
467
468 add_executable_ex(UnitTests ${unittest_sources})
469 target_include_directories(UnitTests PRIVATE src/armnn)
470 target_include_directories(UnitTests PRIVATE src/armnnUtils)
471
472 CHECK_INCLUDE_FILE(valgrind/memcheck.h VALGRIND_FOUND)
473
474 if(VALGRIND_FOUND)
475 target_compile_definitions(UnitTests PRIVATE "WITH_VALGRIND=1")
476 endif()
477
478 target_link_libraries(UnitTests armnn)
479 target_link_libraries(UnitTests ${CMAKE_THREAD_LIBS_INIT})
480 target_link_libraries(UnitTests ${Boost_UNIT_TEST_FRAMEWORK_LIBRARY})
481
482 if(BUILD_CAFFE_PARSER)
483 target_link_libraries(UnitTests armnnCaffeParser)
484 endif()
485
486 addDllCopyCommands(UnitTests)
487endif()
488