blob: f40a21c10a0067f641090fda319ba022af060ca6 [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
surmeh01bceff2f2018-03-29 16:29:27 +010028 src/armnnUtils/DotSerializer.cpp
29 src/armnnUtils/DotSerializer.hpp
surmeh013537c2c2018-05-18 16:31:43 +010030 src/armnnUtils/HeapProfiling.cpp
31 src/armnnUtils/HeapProfiling.hpp
32 src/armnnUtils/LeakChecking.cpp
33 src/armnnUtils/LeakChecking.hpp
telsoa014fcda012018-03-09 14:13:49 +000034 )
surmeh01bceff2f2018-03-29 16:29:27 +010035if(BUILD_TF_PARSER OR BUILD_CAFFE_PARSER)
telsoa014fcda012018-03-09 14:13:49 +000036 list(APPEND armnnUtils_sources
37 src/armnnUtils/ParserPrototxtFixture.hpp
38 )
39endif()
40
41add_library_ex(armnnUtils STATIC ${armnnUtils_sources})
42
43if(BUILD_CAFFE_PARSER)
44 # ArmNN Parser source files required for all build options
45 set(armnn_caffe_parser_sources)
46 list(APPEND armnn_caffe_parser_sources
47 include/armnnCaffeParser/ICaffeParser.hpp
48 src/armnnCaffeParser/CaffeParser.hpp
49 src/armnnCaffeParser/CaffeParser.cpp
50 ${CAFFE_GENERATED_SOURCES}/caffe/proto/caffe.pb.cc
51 )
52 # The generated Caffe protobuf .cc file is not warning clean and we can't fix them.
53 if(COMPILER_IS_GNU_LIKE)
54 set_source_files_properties(${CAFFE_GENERATED_SOURCES}/caffe/proto/caffe.pb.cc PROPERTIES COMPILE_FLAGS "-Wno-conversion -Wno-sign-conversion")
55 endif()
56
57 add_library_ex(armnnCaffeParser SHARED ${armnn_caffe_parser_sources})
58 set_target_properties(armnnCaffeParser PROPERTIES COMPILE_FLAGS "${CAFFE_PARSER_ADDITIONAL_COMPILE_FLAGS}")
59
60 target_include_directories(armnnCaffeParser PRIVATE src/armnnUtils)
61
62 target_link_libraries(armnnCaffeParser ${Boost_LOG_LIBRARY} ${Boost_THREAD_LIBRARY} ${Boost_SYSTEM_LIBRARY})
63
64 target_link_libraries(armnnCaffeParser armnn)
65 target_link_libraries(armnnCaffeParser ${PROTOBUF_LIBRARIES})
66endif()
67
surmeh01bceff2f2018-03-29 16:29:27 +010068if(BUILD_TF_PARSER)
69 set(armnn_tf_parser_sources)
70 list(APPEND armnn_tf_parser_sources
71 include/armnnTfParser/ITfParser.hpp
72 src/armnnTfParser/TfParser.hpp
73 src/armnnTfParser/TfParser.cpp
74 ${TF_PROTOBUFS}
75 )
76 # The generated tensorflow protobuf .cc files are not warning clean and we can't fix them.
77 if(COMPILER_IS_GNU_LIKE)
78 set_source_files_properties(${TF_PROTOBUFS} PROPERTIES COMPILE_FLAGS "-Wno-conversion -Wno-sign-conversion")
79 endif()
80
81 add_library_ex(armnnTfParser SHARED ${armnn_tf_parser_sources})
82
83 target_include_directories(armnnTfParser PRIVATE src/armnnUtils)
84
85 target_link_libraries(armnnTfParser armnn)
86
87 # Protobuf (use the specific version tensorflow wants)
88 target_link_libraries(armnnTfParser ${PROTOBUF_LIBRARIES})
89endif()
90
telsoa014fcda012018-03-09 14:13:49 +000091# ArmNN source files required for all build options
92list(APPEND armnn_sources
93 include/armnn/ArmNN.hpp
94 include/armnn/Descriptors.hpp
95 include/armnn/DescriptorsFwd.hpp
96 include/armnn/IRuntime.hpp
97 include/armnn/INetwork.hpp
98 include/armnn/Tensor.hpp
99 include/armnn/TensorFwd.hpp
100 include/armnn/Types.hpp
101 include/armnn/TypesUtils.hpp
102 include/armnn/Utils.hpp
103 include/armnn/LayerSupport.hpp
104 include/armnn/Version.hpp
105 src/armnn/backends/ClWorkloadFactory.hpp
106 src/armnn/backends/ClWorkloadFactory.cpp
surmeh013537c2c2018-05-18 16:31:43 +0100107 src/armnn/backends/ClContextControl.hpp
108 src/armnn/backends/ClContextControl.cpp
telsoa014fcda012018-03-09 14:13:49 +0000109 src/armnn/backends/ClLayerSupport.cpp
110 src/armnn/backends/ClLayerSupport.hpp
111 src/armnn/backends/CpuTensorHandleFwd.hpp
112 src/armnn/backends/CpuTensorHandle.hpp
113 src/armnn/backends/CpuTensorHandle.cpp
114 src/armnn/backends/RefWorkloadFactory.cpp
115 src/armnn/backends/RefWorkloadFactory.hpp
116 src/armnn/backends/RefLayerSupport.cpp
117 src/armnn/backends/RefLayerSupport.hpp
118 src/armnn/backends/MakeWorkloadHelper.hpp
119 src/armnn/backends/NeonWorkloadFactory.cpp
120 src/armnn/backends/NeonWorkloadFactory.hpp
121 src/armnn/backends/NeonLayerSupport.cpp
122 src/armnn/backends/NeonLayerSupport.hpp
123 src/armnn/backends/Workload.hpp
124 src/armnn/backends/WorkloadDataFwd.hpp
125 src/armnn/backends/WorkloadData.hpp
126 src/armnn/backends/WorkloadData.cpp
127 src/armnn/backends/WorkloadFactory.hpp
128 src/armnn/backends/WorkloadFactory.cpp
surmeh013537c2c2018-05-18 16:31:43 +0100129 src/armnn/backends/AclBaseMemoryManager.hpp
130 src/armnn/backends/AclBaseMemoryManager.cpp
telsoa014fcda012018-03-09 14:13:49 +0000131 src/armnn/backends/WorkloadInfo.hpp
132 src/armnn/backends/MemCopyWorkload.cpp
133 src/armnn/backends/MemCopyWorkload.hpp
134 src/armnn/backends/RefWorkloads/Broadcast.hpp
135 src/armnn/backends/RefWorkloads/Broadcast.cpp
136 src/armnn/backends/RefWorkloads/RefMergerUint8Workload.cpp
137 src/armnn/backends/RefWorkloads/RefConstantUint8Workload.hpp
138 src/armnn/backends/RefWorkloads/Addition.hpp
139 src/armnn/backends/RefWorkloads/ConvImpl.hpp
140 src/armnn/backends/RefWorkloads/RefResizeBilinearUint8Workload.cpp
141 src/armnn/backends/RefWorkloads/RefMultiplicationUint8Workload.hpp
142 src/armnn/backends/RefWorkloads/FullyConnected.cpp
143 src/armnn/backends/RefWorkloads/RefFullyConnectedFloat32Workload.cpp
144 src/armnn/backends/RefWorkloads/RefSoftmaxFloat32Workload.cpp
145 src/armnn/backends/RefWorkloads/RefBaseConstantWorkload.hpp
146 src/armnn/backends/RefWorkloads/RefConvolution2dUint8Workload.hpp
147 src/armnn/backends/RefWorkloads/RefSplitterUint8Workload.hpp
148 src/armnn/backends/RefWorkloads/RefActivationFloat32Workload.cpp
149 src/armnn/backends/RefWorkloads/RefBatchNormalizationUint8Workload.cpp
150 src/armnn/backends/RefWorkloads/RefResizeBilinearUint8Workload.hpp
151 src/armnn/backends/RefWorkloads/Multiplication.cpp
152 src/armnn/backends/RefWorkloads/RefMultiplicationUint8Workload.cpp
153 src/armnn/backends/RefWorkloads/RefL2NormalizationFloat32Workload.hpp
154 src/armnn/backends/RefWorkloads/Multiplication.hpp
155 src/armnn/backends/RefWorkloads/RefActivationUint8Workload.hpp
156 src/armnn/backends/RefWorkloads/RefBaseConstantWorkload.cpp
157 src/armnn/backends/RefWorkloads/RefAdditionUint8Workload.cpp
158 src/armnn/backends/RefWorkloads/RefResizeBilinearFloat32Workload.cpp
159 src/armnn/backends/RefWorkloads/RefBatchNormalizationFloat32Workload.cpp
160 src/armnn/backends/RefWorkloads/RefPooling2dFloat32Workload.hpp
161 src/armnn/backends/RefWorkloads/RefWorkloadUtils.hpp
162 src/armnn/backends/RefWorkloads/RefMergerUint8Workload.hpp
163 src/armnn/backends/RefWorkloads/RefFullyConnectedFloat32Workload.hpp
164 src/armnn/backends/RefWorkloads/Softmax.hpp
165 src/armnn/backends/RefWorkloads/RefMergerFloat32Workload.hpp
166 src/armnn/backends/RefWorkloads/Addition.cpp
167 src/armnn/backends/RefWorkloads/RefFakeQuantizationFloat32Workload.cpp
168 src/armnn/backends/RefWorkloads/TensorBufferArrayView.hpp
169 src/armnn/backends/RefWorkloads/ResizeBilinear.cpp
170 src/armnn/backends/RefWorkloads/RefBatchNormalizationFloat32Workload.hpp
171 src/armnn/backends/RefWorkloads/Splitter.hpp
172 src/armnn/backends/RefWorkloads/RefFullyConnectedUint8Workload.hpp
173 src/armnn/backends/RefWorkloads/RefSoftmaxUint8Workload.cpp
174 src/armnn/backends/RefWorkloads/RefReshapeFloat32Workload.hpp
175 src/armnn/backends/RefWorkloads/RefDepthwiseConvolution2dUint8Workload.hpp
176 src/armnn/backends/RefWorkloads/FullyConnected.hpp
177 src/armnn/backends/RefWorkloads/RefFloorFloat32Workload.hpp
178 src/armnn/backends/RefWorkloads/RefDepthwiseConvolution2dFloat32Workload.cpp
179 src/armnn/backends/RefWorkloads/RefPooling2dUint8Workload.cpp
180 src/armnn/backends/RefWorkloads/RefFloorFloat32Workload.cpp
181 src/armnn/backends/RefWorkloads/ConvImpl.cpp
182 src/armnn/backends/RefWorkloads/RefSoftmaxFloat32Workload.hpp
183 src/armnn/backends/RefWorkloads/RefSoftmaxUint8Workload.hpp
184 src/armnn/backends/RefWorkloads/RefReshapeUint8Workload.hpp
185 src/armnn/backends/RefWorkloads/Activation.cpp
186 src/armnn/backends/RefWorkloads/RefResizeBilinearFloat32Workload.hpp
187 src/armnn/backends/RefWorkloads/RefAdditionUint8Workload.hpp
188 src/armnn/backends/RefWorkloads/RefReshapeUint8Workload.cpp
189 src/armnn/backends/RefWorkloads/RefMultiplicationFloat32Workload.hpp
190 src/armnn/backends/RefWorkloads/RefL2NormalizationFloat32Workload.cpp
191 src/armnn/backends/RefWorkloads/RefConvolution2dFloat32Workload.cpp
192 src/armnn/backends/RefWorkloads/RefBatchNormalizationUint8Workload.hpp
193 src/armnn/backends/RefWorkloads/RefConvolution2dUint8Workload.cpp
194 src/armnn/backends/RefWorkloads/ResizeBilinear.hpp
195 src/armnn/backends/RefWorkloads/RefNormalizationFloat32Workload.hpp
196 src/armnn/backends/RefWorkloads/RefDepthwiseConvolution2dFloat32Workload.hpp
197 src/armnn/backends/RefWorkloads/RefSplitterFloat32Workload.cpp
198 src/armnn/backends/RefWorkloads/RefActivationUint8Workload.cpp
199 src/armnn/backends/RefWorkloads/RefPooling2dUint8Workload.hpp
200 src/armnn/backends/RefWorkloads/BatchNormImpl.hpp
201 src/armnn/backends/RefWorkloads/RefSplitterUint8Workload.cpp
202 src/armnn/backends/RefWorkloads/Activation.hpp
203 src/armnn/backends/RefWorkloads/RefPooling2dFloat32Workload.cpp
204 src/armnn/backends/RefWorkloads/Merger.hpp
205 src/armnn/backends/RefWorkloads/RefSplitterFloat32Workload.hpp
206 src/armnn/backends/RefWorkloads/RefConstantFloat32Workload.hpp
207 src/armnn/backends/RefWorkloads/RefActivationFloat32Workload.hpp
208 src/armnn/backends/RefWorkloads/RefMultiplicationFloat32Workload.cpp
209 src/armnn/backends/RefWorkloads/RefReshapeFloat32Workload.cpp
210 src/armnn/backends/RefWorkloads/RefNormalizationFloat32Workload.cpp
211 src/armnn/backends/RefWorkloads/Softmax.cpp
212 src/armnn/backends/RefWorkloads/RefDepthwiseConvolution2dUint8Workload.cpp
213 src/armnn/backends/RefWorkloads/RefConstantUint8Workload.cpp
214 src/armnn/backends/RefWorkloads/RefConstantFloat32Workload.cpp
215 src/armnn/backends/RefWorkloads/Pooling2d.cpp
216 src/armnn/backends/RefWorkloads/RefAdditionFloat32Workload.cpp
217 src/armnn/backends/RefWorkloads/RefConvolution2dFloat32Workload.hpp
218 src/armnn/backends/RefWorkloads/RefAdditionFloat32Workload.hpp
219 src/armnn/backends/RefWorkloads/RefMergerFloat32Workload.cpp
220 src/armnn/backends/RefWorkloads/Pooling2d.hpp
221 src/armnn/backends/RefWorkloads/RefFullyConnectedUint8Workload.cpp
222 src/armnn/backends/RefWorkloads/RefFakeQuantizationFloat32Workload.hpp
223 src/armnn/backends/RefWorkloads/RefPermuteWorkload.hpp
224 src/armnn/backends/RefWorkloads/RefPermuteWorkload.cpp
surmeh013537c2c2018-05-18 16:31:43 +0100225 src/armnn/layers/LayerCloneBase.hpp
226 src/armnn/layers/LayerWithParameters.hpp
227 src/armnn/layers/ActivationLayer.hpp
228 src/armnn/layers/ActivationLayer.cpp
229 src/armnn/layers/AdditionLayer.hpp
230 src/armnn/layers/AdditionLayer.cpp
231 src/armnn/layers/BatchNormalizationLayer.hpp
232 src/armnn/layers/BatchNormalizationLayer.cpp
233 src/armnn/layers/ConstantLayer.hpp
234 src/armnn/layers/ConstantLayer.cpp
235 src/armnn/layers/Convolution2dLayer.hpp
236 src/armnn/layers/Convolution2dLayer.cpp
237 src/armnn/layers/DepthwiseConvolution2dLayer.hpp
238 src/armnn/layers/DepthwiseConvolution2dLayer.cpp
239 src/armnn/layers/FakeQuantizationLayer.hpp
240 src/armnn/layers/FakeQuantizationLayer.cpp
241 src/armnn/layers/FloorLayer.hpp
242 src/armnn/layers/FloorLayer.cpp
243 src/armnn/layers/FullyConnectedLayer.hpp
244 src/armnn/layers/FullyConnectedLayer.cpp
245 src/armnn/layers/InputLayer.hpp
246 src/armnn/layers/InputLayer.cpp
247 src/armnn/layers/L2NormalizationLayer.hpp
248 src/armnn/layers/L2NormalizationLayer.cpp
249 src/armnn/layers/MemCopyLayer.hpp
250 src/armnn/layers/MemCopyLayer.cpp
251 src/armnn/layers/MergerLayer.hpp
252 src/armnn/layers/MergerLayer.cpp
253 src/armnn/layers/MultiplicationLayer.hpp
254 src/armnn/layers/MultiplicationLayer.cpp
255 src/armnn/layers/NormalizationLayer.hpp
256 src/armnn/layers/NormalizationLayer.cpp
257 src/armnn/layers/OutputLayer.hpp
258 src/armnn/layers/OutputLayer.cpp
259 src/armnn/layers/PermuteLayer.hpp
260 src/armnn/layers/PermuteLayer.cpp
261 src/armnn/layers/Pooling2dLayer.hpp
262 src/armnn/layers/Pooling2dLayer.cpp
263 src/armnn/layers/ReshapeLayer.hpp
264 src/armnn/layers/ReshapeLayer.cpp
265 src/armnn/layers/ResizeBilinearLayer.hpp
266 src/armnn/layers/ResizeBilinearLayer.cpp
267 src/armnn/layers/SoftmaxLayer.hpp
268 src/armnn/layers/SoftmaxLayer.cpp
269 src/armnn/layers/SplitterLayer.hpp
270 src/armnn/layers/SplitterLayer.cpp
telsoa014fcda012018-03-09 14:13:49 +0000271 src/armnn/InternalTypes.hpp
272 src/armnn/InternalTypes.cpp
273 src/armnn/LayerFwd.hpp
274 src/armnn/Layer.hpp
275 src/armnn/Layer.cpp
276 src/armnn/LayersFwd.hpp
telsoa014fcda012018-03-09 14:13:49 +0000277 src/armnn/Runtime.hpp
278 src/armnn/Runtime.cpp
surmeh01bceff2f2018-03-29 16:29:27 +0100279 src/armnn/SerializeLayerParameters.cpp
280 src/armnn/SerializeLayerParameters.hpp
telsoa014fcda012018-03-09 14:13:49 +0000281 src/armnn/Descriptors.cpp
282 src/armnn/LoadedNetwork.hpp
283 src/armnn/LoadedNetwork.cpp
284 src/armnn/Exceptions.cpp
285 src/armnn/Graph.hpp
286 src/armnn/Graph.cpp
287 src/armnn/Network.hpp
288 src/armnn/Network.cpp
289 src/armnn/backends/OutputHandler.hpp
290 src/armnn/backends/OutputHandler.cpp
291 src/armnn/Profiling.cpp
292 src/armnn/Tensor.cpp
293 src/armnn/Utils.cpp
294 src/armnn/LayerSupport.cpp
295 src/armnn/LayerSupportCommon.hpp
296 src/armnn/optimizations/All.hpp
297 src/armnn/optimizations/MovePermuteUp.hpp
298 src/armnn/optimizations/Optimization.hpp
299 src/armnn/optimizations/OptimizeConsecutiveReshapes.hpp
300 src/armnn/optimizations/OptimizeInversePermutes.hpp
301 src/armnn/optimizations/PermuteAsReshape.hpp
302 src/armnn/optimizations/SquashEqualSiblings.hpp
303 src/armnn/Optimizer.hpp
304 src/armnn/Optimizer.cpp
305 )
306
307if(ARMCOMPUTENEON)
308 # Additionally include source files for ARM Compute NEON backend
309 list(APPEND armnn_sources
310 src/armnn/backends/NeonWorkloads/NeonActivationFloat32Workload.cpp
311 src/armnn/backends/NeonWorkloads/NeonActivationFloat32Workload.hpp
312 src/armnn/backends/NeonWorkloads/NeonActivationUint8Workload.cpp
313 src/armnn/backends/NeonWorkloads/NeonActivationUint8Workload.hpp
314 src/armnn/backends/NeonWorkloads/NeonAdditionFloat32Workload.cpp
315 src/armnn/backends/NeonWorkloads/NeonAdditionFloat32Workload.hpp
316 src/armnn/backends/NeonWorkloads/NeonBaseConstantWorkload.hpp
317 src/armnn/backends/NeonWorkloads/NeonBaseMergerWorkload.hpp
318 src/armnn/backends/NeonWorkloads/NeonBaseSplitterWorkload.hpp
319 src/armnn/backends/NeonWorkloads/NeonBatchNormalizationFloat32Workload.cpp
320 src/armnn/backends/NeonWorkloads/NeonBatchNormalizationFloat32Workload.hpp
321 src/armnn/backends/NeonWorkloads/NeonConstantFloat32Workload.cpp
322 src/armnn/backends/NeonWorkloads/NeonConstantFloat32Workload.hpp
323 src/armnn/backends/NeonWorkloads/NeonConstantUint8Workload.cpp
324 src/armnn/backends/NeonWorkloads/NeonConstantUint8Workload.hpp
325 src/armnn/backends/NeonWorkloads/NeonConvolution2dBaseWorkload.cpp
326 src/armnn/backends/NeonWorkloads/NeonConvolution2dBaseWorkload.hpp
327 src/armnn/backends/NeonWorkloads/NeonConvolution2dFloat32Workload.cpp
328 src/armnn/backends/NeonWorkloads/NeonConvolution2dFloat32Workload.hpp
surmeh01bceff2f2018-03-29 16:29:27 +0100329 src/armnn/backends/NeonWorkloads/NeonConvolution2dUint8Workload.cpp
330 src/armnn/backends/NeonWorkloads/NeonConvolution2dUint8Workload.hpp
telsoa014fcda012018-03-09 14:13:49 +0000331 src/armnn/backends/NeonWorkloads/NeonDepthwiseConvolutionFloat32Workload.cpp
332 src/armnn/backends/NeonWorkloads/NeonDepthwiseConvolutionFloat32Workload.hpp
333 src/armnn/backends/NeonWorkloads/NeonDepthwiseConvolutionUint8Workload.cpp
334 src/armnn/backends/NeonWorkloads/NeonDepthwiseConvolutionUint8Workload.hpp
335 src/armnn/backends/NeonWorkloads/NeonFloorFloat32Workload.cpp
336 src/armnn/backends/NeonWorkloads/NeonFloorFloat32Workload.hpp
337 src/armnn/backends/NeonWorkloads/NeonFullyConnectedFloat32Workload.cpp
338 src/armnn/backends/NeonWorkloads/NeonFullyConnectedFloat32Workload.hpp
339 src/armnn/backends/NeonWorkloads/NeonL2NormalizationFloat32Workload.cpp
340 src/armnn/backends/NeonWorkloads/NeonL2NormalizationFloat32Workload.hpp
341 src/armnn/backends/NeonWorkloads/NeonMergerFloat32Workload.cpp
342 src/armnn/backends/NeonWorkloads/NeonMergerFloat32Workload.hpp
343 src/armnn/backends/NeonWorkloads/NeonMergerUint8Workload.cpp
344 src/armnn/backends/NeonWorkloads/NeonMergerUint8Workload.hpp
345 src/armnn/backends/NeonWorkloads/NeonMultiplicationFloat32Workload.cpp
346 src/armnn/backends/NeonWorkloads/NeonMultiplicationFloat32Workload.hpp
347 src/armnn/backends/NeonWorkloads/NeonNormalizationFloat32Workload.cpp
348 src/armnn/backends/NeonWorkloads/NeonNormalizationFloat32Workload.hpp
349 src/armnn/backends/NeonWorkloads/NeonPermuteWorkload.cpp
350 src/armnn/backends/NeonWorkloads/NeonPermuteWorkload.hpp
351 src/armnn/backends/NeonWorkloads/NeonPooling2dBaseWorkload.cpp
352 src/armnn/backends/NeonWorkloads/NeonPooling2dBaseWorkload.hpp
353 src/armnn/backends/NeonWorkloads/NeonPooling2dFloat32Workload.cpp
354 src/armnn/backends/NeonWorkloads/NeonPooling2dFloat32Workload.hpp
355 src/armnn/backends/NeonWorkloads/NeonPooling2dUint8Workload.cpp
356 src/armnn/backends/NeonWorkloads/NeonPooling2dUint8Workload.hpp
357 src/armnn/backends/NeonWorkloads/NeonReshapeFloat32Workload.cpp
358 src/armnn/backends/NeonWorkloads/NeonReshapeFloat32Workload.hpp
359 src/armnn/backends/NeonWorkloads/NeonReshapeUint8Workload.cpp
360 src/armnn/backends/NeonWorkloads/NeonReshapeUint8Workload.hpp
361 src/armnn/backends/NeonWorkloads/NeonSoftmaxFloat32Workload.cpp
362 src/armnn/backends/NeonWorkloads/NeonSoftmaxFloat32Workload.hpp
363 src/armnn/backends/NeonWorkloads/NeonSoftmaxUint8Workload.cpp
364 src/armnn/backends/NeonWorkloads/NeonSoftmaxUint8Workload.hpp
365 src/armnn/backends/NeonWorkloads/NeonSplitterFloat32Workload.cpp
366 src/armnn/backends/NeonWorkloads/NeonSplitterFloat32Workload.hpp
367 src/armnn/backends/NeonWorkloads/NeonSplitterUint8Workload.cpp
368 src/armnn/backends/NeonWorkloads/NeonSplitterUint8Workload.hpp
369 src/armnn/backends/NeonWorkloadUtils.cpp
370 src/armnn/backends/NeonWorkloadUtils.hpp
371 src/armnn/backends/NeonTensorHandle.hpp)
372endif()
373if(ARMCOMPUTECL)
374 # Additionally include source files for ARM Compute OpenCL backend
375 list(APPEND armnn_sources
376 src/armnn/backends/ClWorkloads/ClActivationFloat32Workload.cpp
377 src/armnn/backends/ClWorkloads/ClActivationFloat32Workload.hpp
378 src/armnn/backends/ClWorkloads/ClActivationUint8Workload.cpp
379 src/armnn/backends/ClWorkloads/ClActivationUint8Workload.hpp
380 src/armnn/backends/ClWorkloads/ClAdditionFloat32Workload.cpp
381 src/armnn/backends/ClWorkloads/ClAdditionFloat32Workload.hpp
382 src/armnn/backends/ClWorkloads/ClBaseConstantWorkload.cpp
383 src/armnn/backends/ClWorkloads/ClBaseConstantWorkload.hpp
384 src/armnn/backends/ClWorkloads/ClBaseMergerWorkload.hpp
385 src/armnn/backends/ClWorkloads/ClBatchNormalizationFloat32Workload.cpp
386 src/armnn/backends/ClWorkloads/ClBatchNormalizationFloat32Workload.hpp
387 src/armnn/backends/ClWorkloads/ClConstantFloat32Workload.cpp
388 src/armnn/backends/ClWorkloads/ClConstantFloat32Workload.hpp
389 src/armnn/backends/ClWorkloads/ClConstantUint8Workload.cpp
390 src/armnn/backends/ClWorkloads/ClConstantUint8Workload.hpp
surmeh013537c2c2018-05-18 16:31:43 +0100391 src/armnn/backends/ClWorkloads/ClConvolution2dBaseWorkload.cpp
392 src/armnn/backends/ClWorkloads/ClConvolution2dBaseWorkload.hpp
telsoa014fcda012018-03-09 14:13:49 +0000393 src/armnn/backends/ClWorkloads/ClConvolution2dFloat32Workload.cpp
394 src/armnn/backends/ClWorkloads/ClConvolution2dFloat32Workload.hpp
395 src/armnn/backends/ClWorkloads/ClConvolution2dUint8Workload.cpp
396 src/armnn/backends/ClWorkloads/ClConvolution2dUint8Workload.hpp
397 src/armnn/backends/ClWorkloads/ClDepthwiseConvolutionFloat32Workload.cpp
398 src/armnn/backends/ClWorkloads/ClDepthwiseConvolutionFloat32Workload.hpp
399 src/armnn/backends/ClWorkloads/ClDepthwiseConvolutionUint8Workload.cpp
400 src/armnn/backends/ClWorkloads/ClDepthwiseConvolutionUint8Workload.hpp
401 src/armnn/backends/ClWorkloads/ClDepthwiseConvolutionHelper.hpp
402 src/armnn/backends/ClWorkloads/ClFloorFloat32Workload.cpp
403 src/armnn/backends/ClWorkloads/ClFloorFloat32Workload.hpp
404 src/armnn/backends/ClWorkloads/ClFullyConnectedFloat32Workload.cpp
405 src/armnn/backends/ClWorkloads/ClFullyConnectedFloat32Workload.hpp
406 src/armnn/backends/ClWorkloads/ClL2NormalizationFloat32Workload.cpp
407 src/armnn/backends/ClWorkloads/ClL2NormalizationFloat32Workload.hpp
408 src/armnn/backends/ClWorkloads/ClMergerFloat32Workload.cpp
409 src/armnn/backends/ClWorkloads/ClMergerFloat32Workload.hpp
410 src/armnn/backends/ClWorkloads/ClMergerUint8Workload.cpp
411 src/armnn/backends/ClWorkloads/ClMergerUint8Workload.hpp
412 src/armnn/backends/ClWorkloads/ClMultiplicationFloat32Workload.cpp
413 src/armnn/backends/ClWorkloads/ClMultiplicationFloat32Workload.hpp
414 src/armnn/backends/ClWorkloads/ClNormalizationFloat32Workload.cpp
415 src/armnn/backends/ClWorkloads/ClNormalizationFloat32Workload.hpp
416 src/armnn/backends/ClWorkloads/ClPermuteWorkload.cpp
417 src/armnn/backends/ClWorkloads/ClPermuteWorkload.hpp
418 src/armnn/backends/ClWorkloads/ClPooling2dBaseWorkload.cpp
419 src/armnn/backends/ClWorkloads/ClPooling2dBaseWorkload.hpp
420 src/armnn/backends/ClWorkloads/ClPooling2dFloat32Workload.cpp
421 src/armnn/backends/ClWorkloads/ClPooling2dFloat32Workload.hpp
422 src/armnn/backends/ClWorkloads/ClPooling2dUint8Workload.cpp
423 src/armnn/backends/ClWorkloads/ClPooling2dUint8Workload.hpp
424 src/armnn/backends/ClWorkloads/ClReshapeFloat32Workload.cpp
425 src/armnn/backends/ClWorkloads/ClReshapeFloat32Workload.hpp
426 src/armnn/backends/ClWorkloads/ClReshapeUint8Workload.cpp
427 src/armnn/backends/ClWorkloads/ClReshapeUint8Workload.hpp
428 src/armnn/backends/ClWorkloads/ClResizeBilinearFloat32Workload.cpp
429 src/armnn/backends/ClWorkloads/ClResizeBilinearFloat32Workload.hpp
430 src/armnn/backends/ClWorkloads/ClSoftmaxFloat32Workload.cpp
431 src/armnn/backends/ClWorkloads/ClSoftmaxFloat32Workload.hpp
432 src/armnn/backends/ClWorkloads/ClSoftmaxUint8Workload.cpp
433 src/armnn/backends/ClWorkloads/ClSoftmaxUint8Workload.hpp
434 src/armnn/backends/ClWorkloads/ClSplitterFloat32Workload.cpp
435 src/armnn/backends/ClWorkloads/ClSplitterFloat32Workload.hpp
436 src/armnn/backends/ClWorkloads/ClSplitterUint8Workload.cpp
437 src/armnn/backends/ClWorkloads/ClSplitterUint8Workload.hpp
438 src/armnn/backends/ClWorkloadUtils.hpp
439 src/armnn/backends/ClTensorHandle.hpp)
440endif()
441# Files shared by all ARM Compute backends
442if(ARMCOMPUTENEON OR ARMCOMPUTECL)
443 list(APPEND armnn_sources
444 src/armnn/backends/ArmComputeTensorUtils.hpp
445 src/armnn/backends/ArmComputeTensorUtils.cpp
446 src/armnn/backends/ArmComputeUtils.hpp)
447endif()
448
449# Files used for Streamline-based profiling backend
450if(PROFILING_BACKEND_STREAMLINE)
451 list(APPEND armnn_sources
452 ${GATOR_ROOT}/annotate/streamline_annotate.h
453 ${GATOR_ROOT}/annotate/streamline_annotate.c)
454endif()
455
456add_library_ex(armnn SHARED ${armnn_sources})
457target_include_directories(armnn PRIVATE src/armnn)
458target_include_directories(armnn PRIVATE src/armnnUtils)
459target_link_libraries(armnn armnnUtils)
460target_link_libraries(armnn ${CMAKE_DL_LIBS})
461
462install(TARGETS armnn DESTINATION ${CMAKE_INSTALL_PREFIX}/lib)
463if(BUILD_CAFFE_PARSER)
464 install(TARGETS armnnCaffeParser DESTINATION ${CMAKE_INSTALL_PREFIX}/lib)
465endif()
surmeh01bceff2f2018-03-29 16:29:27 +0100466if(BUILD_TF_PARSER)
467 install(TARGETS armnnTfParser DESTINATION ${CMAKE_INSTALL_PREFIX}/lib)
468endif()
telsoa014fcda012018-03-09 14:13:49 +0000469install(DIRECTORY include/ DESTINATION ${CMAKE_INSTALL_PREFIX}/include)
470
471target_link_libraries(armnn ${Boost_LOG_LIBRARY} ${Boost_THREAD_LIBRARY} ${Boost_SYSTEM_LIBRARY})
472
473if(ARMCOMPUTENEON OR ARMCOMPUTECL)
474 target_link_libraries(armnn ${ARMCOMPUTE_LIBRARIES})
475endif()
476if(ARMCOMPUTECL)
477 target_link_libraries(armnn ${OPENCL_LIBRARIES})
478endif()
479
480if(PROFILING_BACKEND_STREAMLINE)
481 target_link_libraries(armnn pthread)
482endif()
483
telsoa014fcda012018-03-09 14:13:49 +0000484if(BUILD_UNIT_TESTS)
485 set(unittest_sources)
486 list(APPEND unittest_sources
487 src/armnn/test/UnitTests.cpp
488 src/armnn/test/UnitTests.hpp
489 src/armnn/test/EndToEndTest.cpp
490 src/armnn/test/UtilsTests.cpp
491 src/armnn/test/GraphTests.cpp
surmeh01bceff2f2018-03-29 16:29:27 +0100492 src/armnn/test/OptimizerTests.cpp
telsoa014fcda012018-03-09 14:13:49 +0000493 src/armnn/test/RuntimeTests.cpp
494 src/armnn/test/CreateWorkload.hpp
495 src/armnn/test/TensorTest.cpp
496 src/armnn/test/TensorHelpers.hpp
497 src/armnn/test/Network_test.cpp
498 src/armnn/test/GraphUtils.hpp
499 src/armnn/backends/test/IsLayerSupportedTest.cpp
500 src/armnn/backends/test/IsLayerSupportedTestImpl.hpp
501 src/armnn/backends/test/Reference.cpp
502 src/armnn/backends/test/WorkloadDataValidation.cpp
503 src/armnn/backends/test/TensorCopyUtils.hpp
504 src/armnn/backends/test/TensorCopyUtils.cpp
505 src/armnn/backends/test/LayerTests.hpp
506 src/armnn/backends/test/LayerTests.cpp
507 src/armnn/backends/test/Conv2dTestImpl.hpp
508 src/armnn/backends/test/ActivationTestImpl.hpp
509 src/armnn/backends/test/ActivationFixture.hpp
510 src/armnn/backends/test/Pooling2dTestImpl.hpp
511 src/armnn/backends/test/ReshapeTestImpl.hpp
512 src/armnn/backends/test/PermuteTestImpl.hpp
513 src/armnn/backends/test/FullyConnectedTestImpl.hpp
514 src/armnn/backends/test/SplitterTestImpl.hpp
515 src/armnn/backends/test/NormTestImpl.hpp
516 src/armnn/backends/test/BatchNormTestImpl.hpp
517 src/armnn/backends/test/WorkloadTestUtils.hpp
518 src/armnn/backends/test/CreateWorkloadRef.cpp
519 src/armnn/backends/test/QuantizeHelper.hpp)
520
521 if(ARMCOMPUTENEON)
522 list(APPEND unittest_sources
523 src/armnn/backends/test/ArmComputeNeon.cpp
524 src/armnn/backends/test/CreateWorkloadNeon.cpp
525 src/armnn/test/CreateWorkloadClNeon.hpp)
526 endif()
527
528 if(ARMCOMPUTECL)
529 list(APPEND unittest_sources
530 src/armnn/backends/test/ArmComputeCl.cpp
531 src/armnn/backends/test/CreateWorkloadCl.cpp
532 src/armnn/test/CreateWorkloadClNeon.hpp)
533 endif()
534
535 if(ARMCOMPUTENEON OR ARMCOMPUTECL)
536 list(APPEND unittest_sources
537 src/armnn/backends/test/MemCopyTests.cpp)
538 endif()
539
surmeh01bceff2f2018-03-29 16:29:27 +0100540 if(BUILD_TF_PARSER)
541 list(APPEND unittest_sources
542 src/armnnTfParser/test/Activations.cpp
543 src/armnnTfParser/test/Addition.cpp
544 src/armnnTfParser/test/BiasAdd.cpp
545 src/armnnTfParser/test/BroadcastForAdd.cpp
546 src/armnnTfParser/test/Convolution2d.cpp
547 src/armnnTfParser/test/Concat.cpp
548 src/armnnTfParser/test/ConcatOfConcats.cpp
549 src/armnnTfParser/test/DepthwiseConvolution2d.cpp
550 src/armnnTfParser/test/FusedBatchNorm.cpp
551 src/armnnTfParser/test/Identity.cpp
552 src/armnnTfParser/test/LocalResponseNormalization.cpp
553 src/armnnTfParser/test/Multiplication.cpp
554 src/armnnTfParser/test/MultiOutput.cpp
555 src/armnnTfParser/test/PassThru.cpp
556 src/armnnTfParser/test/Pooling.cpp
557 src/armnnTfParser/test/Reshape.cpp
558 src/armnnTfParser/test/ResizeBilinear.cpp
559 src/armnnTfParser/test/Shape.cpp
560 src/armnnTfParser/test/Softmax.cpp
561 src/armnnTfParser/test/TestDependencies.cpp
562 src/armnnTfParser/test/FullyConnected.cpp
563 src/armnnTfParser/test/Constant.cpp
564 src/armnnTfParser/test/TestMultiInputsOutputs.cpp
565 src/armnnTfParser/test/Squeeze.cpp)
566 endif()
567
telsoa014fcda012018-03-09 14:13:49 +0000568 if(BUILD_CAFFE_PARSER)
569 list(APPEND unittest_sources
570 src/armnnCaffeParser/test/TestAdd.cpp
571 src/armnnCaffeParser/test/TestConcat.cpp
572 src/armnnCaffeParser/test/TestDropout.cpp
573 src/armnnCaffeParser/test/TestInputs.cpp
574 src/armnnCaffeParser/test/TestMul.cpp
575 src/armnnCaffeParser/test/TestPooling2d.cpp
576 src/armnnCaffeParser/test/TestInPlace.cpp
577 src/armnnCaffeParser/test/TestMultiInputsOutputs.cpp
578 src/armnnCaffeParser/test/TestSplit.cpp
579 )
580 endif()
581
582 add_executable_ex(UnitTests ${unittest_sources})
583 target_include_directories(UnitTests PRIVATE src/armnn)
584 target_include_directories(UnitTests PRIVATE src/armnnUtils)
585
surmeh013537c2c2018-05-18 16:31:43 +0100586 if(NOT HEAP_PROFILING AND VALGRIND_FOUND)
587 # Valgrind works with gperftools version number <= 2.4
telsoa014fcda012018-03-09 14:13:49 +0000588 target_compile_definitions(UnitTests PRIVATE "WITH_VALGRIND=1")
589 endif()
590
591 target_link_libraries(UnitTests armnn)
surmeh013537c2c2018-05-18 16:31:43 +0100592 target_link_libraries(UnitTests armnnUtils)
telsoa014fcda012018-03-09 14:13:49 +0000593 target_link_libraries(UnitTests ${CMAKE_THREAD_LIBS_INIT})
594 target_link_libraries(UnitTests ${Boost_UNIT_TEST_FRAMEWORK_LIBRARY})
595
surmeh01bceff2f2018-03-29 16:29:27 +0100596 if(BUILD_TF_PARSER)
597 target_link_libraries(UnitTests armnnTfParser)
598 endif()
599
telsoa014fcda012018-03-09 14:13:49 +0000600 if(BUILD_CAFFE_PARSER)
601 target_link_libraries(UnitTests armnnCaffeParser)
602 endif()
603
604 addDllCopyCommands(UnitTests)
605endif()
606