ec57db083f
This new SVH is used to uniquely identify all crates as a snapshot in time of their ABI/API/publicly reachable state. This current calculation is just a hash of the entire crate's AST. This is obviously incorrect, but it is currently the reality for today. This change threads through the new Svh structure which originates from crate dependencies. The concept of crate id hash is preserved to provide efficient matching on filenames for crate loading. The inspected hash once crate metadata is opened has been changed to use the new Svh. The goal of this hash is to identify when upstream crates have changed but downstream crates have not been recompiled. This will prevent the def-id drift problem where upstream crates were recompiled, thereby changing their metadata, but downstream crates were not recompiled. In the future this hash can be expanded to exclude contents of the AST like doc comments, but limitations in the compiler prevent this change from being made at this time. Closes #10207
131 lines
3.9 KiB
Makefile
131 lines
3.9 KiB
Makefile
# Copyright 2012 The Rust Project Developers. See the COPYRIGHT
|
|
# file at the top-level directory of this distribution and at
|
|
# http://rust-lang.org/COPYRIGHT.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
|
# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
|
# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
|
# option. This file may not be copied, modified, or distributed
|
|
# except according to those terms.
|
|
|
|
######################################################################
|
|
# Cleanup
|
|
######################################################################
|
|
|
|
CLEAN_STAGE_RULES := \
|
|
$(foreach stage, $(STAGES), \
|
|
$(foreach host, $(CFG_HOST), \
|
|
clean$(stage)_H_$(host) \
|
|
$(foreach target, $(CFG_TARGET), \
|
|
clean$(stage)_T_$(target)_H_$(host))))
|
|
|
|
CLEAN_STAGE_RULES := $(CLEAN_STAGE_RULES) \
|
|
$(foreach host, $(CFG_HOST), clean-generic-H-$(host))
|
|
|
|
CLEAN_STAGE_RULES := $(CLEAN_STAGE_RULES) \
|
|
$(foreach host, $(CFG_TARGET), clean-generic-T-$(host))
|
|
|
|
CLEAN_LLVM_RULES = \
|
|
$(foreach target, $(CFG_HOST), \
|
|
clean-llvm$(target))
|
|
|
|
.PHONY: clean clean-all clean-misc clean-llvm
|
|
|
|
clean-all: clean clean-llvm
|
|
|
|
clean-llvm: $(CLEAN_LLVM_RULES)
|
|
|
|
clean: clean-misc $(CLEAN_STAGE_RULES)
|
|
|
|
clean-misc:
|
|
@$(call E, cleaning)
|
|
$(Q)rm -f $(RUNTIME_OBJS) $(RUNTIME_DEF)
|
|
$(Q)rm -f $(RUSTLLVM_LIB_OBJS) $(RUSTLLVM_OBJS_OBJS) $(RUSTLLVM_DEF)
|
|
$(Q)rm -Rf $(DOCS)
|
|
$(Q)rm -Rf $(GENERATED)
|
|
$(Q)rm -Rf tmp/*
|
|
$(Q)rm -Rf rust-stage0-*.tar.bz2 $(PKG_NAME)-*.tar.gz $(PKG_NAME)-*.exe dist
|
|
$(Q)rm -Rf doc
|
|
|
|
define CLEAN_GENERIC
|
|
|
|
clean-generic-$(2)-$(1):
|
|
$(Q)find $(1)/rustllvm \
|
|
$(1)/rt \
|
|
$(1)/test \
|
|
$(1)/stage* \
|
|
-type f \( \
|
|
-name '*.[odasS]' -o \
|
|
-name '*.so' -o \
|
|
-name '*.dylib' -o \
|
|
-name '*.rlib' -o \
|
|
-name 'stamp.*' -o \
|
|
-name '*.lib' -o \
|
|
-name '*.dll' -o \
|
|
-name '*.def' -o \
|
|
-name '*.bc' \
|
|
\) \
|
|
| xargs rm -f
|
|
$(Q)find $(1)\
|
|
-name '*.dSYM' \
|
|
| xargs rm -Rf
|
|
endef
|
|
|
|
$(foreach host, $(CFG_HOST), $(eval $(call CLEAN_GENERIC,$(host),H)))
|
|
$(foreach targ, $(CFG_TARGET), $(eval $(call CLEAN_GENERIC,$(targ),T)))
|
|
|
|
define CLEAN_HOST_STAGE_N
|
|
|
|
clean$(1)_H_$(2): \
|
|
$$(foreach crate,$$(CRATES),clean$(1)_H_$(2)-lib-$$(crate)) \
|
|
$$(foreach tool,$$(TOOLS),clean$(1)_H_$(2)-tool-$$(tool))
|
|
|
|
clean$(1)_H_$(2)-tool-%:
|
|
$$(Q)rm -f $$(HBIN$(1)_H_$(2))/$$*$$(X_$(2))
|
|
|
|
clean$(1)_H_$(2)-lib-%:
|
|
$$(Q)rm -f $$(HLIB$(1)_H_$(2))/$$(call CFG_LIB_GLOB_$(2),$$*)
|
|
$$(Q)rm -f $$(HLIB$(1)_H_$(2))/$$(call CFG_RLIB_GLOB,$$*)
|
|
|
|
endef
|
|
|
|
$(foreach host, $(CFG_HOST), \
|
|
$(eval $(foreach stage, $(STAGES), \
|
|
$(eval $(call CLEAN_HOST_STAGE_N,$(stage),$(host))))))
|
|
|
|
define CLEAN_TARGET_STAGE_N
|
|
|
|
clean$(1)_T_$(2)_H_$(3): \
|
|
$$(foreach crate,$$(CRATES),clean$(1)_T_$(2)_H_$(3)-lib-$$(crate)) \
|
|
$$(foreach tool,$$(TOOLS),clean$(1)_T_$(2)_H_$(3)-tool-$$(tool))
|
|
$$(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/libmorestack.a
|
|
$$(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/libcompiler-rt.a
|
|
$(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/librun_pass_stage* # For unix
|
|
$(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/run_pass_stage* # For windows
|
|
|
|
clean$(1)_T_$(2)_H_$(3)-tool-%:
|
|
$$(Q)rm -f $$(TBIN$(1)_T_$(2)_H_$(3))/$$*$$(X_$(2))
|
|
|
|
clean$(1)_T_$(2)_H_$(3)-lib-%:
|
|
$$(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$$(call CFG_LIB_GLOB_$(2),$$*)
|
|
$$(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$$(call CFG_RLIB_GLOB,$$*)
|
|
endef
|
|
|
|
$(foreach host, $(CFG_HOST), \
|
|
$(eval $(foreach target, $(CFG_TARGET), \
|
|
$(eval $(foreach stage, 0 1 2 3, \
|
|
$(eval $(call CLEAN_TARGET_STAGE_N,$(stage),$(target),$(host))))))))
|
|
|
|
define DEF_CLEAN_LLVM_HOST
|
|
ifeq ($(CFG_LLVM_ROOT),)
|
|
clean-llvm$(1):
|
|
$$(Q)$$(MAKE) -C $$(CFG_LLVM_BUILD_DIR_$(1)) clean
|
|
else
|
|
clean-llvm$(1): ;
|
|
|
|
endif
|
|
endef
|
|
|
|
$(foreach host, $(CFG_HOST), \
|
|
$(eval $(call DEF_CLEAN_LLVM_HOST,$(host))))
|