| # Decides how to install the jni libraries needed by an apk. |
| # Input variables: |
| # my_module_multilib, LOCAL_2ND_ARCH_VAR_PREFIX (from package.mk or prebuilt.mk) |
| # rs_compatibility_jni_libs (from java.mk) |
| # my_module_path (from base_rules.mk) |
| # partition_tag (from base_rules.mk) |
| # my_prebuilt_src_file (from prebuilt_internal.mk) |
| # |
| # Output variables: |
| # jni_shared_libraries, jni_shared_libraries_abi, jni_shared_libraries_with_abis if we are going to embed the libraries into the apk; |
| # embedded_prebuilt_jni_libs, prebuilt jni libs embedded in prebuilt apk. |
| # |
| |
| my_embed_jni := |
| ifneq ($(TARGET_BUILD_APPS),) |
| my_embed_jni := true |
| endif |
| ifneq ($(filter tests samples, $(LOCAL_MODULE_TAGS)),) |
| my_embed_jni := true |
| endif |
| |
| # If the APK is not installed in one of the following partitions, force its libraries |
| # to be embedded inside the APK instead of installed to /<partition>/lib[64]/. |
| supported_partition_patterns := \ |
| $(TARGET_OUT)/% \ |
| $(TARGET_OUT_VENDOR)/% \ |
| $(TARGET_OUT_OEM)/% \ |
| $(TARGET_OUT_PRODUCT)/% \ |
| $(TARGET_OUT_SYSTEM_EXT)/% \ |
| |
| ifeq ($(filter $(supported_partition_patterns),$(my_module_path)),) |
| my_embed_jni := true |
| endif |
| |
| # If we're installing this APP as a compressed module, we include all JNI libraries |
| # in the compressed artifact, rather than as separate files on the partition in question. |
| ifdef LOCAL_COMPRESSED_MODULE |
| my_embed_jni := true |
| endif |
| |
| jni_shared_libraries := |
| jni_shared_libraries_abis := |
| # jni_shared_libraries_with_abis is a list of <abi>:<path-to-the-built-jni-lib> |
| jni_shared_libraries_with_abis := |
| embedded_prebuilt_jni_libs := |
| |
| ####################################### |
| # For TARGET_ARCH |
| my_2nd_arch_prefix := |
| my_add_jni := |
| # The module is built for TARGET_ARCH |
| ifeq ($(my_2nd_arch_prefix),$(LOCAL_2ND_ARCH_VAR_PREFIX)) |
| my_add_jni := true |
| endif |
| # Or it explicitly requires both |
| ifeq ($(my_module_multilib),both) |
| my_add_jni := true |
| endif |
| ifeq ($(my_add_jni),true) |
| my_prebuilt_jni_libs := $(LOCAL_PREBUILT_JNI_LIBS_$(TARGET_ARCH)) |
| ifndef my_prebuilt_jni_libs |
| my_prebuilt_jni_libs := $(LOCAL_PREBUILT_JNI_LIBS) |
| endif |
| include $(BUILD_SYSTEM)/install_jni_libs_internal.mk |
| jni_shared_libraries += $(my_jni_shared_libraries) |
| jni_shared_libraries_abis += $(my_jni_shared_libraries_abi) |
| jni_shared_libraries_with_abis += $(addprefix $(my_jni_shared_libraries_abi):,\ |
| $(my_jni_shared_libraries)) |
| embedded_prebuilt_jni_libs += $(my_embedded_prebuilt_jni_libs) |
| |
| # Include RS dynamically-generated libraries as well |
| # TODO: Add multilib support once RS supports generating multilib libraries. |
| jni_shared_libraries += $(rs_compatibility_jni_libs) |
| jni_shared_libraries_with_abis += $(addprefix $(my_jni_shared_libraries_abi):,\ |
| $(rs_compatibility_jni_libs)) |
| endif # my_add_jni |
| |
| ####################################### |
| # For TARGET_2ND_ARCH |
| ifdef TARGET_2ND_ARCH |
| my_2nd_arch_prefix := $(TARGET_2ND_ARCH_VAR_PREFIX) |
| my_add_jni := |
| # The module is built for TARGET_2ND_ARCH |
| ifeq ($(my_2nd_arch_prefix),$(LOCAL_2ND_ARCH_VAR_PREFIX)) |
| my_add_jni := true |
| endif |
| # Or it explicitly requires both |
| ifeq ($(my_module_multilib),both) |
| my_add_jni := true |
| endif |
| ifeq ($(my_add_jni),true) |
| my_prebuilt_jni_libs := $(LOCAL_PREBUILT_JNI_LIBS_$(TARGET_2ND_ARCH)) |
| ifndef my_prebuilt_jni_libs |
| my_prebuilt_jni_libs := $(LOCAL_PREBUILT_JNI_LIBS) |
| endif |
| include $(BUILD_SYSTEM)/install_jni_libs_internal.mk |
| jni_shared_libraries += $(my_jni_shared_libraries) |
| jni_shared_libraries_abis += $(my_jni_shared_libraries_abi) |
| jni_shared_libraries_with_abis += $(addprefix $(my_jni_shared_libraries_abi):,\ |
| $(my_jni_shared_libraries)) |
| embedded_prebuilt_jni_libs += $(my_embedded_prebuilt_jni_libs) |
| endif # my_add_jni |
| endif # TARGET_2ND_ARCH |
| |
| jni_shared_libraries := $(strip $(jni_shared_libraries)) |
| jni_shared_libraries_abis := $(sort $(jni_shared_libraries_abis)) |
| jni_shared_libraries_with_abis := $(strip $(jni_shared_libraries_with_abis)) |
| embedded_prebuilt_jni_libs := $(strip $(embedded_prebuilt_jni_libs)) |