blob: 06b95a1a6eab7a7cdf01f8faaa71c2eb8b37cc2f [file] [log] [blame]
Mike Kelly0e415132020-02-11 11:21:25 +00001#
2# Copyright © 2017 ARM Ltd. All rights reserved.
3# SPDX-License-Identifier: MIT
4#
5
6ANDROID_NN_DRIVER_LOCAL_PATH := $(call my-dir)
7LOCAL_PATH := $(ANDROID_NN_DRIVER_LOCAL_PATH)
8
9P_OR_LATER := 0
10Q_OR_LATER := 0
Kevin Mayec1e5b82020-02-26 17:00:39 +000011R_OR_LATER := 0
Sadik Armagan188675f2021-02-12 17:16:42 +000012S_OR_LATER := 0
Kevin May157f8f42020-06-02 14:50:01 +010013ANDROID_R := 0
Sadik Armagan188675f2021-02-12 17:16:42 +000014ANDROID_S := 0
Mike Kelly0e415132020-02-11 11:21:25 +000015
16ifeq ($(PLATFORM_VERSION),9)
17P_OR_LATER := 1
18endif # PLATFORM_VERSION == 9
19ifeq ($(PLATFORM_VERSION),P)
20P_OR_LATER := 1
21endif # PLATFORM_VERSION == P
22
23ifeq ($(PLATFORM_VERSION),10)
24P_OR_LATER := 1
25Q_OR_LATER := 1
26endif # PLATFORM_VERSION == 10
27ifeq ($(PLATFORM_VERSION),Q)
28P_OR_LATER := 1
29Q_OR_LATER := 1
30endif # PLATFORM_VERSION == Q
31
Kevin Mayec1e5b82020-02-26 17:00:39 +000032ifeq ($(PLATFORM_VERSION),R)
33P_OR_LATER := 1
34Q_OR_LATER := 1
35R_OR_LATER := 1
Kevin May157f8f42020-06-02 14:50:01 +010036ANDROID_R := 1
Kevin Mayec1e5b82020-02-26 17:00:39 +000037endif # PLATFORM_VERSION == R
38
Kevin May157f8f42020-06-02 14:50:01 +010039ifeq ($(PLATFORM_VERSION),11)
40P_OR_LATER := 1
41Q_OR_LATER := 1
42R_OR_LATER := 1
43ANDROID_R := 1
44endif # PLATFORM_VERSION == 11
45
Sadik Armagan188675f2021-02-12 17:16:42 +000046ifeq ($(PLATFORM_VERSION),S)
47P_OR_LATER := 1
48Q_OR_LATER := 1
49R_OR_LATER := 1
50S_OR_LATER := 1
51ANDROID_R := 0
52ANDROID_S := 1
53endif # PLATFORM_VERSION == S
54
55ifeq ($(PLATFORM_VERSION),12)
56P_OR_LATER := 1
57Q_OR_LATER := 1
58R_OR_LATER := 1
59S_OR_LATER := 1
60ANDROID_R := 0
61ANDROID_S := 1
62endif # PLATFORM_VERSION == 12
63
Mike Kelly0e415132020-02-11 11:21:25 +000064CPP_VERSION := c++14
65
66ifeq ($(Q_OR_LATER),1)
67CPP_VERSION := c++17
68endif
69
70# Configure these paths if you move the source or Khronos headers
71ARMNN_HEADER_PATH := $(LOCAL_PATH)/armnn/include
Colm Donelan08d9a1c2020-09-09 17:56:55 +010072ARMNN_THIRD_PARTY_PATH := $(LOCAL_PATH)/armnn/third-party
Mike Kelly0e415132020-02-11 11:21:25 +000073ARMNN_UTILS_HEADER_PATH := $(LOCAL_PATH)/armnn/src/armnnUtils
Colm Donelan0cc61782020-10-06 21:02:21 +010074ARMNN_THIRD_PARTY_PATH := $(LOCAL_PATH)/armnn/third-party
Mike Kelly0e415132020-02-11 11:21:25 +000075OPENCL_HEADER_PATH := $(LOCAL_PATH)/clframework/include
76NN_HEADER_PATH := $(LOCAL_PATH)/../../../frameworks/ml/nn/runtime/include
Sadik Armagan188675f2021-02-12 17:16:42 +000077ifeq ($(S_OR_LATER),1)
78NN_HEADER_PATH := $(LOCAL_PATH)/../../../packages/modules/NeuralNetworks/runtime/include
79endif
Mike Kelly0e415132020-02-11 11:21:25 +000080
81# Variables to control CL/NEON/reference backend support
82# Set them to '0' to disable support for a specific backend
83ARMNN_COMPUTE_CL_ENABLED := 1
84ARMNN_COMPUTE_NEON_ENABLED := 1
85ARMNN_REF_ENABLED := 1
FrancisMurtagh594b2832020-06-15 17:17:56 +010086ARMNN_ETHOSN_ENABLED := 1
Mike Kelly0e415132020-02-11 11:21:25 +000087
88ifeq ($(ARMNN_COMPUTE_CL_ENABLE),0)
89ARMNN_COMPUTE_CL_ENABLED := 0
90endif
91
92ifeq ($(ARMNN_COMPUTE_NEON_ENABLE),0)
93ARMNN_COMPUTE_NEON_ENABLED := 0
94endif
95
96ifeq ($(ARMNN_REF_ENABLE),0)
97ARMNN_REF_ENABLED := 0
98endif
99
FrancisMurtagh594b2832020-06-15 17:17:56 +0100100ifeq ($(ARMNN_ETHOSN_ENABLE),0)
101ARMNN_ETHOSN_ENABLED := 0
102endif
103
alered017c395b22020-04-03 15:37:24 +0100104# Variable to control inclusion of libOpenCL shared library
105ARMNN_INCLUDE_LIBOPENCL := $(ARMNN_COMPUTE_CL_ENABLED)
106ifeq ($(ARMNN_LIBOPENCL),0)
107ARMNN_INCLUDE_LIBOPENCL := 0
108endif
109
Narumol Prangnawaratcad4e912020-06-02 12:07:43 +0100110# Variable to control retire rate of priority queue
111RETIRE_RATE := 3
112
Mike Kelly0e415132020-02-11 11:21:25 +0000113#######################
114# libarmnn-driver@1.0 #
115#######################
116include $(CLEAR_VARS)
117
118LOCAL_MODULE := libarmnn-driver@1.0
119ifeq ($(Q_OR_LATER),1)
120# "eng" is deprecated in Android Q
121LOCAL_MODULE_TAGS := optional
122else
123LOCAL_MODULE_TAGS := eng optional
124endif
125LOCAL_ARM_MODE := arm
126LOCAL_PROPRIETARY_MODULE := true
127# Mark source files as dependent on Android.mk
128LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
129
130LOCAL_C_INCLUDES := \
131 $(ARMNN_HEADER_PATH) \
Colm Donelan08d9a1c2020-09-09 17:56:55 +0100132 $(ARMNN_THIRD_PARTY_PATH) \
Mike Kelly0e415132020-02-11 11:21:25 +0000133 $(ARMNN_UTILS_HEADER_PATH) \
Colm Donelan0cc61782020-10-06 21:02:21 +0100134 $(ARMNN_THIRD_PARTY_PATH) \
Mike Kelly0e415132020-02-11 11:21:25 +0000135 $(OPENCL_HEADER_PATH) \
136 $(NN_HEADER_PATH)
137
138LOCAL_CFLAGS := \
139 -std=$(CPP_VERSION) \
140 -fexceptions \
141 -Werror \
142 -Wno-format-security
143
Kevin Mayec1e5b82020-02-26 17:00:39 +0000144# Required to build with the changes made to the Android ML framework specific to Android R
Kevin May157f8f42020-06-02 14:50:01 +0100145ifeq ($(ANDROID_R),1)
Mike Kelly0e415132020-02-11 11:21:25 +0000146LOCAL_CFLAGS+= \
Kevin Mayec1e5b82020-02-26 17:00:39 +0000147 -DARMNN_ANDROID_R
Kevin May157f8f42020-06-02 14:50:01 +0100148endif
Mike Kelly0e415132020-02-11 11:21:25 +0000149
Sadik Armagan188675f2021-02-12 17:16:42 +0000150ifeq ($(ANDROID_S),1)
151LOCAL_CFLAGS+= \
152 -DARMNN_ANDROID_S
153endif
154
Mike Kelly0e415132020-02-11 11:21:25 +0000155ifeq ($(ARMNN_DRIVER_DEBUG),1)
156LOCAL_CFLAGS+= \
157 -UNDEBUG
158endif # ARMNN_DRIVER_DEBUG == 1
159
Mike Kelly0e415132020-02-11 11:21:25 +0000160ifeq ($(ARMNN_COMPUTE_CL_ENABLED),1)
161LOCAL_CFLAGS += \
162 -DARMCOMPUTECL_ENABLED
163endif # ARMNN_COMPUTE_CL_ENABLED == 1
164
165ifeq ($(ARMNN_COMPUTE_NEON_ENABLED),1)
166LOCAL_CFLAGS += \
167 -DARMCOMPUTENEON_ENABLED
168endif # ARMNN_COMPUTE_NEON_ENABLED == 1
169
170ifeq ($(ARMNN_REF_ENABLED),1)
171LOCAL_CFLAGS += \
172 -DARMNNREF_ENABLED
173endif # ARMNN_REF_ENABLED == 1
174
FrancisMurtagh594b2832020-06-15 17:17:56 +0100175ifeq ($(ARMNN_ETHOSN_ENABLED),1)
176LOCAL_CFLAGS += \
177 -DARMNNETHOSN_ENABLED
178endif # ARMNN_ETHOSN_ENABLED == 1
179
Mike Kelly0e415132020-02-11 11:21:25 +0000180LOCAL_SRC_FILES := \
181 1.0/ArmnnDriverImpl.cpp \
182 1.0/HalPolicy.cpp \
183 ArmnnDriverImpl.cpp \
184 DriverOptions.cpp \
185 ArmnnDevice.cpp \
186 ArmnnPreparedModel.cpp \
187 ModelToINetworkConverter.cpp \
188 RequestThread.cpp \
189 Utils.cpp \
190 ConversionUtils.cpp
191
192LOCAL_STATIC_LIBRARIES := \
193 libneuralnetworks_common \
Sadik Armaganf36e10b2021-01-11 16:34:01 +0000194 libflatbuffers-framework \
Mike Kelly0e415132020-02-11 11:21:25 +0000195 arm_compute_library
196
197LOCAL_WHOLE_STATIC_LIBRARIES := libarmnn
198
199LOCAL_SHARED_LIBRARIES := \
200 libbase \
201 libhidlbase \
202 libhidltransport \
203 libhidlmemory \
204 liblog \
205 libutils \
206 android.hardware.neuralnetworks@1.0 \
207 android.hidl.allocator@1.0 \
208 android.hidl.memory@1.0
209
210ifeq ($(P_OR_LATER),1)
211# Required to build the 1.0 version of the NN Driver on Android P and later versions,
212# as the 1.0 version of the NN API needs the 1.1 HAL headers to be included regardless.
213LOCAL_SHARED_LIBRARIES+= \
214 android.hardware.neuralnetworks@1.1
215endif # PLATFORM_VERSION == 9
216
217ifeq ($(Q_OR_LATER),1)
218LOCAL_SHARED_LIBRARIES+= \
219 libnativewindow \
220 libui \
221 libfmq \
222 libcutils \
223 android.hardware.neuralnetworks@1.2
Kevin Mayec1e5b82020-02-26 17:00:39 +0000224endif # Q or later
225
226ifeq ($(R_OR_LATER),1)
227LOCAL_SHARED_LIBRARIES+= \
Sadik Armagand7be72e2020-04-23 12:56:05 +0100228 libsync \
Kevin Mayec1e5b82020-02-26 17:00:39 +0000229 android.hardware.neuralnetworks@1.3
230endif # R or later
Mike Kelly0e415132020-02-11 11:21:25 +0000231
alered01dbae2472020-04-07 12:31:10 +0100232ifeq ($(ARMNN_INCLUDE_LIBOPENCL),1)
Mike Kelly0e415132020-02-11 11:21:25 +0000233LOCAL_SHARED_LIBRARIES+= \
234 libOpenCL
235endif
236
237include $(BUILD_STATIC_LIBRARY)
238
239ifeq ($(P_OR_LATER),1)
240# The following target is available starting from Android P
241
242#######################
243# libarmnn-driver@1.1 #
244#######################
245include $(CLEAR_VARS)
246
247LOCAL_MODULE := libarmnn-driver@1.1
248ifeq ($(Q_OR_LATER),1)
249# "eng" is deprecated in Android Q
250LOCAL_MODULE_TAGS := optional
251else
252LOCAL_MODULE_TAGS := eng optional
253endif
254#PRODUCT_PACKAGES_ENG := libarmnn-driver@1.1
255LOCAL_ARM_MODE := arm
256LOCAL_PROPRIETARY_MODULE := true
257# Mark source files as dependent on Android.mk
258LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
259
260LOCAL_C_INCLUDES := \
261 $(ARMNN_HEADER_PATH) \
Colm Donelan08d9a1c2020-09-09 17:56:55 +0100262 $(ARMNN_THIRD_PARTY_PATH) \
Mike Kelly0e415132020-02-11 11:21:25 +0000263 $(ARMNN_UTILS_HEADER_PATH) \
Colm Donelan0cc61782020-10-06 21:02:21 +0100264 $(ARMNN_THIRD_PARTY_PATH) \
Mike Kelly0e415132020-02-11 11:21:25 +0000265 $(OPENCL_HEADER_PATH) \
266 $(NN_HEADER_PATH)
267
268LOCAL_CFLAGS := \
269 -std=$(CPP_VERSION) \
270 -fexceptions \
271 -Werror \
272 -Wno-format-security \
Mike Kelly0e415132020-02-11 11:21:25 +0000273 -DARMNN_ANDROID_NN_V1_1
274
275ifeq ($(ARMNN_DRIVER_DEBUG),1)
276LOCAL_CFLAGS+= \
277 -UNDEBUG
278endif # ARMNN_DRIVER_DEBUG == 1
279
Kevin Mayec1e5b82020-02-26 17:00:39 +0000280# Required to build with the changes made to the Android ML framework specific to Android R
Kevin May157f8f42020-06-02 14:50:01 +0100281ifeq ($(ANDROID_R),1)
Kevin Mayec1e5b82020-02-26 17:00:39 +0000282LOCAL_CFLAGS+= \
283 -DARMNN_ANDROID_R
Kevin May157f8f42020-06-02 14:50:01 +0100284endif
Kevin Mayec1e5b82020-02-26 17:00:39 +0000285
Sadik Armagan188675f2021-02-12 17:16:42 +0000286ifeq ($(ANDROID_S),1)
287LOCAL_CFLAGS+= \
288 -DARMNN_ANDROID_S
289endif
290
Mike Kelly0e415132020-02-11 11:21:25 +0000291ifeq ($(ARMNN_COMPUTE_CL_ENABLED),1)
292LOCAL_CFLAGS += \
293 -DARMCOMPUTECL_ENABLED
294endif # ARMNN_COMPUTE_CL_ENABLED == 1
295
296ifeq ($(ARMNN_COMPUTE_NEON_ENABLED),1)
297LOCAL_CFLAGS += \
298 -DARMCOMPUTENEON_ENABLED
299endif # ARMNN_COMPUTE_NEON_ENABLED == 1
300
301ifeq ($(ARMNN_REF_ENABLED),1)
302LOCAL_CFLAGS += \
303 -DARMNNREF_ENABLED
304endif # ARMNN_REF_ENABLED == 1
305
FrancisMurtagh594b2832020-06-15 17:17:56 +0100306ifeq ($(ARMNN_ETHOSN_ENABLED),1)
307LOCAL_CFLAGS += \
308 -DARMNNETHOSN_ENABLED
309endif # ARMNN_ETHOSN_ENABLED == 1
310
Mike Kelly0e415132020-02-11 11:21:25 +0000311LOCAL_SRC_FILES := \
312 1.0/ArmnnDriverImpl.cpp \
313 1.0/HalPolicy.cpp \
314 1.1/ArmnnDriverImpl.cpp \
315 1.1/HalPolicy.cpp \
316 ArmnnDriverImpl.cpp \
317 DriverOptions.cpp \
318 ArmnnDevice.cpp \
319 ArmnnPreparedModel.cpp \
320 ModelToINetworkConverter.cpp \
321 RequestThread.cpp \
322 Utils.cpp \
323 ConversionUtils.cpp
324
325LOCAL_STATIC_LIBRARIES := \
326 libneuralnetworks_common \
Sadik Armaganf36e10b2021-01-11 16:34:01 +0000327 libflatbuffers-framework \
Mike Kelly0e415132020-02-11 11:21:25 +0000328 arm_compute_library
329
330LOCAL_WHOLE_STATIC_LIBRARIES := libarmnn
331
332LOCAL_SHARED_LIBRARIES := \
333 libbase \
334 libhidlbase \
335 libhidltransport \
336 libhidlmemory \
337 liblog \
338 libutils \
339 android.hardware.neuralnetworks@1.0 \
340 android.hardware.neuralnetworks@1.1 \
341 android.hidl.allocator@1.0 \
342 android.hidl.memory@1.0
343
344ifeq ($(Q_OR_LATER),1)
345LOCAL_SHARED_LIBRARIES+= \
346 libnativewindow \
347 libui \
348 libfmq \
349 libcutils \
350 android.hardware.neuralnetworks@1.2
351endif # PLATFORM_VERSION == Q
352
Kevin Mayec1e5b82020-02-26 17:00:39 +0000353ifeq ($(R_OR_LATER),1)
354LOCAL_SHARED_LIBRARIES+= \
Sadik Armagand7be72e2020-04-23 12:56:05 +0100355 libsync \
Kevin Mayec1e5b82020-02-26 17:00:39 +0000356 android.hardware.neuralnetworks@1.3
357endif # R or later
358
alered017c395b22020-04-03 15:37:24 +0100359ifeq ($(ARMNN_INCLUDE_LIBOPENCL),1)
Mike Kelly0e415132020-02-11 11:21:25 +0000360LOCAL_SHARED_LIBRARIES+= \
361 libOpenCL
362endif
363
364include $(BUILD_STATIC_LIBRARY)
365
366endif # PLATFORM_VERSION == 9
367
368ifeq ($(Q_OR_LATER),1)
369# The following target is available starting from Android Q
370
371#######################
372# libarmnn-driver@1.2 #
373#######################
374include $(CLEAR_VARS)
375
376LOCAL_MODULE := libarmnn-driver@1.2
377LOCAL_MODULE_TAGS := optional
378LOCAL_ARM_MODE := arm
379LOCAL_PROPRIETARY_MODULE := true
380# Mark source files as dependent on Android.mk
381LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
382
383LOCAL_C_INCLUDES := \
384 $(ARMNN_HEADER_PATH) \
Colm Donelan08d9a1c2020-09-09 17:56:55 +0100385 $(ARMNN_THIRD_PARTY_PATH) \
Mike Kelly0e415132020-02-11 11:21:25 +0000386 $(ARMNN_UTILS_HEADER_PATH) \
Colm Donelan0cc61782020-10-06 21:02:21 +0100387 $(ARMNN_THIRD_PARTY_PATH) \
Mike Kelly0e415132020-02-11 11:21:25 +0000388 $(OPENCL_HEADER_PATH) \
389 $(NN_HEADER_PATH)
390
391LOCAL_CFLAGS := \
392 -std=$(CPP_VERSION) \
393 -fexceptions \
394 -Werror \
395 -Wno-format-security \
Mike Kelly0e415132020-02-11 11:21:25 +0000396 -DARMNN_ANDROID_NN_V1_2
397
398ifeq ($(ARMNN_DRIVER_DEBUG),1)
399LOCAL_CFLAGS+= \
400 -UNDEBUG
401endif # ARMNN_DRIVER_DEBUG == 1
402
Kevin Mayec1e5b82020-02-26 17:00:39 +0000403# Required to build with the changes made to the Android ML framework specific to Android R
Kevin May157f8f42020-06-02 14:50:01 +0100404ifeq ($(ANDROID_R),1)
Kevin Mayec1e5b82020-02-26 17:00:39 +0000405LOCAL_CFLAGS+= \
406 -DARMNN_ANDROID_R
Kevin May157f8f42020-06-02 14:50:01 +0100407endif
Mike Kelly0e415132020-02-11 11:21:25 +0000408
Sadik Armagan188675f2021-02-12 17:16:42 +0000409ifeq ($(ANDROID_S),1)
410LOCAL_CFLAGS+= \
411 -DARMNN_ANDROID_S
412endif
413
Mike Kelly0e415132020-02-11 11:21:25 +0000414ifeq ($(ARMNN_COMPUTE_CL_ENABLED),1)
415LOCAL_CFLAGS += \
416 -DARMCOMPUTECL_ENABLED
417endif # ARMNN_COMPUTE_CL_ENABLED == 1
418
419ifeq ($(ARMNN_COMPUTE_NEON_ENABLED),1)
420LOCAL_CFLAGS += \
421 -DARMCOMPUTENEON_ENABLED
422endif # ARMNN_COMPUTE_NEON_ENABLED == 1
423
424ifeq ($(ARMNN_REF_ENABLED),1)
425LOCAL_CFLAGS += \
426 -DARMNNREF_ENABLED
427endif # ARMNN_REF_ENABLED == 1
428
FrancisMurtagh594b2832020-06-15 17:17:56 +0100429ifeq ($(ARMNN_ETHOSN_ENABLED),1)
430LOCAL_CFLAGS += \
431 -DARMNNETHOSN_ENABLED
432endif # ARMNN_ETHOSN_ENABLED == 1
433
Mike Kelly0e415132020-02-11 11:21:25 +0000434LOCAL_SRC_FILES := \
435 1.0/ArmnnDriverImpl.cpp \
436 1.0/HalPolicy.cpp \
437 1.1/ArmnnDriverImpl.cpp \
438 1.1/HalPolicy.cpp \
439 1.2/ArmnnDriverImpl.cpp \
440 1.2/HalPolicy.cpp \
441 ArmnnDevice.cpp \
442 ArmnnDriverImpl.cpp \
443 ArmnnPreparedModel.cpp \
444 ArmnnPreparedModel_1_2.cpp \
445 ConversionUtils.cpp \
446 DriverOptions.cpp \
447 ModelToINetworkConverter.cpp \
448 RequestThread.cpp \
449 Utils.cpp
450
451LOCAL_STATIC_LIBRARIES := \
452 libneuralnetworks_common \
Sadik Armaganf36e10b2021-01-11 16:34:01 +0000453 libflatbuffers-framework \
Mike Kelly0e415132020-02-11 11:21:25 +0000454 arm_compute_library
455
456LOCAL_WHOLE_STATIC_LIBRARIES := libarmnn
457
458LOCAL_SHARED_LIBRARIES := \
459 libbase \
460 libhidlbase \
461 libhidltransport \
462 libhidlmemory \
463 liblog \
464 libutils \
465 libnativewindow \
466 libui \
467 libfmq \
468 libcutils \
469 android.hidl.allocator@1.0 \
470 android.hidl.memory@1.0 \
471 android.hardware.neuralnetworks@1.0 \
472 android.hardware.neuralnetworks@1.1 \
473 android.hardware.neuralnetworks@1.2
474
Kevin Mayec1e5b82020-02-26 17:00:39 +0000475ifeq ($(R_OR_LATER),1)
476LOCAL_SHARED_LIBRARIES+= \
Sadik Armagand7be72e2020-04-23 12:56:05 +0100477 libsync \
Kevin Mayec1e5b82020-02-26 17:00:39 +0000478 android.hardware.neuralnetworks@1.3
479endif # R or later
480
alered017c395b22020-04-03 15:37:24 +0100481ifeq ($(ARMNN_INCLUDE_LIBOPENCL),1)
Mike Kelly0e415132020-02-11 11:21:25 +0000482LOCAL_SHARED_LIBRARIES+= \
483 libOpenCL
484endif
485
486include $(BUILD_STATIC_LIBRARY)
487
488endif # PLATFORM_VERSION == Q
489
Kevin May42477c12020-03-26 13:34:14 +0000490ifeq ($(R_OR_LATER),1)
491# The following target is available starting from Android R
492
493#######################
494# libarmnn-driver@1.3 #
495#######################
496include $(CLEAR_VARS)
497
498LOCAL_MODULE := libarmnn-driver@1.3
499LOCAL_MODULE_TAGS := optional
500LOCAL_ARM_MODE := arm
501LOCAL_PROPRIETARY_MODULE := true
502# Mark source files as dependent on Android.mk
503LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
504
505LOCAL_C_INCLUDES := \
506 $(ARMNN_HEADER_PATH) \
Colm Donelan08d9a1c2020-09-09 17:56:55 +0100507 $(ARMNN_THIRD_PARTY_PATH) \
Kevin May42477c12020-03-26 13:34:14 +0000508 $(ARMNN_UTILS_HEADER_PATH) \
Colm Donelan0cc61782020-10-06 21:02:21 +0100509 $(ARMNN_THIRD_PARTY_PATH) \
Kevin May42477c12020-03-26 13:34:14 +0000510 $(OPENCL_HEADER_PATH) \
511 $(NN_HEADER_PATH)
512
513LOCAL_CFLAGS := \
514 -std=$(CPP_VERSION) \
515 -fexceptions \
516 -Werror \
517 -Wno-format-security \
Kevin May42477c12020-03-26 13:34:14 +0000518 -DARMNN_ANDROID_NN_V1_3 \
Sadik Armagan188675f2021-02-12 17:16:42 +0000519
520ifeq ($(ANDROID_R),1)
521LOCAL_CFLAGS+= \
Kevin May42477c12020-03-26 13:34:14 +0000522 -DARMNN_ANDROID_R
Sadik Armagan188675f2021-02-12 17:16:42 +0000523endif
524
525ifeq ($(ANDROID_S),1)
526LOCAL_CFLAGS+= \
527 -DARMNN_ANDROID_S
528endif
Kevin May42477c12020-03-26 13:34:14 +0000529
530ifeq ($(ARMNN_DRIVER_DEBUG),1)
531LOCAL_CFLAGS+= \
532 -UNDEBUG
533endif # ARMNN_DRIVER_DEBUG == 1
534
535ifeq ($(ARMNN_COMPUTE_CL_ENABLED),1)
536LOCAL_CFLAGS += \
537 -DARMCOMPUTECL_ENABLED
538endif # ARMNN_COMPUTE_CL_ENABLED == 1
539
540ifeq ($(ARMNN_COMPUTE_NEON_ENABLED),1)
541LOCAL_CFLAGS += \
542 -DARMCOMPUTENEON_ENABLED
543endif # ARMNN_COMPUTE_NEON_ENABLED == 1
544
545ifeq ($(ARMNN_REF_ENABLED),1)
546LOCAL_CFLAGS += \
547 -DARMNNREF_ENABLED
548endif # ARMNN_REF_ENABLED == 1
549
FrancisMurtagh594b2832020-06-15 17:17:56 +0100550ifeq ($(ARMNN_ETHOSN_ENABLED),1)
551LOCAL_CFLAGS += \
552 -DARMNNETHOSN_ENABLED
553endif # ARMNN_ETHOSN_ENABLED == 1
554
Narumol Prangnawaratcad4e912020-06-02 12:07:43 +0100555LOCAL_CFLAGS += \
556 -DRETIRE_RATE=$(RETIRE_RATE)
557
Kevin May42477c12020-03-26 13:34:14 +0000558LOCAL_SRC_FILES := \
559 1.0/ArmnnDriverImpl.cpp \
560 1.0/HalPolicy.cpp \
561 1.1/ArmnnDriverImpl.cpp \
562 1.1/HalPolicy.cpp \
563 1.2/ArmnnDriverImpl.cpp \
564 1.2/HalPolicy.cpp \
565 1.3/ArmnnDriverImpl.cpp \
566 1.3/HalPolicy.cpp \
567 ArmnnDevice.cpp \
568 ArmnnDriverImpl.cpp \
569 ArmnnPreparedModel.cpp \
570 ArmnnPreparedModel_1_2.cpp \
571 ArmnnPreparedModel_1_3.cpp \
572 ConversionUtils.cpp \
573 DriverOptions.cpp \
574 ModelToINetworkConverter.cpp \
575 RequestThread.cpp \
Narumol Prangnawaratcad4e912020-06-02 12:07:43 +0100576 RequestThread_1_3.cpp \
Kevin May42477c12020-03-26 13:34:14 +0000577 Utils.cpp
578
579LOCAL_STATIC_LIBRARIES := \
580 libneuralnetworks_common \
Sadik Armaganf36e10b2021-01-11 16:34:01 +0000581 libflatbuffers-framework \
Kevin May42477c12020-03-26 13:34:14 +0000582 arm_compute_library
583
584LOCAL_WHOLE_STATIC_LIBRARIES := libarmnn
585
586LOCAL_SHARED_LIBRARIES := \
587 libbase \
588 libhidlbase \
589 libhidltransport \
590 libhidlmemory \
591 liblog \
592 libutils \
593 libnativewindow \
594 libui \
595 libfmq \
596 libcutils \
597 android.hidl.allocator@1.0 \
598 android.hidl.memory@1.0 \
Sadik Armagand7be72e2020-04-23 12:56:05 +0100599 libsync \
Kevin May42477c12020-03-26 13:34:14 +0000600 android.hardware.neuralnetworks@1.0 \
601 android.hardware.neuralnetworks@1.1 \
602 android.hardware.neuralnetworks@1.2 \
603 android.hardware.neuralnetworks@1.3
604
alered017c395b22020-04-03 15:37:24 +0100605ifeq ($(ARMNN_INCLUDE_LIBOPENCL),1)
Kevin May42477c12020-03-26 13:34:14 +0000606LOCAL_SHARED_LIBRARIES+= \
607 libOpenCL
608endif
609
610include $(BUILD_STATIC_LIBRARY)
611
612endif # PLATFORM_VERSION == R
613
Mike Kelly0e415132020-02-11 11:21:25 +0000614#####################################################
Kevin Mayabc95d02020-05-15 15:34:03 +0100615# android.hardware.neuralnetworks@1.0-service-armnn #
Mike Kelly0e415132020-02-11 11:21:25 +0000616#####################################################
617include $(CLEAR_VARS)
618
Kevin Mayabc95d02020-05-15 15:34:03 +0100619LOCAL_MODULE := android.hardware.neuralnetworks@1.0-service-armnn
620LOCAL_INIT_RC := android.hardware.neuralnetworks@1.0-service-armnn.rc
Mike Kelly0e415132020-02-11 11:21:25 +0000621ifeq ($(Q_OR_LATER),1)
622# "eng" is deprecated in Android Q
623LOCAL_MODULE_TAGS := optional
624else
625LOCAL_MODULE_TAGS := eng optional
626endif
627LOCAL_ARM_MODE := arm
628LOCAL_MODULE_RELATIVE_PATH := hw
629LOCAL_PROPRIETARY_MODULE := true
630# Mark source files as dependent on Android.mk
631LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
632
633LOCAL_C_INCLUDES := \
634 $(ARMNN_HEADER_PATH) \
Colm Donelan08d9a1c2020-09-09 17:56:55 +0100635 $(ARMNN_THIRD_PARTY_PATH) \
Mike Kelly0e415132020-02-11 11:21:25 +0000636 $(NN_HEADER_PATH)
637
638LOCAL_CFLAGS := \
639 -std=$(CPP_VERSION) \
640 -fexceptions
641
642ifeq ($(ARMNN_DRIVER_DEBUG),1)
643LOCAL_CFLAGS += \
644 -UNDEBUG
645endif # ARMNN_DRIVER_DEBUG == 1
646
Kevin Mayec1e5b82020-02-26 17:00:39 +0000647# Required to build with the changes made to the Android ML framework specific to Android R
Kevin May157f8f42020-06-02 14:50:01 +0100648ifeq ($(ANDROID_R),1)
Kevin Mayec1e5b82020-02-26 17:00:39 +0000649LOCAL_CFLAGS+= \
650 -DARMNN_ANDROID_R
Kevin May157f8f42020-06-02 14:50:01 +0100651endif
Kevin Mayec1e5b82020-02-26 17:00:39 +0000652
Sadik Armagan188675f2021-02-12 17:16:42 +0000653ifeq ($(ANDROID_S),1)
654LOCAL_CFLAGS+= \
655 -DARMNN_ANDROID_S
656endif
657
Mike Kelly0e415132020-02-11 11:21:25 +0000658LOCAL_SRC_FILES := \
659 service.cpp
660
661LOCAL_STATIC_LIBRARIES := \
662 libneuralnetworks_common \
Sadik Armaganf36e10b2021-01-11 16:34:01 +0000663 libflatbuffers-framework \
Mike Kelly0e415132020-02-11 11:21:25 +0000664 arm_compute_library
665
666LOCAL_WHOLE_STATIC_LIBRARIES := \
667 libarmnn-driver@1.0
668
669LOCAL_SHARED_LIBRARIES := \
670 libbase \
671 libhidlbase \
672 libhidltransport \
673 libhidlmemory \
674 libdl \
675 libhardware \
676 liblog \
677 libtextclassifier_hash \
678 libutils \
679 android.hardware.neuralnetworks@1.0 \
680 android.hidl.allocator@1.0 \
681 android.hidl.memory@1.0
682
683ifeq ($(P_OR_LATER),1)
684# Required to build the 1.0 version of the NN Driver on Android P and later versions,
685# as the 1.0 version of the NN API needs the 1.1 HAL headers to be included regardless.
686LOCAL_SHARED_LIBRARIES+= \
687 android.hardware.neuralnetworks@1.1
688endif # PLATFORM_VERSION == 9
Kevin Mayec1e5b82020-02-26 17:00:39 +0000689
Mike Kelly0e415132020-02-11 11:21:25 +0000690ifeq ($(Q_OR_LATER),1)
691LOCAL_SHARED_LIBRARIES+= \
692 libnativewindow \
693 libui \
694 libfmq \
695 libcutils \
696 android.hardware.neuralnetworks@1.2
697endif # PLATFORM_VERSION == Q
698
Kevin Mayec1e5b82020-02-26 17:00:39 +0000699ifeq ($(R_OR_LATER),1)
700LOCAL_SHARED_LIBRARIES+= \
Sadik Armagand7be72e2020-04-23 12:56:05 +0100701 libsync \
Kevin Mayec1e5b82020-02-26 17:00:39 +0000702 android.hardware.neuralnetworks@1.3
703endif # R or later
704
alered017c395b22020-04-03 15:37:24 +0100705ifeq ($(ARMNN_INCLUDE_LIBOPENCL),1)
Mike Kelly0e415132020-02-11 11:21:25 +0000706LOCAL_SHARED_LIBRARIES+= \
707 libOpenCL
708endif
709
710include $(BUILD_EXECUTABLE)
711
712ifeq ($(P_OR_LATER),1)
713# The following target is available starting from Android P
714
715#####################################################
Kevin Mayabc95d02020-05-15 15:34:03 +0100716# android.hardware.neuralnetworks@1.1-service-armnn #
Mike Kelly0e415132020-02-11 11:21:25 +0000717#####################################################
718include $(CLEAR_VARS)
719
Kevin Mayabc95d02020-05-15 15:34:03 +0100720LOCAL_MODULE := android.hardware.neuralnetworks@1.1-service-armnn
721LOCAL_INIT_RC := android.hardware.neuralnetworks@1.1-service-armnn.rc
Mike Kelly0e415132020-02-11 11:21:25 +0000722ifeq ($(Q_OR_LATER),1)
723# "eng" is deprecated in Android Q
724LOCAL_MODULE_TAGS := optional
725else
726LOCAL_MODULE_TAGS := eng optional
727endif
728LOCAL_ARM_MODE := arm
729LOCAL_MODULE_RELATIVE_PATH := hw
730LOCAL_PROPRIETARY_MODULE := true
731# Mark source files as dependent on Android.mk
732LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
733
734LOCAL_C_INCLUDES := \
735 $(ARMNN_HEADER_PATH) \
Colm Donelan08d9a1c2020-09-09 17:56:55 +0100736 $(ARMNN_THIRD_PARTY_PATH) \
Mike Kelly0e415132020-02-11 11:21:25 +0000737 $(NN_HEADER_PATH)
738
739LOCAL_CFLAGS := \
740 -std=$(CPP_VERSION) \
741 -fexceptions \
742 -DARMNN_ANDROID_NN_V1_1
743
744ifeq ($(ARMNN_DRIVER_DEBUG),1)
745LOCAL_CFLAGS += \
746 -UNDEBUG
747endif # ARMNN_DRIVER_DEBUG == 1
748
Kevin Mayec1e5b82020-02-26 17:00:39 +0000749# Required to build with the changes made to the Android ML framework specific to Android R
Kevin May157f8f42020-06-02 14:50:01 +0100750ifeq ($(ANDROID_R),1)
Kevin Mayec1e5b82020-02-26 17:00:39 +0000751LOCAL_CFLAGS+= \
752 -DARMNN_ANDROID_R
Kevin May157f8f42020-06-02 14:50:01 +0100753endif
Kevin Mayec1e5b82020-02-26 17:00:39 +0000754
Sadik Armagan188675f2021-02-12 17:16:42 +0000755ifeq ($(ANDROID_S),1)
756LOCAL_CFLAGS+= \
757 -DARMNN_ANDROID_S
758endif
759
Mike Kelly0e415132020-02-11 11:21:25 +0000760LOCAL_SRC_FILES := \
761 service.cpp
762
763LOCAL_STATIC_LIBRARIES := \
764 libneuralnetworks_common \
Sadik Armaganf36e10b2021-01-11 16:34:01 +0000765 libflatbuffers-framework \
Mike Kelly0e415132020-02-11 11:21:25 +0000766 arm_compute_library
767
768LOCAL_WHOLE_STATIC_LIBRARIES := \
769 libarmnn-driver@1.1
770
771LOCAL_SHARED_LIBRARIES := \
772 libbase \
773 libhidlbase \
774 libhidltransport \
775 libhidlmemory \
776 libdl \
777 libhardware \
778 liblog \
779 libtextclassifier_hash \
780 libutils \
781 android.hardware.neuralnetworks@1.0 \
782 android.hardware.neuralnetworks@1.1 \
783 android.hidl.allocator@1.0 \
784 android.hidl.memory@1.0
785
786ifeq ($(Q_OR_LATER),1)
787LOCAL_SHARED_LIBRARIES+= \
788 libnativewindow \
789 libui \
790 libfmq \
791 libcutils \
792 android.hardware.neuralnetworks@1.2
793endif # PLATFORM_VERSION == Q
794
Kevin Mayec1e5b82020-02-26 17:00:39 +0000795ifeq ($(R_OR_LATER),1)
796LOCAL_SHARED_LIBRARIES+= \
Sadik Armagand7be72e2020-04-23 12:56:05 +0100797 libsync \
Kevin Mayec1e5b82020-02-26 17:00:39 +0000798 android.hardware.neuralnetworks@1.3
799endif # PLATFORM_VERSION == R
800
alered017c395b22020-04-03 15:37:24 +0100801ifeq ($(ARMNN_INCLUDE_LIBOPENCL),1)
Mike Kelly0e415132020-02-11 11:21:25 +0000802LOCAL_SHARED_LIBRARIES+= \
803 libOpenCL
804endif
805
806include $(BUILD_EXECUTABLE)
807
808endif # PLATFORM_VERSION == 9
809
810ifeq ($(Q_OR_LATER),1)
811# The following target is available starting from Android Q
812
813#####################################################
Kevin Mayabc95d02020-05-15 15:34:03 +0100814# android.hardware.neuralnetworks@1.2-service-armnn #
Mike Kelly0e415132020-02-11 11:21:25 +0000815#####################################################
816include $(CLEAR_VARS)
817
Kevin Mayabc95d02020-05-15 15:34:03 +0100818LOCAL_MODULE := android.hardware.neuralnetworks@1.2-service-armnn
819LOCAL_INIT_RC := android.hardware.neuralnetworks@1.2-service-armnn.rc
Mike Kelly0e415132020-02-11 11:21:25 +0000820LOCAL_MODULE_TAGS := optional
821LOCAL_ARM_MODE := arm
822LOCAL_MODULE_RELATIVE_PATH := hw
823LOCAL_PROPRIETARY_MODULE := true
824# Mark source files as dependent on Android.mk
825LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
826
827LOCAL_C_INCLUDES := \
828 $(ARMNN_HEADER_PATH) \
Colm Donelan08d9a1c2020-09-09 17:56:55 +0100829 $(ARMNN_THIRD_PARTY_PATH) \
Mike Kelly0e415132020-02-11 11:21:25 +0000830 $(NN_HEADER_PATH)
831
832LOCAL_CFLAGS := \
833 -std=$(CPP_VERSION) \
834 -fexceptions \
835 -DARMNN_ANDROID_NN_V1_2 \
Mike Kelly0e415132020-02-11 11:21:25 +0000836
837ifeq ($(ARMNN_DRIVER_DEBUG),1)
838LOCAL_CFLAGS += \
839 -UNDEBUG
840endif # ARMNN_DRIVER_DEBUG == 1
841
Kevin Mayec1e5b82020-02-26 17:00:39 +0000842# Required to build with the changes made to the Android ML framework specific to Android R
Kevin May157f8f42020-06-02 14:50:01 +0100843ifeq ($(ANDROID_R),1)
Kevin Mayec1e5b82020-02-26 17:00:39 +0000844LOCAL_CFLAGS+= \
845 -DARMNN_ANDROID_R
Kevin May157f8f42020-06-02 14:50:01 +0100846endif
Kevin Mayec1e5b82020-02-26 17:00:39 +0000847
Sadik Armagan188675f2021-02-12 17:16:42 +0000848ifeq ($(ANDROID_S),1)
849LOCAL_CFLAGS+= \
850 -DARMNN_ANDROID_S
851endif
852
Mike Kelly0e415132020-02-11 11:21:25 +0000853LOCAL_SRC_FILES := \
854 service.cpp
855
856LOCAL_STATIC_LIBRARIES := \
857 libneuralnetworks_common \
Sadik Armaganf36e10b2021-01-11 16:34:01 +0000858 libflatbuffers-framework \
Mike Kelly0e415132020-02-11 11:21:25 +0000859 arm_compute_library
860
861LOCAL_WHOLE_STATIC_LIBRARIES := \
862 libarmnn-driver@1.2
863
864LOCAL_SHARED_LIBRARIES := \
865 libbase \
866 libhidlbase \
867 libhidltransport \
868 libhidlmemory \
869 libdl \
870 libhardware \
871 liblog \
872 libtextclassifier_hash \
873 libutils \
874 libnativewindow \
875 libui \
876 libfmq \
877 libcutils \
878 android.hidl.allocator@1.0 \
879 android.hidl.memory@1.0 \
880 android.hardware.neuralnetworks@1.0 \
881 android.hardware.neuralnetworks@1.1 \
882 android.hardware.neuralnetworks@1.2
883
Kevin Mayec1e5b82020-02-26 17:00:39 +0000884ifeq ($(R_OR_LATER),1)
885LOCAL_SHARED_LIBRARIES+= \
Sadik Armagand7be72e2020-04-23 12:56:05 +0100886 libsync \
Kevin Mayec1e5b82020-02-26 17:00:39 +0000887 android.hardware.neuralnetworks@1.3
888endif # R or later
889
alered017c395b22020-04-03 15:37:24 +0100890ifeq ($(ARMNN_INCLUDE_LIBOPENCL),1)
Mike Kelly0e415132020-02-11 11:21:25 +0000891LOCAL_SHARED_LIBRARIES+= \
892 libOpenCL
893endif
894
895include $(BUILD_EXECUTABLE)
896
897endif # PLATFORM_VERSION == Q
898
Kevin May42477c12020-03-26 13:34:14 +0000899ifeq ($(R_OR_LATER),1)
900# The following target is available starting from Android R
901
902#####################################################
Kevin Mayabc95d02020-05-15 15:34:03 +0100903# android.hardware.neuralnetworks@1.3-service-armnn #
Kevin May42477c12020-03-26 13:34:14 +0000904#####################################################
905include $(CLEAR_VARS)
906
Kevin Mayabc95d02020-05-15 15:34:03 +0100907LOCAL_MODULE := android.hardware.neuralnetworks@1.3-service-armnn
908LOCAL_INIT_RC := android.hardware.neuralnetworks@1.3-service-armnn.rc
Kevin May42477c12020-03-26 13:34:14 +0000909LOCAL_MODULE_TAGS := optional
910LOCAL_ARM_MODE := arm
911LOCAL_MODULE_RELATIVE_PATH := hw
912LOCAL_PROPRIETARY_MODULE := true
913# Mark source files as dependent on Android.mk
914LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
915
916LOCAL_C_INCLUDES := \
917 $(ARMNN_HEADER_PATH) \
Colm Donelan08d9a1c2020-09-09 17:56:55 +0100918 $(ARMNN_THIRD_PARTY_PATH) \
Kevin May42477c12020-03-26 13:34:14 +0000919 $(NN_HEADER_PATH)
920
921LOCAL_CFLAGS := \
922 -std=$(CPP_VERSION) \
923 -fexceptions \
924 -DARMNN_ANDROID_NN_V1_3 \
Sadik Armagan188675f2021-02-12 17:16:42 +0000925
926ifeq ($(ANDROID_R),1)
927LOCAL_CFLAGS+= \
Kevin May42477c12020-03-26 13:34:14 +0000928 -DARMNN_ANDROID_R
Sadik Armagan188675f2021-02-12 17:16:42 +0000929endif
930
931ifeq ($(ANDROID_S),1)
932LOCAL_CFLAGS+= \
933 -DARMNN_ANDROID_S
934endif
Kevin May42477c12020-03-26 13:34:14 +0000935
936ifeq ($(ARMNN_DRIVER_DEBUG),1)
937LOCAL_CFLAGS += \
938 -UNDEBUG
939endif # ARMNN_DRIVER_DEBUG == 1
940
941LOCAL_SRC_FILES := \
942 service.cpp
943
944LOCAL_STATIC_LIBRARIES := \
945 libneuralnetworks_common \
Sadik Armaganf36e10b2021-01-11 16:34:01 +0000946 libflatbuffers-framework \
Kevin May42477c12020-03-26 13:34:14 +0000947 arm_compute_library
948
949LOCAL_WHOLE_STATIC_LIBRARIES := \
950 libarmnn-driver@1.3
951
952LOCAL_SHARED_LIBRARIES := \
953 libbase \
954 libhidlbase \
955 libhidltransport \
956 libhidlmemory \
957 libdl \
958 libhardware \
959 liblog \
960 libtextclassifier_hash \
961 libutils \
962 libnativewindow \
963 libui \
964 libfmq \
965 libcutils \
Sadik Armagand7be72e2020-04-23 12:56:05 +0100966 libsync \
Kevin May42477c12020-03-26 13:34:14 +0000967 android.hidl.allocator@1.0 \
968 android.hidl.memory@1.0 \
969 android.hardware.neuralnetworks@1.0 \
970 android.hardware.neuralnetworks@1.1 \
971 android.hardware.neuralnetworks@1.2 \
972 android.hardware.neuralnetworks@1.3
973
alered017c395b22020-04-03 15:37:24 +0100974ifeq ($(ARMNN_INCLUDE_LIBOPENCL),1)
Kevin May42477c12020-03-26 13:34:14 +0000975LOCAL_SHARED_LIBRARIES+= \
976 libOpenCL
977endif
978
979include $(BUILD_EXECUTABLE)
980
981endif # PLATFORM_VERSION == R
982
Mike Kelly0e415132020-02-11 11:21:25 +0000983##########################
984# armnn module and tests #
985##########################
986# Note we use ANDROID_NN_DRIVER_LOCAL_PATH rather than LOCAL_PATH because LOCAL_PATH will be overwritten
987# when including other .mk files that set it.
988include $(ANDROID_NN_DRIVER_LOCAL_PATH)/armnn/Android.mk
989include $(ANDROID_NN_DRIVER_LOCAL_PATH)/test/Android.mk