From 1a5ada11d52ffadf999c5c1f1e07c31a03d560dd Mon Sep 17 00:00:00 2001 From: Ying Wang Date: Mon, 7 Jul 2014 15:01:15 -0700 Subject: [PATCH] Auto-clean obsolete aidl-generated Java files. The build system compares aidl files of every module to the previous build and deletes the intermediate generated source dir if an aidl file has gone. Change-Id: I55fcfe1baaae3496613e12c20bca564d408bba58 --- core/base_rules.mk | 5 ++++- core/post_clean.mk | 29 +++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/core/base_rules.mk b/core/base_rules.mk index 969c7ded0..c2d2ca210 100644 --- a/core/base_rules.mk +++ b/core/base_rules.mk @@ -232,7 +232,7 @@ event_log_tags := $(addprefix $(LOCAL_PATH)/,$(logtags_sources)) # Emit a java source file with constants for the tags, if # LOCAL_MODULE_CLASS is "APPS" or "JAVA_LIBRARIES". -ifneq ($(strip $(filter $(LOCAL_MODULE_CLASS),APPS JAVA_LIBRARIES)),) +ifneq ($(filter $(LOCAL_MODULE_CLASS),APPS JAVA_LIBRARIES),) logtags_java_sources := $(patsubst %.logtags,%.java,$(addprefix $(intermediates.COMMON)/src/, $(logtags_sources))) logtags_sources := $(addprefix $(TOP_DIR)$(LOCAL_PATH)/, $(logtags_sources)) @@ -624,6 +624,9 @@ endif ifdef LOCAL_2ND_ARCH_VAR_PREFIX ALL_MODULES.$(my_register_name).FOR_2ND_ARCH := true endif +ifdef aidl_sources +ALL_MODULES.$(my_register_name).AIDL_FILES := $(aidl_sources) +endif INSTALLABLE_FILES.$(LOCAL_INSTALLED_MODULE).MODULE := $(my_register_name) diff --git a/core/post_clean.mk b/core/post_clean.mk index 213c43c0e..746ec2fd9 100644 --- a/core/post_clean.mk +++ b/core/post_clean.mk @@ -15,6 +15,7 @@ # Clean steps that need global knowledge of individual modules. # This file must be included after all Android.mks have been loaded. +####################################################### # Checks the current build configurations against the previous build, # clean artifacts in TARGET_COMMON_OUT_ROOT if necessary. # If a package's resource overlay has been changed, its R class needs to be @@ -51,3 +52,31 @@ $(shell mv -f $(current_package_overlay_config) $(previous_package_overlay_confi previous_package_overlay_config := current_package_overlay_config := current_all_packages_config := + +####################################################### +# Check if we need to delete obsolete aidl-generated java files. +# When an aidl file gets deleted (or renamed), the generated java file is obsolete. +previous_aidl_config := $(TARGET_OUT_COMMON_INTERMEDIATES)/previous_aidl_config.mk +current_aidl_config := $(TARGET_OUT_COMMON_INTERMEDIATES)/current_aidl_config.mk + +$(shell rm -rf $(current_aidl_config) && mkdir -p $(dir $(current_aidl_config))) +-include $(previous_aidl_config) + +intermediates_to_clean := +$(foreach p, $(ALL_MODULES), \ + $(if $(ALL_MODULES.$(p).AIDL_FILES),\ + $(shell echo 'AIDL_FILES.$(p) := $(ALL_MODULES.$(p).AIDL_FILES)' >> $(current_aidl_config)))\ + $(if $(filter-out $(ALL_MODULES.$(p).AIDL_FILES),$(AIDL_FILES.$(p))),\ + $(eval intermediates_to_clean += $(ALL_MODULES.$(p).INTERMEDIATE_SOURCE_DIR)))) +ifdef intermediates_to_clean +$(info *** Obsolete aidl-generated files detected, clean intermediate files...) +$(info *** rm -rf $(intermediates_to_clean)) +$(shell rm -rf $(intermediates_to_clean)) +intermediates_to_clean := +endif + +# Now current becomes previous. +$(shell mv -f $(current_aidl_config) $(previous_aidl_config)) + +previous_aidl_config := +current_aidl_config := -- 2.11.0