forked from openkylin/platform_build
Merge changes from topics 'soong_ui_installclean', 'soong_ui_version', 'soong_ui_clean'
* changes: Move auto installclean to soong_ui Move version checking to soong_ui Move clean/clobber to soong_ui Allow disabling of CleanSpec functionality
This commit is contained in:
commit
212c418ee7
|
@ -417,6 +417,9 @@ $(call add-clean-step, rm -rf $(PRODUCT_OUT)/data/vendor/lib*)
|
||||||
# Soong module variant change, remove obsolete intermediates
|
# Soong module variant change, remove obsolete intermediates
|
||||||
$(call add-clean-step, rm -rf $(OUT_DIR)/soong/.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
|
# NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST
|
||||||
# ************************************************
|
# ************************************************
|
||||||
|
|
|
@ -14,7 +14,7 @@
|
||||||
#
|
#
|
||||||
|
|
||||||
# Don't bother with the cleanspecs if you are running mm/mmm
|
# 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 :=
|
INTERNAL_CLEAN_STEPS :=
|
||||||
|
|
||||||
|
@ -142,53 +142,7 @@ rewrite_clean_steps_file :=
|
||||||
INTERNAL_CLEAN_STEPS :=
|
INTERNAL_CLEAN_STEPS :=
|
||||||
INTERNAL_CLEAN_BUILD_VERSION :=
|
INTERNAL_CLEAN_BUILD_VERSION :=
|
||||||
|
|
||||||
endif # if not ONE_SHOT_MAKEFILE dont_bother
|
endif # if not ONE_SHOT_MAKEFILE dont_bother NO_ANDROID_CLEANSPEC
|
||||||
|
|
||||||
# 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 :=
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# installclean logic
|
# installclean logic
|
||||||
|
@ -272,14 +226,6 @@ installclean: dataclean
|
||||||
$(hide) rm -rf $(FILES)
|
$(hide) rm -rf $(FILES)
|
||||||
@echo "Deleted images and staging directories."
|
@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
|
.PHONY: clean-jack-files
|
||||||
|
|
|
@ -847,7 +847,7 @@ endef
|
||||||
|
|
||||||
# These goals don't need to collect and include Android.mks/CleanSpec.mks
|
# These goals don't need to collect and include Android.mks/CleanSpec.mks
|
||||||
# in the source tree.
|
# in the source tree.
|
||||||
dont_bother_goals := clean clobber dataclean installclean \
|
dont_bother_goals := dataclean installclean \
|
||||||
help out \
|
help out \
|
||||||
snod systemimage-nodeps \
|
snod systemimage-nodeps \
|
||||||
stnod systemtarball-nodeps \
|
stnod systemtarball-nodeps \
|
||||||
|
|
148
core/main.mk
148
core/main.mk
|
@ -88,146 +88,6 @@ include $(BUILD_SYSTEM)/cleanbuild.mk
|
||||||
# Include the google-specific config
|
# Include the google-specific config
|
||||||
-include vendor/google/build/config.mk
|
-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
|
# These are the modifier targets that don't do anything themselves, but
|
||||||
# change the behavior of the build.
|
# change the behavior of the build.
|
||||||
# (must be defined before including definitions.make)
|
# (must be defined before including definitions.make)
|
||||||
|
@ -1270,14 +1130,6 @@ endif # samplecode in $(MAKECMDGOALS)
|
||||||
.PHONY: findbugs
|
.PHONY: findbugs
|
||||||
findbugs: $(INTERNAL_FINDBUGS_HTML_TARGET) $(INTERNAL_FINDBUGS_XML_TARGET)
|
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.
|
# The rules for dataclean and installclean are defined in cleanbuild.mk.
|
||||||
|
|
||||||
#xxx scrape this from ALL_MODULE_NAME_TAGS
|
#xxx scrape this from ALL_MODULE_NAME_TAGS
|
||||||
|
|
Loading…
Reference in New Issue