1 # Decides how to install the jni libraries needed by an apk. 2 # Input variables: 3 # my_module_multilib, LOCAL_2ND_ARCH_VAR_PREFIX (from package.mk or prebuilt.mk) 4 # rs_compatibility_jni_libs (from java.mk) 5 # my_module_path (from base_rules.mk) 6 # partition_tag (from base_rules.mk) 7 # my_prebuilt_src_file (from prebuilt_internal.mk) 8 # 9 # Output variables: 10 # jni_shared_libraries, jni_shared_libraries_abi, jni_shared_libraries_with_abis if we are going to embed the libraries into the apk; 11 # embedded_prebuilt_jni_libs, prebuilt jni libs embedded in prebuilt apk. 12 # 13 14 my_embed_jni := 15 ifneq ($(TARGET_BUILD_APPS),) 16 my_embed_jni := true 17 endif 18 ifneq ($(filter tests samples, $(LOCAL_MODULE_TAGS)),) 19 my_embed_jni := true 20 endif 21 22 # If the APK is not installed in one of the following partitions, force its libraries 23 # to be embedded inside the APK instead of installed to /<partition>/lib[64]/. 24 supported_partition_patterns := \ 25 $(TARGET_OUT)/% \ 26 $(TARGET_OUT_VENDOR)/% \ 27 $(TARGET_OUT_OEM)/% \ 28 $(TARGET_OUT_PRODUCT)/% \ 29 $(TARGET_OUT_PRODUCT_SERVICES)/% \ 30 31 ifeq ($(filter $(supported_partition_patterns),$(my_module_path)),) 32 my_embed_jni := true 33 endif 34 35 # If we're installing this APP as a compressed module, we include all JNI libraries 36 # in the compressed artifact, rather than as separate files on the partition in question. 37 ifdef LOCAL_COMPRESSED_MODULE 38 my_embed_jni := true 39 endif 40 41 jni_shared_libraries := 42 jni_shared_libraries_abis := 43 # jni_shared_libraries_with_abis is a list of <abi>:<path-to-the-built-jni-lib> 44 jni_shared_libraries_with_abis := 45 embedded_prebuilt_jni_libs := 46 47 ####################################### 48 # For TARGET_ARCH 49 my_2nd_arch_prefix := 50 my_add_jni := 51 # The module is built for TARGET_ARCH 52 ifeq ($(my_2nd_arch_prefix),$(LOCAL_2ND_ARCH_VAR_PREFIX)) 53 my_add_jni := true 54 endif 55 # Or it explicitly requires both 56 ifeq ($(my_module_multilib),both) 57 my_add_jni := true 58 endif 59 ifeq ($(my_add_jni),true) 60 my_prebuilt_jni_libs := $(LOCAL_PREBUILT_JNI_LIBS_$(TARGET_ARCH)) 61 ifndef my_prebuilt_jni_libs 62 my_prebuilt_jni_libs := $(LOCAL_PREBUILT_JNI_LIBS) 63 endif 64 include $(BUILD_SYSTEM)/install_jni_libs_internal.mk 65 jni_shared_libraries += $(my_jni_shared_libraries) 66 jni_shared_libraries_abis += $(my_jni_shared_libraries_abi) 67 jni_shared_libraries_with_abis += $(addprefix $(my_jni_shared_libraries_abi):,\ 68 $(my_jni_shared_libraries)) 69 embedded_prebuilt_jni_libs += $(my_embedded_prebuilt_jni_libs) 70 71 # Include RS dynamically-generated libraries as well 72 # TODO: Add multilib support once RS supports generating multilib libraries. 73 jni_shared_libraries += $(rs_compatibility_jni_libs) 74 jni_shared_libraries_with_abis += $(addprefix $(my_jni_shared_libraries_abi):,\ 75 $(rs_compatibility_jni_libs)) 76 endif # my_add_jni 77 78 ####################################### 79 # For TARGET_2ND_ARCH 80 ifdef TARGET_2ND_ARCH 81 my_2nd_arch_prefix := $(TARGET_2ND_ARCH_VAR_PREFIX) 82 my_add_jni := 83 # The module is built for TARGET_2ND_ARCH 84 ifeq ($(my_2nd_arch_prefix),$(LOCAL_2ND_ARCH_VAR_PREFIX)) 85 my_add_jni := true 86 endif 87 # Or it explicitly requires both 88 ifeq ($(my_module_multilib),both) 89 my_add_jni := true 90 endif 91 ifeq ($(my_add_jni),true) 92 my_prebuilt_jni_libs := $(LOCAL_PREBUILT_JNI_LIBS_$(TARGET_2ND_ARCH)) 93 ifndef my_prebuilt_jni_libs 94 my_prebuilt_jni_libs := $(LOCAL_PREBUILT_JNI_LIBS) 95 endif 96 include $(BUILD_SYSTEM)/install_jni_libs_internal.mk 97 jni_shared_libraries += $(my_jni_shared_libraries) 98 jni_shared_libraries_abis += $(my_jni_shared_libraries_abi) 99 jni_shared_libraries_with_abis += $(addprefix $(my_jni_shared_libraries_abi):,\ 100 $(my_jni_shared_libraries)) 101 embedded_prebuilt_jni_libs += $(my_embedded_prebuilt_jni_libs) 102 endif # my_add_jni 103 endif # TARGET_2ND_ARCH 104 105 jni_shared_libraries := $(strip $(jni_shared_libraries)) 106 jni_shared_libraries_abis := $(sort $(jni_shared_libraries_abis)) 107 jni_shared_libraries_with_abis := $(strip $(jni_shared_libraries_with_abis)) 108 embedded_prebuilt_jni_libs := $(strip $(embedded_prebuilt_jni_libs)) 109