diff options
Diffstat (limited to 'core/post_clean.mk')
-rw-r--r-- | core/post_clean.mk | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/core/post_clean.mk b/core/post_clean.mk index 213c43c..f7e654b 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,45 @@ $(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))\ + && touch $(current_aidl_config)) +-include $(previous_aidl_config) + +intermediates_to_clean := +modules_with_aidl_files := +$(foreach p, $(ALL_MODULES), \ + $(if $(ALL_MODULES.$(p).AIDL_FILES),\ + $(eval modules_with_aidl_files += $(p))\ + $(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)))) +intermediates_to_clean := $(strip $(intermediates_to_clean)) +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 + +# For modules not loaded by the current build (e.g. you are running mm/mmm), +# we copy the info from the previous bulid. +$(foreach p, $(filter-out $(modules_with_aidl_files),$(MODULES_WITH_AIDL_FILES)),\ + $(shell echo 'AIDL_FILES.$(p) := $(AIDL_FILES.$(p))' >> $(current_aidl_config))) +MODULES_WITH_AIDL_FILES := $(sort $(MODULES_WITH_AIDL_FILES) $(modules_with_aidl_files)) +$(shell echo 'MODULES_WITH_AIDL_FILES := $(MODULES_WITH_AIDL_FILES)' >> $(current_aidl_config)) + +# Now current becomes previous. +$(shell mv -f $(current_aidl_config) $(previous_aidl_config)) + +MODULES_WITH_AIDL_FILES := +modules_with_aidl_files := +previous_aidl_config := +current_aidl_config := |