From d6539c58519962acd8967e93ceb2da049631c832 Mon Sep 17 00:00:00 2001 From: Sadik Armagan Date: Wed, 22 May 2019 18:00:30 +0100 Subject: IVGCVSW-2911 Add Android Q support to android-nn-driver infrastructure * Updated Android.mk to build Android Q * Added androidnn.go to inject cpp flags for Q * Create Runtime when ACL is not enabled Change-Id: Ia3e7a8e484fc81ce63998a65e29753cbf941173c Signed-off-by: Sadik Armagan Signed-off-by: Kevin May --- Android.mk | 130 +++++++++++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 119 insertions(+), 11 deletions(-) (limited to 'Android.mk') diff --git a/Android.mk b/Android.mk index 3d23ecc7..8d2fe9f7 100644 --- a/Android.mk +++ b/Android.mk @@ -6,6 +6,25 @@ ANDROID_NN_DRIVER_LOCAL_PATH := $(call my-dir) LOCAL_PATH := $(ANDROID_NN_DRIVER_LOCAL_PATH) +P_OR_LATER := 0 +Q_OR_LATER := 0 + +ifeq ($(PLATFORM_VERSION),9) +P_OR_LATER := 1 +endif # PLATFORM_VERSION == 9 +ifeq ($(PLATFORM_VERSION),P) +P_OR_LATER := 1 +endif # PLATFORM_VERSION == P + +ifeq ($(PLATFORM_VERSION),10) +P_OR_LATER := 1 +Q_OR_LATER := 1 +endif # PLATFORM_VERSION == 10 +ifeq ($(PLATFORM_VERSION),Q) +P_OR_LATER := 1 +Q_OR_LATER := 1 +endif # PLATFORM_VERSION == Q + # Configure these paths if you move the source or Khronos headers ARMNN_HEADER_PATH := $(LOCAL_PATH)/armnn/include ARMNN_UTILS_HEADER_PATH := $(LOCAL_PATH)/armnn/src/armnnUtils @@ -17,13 +36,26 @@ NN_HEADER_PATH := $(LOCAL_PATH)/../../../frameworks/ml/nn/runtime/include ARMNN_COMPUTE_CL_ENABLED := 1 ARMNN_COMPUTE_NEON_ENABLED := 1 +ifeq ($(ARMNN_COMPUTE_CL_ENABLE),0) +ARMNN_COMPUTE_CL_ENABLED := 0 +endif + +ifeq ($(ARMNN_COMPUTE_NEON_ENABLE),0) +ARMNN_COMPUTE_NEON_ENABLED := 0 +endif + ####################### # libarmnn-driver@1.0 # ####################### include $(CLEAR_VARS) LOCAL_MODULE := libarmnn-driver@1.0 +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 @@ -40,20 +72,24 @@ LOCAL_CFLAGS := \ -fexceptions \ -Werror \ -Wno-format-security -ifeq ($(PLATFORM_VERSION),9) + +ifeq ($(P_OR_LATER),1) # Required to build with the changes made to the Android ML framework starting from Android P, # regardless of the HAL version used for the build. LOCAL_CFLAGS+= \ -DARMNN_ANDROID_P endif # PLATFORM_VERSION == 9 + 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 @@ -90,18 +126,32 @@ LOCAL_SHARED_LIBRARIES := \ libutils \ android.hardware.neuralnetworks@1.0 \ android.hidl.allocator@1.0 \ - android.hidl.memory@1.0 \ - libOpenCL -ifeq ($(PLATFORM_VERSION),9) + 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 ($(ARMNN_COMPUTE_CL_ENABLED),1) +LOCAL_SHARED_LIBRARIES+= \ + libOpenCL +endif + include $(BUILD_STATIC_LIBRARY) -ifeq ($(PLATFORM_VERSION),9) +ifeq ($(P_OR_LATER),1) # The following target is available starting from Android P ####################### @@ -110,7 +160,13 @@ ifeq ($(PLATFORM_VERSION),9) include $(CLEAR_VARS) LOCAL_MODULE := libarmnn-driver@1.1 +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 @@ -129,14 +185,17 @@ LOCAL_CFLAGS := \ -Wno-format-security \ -DARMNN_ANDROID_P \ -DARMNN_ANDROID_NN_V1_1 + 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 @@ -176,8 +235,21 @@ LOCAL_SHARED_LIBRARIES := \ android.hardware.neuralnetworks@1.0 \ android.hardware.neuralnetworks@1.1 \ android.hidl.allocator@1.0 \ - android.hidl.memory@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 ($(ARMNN_COMPUTE_CL_ENABLED),1) +LOCAL_SHARED_LIBRARIES+= \ libOpenCL +endif include $(BUILD_STATIC_LIBRARY) @@ -190,7 +262,12 @@ include $(CLEAR_VARS) LOCAL_MODULE := android.hardware.neuralnetworks@1.0-service-armnn 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 @@ -235,18 +312,31 @@ LOCAL_SHARED_LIBRARIES := \ libutils \ android.hardware.neuralnetworks@1.0 \ android.hidl.allocator@1.0 \ - android.hidl.memory@1.0 \ - libOpenCL -ifeq ($(PLATFORM_VERSION),9) + 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 ($(ARMNN_COMPUTE_CL_ENABLED),1) +LOCAL_SHARED_LIBRARIES+= \ + libOpenCL +endif include $(BUILD_EXECUTABLE) -ifeq ($(PLATFORM_VERSION),9) +ifeq ($(P_OR_LATER),1) # The following target is available starting from Android P ##################################################### @@ -256,7 +346,12 @@ include $(CLEAR_VARS) LOCAL_MODULE := android.hardware.neuralnetworks@1.1-service-armnn 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 @@ -303,8 +398,21 @@ LOCAL_SHARED_LIBRARIES := \ android.hardware.neuralnetworks@1.0 \ android.hardware.neuralnetworks@1.1 \ android.hidl.allocator@1.0 \ - android.hidl.memory@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 ($(ARMNN_COMPUTE_CL_ENABLED),1) +LOCAL_SHARED_LIBRARIES+= \ libOpenCL +endif include $(BUILD_EXECUTABLE) -- cgit v1.2.1