# # Copyright © 2017 ARM Ltd. All rights reserved. # SPDX-License-Identifier: MIT # ANDROID_NN_DRIVER_LOCAL_PATH := $(call my-dir) LOCAL_PATH := $(ANDROID_NN_DRIVER_LOCAL_PATH) P_OR_LATER := 1 Q_OR_LATER := 1 R_OR_LATER := 1 S_OR_LATER := 1 CPP_VERSION := c++14 ifeq ($(Q_OR_LATER),1) CPP_VERSION := c++17 endif # Configure these paths if you move the source or Khronos headers ARMNN_HEADER_PATH := $(LOCAL_PATH)/../armnn/include ARMNN_THIRD_PARTY_PATH := $(LOCAL_PATH)/../armnn/third-party ARMNN_UTILS_HEADER_PATH := $(LOCAL_PATH)/../armnn/src/armnnUtils ARMNN_THIRD_PARTY_PATH := $(LOCAL_PATH)/../armnn/third-party OPENCL_HEADER_PATH := $(LOCAL_PATH)/clframework/include NN_HEADER_PATH := $(LOCAL_PATH)/../../packages/modules/NeuralNetworks/common/include \ $(LOCAL_PATH)/../../packages/modules/NeuralNetworks/runtime/include # Variables to control CL/NEON/reference backend support # Set them to '0' to disable support for a specific backend ARMNN_COMPUTE_CL_ENABLED := 0 ARMNN_COMPUTE_NEON_ENABLED := 0 ARMNN_REF_ENABLED := 1 ARMNN_ETHOSN_ENABLED := 1 ifeq ($(ARMNN_COMPUTE_CL_ENABLE),1) ARMNN_COMPUTE_CL_ENABLED := 1 endif ifeq ($(ARMNN_COMPUTE_NEON_ENABLE),1) ARMNN_COMPUTE_NEON_ENABLED := 1 endif ifeq ($(ARMNN_REF_ENABLE),0) ARMNN_REF_ENABLED := 0 endif ifeq ($(ARMNN_ETHOSN_ENABLE),0) ARMNN_ETHOSN_ENABLED := 0 endif # Variable to control inclusion of libOpenCL shared library ARMNN_INCLUDE_LIBOPENCL := $(ARMNN_COMPUTE_CL_ENABLED) ifeq ($(ARMNN_LIBOPENCL),0) ARMNN_INCLUDE_LIBOPENCL := 0 endif # Variable to control retire rate of priority queue RETIRE_RATE := 3 ####################### # libarmnn-driver@1.0 # ####################### include $(CLEAR_VARS) LOCAL_MODULE := libarmnn-driver@1.0 LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0 SPDX-license-identifier-MIT LOCAL_LICENSE_CONDITIONS := notice 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 # Mark source files as dependent on Android.mk LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk LOCAL_C_INCLUDES := \ $(ARMNN_HEADER_PATH) \ $(ARMNN_THIRD_PARTY_PATH) \ $(ARMNN_UTILS_HEADER_PATH) \ $(ARMNN_THIRD_PARTY_PATH) \ $(OPENCL_HEADER_PATH) \ $(NN_HEADER_PATH) LOCAL_CFLAGS := \ -std=$(CPP_VERSION) \ -fexceptions \ -Werror \ -Wno-format-security # Required to build with the changes made to the Android ML framework specific to Android R ifeq ($(R_OR_LATER),1) LOCAL_CFLAGS+= \ -DARMNN_ANDROID_R endif ifeq ($(S_OR_LATER),1) LOCAL_CFLAGS+= \ -DARMNN_ANDROID_S endif ifeq ($(ARMNN_DRIVER_DEBUG),1) LOCAL_CFLAGS+= \ -UNDEBUG endif # ARMNN_DRIVER_DEBUG == 1 ifeq ($(ARMNN_COMPUTE_CL_ENABLED),1) LOCAL_CFLAGS += \ -DARMCOMPUTECL_ENABLED endif # ARMNN_COMPUTE_CL_ENABLED == 1 ifeq ($(ARMNN_COMPUTE_NEON_ENABLED),1) LOCAL_CFLAGS += \ -DARMCOMPUTENEON_ENABLED endif # ARMNN_COMPUTE_NEON_ENABLED == 1 ifeq ($(ARMNN_REF_ENABLED),1) LOCAL_CFLAGS += \ -DARMNNREF_ENABLED endif # ARMNN_REF_ENABLED == 1 ifeq ($(ARMNN_ETHOSN_ENABLED),1) LOCAL_CFLAGS += \ -DARMNNETHOSN_ENABLED endif # ARMNN_ETHOSN_ENABLED == 1 LOCAL_SRC_FILES := \ 1.0/ArmnnDriverImpl.cpp \ 1.0/HalPolicy.cpp \ ArmnnDriverImpl.cpp \ DriverOptions.cpp \ ArmnnDevice.cpp \ ArmnnPreparedModel.cpp \ ModelToINetworkConverter.cpp \ RequestThread.cpp \ Utils.cpp \ ConversionUtils.cpp LOCAL_STATIC_LIBRARIES := \ libneuralnetworks_common \ arm_compute_library 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 ifeq ($(P_OR_LATER),1) # Required to build the 1.0 version of the NN Driver on Android P and later versions, # as the 1.0 version of the NN API needs the 1.1 HAL headers to be included regardless. LOCAL_SHARED_LIBRARIES+= \ android.hardware.neuralnetworks@1.1 endif # PLATFORM_VERSION == 9 ifeq ($(Q_OR_LATER),1) LOCAL_SHARED_LIBRARIES+= \ libnativewindow \ libui \ libfmq \ libcutils \ android.hardware.neuralnetworks@1.2 endif # Q or later ifeq ($(R_OR_LATER),1) LOCAL_SHARED_LIBRARIES+= \ libsync \ android.hardware.neuralnetworks@1.3 endif # R or later ifeq ($(ARMNN_INCLUDE_LIBOPENCL),1) ifeq (,$(realpath $(TOPDIR)vendor/arm/mali/valhall/Android.bp)) LOCAL_SHARED_LIBRARIES += libGLES_mali else LOCAL_SHARED_LIBRARIES += libOpenCL endif endif include $(BUILD_STATIC_LIBRARY) ifeq ($(P_OR_LATER),1) # The following target is available starting from Android P ####################### # libarmnn-driver@1.1 # ####################### include $(CLEAR_VARS) LOCAL_MODULE := libarmnn-driver@1.1 LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0 SPDX-license-identifier-MIT LOCAL_LICENSE_CONDITIONS := notice 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 #PRODUCT_PACKAGES_ENG := libarmnn-driver@1.1 LOCAL_ARM_MODE := arm LOCAL_PROPRIETARY_MODULE := true # Mark source files as dependent on Android.mk LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk LOCAL_C_INCLUDES := \ $(ARMNN_HEADER_PATH) \ $(ARMNN_THIRD_PARTY_PATH) \ $(ARMNN_UTILS_HEADER_PATH) \ $(ARMNN_THIRD_PARTY_PATH) \ $(OPENCL_HEADER_PATH) \ $(NN_HEADER_PATH) LOCAL_CFLAGS := \ -std=$(CPP_VERSION) \ -fexceptions \ -Werror \ -Wno-format-security \ -DARMNN_ANDROID_NN_V1_1 ifeq ($(ARMNN_DRIVER_DEBUG),1) LOCAL_CFLAGS+= \ -UNDEBUG endif # ARMNN_DRIVER_DEBUG == 1 # Required to build with the changes made to the Android ML framework specific to Android R ifeq ($(R_OR_LATER),1) LOCAL_CFLAGS+= \ -DARMNN_ANDROID_R endif ifeq ($(S_OR_LATER),1) LOCAL_CFLAGS+= \ -DARMNN_ANDROID_S endif ifeq ($(ARMNN_COMPUTE_CL_ENABLED),1) LOCAL_CFLAGS += \ -DARMCOMPUTECL_ENABLED endif # ARMNN_COMPUTE_CL_ENABLED == 1 ifeq ($(ARMNN_COMPUTE_NEON_ENABLED),1) LOCAL_CFLAGS += \ -DARMCOMPUTENEON_ENABLED endif # ARMNN_COMPUTE_NEON_ENABLED == 1 ifeq ($(ARMNN_REF_ENABLED),1) LOCAL_CFLAGS += \ -DARMNNREF_ENABLED endif # ARMNN_REF_ENABLED == 1 ifeq ($(ARMNN_ETHOSN_ENABLED),1) LOCAL_CFLAGS += \ -DARMNNETHOSN_ENABLED endif # ARMNN_ETHOSN_ENABLED == 1 LOCAL_SRC_FILES := \ 1.0/ArmnnDriverImpl.cpp \ 1.0/HalPolicy.cpp \ 1.1/ArmnnDriverImpl.cpp \ 1.1/HalPolicy.cpp \ ArmnnDriverImpl.cpp \ DriverOptions.cpp \ ArmnnDevice.cpp \ ArmnnPreparedModel.cpp \ ModelToINetworkConverter.cpp \ RequestThread.cpp \ Utils.cpp \ ConversionUtils.cpp LOCAL_STATIC_LIBRARIES := \ libneuralnetworks_common \ arm_compute_library LOCAL_WHOLE_STATIC_LIBRARIES := libarmnn LOCAL_SHARED_LIBRARIES := \ libbase \ libhidlbase \ libhidltransport \ libhidlmemory \ liblog \ libutils \ android.hardware.neuralnetworks@1.0 \ android.hardware.neuralnetworks@1.1 \ android.hidl.allocator@1.0 \ android.hidl.memory@1.0 ifeq ($(Q_OR_LATER),1) LOCAL_SHARED_LIBRARIES+= \ libnativewindow \ libui \ libfmq \ libcutils \ android.hardware.neuralnetworks@1.2 endif # PLATFORM_VERSION == Q ifeq ($(R_OR_LATER),1) LOCAL_SHARED_LIBRARIES+= \ libsync \ android.hardware.neuralnetworks@1.3 endif # R or later ifeq ($(ARMNN_INCLUDE_LIBOPENCL),1) ifeq (,$(realpath $(TOPDIR)vendor/arm/mali/valhall/Android.bp)) LOCAL_SHARED_LIBRARIES += libGLES_mali else LOCAL_SHARED_LIBRARIES += libOpenCL endif endif include $(BUILD_STATIC_LIBRARY) endif # PLATFORM_VERSION == 9 ifeq ($(Q_OR_LATER),1) # The following target is available starting from Android Q ####################### # libarmnn-driver@1.2 # ####################### include $(CLEAR_VARS) LOCAL_MODULE := libarmnn-driver@1.2 LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0 SPDX-license-identifier-MIT LOCAL_LICENSE_CONDITIONS := notice LOCAL_NOTICE_FILE := $(LOCAL_PATH)/LICENSE LOCAL_MODULE_TAGS := optional LOCAL_ARM_MODE := arm LOCAL_PROPRIETARY_MODULE := true # Mark source files as dependent on Android.mk LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk LOCAL_C_INCLUDES := \ $(ARMNN_HEADER_PATH) \ $(ARMNN_THIRD_PARTY_PATH) \ $(ARMNN_UTILS_HEADER_PATH) \ $(ARMNN_THIRD_PARTY_PATH) \ $(OPENCL_HEADER_PATH) \ $(NN_HEADER_PATH) LOCAL_CFLAGS := \ -std=$(CPP_VERSION) \ -fexceptions \ -Werror \ -Wno-format-security \ -DARMNN_ANDROID_NN_V1_2 ifeq ($(ARMNN_DRIVER_DEBUG),1) LOCAL_CFLAGS+= \ -UNDEBUG endif # ARMNN_DRIVER_DEBUG == 1 # Required to build with the changes made to the Android ML framework specific to Android R ifeq ($(R_OR_LATER),1) LOCAL_CFLAGS+= \ -DARMNN_ANDROID_R endif ifeq ($(S_OR_LATER),1) LOCAL_CFLAGS+= \ -DARMNN_ANDROID_S endif ifeq ($(ARMNN_COMPUTE_CL_ENABLED),1) LOCAL_CFLAGS += \ -DARMCOMPUTECL_ENABLED endif # ARMNN_COMPUTE_CL_ENABLED == 1 ifeq ($(ARMNN_COMPUTE_NEON_ENABLED),1) LOCAL_CFLAGS += \ -DARMCOMPUTENEON_ENABLED endif # ARMNN_COMPUTE_NEON_ENABLED == 1 ifeq ($(ARMNN_REF_ENABLED),1) LOCAL_CFLAGS += \ -DARMNNREF_ENABLED endif # ARMNN_REF_ENABLED == 1 ifeq ($(ARMNN_ETHOSN_ENABLED),1) LOCAL_CFLAGS += \ -DARMNNETHOSN_ENABLED endif # ARMNN_ETHOSN_ENABLED == 1 LOCAL_SRC_FILES := \ 1.0/ArmnnDriverImpl.cpp \ 1.0/HalPolicy.cpp \ 1.1/ArmnnDriverImpl.cpp \ 1.1/HalPolicy.cpp \ 1.2/ArmnnDriverImpl.cpp \ 1.2/HalPolicy.cpp \ ArmnnDevice.cpp \ ArmnnDriverImpl.cpp \ ArmnnPreparedModel.cpp \ ArmnnPreparedModel_1_2.cpp \ ConversionUtils.cpp \ DriverOptions.cpp \ ModelToINetworkConverter.cpp \ RequestThread.cpp \ Utils.cpp LOCAL_STATIC_LIBRARIES := \ libneuralnetworks_common \ arm_compute_library LOCAL_WHOLE_STATIC_LIBRARIES := libarmnn LOCAL_SHARED_LIBRARIES := \ libbase \ libhidlbase \ libhidltransport \ libhidlmemory \ liblog \ libutils \ libnativewindow \ libui \ libfmq \ libcutils \ android.hidl.allocator@1.0 \ android.hidl.memory@1.0 \ android.hardware.neuralnetworks@1.0 \ android.hardware.neuralnetworks@1.1 \ android.hardware.neuralnetworks@1.2 ifeq ($(R_OR_LATER),1) LOCAL_SHARED_LIBRARIES+= \ libsync \ android.hardware.neuralnetworks@1.3 endif # R or later ifeq ($(ARMNN_INCLUDE_LIBOPENCL),1) ifeq (,$(realpath $(TOPDIR)vendor/arm/mali/valhall/Android.bp)) LOCAL_SHARED_LIBRARIES += libGLES_mali else LOCAL_SHARED_LIBRARIES += libOpenCL endif endif include $(BUILD_STATIC_LIBRARY) endif # PLATFORM_VERSION == Q ifeq ($(R_OR_LATER),1) # The following target is available starting from Android R ####################### # libarmnn-driver@1.3 # ####################### include $(CLEAR_VARS) LOCAL_MODULE := libarmnn-driver@1.3 LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0 SPDX-license-identifier-MIT LOCAL_LICENSE_CONDITIONS := notice LOCAL_NOTICE_FILE := $(LOCAL_PATH)/LICENSE LOCAL_MODULE_TAGS := optional LOCAL_ARM_MODE := arm LOCAL_PROPRIETARY_MODULE := true # Mark source files as dependent on Android.mk LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk LOCAL_C_INCLUDES := \ $(ARMNN_HEADER_PATH) \ $(ARMNN_THIRD_PARTY_PATH) \ $(ARMNN_UTILS_HEADER_PATH) \ $(ARMNN_THIRD_PARTY_PATH) \ $(OPENCL_HEADER_PATH) \ $(NN_HEADER_PATH) LOCAL_CFLAGS := \ -std=$(CPP_VERSION) \ -fexceptions \ -Werror \ -Wno-format-security \ -DARMNN_ANDROID_NN_V1_3 \ -DARMNN_ANDROID_R \ -DARMNN_ANDROID_S ifeq ($(ARMNN_DRIVER_DEBUG),1) LOCAL_CFLAGS+= \ -UNDEBUG endif # ARMNN_DRIVER_DEBUG == 1 ifeq ($(ARMNN_COMPUTE_CL_ENABLED),1) LOCAL_CFLAGS += \ -DARMCOMPUTECL_ENABLED endif # ARMNN_COMPUTE_CL_ENABLED == 1 ifeq ($(ARMNN_COMPUTE_NEON_ENABLED),1) LOCAL_CFLAGS += \ -DARMCOMPUTENEON_ENABLED endif # ARMNN_COMPUTE_NEON_ENABLED == 1 ifeq ($(ARMNN_REF_ENABLED),1) LOCAL_CFLAGS += \ -DARMNNREF_ENABLED endif # ARMNN_REF_ENABLED == 1 ifeq ($(ARMNN_ETHOSN_ENABLED),1) LOCAL_CFLAGS += \ -DARMNNETHOSN_ENABLED endif # ARMNN_ETHOSN_ENABLED == 1 LOCAL_CFLAGS += \ -DRETIRE_RATE=$(RETIRE_RATE) LOCAL_SRC_FILES := \ 1.0/ArmnnDriverImpl.cpp \ 1.0/HalPolicy.cpp \ 1.1/ArmnnDriverImpl.cpp \ 1.1/HalPolicy.cpp \ 1.2/ArmnnDriverImpl.cpp \ 1.2/HalPolicy.cpp \ 1.3/ArmnnDriverImpl.cpp \ 1.3/HalPolicy.cpp \ ArmnnDevice.cpp \ ArmnnDriverImpl.cpp \ ArmnnPreparedModel.cpp \ ArmnnPreparedModel_1_2.cpp \ ArmnnPreparedModel_1_3.cpp \ ConversionUtils.cpp \ DriverOptions.cpp \ ModelToINetworkConverter.cpp \ RequestThread.cpp \ RequestThread_1_3.cpp \ Utils.cpp LOCAL_STATIC_LIBRARIES := \ libneuralnetworks_common \ arm_compute_library LOCAL_WHOLE_STATIC_LIBRARIES := libarmnn LOCAL_SHARED_LIBRARIES := \ libbase \ libhidlbase \ libhidltransport \ libhidlmemory \ liblog \ libutils \ libnativewindow \ libui \ libfmq \ libcutils \ android.hidl.allocator@1.0 \ android.hidl.memory@1.0 \ libsync \ android.hardware.neuralnetworks@1.0 \ android.hardware.neuralnetworks@1.1 \ android.hardware.neuralnetworks@1.2 \ android.hardware.neuralnetworks@1.3 ifeq ($(ARMNN_INCLUDE_LIBOPENCL),1) ifeq (,$(realpath $(TOPDIR)vendor/arm/mali/valhall/Android.bp)) LOCAL_SHARED_LIBRARIES += libGLES_mali else LOCAL_SHARED_LIBRARIES += libOpenCL endif endif include $(BUILD_STATIC_LIBRARY) endif # PLATFORM_VERSION == R ##################################################### # android.hardware.neuralnetworks@1.0-service-armnn # ##################################################### include $(CLEAR_VARS) LOCAL_MODULE := android.hardware.neuralnetworks@1.0-service-armnn LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0 SPDX-license-identifier-MIT LOCAL_LICENSE_CONDITIONS := notice LOCAL_NOTICE_FILE := $(LOCAL_PATH)/LICENSE LOCAL_INIT_RC := android.hardware.neuralnetworks@1.0-service-armnn.rc 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_MODULE_RELATIVE_PATH := hw LOCAL_PROPRIETARY_MODULE := true # Mark source files as dependent on Android.mk LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk LOCAL_C_INCLUDES := \ $(ARMNN_HEADER_PATH) \ $(ARMNN_THIRD_PARTY_PATH) \ $(NN_HEADER_PATH) LOCAL_CFLAGS := \ -std=$(CPP_VERSION) \ -fexceptions ifeq ($(ARMNN_DRIVER_DEBUG),1) LOCAL_CFLAGS += \ -UNDEBUG endif # ARMNN_DRIVER_DEBUG == 1 # Required to build with the changes made to the Android ML framework specific to Android R ifeq ($(R_OR_LATER),1) LOCAL_CFLAGS+= \ -DARMNN_ANDROID_R endif ifeq ($(S_OR_LATER),1) LOCAL_CFLAGS+= \ -DARMNN_ANDROID_S endif LOCAL_SRC_FILES := \ service.cpp LOCAL_STATIC_LIBRARIES := \ libneuralnetworks_common \ arm_compute_library LOCAL_WHOLE_STATIC_LIBRARIES := \ libarmnn-driver@1.0 LOCAL_SHARED_LIBRARIES := \ libbase \ libhidlbase \ libhidltransport \ libhidlmemory \ libdl \ libhardware \ liblog \ libtextclassifier_hash \ libutils \ android.hardware.neuralnetworks@1.0 \ android.hidl.allocator@1.0 \ android.hidl.memory@1.0 ifeq ($(P_OR_LATER),1) # Required to build the 1.0 version of the NN Driver on Android P and later versions, # as the 1.0 version of the NN API needs the 1.1 HAL headers to be included regardless. LOCAL_SHARED_LIBRARIES+= \ android.hardware.neuralnetworks@1.1 endif # PLATFORM_VERSION == 9 ifeq ($(Q_OR_LATER),1) LOCAL_SHARED_LIBRARIES+= \ libnativewindow \ libui \ libfmq \ libcutils \ android.hardware.neuralnetworks@1.2 endif # PLATFORM_VERSION == Q ifeq ($(R_OR_LATER),1) LOCAL_SHARED_LIBRARIES+= android.hardware.neuralnetworks@1.3 endif # PLATFORM_VERSION == R ifeq ($(R_OR_LATER),1) LOCAL_SHARED_LIBRARIES+= \ libsync \ android.hardware.neuralnetworks@1.3 endif # R or later ifeq ($(ARMNN_INCLUDE_LIBOPENCL),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) ifeq ($(P_OR_LATER),1) # The following target is available starting from Android P ##################################################### # android.hardware.neuralnetworks@1.1-service-armnn # ##################################################### include $(CLEAR_VARS) LOCAL_MODULE := android.hardware.neuralnetworks@1.1-service-armnn LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0 SPDX-license-identifier-MIT LOCAL_LICENSE_CONDITIONS := notice LOCAL_NOTICE_FILE := $(LOCAL_PATH)/LICENSE LOCAL_INIT_RC := android.hardware.neuralnetworks@1.1-service-armnn.rc 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_MODULE_RELATIVE_PATH := hw LOCAL_PROPRIETARY_MODULE := true # Mark source files as dependent on Android.mk LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk LOCAL_C_INCLUDES := \ $(ARMNN_HEADER_PATH) \ $(ARMNN_THIRD_PARTY_PATH) \ $(NN_HEADER_PATH) LOCAL_CFLAGS := \ -std=$(CPP_VERSION) \ -fexceptions \ -DARMNN_ANDROID_NN_V1_1 ifeq ($(ARMNN_DRIVER_DEBUG),1) LOCAL_CFLAGS += \ -UNDEBUG endif # ARMNN_DRIVER_DEBUG == 1 # Required to build with the changes made to the Android ML framework specific to Android R ifeq ($(R_OR_LATER),1) LOCAL_CFLAGS+= \ -DARMNN_ANDROID_R endif ifeq ($(S_OR_LATER),1) LOCAL_CFLAGS+= \ -DARMNN_ANDROID_S endif LOCAL_SRC_FILES := \ service.cpp LOCAL_STATIC_LIBRARIES := \ libneuralnetworks_common \ arm_compute_library LOCAL_WHOLE_STATIC_LIBRARIES := \ libarmnn-driver@1.1 LOCAL_SHARED_LIBRARIES := \ libbase \ libhidlbase \ libhidltransport \ libhidlmemory \ libdl \ libhardware \ liblog \ libtextclassifier_hash \ libutils \ android.hardware.neuralnetworks@1.0 \ android.hardware.neuralnetworks@1.1 \ android.hidl.allocator@1.0 \ android.hidl.memory@1.0 ifeq ($(Q_OR_LATER),1) LOCAL_SHARED_LIBRARIES+= \ libnativewindow \ libui \ libfmq \ libcutils \ android.hardware.neuralnetworks@1.2 endif # PLATFORM_VERSION == Q ifeq ($(R_OR_LATER),1) LOCAL_SHARED_LIBRARIES+= \ libsync \ android.hardware.neuralnetworks@1.3 endif # PLATFORM_VERSION == R ifeq ($(ARMNN_INCLUDE_LIBOPENCL),1) ifeq (,$(realpath $(TOPDIR)vendor/arm/mali/valhall/Android.bp)) LOCAL_SHARED_LIBRARIES += libGLES_mali else LOCAL_SHARED_LIBRARIES += libOpenCL endif endif ifeq ($(R_OR_LATER),1) LOCAL_SHARED_LIBRARIES+= android.hardware.neuralnetworks@1.3 endif # PLATFORM_VERSION == R include $(BUILD_EXECUTABLE) endif # PLATFORM_VERSION == 9 ifeq ($(Q_OR_LATER),1) # The following target is available starting from Android Q ##################################################### # android.hardware.neuralnetworks@1.2-service-armnn # ##################################################### include $(CLEAR_VARS) LOCAL_MODULE := android.hardware.neuralnetworks@1.2-service-armnn LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0 SPDX-license-identifier-MIT LOCAL_LICENSE_CONDITIONS := notice LOCAL_NOTICE_FILE := $(LOCAL_PATH)/LICENSE LOCAL_INIT_RC := android.hardware.neuralnetworks@1.2-service-armnn.rc LOCAL_MODULE_TAGS := optional LOCAL_ARM_MODE := arm LOCAL_MODULE_RELATIVE_PATH := hw LOCAL_PROPRIETARY_MODULE := true # Mark source files as dependent on Android.mk LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk LOCAL_C_INCLUDES := \ $(ARMNN_HEADER_PATH) \ $(ARMNN_THIRD_PARTY_PATH) \ $(NN_HEADER_PATH) LOCAL_CFLAGS := \ -std=$(CPP_VERSION) \ -fexceptions \ -DARMNN_ANDROID_NN_V1_2 \ -Wno-unused-variable \ -Wno-unneeded-internal-declaration \ -Wno-unused-function \ -Wno-unused-local-typedef ifeq ($(ARMNN_DRIVER_DEBUG),1) LOCAL_CFLAGS += \ -UNDEBUG endif # ARMNN_DRIVER_DEBUG == 1 # Required to build with the changes made to the Android ML framework specific to Android R ifeq ($(R_OR_LATER),1) LOCAL_CFLAGS+= \ -DARMNN_ANDROID_R endif ifeq ($(S_OR_LATER),1) LOCAL_CFLAGS+= \ -DARMNN_ANDROID_S endif LOCAL_SRC_FILES := \ service.cpp LOCAL_STATIC_LIBRARIES := \ libneuralnetworks_common \ arm_compute_library LOCAL_WHOLE_STATIC_LIBRARIES := \ libarmnn-driver@1.2 LOCAL_SHARED_LIBRARIES := \ libbase \ libhidlbase \ libhidltransport \ libhidlmemory \ libdl \ libhardware \ liblog \ libtextclassifier_hash \ libutils \ libnativewindow \ libui \ libfmq \ libcutils \ android.hidl.allocator@1.0 \ android.hidl.memory@1.0 \ android.hardware.neuralnetworks@1.0 \ android.hardware.neuralnetworks@1.1 \ android.hardware.neuralnetworks@1.2 \ android.hardware.neuralnetworks@1.3 ifeq ($(R_OR_LATER),1) LOCAL_SHARED_LIBRARIES+= \ libsync \ android.hardware.neuralnetworks@1.3 endif # R or later ifeq ($(ARMNN_INCLUDE_LIBOPENCL),1) ifeq (,$(realpath $(TOPDIR)vendor/arm/mali/valhall/Android.bp)) LOCAL_SHARED_LIBRARIES += libGLES_mali else LOCAL_SHARED_LIBRARIES += libOpenCL endif LOCAL_LDFLAGS_32 := -Wl,-rpath,/vendor/lib/egl LOCAL_LDFLAGS_64 := -Wl,-rpath,/vendor/lib64/egl endif include $(BUILD_EXECUTABLE) endif # PLATFORM_VERSION == Q ifeq ($(R_OR_LATER),1) # The following target is available starting from Android R ##################################################### # android.hardware.neuralnetworks@1.3-service-armnn # ##################################################### include $(CLEAR_VARS) LOCAL_MODULE := android.hardware.neuralnetworks@1.3-service-armnn LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0 SPDX-license-identifier-MIT LOCAL_LICENSE_CONDITIONS := notice LOCAL_NOTICE_FILE := $(LOCAL_PATH)/LICENSE LOCAL_INIT_RC := android.hardware.neuralnetworks@1.3-service-armnn.rc LOCAL_MODULE_TAGS := optional LOCAL_ARM_MODE := arm LOCAL_MODULE_RELATIVE_PATH := hw LOCAL_PROPRIETARY_MODULE := true # Mark source files as dependent on Android.mk LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk LOCAL_C_INCLUDES := \ $(ARMNN_HEADER_PATH) \ $(ARMNN_THIRD_PARTY_PATH) \ $(NN_HEADER_PATH) LOCAL_CFLAGS := \ -std=$(CPP_VERSION) \ -fexceptions \ -DARMNN_ANDROID_NN_V1_3 \ -DARMNN_ANDROID_R \ -DARMNN_ANDROID_S \ -Wno-unused-variable \ -Wno-unneeded-internal-declaration \ -Wno-unused-function \ -Wno-unused-local-typedef ifeq ($(ARMNN_DRIVER_DEBUG),1) LOCAL_CFLAGS += \ -UNDEBUG endif # ARMNN_DRIVER_DEBUG == 1 LOCAL_SRC_FILES := \ service.cpp LOCAL_STATIC_LIBRARIES := \ libneuralnetworks_common \ arm_compute_library LOCAL_WHOLE_STATIC_LIBRARIES := \ libarmnn-driver@1.3 LOCAL_SHARED_LIBRARIES := \ libbase \ libhidlbase \ libhidltransport \ libhidlmemory \ libdl \ libhardware \ liblog \ libtextclassifier_hash \ libutils \ libnativewindow \ libui \ libfmq \ libcutils \ libsync \ android.hidl.allocator@1.0 \ android.hidl.memory@1.0 \ android.hardware.neuralnetworks@1.0 \ android.hardware.neuralnetworks@1.1 \ android.hardware.neuralnetworks@1.2 \ android.hardware.neuralnetworks@1.3 ifeq ($(ARMNN_INCLUDE_LIBOPENCL),1) ifeq (,$(realpath $(TOPDIR)vendor/arm/mali/valhall/Android.bp)) LOCAL_SHARED_LIBRARIES += libGLES_mali else LOCAL_SHARED_LIBRARIES += libOpenCL endif LOCAL_LDFLAGS_32 := -Wl,-rpath,/vendor/lib/egl LOCAL_LDFLAGS_64 := -Wl,-rpath,/vendor/lib64/egl endif include $(BUILD_EXECUTABLE) endif # PLATFORM_VERSION == R ########################## # armnn module and tests # ########################## # Note we use ANDROID_NN_DRIVER_LOCAL_PATH rather than LOCAL_PATH because LOCAL_PATH will be overwritten # when including other .mk files that set it. #include $(ANDROID_NN_DRIVER_LOCAL_PATH)/armnn/Android.mk #include $(ANDROID_NN_DRIVER_LOCAL_PATH)/test/Android.mk