• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#
2# Copyright © 2017 ARM Ltd. All rights reserved.
3# SPDX-License-Identifier: MIT
4#
5
6LOCAL_PATH := $(call my-dir)
7
8# Configure these paths if you move the source or Khronos headers
9OPENCL_HEADER_PATH := $(LOCAL_PATH)/../clframework/include
10ARMNN_HEADER_PATH := $(LOCAL_PATH)/include
11ARMNN_PROFILING_INCLUDE_PATH := $(LOCAL_PATH)/profiling
12ARMNN_PROFILING_COMMON_INCLUDE_PATH := $(LOCAL_PATH)/profiling/common/include
13ARMNN_TIMELINE_DECODER_INCLUDE_PATH := $(LOCAL_PATH)/src/timelineDecoder
14ARMNN_THIRD_PARTY_INCLUDE_PATH := $(LOCAL_PATH)/third-party
15ARMNN_MAIN_HEADER_PATH := $(LOCAL_PATH)/src
16ARMNN_SOURCE_HEADER_PATH := $(LOCAL_PATH)/src/armnn
17ARMNN_SOURCE_UTILS_HEADER_PATH := $(LOCAL_PATH)/src/armnnUtils
18ARMNN_BACKENDS_HEADER_PATH := $(LOCAL_PATH)/src/backends
19ARMNN_PROFILING_HEADER_PATH := $(LOCAL_PATH)/src/profiling
20
21# find the common.mk and backend.mk files in the backend source folders
22ARMNN_BACKEND_COMMON_MAKEFILE_LOCAL_PATHS := $(wildcard $(LOCAL_PATH)/src/backends/*/common.mk)
23ARMNN_BACKEND_COMMON_MAKEFILE_PATHS := $(subst $(LOCAL_PATH),,$(ARMNN_BACKEND_COMMON_MAKEFILE_LOCAL_PATHS))
24ARMNN_BACKEND_COMMON_MAKEFILE_DIRS := $(subst /common.mk,,$(ARMNN_BACKEND_COMMON_MAKEFILE_PATHS))
25
26ARMNN_BACKEND_MAKEFILE_LOCAL_PATHS := $(wildcard $(LOCAL_PATH)/src/backends/*/backend.mk)
27ARMNN_BACKEND_MAKEFILE_PATHS := $(subst $(LOCAL_PATH),,$(ARMNN_BACKEND_MAKEFILE_LOCAL_PATHS))
28ARMNN_BACKEND_MAKEFILE_DIRS := $(subst /backend.mk,,$(ARMNN_BACKEND_MAKEFILE_PATHS))
29
30##############
31# libarmnn.a #
32##############
33include $(CLEAR_VARS)
34
35LOCAL_MODULE := libarmnn
36LOCAL_LICENSE_KINDS := SPDX-license-identifier-BSD SPDX-license-identifier-BSL-1.0 SPDX-license-identifier-MIT SPDX-license-identifier-PSF-2.0 legacy_unencumbered
37LOCAL_LICENSE_CONDITIONS := notice unencumbered
38LOCAL_NOTICE_FILE := $(LOCAL_PATH)/LICENSE
39Q_OR_LATER := 1
40CPP_VERSION := c++17
41ifeq ($(Q_OR_LATER),1)
42# "eng" is deprecated in Android Q
43LOCAL_MODULE_TAGS := optional
44else
45LOCAL_MODULE_TAGS := eng optional
46endif
47LOCAL_ARM_MODE := arm
48LOCAL_PROPRIETARY_MODULE := true
49
50# placeholder to hold all backend source files, common and specific to the backends
51ARMNN_BACKEND_SOURCES :=
52
53#
54# iterate through the backend common and specific include paths, include them into the
55# current makefile and append the sources held by the COMMON_SOURCES and BACKEND_SOURCES variable
56# (included from the given makefile) to the ARMNN_BACKEND_SOURCES list
57#
58$(foreach mkPath,$(ARMNN_BACKEND_COMMON_MAKEFILE_DIRS),\
59        $(eval include $(LOCAL_PATH)/$(mkPath)/common.mk)\
60        $(eval ARMNN_BACKEND_SOURCES := $(ARMNN_BACKEND_SOURCES)\
61        $(patsubst %,$(mkPath)/%,$(COMMON_SOURCES))))
62
63$(foreach mkPath,$(ARMNN_BACKEND_MAKEFILE_DIRS),\
64        $(eval include $(LOCAL_PATH)/$(mkPath)/backend.mk)\
65        $(eval ARMNN_BACKEND_SOURCES := $(ARMNN_BACKEND_SOURCES)\
66        $(patsubst %,$(mkPath)/%,$(BACKEND_SOURCES))))
67
68# Mark source files as dependent on Android.mk and backend makefiles
69LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk \
70                                 $(ARMNN_BACKEND_MAKEFILE_LOCAL_PATHS)
71
72LOCAL_EXPORT_C_INCLUDES := \
73        $(ARMNN_MAIN_HEADER_PATH) \
74        $(ARMNN_SOURCE_HEADER_PATH) \
75        $(ARMNN_PROFILING_INCLUDE_PATH) \
76        $(ARMNN_PROFILING_COMMON_INCLUDE_PATH) \
77        $(ARMNN_TIMELINE_DECODER_INCLUDE_PATH) \
78        $(ARMNN_THIRD_PARTY_INCLUDE_PATH) \
79        $(ARMNN_SOURCE_UTILS_HEADER_PATH) \
80        $(ARMNN_PROFILING_HEADER_PATH) \
81        $(ARMNN_BACKENDS_HEADER_PATH)
82
83LOCAL_C_INCLUDES := \
84        $(OPENCL_HEADER_PATH) \
85        $(NN_HEADER_PATH) \
86        $(ARMNN_HEADER_PATH) \
87        $(ARMNN_PROFILING_INCLUDE_PATH) \
88        $(ARMNN_PROFILING_COMMON_INCLUDE_PATH) \
89        $(ARMNN_TIMELINE_DECODER_INCLUDE_PATH) \
90        $(ARMNN_THIRD_PARTY_INCLUDE_PATH) \
91        $(ARMNN_MAIN_HEADER_PATH) \
92        $(ARMNN_SOURCE_HEADER_PATH) \
93        $(ARMNN_SOURCE_UTILS_HEADER_PATH) \
94        $(ARMNN_PROFILING_HEADER_PATH) \
95        $(ARMNN_BACKENDS_HEADER_PATH)
96
97LOCAL_SRC_FILES := \
98        $(ARMNN_BACKEND_SOURCES) \
99        profiling/common/src/CommandHandlerFunctor.cpp \
100        profiling/common/src/CommandHandlerKey.cpp \
101        profiling/common/src/CommandHandlerRegistry.cpp \
102        profiling/common/src/CommonProfilingUtils.cpp \
103        profiling/common/src/NetworkSockets.cpp \
104        profiling/common/src/PacketVersionResolver.cpp \
105        profiling/common/src/SwTrace.cpp \
106        profiling/server/src/timelineDecoder/TimelineCaptureCommandHandler.cpp \
107        profiling/server/src/timelineDecoder/TimelineDecoder.cpp \
108        profiling/server/src/timelineDecoder/TimelineDirectoryCaptureCommandHandler.cpp \
109        src/armnn/BackendHelper.cpp \
110        src/armnn/BackendRegistry.cpp \
111        src/armnn/Descriptors.cpp \
112        src/armnn/Exceptions.cpp \
113        src/armnn/Graph.cpp \
114        src/armnn/InternalTypes.cpp \
115        src/armnn/JsonPrinter.cpp \
116        src/armnn/Layer.cpp \
117        src/armnn/LayerSupport.cpp \
118        src/armnn/LoadedNetwork.cpp \
119        src/armnn/Logging.cpp \
120        src/armnn/Network.cpp \
121        src/armnn/NetworkUtils.cpp \
122        src/armnn/Observable.cpp \
123        src/armnn/Optimizer.cpp \
124        src/armnn/OutputHandler.cpp \
125        src/armnn/ProfilingEvent.cpp \
126        src/armnn/Profiling.cpp \
127        src/armnn/Runtime.cpp \
128        src/armnn/SerializeLayerParameters.cpp \
129        src/armnn/SubgraphView.cpp \
130        src/armnn/SubgraphViewSelector.cpp \
131        src/armnn/Tensor.cpp \
132        src/armnn/TypesUtils.cpp \
133        src/armnn/Utils.cpp \
134        src/armnn/WallClockTimer.cpp \
135        src/armnnUtils/DataLayoutIndexed.cpp \
136        src/armnnUtils/DotSerializer.cpp \
137        src/armnnUtils/FloatingPointConverter.cpp \
138        src/armnnUtils/HeapProfiling.cpp \
139        src/armnnUtils/LeakChecking.cpp \
140        src/armnnUtils/ParserHelper.cpp \
141        src/armnnUtils/Permute.cpp \
142        src/armnnUtils/TensorUtils.cpp \
143        src/armnnUtils/VerificationHelpers.cpp \
144        src/armnnUtils/Filesystem.cpp \
145        src/armnnUtils/Processes.cpp \
146        src/armnnUtils/Threads.cpp \
147        src/armnnUtils/Transpose.cpp \
148        src/armnn/layers/ActivationLayer.cpp \
149        src/armnn/layers/AdditionLayer.cpp \
150        src/armnn/layers/ArgMinMaxLayer.cpp \
151        src/armnn/layers/BatchNormalizationLayer.cpp \
152        src/armnn/layers/BatchToSpaceNdLayer.cpp \
153        src/armnn/layers/ComparisonLayer.cpp \
154        src/armnn/layers/ConcatLayer.cpp \
155        src/armnn/layers/ConstantLayer.cpp \
156        src/armnn/layers/Convolution2dLayer.cpp \
157        src/armnn/layers/ConvertBf16ToFp32Layer.cpp \
158        src/armnn/layers/ConvertFp16ToFp32Layer.cpp \
159        src/armnn/layers/ConvertFp32ToBf16Layer.cpp \
160        src/armnn/layers/ConvertFp32ToFp16Layer.cpp \
161        src/armnn/layers/DebugLayer.cpp \
162        src/armnn/layers/DepthToSpaceLayer.cpp \
163        src/armnn/layers/DepthwiseConvolution2dLayer.cpp \
164        src/armnn/layers/DequantizeLayer.cpp \
165        src/armnn/layers/DetectionPostProcessLayer.cpp \
166        src/armnn/layers/DivisionLayer.cpp \
167        src/armnn/layers/ElementwiseBaseLayer.cpp \
168        src/armnn/layers/ElementwiseUnaryLayer.cpp \
169        src/armnn/layers/FakeQuantizationLayer.cpp \
170        src/armnn/layers/FillLayer.cpp \
171        src/armnn/layers/FloorLayer.cpp \
172        src/armnn/layers/FullyConnectedLayer.cpp \
173        src/armnn/layers/GatherLayer.cpp \
174        src/armnn/layers/InputLayer.cpp \
175        src/armnn/layers/InstanceNormalizationLayer.cpp \
176        src/armnn/layers/L2NormalizationLayer.cpp \
177        src/armnn/layers/LogicalBinaryLayer.cpp \
178        src/armnn/layers/LogSoftmaxLayer.cpp \
179        src/armnn/layers/LstmLayer.cpp \
180        src/armnn/layers/MapLayer.cpp \
181        src/armnn/layers/MaximumLayer.cpp \
182        src/armnn/layers/MeanLayer.cpp \
183        src/armnn/layers/MemCopyLayer.cpp \
184        src/armnn/layers/MemImportLayer.cpp \
185        src/armnn/layers/MergeLayer.cpp \
186        src/armnn/layers/MinimumLayer.cpp \
187        src/armnn/layers/MultiplicationLayer.cpp \
188        src/armnn/layers/NormalizationLayer.cpp \
189        src/armnn/layers/OutputLayer.cpp \
190        src/armnn/layers/PadLayer.cpp \
191        src/armnn/layers/PermuteLayer.cpp \
192        src/armnn/layers/Pooling2dLayer.cpp \
193        src/armnn/layers/PreCompiledLayer.cpp \
194        src/armnn/layers/PreluLayer.cpp \
195        src/armnn/layers/QLstmLayer.cpp \
196        src/armnn/layers/QuantizeLayer.cpp \
197        src/armnn/layers/QuantizedLstmLayer.cpp \
198        src/armnn/layers/RankLayer.cpp \
199        src/armnn/layers/ReshapeLayer.cpp \
200        src/armnn/layers/ResizeLayer.cpp \
201        src/armnn/layers/SliceLayer.cpp \
202        src/armnn/layers/SoftmaxLayer.cpp \
203        src/armnn/layers/SpaceToBatchNdLayer.cpp \
204        src/armnn/layers/SpaceToDepthLayer.cpp \
205        src/armnn/layers/SplitterLayer.cpp \
206        src/armnn/layers/StackLayer.cpp \
207        src/armnn/layers/StandInLayer.cpp \
208        src/armnn/layers/StridedSliceLayer.cpp \
209        src/armnn/layers/SubtractionLayer.cpp \
210        src/armnn/layers/SwitchLayer.cpp \
211        src/armnn/layers/TransposeConvolution2dLayer.cpp \
212        src/armnn/layers/TransposeLayer.cpp \
213        src/armnn/layers/UnmapLayer.cpp \
214        src/profiling/ActivateTimelineReportingCommandHandler.cpp \
215        src/profiling/BufferManager.cpp \
216        src/profiling/CommandHandler.cpp \
217        src/profiling/ConnectionAcknowledgedCommandHandler.cpp \
218        src/profiling/CounterDirectory.cpp \
219        src/profiling/CounterIdMap.cpp \
220        src/profiling/DeactivateTimelineReportingCommandHandler.cpp \
221        src/profiling/DirectoryCaptureCommandHandler.cpp \
222        src/profiling/FileOnlyProfilingConnection.cpp \
223        src/profiling/Holder.cpp \
224        src/profiling/LabelsAndEventClasses.cpp \
225        src/profiling/PacketBuffer.cpp \
226        src/profiling/PeriodicCounterCapture.cpp \
227        src/profiling/PeriodicCounterSelectionCommandHandler.cpp \
228        src/profiling/PerJobCounterSelectionCommandHandler.cpp \
229        src/profiling/ProfilingConnectionDumpToFileDecorator.cpp \
230        src/profiling/ProfilingConnectionFactory.cpp \
231        src/profiling/ProfilingService.cpp \
232        src/profiling/ProfilingStateMachine.cpp \
233        src/profiling/ProfilingUtils.cpp \
234        src/profiling/RegisterBackendCounters.cpp \
235        src/profiling/RequestCounterDirectoryCommandHandler.cpp \
236        src/profiling/SendCounterPacket.cpp \
237        src/profiling/SendThread.cpp \
238        src/profiling/SendTimelinePacket.cpp \
239        src/profiling/SocketProfilingConnection.cpp \
240        src/profiling/TimelinePacketWriterFactory.cpp \
241        src/profiling/TimelineUtilityMethods.cpp \
242        src/profiling/backends/BackendProfiling.cpp
243
244LOCAL_STATIC_LIBRARIES := \
245        arm_compute_library
246
247LOCAL_SHARED_LIBRARIES := \
248        liblog
249
250LOCAL_CFLAGS := \
251        -std=$(CPP_VERSION) \
252        -fexceptions \
253        -Wno-unused-parameter \
254        -frtti \
255        -DFMT_HEADER_ONLY \
256        -Wno-ignored-qualifiers \
257        -Wno-macro-redefined \
258        -Wno-unreachable-code-loop-increment
259
260# The variable to enable/disable the CL backend (ARMNN_COMPUTE_CL_ENABLED) is declared in android-nn-driver/Android.mk
261ifeq ($(ARMNN_COMPUTE_CL_ENABLED),1)
262LOCAL_CFLAGS += \
263        -DARMCOMPUTECL_ENABLED
264endif # ARMNN_COMPUTE_CL_ENABLED == 1
265# The variable to enable/disable the NEON backend (ARMNN_COMPUTE_NEON_ENABLED) is declared in android-nn-driver/Android.mk
266ifeq ($(ARMNN_COMPUTE_NEON_ENABLED),1)
267LOCAL_CFLAGS += \
268        -DARMCOMPUTENEON_ENABLED
269endif # ARMNN_COMPUTE_NEON_ENABLED == 1
270# The variable to enable/disable the REFERENCE backend (ARMNN_REF_ENABLED) is declared in android-nn-driver/Android.mk
271ifeq ($(ARMNN_REF_ENABLED),1)
272LOCAL_CFLAGS += \
273        -DARMNNREF_ENABLED
274endif # ARMNN_REF_ENABLED == 1
275
276ifeq ($(Q_OR_LATER),1)
277LOCAL_CFLAGS += \
278        -DARMNN_MIXED_PRECISION_FP16_POOLING
279endif # PLATFORM_VERSION == Q or later
280
281include $(BUILD_STATIC_LIBRARY)
282
283###############
284# armnn-tests #
285###############
286include $(CLEAR_VARS)
287
288#For in-tree android build, disable building tests as the boost dependency (only used in test)
289#is not present.
290BUILD_TESTS := 0
291ifeq ($(BUILD_TESTS),1)
292
293LOCAL_MODULE := armnn-tests
294LOCAL_LICENSE_KINDS := SPDX-license-identifier-BSD SPDX-license-identifier-BSL-1.0 SPDX-license-identifier-MIT SPDX-license-identifier-PSF-2.0 legacy_unencumbered
295LOCAL_LICENSE_CONDITIONS := notice unencumbered
296LOCAL_NOTICE_FILE := $(LOCAL_PATH)/LICENSE
297ifeq ($(Q_OR_LATER),1)
298# "eng" is deprecated in Android Q
299LOCAL_MODULE_TAGS := optional
300else
301LOCAL_MODULE_TAGS := eng optional
302endif
303LOCAL_ARM_MODE := arm
304LOCAL_PROPRIETARY_MODULE := true
305
306# placeholder to hold all backend unit test source files
307ARMNN_BACKEND_TEST_SOURCES :=
308
309#
310# iterate through the backend common and specific include paths, include them into the current
311# makefile and append the sources held by the COMMON_TEST_SOURCES and BACKEND_TEST_SOURCES
312# (included from the given makefile) to the ARMNN_BACKEND_TEST_SOURCES list
313#
314$(foreach mkPath,$(ARMNN_BACKEND_COMMON_MAKEFILE_DIRS), \
315        $(eval include $(LOCAL_PATH)/$(mkPath)/common.mk) \
316        $(eval ARMNN_BACKEND_TEST_SOURCES := $(ARMNN_BACKEND_TEST_SOURCES) \
317        $(patsubst %,$(mkPath)/%,$(COMMON_TEST_SOURCES))))
318
319$(foreach mkPath,$(ARMNN_BACKEND_MAKEFILE_DIRS), \
320        $(eval include $(LOCAL_PATH)/$(mkPath)/backend.mk) \
321        $(eval ARMNN_BACKEND_TEST_SOURCES := $(ARMNN_BACKEND_TEST_SOURCES) \
322        $(patsubst %,$(mkPath)/%,$(BACKEND_TEST_SOURCES))))
323
324# Mark source files as dependent on Android.mk
325LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
326
327LOCAL_C_INCLUDES := \
328        $(OPENCL_HEADER_PATH) \
329        $(NN_HEADER_PATH) \
330        $(ARMNN_HEADER_PATH) \
331        $(ARMNN_PROFILING_INCLUDE_PATH) \
332        $(ARMNN_PROFILING_COMMON_INCLUDE_PATH) \
333        $(ARMNN_TIMELINE_DECODER_INCLUDE_PATH) \
334        $(ARMNN_THIRD_PARTY_INCLUDE_PATH) \
335        $(ARMNN_MAIN_HEADER_PATH) \
336        $(ARMNN_SOURCE_HEADER_PATH) \
337        $(ARMNN_SOURCE_UTILS_HEADER_PATH) \
338        $(ARMNN_PROFILING_HEADER_PATH) \
339        $(ARMNN_BACKENDS_HEADER_PATH)
340
341# TODO (b/166133440) remove boost
342LOCAL_CFLAGS := \
343        -std=$(CPP_VERSION) \
344        -fexceptions \
345        -frtti \
346        -Wno-unused-local-typedef \
347        -Wno-unused-variable
348
349# The variable to enable/disable the CL backend (ARMNN_COMPUTE_CL_ENABLED) is declared in android-nn-driver/Android.mk
350ifeq ($(ARMNN_COMPUTE_CL_ENABLED),1)
351LOCAL_CFLAGS += \
352        -DARMCOMPUTECL_ENABLED
353endif # ARMNN_COMPUTE_CL_ENABLED == 1
354# The variable to enable/disable the NEON backend (ARMNN_COMPUTE_NEON_ENABLED) is declared in android-nn-driver/Android.mk
355ifeq ($(ARMNN_COMPUTE_NEON_ENABLED),1)
356LOCAL_CFLAGS += \
357        -DARMCOMPUTENEON_ENABLED
358endif # ARMNN_COMPUTE_NEON_ENABLED == 1
359# The variable to enable/disable the REFERENCE backend (ARMNN_REF_ENABLED) is declared in android-nn-driver/Android.mk
360ifeq ($(ARMNN_REF_ENABLED),1)
361LOCAL_CFLAGS += \
362        -DARMNNREF_ENABLED
363endif # ARMNN_REF_ENABLED == 1
364
365ifeq ($(Q_OR_LATER),1)
366LOCAL_CFLAGS += \
367        -DBOOST_NO_AUTO_PTR
368endif # PLATFORM_VERSION == Q or later
369
370LOCAL_SRC_FILES := \
371        $(ARMNN_BACKEND_TEST_SOURCES) \
372        src/armnn/test/ConstTensorLayerVisitor.cpp \
373        src/armnn/test/EndToEndTest.cpp \
374        src/armnn/ExecutionFrame.cpp \
375        src/armnn/test/ExecutionFrameTest.cpp \
376        src/armnn/test/FloatingPointConverterTest.cpp \
377        src/armnn/test/FlowControl.cpp \
378        src/armnn/test/GraphTests.cpp \
379        src/armnn/test/GraphUtils.cpp \
380        src/armnn/test/InferOutputTests.cpp \
381        src/armnn/test/InstrumentTests.cpp \
382        src/armnnUtils/ModelAccuracyChecker.cpp \
383        src/armnn/test/ModelAccuracyCheckerTest.cpp \
384        src/armnn/test/NetworkTests.cpp \
385        src/armnn/test/ObservableTest.cpp \
386        src/armnn/test/optimizations/ConvertConstantsBFloatTests.cpp \
387        src/armnn/test/optimizations/ConvertConstantsFloatToHalfTests.cpp \
388        src/armnn/test/optimizations/ConvertConstantsHalfToFloatTests.cpp \
389        src/armnn/test/optimizations/Fp32NetworkToBf16ConverterTests.cpp \
390        src/armnn/test/optimizations/Fp32NetworkToFp16ConverterTests.cpp \
391        src/armnn/test/optimizations/FuseActivationTests.cpp \
392        src/armnn/test/optimizations/InsertDebugLayerTests.cpp \
393        src/armnn/test/optimizations/MovePermuteUpTests.cpp \
394        src/armnn/test/optimizations/OptimizeConsecutiveReshapesTests.cpp \
395        src/armnn/test/optimizations/OptimizeInverseConversionsTests.cpp \
396        src/armnn/test/optimizations/OptimizeInversePermutesTests.cpp \
397        src/armnn/test/optimizations/PermuteAndBatchToSpaceAsDepthToSpaceTests.cpp \
398        src/armnn/test/optimizations/PermuteAsReshapeTests.cpp \
399        src/armnn/test/optimizations/SquashEqualSiblingsTests.cpp \
400        src/armnn/test/optimizations/TransposeAsReshapeTests.cpp \
401        src/armnn/test/OptimizerTests.cpp \
402        src/armnn/test/OptionalTest.cpp \
403        src/armnn/test/ProfilerTests.cpp \
404        src/armnn/test/ProfilingEventTest.cpp \
405        src/armnnUtils/PrototxtConversions.cpp \
406        src/armnnUtils/test/PrototxtConversionsTest.cpp \
407        src/armnn/test/SubgraphViewTests.cpp \
408        src/armnn/test/TensorHandleStrategyTest.cpp \
409        src/armnn/test/TensorTest.cpp \
410        src/armnn/test/TestInputOutputLayerVisitor.cpp \
411        src/armnn/test/TestLayerVisitor.cpp \
412        src/armnn/test/TestNameAndDescriptorLayerVisitor.cpp \
413        src/armnn/test/TestNameOnlyLayerVisitor.cpp \
414        src/armnn/test/TestUtils.cpp \
415        src/armnn/test/UnitTests.cpp \
416        src/armnn/test/UtilsTests.cpp \
417        src/armnnUtils/test/ParserHelperTest.cpp \
418        src/armnnUtils/test/QuantizeHelperTest.cpp \
419        src/armnnUtils/test/TensorUtilsTest.cpp \
420        src/profiling/test/BufferTests.cpp \
421        src/profiling/test/FileOnlyProfilingDecoratorTests.cpp \
422        src/profiling/test/PrintPacketHeaderHandler.cpp \
423        src/profiling/test/ProfilingConnectionDumpToFileDecoratorTests.cpp \
424        src/profiling/test/ProfilingGuidTest.cpp \
425        src/profiling/test/ProfilingTests.cpp \
426        src/profiling/test/ProfilingTestUtils.cpp \
427        src/profiling/test/SendCounterPacketTests.cpp \
428        src/profiling/test/SendTimelinePacketTests.cpp \
429        src/profiling/test/TestTimelinePacketHandler.cpp \
430        src/profiling/test/TimelineModel.cpp \
431        src/profiling/test/TimelinePacketTests.cpp \
432        src/profiling/test/TimelineUtilityMethodsTests.cpp
433
434ifeq ($(ARMNN_REF_ENABLED),1)
435LOCAL_SRC_FILES += \
436        src/armnn/test/DebugCallbackTest.cpp \
437        src/armnn/test/RuntimeTests.cpp
438endif
439
440LOCAL_STATIC_LIBRARIES := \
441        libneuralnetworks_common \
442        libboost_unit_test_framework \
443        arm_compute_library
444
445LOCAL_WHOLE_STATIC_LIBRARIES := libarmnn
446
447LOCAL_SHARED_LIBRARIES := \
448        libbase \
449        libhidlbase \
450        libhidltransport \
451        libhidlmemory \
452        liblog \
453        libutils \
454        android.hardware.neuralnetworks@1.0 \
455        android.hidl.allocator@1.0 \
456        android.hidl.memory@1.0
457
458ifeq ($(ARMNN_COMPUTE_CL_ENABLED),1)
459ifeq (,$(realpath $(TOPDIR)vendor/arm/mali/valhall/Android.bp))
460    LOCAL_SHARED_LIBRARIES += libGLES_mali
461else
462    LOCAL_SHARED_LIBRARIES += libOpenCL
463endif
464endif
465
466include $(BUILD_EXECUTABLE)
467endif
468