diff --git a/Makefile.in b/Makefile.in index de30113ca4b6e..c0e642658ef73 100644 --- a/Makefile.in +++ b/Makefile.in @@ -235,6 +235,33 @@ LIBRUST_DSYM_GLOB_$(1) :=$(call CFG_LIB_DSYM_GLOB_$(1),rust) endef +# $(1) is the path for directory to match against +# $(2) is the glob to use in the match +# $(3) is filename (usually the target being created) to filter out from match +# (i.e. filename is not out-of-date artifact from prior Rust version/build) +# The glob denoted by $(2) often is constructed with a space character prefix, +# which is why we cannot just do `ls` on $(1)/$(2). +define CHECK_FOR_OLD_GLOB_MATCHES_EXCEPT + $(Q)( cd $(1) && ( ls $(2) 2>/dev/null || true ) | grep -v $(3) > /dev/null && echo "Warning: there are previous" '$(2)' "libraries:" || true ) + $(Q)( cd $(1) && ( ls $(2) 2>/dev/null || true ) | grep -v $(3) || true ) +endef + +# Same interface as above, but deletes rather than just listing the files. +define REMOVE_ALL_OLD_GLOB_MATCHES_EXCEPT + $(Q)( cd $(1) && ( ls $(2) 2>/dev/null || true ) | grep -v $(3) > /dev/null && echo "Warning: removing previous" '$(2)' "libraries:" || true ) + $(Q)( cd $(1) && ( ls $(2) 2>/dev/null || true ) | grep -v $(3) | xargs rm -v ) +endef + +ifdef VERBOSE +define LIST_ALL_OLD_GLOB_MATCHES_EXCEPT + @echo "Info: now are following matches for" '$(2)' "libraries:" + @( cd $(1) && ( ls $(2) 2>/dev/null || true ) | grep -v $(3) || true ) +endef +else +define LIST_ALL_OLD_GLOB_MATCHES_EXCEPT +endef +endif + $(foreach target,$(CFG_TARGET_TRIPLES),\ $(eval $(call DEF_LIBS,$(target)))) diff --git a/mk/host.mk b/mk/host.mk index ac3bc8ad8cbf9..512d71c3587d1 100644 --- a/mk/host.mk +++ b/mk/host.mk @@ -45,10 +45,12 @@ $$(HLIB$(2)_H_$(4))/$(CFG_LIBRUSTC_$(4)): \ | $$(HLIB$(2)_H_$(4))/ @$$(call E, cp: $$@) + $$(call REMOVE_ALL_OLD_GLOB_MATCHES_EXCEPT, `dirname $$@`, $(LIBRUSTC_GLOB_$(4)), `basename $$@`) $$(Q)cp $$< $$@ $$(Q)cp -R $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBRUSTC_GLOB_$(4)) \ $(wildcard $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBRUSTC_DSYM_GLOB_$(4))) \ $$(HLIB$(2)_H_$(4)) + $$(call LIST_ALL_OLD_GLOB_MATCHES_EXCEPT, `dirname $$@`, $(LIBRUSTC_GLOB_$(4)), `basename $$@`) $$(HLIB$(2)_H_$(4))/$(CFG_LIBSYNTAX_$(4)): \ $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBSYNTAX_$(4)) \ @@ -58,10 +60,12 @@ $$(HLIB$(2)_H_$(4))/$(CFG_LIBSYNTAX_$(4)): \ $$(HEXTRALIB_DEFAULT$(2)_H_$(4)) \ | $$(HLIB$(2)_H_$(4))/ @$$(call E, cp: $$@) + $$(call REMOVE_ALL_OLD_GLOB_MATCHES_EXCEPT, `dirname $$@`, $(LIBSYNTAX_GLOB_$(4)), `basename $$@`) $$(Q)cp $$< $$@ $$(Q)cp -R $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBSYNTAX_GLOB_$(4)) \ $$(wildcard $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBSYNTAX_DSYM_GLOB_$(4))) \ $$(HLIB$(2)_H_$(4)) + $$(call LIST_ALL_OLD_GLOB_MATCHES_EXCEPT, `dirname $$@`, $(LIBSYNTAX_GLOB_$(4)), `basename $$@`) $$(HLIB$(2)_H_$(4))/$(CFG_RUNTIME_$(4)): \ $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_RUNTIME_$(4)) \ @@ -74,6 +78,7 @@ $$(HLIB$(2)_H_$(4))/$(CFG_STDLIB_$(4)): \ $$(HLIB$(2)_H_$(4))/$(CFG_RUNTIME_$(4)) \ | $$(HLIB$(2)_H_$(4))/ @$$(call E, cp: $$@) + $$(call REMOVE_ALL_OLD_GLOB_MATCHES_EXCEPT, `dirname $$@`, $(STDLIB_GLOB_$(4)), `basename $$@`) $$(Q)cp $$< $$@ # Subtle: We do not let the shell expand $(STDLIB_DSYM_GLOB) directly rather # we use Make's $$(wildcard) facility. The reason is that, on mac, when using @@ -85,6 +90,7 @@ $$(HLIB$(2)_H_$(4))/$(CFG_STDLIB_$(4)): \ $$(Q)cp -R $$(TLIB$(1)_T_$(4)_H_$(3))/$(STDLIB_GLOB_$(4)) \ $$(wildcard $$(TLIB$(1)_T_$(4)_H_$(3))/$(STDLIB_DSYM_GLOB_$(4))) \ $$(HLIB$(2)_H_$(4)) + $$(call LIST_ALL_OLD_GLOB_MATCHES_EXCEPT, `dirname $$@`, $(STDLIB_GLOB_$(4)), `basename $$@`) $$(HLIB$(2)_H_$(4))/$(CFG_EXTRALIB_$(4)): \ $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_EXTRALIB_$(4)) \ @@ -92,10 +98,12 @@ $$(HLIB$(2)_H_$(4))/$(CFG_EXTRALIB_$(4)): \ $$(HLIB$(2)_H_$(4))/$(CFG_RUNTIME_$(4)) \ | $$(HLIB$(2)_H_$(4))/ @$$(call E, cp: $$@) + $$(call REMOVE_ALL_OLD_GLOB_MATCHES_EXCEPT, `dirname $$@`, $(EXTRALIB_GLOB_$(4)), `basename $$@`) $$(Q)cp $$< $$@ $$(Q)cp -R $$(TLIB$(1)_T_$(4)_H_$(3))/$(EXTRALIB_GLOB_$(4)) \ $$(wildcard $$(TLIB$(1)_T_$(4)_H_$(3))/$(EXTRALIB_DSYM_GLOB_$(4))) \ $$(HLIB$(2)_H_$(4)) + $$(call LIST_ALL_OLD_GLOB_MATCHES_EXCEPT, `dirname $$@`, $(EXTRALIB_GLOB_$(4)), `basename $$@`) $$(HLIB$(2)_H_$(4))/libstd.rlib: \ $$(TLIB$(1)_T_$(4)_H_$(3))/libstd.rlib \ diff --git a/mk/install.mk b/mk/install.mk index ae6bd29228f0b..543f0556daf16 100644 --- a/mk/install.mk +++ b/mk/install.mk @@ -16,13 +16,21 @@ # destination directory as arg 2, and filename/libname-glob as arg 3 ifdef VERBOSE INSTALL = install -m755 $(1)/$(3) $(2)/$(3) - INSTALL_LIB = install -m644 `ls -drt1 $(1)/$(3) | tail -1` $(2)/ + DO_INSTALL_LIB = install -m644 `ls -drt1 $(1)/$(3) | tail -1` $(2)/ else INSTALL = $(Q)$(call E, install: $(2)/$(3)) && install -m755 $(1)/$(3) $(2)/$(3) - INSTALL_LIB = $(Q)$(call E, install_lib: $(2)/$(3)) && \ + DO_INSTALL_LIB = $(Q)$(call E, install_lib: $(2)/$(3)) && \ install -m644 `ls -drt1 $(1)/$(3) | tail -1` $(2)/ endif +# $(1) is the source dirctory +# $(2) is the destination directory +# $(3) is the filename/libname-glob +define INSTALL_LIB + LIB_NAME=`ls -drt1 $(1)/$(3) | tail -1 | xargs basename` ; ( ls -drt1 $(2)/$(3) 2>/dev/null || true ) | grep -v $$LIB_NAME >/dev/null 2>&1 && echo "Warning, one or more libraries matching Rust library '$(3)'" && echo " (other than '$$LIB_NAME' itself) already present" && echo " at destination $(2):" && ( ls -drt1 $(2)/$(3) 2>/dev/null || true ) | grep -v $$LIB_NAME || true + $(call DO_INSTALL_LIB,$(1),$(2),$(3)) +endef + # The stage we install from ISTAGE = 2 diff --git a/mk/stage0.mk b/mk/stage0.mk index a1aaef4d554ad..4eadf4d7c8ffc 100644 --- a/mk/stage0.mk +++ b/mk/stage0.mk @@ -1,10 +1,16 @@ # Extract the snapshot host compiler +$(HBIN0_H_$(CFG_BUILD_TRIPLE))/: + mkdir -p $@ +$(HLIB0_H_$(CFG_BUILD_TRIPLE))/: + mkdir -p $@ $(HBIN0_H_$(CFG_BUILD_TRIPLE))/rustc$(X_$(CFG_BUILD_TRIPLE)): \ $(S)src/snapshots.txt \ - $(S)src/etc/get-snapshot.py $(MKFILE_DEPS) + $(S)src/etc/get-snapshot.py $(MKFILE_DEPS) \ + | $(HBIN0_H_$(CFG_BUILD_TRIPLE))/ + @$(call E, fetch: $@) # Note: the variable "SNAPSHOT_FILE" is generally not set, and so # we generally only pass one argument to this script. @@ -22,23 +28,28 @@ endif # Host libs will be extracted by the above rule $(HLIB0_H_$(CFG_BUILD_TRIPLE))/$(CFG_RUNTIME_$(CFG_BUILD_TRIPLE)): \ - $(HBIN0_H_$(CFG_BUILD_TRIPLE))/rustc$(X_$(CFG_BUILD_TRIPLE)) + $(HBIN0_H_$(CFG_BUILD_TRIPLE))/rustc$(X_$(CFG_BUILD_TRIPLE)) \ + | $(HLIB0_H_$(CFG_BUILD_TRIPLE))/ $(Q)touch $@ $(HLIB0_H_$(CFG_BUILD_TRIPLE))/$(CFG_STDLIB_$(CFG_BUILD_TRIPLE)): \ - $(HBIN0_H_$(CFG_BUILD_TRIPLE))/rustc$(X_$(CFG_BUILD_TRIPLE)) + $(HBIN0_H_$(CFG_BUILD_TRIPLE))/rustc$(X_$(CFG_BUILD_TRIPLE)) \ + | $(HLIB0_H_$(CFG_BUILD_TRIPLE))/ $(Q)touch $@ $(HLIB0_H_$(CFG_BUILD_TRIPLE))/$(CFG_EXTRALIB_$(CFG_BUILD_TRIPLE)): \ - $(HBIN0_H_$(CFG_BUILD_TRIPLE))/rustc$(X_$(CFG_BUILD_TRIPLE)) + $(HBIN0_H_$(CFG_BUILD_TRIPLE))/rustc$(X_$(CFG_BUILD_TRIPLE)) \ + | $(HLIB0_H_$(CFG_BUILD_TRIPLE))/ $(Q)touch $@ $(HLIB0_H_$(CFG_BUILD_TRIPLE))/$(CFG_LIBRUSTC_$(CFG_BUILD_TRIPLE)): \ - $(HBIN0_H_$(CFG_BUILD_TRIPLE))/rustc$(X_$(CFG_BUILD_TRIPLE)) + $(HBIN0_H_$(CFG_BUILD_TRIPLE))/rustc$(X_$(CFG_BUILD_TRIPLE)) \ + | $(HLIB0_H_$(CFG_BUILD_TRIPLE))/ $(Q)touch $@ $(HLIB0_H_$(CFG_BUILD_TRIPLE))/$(CFG_RUSTLLVM_$(CFG_BUILD_TRIPLE)): \ - $(HBIN0_H_$(CFG_BUILD_TRIPLE))/rustc$(X_$(CFG_BUILD_TRIPLE)) + $(HBIN0_H_$(CFG_BUILD_TRIPLE))/rustc$(X_$(CFG_BUILD_TRIPLE)) \ + | $(HLIB0_H_$(CFG_BUILD_TRIPLE))/ $(Q)touch $@ # For other targets, let the host build the target: @@ -48,33 +59,51 @@ define BOOTSTRAP_STAGE0 # $(2) stage to bootstrap from # $(3) target to bootstrap from -$$(HBIN0_H_$(1))/rustc$$(X_$(1)): \ - $$(TBIN$(2)_T_$(1)_H_$(3))/rustc$$(X_$(1)) +$(HBIN0_H_$(1))/: + mkdir -p $@ + +$(HLIB0_H_$(1))/: + mkdir -p $@ + +$$(HBIN0_H_$(1))/rustc$$(X_$(1)): \ + $$(TBIN$(2)_T_$(1)_H_$(3))/rustc$$(X_$(1)) \ + | $(HBIN0_H_$(1))/ @$$(call E, cp: $$@) $$(Q)cp $$< $$@ $$(HLIB0_H_$(1))/$(CFG_RUNTIME_$(1)): \ - $$(TLIB$(2)_T_$(1)_H_$(3))/$(CFG_RUNTIME_$(1)) + $$(TLIB$(2)_T_$(1)_H_$(3))/$(CFG_RUNTIME_$(1)) \ + | $(HLIB0_H_$(1))/ @$$(call E, cp: $$@) $$(Q)cp $$< $$@ $$(HLIB0_H_$(1))/$(CFG_STDLIB_$(1)): \ - $$(TLIB$(2)_T_$(1)_H_$(3))/$(CFG_STDLIB_$(1)) + $$(TLIB$(2)_T_$(1)_H_$(3))/$(CFG_STDLIB_$(1)) \ + | $(HLIB0_H_$(1))/ @$$(call E, cp: $$@) + $$(call CHECK_FOR_OLD_GLOB_MATCHES_EXCEPT, `dirname $$@`, $(EXTRALIB_GLOB_$(4)), `basename $$@`) $$(Q)cp $$(TLIB$(2)_T_$(1)_H_$(3))/$(STDLIB_GLOB_$(1)) $$@ + $$(call LIST_ALL_OLD_GLOB_MATCHES_EXCEPT, `dirname $$@`, $(EXTRALIB_GLOB_$(4)), `basename $$@`) $$(HLIB0_H_$(1))/$(CFG_EXTRALIB_$(1)): \ - $$(TLIB$(2)_T_$(1)_H_$(3))/$(CFG_EXTRALIB_$(1)) + $$(TLIB$(2)_T_$(1)_H_$(3))/$(CFG_EXTRALIB_$(1)) \ + | $(HLIB0_H_$(1))/ @$$(call E, cp: $$@) + $$(call CHECK_FOR_OLD_GLOB_MATCHES_EXCEPT, `dirname $$@`, $(EXTRALIB_GLOB_$(4)), `basename $$@`) $$(Q)cp $$(TLIB$(2)_T_$(1)_H_$(3))/$(EXTRALIB_GLOB_$(1)) $$@ + $$(call LIST_ALL_OLD_GLOB_MATCHES_EXCEPT, `dirname $$@`, $(EXTRALIB_GLOB_$(4)), `basename $$@`) $$(HLIB0_H_$(1))/$(CFG_LIBRUSTC_$(1)): \ - $$(TLIB$(2)_T_$(1)_H_$(3))/$(CFG_LIBRUSTC_$(1)) + $$(TLIB$(2)_T_$(1)_H_$(3))/$(CFG_LIBRUSTC_$(1)) \ + | $(HLIB0_H_$(1))/ @$$(call E, cp: $$@) + $$(call CHECK_FOR_OLD_GLOB_MATCHES_EXCEPT, `dirname $$@`, $(LIBRUSTC_GLOB_$(4)), `basename $$@`) $$(Q)cp $$(TLIB$(2)_T_$(1)_H_$(3))/$(LIBRUSTC_GLOB_$(1)) $$@ + $$(call LIST_ALL_OLD_GLOB_MATCHES_EXCEPT, `dirname $$@`, $(LIBRUSTC_GLOB_$(4)), `basename $$@`) $$(HLIB0_H_$(1))/$(CFG_RUSTLLVM_$(1)): \ - $$(TLIB$(2)_T_$(1)_H_$(3))/$(CFG_RUSTLLVM_$(1)) + $$(TLIB$(2)_T_$(1)_H_$(3))/$(CFG_RUSTLLVM_$(1)) \ + | $(HLIB0_H_$(1))/ @$$(call E, cp: $$@) $$(Q)cp $$< $$@ diff --git a/mk/target.mk b/mk/target.mk index 47ab7c867282c..7d5e0d9c2344d 100644 --- a/mk/target.mk +++ b/mk/target.mk @@ -48,7 +48,9 @@ $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_STDLIB_$(2)): \ $$(TSREQ$(1)_T_$(2)_H_$(3)) \ | $$(TLIB$(1)_T_$(2)_H_$(3))/ @$$(call E, compile_and_link: $$@) + $$(call REMOVE_ALL_OLD_GLOB_MATCHES_EXCEPT, `dirname $$@`, $(STDLIB_GLOB_$(2)), `basename $$@`) $$(STAGE$(1)_T_$(2)_H_$(3)) $$(WFLAGS_ST$(1)) -o $$@ $$< && touch $$@ + $$(call LIST_ALL_OLD_GLOB_MATCHES_EXCEPT, `dirname $$@`, $(STDLIB_GLOB_$(2)), `basename $$@`) $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_EXTRALIB_$(2)): \ $$(EXTRALIB_CRATE) $$(EXTRALIB_INPUTS) \ @@ -56,7 +58,9 @@ $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_EXTRALIB_$(2)): \ $$(TSREQ$(1)_T_$(2)_H_$(3)) \ | $$(TLIB$(1)_T_$(2)_H_$(3))/ @$$(call E, compile_and_link: $$@) + $$(call REMOVE_ALL_OLD_GLOB_MATCHES_EXCEPT, `dirname $$@`, $(EXTRALIB_GLOB_$(2)), `basename $$@`) $$(STAGE$(1)_T_$(2)_H_$(3)) $$(WFLAGS_ST$(1)) -o $$@ $$< && touch $$@ + $$(call LIST_ALL_OLD_GLOB_MATCHES_EXCEPT, `dirname $$@`, $(EXTRALIB_GLOB_$(2)), `basename $$@`) $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBSYNTAX_$(3)): \ $$(LIBSYNTAX_CRATE) $$(LIBSYNTAX_INPUTS) \ @@ -65,7 +69,9 @@ $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBSYNTAX_$(3)): \ $$(TEXTRALIB_DEFAULT$(1)_T_$(2)_H_$(3)) \ | $$(TLIB$(1)_T_$(2)_H_$(3))/ @$$(call E, compile_and_link: $$@) + $$(call REMOVE_ALL_OLD_GLOB_MATCHES_EXCEPT, `dirname $$@`, $(LIBSYNTAX_GLOB_$(2)), `basename $$@`) $$(STAGE$(1)_T_$(2)_H_$(3)) $(BORROWCK) -o $$@ $$< && touch $$@ + $$(call LIST_ALL_OLD_GLOB_MATCHES_EXCEPT, `dirname $$@`, $(LIBSYNTAX_GLOB_$(2)), `basename $$@`) # Only build the compiler for host triples ifneq ($$(findstring $(2),$$(CFG_HOST_TRIPLES)),) @@ -83,7 +89,9 @@ $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_LIBRUSTC_$(3)): \ $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_RUSTLLVM_$(3)) \ | $$(TLIB$(1)_T_$(2)_H_$(3))/ @$$(call E, compile_and_link: $$@) + $$(call REMOVE_ALL_OLD_GLOB_MATCHES_EXCEPT, `dirname $$@`, $(LIBRUSTC_GLOB_$(2)), `basename $$@`) $$(STAGE$(1)_T_$(2)_H_$(3)) -o $$@ $$< && touch $$@ + $$(call LIST_ALL_OLD_GLOB_MATCHES_EXCEPT, `dirname $$@`, $(LIBRUSTC_GLOB_$(2)), `basename $$@`) $$(TBIN$(1)_T_$(2)_H_$(3))/rustc$$(X_$(3)): \ $$(DRIVER_CRATE) \ diff --git a/mk/tools.mk b/mk/tools.mk index 0e83147501cbf..e80f6d275fa68 100644 --- a/mk/tools.mk +++ b/mk/tools.mk @@ -37,72 +37,89 @@ define TOOLS_STAGE_N_TARGET $$(TBIN$(1)_T_$(4)_H_$(3))/compiletest$$(X_$(4)): \ $$(COMPILETEST_CRATE) $$(COMPILETEST_INPUTS) \ - $$(TSREQ$(1)_T_$(4)_H_$(3)) \ - $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_STDLIB_$(4)) \ - $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_EXTRALIB_$(4)) + $$(TSREQ$(1)_T_$(4)_H_$(3)) \ + $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_STDLIB_$(4)) \ + $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_EXTRALIB_$(4)) \ + | $$(TBIN$(1)_T_$(4)_H_$(3))/ @$$(call E, compile_and_link: $$@) $$(STAGE$(1)_T_$(4)_H_$(3)) -o $$@ $$< $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTPKG_$(4)): \ - $$(RUSTPKG_LIB) $$(RUSTPKG_INPUTS) \ - $$(TSREQ$(1)_T_$(4)_H_$(3)) \ + $$(RUSTPKG_LIB) $$(RUSTPKG_INPUTS) \ + $$(TSREQ$(1)_T_$(4)_H_$(3)) \ $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_STDLIB_$(4)) \ $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_EXTRALIB_$(4)) \ - $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTC_$(4)) + $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTC_$(4)) \ + | $$(TLIB$(1)_T_$(4)_H_$(3))/ @$$(call E, compile_and_link: $$@) + $$(call REMOVE_ALL_OLD_GLOB_MATCHES_EXCEPT, `dirname $$@`, $(LIBRUSTPKG_GLOB_$(4)), `basename $$@`) $$(STAGE$(1)_T_$(4)_H_$(3)) $$(WFLAGS_ST$(1)) -o $$@ $$< && touch $$@ + $$(call LIST_ALL_OLD_GLOB_MATCHES_EXCEPT, `dirname $$@`, $(LIBRUSTPKG_GLOB_$(4)), `basename $$@`) $$(TBIN$(1)_T_$(4)_H_$(3))/rustpkg$$(X_$(4)): \ - $$(DRIVER_CRATE) \ - $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTPKG_$(4)) + $$(DRIVER_CRATE) \ + $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTPKG_$(4)) \ + | $$(TBIN$(1)_T_$(4)_H_$(3))/ @$$(call E, compile_and_link: $$@) $$(STAGE$(1)_T_$(4)_H_$(3)) --cfg rustpkg -o $$@ $$< $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTDOC_$(4)): \ - $$(RUSTDOC_LIB) $$(RUSTDOC_INPUTS) \ - $$(TSREQ$(1)_T_$(4)_H_$(3)) \ + $$(RUSTDOC_LIB) $$(RUSTDOC_INPUTS) \ + $$(TSREQ$(1)_T_$(4)_H_$(3)) \ $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_STDLIB_$(4)) \ $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_EXTRALIB_$(4)) \ - $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTC_$(4)) + $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTC_$(4)) \ + | $$(TLIB$(1)_T_$(4)_H_$(3))/ @$$(call E, compile_and_link: $$@) + $$(call REMOVE_ALL_OLD_GLOB_MATCHES_EXCEPT, `dirname $$@`, $(LIBRUSTDOC_GLOB_$(4)), `basename $$@`) $$(STAGE$(1)_T_$(4)_H_$(3)) -o $$@ $$< && touch $$@ + $$(call LIST_ALL_OLD_GLOB_MATCHES_EXCEPT, `dirname $$@`, $(LIBRUSTDOC_GLOB_$(4)), `basename $$@`) -$$(TBIN$(1)_T_$(4)_H_$(3))/rustdoc$$(X_$(4)): \ - $$(DRIVER_CRATE) \ - $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTDOC_$(4)) +$$(TBIN$(1)_T_$(4)_H_$(3))/rustdoc$$(X_$(4)): \ + $$(DRIVER_CRATE) \ + $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTDOC_$(4)) \ + | $$(TBIN$(1)_T_$(4)_H_$(3))/ @$$(call E, compile_and_link: $$@) $$(STAGE$(1)_T_$(4)_H_$(3)) --cfg rustdoc -o $$@ $$< $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTI_$(4)): \ $$(RUSTI_LIB) $$(RUSTI_INPUTS) \ - $$(TSREQ$(1)_T_$(4)_H_$(3)) \ + $$(TSREQ$(1)_T_$(4)_H_$(3)) \ $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_STDLIB_$(4)) \ $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_EXTRALIB_$(4)) \ - $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTC_$(4)) + $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTC_$(4)) \ + | $$(TLIB$(1)_T_$(4)_H_$(3))/ @$$(call E, compile_and_link: $$@) + $$(call REMOVE_ALL_OLD_GLOB_MATCHES_EXCEPT, `dirname $$@`, $(LIBRUSTI_GLOB_$(4)), `basename $$@`) $$(STAGE$(1)_T_$(4)_H_$(3)) -o $$@ $$< && touch $$@ + $$(call LIST_ALL_OLD_GLOB_MATCHES_EXCEPT, `dirname $$@`, $(LIBRUSTI_GLOB_$(4)), `basename $$@`) $$(TBIN$(1)_T_$(4)_H_$(3))/rusti$$(X_$(4)): \ - $$(DRIVER_CRATE) \ - $$(TLIB$(1)_T_$(4)_H_$(4))/$(CFG_LIBRUSTI_$(4)) + $$(DRIVER_CRATE) \ + $$(TLIB$(1)_T_$(4)_H_$(4))/$(CFG_LIBRUSTI_$(4)) \ + | $$(TBIN$(1)_T_$(4)_H_$(3))/ @$$(call E, compile_and_link: $$@) $$(STAGE$(1)_T_$(4)_H_$(3)) --cfg rusti -o $$@ $$< -$$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUST_$(4)): \ - $$(RUST_LIB) $$(RUST_INPUTS) \ - $$(TSREQ$(1)_T_$(4)_H_$(3)) \ - $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_STDLIB_$(4)) \ - $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_EXTRALIB_$(4)) \ +$$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUST_$(4)): \ + $$(RUST_LIB) $$(RUST_INPUTS) \ + $$(TSREQ$(1)_T_$(4)_H_$(3)) \ + $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_STDLIB_$(4)) \ + $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_EXTRALIB_$(4)) \ $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTPKG_$(4)) \ $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTI_$(4)) \ $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTDOC_$(4)) \ - $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTC_$(4)) + $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTC_$(4)) \ + | $$(TLIB$(1)_T_$(4)_H_$(3))/ @$$(call E, compile_and_link: $$@) + $$(call REMOVE_ALL_OLD_GLOB_MATCHES_EXCEPT, `dirname $$@`, $(LIBRUST_GLOB_$(4)), `basename $$@`) $$(STAGE$(1)_T_$(4)_H_$(3)) -o $$@ $$< && touch $$@ + $$(call LIST_ALL_OLD_GLOB_MATCHES_EXCEPT, `dirname $$@`, $(LIBRUST_GLOB_$(4)), `basename $$@`) $$(TBIN$(1)_T_$(4)_H_$(3))/rust$$(X_$(4)): \ - $$(DRIVER_CRATE) \ - $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUST_$(4)) + $$(DRIVER_CRATE) \ + $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUST_$(4)) \ + | $$(TBIN$(1)_T_$(4)_H_$(3))/ @$$(call E, compile_and_link: $$@) $$(STAGE$(1)_T_$(4)_H_$(3)) --cfg rust -o $$@ $$< @@ -112,7 +129,8 @@ define TOOLS_STAGE_N_HOST $$(HBIN$(2)_H_$(4))/compiletest$$(X_$(4)): \ $$(TBIN$(1)_T_$(4)_H_$(3))/compiletest$$(X_$(4)) \ - $$(HSREQ$(2)_H_$(4)) + $$(HSREQ$(2)_H_$(4)) \ + | $$(HBIN$(2)_H_$(4))/ @$$(call E, cp: $$@) $$(Q)cp $$< $$@ @@ -120,9 +138,12 @@ $$(HBIN$(2)_H_$(4))/compiletest$$(X_$(4)): \ $$(HLIB$(2)_H_$(4))/$(CFG_LIBRUSTPKG_$(4)): \ $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTPKG_$(4)) \ $$(HLIB$(2)_H_$(4))/$(CFG_LIBRUSTC_$(4)) \ - $$(HSREQ$(2)_H_$(4)) + $$(HSREQ$(2)_H_$(4)) \ + | $$(HLIB$(2)_H_$(4))/ @$$(call E, cp: $$@) + $$(call REMOVE_ALL_OLD_GLOB_MATCHES_EXCEPT, `dirname $$@`, $(LIBRUSTPKG_GLOB_$(4)), `basename $$@`) $$(Q)cp $$< $$@ + $$(call LIST_ALL_OLD_GLOB_MATCHES_EXCEPT, `dirname $$@`, $(LIBRUSTPKG_GLOB_$(4)), `basename $$@`) $$(Q)cp -R $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBRUSTPKG_GLOB_$(4)) \ $$(wildcard $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBRUSTPKG_DSYM_GLOB_$(4))) \ $$(HLIB$(2)_H_$(4)) @@ -130,16 +151,20 @@ $$(HLIB$(2)_H_$(4))/$(CFG_LIBRUSTPKG_$(4)): \ $$(HBIN$(2)_H_$(4))/rustpkg$$(X_$(4)): \ $$(TBIN$(1)_T_$(4)_H_$(3))/rustpkg$$(X_$(4)) \ $$(HLIB$(2)_H_$(4))/$(CFG_LIBRUSTPKG_$(4)) \ - $$(HSREQ$(2)_H_$(4)) + $$(HSREQ$(2)_H_$(4)) \ + | $$(HBIN$(2)_H_$(4))/ @$$(call E, cp: $$@) $$(Q)cp $$< $$@ -$$(HLIB$(2)_H_$(4))/$(CFG_LIBRUSTDOC_$(4)): \ +$$(HLIB$(2)_H_$(4))/$(CFG_LIBRUSTDOC_$(4)): \ $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTDOC_$(4)) \ - $$(HLIB$(2)_H_$(4))/$(CFG_LIBRUSTC_$(4)) \ - $$(HSREQ$(2)_H_$(4)) + $$(HLIB$(2)_H_$(4))/$(CFG_LIBRUSTC_$(4)) \ + $$(HSREQ$(2)_H_$(4)) \ + | $$(HLIB$(2)_H_$(4))/ @$$(call E, cp: $$@) + $$(call REMOVE_ALL_OLD_GLOB_MATCHES_EXCEPT, `dirname $$@`, $(LIBRUSTDOC_GLOB_$(4)), `basename $$@`) $$(Q)cp $$< $$@ + $$(call LIST_ALL_OLD_GLOB_MATCHES_EXCEPT, `dirname $$@`, $(LIBRUSTDOC_GLOB_$(4)), `basename $$@`) $$(Q)cp -R $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBRUSTDOC_GLOB_$(4)) \ $$(wildcard $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBRUSTDOC_DSYM_GLOB_$(4))) \ $$(HLIB$(2)_H_$(4)) @@ -147,16 +172,20 @@ $$(HLIB$(2)_H_$(4))/$(CFG_LIBRUSTDOC_$(4)): \ $$(HBIN$(2)_H_$(4))/rustdoc$$(X_$(4)): \ $$(TBIN$(1)_T_$(4)_H_$(3))/rustdoc$$(X_$(4)) \ $$(HLIB$(2)_H_$(4))/$(CFG_LIBRUSTDOC_$(4)) \ - $$(HSREQ$(2)_H_$(4)) + $$(HSREQ$(2)_H_$(4)) \ + | $$(HBIN$(2)_H_$(4))/ @$$(call E, cp: $$@) $$(Q)cp $$< $$@ -$$(HLIB$(2)_H_$(4))/$(CFG_LIBRUSTI_$(4)): \ +$$(HLIB$(2)_H_$(4))/$(CFG_LIBRUSTI_$(4)): \ $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTI_$(4)) \ - $$(HLIB$(2)_H_$(4))/$(CFG_LIBRUSTC_$(4)) \ - $$(HSREQ$(2)_H_$(4)) + $$(HLIB$(2)_H_$(4))/$(CFG_LIBRUSTC_$(4)) \ + $$(HSREQ$(2)_H_$(4)) \ + | $$(HLIB$(2)_H_$(4))/ @$$(call E, cp: $$@) + $$(call REMOVE_ALL_OLD_GLOB_MATCHES_EXCEPT, `dirname $$@`, $(LIBRUSTI_GLOB_$(4)), `basename $$@`) $$(Q)cp $$< $$@ + $$(call LIST_ALL_OLD_GLOB_MATCHES_EXCEPT, `dirname $$@`, $(LIBRUSTI_GLOB_$(4)), `basename $$@`) $$(Q)cp -R $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBRUSTI_GLOB_$(4)) \ $$(wildcard $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBRUSTI_DSYM_GLOB_$(4))) \ $$(HLIB$(2)_H_$(4)) @@ -164,24 +193,29 @@ $$(HLIB$(2)_H_$(4))/$(CFG_LIBRUSTI_$(4)): \ $$(HBIN$(2)_H_$(4))/rusti$$(X_$(4)): \ $$(TBIN$(1)_T_$(4)_H_$(3))/rusti$$(X_$(4)) \ $$(HLIB$(2)_H_$(4))/$(CFG_LIBRUSTI_$(4)) \ - $$(HSREQ$(2)_H_$(4)) + $$(HSREQ$(2)_H_$(4)) \ + | $$(HBIN$(2)_H_$(4))/ @$$(call E, cp: $$@) $$(Q)cp $$< $$@ -$$(HLIB$(2)_H_$(4))/$(CFG_LIBRUST_$(4)): \ +$$(HLIB$(2)_H_$(4))/$(CFG_LIBRUST_$(4)): \ $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUST_$(4)) \ - $$(HLIB$(2)_H_$(4))/$(CFG_LIBRUSTC_$(4)) \ - $$(HSREQ$(2)_H_$(4)) + $$(HLIB$(2)_H_$(4))/$(CFG_LIBRUSTC_$(4)) \ + $$(HSREQ$(2)_H_$(4)) \ + | $$(HLIB$(2)_H_$(4))/ @$$(call E, cp: $$@) + $$(call REMOVE_ALL_OLD_GLOB_MATCHES_EXCEPT, `dirname $$@`, $(LIBRUST_GLOB_$(4)), `basename $$@`) $$(Q)cp $$< $$@ + $$(call LIST_ALL_OLD_GLOB_MATCHES_EXCEPT, `dirname $$@`, $(LIBRUST_GLOB_$(4)), `basename $$@`) $$(Q)cp -R $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBRUST_GLOB_$(4)) \ $$(wildcard $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBRUST_DSYM_GLOB)_$(4)) \ $$(HLIB$(2)_H_$(4)) $$(HBIN$(2)_H_$(4))/rust$$(X_$(4)): \ $$(TBIN$(1)_T_$(4)_H_$(3))/rust$$(X_$(4)) \ - $$(HLIB$(2)_H_$(4))/$(CFG_LIBRUST_$(4)) \ - $$(HSREQ$(2)_H_$(4)) + $$(HLIB$(2)_H_$(4))/$(CFG_LIBRUST_$(4)) \ + $$(HSREQ$(2)_H_$(4)) \ + | $$(HBIN$(2)_H_$(4))/ @$$(call E, cp: $$@) $$(Q)cp $$< $$@