Home | History | Annotate | Download | only in core
      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