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