From a2434eb950bee72f8c7e5186fad657852cbf14bf Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Mon, 23 May 2016 13:45:26 -0700 Subject: [PATCH] mk: Fix bootstrapping cross-hosts on beta The beta builds are currently failing, unfortunately, due to what is presumably some odd behavior with our makefiles. The wrong bootstrap key is being used to generate the stage1 cross-compiled libraries, which fails the build. Interestingly enough if the targets are directly specified as part of the build then it works just fine! Just a bare `make` fails... Instead of trying to understand what's happening in the makefiles instead just tweak how we configure the bootstrap key in a way that's more likely to work. --- mk/target.mk | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/mk/target.mk b/mk/target.mk index 37181b05438..2a08b7b0465 100644 --- a/mk/target.mk +++ b/mk/target.mk @@ -42,6 +42,23 @@ $(foreach host,$(CFG_HOST), \ $(foreach crate,$(CRATES), \ $(eval $(call RUST_CRATE_FULLDEPS,$(stage),$(target),$(host),$(crate))))))) +# $(1) stage +# $(2) target +# $(3) host +define DEFINE_BOOTSTRAP_KEY +BOOTSTRAP_KEY$(1)_T_$(2)_H_$(3) := $$(CFG_BOOTSTRAP_KEY) +ifeq ($(1),0) +ifeq ($(3),$$(CFG_BUILD)) +BOOTSTRAP_KEY$(1)_T_$(2)_H_$(3) := $$(CFG_BOOTSTRAP_KEY_STAGE0) +endif +endif +endef + +$(foreach host,$(CFG_TARGET), \ + $(foreach target,$(CFG_TARGET), \ + $(foreach stage,$(STAGES), \ + $(eval $(call DEFINE_BOOTSTRAP_KEY,$(stage),$(target),$(host)))))) + # RUST_TARGET_STAGE_N template: This defines how target artifacts are built # for all stage/target architecture combinations. This is one giant rule which # works as follows: @@ -65,12 +82,9 @@ $(foreach host,$(CFG_HOST), \ # $(4) is the crate name define RUST_TARGET_STAGE_N -ifeq ($(1),0) -$$(TLIB$(1)_T_$(2)_H_$(3))/stamp.$(4): \ - export RUSTC_BOOTSTRAP_KEY := $$(CFG_BOOTSTRAP_KEY_STAGE0) -endif - $$(TLIB$(1)_T_$(2)_H_$(3))/stamp.$(4): CFG_COMPILER_HOST_TRIPLE = $(2) +$$(TLIB$(1)_T_$(2)_H_$(3))/stamp.$(4): \ + export RUSTC_BOOTSTRAP_KEY := $$(BOOTSTRAP_KEY$(1)_T_$(2)_H_$(3)) $$(TLIB$(1)_T_$(2)_H_$(3))/stamp.$(4): \ $$(CRATEFILE_$(4)) \ $$(CRATE_FULLDEPS_$(1)_T_$(2)_H_$(3)_$(4)) \ @@ -118,11 +132,8 @@ endef # $(4) - name of the tool being built define TARGET_TOOL -ifeq ($(1),0) $$(TBIN$(1)_T_$(2)_H_$(3))/$(4)$$(X_$(2)): \ - export RUSTC_BOOTSTRAP_KEY := $$(CFG_BOOTSTRAP_KEY_STAGE0) -endif - + export RUSTC_BOOTSTRAP_KEY := $$(BOOTSTRAP_KEY$(1)_T_$(2)_H_$(3)) $$(TBIN$(1)_T_$(2)_H_$(3))/$(4)$$(X_$(2)): \ $$(TOOL_SOURCE_$(4)) \ $$(TOOL_INPUTS_$(4)) \