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 15ifneq ($(LOCAL_MODULE_MAKEFILE),$(SOONG_ANDROID_MK)) 16 $(call pretty-error,soong_app_prebuilt.mk may only be used from Soong) 17endif 18 19LOCAL_MODULE_SUFFIX := .apk 20LOCAL_BUILT_MODULE_STEM := package.apk 21 22intermediates.COMMON := $(call local-intermediates-dir,COMMON) 23 24full_classes_jar := $(intermediates.COMMON)/classes.jar 25full_classes_pre_proguard_jar := $(intermediates.COMMON)/classes-pre-proguard.jar 26full_classes_header_jar := $(intermediates.COMMON)/classes-header.jar 27 28####################################### 29include $(BUILD_SYSTEM)/base_rules.mk 30####################################### 31 32ifdef 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 44endif 45 46# Run veridex on product, product_services and vendor modules. 47# We skip it for unbundled app builds where we cannot build veridex. 48module_run_appcompat := 49ifeq (true,$(non_system_module)) 50ifeq (,$(TARGET_BUILD_APPS)$(filter true,$(TARGET_BUILD_PDK))) # ! unbundled app build 51ifneq ($(UNSAFE_DISABLE_HIDDENAPI_FLAGS),true) 52 module_run_appcompat := true 53endif 54endif 55endif 56 57ifeq ($(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) 65else 66 $(eval $(call copy-one-file,$(LOCAL_PREBUILT_MODULE_FILE),$(LOCAL_BUILT_MODULE))) 67endif 68 69ifdef 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) 74endif 75 76ifdef 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) 81endif 82 83ifdef LOCAL_SOONG_RESOURCE_EXPORT_PACKAGE 84resource_export_package := $(intermediates.COMMON)/package-export.apk 85resource_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 95endif # LOCAL_SOONG_RESOURCE_EXPORT_PACKAGE 96 97java-dex: $(LOCAL_SOONG_DEX_JAR) 98 99 100ifneq ($(BUILD_PLATFORM_ZIP),) 101 $(eval $(call copy-one-file,$(LOCAL_SOONG_DEX_JAR),$(dir $(LOCAL_BUILT_MODULE))package.dex.apk)) 102endif 103 104my_built_installed := $(foreach f,$(LOCAL_SOONG_BUILT_INSTALLED),\ 105 $(call word-colon,1,$(f)):$(PRODUCT_OUT)$(call word-colon,2,$(f))) 106my_installed := $(call copy-many-files, $(my_built_installed)) 107ALL_MODULES.$(my_register_name).INSTALLED += $(my_installed) 108ALL_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 112my_embed_jni := 113my_prebuilt_jni_libs := 114ifdef 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 118endif 119ifdef 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 125endif 126LOCAL_SHARED_JNI_LIBRARIES := 127my_embed_jni := 128my_prebuilt_jni_libs := 129my_2nd_arch_prefix := 130 131PACKAGES := $(PACKAGES) $(LOCAL_MODULE) 132ifdef LOCAL_CERTIFICATE 133 PACKAGES.$(LOCAL_MODULE).CERTIFICATE := $(LOCAL_CERTIFICATE) 134 PACKAGES.$(LOCAL_MODULE).PRIVATE_KEY := $(patsubst %.x509.pem,%.pk8,$(LOCAL_CERTIFICATE)) 135endif 136include $(BUILD_SYSTEM)/app_certificate_validate.mk 137PACKAGES.$(LOCAL_MODULE).OVERRIDES := $(strip $(LOCAL_OVERRIDES_PACKAGES)) 138 139ifdef LOCAL_SOONG_BUNDLE 140 ALL_MODULES.$(LOCAL_MODULE).BUNDLE := $(LOCAL_SOONG_BUNDLE) 141endif 142 143ifndef LOCAL_IS_HOST_MODULE 144ifeq ($(LOCAL_SDK_VERSION),system_current) 145my_link_type := java:system 146else ifneq ($(LOCAL_SDK_VERSION),) 147my_link_type := java:sdk 148else 149my_link_type := java:platform 150endif 151# warn/allowed types are both empty because Soong modules can't depend on 152# make-defined modules. 153my_warn_types := 154my_allowed_types := 155 156my_link_deps := 157my_2nd_arch_prefix := $(LOCAL_2ND_ARCH_VAR_PREFIX) 158my_common := COMMON 159include $(BUILD_SYSTEM)/link_type.mk 160endif # !LOCAL_IS_HOST_MODULE 161 162ifdef 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 ) 171endif 172 173ifdef 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 ) 182endif 183 184SOONG_ALREADY_CONV := $(SOONG_ALREADY_CONV) $(LOCAL_MODULE) 185