1 # App prebuilt coming from Soong. 2 # Extra inputs: 3 # LOCAL_SOONG_BUILT_INSTALLED 4 # LOCAL_SOONG_BUNDLE 5 # LOCAL_SOONG_CLASSES_JAR 6 # LOCAL_SOONG_DEX_JAR 7 # LOCAL_SOONG_HEADER_JAR 8 # LOCAL_SOONG_JACOCO_REPORT_CLASSES_JAR 9 # LOCAL_SOONG_PROGUARD_DICT 10 # LOCAL_SOONG_RESOURCE_EXPORT_PACKAGE 11 # LOCAL_SOONG_RRO_DIRS 12 # LOCAL_SOONG_JNI_LIBS_$(TARGET_ARCH) 13 # LOCAL_SOONG_JNI_LIBS_$(TARGET_2ND_ARCH) 14 15 ifneq ($(LOCAL_MODULE_MAKEFILE),$(SOONG_ANDROID_MK)) 16 $(call pretty-error,soong_app_prebuilt.mk may only be used from Soong) 17 endif 18 19 LOCAL_MODULE_SUFFIX := .apk 20 LOCAL_BUILT_MODULE_STEM := package.apk 21 22 intermediates.COMMON := $(call local-intermediates-dir,COMMON) 23 24 full_classes_jar := $(intermediates.COMMON)/classes.jar 25 full_classes_pre_proguard_jar := $(intermediates.COMMON)/classes-pre-proguard.jar 26 full_classes_header_jar := $(intermediates.COMMON)/classes-header.jar 27 28 ####################################### 29 include $(BUILD_SYSTEM)/base_rules.mk 30 ####################################### 31 32 ifdef LOCAL_SOONG_CLASSES_JAR 33 $(eval $(call copy-one-file,$(LOCAL_SOONG_CLASSES_JAR),$(full_classes_jar))) 34 $(eval $(call copy-one-file,$(LOCAL_SOONG_CLASSES_JAR),$(full_classes_pre_proguard_jar))) 35 $(eval $(call add-dependency,$(LOCAL_BUILT_MODULE),$(full_classes_jar))) 36 37 ifneq ($(TURBINE_ENABLED),false) 38 ifdef LOCAL_SOONG_HEADER_JAR 39 $(eval $(call copy-one-file,$(LOCAL_SOONG_HEADER_JAR),$(full_classes_header_jar))) 40 else 41 $(eval $(call copy-one-file,$(full_classes_jar),$(full_classes_header_jar))) 42 endif 43 endif # TURBINE_ENABLED != false 44 endif 45 46 # Run veridex on product, product_services and vendor modules. 47 # We skip it for unbundled app builds where we cannot build veridex. 48 module_run_appcompat := 49 ifeq (true,$(non_system_module)) 50 ifeq (,$(TARGET_BUILD_APPS)$(filter true,$(TARGET_BUILD_PDK))) # ! unbundled app build 51 ifneq ($(UNSAFE_DISABLE_HIDDENAPI_FLAGS),true) 52 module_run_appcompat := true 53 endif 54 endif 55 endif 56 57 ifeq ($(module_run_appcompat),true) 58 $(LOCAL_BUILT_MODULE): $(appcompat-files) 59 $(LOCAL_BUILT_MODULE): PRIVATE_INSTALLED_MODULE := $(LOCAL_INSTALLED_MODULE) 60 $(LOCAL_BUILT_MODULE): $(LOCAL_PREBUILT_MODULE_FILE) 61 @echo "Copy: $@" 62 $(copy-file-to-target) 63 $(call appcompat-header, aapt2) 64 $(run-appcompat) 65 else 66 $(eval $(call copy-one-file,$(LOCAL_PREBUILT_MODULE_FILE),$(LOCAL_BUILT_MODULE))) 67 endif 68 69 ifdef LOCAL_SOONG_JACOCO_REPORT_CLASSES_JAR 70 $(eval $(call copy-one-file,$(LOCAL_SOONG_JACOCO_REPORT_CLASSES_JAR),\ 71 $(intermediates.COMMON)/jacoco-report-classes.jar)) 72 $(call add-dependency,$(LOCAL_BUILT_MODULE),\ 73 $(intermediates.COMMON)/jacoco-report-classes.jar) 74 endif 75 76 ifdef LOCAL_SOONG_PROGUARD_DICT 77 $(eval $(call copy-one-file,$(LOCAL_SOONG_PROGUARD_DICT),\ 78 $(intermediates.COMMON)/proguard_dictionary)) 79 $(call add-dependency,$(LOCAL_BUILT_MODULE),\ 80 $(intermediates.COMMON)/proguard_dictionary) 81 endif 82 83 ifdef LOCAL_SOONG_RESOURCE_EXPORT_PACKAGE 84 resource_export_package := $(intermediates.COMMON)/package-export.apk 85 resource_export_stamp := $(intermediates.COMMON)/src/R.stamp 86 87 $(resource_export_package): PRIVATE_STAMP := $(resource_export_stamp) 88 $(resource_export_package): .KATI_IMPLICIT_OUTPUTS := $(resource_export_stamp) 89 $(resource_export_package): $(LOCAL_SOONG_RESOURCE_EXPORT_PACKAGE) 90 @echo "Copy: $@" 91 $(copy-file-to-target) 92 touch $(PRIVATE_STAMP) 93 $(call add-dependency,$(LOCAL_BUILT_MODULE),$(resource_export_package)) 94 95 endif # LOCAL_SOONG_RESOURCE_EXPORT_PACKAGE 96 97 java-dex: $(LOCAL_SOONG_DEX_JAR) 98 99 100 ifneq ($(BUILD_PLATFORM_ZIP),) 101 $(eval $(call copy-one-file,$(LOCAL_SOONG_DEX_JAR),$(dir $(LOCAL_BUILT_MODULE))package.dex.apk)) 102 endif 103 104 my_built_installed := $(foreach f,$(LOCAL_SOONG_BUILT_INSTALLED),\ 105 $(call word-colon,1,$(f)):$(PRODUCT_OUT)$(call word-colon,2,$(f))) 106 my_installed := $(call copy-many-files, $(my_built_installed)) 107 ALL_MODULES.$(my_register_name).INSTALLED += $(my_installed) 108 ALL_MODULES.$(my_register_name).BUILT_INSTALLED += $(my_built_installed) 109 $(my_all_targets): $(my_installed) 110 111 # embedded JNI will already have been handled by soong 112 my_embed_jni := 113 my_prebuilt_jni_libs := 114 ifdef LOCAL_SOONG_JNI_LIBS_$(TARGET_ARCH) 115 my_2nd_arch_prefix := 116 LOCAL_JNI_SHARED_LIBRARIES := $(LOCAL_SOONG_JNI_LIBS_$(TARGET_ARCH)) 117 include $(BUILD_SYSTEM)/install_jni_libs_internal.mk 118 endif 119 ifdef TARGET_2ND_ARCH 120 ifdef LOCAL_SOONG_JNI_LIBS_$(TARGET_2ND_ARCH) 121 my_2nd_arch_prefix := $(TARGET_2ND_ARCH_VAR_PREFIX) 122 LOCAL_JNI_SHARED_LIBRARIES := $(LOCAL_SOONG_JNI_LIBS_$(TARGET_2ND_ARCH)) 123 include $(BUILD_SYSTEM)/install_jni_libs_internal.mk 124 endif 125 endif 126 LOCAL_SHARED_JNI_LIBRARIES := 127 my_embed_jni := 128 my_prebuilt_jni_libs := 129 my_2nd_arch_prefix := 130 131 PACKAGES := $(PACKAGES) $(LOCAL_MODULE) 132 ifdef LOCAL_CERTIFICATE 133 PACKAGES.$(LOCAL_MODULE).CERTIFICATE := $(LOCAL_CERTIFICATE) 134 PACKAGES.$(LOCAL_MODULE).PRIVATE_KEY := $(patsubst %.x509.pem,%.pk8,$(LOCAL_CERTIFICATE)) 135 endif 136 include $(BUILD_SYSTEM)/app_certificate_validate.mk 137 PACKAGES.$(LOCAL_MODULE).OVERRIDES := $(strip $(LOCAL_OVERRIDES_PACKAGES)) 138 139 ifdef LOCAL_SOONG_BUNDLE 140 ALL_MODULES.$(LOCAL_MODULE).BUNDLE := $(LOCAL_SOONG_BUNDLE) 141 endif 142 143 ifndef LOCAL_IS_HOST_MODULE 144 ifeq ($(LOCAL_SDK_VERSION),system_current) 145 my_link_type := java:system 146 else ifneq ($(LOCAL_SDK_VERSION),) 147 my_link_type := java:sdk 148 else 149 my_link_type := java:platform 150 endif 151 # warn/allowed types are both empty because Soong modules can't depend on 152 # make-defined modules. 153 my_warn_types := 154 my_allowed_types := 155 156 my_link_deps := 157 my_2nd_arch_prefix := $(LOCAL_2ND_ARCH_VAR_PREFIX) 158 my_common := COMMON 159 include $(BUILD_SYSTEM)/link_type.mk 160 endif # !LOCAL_IS_HOST_MODULE 161 162 ifdef LOCAL_SOONG_DEVICE_RRO_DIRS 163 $(call append_enforce_rro_sources, \ 164 $(my_register_name), \ 165 false, \ 166 $(LOCAL_FULL_MANIFEST_FILE), \ 167 $(if $(LOCAL_EXPORT_PACKAGE_RESOURCES),true,false), \ 168 $(LOCAL_SOONG_DEVICE_RRO_DIRS), \ 169 vendor \ 170 ) 171 endif 172 173 ifdef LOCAL_SOONG_PRODUCT_RRO_DIRS 174 $(call append_enforce_rro_sources, \ 175 $(my_register_name), \ 176 false, \ 177 $(LOCAL_FULL_MANIFEST_FILE), \ 178 $(if $(LOCAL_EXPORT_PACKAGE_RESOURCES),true,false), \ 179 $(LOCAL_SOONG_PRODUCT_RRO_DIRS), \ 180 product \ 181 ) 182 endif 183 184 SOONG_ALREADY_CONV := $(SOONG_ALREADY_CONV) $(LOCAL_MODULE) 185