blob: b7d83dc13732073a220d19acc3f77f3314bf1511 [file] [log] [blame]
Ying Wang695e8262014-04-17 13:38:04 -07001# Decides how to install the jni libraries needed by an apk.
2# Input variables:
Ying Wang8e20ef62014-06-24 20:01:52 -07003# my_module_multilib, LOCAL_2ND_ARCH_VAR_PREFIX (from package.mk or prebuilt.mk)
Ying Wang695e8262014-04-17 13:38:04 -07004# rs_compatibility_jni_libs (from java.mk)
5# my_module_path (from base_rules.mk)
6# partition_tag (from base_rules.mk)
Ying Wang7cf9f282014-04-18 20:13:41 -07007# my_prebuilt_src_file (from prebuilt_internal.mk)
Ying Wang695e8262014-04-17 13:38:04 -07008#
9# Output variables:
Ying Wang8e20ef62014-06-24 20:01:52 -070010# jni_shared_libraries, jni_shared_libraries_abi, jni_shared_libraries_with_abis if we are going to embed the libraries into the apk;
Ying Wang1fb01522015-05-01 14:02:26 -070011# embedded_prebuilt_jni_libs, prebuilt jni libs embedded in prebuilt apk.
Ying Wang695e8262014-04-17 13:38:04 -070012#
13
Ying Wang695e8262014-04-17 13:38:04 -070014my_embed_jni :=
15ifneq ($(TARGET_BUILD_APPS),)
16my_embed_jni := true
17endif
18ifneq ($(filter tests samples, $(LOCAL_MODULE_TAGS)),)
19my_embed_jni := true
20endif
Jiyong Parkf19117c2017-11-14 10:50:59 +090021ifeq ($(filter $(TARGET_OUT)/% $(TARGET_OUT_VENDOR)/% $(TARGET_OUT_OEM)/%, $(my_module_path)),)
22# If this app isn't to be installed to system partitions.
23my_embed_jni := true
Ying Wang695e8262014-04-17 13:38:04 -070024endif
Narayan Kamath7c205102017-08-07 12:31:17 +010025# If we're installing this APP as a compressed module, we include all JNI libraries
26# in the compressed artifact, rather than as separate files on the partition in question.
27ifdef LOCAL_COMPRESSED_MODULE
28my_embed_jni := true
29endif
Ying Wang695e8262014-04-17 13:38:04 -070030
Ying Wang8e20ef62014-06-24 20:01:52 -070031jni_shared_libraries :=
32jni_shared_libraries_abis :=
33# jni_shared_libraries_with_abis is a list of <abi>:<path-to-the-built-jni-lib>
34jni_shared_libraries_with_abis :=
Ying Wang1fb01522015-05-01 14:02:26 -070035embedded_prebuilt_jni_libs :=
Ying Wang7cf9f282014-04-18 20:13:41 -070036
Ying Wang8e20ef62014-06-24 20:01:52 -070037#######################################
38# For TARGET_ARCH
39my_2nd_arch_prefix :=
40my_add_jni :=
41# The module is built for TARGET_ARCH
42ifeq ($(my_2nd_arch_prefix),$(LOCAL_2ND_ARCH_VAR_PREFIX))
43my_add_jni := true
Ying Wang695e8262014-04-17 13:38:04 -070044endif
Ying Wang8e20ef62014-06-24 20:01:52 -070045# Or it explicitly requires both
46ifeq ($(my_module_multilib),both)
47my_add_jni := true
Ying Wang695e8262014-04-17 13:38:04 -070048endif
Ying Wang8e20ef62014-06-24 20:01:52 -070049ifeq ($(my_add_jni),true)
50my_prebuilt_jni_libs := $(LOCAL_PREBUILT_JNI_LIBS_$(TARGET_ARCH))
51ifndef my_prebuilt_jni_libs
52my_prebuilt_jni_libs := $(LOCAL_PREBUILT_JNI_LIBS)
Ying Wang695e8262014-04-17 13:38:04 -070053endif
Ying Wang8e20ef62014-06-24 20:01:52 -070054include $(BUILD_SYSTEM)/install_jni_libs_internal.mk
55jni_shared_libraries += $(my_jni_shared_libraries)
56jni_shared_libraries_abis += $(my_jni_shared_libraries_abi)
57jni_shared_libraries_with_abis += $(addprefix $(my_jni_shared_libraries_abi):,\
58 $(my_jni_shared_libraries))
Ying Wang1fb01522015-05-01 14:02:26 -070059embedded_prebuilt_jni_libs += $(my_embedded_prebuilt_jni_libs)
Ying Wang695e8262014-04-17 13:38:04 -070060
Ying Wang8e20ef62014-06-24 20:01:52 -070061# Include RS dynamically-generated libraries as well
62# TODO: Add multilib support once RS supports generating multilib libraries.
63jni_shared_libraries += $(rs_compatibility_jni_libs)
Ying Wanga626d3b2014-06-30 11:17:16 -070064jni_shared_libraries_with_abis += $(addprefix $(my_jni_shared_libraries_abi):,\
65 $(rs_compatibility_jni_libs))
Ying Wang8e20ef62014-06-24 20:01:52 -070066endif # my_add_jni
Ying Wang695e8262014-04-17 13:38:04 -070067
Ying Wang8e20ef62014-06-24 20:01:52 -070068#######################################
69# For TARGET_2ND_ARCH
70ifdef TARGET_2ND_ARCH
71my_2nd_arch_prefix := $(TARGET_2ND_ARCH_VAR_PREFIX)
72my_add_jni :=
73# The module is built for TARGET_2ND_ARCH
74ifeq ($(my_2nd_arch_prefix),$(LOCAL_2ND_ARCH_VAR_PREFIX))
75my_add_jni := true
76endif
77# Or it explicitly requires both
78ifeq ($(my_module_multilib),both)
79my_add_jni := true
80endif
81ifeq ($(my_add_jni),true)
82my_prebuilt_jni_libs := $(LOCAL_PREBUILT_JNI_LIBS_$(TARGET_2ND_ARCH))
83ifndef my_prebuilt_jni_libs
84my_prebuilt_jni_libs := $(LOCAL_PREBUILT_JNI_LIBS)
85endif
86include $(BUILD_SYSTEM)/install_jni_libs_internal.mk
87jni_shared_libraries += $(my_jni_shared_libraries)
88jni_shared_libraries_abis += $(my_jni_shared_libraries_abi)
89jni_shared_libraries_with_abis += $(addprefix $(my_jni_shared_libraries_abi):,\
90 $(my_jni_shared_libraries))
Ying Wang1fb01522015-05-01 14:02:26 -070091embedded_prebuilt_jni_libs += $(my_embedded_prebuilt_jni_libs)
Ying Wang8e20ef62014-06-24 20:01:52 -070092endif # my_add_jni
93endif # TARGET_2ND_ARCH
Ying Wang695e8262014-04-17 13:38:04 -070094
95jni_shared_libraries := $(strip $(jni_shared_libraries))
Ying Wang8e20ef62014-06-24 20:01:52 -070096jni_shared_libraries_abis := $(sort $(jni_shared_libraries_abis))
97jni_shared_libraries_with_abis := $(strip $(jni_shared_libraries_with_abis))
Ying Wang1fb01522015-05-01 14:02:26 -070098embedded_prebuilt_jni_libs := $(strip $(embedded_prebuilt_jni_libs))