blob: 8d2fe9f7d3059a5a288e4b0bb3181517ba06dc1c [file] [log] [blame]
telsoa015307bc12018-03-09 13:51:08 +00001#
2# Copyright © 2017 ARM Ltd. All rights reserved.
David Beck93e48982018-09-05 13:05:09 +01003# SPDX-License-Identifier: MIT
telsoa015307bc12018-03-09 13:51:08 +00004#
5
6ANDROID_NN_DRIVER_LOCAL_PATH := $(call my-dir)
7LOCAL_PATH := $(ANDROID_NN_DRIVER_LOCAL_PATH)
8
Sadik Armagand6539c52019-05-22 18:00:30 +01009P_OR_LATER := 0
10Q_OR_LATER := 0
11
12ifeq ($(PLATFORM_VERSION),9)
13P_OR_LATER := 1
14endif # PLATFORM_VERSION == 9
15ifeq ($(PLATFORM_VERSION),P)
16P_OR_LATER := 1
17endif # PLATFORM_VERSION == P
18
19ifeq ($(PLATFORM_VERSION),10)
20P_OR_LATER := 1
21Q_OR_LATER := 1
22endif # PLATFORM_VERSION == 10
23ifeq ($(PLATFORM_VERSION),Q)
24P_OR_LATER := 1
25Q_OR_LATER := 1
26endif # PLATFORM_VERSION == Q
27
telsoa015307bc12018-03-09 13:51:08 +000028# Configure these paths if you move the source or Khronos headers
surmeh01deb3bdb2018-07-05 12:06:04 +010029ARMNN_HEADER_PATH := $(LOCAL_PATH)/armnn/include
30ARMNN_UTILS_HEADER_PATH := $(LOCAL_PATH)/armnn/src/armnnUtils
surmeh0149b9e102018-05-17 14:11:25 +010031OPENCL_HEADER_PATH := $(LOCAL_PATH)/clframework/include
telsoa015307bc12018-03-09 13:51:08 +000032NN_HEADER_PATH := $(LOCAL_PATH)/../../../frameworks/ml/nn/runtime/include
33
Matteo Martincigh01c91512019-01-31 15:40:08 +000034# Variables to control CL/NEON backend support
35# Set them to '0' to disable support for a specific backend
36ARMNN_COMPUTE_CL_ENABLED := 1
37ARMNN_COMPUTE_NEON_ENABLED := 1
38
Sadik Armagand6539c52019-05-22 18:00:30 +010039ifeq ($(ARMNN_COMPUTE_CL_ENABLE),0)
40ARMNN_COMPUTE_CL_ENABLED := 0
41endif
42
43ifeq ($(ARMNN_COMPUTE_NEON_ENABLE),0)
44ARMNN_COMPUTE_NEON_ENABLED := 0
45endif
46
telsoa01ce3e84a2018-08-31 09:31:35 +010047#######################
48# libarmnn-driver@1.0 #
49#######################
telsoa015307bc12018-03-09 13:51:08 +000050include $(CLEAR_VARS)
51
telsoa01ce3e84a2018-08-31 09:31:35 +010052LOCAL_MODULE := libarmnn-driver@1.0
Sadik Armagand6539c52019-05-22 18:00:30 +010053ifeq ($(Q_OR_LATER),1)
54# "eng" is deprecated in Android Q
55LOCAL_MODULE_TAGS := optional
56else
telsoa015307bc12018-03-09 13:51:08 +000057LOCAL_MODULE_TAGS := eng optional
Sadik Armagand6539c52019-05-22 18:00:30 +010058endif
telsoa015307bc12018-03-09 13:51:08 +000059LOCAL_ARM_MODE := arm
surmeh0149b9e102018-05-17 14:11:25 +010060LOCAL_PROPRIETARY_MODULE := true
telsoa015307bc12018-03-09 13:51:08 +000061# Mark source files as dependent on Android.mk
62LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
63
surmeh01deb3bdb2018-07-05 12:06:04 +010064LOCAL_C_INCLUDES := \
telsoa01ce3e84a2018-08-31 09:31:35 +010065 $(ARMNN_HEADER_PATH) \
66 $(ARMNN_UTILS_HEADER_PATH) \
67 $(OPENCL_HEADER_PATH) \
68 $(NN_HEADER_PATH)
telsoa015307bc12018-03-09 13:51:08 +000069
70LOCAL_CFLAGS := \
telsoa01ce3e84a2018-08-31 09:31:35 +010071 -std=c++14 \
72 -fexceptions \
73 -Werror \
74 -Wno-format-security
Sadik Armagand6539c52019-05-22 18:00:30 +010075
76ifeq ($(P_OR_LATER),1)
surmeh01deb3bdb2018-07-05 12:06:04 +010077# Required to build with the changes made to the Android ML framework starting from Android P,
78# regardless of the HAL version used for the build.
79LOCAL_CFLAGS+= \
80 -DARMNN_ANDROID_P
Matteo Martincigh69558df2018-08-31 16:18:19 +010081endif # PLATFORM_VERSION == 9
Sadik Armagand6539c52019-05-22 18:00:30 +010082
telsoa015307bc12018-03-09 13:51:08 +000083ifeq ($(ARMNN_DRIVER_DEBUG),1)
telsoa01ce3e84a2018-08-31 09:31:35 +010084LOCAL_CFLAGS+= \
85 -UNDEBUG
Matteo Martincigh69558df2018-08-31 16:18:19 +010086endif # ARMNN_DRIVER_DEBUG == 1
Sadik Armagand6539c52019-05-22 18:00:30 +010087
Matteo Martincigh01c91512019-01-31 15:40:08 +000088ifeq ($(ARMNN_COMPUTE_CL_ENABLED),1)
89LOCAL_CFLAGS += \
90 -DARMCOMPUTECL_ENABLED
91endif # ARMNN_COMPUTE_CL_ENABLED == 1
Sadik Armagand6539c52019-05-22 18:00:30 +010092
Matteo Martincigh01c91512019-01-31 15:40:08 +000093ifeq ($(ARMNN_COMPUTE_NEON_ENABLED),1)
94LOCAL_CFLAGS += \
95 -DARMCOMPUTENEON_ENABLED
96endif # ARMNN_COMPUTE_NEON_ENABLED == 1
telsoa015307bc12018-03-09 13:51:08 +000097
surmeh01deb3bdb2018-07-05 12:06:04 +010098LOCAL_SRC_FILES := \
Matteo Martincigh79250ab2018-09-04 16:28:10 +010099 1.0/ArmnnDriverImpl.cpp \
arovir01b0717b52018-09-05 17:03:25 +0100100 1.0/HalPolicy.cpp \
Matteo Martincighe48bdff2018-09-03 13:50:50 +0100101 ArmnnDriverImpl.cpp \
telsoa01ce3e84a2018-08-31 09:31:35 +0100102 DriverOptions.cpp \
103 ArmnnDevice.cpp \
104 ArmnnPreparedModel.cpp \
105 ModelToINetworkConverter.cpp \
106 RequestThread.cpp \
arovir01b0717b52018-09-05 17:03:25 +0100107 Utils.cpp \
108 ConversionUtils.cpp
telsoa015307bc12018-03-09 13:51:08 +0000109
110LOCAL_STATIC_LIBRARIES := \
telsoa01ce3e84a2018-08-31 09:31:35 +0100111 libneuralnetworks_common \
telsoa01ce3e84a2018-08-31 09:31:35 +0100112 libboost_log \
113 libboost_program_options \
114 libboost_system \
115 libboost_thread \
116 armnn-arm_compute
telsoa015307bc12018-03-09 13:51:08 +0000117
David Beckc965f3c2018-10-12 17:23:16 +0100118LOCAL_WHOLE_STATIC_LIBRARIES := libarmnn
119
surmeh01deb3bdb2018-07-05 12:06:04 +0100120LOCAL_SHARED_LIBRARIES := \
telsoa01ce3e84a2018-08-31 09:31:35 +0100121 libbase \
122 libhidlbase \
123 libhidltransport \
124 libhidlmemory \
125 liblog \
126 libutils \
127 android.hardware.neuralnetworks@1.0 \
128 android.hidl.allocator@1.0 \
Sadik Armagand6539c52019-05-22 18:00:30 +0100129 android.hidl.memory@1.0
130
131ifeq ($(P_OR_LATER),1)
surmeh01deb3bdb2018-07-05 12:06:04 +0100132# Required to build the 1.0 version of the NN Driver on Android P and later versions,
133# as the 1.0 version of the NN API needs the 1.1 HAL headers to be included regardless.
134LOCAL_SHARED_LIBRARIES+= \
telsoa01ce3e84a2018-08-31 09:31:35 +0100135 android.hardware.neuralnetworks@1.1
Matteo Martincigh69558df2018-08-31 16:18:19 +0100136endif # PLATFORM_VERSION == 9
telsoa015307bc12018-03-09 13:51:08 +0000137
Sadik Armagand6539c52019-05-22 18:00:30 +0100138ifeq ($(Q_OR_LATER),1)
139LOCAL_SHARED_LIBRARIES+= \
140 libnativewindow \
141 libui \
142 libfmq \
143 libcutils \
144 android.hardware.neuralnetworks@1.2
145endif # PLATFORM_VERSION == Q
146
147ifeq ($(ARMNN_COMPUTE_CL_ENABLED),1)
148LOCAL_SHARED_LIBRARIES+= \
149 libOpenCL
150endif
151
telsoa015307bc12018-03-09 13:51:08 +0000152include $(BUILD_STATIC_LIBRARY)
153
Sadik Armagand6539c52019-05-22 18:00:30 +0100154ifeq ($(P_OR_LATER),1)
Matteo Martincigh69558df2018-08-31 16:18:19 +0100155# The following target is available starting from Android P
156
telsoa01ce3e84a2018-08-31 09:31:35 +0100157#######################
158# libarmnn-driver@1.1 #
159#######################
160include $(CLEAR_VARS)
161
162LOCAL_MODULE := libarmnn-driver@1.1
Sadik Armagand6539c52019-05-22 18:00:30 +0100163ifeq ($(Q_OR_LATER),1)
164# "eng" is deprecated in Android Q
165LOCAL_MODULE_TAGS := optional
166else
telsoa01ce3e84a2018-08-31 09:31:35 +0100167LOCAL_MODULE_TAGS := eng optional
Sadik Armagand6539c52019-05-22 18:00:30 +0100168endif
169#PRODUCT_PACKAGES_ENG := libarmnn-driver@1.1
telsoa01ce3e84a2018-08-31 09:31:35 +0100170LOCAL_ARM_MODE := arm
171LOCAL_PROPRIETARY_MODULE := true
172# Mark source files as dependent on Android.mk
173LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
174
175LOCAL_C_INCLUDES := \
176 $(ARMNN_HEADER_PATH) \
177 $(ARMNN_UTILS_HEADER_PATH) \
178 $(OPENCL_HEADER_PATH) \
179 $(NN_HEADER_PATH)
180
181LOCAL_CFLAGS := \
182 -std=c++14 \
183 -fexceptions \
184 -Werror \
185 -Wno-format-security \
186 -DARMNN_ANDROID_P \
187 -DARMNN_ANDROID_NN_V1_1
Sadik Armagand6539c52019-05-22 18:00:30 +0100188
telsoa01ce3e84a2018-08-31 09:31:35 +0100189ifeq ($(ARMNN_DRIVER_DEBUG),1)
190LOCAL_CFLAGS+= \
191 -UNDEBUG
Matteo Martincigh69558df2018-08-31 16:18:19 +0100192endif # ARMNN_DRIVER_DEBUG == 1
Sadik Armagand6539c52019-05-22 18:00:30 +0100193
Matteo Martincigh01c91512019-01-31 15:40:08 +0000194ifeq ($(ARMNN_COMPUTE_CL_ENABLED),1)
195LOCAL_CFLAGS += \
196 -DARMCOMPUTECL_ENABLED
197endif # ARMNN_COMPUTE_CL_ENABLED == 1
Sadik Armagand6539c52019-05-22 18:00:30 +0100198
Matteo Martincigh01c91512019-01-31 15:40:08 +0000199ifeq ($(ARMNN_COMPUTE_NEON_ENABLED),1)
200LOCAL_CFLAGS += \
201 -DARMCOMPUTENEON_ENABLED
202endif # ARMNN_COMPUTE_NEON_ENABLED == 1
telsoa01ce3e84a2018-08-31 09:31:35 +0100203
204LOCAL_SRC_FILES := \
Matteo Martincigh79250ab2018-09-04 16:28:10 +0100205 1.0/ArmnnDriverImpl.cpp \
arovir01b0717b52018-09-05 17:03:25 +0100206 1.0/HalPolicy.cpp \
Matteo Martincigh79250ab2018-09-04 16:28:10 +0100207 1.1/ArmnnDriverImpl.cpp \
arovir01b0717b52018-09-05 17:03:25 +0100208 1.1/HalPolicy.cpp \
Matteo Martincighe48bdff2018-09-03 13:50:50 +0100209 ArmnnDriverImpl.cpp \
telsoa01ce3e84a2018-08-31 09:31:35 +0100210 DriverOptions.cpp \
211 ArmnnDevice.cpp \
212 ArmnnPreparedModel.cpp \
213 ModelToINetworkConverter.cpp \
214 RequestThread.cpp \
arovir01b0717b52018-09-05 17:03:25 +0100215 Utils.cpp \
216 ConversionUtils.cpp
telsoa01ce3e84a2018-08-31 09:31:35 +0100217
218LOCAL_STATIC_LIBRARIES := \
219 libneuralnetworks_common \
telsoa01ce3e84a2018-08-31 09:31:35 +0100220 libboost_log \
221 libboost_program_options \
222 libboost_system \
223 libboost_thread \
224 armnn-arm_compute
225
David Beckc965f3c2018-10-12 17:23:16 +0100226LOCAL_WHOLE_STATIC_LIBRARIES := libarmnn
227
telsoa01ce3e84a2018-08-31 09:31:35 +0100228LOCAL_SHARED_LIBRARIES := \
229 libbase \
230 libhidlbase \
231 libhidltransport \
232 libhidlmemory \
233 liblog \
234 libutils \
235 android.hardware.neuralnetworks@1.0 \
236 android.hardware.neuralnetworks@1.1 \
237 android.hidl.allocator@1.0 \
Sadik Armagand6539c52019-05-22 18:00:30 +0100238 android.hidl.memory@1.0
239
240ifeq ($(Q_OR_LATER),1)
241LOCAL_SHARED_LIBRARIES+= \
242 libnativewindow \
243 libui \
244 libfmq \
245 libcutils \
246 android.hardware.neuralnetworks@1.2
247endif # PLATFORM_VERSION == Q
248
249ifeq ($(ARMNN_COMPUTE_CL_ENABLED),1)
250LOCAL_SHARED_LIBRARIES+= \
telsoa01ce3e84a2018-08-31 09:31:35 +0100251 libOpenCL
Sadik Armagand6539c52019-05-22 18:00:30 +0100252endif
telsoa01ce3e84a2018-08-31 09:31:35 +0100253
254include $(BUILD_STATIC_LIBRARY)
255
Matteo Martincigh69558df2018-08-31 16:18:19 +0100256endif # PLATFORM_VERSION == 9
257
telsoa015307bc12018-03-09 13:51:08 +0000258#####################################################
259# android.hardware.neuralnetworks@1.0-service-armnn #
260#####################################################
261include $(CLEAR_VARS)
262
263LOCAL_MODULE := android.hardware.neuralnetworks@1.0-service-armnn
264LOCAL_INIT_RC := android.hardware.neuralnetworks@1.0-service-armnn.rc
Sadik Armagand6539c52019-05-22 18:00:30 +0100265ifeq ($(Q_OR_LATER),1)
266# "eng" is deprecated in Android Q
267LOCAL_MODULE_TAGS := optional
268else
telsoa015307bc12018-03-09 13:51:08 +0000269LOCAL_MODULE_TAGS := eng optional
Sadik Armagand6539c52019-05-22 18:00:30 +0100270endif
telsoa015307bc12018-03-09 13:51:08 +0000271LOCAL_ARM_MODE := arm
272LOCAL_MODULE_RELATIVE_PATH := hw
273LOCAL_PROPRIETARY_MODULE := true
274# Mark source files as dependent on Android.mk
275LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
276
telsoa01ce3e84a2018-08-31 09:31:35 +0100277LOCAL_C_INCLUDES := \
278 $(ARMNN_HEADER_PATH) \
279 $(NN_HEADER_PATH)
telsoa015307bc12018-03-09 13:51:08 +0000280
281LOCAL_CFLAGS := \
telsoa01ce3e84a2018-08-31 09:31:35 +0100282 -std=c++14 \
283 -fexceptions
telsoa015307bc12018-03-09 13:51:08 +0000284ifeq ($(ARMNN_DRIVER_DEBUG),1)
telsoa01ce3e84a2018-08-31 09:31:35 +0100285LOCAL_CFLAGS += \
286 -UNDEBUG
Matteo Martincigh69558df2018-08-31 16:18:19 +0100287endif # ARMNN_DRIVER_DEBUG == 1
telsoa015307bc12018-03-09 13:51:08 +0000288
surmeh01deb3bdb2018-07-05 12:06:04 +0100289LOCAL_SRC_FILES := \
telsoa01ce3e84a2018-08-31 09:31:35 +0100290 service.cpp
telsoa015307bc12018-03-09 13:51:08 +0000291
292LOCAL_STATIC_LIBRARIES := \
telsoa01ce3e84a2018-08-31 09:31:35 +0100293 libneuralnetworks_common \
telsoa01ce3e84a2018-08-31 09:31:35 +0100294 libboost_log \
295 libboost_program_options \
296 libboost_system \
297 libboost_thread \
298 armnn-arm_compute
telsoa015307bc12018-03-09 13:51:08 +0000299
David Beckbeb3e1f2018-10-15 14:15:42 +0100300LOCAL_WHOLE_STATIC_LIBRARIES := \
301 libarmnn-driver@1.0
David Beckc965f3c2018-10-12 17:23:16 +0100302
surmeh01deb3bdb2018-07-05 12:06:04 +0100303LOCAL_SHARED_LIBRARIES := \
telsoa01ce3e84a2018-08-31 09:31:35 +0100304 libbase \
305 libhidlbase \
306 libhidltransport \
307 libhidlmemory \
308 libdl \
309 libhardware \
310 liblog \
311 libtextclassifier_hash \
312 libutils \
313 android.hardware.neuralnetworks@1.0 \
314 android.hidl.allocator@1.0 \
Sadik Armagand6539c52019-05-22 18:00:30 +0100315 android.hidl.memory@1.0
316
317ifeq ($(P_OR_LATER),1)
surmeh01deb3bdb2018-07-05 12:06:04 +0100318# Required to build the 1.0 version of the NN Driver on Android P and later versions,
319# as the 1.0 version of the NN API needs the 1.1 HAL headers to be included regardless.
320LOCAL_SHARED_LIBRARIES+= \
telsoa01ce3e84a2018-08-31 09:31:35 +0100321 android.hardware.neuralnetworks@1.1
Matteo Martincigh69558df2018-08-31 16:18:19 +0100322endif # PLATFORM_VERSION == 9
Sadik Armagand6539c52019-05-22 18:00:30 +0100323ifeq ($(Q_OR_LATER),1)
324LOCAL_SHARED_LIBRARIES+= \
325 libnativewindow \
326 libui \
327 libfmq \
328 libcutils \
329 android.hardware.neuralnetworks@1.2
330endif # PLATFORM_VERSION == Q
331
332ifeq ($(ARMNN_COMPUTE_CL_ENABLED),1)
333LOCAL_SHARED_LIBRARIES+= \
334 libOpenCL
335endif
telsoa015307bc12018-03-09 13:51:08 +0000336
337include $(BUILD_EXECUTABLE)
338
Sadik Armagand6539c52019-05-22 18:00:30 +0100339ifeq ($(P_OR_LATER),1)
Matteo Martincigh69558df2018-08-31 16:18:19 +0100340# The following target is available starting from Android P
341
telsoa01ce3e84a2018-08-31 09:31:35 +0100342#####################################################
343# android.hardware.neuralnetworks@1.1-service-armnn #
344#####################################################
345include $(CLEAR_VARS)
346
347LOCAL_MODULE := android.hardware.neuralnetworks@1.1-service-armnn
348LOCAL_INIT_RC := android.hardware.neuralnetworks@1.1-service-armnn.rc
Sadik Armagand6539c52019-05-22 18:00:30 +0100349ifeq ($(Q_OR_LATER),1)
350# "eng" is deprecated in Android Q
351LOCAL_MODULE_TAGS := optional
352else
telsoa01ce3e84a2018-08-31 09:31:35 +0100353LOCAL_MODULE_TAGS := eng optional
Sadik Armagand6539c52019-05-22 18:00:30 +0100354endif
telsoa01ce3e84a2018-08-31 09:31:35 +0100355LOCAL_ARM_MODE := arm
356LOCAL_MODULE_RELATIVE_PATH := hw
357LOCAL_PROPRIETARY_MODULE := true
358# Mark source files as dependent on Android.mk
359LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
360
361LOCAL_C_INCLUDES := \
362 $(ARMNN_HEADER_PATH) \
363 $(NN_HEADER_PATH)
364
365LOCAL_CFLAGS := \
366 -std=c++14 \
367 -fexceptions \
368 -DARMNN_ANDROID_NN_V1_1
369ifeq ($(ARMNN_DRIVER_DEBUG),1)
370LOCAL_CFLAGS += \
371 -UNDEBUG
Matteo Martincigh69558df2018-08-31 16:18:19 +0100372endif # ARMNN_DRIVER_DEBUG == 1
telsoa01ce3e84a2018-08-31 09:31:35 +0100373
374LOCAL_SRC_FILES := \
375 service.cpp
376
377LOCAL_STATIC_LIBRARIES := \
telsoa01ce3e84a2018-08-31 09:31:35 +0100378 libneuralnetworks_common \
telsoa01ce3e84a2018-08-31 09:31:35 +0100379 libboost_log \
380 libboost_program_options \
381 libboost_system \
382 libboost_thread \
383 armnn-arm_compute
384
David Beckbeb3e1f2018-10-15 14:15:42 +0100385LOCAL_WHOLE_STATIC_LIBRARIES := \
386 libarmnn-driver@1.1
David Beckc965f3c2018-10-12 17:23:16 +0100387
telsoa01ce3e84a2018-08-31 09:31:35 +0100388LOCAL_SHARED_LIBRARIES := \
389 libbase \
390 libhidlbase \
391 libhidltransport \
392 libhidlmemory \
393 libdl \
394 libhardware \
395 liblog \
396 libtextclassifier_hash \
397 libutils \
398 android.hardware.neuralnetworks@1.0 \
399 android.hardware.neuralnetworks@1.1 \
400 android.hidl.allocator@1.0 \
Sadik Armagand6539c52019-05-22 18:00:30 +0100401 android.hidl.memory@1.0
402
403ifeq ($(Q_OR_LATER),1)
404LOCAL_SHARED_LIBRARIES+= \
405 libnativewindow \
406 libui \
407 libfmq \
408 libcutils \
409 android.hardware.neuralnetworks@1.2
410endif # PLATFORM_VERSION == Q
411
412ifeq ($(ARMNN_COMPUTE_CL_ENABLED),1)
413LOCAL_SHARED_LIBRARIES+= \
telsoa01ce3e84a2018-08-31 09:31:35 +0100414 libOpenCL
Sadik Armagand6539c52019-05-22 18:00:30 +0100415endif
telsoa01ce3e84a2018-08-31 09:31:35 +0100416
417include $(BUILD_EXECUTABLE)
418
Matteo Martincigh69558df2018-08-31 16:18:19 +0100419endif # PLATFORM_VERSION == 9
420
telsoa015307bc12018-03-09 13:51:08 +0000421##########################
422# armnn module and tests #
423##########################
424# Note we use ANDROID_NN_DRIVER_LOCAL_PATH rather than LOCAL_PATH because LOCAL_PATH will be overwritten
425# when including other .mk files that set it.
426include $(ANDROID_NN_DRIVER_LOCAL_PATH)/armnn/Android.mk
surmeh0149b9e102018-05-17 14:11:25 +0100427include $(ANDROID_NN_DRIVER_LOCAL_PATH)/test/Android.mk