blob: 918a83915aa761e8bf9a49838cfa963c169ede0b [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;
11# extracted_jni_libs, if we extract jni libs from 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
21ifeq ($(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
24endif
25
Ying Wang8e20ef62014-06-24 20:01:52 -070026jni_shared_libraries :=
27jni_shared_libraries_abis :=
28# jni_shared_libraries_with_abis is a list of <abi>:<path-to-the-built-jni-lib>
29jni_shared_libraries_with_abis :=
30extracted_jni_libs :=
Ying Wang7cf9f282014-04-18 20:13:41 -070031
Ying Wang8e20ef62014-06-24 20:01:52 -070032#######################################
33# For TARGET_ARCH
34my_2nd_arch_prefix :=
35my_add_jni :=
36# The module is built for TARGET_ARCH
37ifeq ($(my_2nd_arch_prefix),$(LOCAL_2ND_ARCH_VAR_PREFIX))
38my_add_jni := true
Ying Wang695e8262014-04-17 13:38:04 -070039endif
Ying Wang8e20ef62014-06-24 20:01:52 -070040# Or it explicitly requires both
41ifeq ($(my_module_multilib),both)
42my_add_jni := true
Ying Wang695e8262014-04-17 13:38:04 -070043endif
Ying Wang8e20ef62014-06-24 20:01:52 -070044ifeq ($(my_add_jni),true)
45my_prebuilt_jni_libs := $(LOCAL_PREBUILT_JNI_LIBS_$(TARGET_ARCH))
46ifndef my_prebuilt_jni_libs
47my_prebuilt_jni_libs := $(LOCAL_PREBUILT_JNI_LIBS)
Ying Wang695e8262014-04-17 13:38:04 -070048endif
Ying Wang8e20ef62014-06-24 20:01:52 -070049include $(BUILD_SYSTEM)/install_jni_libs_internal.mk
50jni_shared_libraries += $(my_jni_shared_libraries)
51jni_shared_libraries_abis += $(my_jni_shared_libraries_abi)
52jni_shared_libraries_with_abis += $(addprefix $(my_jni_shared_libraries_abi):,\
53 $(my_jni_shared_libraries))
54extracted_jni_libs += $(my_extracted_jni_libs)
Ying Wang695e8262014-04-17 13:38:04 -070055
Ying Wang8e20ef62014-06-24 20:01:52 -070056# Include RS dynamically-generated libraries as well
57# TODO: Add multilib support once RS supports generating multilib libraries.
58jni_shared_libraries += $(rs_compatibility_jni_libs)
59endif # my_add_jni
Ying Wang695e8262014-04-17 13:38:04 -070060
Ying Wang8e20ef62014-06-24 20:01:52 -070061#######################################
62# For TARGET_2ND_ARCH
63ifdef TARGET_2ND_ARCH
64my_2nd_arch_prefix := $(TARGET_2ND_ARCH_VAR_PREFIX)
65my_add_jni :=
66# The module is built for TARGET_2ND_ARCH
67ifeq ($(my_2nd_arch_prefix),$(LOCAL_2ND_ARCH_VAR_PREFIX))
68my_add_jni := true
69endif
70# Or it explicitly requires both
71ifeq ($(my_module_multilib),both)
72my_add_jni := true
73endif
74ifeq ($(my_add_jni),true)
75my_prebuilt_jni_libs := $(LOCAL_PREBUILT_JNI_LIBS_$(TARGET_2ND_ARCH))
76ifndef my_prebuilt_jni_libs
77my_prebuilt_jni_libs := $(LOCAL_PREBUILT_JNI_LIBS)
78endif
79include $(BUILD_SYSTEM)/install_jni_libs_internal.mk
80jni_shared_libraries += $(my_jni_shared_libraries)
81jni_shared_libraries_abis += $(my_jni_shared_libraries_abi)
82jni_shared_libraries_with_abis += $(addprefix $(my_jni_shared_libraries_abi):,\
83 $(my_jni_shared_libraries))
84extracted_jni_libs += $(my_extracted_jni_libs)
85endif # my_add_jni
86endif # TARGET_2ND_ARCH
Ying Wang695e8262014-04-17 13:38:04 -070087
88jni_shared_libraries := $(strip $(jni_shared_libraries))
Ying Wang8e20ef62014-06-24 20:01:52 -070089jni_shared_libraries_abis := $(sort $(jni_shared_libraries_abis))
90jni_shared_libraries_with_abis := $(strip $(jni_shared_libraries_with_abis))
91extracted_jni_libs := $(strip $(extracted_jni_libs))