aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRenato Grottesi <otaner@google.com>2023-07-11 17:29:15 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2023-07-11 17:29:15 +0000
commitf07f03ab17b4a493ce9dfd5105460e625202dbbc (patch)
treeab56c6cf4cf97af680d620c18c89f03643f71a0b
parente853a8f9cfbf3d3dbd7aeaee4d3d2856b77fa4f7 (diff)
parentc96df6103b5127adedff1ecad2301d98dc3970ee (diff)
downloadarmnn-f07f03ab17b4a493ce9dfd5105460e625202dbbc.tar.gz
Revert "Compile ArmNN shim over the support library" am: bcd58b1c35 am: 9eb729581c am: fe3266f25b am: 05fdf4fe9a am: c96df6103b
Original change: https://android-review.googlesource.com/c/platform/external/armnn/+/2653622 Change-Id: I68e34296e31d98c53acf726cc9d8cf24a2567257 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
-rw-r--r--Android.bp373
-rw-r--r--Android.mk566
-rw-r--r--shim/Android.bp186
-rw-r--r--shim/Android.bp.off97
-rw-r--r--shim/config/android.hardware.neuralnetworks-shim-service-armnn.rc3
-rw-r--r--shim/config/android.hardware.neuralnetworks-shim-service-armnn.xml2
-rw-r--r--shim/shimservice.cpp2
-rwxr-xr-xshim/sl/build/android_arm/libarmnn_support_library_prebuilt.sobin25176608 -> 0 bytes
-rwxr-xr-xshim/sl/build/android_arm64/libarmnn_support_library_prebuilt.sobin31964448 -> 0 bytes
-rw-r--r--shim/sl/canonical/ArmnnDevice.cpp2
-rw-r--r--shim/sl/canonical/ArmnnDriverImpl.cpp7
-rw-r--r--shim/sl/canonical/ArmnnPreparedModel.cpp3
-rw-r--r--shim/sl/canonical/ConversionUtils.hpp8
-rw-r--r--shim/sl/canonical/DriverOptions.cpp11
-rwxr-xr-xshim/sl/generate_prebuilts.sh35
15 files changed, 682 insertions, 613 deletions
diff --git a/Android.bp b/Android.bp
index 5638cc433..8414eb516 100644
--- a/Android.bp
+++ b/Android.bp
@@ -1,375 +1,8 @@
//
-// Copyright © 2017-2023 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2017 ARM Ltd. All rights reserved.
// SPDX-License-Identifier: MIT
//
-////////////////////////////////////////////
-// //
-// libarmnn.a //
-// //
-////////////////////////////////////////////
+// Dummy Android.bp file to keep backward compatibility with previous
+// build systems/environments.
-COMMON_SOURCES = [
- "src/backends/backendsCommon/TensorHandle.cpp",
- "src/backends/backendsCommon/DynamicBackend.cpp",
- "src/backends/backendsCommon/DynamicBackendUtils.cpp",
- "src/backends/backendsCommon/IBackendInternal.cpp",
- "src/backends/backendsCommon/ITensorHandleFactory.cpp",
- "src/backends/backendsCommon/LayerSupportBase.cpp",
- "src/backends/backendsCommon/MapWorkload.cpp",
- "src/backends/backendsCommon/MemCopyWorkload.cpp",
- "src/backends/backendsCommon/MemImportWorkload.cpp",
- "src/backends/backendsCommon/MemoryManager.cpp",
- "src/backends/backendsCommon/MemSyncWorkload.cpp",
- "src/backends/backendsCommon/OptimizationViews.cpp",
- "src/backends/backendsCommon/TensorHandleFactoryRegistry.cpp",
- "src/backends/backendsCommon/UnmapWorkload.cpp",
- "src/backends/backendsCommon/WorkloadData.cpp",
- "src/backends/backendsCommon/WorkloadFactory.cpp",
- "src/backends/backendsCommon/WorkloadUtils.cpp",
- "src/backends/backendsCommon/memoryOptimizerStrategyLibrary/strategies/ConstantMemoryStrategy.cpp",
- "src/backends/backendsCommon/memoryOptimizerStrategyLibrary/strategies/SingleAxisPriorityList.cpp",
- "src/backends/backendsCommon/memoryOptimizerStrategyLibrary/strategies/StrategyValidator.cpp",
- "src/backends/aclCommon/ArmComputeTensorUtils.cpp",
- "src/backends/aclCommon/BaseMemoryManager.cpp",
-]
-
-ARMNN_SOURCES = [
- "profiling/common/src/CommandHandlerFunctor.cpp",
- "profiling/common/src/CommandHandlerKey.cpp",
- "profiling/common/src/CommandHandlerRegistry.cpp",
- "profiling/common/src/CommonProfilingUtils.cpp",
- "profiling/common/src/CounterDirectory.cpp",
- "profiling/common/src/LabelsAndEventClasses.cpp",
- "profiling/common/src/Logging.cpp",
- "profiling/common/src/NetworkSockets.cpp",
- "profiling/common/src/PacketVersionResolver.cpp",
- "profiling/common/src/Processes.cpp",
- "profiling/common/src/SwTrace.cpp",
- "profiling/common/src/Threads.cpp",
- "profiling/client/src/ActivateTimelineReportingCommandHandler.cpp",
- "profiling/client/src/BufferManager.cpp",
- "profiling/client/src/CommandHandler.cpp",
- "profiling/client/src/ConnectionAcknowledgedCommandHandler.cpp",
- "profiling/client/src/CounterIdMap.cpp",
- "profiling/client/src/DeactivateTimelineReportingCommandHandler.cpp",
- "profiling/client/src/FileOnlyProfilingConnection.cpp",
- "profiling/client/src/Holder.cpp",
- "profiling/client/src/IProfilingService.cpp",
- "profiling/client/src/PacketBuffer.cpp",
- "profiling/client/src/PeriodicCounterCapture.cpp",
- "profiling/client/src/PeriodicCounterSelectionCommandHandler.cpp",
- "profiling/client/src/PerJobCounterSelectionCommandHandler.cpp",
- "profiling/client/src/ProfilingConnectionDumpToFileDecorator.cpp",
- "profiling/client/src/ProfilingConnectionFactory.cpp",
- "profiling/client/src/ProfilingService.cpp",
- "profiling/client/src/ProfilingStateMachine.cpp",
- "profiling/client/src/ProfilingUtils.cpp",
- "profiling/client/src/RegisterBackendCounters.cpp",
- "profiling/client/src/RequestCounterDirectoryCommandHandler.cpp",
- "profiling/client/src/SendCounterPacket.cpp",
- "profiling/client/src/SendThread.cpp",
- "profiling/client/src/SendTimelinePacket.cpp",
- "profiling/client/src/SocketProfilingConnection.cpp",
- "profiling/client/src/TimelinePacketWriterFactory.cpp",
- "profiling/client/src/TimelineUtilityMethods.cpp",
- "profiling/client/src/backends/BackendProfiling.cpp",
- "profiling/client/src/backends/IBackendProfiling.cpp",
- "profiling/server/src/timelineDecoder/DirectoryCaptureCommandHandler.cpp",
- "profiling/server/src/timelineDecoder/TimelineCaptureCommandHandler.cpp",
- "profiling/server/src/timelineDecoder/TimelineDecoder.cpp",
- "profiling/server/src/timelineDecoder/TimelineDirectoryCaptureCommandHandler.cpp",
- "src/armnn/ArmNNProfilingServiceInitialiser.cpp",
- "src/armnn/BackendHelper.cpp",
- "src/armnn/BackendRegistry.cpp",
- "src/armnn/Descriptors.cpp",
- "src/armnn/Exceptions.cpp",
- "src/armnn/Graph.cpp",
- "src/armnn/ILayerSupport.cpp",
- "src/armnn/InternalTypes.cpp",
- "src/armnn/JsonPrinter.cpp",
- "src/armnn/Layer.cpp",
- "src/armnn/LoadedNetwork.cpp",
- "src/armnn/Logging.cpp",
- "src/armnn/Network.cpp",
- "src/armnn/NetworkUtils.cpp",
- "src/armnn/Observable.cpp",
- "src/armnn/Optimizer.cpp",
- "src/armnn/OutputHandler.cpp",
- "src/armnn/ProfilingEvent.cpp",
- "src/armnn/Profiling.cpp",
- "src/armnn/Runtime.cpp",
- "src/armnn/SerializeLayerParameters.cpp",
- "src/armnn/SubgraphView.cpp",
- "src/armnn/SubgraphViewSelector.cpp",
- "src/armnn/Tensor.cpp",
- "src/armnn/Threadpool.cpp",
- "src/armnn/TypesUtils.cpp",
- "src/armnn/Utils.cpp",
- "src/armnn/WallClockTimer.cpp",
- "src/armnn/WorkingMemHandle.cpp",
- "src/armnnUtils/CompatibleTypes.cpp",
- "src/armnnUtils/DataLayoutIndexed.cpp",
- "src/armnnUtils/DotSerializer.cpp",
- "src/armnnUtils/FloatingPointConverter.cpp",
- "src/armnnUtils/HeapProfiling.cpp",
- "src/armnnUtils/LeakChecking.cpp",
- "src/armnnUtils/ParserHelper.cpp",
- "src/armnnUtils/Permute.cpp",
- "src/armnnUtils/TensorUtils.cpp",
- "src/armnnUtils/VerificationHelpers.cpp",
- "src/armnnUtils/Filesystem.cpp",
- "src/armnnUtils/ProfilingOptionsConverter.cpp",
- "src/armnnUtils/Transpose.cpp",
- "src/armnn/layers/ActivationLayer.cpp",
- "src/armnn/layers/AdditionLayer.cpp",
- "src/armnn/layers/ArgMinMaxLayer.cpp",
- "src/armnn/layers/BatchMatMulLayer.cpp",
- "src/armnn/layers/BatchNormalizationLayer.cpp",
- "src/armnn/layers/BatchToSpaceNdLayer.cpp",
- "src/armnn/layers/CastLayer.cpp",
- "src/armnn/layers/ChannelShuffleLayer.cpp",
- "src/armnn/layers/ComparisonLayer.cpp",
- "src/armnn/layers/ConcatLayer.cpp",
- "src/armnn/layers/ConstantLayer.cpp",
- "src/armnn/layers/Convolution2dLayer.cpp",
- "src/armnn/layers/Convolution3dLayer.cpp",
- "src/armnn/layers/ConvertFp16ToFp32Layer.cpp",
- "src/armnn/layers/ConvertFp32ToFp16Layer.cpp",
- "src/armnn/layers/DebugLayer.cpp",
- "src/armnn/layers/DepthToSpaceLayer.cpp",
- "src/armnn/layers/DepthwiseConvolution2dLayer.cpp",
- "src/armnn/layers/DequantizeLayer.cpp",
- "src/armnn/layers/DetectionPostProcessLayer.cpp",
- "src/armnn/layers/DivisionLayer.cpp",
- "src/armnn/layers/ElementwiseBaseLayer.cpp",
- "src/armnn/layers/ElementwiseBinaryLayer.cpp",
- "src/armnn/layers/ElementwiseUnaryLayer.cpp",
- "src/armnn/layers/FakeQuantizationLayer.cpp",
- "src/armnn/layers/FillLayer.cpp",
- "src/armnn/layers/FloorLayer.cpp",
- "src/armnn/layers/FullyConnectedLayer.cpp",
- "src/armnn/layers/GatherLayer.cpp",
- "src/armnn/layers/GatherNdLayer.cpp",
- "src/armnn/layers/InputLayer.cpp",
- "src/armnn/layers/InstanceNormalizationLayer.cpp",
- "src/armnn/layers/L2NormalizationLayer.cpp",
- "src/armnn/layers/LogicalBinaryLayer.cpp",
- "src/armnn/layers/LogSoftmaxLayer.cpp",
- "src/armnn/layers/LstmLayer.cpp",
- "src/armnn/layers/MapLayer.cpp",
- "src/armnn/layers/MaximumLayer.cpp",
- "src/armnn/layers/MeanLayer.cpp",
- "src/armnn/layers/MemCopyLayer.cpp",
- "src/armnn/layers/MemImportLayer.cpp",
- "src/armnn/layers/MergeLayer.cpp",
- "src/armnn/layers/MinimumLayer.cpp",
- "src/armnn/layers/MultiplicationLayer.cpp",
- "src/armnn/layers/NormalizationLayer.cpp",
- "src/armnn/layers/OutputLayer.cpp",
- "src/armnn/layers/PadLayer.cpp",
- "src/armnn/layers/PermuteLayer.cpp",
- "src/armnn/layers/Pooling2dLayer.cpp",
- "src/armnn/layers/Pooling3dLayer.cpp",
- "src/armnn/layers/PreCompiledLayer.cpp",
- "src/armnn/layers/PreluLayer.cpp",
- "src/armnn/layers/QLstmLayer.cpp",
- "src/armnn/layers/QuantizeLayer.cpp",
- "src/armnn/layers/QuantizedLstmLayer.cpp",
- "src/armnn/layers/RankLayer.cpp",
- "src/armnn/layers/ReduceLayer.cpp",
- "src/armnn/layers/ReshapeLayer.cpp",
- "src/armnn/layers/ResizeLayer.cpp",
- "src/armnn/layers/ShapeLayer.cpp",
- "src/armnn/layers/SliceLayer.cpp",
- "src/armnn/layers/SoftmaxLayer.cpp",
- "src/armnn/layers/SpaceToBatchNdLayer.cpp",
- "src/armnn/layers/SpaceToDepthLayer.cpp",
- "src/armnn/layers/SplitterLayer.cpp",
- "src/armnn/layers/StackLayer.cpp",
- "src/armnn/layers/StandInLayer.cpp",
- "src/armnn/layers/StridedSliceLayer.cpp",
- "src/armnn/layers/SubtractionLayer.cpp",
- "src/armnn/layers/SwitchLayer.cpp",
- "src/armnn/layers/TransposeConvolution2dLayer.cpp",
- "src/armnn/layers/TransposeLayer.cpp",
- "src/armnn/layers/UnidirectionalSequenceLstmLayer.cpp",
- "src/armnn/layers/UnmapLayer.cpp",
- "src/armnnSerializer/Serializer.cpp",
- "src/armnnSerializer/SerializerUtils.cpp",
- "src/armnnDeserializer/Deserializer.cpp",
-]
-
-GPU_BACKEND_SOURCES = [
- "src/backends/aclCommon/ArmComputeTuningUtils.cpp",
- "src/backends/cl/ClBackend.cpp",
- "src/backends/cl/ClBackendContext.cpp",
- "src/backends/cl/ClBackendModelContext.cpp",
- "src/backends/cl/ClContextControl.cpp",
- "src/backends/cl/ClContextDeserializer.cpp",
- "src/backends/cl/ClContextSerializer.cpp",
- "src/backends/cl/ClImportTensorHandleFactory.cpp",
- "src/backends/cl/ClLayerSupport.cpp",
- "src/backends/cl/ClRegistryInitializer.cpp",
- "src/backends/cl/ClTensorHandleFactory.cpp",
- "src/backends/cl/ClWorkloadFactory.cpp",
- "src/backends/cl/OpenClTimer.cpp",
- "src/backends/cl/workloads/ClAbsWorkload.cpp",
- "src/backends/cl/workloads/ClActivationWorkload.cpp",
- "src/backends/cl/workloads/ClAdditionWorkload.cpp",
- "src/backends/cl/workloads/ClArgMinMaxWorkload.cpp",
- "src/backends/cl/workloads/ClBatchMatMulWorkload.cpp",
- "src/backends/cl/workloads/ClBatchNormalizationFloatWorkload.cpp",
- "src/backends/cl/workloads/ClBatchToSpaceNdWorkload.cpp",
- "src/backends/cl/workloads/ClCastWorkload.cpp",
- "src/backends/cl/workloads/ClChannelShuffleWorkload.cpp",
- "src/backends/cl/workloads/ClComparisonWorkload.cpp",
- "src/backends/cl/workloads/ClConcatWorkload.cpp",
- "src/backends/cl/workloads/ClConstantWorkload.cpp",
- "src/backends/cl/workloads/ClConvertFp16ToFp32Workload.cpp",
- "src/backends/cl/workloads/ClConvertFp32ToFp16Workload.cpp",
- "src/backends/cl/workloads/ClConvolution2dWorkload.cpp",
- "src/backends/cl/workloads/ClConvolution3dWorkload.cpp",
- "src/backends/cl/workloads/ClDepthToSpaceWorkload.cpp",
- "src/backends/cl/workloads/ClDepthwiseConvolutionWorkload.cpp",
- "src/backends/cl/workloads/ClDequantizeWorkload.cpp",
- "src/backends/cl/workloads/ClDivisionWorkload.cpp",
- "src/backends/cl/workloads/ClExpWorkload.cpp",
- "src/backends/cl/workloads/ClFillWorkload.cpp",
- "src/backends/cl/workloads/ClFloorFloatWorkload.cpp",
- "src/backends/cl/workloads/ClFullyConnectedWorkload.cpp",
- "src/backends/cl/workloads/ClGatherWorkload.cpp",
- "src/backends/cl/workloads/ClGatherNdWorkload.cpp",
- "src/backends/cl/workloads/ClInstanceNormalizationWorkload.cpp",
- "src/backends/cl/workloads/ClL2NormalizationFloatWorkload.cpp",
- "src/backends/cl/workloads/ClLogWorkload.cpp",
- "src/backends/cl/workloads/ClLogicalAndWorkload.cpp",
- "src/backends/cl/workloads/ClLogicalNotWorkload.cpp",
- "src/backends/cl/workloads/ClLogicalOrWorkload.cpp",
- "src/backends/cl/workloads/ClLogSoftmaxWorkload.cpp",
- "src/backends/cl/workloads/ClLstmFloatWorkload.cpp",
- "src/backends/cl/workloads/ClMaximumWorkload.cpp",
- "src/backends/cl/workloads/ClMeanWorkload.cpp",
- "src/backends/cl/workloads/ClMinimumWorkload.cpp",
- "src/backends/cl/workloads/ClMultiplicationWorkload.cpp",
- "src/backends/cl/workloads/ClNegWorkload.cpp",
- "src/backends/cl/workloads/ClNormalizationFloatWorkload.cpp",
- "src/backends/cl/workloads/ClPadWorkload.cpp",
- "src/backends/cl/workloads/ClPermuteWorkload.cpp",
- "src/backends/cl/workloads/ClPooling2dWorkload.cpp",
- "src/backends/cl/workloads/ClPooling3dWorkload.cpp",
- "src/backends/cl/workloads/ClPreluWorkload.cpp",
- "src/backends/cl/workloads/ClQLstmWorkload.cpp",
- "src/backends/cl/workloads/ClQuantizedLstmWorkload.cpp",
- "src/backends/cl/workloads/ClQuantizeWorkload.cpp",
- "src/backends/cl/workloads/ClReduceWorkload.cpp",
- "src/backends/cl/workloads/ClReshapeWorkload.cpp",
- "src/backends/cl/workloads/ClResizeWorkload.cpp",
- "src/backends/cl/workloads/ClRsqrtWorkload.cpp",
- "src/backends/cl/workloads/ClSinWorkload.cpp",
- "src/backends/cl/workloads/ClSliceWorkload.cpp",
- "src/backends/cl/workloads/ClSoftmaxWorkload.cpp",
- "src/backends/cl/workloads/ClSpaceToBatchNdWorkload.cpp",
- "src/backends/cl/workloads/ClSpaceToDepthWorkload.cpp",
- "src/backends/cl/workloads/ClSplitterWorkload.cpp",
- "src/backends/cl/workloads/ClSqrtWorkload.cpp",
- "src/backends/cl/workloads/ClStackWorkload.cpp",
- "src/backends/cl/workloads/ClStridedSliceWorkload.cpp",
- "src/backends/cl/workloads/ClSubtractionWorkload.cpp",
- "src/backends/cl/workloads/ClTransposeConvolution2dWorkload.cpp",
- "src/backends/cl/workloads/ClTransposeWorkload.cpp",
- "src/backends/cl/workloads/ClUnidirectionalSequenceLstmFloatWorkload.cpp",
-]
-
-ARMNN_CFLAGS = [
- "-std=c++17",
- "-fexceptions",
- "-Wno-unused-parameter",
- "-DFMT_HEADER_ONLY",
- "-Wno-ignored-qualifiers",
- "-Wno-macro-redefined",
- "-Wno-unreachable-code-loop-increment",
- "-DARMCOMPUTECL_ENABLED", // TODO: ifeq ($(ARMNN_COMPUTE_CL_ENABLED),1)
- "-DARMNN_MIXED_PRECISION_FP16_POOLING",
-]
-
-package {
- // See: http://go/android-license-faq
- default_applicable_licenses: [
- "external_armnn_license",
- ],
-}
-
-license {
- name: "external_armnn_license",
- visibility: [":__subpackages__"],
- license_kinds: [
- "SPDX-license-identifier-BSD",
- "SPDX-license-identifier-BSL-1.0",
- "SPDX-license-identifier-MIT",
- "SPDX-license-identifier-PSF-2.0",
- "legacy_unencumbered",
- ],
- license_text: [
- "LICENSE",
- ],
-}
-
-// cc_library_shared {
-cc_library_static {
- name: "libarmnn",
- rtti: true,
-
- enabled : false,
- arch: {
- arm: {
- enabled : true,
- },
- arm64: {
- enabled : true,
- },
- },
-
- defaults: [
- "neuralnetworks_cl_defaults",
- ],
-
- local_include_dirs: [
- "generated",
- "profiling",
- "profiling/common/include",
- "profiling/client/include",
- "include",
- "src/timelineDecoder",
- "third-party",
- "src",
- "src/armnn",
- "src/armnnUtils",
- "src/profiling",
- "src/backends",
- "src/armnnSerializer",
- "src/armnnDeserializer",
- ],
-
- include_dirs: [
- "external/ComputeLibrary",
- ],
-
- static_libs: [
- "libflatbuffers-cpp",
- ],
-
- whole_static_libs: [
- "arm_compute_library",
- ],
-
- shared_libs: ["liblog"],
-
- ldflags: ["-Wl,-Map=libarmnnMapFile.map"],
-
- cflags: ARMNN_CFLAGS + [
- "-DARMCOMPUTECL_ENABLED",
- ],
-
- srcs: ARMNN_SOURCES + COMMON_SOURCES + GPU_BACKEND_SOURCES,
-}
diff --git a/Android.mk b/Android.mk
new file mode 100644
index 000000000..31a454630
--- /dev/null
+++ b/Android.mk
@@ -0,0 +1,566 @@
+#
+# Copyright © 2017-2023 ARM Ltd and Contributors. All rights reserved.
+# SPDX-License-Identifier: MIT
+#
+
+LOCAL_PATH := $(call my-dir)
+
+ARMNN_ANDROID_MK_ENABLED := 1
+
+ifeq ($(ARMNN_ANDROID_MK_ENABLE),0)
+ARMNN_ANDROID_MK_ENABLED := 0
+endif
+
+ifeq ($(ARMNN_ANDROID_MK_ENABLED),1)
+
+# Configure these paths if you move the source or Khronos headers
+ARMNN_GENERATED_HEADER_PATH := $(LOCAL_PATH)/generated
+OPENCL_HEADER_PATH := $(LOCAL_PATH)/../clframework/include
+ARMNN_HEADER_PATH := $(LOCAL_PATH)/include
+ARMNN_PROFILING_INCLUDE_PATH := $(LOCAL_PATH)/profiling
+ARMNN_PROFILING_CLIENT_INCLUDE_PATH := $(LOCAL_PATH)/profiling/client/include
+ARMNN_PROFILING_COMMON_INCLUDE_PATH := $(LOCAL_PATH)/profiling/common/include
+ARMNN_TIMELINE_DECODER_INCLUDE_PATH := $(LOCAL_PATH)/src/timelineDecoder
+ARMNN_THIRD_PARTY_INCLUDE_PATH := $(LOCAL_PATH)/third-party
+ARMNN_MAIN_HEADER_PATH := $(LOCAL_PATH)/src
+ARMNN_SOURCE_HEADER_PATH := $(LOCAL_PATH)/src/armnn
+ARMNN_SOURCE_UTILS_HEADER_PATH := $(LOCAL_PATH)/src/armnnUtils
+ARMNN_TEST_UTILS_SOURCE_PATH := $(LOCAL_PATH)/src/armnnTestUtils
+ARMNN_BACKENDS_HEADER_PATH := $(LOCAL_PATH)/src/backends
+ARMNN_PROFILING_HEADER_PATH := $(LOCAL_PATH)/src/profiling
+ARMNN_SERIALIZER_HEADER_PATH := $(LOCAL_PATH)/src/armnnSerializer
+ARMNN_DESERIALIZER_HEADER_PATH := $(LOCAL_PATH)/src/armnnDeserializer
+
+# find the common.mk and backend.mk files in the backend source folders
+ARMNN_BACKEND_COMMON_MAKEFILE_LOCAL_PATHS := $(wildcard $(LOCAL_PATH)/src/backends/*/common.mk)
+ARMNN_BACKEND_COMMON_MAKEFILE_PATHS := $(subst $(LOCAL_PATH),,$(ARMNN_BACKEND_COMMON_MAKEFILE_LOCAL_PATHS))
+ARMNN_BACKEND_COMMON_MAKEFILE_DIRS := $(subst /common.mk,,$(ARMNN_BACKEND_COMMON_MAKEFILE_PATHS))
+
+ARMNN_BACKEND_MAKEFILE_LOCAL_PATHS := $(wildcard $(LOCAL_PATH)/src/backends/*/backend.mk)
+ARMNN_BACKEND_MAKEFILE_PATHS := $(subst $(LOCAL_PATH),,$(ARMNN_BACKEND_MAKEFILE_LOCAL_PATHS))
+ARMNN_BACKEND_MAKEFILE_DIRS := $(subst /backend.mk,,$(ARMNN_BACKEND_MAKEFILE_PATHS))
+
+##############
+# libarmnn.a #
+##############
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := libarmnn
+LOCAL_LICENSE_KINDS := SPDX-license-identifier-BSD SPDX-license-identifier-BSL-1.0 SPDX-license-identifier-MIT SPDX-license-identifier-PSF-2.0 legacy_unencumbered
+LOCAL_LICENSE_CONDITIONS := notice unencumbered
+LOCAL_NOTICE_FILE := $(LOCAL_PATH)/LICENSE
+Q_OR_LATER := 1
+CPP_VERSION := c++17
+ifeq ($(Q_OR_LATER),1)
+# "eng" is deprecated in Android Q
+LOCAL_MODULE_TAGS := optional
+else
+LOCAL_MODULE_TAGS := eng optional
+endif
+LOCAL_ARM_MODE := arm
+LOCAL_PROPRIETARY_MODULE := true
+
+# Placeholder to hold all backend source files and include paths, common and specific to the backends
+ARMNN_BACKEND_SOURCES :=
+ARMNN_BACKEND_INCLUDES :=
+
+#
+# Iterate through the backend common and specific include paths, include them into the
+# current makefile and append the sources held by the COMMON_SOURCES and BACKEND_SOURCES variable
+# (included from the given makefile) to the ARMNN_BACKEND_SOURCES list
+# and optional include paths set by BACKEND_INCLUDES to the ARMNN_BACKEND_INCLUDES list
+#
+$(foreach mkPath,$(ARMNN_BACKEND_COMMON_MAKEFILE_DIRS),\
+ $(eval include $(LOCAL_PATH)/$(mkPath)/common.mk)\
+ $(eval ARMNN_BACKEND_SOURCES := $(ARMNN_BACKEND_SOURCES)\
+ $(patsubst %,$(mkPath)/%,$(COMMON_SOURCES))))
+
+$(foreach mkPath,$(ARMNN_BACKEND_MAKEFILE_DIRS),\
+ $(eval include $(LOCAL_PATH)/$(mkPath)/backend.mk)\
+ $(eval ARMNN_BACKEND_SOURCES := $(ARMNN_BACKEND_SOURCES)\
+ $(patsubst %,$(mkPath)/%,$(BACKEND_SOURCES))))
+
+$(foreach mkPath,$(ARMNN_BACKEND_MAKEFILE_DIRS),\
+ $(eval include $(LOCAL_PATH)/$(mkPath)/backend.mk)\
+ $(eval ARMNN_BACKEND_INCLUDES += $(BACKEND_INCLUDES)))
+
+# Mark source files as dependent on Android.mk and backend makefiles
+LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk \
+ $(ARMNN_BACKEND_MAKEFILE_LOCAL_PATHS)
+
+LOCAL_EXPORT_C_INCLUDES := \
+ $(ARMNN_PROFILING_INCLUDE_PATH) \
+ $(ARMNN_PROFILING_COMMON_INCLUDE_PATH) \
+ $(ARMNN_PROFILING_CLIENT_INCLUDE_PATH) \
+ $(ARMNN_MAIN_HEADER_PATH) \
+ $(ARMNN_SOURCE_HEADER_PATH) \
+ $(ARMNN_TIMELINE_DECODER_INCLUDE_PATH) \
+ $(ARMNN_THIRD_PARTY_INCLUDE_PATH) \
+ $(ARMNN_SOURCE_UTILS_HEADER_PATH) \
+ $(ARMNN_PROFILING_HEADER_PATH) \
+ $(ARMNN_BACKENDS_HEADER_PATH) \
+ $(ARMNN_SERIALIZER_HEADER_PATH) \
+ $(ARMNN_DESERIALIZER_HEADER_PATH)
+
+LOCAL_C_INCLUDES := \
+ $(OPENCL_HEADER_PATH) \
+ $(NN_HEADER_PATH) \
+ $(ARMNN_GENERATED_HEADER_PATH) \
+ $(ARMNN_PROFILING_INCLUDE_PATH) \
+ $(ARMNN_PROFILING_COMMON_INCLUDE_PATH) \
+ $(ARMNN_PROFILING_CLIENT_INCLUDE_PATH) \
+ $(ARMNN_HEADER_PATH) \
+ $(ARMNN_TIMELINE_DECODER_INCLUDE_PATH) \
+ $(ARMNN_THIRD_PARTY_INCLUDE_PATH) \
+ $(ARMNN_MAIN_HEADER_PATH) \
+ $(ARMNN_SOURCE_HEADER_PATH) \
+ $(ARMNN_SOURCE_UTILS_HEADER_PATH) \
+ $(ARMNN_PROFILING_HEADER_PATH) \
+ $(ARMNN_BACKENDS_HEADER_PATH) \
+ $(ARMNN_SERIALIZER_HEADER_PATH) \
+ $(ARMNN_DESERIALIZER_HEADER_PATH) \
+ $(ARMNN_BACKEND_INCLUDES) \
+ $(LOCAL_PATH)/../ComputeLibrary
+
+LOCAL_SRC_FILES := \
+ $(ARMNN_BACKEND_SOURCES) \
+ profiling/common/src/CommandHandlerFunctor.cpp \
+ profiling/common/src/CommandHandlerKey.cpp \
+ profiling/common/src/CommandHandlerRegistry.cpp \
+ profiling/common/src/CommonProfilingUtils.cpp \
+ profiling/common/src/CounterDirectory.cpp \
+ profiling/common/src/LabelsAndEventClasses.cpp \
+ profiling/common/src/Logging.cpp \
+ profiling/common/src/NetworkSockets.cpp \
+ profiling/common/src/PacketVersionResolver.cpp \
+ profiling/common/src/Processes.cpp \
+ profiling/common/src/SwTrace.cpp \
+ profiling/common/src/Threads.cpp \
+ profiling/client/src/ActivateTimelineReportingCommandHandler.cpp \
+ profiling/client/src/BufferManager.cpp \
+ profiling/client/src/CommandHandler.cpp \
+ profiling/client/src/ConnectionAcknowledgedCommandHandler.cpp \
+ profiling/client/src/CounterIdMap.cpp \
+ profiling/client/src/DeactivateTimelineReportingCommandHandler.cpp \
+ profiling/client/src/FileOnlyProfilingConnection.cpp \
+ profiling/client/src/Holder.cpp \
+ profiling/client/src/IProfilingService.cpp \
+ profiling/client/src/PacketBuffer.cpp \
+ profiling/client/src/PeriodicCounterCapture.cpp \
+ profiling/client/src/PeriodicCounterSelectionCommandHandler.cpp \
+ profiling/client/src/PerJobCounterSelectionCommandHandler.cpp \
+ profiling/client/src/ProfilingConnectionDumpToFileDecorator.cpp \
+ profiling/client/src/ProfilingConnectionFactory.cpp \
+ profiling/client/src/ProfilingService.cpp \
+ profiling/client/src/ProfilingStateMachine.cpp \
+ profiling/client/src/ProfilingUtils.cpp \
+ profiling/client/src/RegisterBackendCounters.cpp \
+ profiling/client/src/RequestCounterDirectoryCommandHandler.cpp \
+ profiling/client/src/SendCounterPacket.cpp \
+ profiling/client/src/SendThread.cpp \
+ profiling/client/src/SendTimelinePacket.cpp \
+ profiling/client/src/SocketProfilingConnection.cpp \
+ profiling/client/src/TimelinePacketWriterFactory.cpp \
+ profiling/client/src/TimelineUtilityMethods.cpp \
+ profiling/client/src/backends/BackendProfiling.cpp \
+ profiling/client/src/backends/IBackendProfiling.cpp \
+ profiling/server/src/timelineDecoder/DirectoryCaptureCommandHandler.cpp \
+ profiling/server/src/timelineDecoder/TimelineCaptureCommandHandler.cpp \
+ profiling/server/src/timelineDecoder/TimelineDecoder.cpp \
+ profiling/server/src/timelineDecoder/TimelineDirectoryCaptureCommandHandler.cpp \
+ src/armnn/ArmNNProfilingServiceInitialiser.cpp \
+ src/armnn/BackendHelper.cpp \
+ src/armnn/BackendRegistry.cpp \
+ src/armnn/Descriptors.cpp \
+ src/armnn/Exceptions.cpp \
+ src/armnn/Graph.cpp \
+ src/armnn/ILayerSupport.cpp \
+ src/armnn/InternalTypes.cpp \
+ src/armnn/JsonPrinter.cpp \
+ src/armnn/Layer.cpp \
+ src/armnn/LoadedNetwork.cpp \
+ src/armnn/Logging.cpp \
+ src/armnn/Network.cpp \
+ src/armnn/NetworkUtils.cpp \
+ src/armnn/Observable.cpp \
+ src/armnn/Optimizer.cpp \
+ src/armnn/OutputHandler.cpp \
+ src/armnn/ProfilingEvent.cpp \
+ src/armnn/Profiling.cpp \
+ src/armnn/Runtime.cpp \
+ src/armnn/SerializeLayerParameters.cpp \
+ src/armnn/SubgraphView.cpp \
+ src/armnn/SubgraphViewSelector.cpp \
+ src/armnn/Tensor.cpp \
+ src/armnn/Threadpool.cpp \
+ src/armnn/TypesUtils.cpp \
+ src/armnn/Utils.cpp \
+ src/armnn/WallClockTimer.cpp \
+ src/armnn/WorkingMemHandle.cpp \
+ src/armnnUtils/CompatibleTypes.cpp \
+ src/armnnUtils/DataLayoutIndexed.cpp \
+ src/armnnUtils/DotSerializer.cpp \
+ src/armnnUtils/FloatingPointConverter.cpp \
+ src/armnnUtils/HeapProfiling.cpp \
+ src/armnnUtils/LeakChecking.cpp \
+ src/armnnUtils/ParserHelper.cpp \
+ src/armnnUtils/Permute.cpp \
+ src/armnnUtils/TensorUtils.cpp \
+ src/armnnUtils/VerificationHelpers.cpp \
+ src/armnnUtils/Filesystem.cpp \
+ src/armnnUtils/ProfilingOptionsConverter.cpp \
+ src/armnnUtils/Transpose.cpp \
+ src/armnn/layers/ActivationLayer.cpp \
+ src/armnn/layers/AdditionLayer.cpp \
+ src/armnn/layers/ArgMinMaxLayer.cpp \
+ src/armnn/layers/BatchMatMulLayer.cpp \
+ src/armnn/layers/BatchNormalizationLayer.cpp \
+ src/armnn/layers/BatchToSpaceNdLayer.cpp \
+ src/armnn/layers/CastLayer.cpp \
+ src/armnn/layers/ChannelShuffleLayer.cpp \
+ src/armnn/layers/ComparisonLayer.cpp \
+ src/armnn/layers/ConcatLayer.cpp \
+ src/armnn/layers/ConstantLayer.cpp \
+ src/armnn/layers/Convolution2dLayer.cpp \
+ src/armnn/layers/Convolution3dLayer.cpp \
+ src/armnn/layers/ConvertFp16ToFp32Layer.cpp \
+ src/armnn/layers/ConvertFp32ToFp16Layer.cpp \
+ src/armnn/layers/DebugLayer.cpp \
+ src/armnn/layers/DepthToSpaceLayer.cpp \
+ src/armnn/layers/DepthwiseConvolution2dLayer.cpp \
+ src/armnn/layers/DequantizeLayer.cpp \
+ src/armnn/layers/DetectionPostProcessLayer.cpp \
+ src/armnn/layers/DivisionLayer.cpp \
+ src/armnn/layers/ElementwiseBaseLayer.cpp \
+ src/armnn/layers/ElementwiseBinaryLayer.cpp \
+ src/armnn/layers/ElementwiseUnaryLayer.cpp \
+ src/armnn/layers/FakeQuantizationLayer.cpp \
+ src/armnn/layers/FillLayer.cpp \
+ src/armnn/layers/FloorLayer.cpp \
+ src/armnn/layers/FullyConnectedLayer.cpp \
+ src/armnn/layers/GatherLayer.cpp \
+ src/armnn/layers/GatherNdLayer.cpp \
+ src/armnn/layers/InputLayer.cpp \
+ src/armnn/layers/InstanceNormalizationLayer.cpp \
+ src/armnn/layers/L2NormalizationLayer.cpp \
+ src/armnn/layers/LogicalBinaryLayer.cpp \
+ src/armnn/layers/LogSoftmaxLayer.cpp \
+ src/armnn/layers/LstmLayer.cpp \
+ src/armnn/layers/MapLayer.cpp \
+ src/armnn/layers/MaximumLayer.cpp \
+ src/armnn/layers/MeanLayer.cpp \
+ src/armnn/layers/MemCopyLayer.cpp \
+ src/armnn/layers/MemImportLayer.cpp \
+ src/armnn/layers/MergeLayer.cpp \
+ src/armnn/layers/MinimumLayer.cpp \
+ src/armnn/layers/MultiplicationLayer.cpp \
+ src/armnn/layers/NormalizationLayer.cpp \
+ src/armnn/layers/OutputLayer.cpp \
+ src/armnn/layers/PadLayer.cpp \
+ src/armnn/layers/PermuteLayer.cpp \
+ src/armnn/layers/Pooling2dLayer.cpp \
+ src/armnn/layers/Pooling3dLayer.cpp \
+ src/armnn/layers/PreCompiledLayer.cpp \
+ src/armnn/layers/PreluLayer.cpp \
+ src/armnn/layers/QLstmLayer.cpp \
+ src/armnn/layers/QuantizeLayer.cpp \
+ src/armnn/layers/QuantizedLstmLayer.cpp \
+ src/armnn/layers/RankLayer.cpp \
+ src/armnn/layers/ReduceLayer.cpp \
+ src/armnn/layers/ReshapeLayer.cpp \
+ src/armnn/layers/ResizeLayer.cpp \
+ src/armnn/layers/ShapeLayer.cpp \
+ src/armnn/layers/SliceLayer.cpp \
+ src/armnn/layers/SoftmaxLayer.cpp \
+ src/armnn/layers/SpaceToBatchNdLayer.cpp \
+ src/armnn/layers/SpaceToDepthLayer.cpp \
+ src/armnn/layers/SplitterLayer.cpp \
+ src/armnn/layers/StackLayer.cpp \
+ src/armnn/layers/StandInLayer.cpp \
+ src/armnn/layers/StridedSliceLayer.cpp \
+ src/armnn/layers/SubtractionLayer.cpp \
+ src/armnn/layers/SwitchLayer.cpp \
+ src/armnn/layers/TransposeConvolution2dLayer.cpp \
+ src/armnn/layers/TransposeLayer.cpp \
+ src/armnn/layers/UnidirectionalSequenceLstmLayer.cpp \
+ src/armnn/layers/UnmapLayer.cpp \
+ src/armnnSerializer/Serializer.cpp \
+ src/armnnSerializer/SerializerUtils.cpp \
+ src/armnnDeserializer/Deserializer.cpp
+
+LOCAL_STATIC_LIBRARIES := libflatbuffers-cpp
+ifeq ($(TARGET_ARCH),arm)
+LOCAL_STATIC_LIBRARIES += arm_compute_library
+endif
+ifeq ($(TARGET_ARCH),arm64)
+LOCAL_STATIC_LIBRARIES += arm_compute_library
+endif
+
+LOCAL_SHARED_LIBRARIES := \
+ liblog
+
+LOCAL_CFLAGS := \
+ -std=$(CPP_VERSION) \
+ -fexceptions \
+ -Wno-unused-parameter \
+ -frtti \
+ -DFMT_HEADER_ONLY \
+ -Wno-ignored-qualifiers \
+ -Wno-macro-redefined \
+ -Wno-unreachable-code-loop-increment
+
+LOCAL_LDFLAGS += \
+ -Wl,-Map=libarmnnMapFile.map
+
+# The variable to enable/disable the CL backend (ARMNN_COMPUTE_CL_ENABLED) is declared in android-nn-driver/Android.mk
+ifeq ($(ARMNN_COMPUTE_CL_ENABLED),1)
+LOCAL_CFLAGS += \
+ -DARMCOMPUTECL_ENABLED
+endif # ARMNN_COMPUTE_CL_ENABLED == 1
+# The variable to enable/disable the NEON backend (ARMNN_COMPUTE_NEON_ENABLED) is declared in android-nn-driver/Android.mk
+ifeq ($(ARMNN_COMPUTE_NEON_ENABLED),1)
+LOCAL_CFLAGS += \
+ -DARMCOMPUTENEON_ENABLED
+endif # ARMNN_COMPUTE_NEON_ENABLED == 1
+# The variable to enable/disable the REFERENCE backend (ARMNN_REF_ENABLED) is declared in android-nn-driver/Android.mk
+ifeq ($(ARMNN_REF_ENABLED),1)
+LOCAL_CFLAGS += \
+ -DARMNNREF_ENABLED
+endif # ARMNN_REF_ENABLED == 1
+
+ifeq ($(Q_OR_LATER),1)
+LOCAL_CFLAGS += \
+ -DARMNN_MIXED_PRECISION_FP16_POOLING
+endif # PLATFORM_VERSION == Q or later
+
+include $(BUILD_STATIC_LIBRARY)
+
+###############
+# armnn-tests #
+###############
+include $(CLEAR_VARS)
+
+#For in-tree android build, disable building tests as the boost dependency (only used in test)
+#is not present.
+BUILD_TESTS := 0
+ifeq ($(BUILD_TESTS),1)
+
+LOCAL_MODULE := armnn-tests
+LOCAL_LICENSE_KINDS := SPDX-license-identifier-BSD SPDX-license-identifier-BSL-1.0 SPDX-license-identifier-MIT SPDX-license-identifier-PSF-2.0 legacy_unencumbered
+LOCAL_LICENSE_CONDITIONS := notice unencumbered
+LOCAL_NOTICE_FILE := $(LOCAL_PATH)/LICENSE
+ifeq ($(Q_OR_LATER),1)
+# "eng" is deprecated in Android Q
+LOCAL_MODULE_TAGS := optional
+else
+LOCAL_MODULE_TAGS := eng optional
+endif
+LOCAL_ARM_MODE := arm
+LOCAL_PROPRIETARY_MODULE := true
+
+# placeholder to hold all backend unit test source files
+ARMNN_BACKEND_TEST_SOURCES :=
+ARMNN_BACKEND_TEST_INCLUDES :=
+
+#
+# iterate through the backend common and specific include paths, include them into the current
+# makefile and append the sources held by the COMMON_TEST_SOURCES and BACKEND_TEST_SOURCES
+# (included from the given makefile) to the ARMNN_BACKEND_TEST_SOURCES list
+#
+$(foreach mkPath,$(ARMNN_BACKEND_COMMON_MAKEFILE_DIRS), \
+ $(eval include $(LOCAL_PATH)/$(mkPath)/common.mk) \
+ $(eval ARMNN_BACKEND_TEST_SOURCES := $(ARMNN_BACKEND_TEST_SOURCES) \
+ $(patsubst %,$(mkPath)/%,$(COMMON_TEST_SOURCES))))
+
+$(foreach mkPath,$(ARMNN_BACKEND_MAKEFILE_DIRS), \
+ $(eval include $(LOCAL_PATH)/$(mkPath)/backend.mk) \
+ $(eval ARMNN_BACKEND_TEST_SOURCES := $(ARMNN_BACKEND_TEST_SOURCES) \
+ $(patsubst %,$(mkPath)/%,$(BACKEND_TEST_SOURCES))))
+
+$(foreach mkPath,$(ARMNN_BACKEND_MAKEFILE_DIRS),\
+ $(eval include $(LOCAL_PATH)/$(mkPath)/backend.mk)\
+ $(eval ARMNN_BACKEND_TEST_INCLUDES += $(BACKEND_TEST_INCLUDES)))
+
+# Placeholder to hold all backend link files.
+ARMNN_BACKEND_TEST_STATIC_LIBRARIES :=
+ARMNN_BACKEND_TEST_SHARED_LIBRARIES :=
+ifeq ($(TARGET_ARCH),arm)
+ARMNN_BACKEND_TEST_STATIC_LIBRARIES += arm_compute_library
+endif
+ifeq ($(TARGET_ARCH),arm64)
+ARMNN_BACKEND_TEST_STATIC_LIBRARIES += arm_compute_library
+endif
+
+# Iterate through the Arm NN backends and specific include paths, include them into the
+# current makefile and append the linkfiles held by
+# the optional BACKEND_STATIC_LIBRARIES and optional BACKEND_SHARED_LIBRARIES variable
+# (included from the given makefile) to
+# the ARMNN_BACKEND_STATIC_LIBRARIES and ARMNN_BACKEND_SHARED_LIBRARIES lists
+
+$(foreach mkPath,$(ARMNN_BACKEND_MAKEFILE_DIRS),\
+ $(eval include $(LOCAL_PATH)/$(mkPath)/backend.mk)\
+ $(eval ARMNN_BACKEND_TEST_STATIC_LIBRARIES += $(BACKEND_TEST_STATIC_LIBRARIES)))
+
+$(foreach mkPath,$(ARMNN_BACKEND_MAKEFILE_DIRS),\
+ $(eval include $(LOCAL_PATH)/$(mkPath)/backend.mk)\
+ $(eval ARMNN_BACKEND_TEST_SHARED_LIBRARIES += $(BACKEND_TEST_SHARED_LIBRARIES)))
+
+
+# Mark source files as dependent on Android.mk
+LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
+
+LOCAL_C_INCLUDES := \
+ $(OPENCL_HEADER_PATH) \
+ $(NN_HEADER_PATH) \
+ $(ARMNN_GENERATED_HEADER_PATH) \
+ $(ARMNN_PROFILING_INCLUDE_PATH) \
+ $(ARMNN_PROFILING_COMMON_INCLUDE_PATH) \
+ $(ARMNN_PROFILING_CLIENT_INCLUDE_PATH) \
+ $(ARMNN_HEADER_PATH) \
+ $(ARMNN_TIMELINE_DECODER_INCLUDE_PATH) \
+ $(ARMNN_THIRD_PARTY_INCLUDE_PATH) \
+ $(ARMNN_MAIN_HEADER_PATH) \
+ $(ARMNN_SOURCE_HEADER_PATH) \
+ $(ARMNN_SOURCE_UTILS_HEADER_PATH) \
+ $(ARMNN_TEST_UTILS_SOURCE_PATH) \
+ $(ARMNN_PROFILING_HEADER_PATH) \
+ $(ARMNN_BACKENDS_HEADER_PATH) \
+ $(ARMNN_SERIALIZER_HEADER_PATH) \
+ $(ARMNN_DESERIALIZER_HEADER_PATH) \
+ $(ARMNN_BACKEND_INCLUDES) \
+ $(LOCAL_PATH)/../ComputeLibrary
+
+
+LOCAL_CFLAGS := \
+ -std=$(CPP_VERSION) \
+ -fexceptions \
+ -frtti \
+ -Wno-unused-local-typedef \
+ -Wno-unused-variable
+
+# The variable to enable/disable the CL backend (ARMNN_COMPUTE_CL_ENABLED) is declared in android-nn-driver/Android.mk
+ifeq ($(ARMNN_COMPUTE_CL_ENABLED),1)
+LOCAL_CFLAGS += \
+ -DARMCOMPUTECL_ENABLED
+endif # ARMNN_COMPUTE_CL_ENABLED == 1
+# The variable to enable/disable the NEON backend (ARMNN_COMPUTE_NEON_ENABLED) is declared in android-nn-driver/Android.mk
+ifeq ($(ARMNN_COMPUTE_NEON_ENABLED),1)
+LOCAL_CFLAGS += \
+ -DARMCOMPUTENEON_ENABLED
+endif # ARMNN_COMPUTE_NEON_ENABLED == 1
+# The variable to enable/disable the REFERENCE backend (ARMNN_REF_ENABLED) is declared in android-nn-driver/Android.mk
+ifeq ($(ARMNN_REF_ENABLED),1)
+LOCAL_CFLAGS += \
+ -DARMNNREF_ENABLED
+endif # ARMNN_REF_ENABLED == 1
+
+LOCAL_SRC_FILES := \
+ $(ARMNN_BACKEND_TEST_SOURCES) \
+ src/armnn/test/ConstTensorLayerVisitor.cpp \
+ src/armnn/test/EndToEndTest.cpp \
+ src/armnn/ExecutionFrame.cpp \
+ src/armnn/test/ExecutionFrameTest.cpp \
+ src/armnn/test/FloatingPointConverterTest.cpp \
+ src/armnn/test/FlowControl.cpp \
+ src/armnn/test/GraphTests.cpp \
+ src/armnn/test/InferOutputTests.cpp \
+ src/armnn/test/InstrumentTests.cpp \
+ src/armnnUtils/ModelAccuracyChecker.cpp \
+ src/armnn/test/ModelAccuracyCheckerTest.cpp \
+ src/armnn/test/NetworkTests.cpp \
+ src/armnn/test/ObservableTest.cpp \
+ src/armnn/test/optimizations/ConvertConstantsFloatToHalfTests.cpp \
+ src/armnn/test/optimizations/ConvertConstantsHalfToFloatTests.cpp \
+ src/armnn/test/optimizations/Fp32NetworkToFp16ConverterTests.cpp \
+ src/armnn/test/optimizations/FuseActivationTests.cpp \
+ src/armnn/test/optimizations/InsertDebugLayerTests.cpp \
+ src/armnn/test/optimizations/MovePermuteUpTests.cpp \
+ src/armnn/test/optimizations/OptimizeConsecutiveReshapesTests.cpp \
+ src/armnn/test/optimizations/OptimizeInverseConversionsTests.cpp \
+ src/armnn/test/optimizations/OptimizeInversePermutesTests.cpp \
+ src/armnn/test/optimizations/PermuteAndBatchToSpaceAsDepthToSpaceTests.cpp \
+ src/armnn/test/optimizations/PermuteAsReshapeTests.cpp \
+ src/armnn/test/optimizations/ReduceMultipleAxesTests.cpp \
+ src/armnn/test/optimizations/SquashEqualSiblingsTests.cpp \
+ src/armnn/test/optimizations/TransposeAsReshapeTests.cpp \
+ src/armnn/test/OptimizerTests.cpp \
+ src/armnn/test/OptionalTest.cpp \
+ src/armnn/test/ProfilerTests.cpp \
+ src/armnn/test/ProfilingEventTest.cpp \
+ src/armnnUtils/PrototxtConversions.cpp \
+ src/armnnUtils/test/PrototxtConversionsTest.cpp \
+ src/armnn/test/SubgraphViewTests.cpp \
+ src/armnn/test/TensorHandleStrategyTest.cpp \
+ src/armnn/test/TensorTest.cpp \
+ src/armnn/test/TestInputOutputLayerVisitor.cpp \
+ src/armnn/test/TestLayerVisitor.cpp \
+ src/armnn/test/TestNameAndDescriptorLayerVisitor.cpp \
+ src/armnn/test/TestNameOnlyLayerVisitor.cpp \
+ src/armnn/test/UtilsTests.cpp \
+ src/armnnUtils/test/ParserHelperTest.cpp \
+ src/armnnUtils/test/QuantizeHelperTest.cpp \
+ src/armnnUtils/test/TensorUtilsTest.cpp \
+ src/armnnTestUtils/CommonTestUtils.cpp \
+ src/armnnTestUtils/GraphUtils.cpp \
+ src/armnnTestUtils/MockBackend.cpp \
+ src/armnnTestUtils/MockMemoryManager.cpp \
+ src/armnnTestUtils/MockTensorHandle.cpp \
+ src/armnnTestUtils/MockTensorHandleFactory.cpp \
+ src/armnnTestUtils/TensorCopyUtils.cpp \
+ src/armnnTestUtils/TestUtils.cpp \
+ src/armnnTestUtils/UnitTests.cpp \
+ src/profiling/test/BufferTests.cpp \
+ src/profiling/test/FileOnlyProfilingDecoratorTests.cpp \
+ src/profiling/test/PrintPacketHeaderHandler.cpp \
+ src/profiling/test/ProfilingConnectionDumpToFileDecoratorTests.cpp \
+ src/profiling/test/ProfilingGuidTest.cpp \
+ src/profiling/test/ProfilingTests.cpp \
+ src/profiling/test/ProfilingTestUtils.cpp \
+ src/profiling/test/SendCounterPacketTests.cpp \
+ src/profiling/test/SendTimelinePacketTests.cpp \
+ src/profiling/test/TestTimelinePacketHandler.cpp \
+ src/profiling/test/TimelineModel.cpp \
+ src/profiling/test/TimelinePacketTests.cpp \
+ src/profiling/test/TimelineUtilityMethodsTests.cpp \
+ src/armnnSerializer/test/ActivationSerializationTests.cpp \
+ src/armnnSerializer/test/ComparisonSerializationTests.cpp \
+ src/armnnSerializer/test/LstmSerializationTests.cpp \
+ src/armnnSerializer/test/SerializerTests.cpp \
+ src/armnnSerializer/test/SerializerTestUtils.cpp
+
+ifeq ($(ARMNN_REF_ENABLED),1)
+LOCAL_SRC_FILES += \
+ src/armnn/test/DebugCallbackTest.cpp \
+ src/armnn/test/RuntimeTests.cpp
+endif
+
+LOCAL_STATIC_LIBRARIES := \
+ libneuralnetworks_common \
+ libflatbuffers-cpp \
+ $(ARMNN_BACKEND_TEST_STATIC_LIBRARIES)
+
+LOCAL_WHOLE_STATIC_LIBRARIES := libarmnn
+
+LOCAL_SHARED_LIBRARIES := \
+ libbase \
+ libhidlbase \
+ libhidltransport \
+ libhidlmemory \
+ liblog \
+ libutils \
+ android.hardware.neuralnetworks@1.0 \
+ android.hidl.allocator@1.0 \
+ android.hidl.memory@1.0 \
+ $(ARMNN_BACKEND_TEST_SHARED_LIBRARIES)
+
+ifeq ($(ARMNN_COMPUTE_CL_ENABLED),1)
+ifeq (,$(realpath $(TOPDIR)vendor/arm/mali/valhall/Android.bp))
+ LOCAL_SHARED_LIBRARIES += libGLES_mali
+else
+ LOCAL_SHARED_LIBRARIES += libOpenCL
+endif
+endif
+
+include $(BUILD_EXECUTABLE)
+endif # BUILD_TESTS
+endif # ARMNN_ENABLE
diff --git a/shim/Android.bp b/shim/Android.bp
deleted file mode 100644
index fd460b0a4..000000000
--- a/shim/Android.bp
+++ /dev/null
@@ -1,186 +0,0 @@
-//
-// Copyright © 2022-2023 Arm Ltd and Contributors. All rights reserved.
-// SPDX-License-Identifier: MIT
-//
-
-////////////////////////////////////////////
-// //
-// libarmnn_support_library //
-// //
-////////////////////////////////////////////
-
-cc_library_shared {
- name: "libarmnn_support_library",
- enabled : false,
- arch: {
- arm: {
- enabled : true,
- },
- arm64: {
- enabled : true,
- },
- },
- defaults: ["neuralnetworks_cl_defaults"],
- include_dirs: [
- "external/armnn/include",
- "external/armnn/third-party",
- "system/logging/liblog/include",
- ],
- srcs: [
- "sl/support_library_service.cpp",
- "sl/canonical/*.cpp",
- ],
- shared_libs: [
- "liblog",
- "libnativewindow",
- "libcrypto",
- ],
- openmp: true,
- cflags: [
- "-DNN_COMPATIBILITY_LIBRARY_BUILD",
- "-fexceptions",
- "-fPIC",
- "-std=c++17",
- "-Wall",
- "-fexceptions",
- "-Werror",
- "-Wno-unused-parameter",
- "-Wno-unused-private-field",
- "-Wno-unused-variable",
- "-Wno-attributes",
- "-Wno-format-security",
- "-Wno-extern-c-compat",
- "-Wno-invalid-partial-specialization",
- "-Wno-unneeded-internal-declaration",
- "-Wno-unused-function",
- "-DNN_DEBUGGABLE",
- ],
- // Change the soname, this library will be added as cc_prebuilt_library_shared
- // with different name to android.hardware.neuralnetworks-shim-service-armnn
- ldflags: [
- "-Wl,-soname,libarmnn_support_library_prebuilt.so",
- ],
- static_libs: [
- "libbase_ndk",
- "libneuralnetworks_common_cl_cpu",
- "libtflite_static",
- "neuralnetworks_canonical_sample_driver_cl",
- "neuralnetworks_types_cl",
- ],
- whole_static_libs: [
- "libneuralnetworks_cl",
- "libarmnn",
- ],
-}
-
-////////////////////////////////////////////
-// //
-// libarmnn_support_library_prebuilt //
-// //
-////////////////////////////////////////////
-
-cc_prebuilt_library_shared {
- name: "libarmnn_support_library_prebuilt",
- check_elf_files: false,
- host_supported: false,
- shared_libs: [
- "libbase",
- "libcutils",
- "liblog",
- "libnativewindow",
- ],
- proprietary: true,
- vendor: true,
- apex_available: ["//apex_available:vendor", "//apex_available:platform"],
- allow_undefined_symbols: true,
- target: {
- android_x86_64: {
- enabled: false,
- },
- android_x86: {
- enabled: false,
- },
- android_riscv64: {
- enabled: false,
- },
- android_arm64: {
- srcs: ["sl/build/android_arm64/libarmnn_support_library_prebuilt.so"],
- },
- android_arm: {
- srcs: ["sl/build/android_arm/libarmnn_support_library_prebuilt.so"],
- },
- },
-}
-
-////////////////////////////////////////////
-// //
-// shim service //
-// //
-////////////////////////////////////////////
-
-cc_defaults {
- name: "NeuralNetworksShimArmnnDriverAidl_defaults",
- enabled : false,
- arch: {
- arm: {
- enabled : true,
- },
- arm64: {
- enabled : true,
- },
- },
- check_elf_files: false,
- host_supported: false,
- defaults: [
- "neuralnetworks_defaults",
- "neuralnetworks_use_latest_utils_hal_aidl",
- ],
- header_libs: [
- "libneuralnetworks_headers",
- ],
- cflags: [
- "-DNN_COMPATIBILITY_LIBRARY_BUILD",
- ],
- ldflags: [
- // libarmnn_support_library has undefined symbols that
- // cause linker failures with --no-allow-shlib-undefined, the default
- // when linking executables. See b/181227567
- "-Wl,--allow-shlib-undefined",
- ],
- static_libs: [
- "libaidlcommonsupport",
- "libarect",
- "libcutils",
- "libneuralnetworks_common",
- "libneuralnetworks_shim_static",
- "neuralnetworks_supportlibrary_loader",
- "neuralnetworks_utils_hal_common",
- ],
- shared_libs: [
- "libbase",
- "libbinder_ndk",
- "libhidlbase",
- "libhidlmemory",
- "liblog",
- "libnativewindow",
- "libutils",
- "libarmnn_support_library_prebuilt",
- ],
- apex_available: ["//apex_available:vendor", "//apex_available:platform"],
-}
-
-cc_defaults {
- name: "NeuralNetworksShimArmnnDriverAidl_server_defaults",
- defaults: ["NeuralNetworksShimArmnnDriverAidl_defaults"],
- relative_install_path: "hw",
- proprietary: true,
-}
-
-cc_binary {
- name: "android.hardware.neuralnetworks-shim-service-armnn",
- srcs: ["shimservice.cpp"],
- defaults: ["NeuralNetworksShimArmnnDriverAidl_server_defaults"],
- stl: "libc++_static",
- init_rc: ["config/android.hardware.neuralnetworks-shim-service-armnn.rc"],
- vintf_fragments: ["config/android.hardware.neuralnetworks-shim-service-armnn.xml"],
-}
diff --git a/shim/Android.bp.off b/shim/Android.bp.off
new file mode 100644
index 000000000..f3810da46
--- /dev/null
+++ b/shim/Android.bp.off
@@ -0,0 +1,97 @@
+//
+// Copyright © 2022 Arm Ltd and Contributors. All rights reserved.
+// SPDX-License-Identifier: MIT
+//
+
+
+////////////////////////////////////////////
+// //
+// shim service //
+// //
+////////////////////////////////////////////
+
+cc_prebuilt_library_shared {
+ name: "libarmnn_support_library",
+ check_elf_files: false,
+ shared_libs: [
+ "libbase",
+ "libcutils",
+ "liblog",
+ "libnativewindow",
+ ],
+ proprietary: true,
+ vendor: true,
+ // libnativewindow versioning trips this check. b/181227567 for fixing
+ allow_undefined_symbols: true,
+ target: {
+ android_x86_64: {
+ srcs: ["./sl/build/libarmnn_support_library.so"],
+ },
+ android_x86: {
+ srcs: ["./sl/build/libarmnn_support_library.so"],
+ },
+ android_arm64: {
+ srcs: ["./sl/build/libarmnn_support_library.so"],
+ },
+ android_arm: {
+ srcs: ["./sl/build/libarmnn_support_library.so"],
+ },
+ },
+ apex_available: ["//apex_available:vendor"],
+}
+
+cc_defaults {
+ name: "NeuralNetworksShimArmnnDriverAidl_defaults",
+ defaults: ["neuralnetworks_defaults"],
+ header_libs: [
+ "libneuralnetworks_headers",
+ ],
+ cflags: [
+ "-DNN_COMPATIBILITY_LIBRARY_BUILD",
+ ],
+ static_libs: [
+ "android.hardware.common-V2-ndk_platform",
+ "android.hardware.graphics.common-V2-ndk_platform",
+ "android.hardware.neuralnetworks-V1-ndk_platform",
+ "libaidlcommonsupport",
+ "libarect",
+ "libcutils",
+ "libneuralnetworks_shim_static",
+ "neuralnetworks_supportlibrary_loader",
+ "neuralnetworks_types",
+ "libneuralnetworks_common",
+ "neuralnetworks_utils_hal_aidl",
+ "neuralnetworks_utils_hal_common",
+ ],
+ shared_libs: [
+ "android.hidl.allocator@1.0",
+ "android.hidl.memory@1.0",
+ "libbase",
+ "libhidltransport",
+ "libbinder_ndk",
+ "libhidlbase",
+ "libhidlmemory",
+ "liblog",
+ "libnativewindow",
+ "libutils",
+ "libarmnn_support_library",
+ ],
+
+}
+
+cc_defaults {
+ name: "NeuralNetworksShimArmnnDriverAidl_server_defaults",
+ defaults: ["NeuralNetworksShimArmnnDriverAidl_defaults"],
+ relative_install_path: "hw",
+ proprietary: true,
+}
+
+
+cc_binary {
+ name: "android.hardware.neuralnetworks-shim-service-armnn",
+ srcs: ["./shimservice.cpp"],
+ enabled: true,
+ defaults: ["NeuralNetworksShimArmnnDriverAidl_server_defaults"],
+ init_rc: ["./config/android.hardware.neuralnetworks-shim-service-armnn.rc"],
+ vintf_fragments: ["./config/android.hardware.neuralnetworks-shim-service-armnn.xml"],
+}
diff --git a/shim/config/android.hardware.neuralnetworks-shim-service-armnn.rc b/shim/config/android.hardware.neuralnetworks-shim-service-armnn.rc
index df210e46d..55661e424 100644
--- a/shim/config/android.hardware.neuralnetworks-shim-service-armnn.rc
+++ b/shim/config/android.hardware.neuralnetworks-shim-service-armnn.rc
@@ -1,5 +1,4 @@
-service hal_neuralnetworks_armnn /vendor/bin/hw/android.hardware.neuralnetworks-shim-service-armnn
+service neuralnetworks_hal_service_armnn /vendor/bin/hw/android.hardware.neuralnetworks-shim-service-armnn
class hal
user system
group system
- task_profiles NNApiHALPerformance
diff --git a/shim/config/android.hardware.neuralnetworks-shim-service-armnn.xml b/shim/config/android.hardware.neuralnetworks-shim-service-armnn.xml
index 5051763af..a1258a588 100644
--- a/shim/config/android.hardware.neuralnetworks-shim-service-armnn.xml
+++ b/shim/config/android.hardware.neuralnetworks-shim-service-armnn.xml
@@ -5,6 +5,6 @@
<manifest version="1.0" type="device">
<hal format="aidl">
<name>android.hardware.neuralnetworks</name>
- <fqname>IDevice/google-armnn</fqname>
+ <fqname>IDevice/arm-armnn-shim</fqname>
</hal>
</manifest>
diff --git a/shim/shimservice.cpp b/shim/shimservice.cpp
index 4339f3505..44dc596c7 100644
--- a/shim/shimservice.cpp
+++ b/shim/shimservice.cpp
@@ -31,7 +31,7 @@ int main()
ANeuralNetworksShimDeviceInfo* deviceInfo;
ANeuralNetworksShimDeviceInfo_create(&deviceInfo,
/*deviceName=*/"arm-armnn-sl",
- /*serviceName=*/"google-armnn");
+ /*serviceName=*/"arm-armnn-shim");
const auto guardDeviceInfo = android::base::make_scope_guard(
[deviceInfo] { ANeuralNetworksShimDeviceInfo_free(deviceInfo); });
diff --git a/shim/sl/build/android_arm/libarmnn_support_library_prebuilt.so b/shim/sl/build/android_arm/libarmnn_support_library_prebuilt.so
deleted file mode 100755
index a655c7579..000000000
--- a/shim/sl/build/android_arm/libarmnn_support_library_prebuilt.so
+++ /dev/null
Binary files differ
diff --git a/shim/sl/build/android_arm64/libarmnn_support_library_prebuilt.so b/shim/sl/build/android_arm64/libarmnn_support_library_prebuilt.so
deleted file mode 100755
index a4a88ea9c..000000000
--- a/shim/sl/build/android_arm64/libarmnn_support_library_prebuilt.so
+++ /dev/null
Binary files differ
diff --git a/shim/sl/canonical/ArmnnDevice.cpp b/shim/sl/canonical/ArmnnDevice.cpp
index 8f2212dba..71135cb13 100644
--- a/shim/sl/canonical/ArmnnDevice.cpp
+++ b/shim/sl/canonical/ArmnnDevice.cpp
@@ -76,7 +76,6 @@ ArmnnDevice::ArmnnDevice(DriverOptions options)
}
armnn::IRuntime::CreationOptions runtimeOptions;
-#if defined(ARMCOMPUTECL_ENABLED)
if (std::find(m_Options.GetBackends().begin(),
m_Options.GetBackends().end(),
armnn::Compute::GpuAcc) != m_Options.GetBackends().end())
@@ -109,7 +108,6 @@ ArmnnDevice::ArmnnDevice(DriverOptions options)
VLOG(DRIVER) << "ArmnnDevice: Unknown exception: %s. Device will be unavailable." << error.what();
}
}
-#endif
runtimeOptions.m_EnableGpuProfiling = m_Options.IsGpuProfilingEnabled();
m_Runtime = armnn::IRuntime::Create(runtimeOptions);
diff --git a/shim/sl/canonical/ArmnnDriverImpl.cpp b/shim/sl/canonical/ArmnnDriverImpl.cpp
index 060dd5a25..0f7888bb4 100644
--- a/shim/sl/canonical/ArmnnDriverImpl.cpp
+++ b/shim/sl/canonical/ArmnnDriverImpl.cpp
@@ -1,5 +1,5 @@
//
-// Copyright © 2022-2023 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2022 Arm Ltd and Contributors. All rights reserved.
// SPDX-License-Identifier: MIT
//
@@ -400,11 +400,6 @@ GeneralResult<SharedPreparedModel> ArmnnDriverImpl::PrepareArmnnModelFromCache(
pread(*dataCacheHandle[0], hashValue.data(), hashValue.size(), 0);
// Read the model
- if (cachedDataSize < hashValue.size())
- {
- return NN_ERROR(ErrorStatus::GENERAL_FAILURE)
- << "ArmnnDriverImpl::prepareModelFromCache(): cachedDataSize is less than hashValue!";
- }
std::vector<uint8_t> dataCacheData(cachedDataSize - hashValue.size());
pread(*dataCacheHandle[0], dataCacheData.data(), dataCacheData.size(), hashValue.size());
auto calculatedHashValue = Hash(dataCacheData);
diff --git a/shim/sl/canonical/ArmnnPreparedModel.cpp b/shim/sl/canonical/ArmnnPreparedModel.cpp
index 192ea599b..79cd24134 100644
--- a/shim/sl/canonical/ArmnnPreparedModel.cpp
+++ b/shim/sl/canonical/ArmnnPreparedModel.cpp
@@ -569,13 +569,10 @@ GeneralResult<std::pair<SyncFence, ExecuteFencedInfoCallback>> ArmnnPreparedMode
{
case ErrorStatus::OUTPUT_INSUFFICIENT_SIZE:
result.error().code = (ErrorStatus::OUTPUT_INSUFFICIENT_SIZE);
- [[fallthrough]];
case ErrorStatus::GENERAL_FAILURE:
result.error().code = (ErrorStatus::GENERAL_FAILURE);
- [[fallthrough]];
case ErrorStatus::INVALID_ARGUMENT:
result.error().code = (ErrorStatus::INVALID_ARGUMENT);
- [[fallthrough]];
default:
{
result.value() = std::make_pair(timingSinceLaunch, timingAfterFence);
diff --git a/shim/sl/canonical/ConversionUtils.hpp b/shim/sl/canonical/ConversionUtils.hpp
index f595db255..91a8e3080 100644
--- a/shim/sl/canonical/ConversionUtils.hpp
+++ b/shim/sl/canonical/ConversionUtils.hpp
@@ -1,5 +1,5 @@
//
-// Copyright © 2022-2023 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2022 Arm Ltd and Contributors. All rights reserved.
// SPDX-License-Identifier: MIT
//
@@ -455,7 +455,7 @@ void SanitizeBiasQuantizationScale(armnn::TensorInfo& biasInfo,
// 4D Tensor Permutations
const armnn::PermutationVector IdentityPermutation4D({ 0U, 1U, 2U, 3U });
const armnn::PermutationVector IdentityPermutation3D({ 0U, 1U, 2U });
-const armnn::PermutationVector SwapDim2And3({ 0U, 1U, 3U, 2U });
+const armnn::PermutationVector SwapDim1And2({ 0U, 2U, 1U, 3U });
// 3D Permutation Vectors
const armnn::PermutationVector RotateTensorLeft({ 1U, 2U, 0U });
@@ -603,8 +603,8 @@ bool CreateConcatPermutationParameters(const unsigned int numberOfDimensions,
// or along dimension 0 or 2 for a 3-D tensor.
if (numberOfDimensions == 4 && concatDimension == 2)
{
- concatDimension = 3;
- permutationPair = std::make_pair(SwapDim2And3, SwapDim2And3);
+ concatDimension = 1;
+ permutationPair = std::make_pair(SwapDim1And2, SwapDim1And2);
needPermute = true;
}
else if (numberOfDimensions == 3 && concatDimension == 1)
diff --git a/shim/sl/canonical/DriverOptions.cpp b/shim/sl/canonical/DriverOptions.cpp
index 15d08d8cb..5c73edfaa 100644
--- a/shim/sl/canonical/DriverOptions.cpp
+++ b/shim/sl/canonical/DriverOptions.cpp
@@ -1,5 +1,5 @@
//
-// Copyright © 2022-2023 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2022 Arm Ltd and Contributors. All rights reserved.
// SPDX-License-Identifier: MIT
//
@@ -254,8 +254,13 @@ DriverOptions::DriverOptions()
// If no backends have been specified then the default value is GpuAcc.
if (backends.empty())
{
- VLOG(DRIVER) << "No backends have been specified, defaulting to GpuAcc.";
- m_Backends.emplace_back("GpuAcc");
+ VLOG(DRIVER) << "No backends have been specified:";
+ std::cout << optionsDesc.help() << std::endl
+ << "Unable to start:" << std::endl
+ << "No backends have been specified" << std::endl;
+ m_ShouldExit = true;
+ m_ExitCode = EXIT_FAILURE;
+ return;
}
if (!unsupportedOperationsAsString.empty())
diff --git a/shim/sl/generate_prebuilts.sh b/shim/sl/generate_prebuilts.sh
deleted file mode 100755
index 7e6c67120..000000000
--- a/shim/sl/generate_prebuilts.sh
+++ /dev/null
@@ -1,35 +0,0 @@
-#!/bin/bash
-#
-# Generate ArmNN SL driver prebuilts
-
-eval set -- "$OPTS"
-if [[ -z "$ANDROID_BUILD_TOP" ]]; then
- echo ANDROID_BUILD_TOP not set, bailing out
- echo you must run lunch before running this script
- exit 1
-fi
-
-set -e
-cd $ANDROID_BUILD_TOP
-
-source build/envsetup.sh
-ARCHS="arm,arm64"
-ARMNN_SL_DRIVER="libarmnn_support_library"
-
-for arch in ${ARCHS//,/ }
-do
- lunch "aosp_${arch}-userdebug"
-
- LIB=lib
- if [[ $arch =~ "64" ]]; then
- LIB=lib64
- fi
-
- TMPFILE=$(mktemp)
- build/soong/soong_ui.bash --make-mode ${ARMNN_SL_DRIVER} 2>&1 | tee ${TMPFILE}
- TARGETDIR=external/armnn/shim/sl/build/android_${arch}/${ARMNN_SL_DRIVER}_prebuilt.so
- mkdir -p ${TARGETDIR%/*}
- cp $OUT/system/${LIB}/${ARMNN_SL_DRIVER}.so ${TARGETDIR}
-
-done
-