From 9f1523793735e2d75d6c620f0cc9741b59c47f5c Mon Sep 17 00:00:00 2001 From: Brian Anderson Date: Wed, 7 Nov 2012 19:47:24 -0800 Subject: [PATCH] Attempt to fix tools.mk under cross-compile --- mk/tools.mk | 125 ++++++++++++++++++++++++++++------------------------ 1 file changed, 68 insertions(+), 57 deletions(-) diff --git a/mk/tools.mk b/mk/tools.mk index 292fe62eafc..b95faed380b 100644 --- a/mk/tools.mk +++ b/mk/tools.mk @@ -22,7 +22,7 @@ RUSTI_INPUTS := $(wildcard $(S)src/librusti/*.rs) # FIXME: These are only built for the host arch. Eventually we'll # have tools that need to built for other targets. -define TOOLS_STAGE_N +define TOOLS_STAGE_N_TARGET $$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_LIBFUZZER): \ $$(FUZZER_LIB) $$(FUZZER_INPUTS) \ @@ -39,6 +39,64 @@ $$(TBIN$(1)_T_$(4)_H_$(3))/fuzzer$$(X): \ @$$(call E, compile_and_link: $$@) $$(STAGE$(1)_T_$(4)_H_$(3)) --cfg fuzzer -o $$@ $$< +$$(TBIN$(1)_T_$(4)_H_$(3))/compiletest$$(X): \ + $$(COMPILETEST_CRATE) $$(COMPILETEST_INPUTS) \ + $$(TSREQ$(1)_T_$(4)_H_$(3)) \ + $$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_CORELIB) \ + $$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_STDLIB) + @$$(call E, compile_and_link: $$@) + $$(STAGE$(1)_T_$(4)_H_$(3)) -o $$@ $$< + +$$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_LIBCARGO): \ + $$(CARGO_LIB) $$(CARGO_INPUTS) \ + $$(TSREQ$(1)_T_$(4)_H_$(3)) \ + $$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_CORELIB) \ + $$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_STDLIB) \ + $$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_LIBRUSTC) + @$$(call E, compile_and_link: $$@) + $$(STAGE$(1)_T_$(4)_H_$(3)) -o $$@ $$< && touch $$@ + +$$(TBIN$(1)_T_$(4)_H_$(3))/cargo$$(X): \ + $$(DRIVER_CRATE) \ + $$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_LIBCARGO) + @$$(call E, compile_and_link: $$@) + $$(STAGE$(1)_T_$(4)_H_$(3)) --cfg cargo -o $$@ $$< + +$$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_LIBRUSTDOC): \ + $$(RUSTDOC_LIB) $$(RUSTDOC_INPUTS) \ + $$(TSREQ$(1)_T_$(4)_H_$(3)) \ + $$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_CORELIB) \ + $$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_STDLIB) \ + $$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_LIBRUSTC) + @$$(call E, compile_and_link: $$@) + $$(STAGE$(1)_T_$(4)_H_$(3)) -o $$@ $$< && touch $$@ + +$$(TBIN$(1)_T_$(4)_H_$(3))/rustdoc$$(X): \ + $$(DRIVER_CRATE) \ + $$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_LIBRUSTDOC) + @$$(call E, compile_and_link: $$@) + $$(STAGE$(1)_T_$(4)_H_$(3)) --cfg rustdoc -o $$@ $$< + +$$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_LIBRUSTI): \ + $$(RUSTI_LIB) $$(RUSTI_INPUTS) \ + $$(TSREQ$(1)_T_$(4)_H_$(3)) \ + $$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_CORELIB) \ + $$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_STDLIB) \ + $$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_LIBRUSTC) + @$$(call E, compile_and_link: $$@) + $$(STAGE$(1)_T_$(4)_H_$(3)) -o $$@ $$< && touch $$@ + +$$(TBIN$(1)_T_$(4)_H_$(3))/rusti$$(X): \ + $$(DRIVER_CRATE) \ + $$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_LIBRUSTI) + @$$(call E, compile_and_link: $$@) + $$(STAGE$(1)_T_$(4)_H_$(3)) --cfg rusti -o $$@ $$< + +endef + +define TOOLS_STAGE_N_HOST + + # Promote the stageN target to stageN+1 host # FIXME: Shouldn't need to depend on host/librustc.so once # rpath is working @@ -59,34 +117,12 @@ $$(HBIN$(2)_H_$(4))/fuzzer$$(X): \ @$$(call E, cp: $$@) $$(Q)cp $$< $$@ -$$(TBIN$(1)_T_$(4)_H_$(3))/compiletest$$(X): \ - $$(COMPILETEST_CRATE) $$(COMPILETEST_INPUTS) \ - $$(TSREQ$(1)_T_$(4)_H_$(3)) \ - $$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_CORELIB) \ - $$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_STDLIB) - @$$(call E, compile_and_link: $$@) - $$(STAGE$(1)_T_$(4)_H_$(3)) -o $$@ $$< - $$(HBIN$(2)_H_$(4))/compiletest$$(X): \ $$(TBIN$(1)_T_$(4)_H_$(3))/compiletest$$(X) \ $$(HSREQ$(2)_H_$(4)) @$$(call E, cp: $$@) $$(Q)cp $$< $$@ -$$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_LIBCARGO): \ - $$(CARGO_LIB) $$(CARGO_INPUTS) \ - $$(TSREQ$(1)_T_$(4)_H_$(3)) \ - $$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_CORELIB) \ - $$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_STDLIB) \ - $$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_LIBRUSTC) - @$$(call E, compile_and_link: $$@) - $$(STAGE$(1)_T_$(4)_H_$(3)) -o $$@ $$< && touch $$@ - -$$(TBIN$(1)_T_$(4)_H_$(3))/cargo$$(X): \ - $$(DRIVER_CRATE) \ - $$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_LIBCARGO) - @$$(call E, compile_and_link: $$@) - $$(STAGE$(1)_T_$(4)_H_$(3)) --cfg cargo -o $$@ $$< $$(HLIB$(2)_H_$(4))/$$(CFG_LIBCARGO): \ $$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_LIBCARGO) \ @@ -105,21 +141,6 @@ $$(HBIN$(2)_H_$(4))/cargo$$(X): \ @$$(call E, cp: $$@) $$(Q)cp $$< $$@ -$$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_LIBRUSTDOC): \ - $$(RUSTDOC_LIB) $$(RUSTDOC_INPUTS) \ - $$(TSREQ$(1)_T_$(4)_H_$(3)) \ - $$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_CORELIB) \ - $$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_STDLIB) \ - $$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_LIBRUSTC) - @$$(call E, compile_and_link: $$@) - $$(STAGE$(1)_T_$(4)_H_$(3)) -o $$@ $$< && touch $$@ - -$$(TBIN$(1)_T_$(4)_H_$(3))/rustdoc$$(X): \ - $$(DRIVER_CRATE) \ - $$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_LIBRUSTDOC) - @$$(call E, compile_and_link: $$@) - $$(STAGE$(1)_T_$(4)_H_$(3)) --cfg rustdoc -o $$@ $$< - $$(HLIB$(2)_H_$(4))/$$(CFG_LIBRUSTDOC): \ $$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_LIBRUSTDOC) \ $$(HLIB$(2)_H_$(4))/$$(CFG_LIBRUSTC) \ @@ -137,21 +158,6 @@ $$(HBIN$(2)_H_$(4))/rustdoc$$(X): \ @$$(call E, cp: $$@) $$(Q)cp $$< $$@ -$$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_LIBRUSTI): \ - $$(RUSTI_LIB) $$(RUSTI_INPUTS) \ - $$(TSREQ$(1)_T_$(4)_H_$(3)) \ - $$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_CORELIB) \ - $$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_STDLIB) \ - $$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_LIBRUSTC) - @$$(call E, compile_and_link: $$@) - $$(STAGE$(1)_T_$(4)_H_$(3)) -o $$@ $$< && touch $$@ - -$$(TBIN$(1)_T_$(4)_H_$(3))/rusti$$(X): \ - $$(DRIVER_CRATE) \ - $$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_LIBRUSTI) - @$$(call E, compile_and_link: $$@) - $$(STAGE$(1)_T_$(4)_H_$(3)) --cfg rusti -o $$@ $$< - $$(HLIB$(2)_H_$(4))/$$(CFG_LIBRUSTI): \ $$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_LIBRUSTI) \ $$(HLIB$(2)_H_$(4))/$$(CFG_LIBRUSTC) \ @@ -169,10 +175,15 @@ $$(HBIN$(2)_H_$(4))/rusti$$(X): \ @$$(call E, cp: $$@) $$(Q)cp $$< $$@ - endef $(foreach host,$(CFG_TARGET_TRIPLES), \ - $(eval $(call TOOLS_STAGE_N,0,1,$(host),$(host))) \ - $(eval $(call TOOLS_STAGE_N,1,2,$(host),$(host))) \ - $(eval $(call TOOLS_STAGE_N,2,3,$(host),$(host)))) +$(foreach target,$(CFG_TARGET_TRIPLES), \ + $(eval $(call TOOLS_STAGE_N_TARGET,0,1,$(target),$(host))) \ + $(eval $(call TOOLS_STAGE_N_TARGET,1,2,$(target),$(host))) \ + $(eval $(call TOOLS_STAGE_N_TARGET,2,3,$(target),$(host))))) + +$(foreach host,$(CFG_TARGET_TRIPLES), \ + $(eval $(call TOOLS_STAGE_N_HOST,0,1,$(host),$(host))) \ + $(eval $(call TOOLS_STAGE_N_HOST,1,2,$(host),$(host))) \ + $(eval $(call TOOLS_STAGE_N_HOST,2,3,$(host),$(host))))