• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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