diff --git a/CleanSpec.mk b/CleanSpec.mk index 88f917297..b955e2599 100644 --- a/CleanSpec.mk +++ b/CleanSpec.mk @@ -417,6 +417,9 @@ $(call add-clean-step, rm -rf $(PRODUCT_OUT)/data/vendor/lib*) # Soong module variant change, remove obsolete intermediates $(call add-clean-step, rm -rf $(OUT_DIR)/soong/.intermediates) +# Version checking moving to Soong +$(call add-clean-step, rm -rf $(OUT_DIR)/versions_checked.mk) + # ************************************************ # NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST # ************************************************ diff --git a/core/cleanbuild.mk b/core/cleanbuild.mk index fa89758a4..b7109f60b 100644 --- a/core/cleanbuild.mk +++ b/core/cleanbuild.mk @@ -14,7 +14,7 @@ # # Don't bother with the cleanspecs if you are running mm/mmm -ifeq ($(ONE_SHOT_MAKEFILE)$(dont_bother),) +ifeq ($(ONE_SHOT_MAKEFILE)$(dont_bother)$(NO_ANDROID_CLEANSPEC),) INTERNAL_CLEAN_STEPS := @@ -142,53 +142,7 @@ rewrite_clean_steps_file := INTERNAL_CLEAN_STEPS := INTERNAL_CLEAN_BUILD_VERSION := -endif # if not ONE_SHOT_MAKEFILE dont_bother - -# Since products and build variants (unfortunately) share the same -# PRODUCT_OUT staging directory, things can get out of sync if different -# build configurations are built in the same tree. The following logic -# will notice when the configuration has changed and remove the files -# necessary to keep things consistent. - -previous_build_config_file := $(PRODUCT_OUT)/previous_build_config.mk -current_build_config_file := $(PRODUCT_OUT)/current_build_config.mk - -current_build_config := \ - $(TARGET_PRODUCT)-$(TARGET_BUILD_VARIANT) -force_installclean := false - -# Read the current state from the file, if present. -# Will set PREVIOUS_BUILD_CONFIG. -# -PREVIOUS_BUILD_CONFIG := --include $(previous_build_config_file) -PREVIOUS_BUILD_CONFIG := $(strip $(PREVIOUS_BUILD_CONFIG)) - -ifdef PREVIOUS_BUILD_CONFIG - ifneq ($(current_build_config),$(PREVIOUS_BUILD_CONFIG)) - $(info *** Build configuration changed: "$(PREVIOUS_BUILD_CONFIG)" -> "$(current_build_config)") - ifneq ($(DISABLE_AUTO_INSTALLCLEAN),true) - force_installclean := true - else - $(info DISABLE_AUTO_INSTALLCLEAN is set; skipping auto-clean. Your tree may be in an inconsistent state.) - endif - endif -endif # else, this is the first build, so no need to clean. - -# Write the new state to the file. -# -$(shell \ - mkdir -p $(dir $(current_build_config_file)) && \ - echo "PREVIOUS_BUILD_CONFIG := $(current_build_config)" > \ - $(current_build_config_file) \ - ) -$(shell cmp $(current_build_config_file) $(previous_build_config_file) > /dev/null 2>&1 || \ - mv -f $(current_build_config_file) $(previous_build_config_file)) - -PREVIOUS_BUILD_CONFIG := -previous_build_config_file := -current_build_config_file := -current_build_config := +endif # if not ONE_SHOT_MAKEFILE dont_bother NO_ANDROID_CLEANSPEC # # installclean logic @@ -272,14 +226,6 @@ installclean: dataclean $(hide) rm -rf $(FILES) @echo "Deleted images and staging directories." -ifeq ($(force_installclean),true) - $(info *** Forcing "make installclean"...) - $(info *** rm -rf $(dataclean_files) $(installclean_files)) - $(shell rm -rf $(dataclean_files) $(installclean_files)) - $(info *** Done with the cleaning, now starting the real build.) -endif -force_installclean := - ########################################################### .PHONY: clean-jack-files diff --git a/core/config.mk b/core/config.mk index 583909d57..86915a6ba 100644 --- a/core/config.mk +++ b/core/config.mk @@ -847,7 +847,7 @@ endef # These goals don't need to collect and include Android.mks/CleanSpec.mks # in the source tree. -dont_bother_goals := clean clobber dataclean installclean \ +dont_bother_goals := dataclean installclean \ help out \ snod systemimage-nodeps \ stnod systemtarball-nodeps \ diff --git a/core/main.mk b/core/main.mk index 6089cec39..f22e63d11 100644 --- a/core/main.mk +++ b/core/main.mk @@ -88,146 +88,6 @@ include $(BUILD_SYSTEM)/cleanbuild.mk # Include the google-specific config -include vendor/google/build/config.mk -VERSION_CHECK_SEQUENCE_NUMBER := 6 -JAVA_NOT_REQUIRED_CHECKED := --include $(OUT_DIR)/versions_checked.mk -ifneq ($(VERSION_CHECK_SEQUENCE_NUMBER)$(JAVA_NOT_REQUIRED),$(VERSIONS_CHECKED)$(JAVA_NOT_REQUIRED_CHECKED)) - -$(info Checking build tools versions...) - -# check for a case sensitive file system -ifneq (a,$(shell mkdir -p $(OUT_DIR) ; \ - echo a > $(OUT_DIR)/casecheck.txt; \ - echo B > $(OUT_DIR)/CaseCheck.txt; \ - cat $(OUT_DIR)/casecheck.txt)) -$(warning ************************************************************) -$(warning You are building on a case-insensitive filesystem.) -$(warning Please move your source tree to a case-sensitive filesystem.) -$(warning ************************************************************) -$(error Case-insensitive filesystems not supported) -endif - -# Make sure that there are no spaces in the absolute path; the -# build system can't deal with them. -ifneq ($(words $(shell pwd)),1) -$(warning ************************************************************) -$(warning You are building in a directory whose absolute path contains) -$(warning a space character:) -$(warning $(space)) -$(warning "$(shell pwd)") -$(warning $(space)) -$(warning Please move your source tree to a path that does not contain) -$(warning any spaces.) -$(warning ************************************************************) -$(error Directory names containing spaces not supported) -endif - -ifneq ($(JAVA_NOT_REQUIRED),true) -java_version_str := $(shell unset _JAVA_OPTIONS && java -version 2>&1) -javac_version_str := $(shell unset _JAVA_OPTIONS && javac -version 2>&1) - -# Check for the correct version of java, should be 1.8 by -# default and only 1.7 if LEGACY_USE_JAVA7 is set. -ifeq ($(LEGACY_USE_JAVA7),) # if LEGACY_USE_JAVA7 == '' -required_version := "1.8.x" -required_javac_version := "1.8" -java_version := $(shell echo '$(java_version_str)' | grep '[ "]1\.8[\. "$$]') -javac_version := $(shell echo '$(javac_version_str)' | grep '[ "]1\.8[\. "$$]') -else -required_version := "1.7.x" -required_javac_version := "1.7" -java_version := $(shell echo '$(java_version_str)' | grep '^java .*[ "]1\.7[\. "$$]') -javac_version := $(shell echo '$(javac_version_str)' | grep '[ "]1\.7[\. "$$]') -endif # if LEGACY_USE_JAVA7 == '' - -ifeq ($(strip $(java_version)),) -$(info ************************************************************) -$(info You are attempting to build with the incorrect version) -$(info of java.) -$(info $(space)) -$(info Your version is: $(java_version_str).) -$(info The required version is: $(required_version)) -$(info $(space)) -$(info Please follow the machine setup instructions at) -$(info $(space)$(space)$(space)$(space)https://source.android.com/source/initializing.html) -$(info ************************************************************) -$(error stop) -endif - -# Check for the current JDK. -# -# For Java 1.7/1.8, we require OpenJDK on linux and Oracle JDK on Mac OS. -requires_openjdk := false -ifeq ($(BUILD_OS),linux) -requires_openjdk := true -endif - - -# Check for the current jdk -ifeq ($(requires_openjdk), true) -# The user asked for openjdk, so check that the host -# java version is really openjdk and not some other JDK. -ifeq ($(shell echo '$(java_version_str)' | grep -i openjdk),) -$(info ************************************************************) -$(info You asked for an OpenJDK based build but your version is) -$(info $(java_version_str).) -$(info ************************************************************) -$(error stop) -endif # java version is not OpenJdk -else # if requires_openjdk -ifneq ($(shell echo '$(java_version_str)' | grep -i openjdk),) -$(info ************************************************************) -$(info You are attempting to build with an unsupported JDK.) -$(info $(space)) -$(info You use OpenJDK but only Sun/Oracle JDK is supported.) -$(info Please follow the machine setup instructions at) -$(info $(space)$(space)$(space)$(space)https://source.android.com/source/download.html) -$(info ************************************************************) -$(error stop) -endif # java version is not Sun Oracle JDK -endif # if requires_openjdk - -KNOWN_INCOMPATIBLE_JAVAC_VERSIONS := google -incompat_javac := $(foreach v,$(KNOWN_INCOMPATIBLE_JAVAC_VERSIONS),$(findstring $(v),$(javac_version_str))) -ifneq ($(incompat_javac),) -javac_version := -endif - -# Check for the correct version of javac -ifeq ($(strip $(javac_version)),) -$(info ************************************************************) -$(info You are attempting to build with the incorrect version) -$(info of javac.) -$(info $(space)) -$(info Your version is: $(javac_version_str).) -ifneq ($(incompat_javac),) -$(info This '$(incompat_javac)' version is not supported for Android platform builds.) -$(info Use a publicly available JDK and make sure you have run envsetup.sh / lunch.) -else -$(info The required version is: $(required_javac_version)) -endif -$(info $(space)) -$(info Please follow the machine setup instructions at) -$(info $(space)$(space)$(space)$(space)https://source.android.com/source/download.html) -$(info ************************************************************) -$(error stop) -endif - -endif # if JAVA_NOT_REQUIRED - -ifndef BUILD_EMULATOR - # Emulator binaries are now provided under prebuilts/android-emulator/ - BUILD_EMULATOR := false -endif - -$(shell echo 'VERSIONS_CHECKED := $(VERSION_CHECK_SEQUENCE_NUMBER)' \ - > $(OUT_DIR)/versions_checked.mk) -$(shell echo 'BUILD_EMULATOR ?= $(BUILD_EMULATOR)' \ - >> $(OUT_DIR)/versions_checked.mk) -$(shell echo 'JAVA_NOT_REQUIRED_CHECKED := $(JAVA_NOT_REQUIRED)' \ - >> $(OUT_DIR)/versions_checked.mk) -endif - # These are the modifier targets that don't do anything themselves, but # change the behavior of the build. # (must be defined before including definitions.make) @@ -1270,14 +1130,6 @@ endif # samplecode in $(MAKECMDGOALS) .PHONY: findbugs findbugs: $(INTERNAL_FINDBUGS_HTML_TARGET) $(INTERNAL_FINDBUGS_XML_TARGET) -.PHONY: clean -clean: - @rm -rf $(OUT_DIR)/* - @echo "Entire build directory removed." - -.PHONY: clobber -clobber: clean - # The rules for dataclean and installclean are defined in cleanbuild.mk. #xxx scrape this from ALL_MODULE_NAME_TAGS