xref: /aosp_15_r20/build/make/core/java.mk (revision 9e94795a3d4ef5c1d47486f9a02bb378756cea8a)
1*9e94795aSAndroid Build Coastguard Worker# Target Java.
2*9e94795aSAndroid Build Coastguard Worker# Requires:
3*9e94795aSAndroid Build Coastguard Worker# LOCAL_MODULE_SUFFIX
4*9e94795aSAndroid Build Coastguard Worker# LOCAL_MODULE_CLASS
5*9e94795aSAndroid Build Coastguard Worker# all_res_assets
6*9e94795aSAndroid Build Coastguard Worker
7*9e94795aSAndroid Build Coastguard WorkerLOCAL_NO_STANDARD_LIBRARIES:=$(strip $(LOCAL_NO_STANDARD_LIBRARIES))
8*9e94795aSAndroid Build Coastguard WorkerLOCAL_SDK_VERSION:=$(strip $(LOCAL_SDK_VERSION))
9*9e94795aSAndroid Build Coastguard Worker
10*9e94795aSAndroid Build Coastguard Workerproto_sources := $(filter %.proto,$(LOCAL_SRC_FILES))
11*9e94795aSAndroid Build Coastguard Workerifneq ($(proto_sources),)
12*9e94795aSAndroid Build Coastguard Workerifeq ($(LOCAL_PROTOC_OPTIMIZE_TYPE),micro)
13*9e94795aSAndroid Build Coastguard Worker    LOCAL_STATIC_JAVA_LIBRARIES += libprotobuf-java-micro
14*9e94795aSAndroid Build Coastguard Workerelse
15*9e94795aSAndroid Build Coastguard Worker  ifeq ($(LOCAL_PROTOC_OPTIMIZE_TYPE),nano)
16*9e94795aSAndroid Build Coastguard Worker    LOCAL_STATIC_JAVA_LIBRARIES += libprotobuf-java-nano
17*9e94795aSAndroid Build Coastguard Worker  else
18*9e94795aSAndroid Build Coastguard Worker    ifeq ($(LOCAL_PROTOC_OPTIMIZE_TYPE),stream)
19*9e94795aSAndroid Build Coastguard Worker      # No library for stream protobufs
20*9e94795aSAndroid Build Coastguard Worker    else
21*9e94795aSAndroid Build Coastguard Worker      LOCAL_STATIC_JAVA_LIBRARIES += libprotobuf-java-lite
22*9e94795aSAndroid Build Coastguard Worker    endif
23*9e94795aSAndroid Build Coastguard Worker  endif
24*9e94795aSAndroid Build Coastguard Workerendif
25*9e94795aSAndroid Build Coastguard Workerendif
26*9e94795aSAndroid Build Coastguard Worker
27*9e94795aSAndroid Build Coastguard Worker# LOCAL_STATIC_JAVA_AAR_LIBRARIES and LOCAL_STATIC_ANDROID_LIBRARIES are also LOCAL_STATIC_JAVA_LIBRARIES.
28*9e94795aSAndroid Build Coastguard WorkerLOCAL_STATIC_JAVA_LIBRARIES := $(strip $(LOCAL_STATIC_JAVA_LIBRARIES) \
29*9e94795aSAndroid Build Coastguard Worker    $(LOCAL_STATIC_JAVA_AAR_LIBRARIES) \
30*9e94795aSAndroid Build Coastguard Worker    $(LOCAL_STATIC_ANDROID_LIBRARIES))
31*9e94795aSAndroid Build Coastguard Worker# LOCAL_SHARED_ANDROID_LIBRARIES are also LOCAL_JAVA_LIBRARIES.
32*9e94795aSAndroid Build Coastguard WorkerLOCAL_JAVA_LIBRARIES := $(sort $(LOCAL_JAVA_LIBRARIES) $(LOCAL_SHARED_ANDROID_LIBRARIES))
33*9e94795aSAndroid Build Coastguard Worker
34*9e94795aSAndroid Build Coastguard WorkerLOCAL_BUILT_MODULE_STEM := $(strip $(LOCAL_BUILT_MODULE_STEM))
35*9e94795aSAndroid Build Coastguard Workerifeq ($(LOCAL_BUILT_MODULE_STEM),)
36*9e94795aSAndroid Build Coastguard Worker$(error $(LOCAL_PATH): Target java template must define LOCAL_BUILT_MODULE_STEM)
37*9e94795aSAndroid Build Coastguard Workerendif
38*9e94795aSAndroid Build Coastguard Workerifneq ($(filter classes-compiled.jar classes.jar,$(LOCAL_BUILT_MODULE_STEM)),)
39*9e94795aSAndroid Build Coastguard Worker$(error LOCAL_BUILT_MODULE_STEM may not be "$(LOCAL_BUILT_MODULE_STEM)")
40*9e94795aSAndroid Build Coastguard Workerendif
41*9e94795aSAndroid Build Coastguard Worker
42*9e94795aSAndroid Build Coastguard Worker
43*9e94795aSAndroid Build Coastguard Worker##############################################################################
44*9e94795aSAndroid Build Coastguard Worker# Define the intermediate targets before including base_rules so they get
45*9e94795aSAndroid Build Coastguard Worker# the correct environment.
46*9e94795aSAndroid Build Coastguard Worker##############################################################################
47*9e94795aSAndroid Build Coastguard Worker
48*9e94795aSAndroid Build Coastguard Workerintermediates := $(call local-intermediates-dir)
49*9e94795aSAndroid Build Coastguard Workerintermediates.COMMON := $(call local-intermediates-dir,COMMON)
50*9e94795aSAndroid Build Coastguard Worker
51*9e94795aSAndroid Build Coastguard Workerifeq ($(LOCAL_PROGUARD_ENABLED),disabled)
52*9e94795aSAndroid Build Coastguard WorkerLOCAL_PROGUARD_ENABLED :=
53*9e94795aSAndroid Build Coastguard Workerendif
54*9e94795aSAndroid Build Coastguard Worker
55*9e94795aSAndroid Build Coastguard Workerfull_classes_turbine_jar := $(intermediates.COMMON)/classes-turbine.jar
56*9e94795aSAndroid Build Coastguard Workerfull_classes_header_jarjar := $(intermediates.COMMON)/classes-header-jarjar.jar
57*9e94795aSAndroid Build Coastguard Workerfull_classes_header_jar := $(intermediates.COMMON)/classes-header.jar
58*9e94795aSAndroid Build Coastguard Workerfull_classes_compiled_jar := $(intermediates.COMMON)/classes-full-debug.jar
59*9e94795aSAndroid Build Coastguard Workerfull_classes_processed_jar := $(intermediates.COMMON)/classes-processed.jar
60*9e94795aSAndroid Build Coastguard Workerfull_classes_jarjar_jar := $(intermediates.COMMON)/classes-jarjar.jar
61*9e94795aSAndroid Build Coastguard Workerfull_classes_combined_jar := $(intermediates.COMMON)/classes-combined.jar
62*9e94795aSAndroid Build Coastguard Workerbuilt_dex_intermediate := $(intermediates.COMMON)/dex/classes.dex
63*9e94795aSAndroid Build Coastguard Workerfull_classes_stubs_jar := $(intermediates.COMMON)/stubs.jar
64*9e94795aSAndroid Build Coastguard Workerjava_source_list_file := $(intermediates.COMMON)/java-source-list
65*9e94795aSAndroid Build Coastguard Worker
66*9e94795aSAndroid Build Coastguard Workerifeq ($(LOCAL_MODULE_CLASS)$(LOCAL_SRC_FILES)$(LOCAL_STATIC_JAVA_LIBRARIES)$(LOCAL_SOURCE_FILES_ALL_GENERATED),APPS)
67*9e94795aSAndroid Build Coastguard Worker# If this is an apk without any Java code (e.g. framework-res), we should skip compiling Java.
68*9e94795aSAndroid Build Coastguard Workerfull_classes_jar :=
69*9e94795aSAndroid Build Coastguard Workerbuilt_dex :=
70*9e94795aSAndroid Build Coastguard Workerelse
71*9e94795aSAndroid Build Coastguard Workerfull_classes_jar := $(intermediates.COMMON)/classes.jar
72*9e94795aSAndroid Build Coastguard Workerbuilt_dex := $(intermediates.COMMON)/classes.dex
73*9e94795aSAndroid Build Coastguard Workerendif
74*9e94795aSAndroid Build Coastguard Worker
75*9e94795aSAndroid Build Coastguard WorkerLOCAL_INTERMEDIATE_TARGETS += \
76*9e94795aSAndroid Build Coastguard Worker    $(full_classes_turbine_jar) \
77*9e94795aSAndroid Build Coastguard Worker    $(full_classes_compiled_jar) \
78*9e94795aSAndroid Build Coastguard Worker    $(full_classes_jarjar_jar) \
79*9e94795aSAndroid Build Coastguard Worker    $(full_classes_jar) \
80*9e94795aSAndroid Build Coastguard Worker    $(full_classes_combined_jar) \
81*9e94795aSAndroid Build Coastguard Worker    $(built_dex_intermediate) \
82*9e94795aSAndroid Build Coastguard Worker    $(built_dex) \
83*9e94795aSAndroid Build Coastguard Worker    $(full_classes_stubs_jar) \
84*9e94795aSAndroid Build Coastguard Worker    $(java_source_list_file)
85*9e94795aSAndroid Build Coastguard Worker
86*9e94795aSAndroid Build Coastguard Worker###########################################################
87*9e94795aSAndroid Build Coastguard Worker## AIDL: Compile .aidl files to .java
88*9e94795aSAndroid Build Coastguard Worker###########################################################
89*9e94795aSAndroid Build Coastguard Workeraidl_sources := $(filter %.aidl,$(LOCAL_SRC_FILES))
90*9e94795aSAndroid Build Coastguard Workeraidl_java_sources :=
91*9e94795aSAndroid Build Coastguard Worker
92*9e94795aSAndroid Build Coastguard Workerifneq ($(strip $(aidl_sources)),)
93*9e94795aSAndroid Build Coastguard Worker
94*9e94795aSAndroid Build Coastguard Workeraidl_preprocess_import :=
95*9e94795aSAndroid Build Coastguard Workerifdef LOCAL_SDK_VERSION
96*9e94795aSAndroid Build Coastguard Workerifneq ($(filter current system_current test_current core_current, $(LOCAL_SDK_VERSION)$(TARGET_BUILD_USE_PREBUILT_SDKS)),)
97*9e94795aSAndroid Build Coastguard Worker  # LOCAL_SDK_VERSION is current and no TARGET_BUILD_USE_PREBUILT_SDKS
98*9e94795aSAndroid Build Coastguard Worker  aidl_preprocess_import := $(FRAMEWORK_AIDL)
99*9e94795aSAndroid Build Coastguard Workerelse
100*9e94795aSAndroid Build Coastguard Worker  aidl_preprocess_import := $(call resolve-prebuilt-sdk-aidl-path,$(LOCAL_SDK_VERSION))
101*9e94795aSAndroid Build Coastguard Workerendif # not current or system_current
102*9e94795aSAndroid Build Coastguard Workerelse
103*9e94795aSAndroid Build Coastguard Worker# build against the platform.
104*9e94795aSAndroid Build Coastguard WorkerLOCAL_AIDL_INCLUDES += $(FRAMEWORKS_BASE_JAVA_SRC_DIRS)
105*9e94795aSAndroid Build Coastguard Workerendif # LOCAL_SDK_VERSION
106*9e94795aSAndroid Build Coastguard Worker
107*9e94795aSAndroid Build Coastguard Worker$(foreach s,$(aidl_sources),\
108*9e94795aSAndroid Build Coastguard Worker    $(eval $(call define-aidl-java-rule,$(s),$(intermediates.COMMON)/aidl,aidl_java_sources)))
109*9e94795aSAndroid Build Coastguard Worker$(foreach java,$(aidl_java_sources), \
110*9e94795aSAndroid Build Coastguard Worker    $(call include-depfile,$(java:%.java=%.P),$(java)))
111*9e94795aSAndroid Build Coastguard Worker
112*9e94795aSAndroid Build Coastguard Worker$(aidl_java_sources) : $(LOCAL_ADDITIONAL_DEPENDENCIES) $(aidl_preprocess_import)
113*9e94795aSAndroid Build Coastguard Worker
114*9e94795aSAndroid Build Coastguard Worker$(aidl_java_sources): PRIVATE_AIDL_FLAGS := $(addprefix -p,$(aidl_preprocess_import)) -I$(LOCAL_PATH) -I$(LOCAL_PATH)/src $(addprefix -I,$(LOCAL_AIDL_INCLUDES))
115*9e94795aSAndroid Build Coastguard Worker$(aidl_java_sources): PRIVATE_MODULE := $(LOCAL_MODULE)
116*9e94795aSAndroid Build Coastguard Worker
117*9e94795aSAndroid Build Coastguard Workerendif
118*9e94795aSAndroid Build Coastguard Worker
119*9e94795aSAndroid Build Coastguard Worker##########################################
120*9e94795aSAndroid Build Coastguard Worker
121*9e94795aSAndroid Build Coastguard Worker# All of the rules after full_classes_compiled_jar are very unlikely
122*9e94795aSAndroid Build Coastguard Worker# to fail except for bugs in their respective tools.  If you would
123*9e94795aSAndroid Build Coastguard Worker# like to run these rules, add the "all" modifier goal to the make
124*9e94795aSAndroid Build Coastguard Worker# command line.
125*9e94795aSAndroid Build Coastguard Workerifndef LOCAL_CHECKED_MODULE
126*9e94795aSAndroid Build Coastguard Workerifdef full_classes_jar
127*9e94795aSAndroid Build Coastguard WorkerLOCAL_CHECKED_MODULE := $(full_classes_compiled_jar)
128*9e94795aSAndroid Build Coastguard Workerendif
129*9e94795aSAndroid Build Coastguard Workerendif
130*9e94795aSAndroid Build Coastguard Worker
131*9e94795aSAndroid Build Coastguard Worker#######################################
132*9e94795aSAndroid Build Coastguard Workerinclude $(BUILD_SYSTEM)/base_rules.mk
133*9e94795aSAndroid Build Coastguard Worker#######################################
134*9e94795aSAndroid Build Coastguard Worker
135*9e94795aSAndroid Build Coastguard Worker###########################################################
136*9e94795aSAndroid Build Coastguard Worker## logtags: emit java source
137*9e94795aSAndroid Build Coastguard Worker###########################################################
138*9e94795aSAndroid Build Coastguard Workerifneq ($(strip $(logtags_sources)),)
139*9e94795aSAndroid Build Coastguard Worker
140*9e94795aSAndroid Build Coastguard Workerlogtags_java_sources := $(patsubst %.logtags,%.java,$(addprefix $(intermediates.COMMON)/logtags/, $(logtags_sources)))
141*9e94795aSAndroid Build Coastguard Workerlogtags_sources := $(addprefix $(LOCAL_PATH)/, $(logtags_sources))
142*9e94795aSAndroid Build Coastguard Worker
143*9e94795aSAndroid Build Coastguard Worker$(logtags_java_sources): PRIVATE_MERGED_TAG := $(TARGET_OUT_COMMON_INTERMEDIATES)/all-event-log-tags.txt
144*9e94795aSAndroid Build Coastguard Worker$(logtags_java_sources): $(intermediates.COMMON)/logtags/%.java: $(LOCAL_PATH)/%.logtags $(TARGET_OUT_COMMON_INTERMEDIATES)/all-event-log-tags.txt $(JAVATAGS) build/make/tools/event_log_tags.py
145*9e94795aSAndroid Build Coastguard Worker	$(transform-logtags-to-java)
146*9e94795aSAndroid Build Coastguard Worker
147*9e94795aSAndroid Build Coastguard Workerelse
148*9e94795aSAndroid Build Coastguard Workerlogtags_java_sources :=
149*9e94795aSAndroid Build Coastguard Workerendif
150*9e94795aSAndroid Build Coastguard Worker
151*9e94795aSAndroid Build Coastguard Worker##########################################
152*9e94795aSAndroid Build Coastguard Workerjava_sources := $(addprefix $(LOCAL_PATH)/, $(filter %.java,$(LOCAL_SRC_FILES))) $(aidl_java_sources) $(logtags_java_sources) \
153*9e94795aSAndroid Build Coastguard Worker                $(filter %.java,$(LOCAL_GENERATED_SOURCES))
154*9e94795aSAndroid Build Coastguard Workerjava_intermediate_sources := $(addprefix $(TARGET_OUT_COMMON_INTERMEDIATES)/, $(filter %.java,$(LOCAL_INTERMEDIATE_SOURCES)))
155*9e94795aSAndroid Build Coastguard Workerall_java_sources := $(java_sources) $(java_intermediate_sources)
156*9e94795aSAndroid Build Coastguard WorkerALL_MODULES.$(my_register_name).SRCS := $(ALL_MODULES.$(my_register_name).SRCS) $(all_java_sources)
157*9e94795aSAndroid Build Coastguard Worker
158*9e94795aSAndroid Build Coastguard Workerinclude $(BUILD_SYSTEM)/java_common.mk
159*9e94795aSAndroid Build Coastguard Worker
160*9e94795aSAndroid Build Coastguard Workerinclude $(BUILD_SYSTEM)/sdk_check.mk
161*9e94795aSAndroid Build Coastguard Worker
162*9e94795aSAndroid Build Coastguard Worker# Set the profile source so that the odex / profile code included from java.mk
163*9e94795aSAndroid Build Coastguard Worker# can find it.
164*9e94795aSAndroid Build Coastguard Worker#
165*9e94795aSAndroid Build Coastguard Worker# TODO: b/64896089, this is broken when called from package_internal.mk, since the file
166*9e94795aSAndroid Build Coastguard Worker# we preopt from is a temporary file. This will be addressed in a follow up, possibly
167*9e94795aSAndroid Build Coastguard Worker# by disabling stripping for profile guided preopt (which may be desirable for other
168*9e94795aSAndroid Build Coastguard Worker# reasons anyway).
169*9e94795aSAndroid Build Coastguard Worker#
170*9e94795aSAndroid Build Coastguard Worker# Note that we set this only when called from package_internal.mk and not in other cases.
171*9e94795aSAndroid Build Coastguard Workerifneq (,$(called_from_package_internal)
172*9e94795aSAndroid Build Coastguard Workerdex_preopt_profile_src_file := $(LOCAL_BUILT_MODULE)
173*9e94795aSAndroid Build Coastguard Workerendif
174*9e94795aSAndroid Build Coastguard Worker
175*9e94795aSAndroid Build Coastguard Worker#######################################
176*9e94795aSAndroid Build Coastguard Worker# defines built_odex along with rule to install odex
177*9e94795aSAndroid Build Coastguard Workermy_manifest_or_apk := $(full_android_manifest)
178*9e94795aSAndroid Build Coastguard Workerinclude $(BUILD_SYSTEM)/dex_preopt_odex_install.mk
179*9e94795aSAndroid Build Coastguard Workermy_manifest_or_apk :=
180*9e94795aSAndroid Build Coastguard Worker#######################################
181*9e94795aSAndroid Build Coastguard Worker
182*9e94795aSAndroid Build Coastguard Worker# Make sure there's something to build.
183*9e94795aSAndroid Build Coastguard Workerifdef full_classes_jar
184*9e94795aSAndroid Build Coastguard Workerifndef need_compile_java
185*9e94795aSAndroid Build Coastguard Worker$(call pretty-error,Target java module does not define any source or resource files)
186*9e94795aSAndroid Build Coastguard Workerendif
187*9e94795aSAndroid Build Coastguard Workerendif
188*9e94795aSAndroid Build Coastguard Worker
189*9e94795aSAndroid Build Coastguard Worker# Since we're using intermediates.COMMON, make sure that it gets cleaned
190*9e94795aSAndroid Build Coastguard Worker# properly.
191*9e94795aSAndroid Build Coastguard Worker$(cleantarget): PRIVATE_CLEAN_FILES += $(intermediates.COMMON)
192*9e94795aSAndroid Build Coastguard Worker
193*9e94795aSAndroid Build Coastguard Workerifdef full_classes_jar
194*9e94795aSAndroid Build Coastguard Worker
195*9e94795aSAndroid Build Coastguard Worker# Droiddoc isn't currently able to generate stubs for modules, so we're just
196*9e94795aSAndroid Build Coastguard Worker# allowing it to use the classes.jar as the "stubs" that would be use to link
197*9e94795aSAndroid Build Coastguard Worker# against, for the cases where someone needs the jar to link against.
198*9e94795aSAndroid Build Coastguard Worker$(eval $(call copy-one-file,$(full_classes_jar),$(full_classes_stubs_jar)))
199*9e94795aSAndroid Build Coastguard WorkerALL_MODULES.$(my_register_name).STUBS := $(full_classes_stubs_jar)
200*9e94795aSAndroid Build Coastguard Worker
201*9e94795aSAndroid Build Coastguard Worker$(full_classes_compiled_jar): PRIVATE_WARNINGS_ENABLE := $(LOCAL_WARNINGS_ENABLE)
202*9e94795aSAndroid Build Coastguard Worker
203*9e94795aSAndroid Build Coastguard Worker# Compile the java files to a .jar file.
204*9e94795aSAndroid Build Coastguard Worker# This intentionally depends on java_sources, not all_java_sources.
205*9e94795aSAndroid Build Coastguard Worker# Deps for generated source files must be handled separately,
206*9e94795aSAndroid Build Coastguard Worker# via deps on the target that generates the sources.
207*9e94795aSAndroid Build Coastguard Worker
208*9e94795aSAndroid Build Coastguard Worker# For user / userdebug builds, strip the local variable table and the local variable
209*9e94795aSAndroid Build Coastguard Worker# type table. This has no bearing on stack traces, but will leave less information
210*9e94795aSAndroid Build Coastguard Worker# available via JDWP.
211*9e94795aSAndroid Build Coastguard Workerifneq (,$(PRODUCT_MINIMIZE_JAVA_DEBUG_INFO))
212*9e94795aSAndroid Build Coastguard Workerifneq (,$(filter userdebug user,$(TARGET_BUILD_VARIANT)))
213*9e94795aSAndroid Build Coastguard WorkerLOCAL_JAVACFLAGS+= -g:source,lines
214*9e94795aSAndroid Build Coastguard Workerendif
215*9e94795aSAndroid Build Coastguard Workerendif
216*9e94795aSAndroid Build Coastguard Worker
217*9e94795aSAndroid Build Coastguard Worker# List of dependencies for anything that needs all java sources in place
218*9e94795aSAndroid Build Coastguard Workerjava_sources_deps := \
219*9e94795aSAndroid Build Coastguard Worker    $(java_sources) \
220*9e94795aSAndroid Build Coastguard Worker    $(java_resource_sources) \
221*9e94795aSAndroid Build Coastguard Worker    $(LOCAL_SRCJARS) \
222*9e94795aSAndroid Build Coastguard Worker    $(LOCAL_ADDITIONAL_DEPENDENCIES)
223*9e94795aSAndroid Build Coastguard Worker
224*9e94795aSAndroid Build Coastguard Worker$(java_source_list_file): $(java_sources_deps) $(NORMALIZE_PATH)
225*9e94795aSAndroid Build Coastguard Worker	$(write-java-source-list)
226*9e94795aSAndroid Build Coastguard Worker
227*9e94795aSAndroid Build Coastguard WorkerALL_MODULES.$(my_register_name).SRCJARS := $(LOCAL_SRCJARS)
228*9e94795aSAndroid Build Coastguard Worker
229*9e94795aSAndroid Build Coastguard Workerifneq ($(TURBINE_ENABLED),false)
230*9e94795aSAndroid Build Coastguard Worker
231*9e94795aSAndroid Build Coastguard Worker$(full_classes_turbine_jar): PRIVATE_JAVACFLAGS := $(LOCAL_JAVACFLAGS) $(annotation_processor_flags)
232*9e94795aSAndroid Build Coastguard Worker$(full_classes_turbine_jar): PRIVATE_SRCJARS := $(LOCAL_SRCJARS)
233*9e94795aSAndroid Build Coastguard Worker$(full_classes_turbine_jar): \
234*9e94795aSAndroid Build Coastguard Worker    $(java_source_list_file) \
235*9e94795aSAndroid Build Coastguard Worker    $(java_sources_deps) \
236*9e94795aSAndroid Build Coastguard Worker    $(full_java_header_libs) \
237*9e94795aSAndroid Build Coastguard Worker    $(full_java_bootclasspath_libs) \
238*9e94795aSAndroid Build Coastguard Worker    $(full_java_system_modules_deps) \
239*9e94795aSAndroid Build Coastguard Worker    $(NORMALIZE_PATH) \
240*9e94795aSAndroid Build Coastguard Worker    $(JAR_ARGS) \
241*9e94795aSAndroid Build Coastguard Worker    $(ZIPTIME) \
242*9e94795aSAndroid Build Coastguard Worker    | $(TURBINE) \
243*9e94795aSAndroid Build Coastguard Worker    $(MERGE_ZIPS)
244*9e94795aSAndroid Build Coastguard Worker	$(transform-java-to-header.jar)
245*9e94795aSAndroid Build Coastguard Worker
246*9e94795aSAndroid Build Coastguard Worker.KATI_RESTAT: $(full_classes_turbine_jar)
247*9e94795aSAndroid Build Coastguard Worker
248*9e94795aSAndroid Build Coastguard Worker# Run jarjar before generate classes-header.jar if necessary.
249*9e94795aSAndroid Build Coastguard Workerifneq ($(strip $(LOCAL_JARJAR_RULES)),)
250*9e94795aSAndroid Build Coastguard Worker$(full_classes_header_jarjar): PRIVATE_JARJAR_RULES := $(LOCAL_JARJAR_RULES)
251*9e94795aSAndroid Build Coastguard Worker$(full_classes_header_jarjar): $(full_classes_turbine_jar) $(LOCAL_JARJAR_RULES) | $(JARJAR)
252*9e94795aSAndroid Build Coastguard Worker	$(call transform-jarjar)
253*9e94795aSAndroid Build Coastguard Workerelse
254*9e94795aSAndroid Build Coastguard Workerfull_classes_header_jarjar := $(full_classes_turbine_jar)
255*9e94795aSAndroid Build Coastguard Workerendif
256*9e94795aSAndroid Build Coastguard Worker
257*9e94795aSAndroid Build Coastguard Worker$(eval $(call copy-one-file,$(full_classes_header_jarjar),$(full_classes_header_jar)))
258*9e94795aSAndroid Build Coastguard Worker
259*9e94795aSAndroid Build Coastguard Workerendif # TURBINE_ENABLED != false
260*9e94795aSAndroid Build Coastguard Worker
261*9e94795aSAndroid Build Coastguard Worker# TODO(b/143658984): goma can't handle the --system argument to javac.
262*9e94795aSAndroid Build Coastguard Worker#$(full_classes_compiled_jar): .KATI_NINJA_POOL := $(GOMA_POOL)
263*9e94795aSAndroid Build Coastguard Worker$(full_classes_compiled_jar): .KATI_NINJA_POOL := $(JAVAC_NINJA_POOL)
264*9e94795aSAndroid Build Coastguard Worker$(full_classes_compiled_jar): PRIVATE_JAVACFLAGS := $(LOCAL_JAVACFLAGS) $(annotation_processor_flags)
265*9e94795aSAndroid Build Coastguard Worker$(full_classes_compiled_jar): PRIVATE_JAR_EXCLUDE_FILES := $(LOCAL_JAR_EXCLUDE_FILES)
266*9e94795aSAndroid Build Coastguard Worker$(full_classes_compiled_jar): PRIVATE_JAR_PACKAGES := $(LOCAL_JAR_PACKAGES)
267*9e94795aSAndroid Build Coastguard Worker$(full_classes_compiled_jar): PRIVATE_JAR_EXCLUDE_PACKAGES := $(LOCAL_JAR_EXCLUDE_PACKAGES)
268*9e94795aSAndroid Build Coastguard Worker$(full_classes_compiled_jar): PRIVATE_JAVA_SOURCE_LIST := $(java_source_list_file)
269*9e94795aSAndroid Build Coastguard Worker$(full_classes_compiled_jar): PRIVATE_ALL_JAVA_HEADER_LIBRARIES := $(full_java_header_libs)
270*9e94795aSAndroid Build Coastguard Worker$(full_classes_compiled_jar): PRIVATE_SRCJARS := $(LOCAL_SRCJARS)
271*9e94795aSAndroid Build Coastguard Worker$(full_classes_compiled_jar): PRIVATE_SRCJAR_LIST_FILE := $(intermediates.COMMON)/srcjar-list
272*9e94795aSAndroid Build Coastguard Worker$(full_classes_compiled_jar): PRIVATE_SRCJAR_INTERMEDIATES_DIR := $(intermediates.COMMON)/srcjars
273*9e94795aSAndroid Build Coastguard Worker$(full_classes_compiled_jar): \
274*9e94795aSAndroid Build Coastguard Worker    $(java_source_list_file) \
275*9e94795aSAndroid Build Coastguard Worker    $(full_java_header_libs) \
276*9e94795aSAndroid Build Coastguard Worker    $(java_sources_deps) \
277*9e94795aSAndroid Build Coastguard Worker    $(full_java_bootclasspath_libs) \
278*9e94795aSAndroid Build Coastguard Worker    $(full_java_system_modules_deps) \
279*9e94795aSAndroid Build Coastguard Worker    $(layers_file) \
280*9e94795aSAndroid Build Coastguard Worker    $(annotation_processor_deps) \
281*9e94795aSAndroid Build Coastguard Worker    $(NORMALIZE_PATH) \
282*9e94795aSAndroid Build Coastguard Worker    $(JAR_ARGS) \
283*9e94795aSAndroid Build Coastguard Worker    $(ZIPSYNC) \
284*9e94795aSAndroid Build Coastguard Worker    $(SOONG_ZIP) \
285*9e94795aSAndroid Build Coastguard Worker    | $(SOONG_JAVAC_WRAPPER)
286*9e94795aSAndroid Build Coastguard Worker	@echo "Target Java: $@
287*9e94795aSAndroid Build Coastguard Worker	$(call compile-java,$(TARGET_JAVAC),$(PRIVATE_ALL_JAVA_HEADER_LIBRARIES))
288*9e94795aSAndroid Build Coastguard Worker
289*9e94795aSAndroid Build Coastguard Workerjavac-check : $(full_classes_compiled_jar)
290*9e94795aSAndroid Build Coastguard Workerjavac-check-$(LOCAL_MODULE) : $(full_classes_compiled_jar)
291*9e94795aSAndroid Build Coastguard Worker.PHONY: javac-check-$(LOCAL_MODULE)
292*9e94795aSAndroid Build Coastguard Worker
293*9e94795aSAndroid Build Coastguard Worker$(full_classes_combined_jar): PRIVATE_DONT_DELETE_JAR_META_INF := $(LOCAL_DONT_DELETE_JAR_META_INF)
294*9e94795aSAndroid Build Coastguard Worker$(full_classes_combined_jar): $(full_classes_compiled_jar) \
295*9e94795aSAndroid Build Coastguard Worker                              $(jar_manifest_file) \
296*9e94795aSAndroid Build Coastguard Worker                              $(full_static_java_libs) | $(MERGE_ZIPS)
297*9e94795aSAndroid Build Coastguard Worker	$(MERGE_ZIPS) -j --ignore-duplicates $(if $(PRIVATE_JAR_MANIFEST),-m $(PRIVATE_JAR_MANIFEST)) \
298*9e94795aSAndroid Build Coastguard Worker            $(if $(PRIVATE_DONT_DELETE_JAR_META_INF),,-stripDir META-INF -zipToNotStrip $<) \
299*9e94795aSAndroid Build Coastguard Worker            $@ $< $(PRIVATE_STATIC_JAVA_LIBRARIES)
300*9e94795aSAndroid Build Coastguard Worker
301*9e94795aSAndroid Build Coastguard Workerifdef LOCAL_JAR_PROCESSOR
302*9e94795aSAndroid Build Coastguard Worker# LOCAL_JAR_PROCESSOR_ARGS must be evaluated here to set up the rule-local
303*9e94795aSAndroid Build Coastguard Worker# PRIVATE_JAR_PROCESSOR_ARGS variable, but $< and $@ are not available yet.
304*9e94795aSAndroid Build Coastguard Worker# Set ${in} and ${out} so they can be referenced by LOCAL_JAR_PROCESSOR_ARGS
305*9e94795aSAndroid Build Coastguard Worker# using deferred evaluation (LOCAL_JAR_PROCESSOR_ARGS = instead of :=).
306*9e94795aSAndroid Build Coastguard Workerin := $(full_classes_combined_jar)
307*9e94795aSAndroid Build Coastguard Workerout := $(full_classes_processed_jar).tmp
308*9e94795aSAndroid Build Coastguard Workermy_jar_processor := $(HOST_OUT_JAVA_LIBRARIES)/$(LOCAL_JAR_PROCESSOR).jar
309*9e94795aSAndroid Build Coastguard Worker
310*9e94795aSAndroid Build Coastguard Worker$(full_classes_processed_jar): PRIVATE_JAR_PROCESSOR_ARGS := $(LOCAL_JAR_PROCESSOR_ARGS)
311*9e94795aSAndroid Build Coastguard Worker$(full_classes_processed_jar): PRIVATE_JAR_PROCESSOR := $(my_jar_processor)
312*9e94795aSAndroid Build Coastguard Worker$(full_classes_processed_jar): PRIVATE_TMP_OUT := $(out)
313*9e94795aSAndroid Build Coastguard Workerin :=
314*9e94795aSAndroid Build Coastguard Workerout :=
315*9e94795aSAndroid Build Coastguard Worker
316*9e94795aSAndroid Build Coastguard Worker$(full_classes_processed_jar): $(full_classes_combined_jar) $(my_jar_processor)
317*9e94795aSAndroid Build Coastguard Worker	@echo Processing $@ with $(PRIVATE_JAR_PROCESSOR)
318*9e94795aSAndroid Build Coastguard Worker	$(hide) rm -f $@ $(PRIVATE_TMP_OUT)
319*9e94795aSAndroid Build Coastguard Worker	$(hide) $(JAVA) -jar $(PRIVATE_JAR_PROCESSOR) $(PRIVATE_JAR_PROCESSOR_ARGS)
320*9e94795aSAndroid Build Coastguard Worker	$(hide) mv $(PRIVATE_TMP_OUT) $@
321*9e94795aSAndroid Build Coastguard Worker
322*9e94795aSAndroid Build Coastguard Workermy_jar_processor :=
323*9e94795aSAndroid Build Coastguard Workerelse
324*9e94795aSAndroid Build Coastguard Workerfull_classes_processed_jar := $(full_classes_combined_jar)
325*9e94795aSAndroid Build Coastguard Workerendif
326*9e94795aSAndroid Build Coastguard Worker
327*9e94795aSAndroid Build Coastguard Worker# Run jarjar if necessary
328*9e94795aSAndroid Build Coastguard Workerifneq ($(strip $(LOCAL_JARJAR_RULES)),)
329*9e94795aSAndroid Build Coastguard Worker$(full_classes_jarjar_jar): PRIVATE_JARJAR_RULES := $(LOCAL_JARJAR_RULES)
330*9e94795aSAndroid Build Coastguard Worker$(full_classes_jarjar_jar): $(full_classes_processed_jar) $(LOCAL_JARJAR_RULES) | $(JARJAR)
331*9e94795aSAndroid Build Coastguard Worker	$(call transform-jarjar)
332*9e94795aSAndroid Build Coastguard Workerelse
333*9e94795aSAndroid Build Coastguard Workerfull_classes_jarjar_jar := $(full_classes_processed_jar)
334*9e94795aSAndroid Build Coastguard Workerendif
335*9e94795aSAndroid Build Coastguard Worker
336*9e94795aSAndroid Build Coastguard Worker$(eval $(call copy-one-file,$(full_classes_jarjar_jar),$(full_classes_jar)))
337*9e94795aSAndroid Build Coastguard Worker
338*9e94795aSAndroid Build Coastguard Worker#######################################
339*9e94795aSAndroid Build Coastguard WorkerLOCAL_FULL_CLASSES_PRE_JACOCO_JAR := $(full_classes_jar)
340*9e94795aSAndroid Build Coastguard Worker
341*9e94795aSAndroid Build Coastguard Workerinclude $(BUILD_SYSTEM)/jacoco.mk
342*9e94795aSAndroid Build Coastguard Worker#######################################
343*9e94795aSAndroid Build Coastguard Worker
344*9e94795aSAndroid Build Coastguard Worker# Temporarily enable --multi-dex until proguard supports v53 class files
345*9e94795aSAndroid Build Coastguard Worker# ( http://b/67673860 ) or we move away from proguard altogether.
346*9e94795aSAndroid Build Coastguard WorkerLOCAL_DX_FLAGS := $(filter-out --multi-dex,$(LOCAL_DX_FLAGS)) --multi-dex
347*9e94795aSAndroid Build Coastguard Worker
348*9e94795aSAndroid Build Coastguard Workerfull_classes_pre_proguard_jar := $(LOCAL_FULL_CLASSES_JACOCO_JAR)
349*9e94795aSAndroid Build Coastguard Worker
350*9e94795aSAndroid Build Coastguard Worker# Keep a copy of the jar just before proguard processing.
351*9e94795aSAndroid Build Coastguard Worker$(eval $(call copy-one-file,$(full_classes_pre_proguard_jar),$(intermediates.COMMON)/classes-pre-proguard.jar))
352*9e94795aSAndroid Build Coastguard Worker
353*9e94795aSAndroid Build Coastguard Worker# Run proguard if necessary
354*9e94795aSAndroid Build Coastguard Workerifdef LOCAL_PROGUARD_ENABLED
355*9e94795aSAndroid Build Coastguard Workerifneq ($(filter-out full custom obfuscation optimization,$(LOCAL_PROGUARD_ENABLED)),)
356*9e94795aSAndroid Build Coastguard Worker    $(warning while processing: $(LOCAL_MODULE))
357*9e94795aSAndroid Build Coastguard Worker    $(error invalid value for LOCAL_PROGUARD_ENABLED: $(LOCAL_PROGUARD_ENABLED))
358*9e94795aSAndroid Build Coastguard Workerendif
359*9e94795aSAndroid Build Coastguard Workerproguard_dictionary := $(intermediates.COMMON)/proguard_dictionary
360*9e94795aSAndroid Build Coastguard Workerproguard_configuration := $(intermediates.COMMON)/proguard_configuration
361*9e94795aSAndroid Build Coastguard Worker
362*9e94795aSAndroid Build Coastguard Worker# When an app contains references to APIs that are not in the SDK specified by
363*9e94795aSAndroid Build Coastguard Worker# its LOCAL_SDK_VERSION for example added by support library or by runtime
364*9e94795aSAndroid Build Coastguard Worker# classes added by desugar, we artifically raise the "SDK version" "linked" by
365*9e94795aSAndroid Build Coastguard Worker# ProGuard, to
366*9e94795aSAndroid Build Coastguard Worker# - suppress ProGuard warnings of referencing symbols unknown to the lower SDK version.
367*9e94795aSAndroid Build Coastguard Worker# - prevent ProGuard stripping subclass in the support library that extends class added in the higher SDK version.
368*9e94795aSAndroid Build Coastguard Worker# See b/20667396
369*9e94795aSAndroid Build Coastguard Workermy_proguard_sdk_raise :=
370*9e94795aSAndroid Build Coastguard Workerifdef LOCAL_SDK_VERSION
371*9e94795aSAndroid Build Coastguard Workerifdef TARGET_BUILD_APPS
372*9e94795aSAndroid Build Coastguard Workerifeq (,$(filter current system_current test_current core_current, $(LOCAL_SDK_VERSION)))
373*9e94795aSAndroid Build Coastguard Worker  my_proguard_sdk_raise := $(call java-lib-header-files, $(call resolve-prebuilt-sdk-module,current))
374*9e94795aSAndroid Build Coastguard Workerendif
375*9e94795aSAndroid Build Coastguard Workerelse
376*9e94795aSAndroid Build Coastguard Worker  # For platform build, we can't just raise to the "current" SDK,
377*9e94795aSAndroid Build Coastguard Worker  # that would break apps that use APIs removed from the current SDK.
378*9e94795aSAndroid Build Coastguard Worker  my_proguard_sdk_raise := $(call java-lib-header-files,$(LEGACY_CORE_PLATFORM_BOOTCLASSPATH_LIBRARIES) $(FRAMEWORK_LIBRARIES))
379*9e94795aSAndroid Build Coastguard Workerendif
380*9e94795aSAndroid Build Coastguard Workerifdef BOARD_SYSTEMSDK_VERSIONS
381*9e94795aSAndroid Build Coastguard Workerifneq (,$(filter true,$(LOCAL_VENDOR_MODULE) $(LOCAL_ODM_MODULE) $(LOCAL_PROPRIETARY_MODULE)))
382*9e94795aSAndroid Build Coastguard Worker  # But for vendor or odm apks, don't raise SDK as the apks are required to
383*9e94795aSAndroid Build Coastguard Worker  # use SDK APIs only
384*9e94795aSAndroid Build Coastguard Worker  my_proguard_sdk_raise :=
385*9e94795aSAndroid Build Coastguard Workerendif
386*9e94795aSAndroid Build Coastguard Workerendif
387*9e94795aSAndroid Build Coastguard Workerendif
388*9e94795aSAndroid Build Coastguard Worker
389*9e94795aSAndroid Build Coastguard Workerlegacy_proguard_flags := $(addprefix -libraryjars ,$(my_proguard_sdk_raise) \
390*9e94795aSAndroid Build Coastguard Worker  $(filter-out $(my_proguard_sdk_raise), \
391*9e94795aSAndroid Build Coastguard Worker    $(full_java_bootclasspath_libs) \
392*9e94795aSAndroid Build Coastguard Worker    $(full_shared_java_header_libs)))
393*9e94795aSAndroid Build Coastguard Worker
394*9e94795aSAndroid Build Coastguard Workerlegacy_proguard_lib_deps := $(my_proguard_sdk_raise) \
395*9e94795aSAndroid Build Coastguard Worker  $(filter-out $(my_proguard_sdk_raise),$(full_java_bootclasspath_libs) $(full_shared_java_header_libs))
396*9e94795aSAndroid Build Coastguard Worker
397*9e94795aSAndroid Build Coastguard Workerlegacy_proguard_flags += -printmapping $(proguard_dictionary)
398*9e94795aSAndroid Build Coastguard Workerlegacy_proguard_flags += -printconfiguration $(proguard_configuration)
399*9e94795aSAndroid Build Coastguard Worker
400*9e94795aSAndroid Build Coastguard Workercommon_proguard_flags :=
401*9e94795aSAndroid Build Coastguard Workercommon_proguard_flag_files := $(BUILD_SYSTEM)/proguard.flags
402*9e94795aSAndroid Build Coastguard Workerifneq ($(LOCAL_INSTRUMENTATION_FOR)$(filter tests,$(LOCAL_MODULE_TAGS)),)
403*9e94795aSAndroid Build Coastguard Workercommon_proguard_flags += -dontshrink # don't shrink tests by default
404*9e94795aSAndroid Build Coastguard Workerendif # test package
405*9e94795aSAndroid Build Coastguard Workerifneq ($(LOCAL_PROGUARD_ENABLED),custom)
406*9e94795aSAndroid Build Coastguard Worker  common_proguard_flag_files += $(foreach l,$(LOCAL_STATIC_ANDROID_LIBRARIES),\
407*9e94795aSAndroid Build Coastguard Worker      $(call intermediates-dir-for,JAVA_LIBRARIES,$(l),,COMMON)/export_proguard_flags)
408*9e94795aSAndroid Build Coastguard Workerendif
409*9e94795aSAndroid Build Coastguard Workerifneq ($(common_proguard_flag_files),)
410*9e94795aSAndroid Build Coastguard Workercommon_proguard_flags += $(addprefix -include , $(common_proguard_flag_files))
411*9e94795aSAndroid Build Coastguard Worker# This is included from $(BUILD_SYSTEM)/proguard.flags
412*9e94795aSAndroid Build Coastguard Workercommon_proguard_flag_files += $(BUILD_SYSTEM)/proguard_basic_keeps.flags
413*9e94795aSAndroid Build Coastguard Workerendif
414*9e94795aSAndroid Build Coastguard Worker
415*9e94795aSAndroid Build Coastguard Workerifeq ($(filter obfuscation,$(LOCAL_PROGUARD_ENABLED)),)
416*9e94795aSAndroid Build Coastguard Worker# By default no obfuscation
417*9e94795aSAndroid Build Coastguard Workercommon_proguard_flags += -dontobfuscate
418*9e94795aSAndroid Build Coastguard Workerendif  # No obfuscation
419*9e94795aSAndroid Build Coastguard Workerifeq ($(filter optimization,$(LOCAL_PROGUARD_ENABLED)),)
420*9e94795aSAndroid Build Coastguard Worker# By default no optimization
421*9e94795aSAndroid Build Coastguard Workercommon_proguard_flags += -dontoptimize
422*9e94795aSAndroid Build Coastguard Workerendif  # No optimization
423*9e94795aSAndroid Build Coastguard Worker
424*9e94795aSAndroid Build Coastguard Workerifdef LOCAL_INSTRUMENTATION_FOR
425*9e94795aSAndroid Build Coastguard Workerifeq ($(filter obfuscation,$(LOCAL_PROGUARD_ENABLED)),)
426*9e94795aSAndroid Build Coastguard Worker# If no obfuscation, link in the instrmented package's classes.jar as a library.
427*9e94795aSAndroid Build Coastguard Worker# link_instr_classes_jar is defined in base_rule.mk
428*9e94795aSAndroid Build Coastguard Workerlegacy_proguard_flags += -libraryjars $(link_instr_classes_jar)
429*9e94795aSAndroid Build Coastguard Workerlegacy_proguard_lib_deps += $(link_instr_classes_jar)
430*9e94795aSAndroid Build Coastguard Workerelse # obfuscation
431*9e94795aSAndroid Build Coastguard Worker# If obfuscation is enabled, the main app must be obfuscated too.
432*9e94795aSAndroid Build Coastguard Worker# We need to run obfuscation using the main app's dictionary,
433*9e94795aSAndroid Build Coastguard Worker# and treat the main app's class.jar as injars instead of libraryjars.
434*9e94795aSAndroid Build Coastguard Workerlegacy_proguard_flags := -injars  $(link_instr_classes_jar) \
435*9e94795aSAndroid Build Coastguard Worker    -outjars $(intermediates.COMMON)/proguard.$(LOCAL_INSTRUMENTATION_FOR).jar \
436*9e94795aSAndroid Build Coastguard Worker    -include $(link_instr_intermediates_dir.COMMON)/proguard_options \
437*9e94795aSAndroid Build Coastguard Worker    -applymapping $(link_instr_intermediates_dir.COMMON)/proguard_dictionary \
438*9e94795aSAndroid Build Coastguard Worker    -verbose \
439*9e94795aSAndroid Build Coastguard Worker    $(legacy_proguard_flags)
440*9e94795aSAndroid Build Coastguard Workerlegacy_proguard_lib_deps += \
441*9e94795aSAndroid Build Coastguard Worker  $(link_instr_classes_jar) \
442*9e94795aSAndroid Build Coastguard Worker  $(link_instr_intermediates_dir.COMMON)/proguard_options \
443*9e94795aSAndroid Build Coastguard Worker  $(link_instr_intermediates_dir.COMMON)/proguard_dictionary \
444*9e94795aSAndroid Build Coastguard Worker
445*9e94795aSAndroid Build Coastguard Worker# Sometimes (test + main app) uses different keep rules from the main app -
446*9e94795aSAndroid Build Coastguard Worker# apply the main app's dictionary anyway.
447*9e94795aSAndroid Build Coastguard Workerlegacy_proguard_flags += -ignorewarnings
448*9e94795aSAndroid Build Coastguard Worker
449*9e94795aSAndroid Build Coastguard Workerendif # no obfuscation
450*9e94795aSAndroid Build Coastguard Workerendif # LOCAL_INSTRUMENTATION_FOR
451*9e94795aSAndroid Build Coastguard Worker
452*9e94795aSAndroid Build Coastguard Workerproguard_flag_files := $(addprefix $(LOCAL_PATH)/, $(LOCAL_PROGUARD_FLAG_FILES))
453*9e94795aSAndroid Build Coastguard Workerproguard_flag_files += $(addprefix $(LOCAL_PATH)/, $(LOCAL_R8_FLAG_FILES))
454*9e94795aSAndroid Build Coastguard WorkerLOCAL_PROGUARD_FLAGS += $(addprefix -include , $(proguard_flag_files))
455*9e94795aSAndroid Build Coastguard WorkerLOCAL_PROGUARD_FLAGS_DEPS += $(proguard_flag_files)
456*9e94795aSAndroid Build Coastguard Workerproguard_flag_files :=
457*9e94795aSAndroid Build Coastguard Worker
458*9e94795aSAndroid Build Coastguard Workerifdef LOCAL_TEST_MODULE_TO_PROGUARD_WITH
459*9e94795aSAndroid Build Coastguard Workerextra_input_jar := $(call intermediates-dir-for,APPS,$(LOCAL_TEST_MODULE_TO_PROGUARD_WITH),,COMMON)/classes.jar
460*9e94795aSAndroid Build Coastguard Workerelse
461*9e94795aSAndroid Build Coastguard Workerextra_input_jar :=
462*9e94795aSAndroid Build Coastguard Workerendif
463*9e94795aSAndroid Build Coastguard Worker
464*9e94795aSAndroid Build Coastguard Workerifneq ($(filter obfuscation,$(LOCAL_PROGUARD_ENABLED)),)
465*9e94795aSAndroid Build Coastguard Worker  $(built_dex_intermediate): .KATI_IMPLICIT_OUTPUTS := $(proguard_dictionary) $(proguard_configuration)
466*9e94795aSAndroid Build Coastguard Worker
467*9e94795aSAndroid Build Coastguard Worker  # Make a rule to copy the proguard_dictionary to a packaging directory.
468*9e94795aSAndroid Build Coastguard Worker  $(eval $(call copy-one-file,$(proguard_dictionary),\
469*9e94795aSAndroid Build Coastguard Worker    $(call local-packaging-dir,proguard_dictionary)/proguard_dictionary))
470*9e94795aSAndroid Build Coastguard Worker  $(call add-dependency,$(LOCAL_BUILT_MODULE),\
471*9e94795aSAndroid Build Coastguard Worker    $(call local-packaging-dir,proguard_dictionary)/proguard_dictionary)
472*9e94795aSAndroid Build Coastguard Worker
473*9e94795aSAndroid Build Coastguard Worker  $(eval $(call copy-one-file,$(full_classes_pre_proguard_jar),\
474*9e94795aSAndroid Build Coastguard Worker    $(call local-packaging-dir,proguard_dictionary)/classes.jar))
475*9e94795aSAndroid Build Coastguard Worker  $(call add-dependency,$(LOCAL_BUILT_MODULE),\
476*9e94795aSAndroid Build Coastguard Worker    $(call local-packaging-dir,proguard_dictionary)/classes.jar)
477*9e94795aSAndroid Build Coastguard Workerendif
478*9e94795aSAndroid Build Coastguard Worker
479*9e94795aSAndroid Build Coastguard Workerendif # LOCAL_PROGUARD_ENABLED defined
480*9e94795aSAndroid Build Coastguard Worker
481*9e94795aSAndroid Build Coastguard Workerifneq ($(LOCAL_IS_STATIC_JAVA_LIBRARY),true)
482*9e94795aSAndroid Build Coastguard Worker$(built_dex_intermediate): PRIVATE_DX_FLAGS := $(LOCAL_DX_FLAGS)
483*9e94795aSAndroid Build Coastguard Worker
484*9e94795aSAndroid Build Coastguard Workerifdef LOCAL_PROGUARD_ENABLED
485*9e94795aSAndroid Build Coastguard Worker  $(built_dex_intermediate): .KATI_NINJA_POOL := $(R8_NINJA_POOL)
486*9e94795aSAndroid Build Coastguard Worker  $(built_dex_intermediate): PRIVATE_EXTRA_INPUT_JAR := $(extra_input_jar)
487*9e94795aSAndroid Build Coastguard Worker  $(built_dex_intermediate): PRIVATE_PROGUARD_FLAGS := $(legacy_proguard_flags) $(common_proguard_flags) $(LOCAL_PROGUARD_FLAGS)
488*9e94795aSAndroid Build Coastguard Worker  $(built_dex_intermediate): PRIVATE_PROGUARD_DICTIONARY := $(proguard_dictionary)
489*9e94795aSAndroid Build Coastguard Worker  $(built_dex_intermediate) : $(full_classes_pre_proguard_jar) $(extra_input_jar) $(my_proguard_sdk_raise) $(common_proguard_flag_files) $(legacy_proguard_lib_deps) $(R8) $(LOCAL_PROGUARD_FLAGS_DEPS)
490*9e94795aSAndroid Build Coastguard Worker	$(transform-jar-to-dex-r8)
491*9e94795aSAndroid Build Coastguard Workerelse # !LOCAL_PROGUARD_ENABLED
492*9e94795aSAndroid Build Coastguard Worker  $(built_dex_intermediate): .KATI_NINJA_POOL := $(D8_NINJA_POOL)
493*9e94795aSAndroid Build Coastguard Worker  $(built_dex_intermediate): PRIVATE_D8_LIBS := $(full_java_bootclasspath_libs) $(full_shared_java_header_libs)
494*9e94795aSAndroid Build Coastguard Worker  $(built_dex_intermediate): $(full_java_bootclasspath_libs) $(full_shared_java_header_libs)
495*9e94795aSAndroid Build Coastguard Worker  $(built_dex_intermediate): $(full_classes_pre_proguard_jar) $(D8) $(ZIP2ZIP)
496*9e94795aSAndroid Build Coastguard Worker	$(transform-classes.jar-to-dex)
497*9e94795aSAndroid Build Coastguard Workerendif
498*9e94795aSAndroid Build Coastguard Worker
499*9e94795aSAndroid Build Coastguard Worker$(foreach pair,$(PRODUCT_BOOT_JARS), \
500*9e94795aSAndroid Build Coastguard Worker  $(if $(filter $(LOCAL_MODULE),$(call word-colon,2,$(pair))), \
501*9e94795aSAndroid Build Coastguard Worker    $(call pretty-error,Modules in PRODUCT_BOOT_JARS must be defined in Android.bp files)))
502*9e94795aSAndroid Build Coastguard Worker
503*9e94795aSAndroid Build Coastguard Worker$(built_dex): $(built_dex_intermediate)
504*9e94795aSAndroid Build Coastguard Worker	@echo Copying: $@
505*9e94795aSAndroid Build Coastguard Worker	$(hide) mkdir -p $(dir $@)
506*9e94795aSAndroid Build Coastguard Worker	$(hide) rm -f $(dir $@)/classes*.dex
507*9e94795aSAndroid Build Coastguard Worker	$(hide) cp -fp $(dir $<)/classes*.dex $(dir $@)
508*9e94795aSAndroid Build Coastguard Worker
509*9e94795aSAndroid Build Coastguard Workerjava-dex: $(built_dex)
510*9e94795aSAndroid Build Coastguard Worker
511*9e94795aSAndroid Build Coastguard Workerendif # !LOCAL_IS_STATIC_JAVA_LIBRARY
512*9e94795aSAndroid Build Coastguard Worker
513*9e94795aSAndroid Build Coastguard Workerfindbugs_xml := $(intermediates.COMMON)/findbugs.xml
514*9e94795aSAndroid Build Coastguard Worker$(findbugs_xml): PRIVATE_AUXCLASSPATH := $(addprefix -auxclasspath ,$(strip \
515*9e94795aSAndroid Build Coastguard Worker    $(call normalize-path-list,$(filter %.jar,$(full_java_libs)))))
516*9e94795aSAndroid Build Coastguard Worker$(findbugs_xml): PRIVATE_FINDBUGS_FLAGS := $(LOCAL_FINDBUGS_FLAGS)
517*9e94795aSAndroid Build Coastguard Worker$(findbugs_xml) : $(full_classes_pre_proguard_jar) $(filter %.xml, $(LOCAL_FINDBUGS_FLAGS))
518*9e94795aSAndroid Build Coastguard Worker	@echo Findbugs: $@
519*9e94795aSAndroid Build Coastguard Worker	$(hide) $(FINDBUGS) -textui -effort:min -xml:withMessages \
520*9e94795aSAndroid Build Coastguard Worker		$(PRIVATE_AUXCLASSPATH) $(PRIVATE_FINDBUGS_FLAGS) \
521*9e94795aSAndroid Build Coastguard Worker		$< \
522*9e94795aSAndroid Build Coastguard Worker		> $@
523*9e94795aSAndroid Build Coastguard Worker
524*9e94795aSAndroid Build Coastguard WorkerALL_FINDBUGS_FILES += $(findbugs_xml)
525*9e94795aSAndroid Build Coastguard Worker
526*9e94795aSAndroid Build Coastguard Workerfindbugs_html := $(PRODUCT_OUT)/findbugs/$(LOCAL_MODULE).html
527*9e94795aSAndroid Build Coastguard Worker$(findbugs_html) : PRIVATE_XML_FILE := $(findbugs_xml)
528*9e94795aSAndroid Build Coastguard Worker$(LOCAL_MODULE)-findbugs : $(findbugs_html)
529*9e94795aSAndroid Build Coastguard Worker.PHONY: $(LOCAL_MODULE)-findbugs
530*9e94795aSAndroid Build Coastguard Worker$(findbugs_html) : $(findbugs_xml)
531*9e94795aSAndroid Build Coastguard Worker	@mkdir -p $(dir $@)
532*9e94795aSAndroid Build Coastguard Worker	@echo ConvertXmlToText: $@
533*9e94795aSAndroid Build Coastguard Worker	$(hide) $(FINDBUGS_DIR)/convertXmlToText -html:fancy.xsl $(PRIVATE_XML_FILE) \
534*9e94795aSAndroid Build Coastguard Worker	> $@
535*9e94795aSAndroid Build Coastguard Worker
536*9e94795aSAndroid Build Coastguard Worker$(LOCAL_MODULE)-findbugs : $(findbugs_html)
537*9e94795aSAndroid Build Coastguard Worker
538*9e94795aSAndroid Build Coastguard Workerendif  # full_classes_jar is defined
539*9e94795aSAndroid Build Coastguard Worker
540*9e94795aSAndroid Build Coastguard Worker$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_DEFAULT_APP_TARGET_SDK := $(call module-target-sdk-version)
541*9e94795aSAndroid Build Coastguard Worker$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_SDK_VERSION := $(call module-sdk-version)
542*9e94795aSAndroid Build Coastguard Worker$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_MIN_SDK_VERSION := $(call codename-or-sdk-to-sdk,$(call module-min-sdk-version))
543