diff --git a/Makefile.in b/Makefile.in index 4192d15d1f6..c9d961ead38 100644 --- a/Makefile.in +++ b/Makefile.in @@ -50,7 +50,7 @@ CFG_STDLIB :=$(call CFG_LIB_NAME,std) # version-string calculation CFG_GIT_DIR := $(CFG_SRC_DIR).git -CFG_VERSION := prerelease +CFG_VERSION = prerelease ifneq ($(wildcard $(CFG_GIT)),) ifneq ($(wildcard $(CFG_GIT_DIR)),) CFG_VERSION += $(shell git --git-dir=$(CFG_GIT_DIR) log -1 \ @@ -233,7 +233,7 @@ config.mk: $(S)configure $(S)Makefile.in $(S)src/snapshots.txt ###################################################################### -# Additional makefiles +# Primary-target makefiles ###################################################################### include $(CFG_SRC_DIR)/mk/intrinsics.mk @@ -243,11 +243,38 @@ include $(CFG_SRC_DIR)/mk/stage2.mk include $(CFG_SRC_DIR)/mk/stage3.mk include $(CFG_SRC_DIR)/mk/rt.mk include $(CFG_SRC_DIR)/mk/rustllvm.mk -include $(CFG_SRC_DIR)/mk/docs.mk -include $(CFG_SRC_DIR)/mk/tests.mk -include $(CFG_SRC_DIR)/mk/dist.mk -include $(CFG_SRC_DIR)/mk/snap.mk -include $(CFG_SRC_DIR)/mk/clean.mk include $(CFG_SRC_DIR)/mk/autodep.mk include $(CFG_SRC_DIR)/mk/fuzzer.mk -include $(CFG_SRC_DIR)/mk/pp.mk +include $(CFG_SRC_DIR)/mk/docs.mk + + +###################################################################### +# Secondary makefiles, conditionalized for speed +###################################################################### + +ifneq ($(findstring dist,$(MAKECMDGOALS)),) + include $(CFG_SRC_DIR)/mk/dist.mk +endif + +ifneq ($(findstring snap,$(MAKECMDGOALS)),) + include $(CFG_SRC_DIR)/mk/snap.mk +endif + +ifneq ($(findstring reformat,$(MAKECMDGOALS)),) + include $(CFG_SRC_DIR)/mk/pp.mk +endif + +ifneq ($(findstring check,$(MAKECMDGOALS)),) + include $(CFG_SRC_DIR)/mk/tests.mk +else + ifneq ($(findstring test,$(MAKECMDGOALS)),) + include $(CFG_SRC_DIR)/mk/tests.mk + endif +endif + +ifneq ($(findstring clean,$(MAKECMDGOALS)),) + include $(CFG_SRC_DIR)/mk/dist.mk + include $(CFG_SRC_DIR)/mk/snap.mk + include $(CFG_SRC_DIR)/mk/tests.mk + include $(CFG_SRC_DIR)/mk/clean.mk +endif \ No newline at end of file diff --git a/mk/clean.mk b/mk/clean.mk index 13240ed8184..1ed29ae90b1 100644 --- a/mk/clean.mk +++ b/mk/clean.mk @@ -4,15 +4,6 @@ .PHONY: clean -tidy: - @$(call E, check: formatting) - $(Q)echo \ - $(filter-out $(GENERATED) $(addprefix $(S)src/, $(GENERATED)) \ - $(addprefix $(S)src/, $(RUSTLLVM_LIB_CS) $(RUSTLLVM_OBJS_CS) \ - $(RUSTLLVM_HDR) $(PKG_3RDPARTY)) \ - $(S)src/etc/%, $(PKG_FILES)) \ - | xargs -n 10 python $(S)src/etc/tidy.py - clean: @$(call E, cleaning) $(Q)rm -f $(RUNTIME_OBJS) $(RUNTIME_DEF) diff --git a/mk/docs.mk b/mk/docs.mk index ee9f4b69d9a..7f6d408acbd 100644 --- a/mk/docs.mk +++ b/mk/docs.mk @@ -3,15 +3,19 @@ ###################################################################### doc/version.texi: $(MKFILES) rust.texi - echo "@macro gitversion" >$@ - echo "$(CFG_VERSION)" >>$@ - echo "@end macro" >>$@ + @$(call E, version-stamp: $@) + $(Q)echo "@macro gitversion" >$@ + $(Q)echo "$(CFG_VERSION)" >>$@ + $(Q)echo "@end macro" >>$@ doc/%.pdf: %.texi doc/version.texi - texi2pdf --batch -I doc -o $@ --clean $< + @$(call E, texi2pdf: $@) + $(Q)texi2pdf --batch -I doc -o $@ --clean $< doc/%.html: %.texi doc/version.texi - makeinfo -I doc --html --ifhtml --force --no-split --output=$@ $< + @$(call E, makeinfo: $@) + $(Q)makeinfo -I doc --html --ifhtml --force --no-split --output=$@ $< docsnap: doc/rust.pdf - mv $< doc/rust-$(shell date +"%Y-%m-%d")-snap.pdf + @$(call E, snap: doc/rust-$(shell date +"%Y-%m-%d")-snap.pdf) + $(Q)mv $< doc/rust-$(shell date +"%Y-%m-%d")-snap.pdf diff --git a/mk/pp.mk b/mk/pp.mk index a6ecf7fa598..1e9fc5b6840 100644 --- a/mk/pp.mk +++ b/mk/pp.mk @@ -1,8 +1,8 @@ -PP_INPUTS := $(wildcard $(addprefix $(S)src/lib/,*.rs */*.rs)) \ - $(wildcard $(addprefix $(S)src/comp/,*.rs */*.rs */*/*.rs)) \ - $(wildcard $(S)src/test/*/*.rs \ - $(S)src/test/*/*/*.rs) +PP_INPUTS = $(wildcard $(addprefix $(S)src/lib/,*.rs */*.rs)) \ + $(wildcard $(addprefix $(S)src/comp/,*.rs */*.rs */*/*.rs)) \ + $(wildcard $(S)src/test/*/*.rs \ + $(S)src/test/*/*/*.rs) PP_INPUTS_FILTERED = $(shell echo $(PP_INPUTS) | xargs grep -L no-reformat) diff --git a/mk/rt.mk b/mk/rt.mk index b6a3b882164..d25c866ec16 100644 --- a/mk/rt.mk +++ b/mk/rt.mk @@ -81,10 +81,12 @@ rt/%.o: rt/%.s $(MKFILES) ifdef CFG_WINDOWSY rt/main.ll: rt/main.ll.in - sed 's/MAIN/WinMain@16/' < $^ > $@ + @$(call E, sed: $@) + $(Q)sed 's/MAIN/WinMain@16/' < $^ > $@ else rt/main.ll: rt/main.ll.in - sed 's/MAIN/main/' < $^ > $@ + @$(call E, sed: $@) + $(Q)sed 's/MAIN/main/' < $^ > $@ endif rt/%.o: rt/%.ll $(MKFILES) diff --git a/mk/rustllvm.mk b/mk/rustllvm.mk index 7d09bf16723..d2ff5e8347a 100644 --- a/mk/rustllvm.mk +++ b/mk/rustllvm.mk @@ -20,8 +20,9 @@ RUSTLLVM_OBJS_OBJS := $(RUSTLLVM_OBJS_CS:.cpp=.o) # versions of LLVM. In newer versions some of the bits of this library are # already in LLVM itself, so they are skipped. rustllvm/rustllvmbits.a: $(RUSTLLVM_LIB_OBJS) - rm -f $@ - ar crs $@ $^ + @$(call E, archive: $@) + $(Q)rm -f $@ + $(Q)ar crs $@ $^ # Note: We pass $(CFG_LLVM_LIBS) twice to fix the windows link since # it has no -whole-archive. diff --git a/mk/tests.mk b/mk/tests.mk index e2da56970cc..6be52f8e831 100644 --- a/mk/tests.mk +++ b/mk/tests.mk @@ -6,9 +6,11 @@ ALL_TEST_INPUTS = $(wildcard $(S)src/test/*/*.rs \ $(S)src/test/*/*/*.rs \ $(S)src/test/*/*.rc) -TEST_XFAILS_STAGE0 = $(shell grep -l xfail-stage0 $(ALL_TEST_INPUTS)) -TEST_XFAILS_STAGE1 = $(shell grep -l xfail-stage1 $(ALL_TEST_INPUTS)) -TEST_XFAILS_STAGE2 = $(shell grep -l xfail-stage2 $(ALL_TEST_INPUTS)) +ifneq ($(findstring check,$(MAKECMDGOALS)),) +XFAIL_INPUTS := $(shell grep -l xfail $(ALL_TEST_INPUTS)) +TEST_XFAILS_STAGE0 := $(shell grep -l xfail-stage0 $(XFAIL_INPUTS)) +TEST_XFAILS_STAGE1 := $(shell grep -l xfail-stage1 $(XFAIL_INPUTS)) +TEST_XFAILS_STAGE2 := $(shell grep -l xfail-stage2 $(XFAIL_INPUTS)) ifdef MINGW_CROSS TEST_XFAILS_STAGE0 += $(S)src/test/run-pass/native-mod.rc @@ -20,101 +22,103 @@ TEST_XFAILS_STAGE0 += $(S)src/test/run-pass/native-mod.rc TEST_XFAILS_STAGE1 += $(S)src/test/run-pass/native-mod.rc TEST_XFAILS_STAGE2 += $(S)src/test/run-pass/native-mod.rc endif - -BENCH_RS = $(wildcard $(S)src/test/bench/shootout/*.rs) \ - $(wildcard $(S)src/test/bench/99-bottles/*.rs) -RPASS_RC = $(wildcard $(S)src/test/run-pass/*.rc) -RPASS_RS = $(wildcard $(S)src/test/run-pass/*.rs) $(BENCH_RS) -RFAIL_RC = $(wildcard $(S)src/test/run-fail/*.rc) -RFAIL_RS = $(wildcard $(S)src/test/run-fail/*.rs) -CFAIL_RC = $(wildcard $(S)src/test/compile-fail/*.rc) -CFAIL_RS = $(wildcard $(S)src/test/compile-fail/*.rs) - -ifdef CHECK_XFAILS -TEST_RPASS_CRATES_STAGE0 = $(filter $(TEST_XFAILS_STAGE0), $(RPASS_RC)) -TEST_RPASS_CRATES_STAGE1 = $(filter $(TEST_XFAILS_STAGE1), $(RPASS_RC)) -TEST_RPASS_CRATES_STAGE2 = $(filter $(TEST_XFAILS_STAGE2), $(RPASS_RC)) -TEST_RPASS_SOURCES_STAGE0 = $(filter $(TEST_XFAILS_STAGE0), $(RPASS_RS)) -TEST_RPASS_SOURCES_STAGE1 = $(filter $(TEST_XFAILS_STAGE1), $(RPASS_RS)) -TEST_RPASS_SOURCES_STAGE2 = $(filter $(TEST_XFAILS_STAGE2), $(RPASS_RS)) -else -TEST_RPASS_CRATES_STAGE0 = $(filter-out $(TEST_XFAILS_STAGE0), $(RPASS_RC)) -TEST_RPASS_CRATES_STAGE1 = $(filter-out $(TEST_XFAILS_STAGE1), $(RPASS_RC)) -TEST_RPASS_CRATES_STAGE1 = $(filter-out $(TEST_XFAILS_STAGE2), $(RPASS_RC)) -TEST_RPASS_SOURCES_STAGE0 = $(filter-out $(TEST_XFAILS_STAGE0), $(RPASS_RS)) -TEST_RPASS_SOURCES_STAGE1 = $(filter-out $(TEST_XFAILS_STAGE1), $(RPASS_RS)) -TEST_RPASS_SOURCES_STAGE2 = $(filter-out $(TEST_XFAILS_STAGE2), $(RPASS_RS)) endif -TEST_RPASS_EXES_STAGE0 = \ + +BENCH_RS := $(wildcard $(S)src/test/bench/shootout/*.rs) \ + $(wildcard $(S)src/test/bench/99-bottles/*.rs) +RPASS_RC := $(wildcard $(S)src/test/run-pass/*.rc) +RPASS_RS := $(wildcard $(S)src/test/run-pass/*.rs) $(BENCH_RS) +RFAIL_RC := $(wildcard $(S)src/test/run-fail/*.rc) +RFAIL_RS := $(wildcard $(S)src/test/run-fail/*.rs) +CFAIL_RC := $(wildcard $(S)src/test/compile-fail/*.rc) +CFAIL_RS := $(wildcard $(S)src/test/compile-fail/*.rs) + +ifdef CHECK_XFAILS +TEST_RPASS_CRATES_STAGE0 := $(filter $(TEST_XFAILS_STAGE0), $(RPASS_RC)) +TEST_RPASS_CRATES_STAGE1 := $(filter $(TEST_XFAILS_STAGE1), $(RPASS_RC)) +TEST_RPASS_CRATES_STAGE2 := $(filter $(TEST_XFAILS_STAGE2), $(RPASS_RC)) +TEST_RPASS_SOURCES_STAGE0 := $(filter $(TEST_XFAILS_STAGE0), $(RPASS_RS)) +TEST_RPASS_SOURCES_STAGE1 := $(filter $(TEST_XFAILS_STAGE1), $(RPASS_RS)) +TEST_RPASS_SOURCES_STAGE2 := $(filter $(TEST_XFAILS_STAGE2), $(RPASS_RS)) +else +TEST_RPASS_CRATES_STAGE0 := $(filter-out $(TEST_XFAILS_STAGE0), $(RPASS_RC)) +TEST_RPASS_CRATES_STAGE1 := $(filter-out $(TEST_XFAILS_STAGE1), $(RPASS_RC)) +TEST_RPASS_CRATES_STAGE1 := $(filter-out $(TEST_XFAILS_STAGE2), $(RPASS_RC)) +TEST_RPASS_SOURCES_STAGE0 := $(filter-out $(TEST_XFAILS_STAGE0), $(RPASS_RS)) +TEST_RPASS_SOURCES_STAGE1 := $(filter-out $(TEST_XFAILS_STAGE1), $(RPASS_RS)) +TEST_RPASS_SOURCES_STAGE2 := $(filter-out $(TEST_XFAILS_STAGE2), $(RPASS_RS)) +endif + +TEST_RPASS_EXES_STAGE0 := \ $(subst $(S)src/,,$(TEST_RPASS_CRATES_STAGE0:.rc=.stage0$(X))) \ $(subst $(S)src/,,$(TEST_RPASS_SOURCES_STAGE0:.rs=.stage0$(X))) -TEST_RPASS_EXES_STAGE1 = \ +TEST_RPASS_EXES_STAGE1 := \ $(subst $(S)src/,,$(TEST_RPASS_CRATES_STAGE1:.rc=.stage1$(X))) \ $(subst $(S)src/,,$(TEST_RPASS_SOURCES_STAGE1:.rs=.stage1$(X))) -TEST_RPASS_EXES_STAGE2 = \ +TEST_RPASS_EXES_STAGE2 := \ $(subst $(S)src/,,$(TEST_RPASS_CRATES_STAGE1:.rc=.stage2$(X))) \ $(subst $(S)src/,,$(TEST_RPASS_SOURCES_STAGE1:.rs=.stage2$(X))) -TEST_RPASS_OUTS_STAGE0 = \ +TEST_RPASS_OUTS_STAGE0 := \ $(TEST_RPASS_EXES_STAGE0:.stage0$(X)=.stage0.out) -TEST_RPASS_OUTS_STAGE1 = \ +TEST_RPASS_OUTS_STAGE1 := \ $(TEST_RPASS_EXES_STAGE1:.stage1$(X)=.stage1.out) -TEST_RPASS_OUTS_STAGE2 = \ +TEST_RPASS_OUTS_STAGE2 := \ $(TEST_RPASS_EXES_STAGE2:.stage2$(X)=.stage2.out) -TEST_RPASS_TMPS_STAGE0 = \ +TEST_RPASS_TMPS_STAGE0 := \ $(TEST_RPASS_EXES_STAGE0:.stage0$(X)=.stage0$(X).tmp) -TEST_RPASS_TMPS_STAGE1 = \ +TEST_RPASS_TMPS_STAGE1 := \ $(TEST_RPASS_EXES_STAGE1:.stage1$(X)=.stage1$(X).tmp) -TEST_RPASS_TMPS_STAGE2 = \ +TEST_RPASS_TMPS_STAGE2 := \ $(TEST_RPASS_EXES_STAGE2:.stage2$(X)=.stage2$(X).tmp) -TEST_RFAIL_CRATES_STAGE0 = $(filter-out $(TEST_XFAILS_STAGE0), $(RFAIL_RC)) -TEST_RFAIL_CRATES_STAGE1 = $(filter-out $(TEST_XFAILS_STAGE1), $(RFAIL_RC)) -TEST_RFAIL_CRATES_STAGE2 = $(filter-out $(TEST_XFAILS_STAGE2), $(RFAIL_RC)) -TEST_RFAIL_SOURCES_STAGE0 = $(filter-out $(TEST_XFAILS_STAGE0), $(RFAIL_RS)) -TEST_RFAIL_SOURCES_STAGE1 = $(filter-out $(TEST_XFAILS_STAGE1), $(RFAIL_RS)) -TEST_RFAIL_SOURCES_STAGE2 = $(filter-out $(TEST_XFAILS_STAGE2), $(RFAIL_RS)) +TEST_RFAIL_CRATES_STAGE0 := $(filter-out $(TEST_XFAILS_STAGE0), $(RFAIL_RC)) +TEST_RFAIL_CRATES_STAGE1 := $(filter-out $(TEST_XFAILS_STAGE1), $(RFAIL_RC)) +TEST_RFAIL_CRATES_STAGE2 := $(filter-out $(TEST_XFAILS_STAGE2), $(RFAIL_RC)) +TEST_RFAIL_SOURCES_STAGE0 := $(filter-out $(TEST_XFAILS_STAGE0), $(RFAIL_RS)) +TEST_RFAIL_SOURCES_STAGE1 := $(filter-out $(TEST_XFAILS_STAGE1), $(RFAIL_RS)) +TEST_RFAIL_SOURCES_STAGE2 := $(filter-out $(TEST_XFAILS_STAGE2), $(RFAIL_RS)) -TEST_RFAIL_EXES_STAGE0 = \ +TEST_RFAIL_EXES_STAGE0 := \ $(subst $(S)src/,,$(TEST_RFAIL_CRATES_STAGE0:.rc=.stage0$(X))) \ $(subst $(S)src/,,$(TEST_RFAIL_SOURCES_STAGE0:.rs=.stage0$(X))) -TEST_RFAIL_EXES_STAGE1 = \ +TEST_RFAIL_EXES_STAGE1 := \ $(subst $(S)src/,,$(TEST_RFAIL_CRATES_STAGE1:.rc=.stage1$(X))) \ $(subst $(S)src/,,$(TEST_RFAIL_SOURCES_STAGE1:.rs=.stage1$(X))) -TEST_RFAIL_EXES_STAGE2 = \ +TEST_RFAIL_EXES_STAGE2 := \ $(subst $(S)src/,,$(TEST_RFAIL_CRATES_STAGE2:.rc=.stage2$(X))) \ $(subst $(S)src/,,$(TEST_RFAIL_SOURCES_STAGE2:.rs=.stage2$(X))) -TEST_RFAIL_OUTS_STAGE0 = \ +TEST_RFAIL_OUTS_STAGE0 := \ $(TEST_RFAIL_EXES_STAGE0:.stage0$(X)=.stage0.out) -TEST_RFAIL_OUTS_STAGE1 = \ +TEST_RFAIL_OUTS_STAGE1 := \ $(TEST_RFAIL_EXES_STAGE1:.stage1$(X)=.stage1.out) -TEST_RFAIL_OUTS_STAGE2 = \ +TEST_RFAIL_OUTS_STAGE2 := \ $(TEST_RFAIL_EXES_STAGE2:.stage2$(X)=.stage2.out) -TEST_CFAIL_CRATES_STAGE0 = $(filter-out $(TEST_XFAILS_STAGE0), $(CFAIL_RC)) -TEST_CFAIL_CRATES_STAGE1 = $(filter-out $(TEST_XFAILS_STAGE1), $(CFAIL_RC)) -TEST_CFAIL_CRATES_STAGE2 = $(filter-out $(TEST_XFAILS_STAGE2), $(CFAIL_RC)) -TEST_CFAIL_SOURCES_STAGE0 = $(filter-out $(TEST_XFAILS_STAGE0), $(CFAIL_RS)) -TEST_CFAIL_SOURCES_STAGE1 = $(filter-out $(TEST_XFAILS_STAGE1), $(CFAIL_RS)) -TEST_CFAIL_SOURCES_STAGE2 = $(filter-out $(TEST_XFAILS_STAGE2), $(CFAIL_RS)) +TEST_CFAIL_CRATES_STAGE0 := $(filter-out $(TEST_XFAILS_STAGE0), $(CFAIL_RC)) +TEST_CFAIL_CRATES_STAGE1 := $(filter-out $(TEST_XFAILS_STAGE1), $(CFAIL_RC)) +TEST_CFAIL_CRATES_STAGE2 := $(filter-out $(TEST_XFAILS_STAGE2), $(CFAIL_RC)) +TEST_CFAIL_SOURCES_STAGE0 := $(filter-out $(TEST_XFAILS_STAGE0), $(CFAIL_RS)) +TEST_CFAIL_SOURCES_STAGE1 := $(filter-out $(TEST_XFAILS_STAGE1), $(CFAIL_RS)) +TEST_CFAIL_SOURCES_STAGE2 := $(filter-out $(TEST_XFAILS_STAGE2), $(CFAIL_RS)) -TEST_CFAIL_OUTS_STAGE0 = \ +TEST_CFAIL_OUTS_STAGE0 := \ $(subst $(S)src/,,$(TEST_CFAIL_CRATES_STAGE0:.rc=.stage0.out)) \ $(subst $(S)src/,,$(TEST_CFAIL_SOURCES_STAGE0:.rs=.stage0.out)) -TEST_CFAIL_OUTS_STAGE1 = \ +TEST_CFAIL_OUTS_STAGE1 := \ $(subst $(S)src/,,$(TEST_CFAIL_CRATES_STAGE1:.rc=.stage1.out)) \ $(subst $(S)src/,,$(TEST_CFAIL_SOURCES_STAGE1:.rs=.stage1.out)) -TEST_CFAIL_OUTS_STAGE2 = \ +TEST_CFAIL_OUTS_STAGE2 := \ $(subst $(S)src/,,$(TEST_CFAIL_CRATES_STAGE2:.rc=.stage2.out)) \ $(subst $(S)src/,,$(TEST_CFAIL_SOURCES_STAGE2:.rs=.stage2.out)) -ALL_TEST_CRATES = $(TEST_CFAIL_CRATES_STAGE0) \ +ALL_TEST_CRATES := $(TEST_CFAIL_CRATES_STAGE0) \ $(TEST_RFAIL_CRATES_STAGE0) \ $(TEST_RPASS_CRATES_STAGE0) \ $(TEST_CFAIL_CRATES_STAGE1) \ @@ -124,7 +128,7 @@ ALL_TEST_CRATES = $(TEST_CFAIL_CRATES_STAGE0) \ $(TEST_RFAIL_CRATES_STAGE2) \ $(TEST_RPASS_CRATES_STAGE2) -ALL_TEST_SOURCES = $(TEST_CFAIL_SOURCES_STAGE0) \ +ALL_TEST_SOURCES := $(TEST_CFAIL_SOURCES_STAGE0) \ $(TEST_RFAIL_SOURCES_STAGE0) \ $(TEST_RPASS_SOURCES_STAGE0) \ $(TEST_CFAIL_SOURCES_STAGE1) \ @@ -182,6 +186,15 @@ compile-check: tidy \ # Testing rules ###################################################################### +tidy: + @$(call E, check: formatting) + $(Q)echo \ + $(filter-out $(GENERATED) $(addprefix $(S)src/, $(GENERATED)) \ + $(addprefix $(S)src/, $(RUSTLLVM_LIB_CS) $(RUSTLLVM_OBJS_CS) \ + $(RUSTLLVM_HDR) $(PKG_3RDPARTY)) \ + $(S)src/etc/%, $(PKG_FILES)) \ + | xargs -n 10 python $(S)src/etc/tidy.py + %.stage0$(X): %.rs $(SREQ0) @$(call E, compile_and_link: $@) $(STAGE0) -o $@ $<