From 32895ad99013b088b7dee51d173e177536103673 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafael=20=C3=81vila=20de=20Esp=C3=ADndola?= Date: Wed, 15 Jun 2011 19:40:22 -0400 Subject: [PATCH] Switch to using the rustc driver in the bootstrap process. --- Makefile.in | 18 ++++++++++-------- mk/fuzzer.mk | 3 +-- mk/stage1.mk | 41 +++++++++-------------------------------- mk/stage2.mk | 41 +++++++++-------------------------------- mk/stage3.mk | 17 ++++------------- 5 files changed, 33 insertions(+), 87 deletions(-) diff --git a/Makefile.in b/Makefile.in index fb99c546695..9c471ee2aae 100644 --- a/Makefile.in +++ b/Makefile.in @@ -44,7 +44,6 @@ endif CFG_RUNTIME :=$(call CFG_LIB_NAME,rustrt) CFG_RUSTLLVM :=$(call CFG_LIB_NAME,rustllvm) CFG_STDLIB :=$(call CFG_LIB_NAME,std) -CFG_RUSTCLIB :=$(call CFG_LIB_NAME,rustc) # version-string calculation CFG_GIT_DIR := $(CFG_SRC_DIR).git @@ -107,12 +106,15 @@ VPATH := $(S)doc $(S)src # Compilers we build, we now know how to run. STAGE0 := $(Q)$(call CFG_RUN_TARG,stage0,\ - stage0/rustc$(X) $(CFG_RUSTC_FLAGS) -L stage1) -STAGE1 := $(Q)$(call CFG_RUN_TARG,stage1, \ + stage0/rustc$(X) $(CFG_RUSTC_FLAGS) -L stage0) +STAGE1 := $(Q)$(call CFG_RUN_TARG,stage0, \ $(CFG_VALGRIND_COMPILE) stage1/rustc$(X) \ - $(CFG_RUSTC_FLAGS) -L stage2) -STAGE2 := $(Q)$(call CFG_RUN_TARG,stage2, \ + $(CFG_RUSTC_FLAGS) -L stage1) +STAGE2 := $(Q)$(call CFG_RUN_TARG,stage1, \ $(CFG_VALGRIND_COMPILE) stage2/rustc$(X) \ + $(CFG_RUSTC_FLAGS) -L stage2) +STAGE3 := $(Q)$(call CFG_RUN_TARG,stage2, \ + $(CFG_VALGRIND_COMPILE) stage3/rustc$(X) \ $(CFG_RUSTC_FLAGS) -L stage3) # "Source" files we generate in builddir along the way. @@ -146,9 +148,9 @@ COMPILER_INPUTS := $(wildcard $(addprefix $(S)src/comp/, \ ###################################################################### LREQ := rt/$(CFG_RUNTIME) rustllvm/$(CFG_RUSTLLVM) -SREQ0 := stage0/rustc$(X) $(LREQ) rt/main.o stage1/glue.o stage1/$(CFG_STDLIB) -SREQ1 := stage1/rustc$(X) $(LREQ) rt/main.o stage2/glue.o stage2/$(CFG_STDLIB) -SREQ2 := stage2/rustc$(X) $(LREQ) rt/main.o stage3/glue.o stage3/$(CFG_STDLIB) +SREQ0 := stage0/rustc$(X) $(LREQ) rt/main.o stage0/glue.o stage0/$(CFG_STDLIB) +SREQ1 := stage1/rustc$(X) $(LREQ) rt/main.o stage1/glue.o stage1/$(CFG_STDLIB) +SREQ2 := stage2/rustc$(X) $(LREQ) rt/main.o stage2/glue.o stage2/$(CFG_STDLIB) ###################################################################### diff --git a/mk/fuzzer.mk b/mk/fuzzer.mk index 4e477fdc1e9..566d9b0d657 100644 --- a/mk/fuzzer.mk +++ b/mk/fuzzer.mk @@ -5,8 +5,7 @@ FUZZER_CRATE := $(S)src/fuzzer/fuzzer.rc FUZZER_INPUTS := $(wildcard $(addprefix $(S)src/fuzzer/, *.rs)) -stage2/fuzzer.o: $(FUZZER_CRATE) $(FUZZER_INPUTS) $(SREQ1) \ - stage2/$(CFG_RUSTCLIB) +stage2/fuzzer.o: $(FUZZER_CRATE) $(FUZZER_INPUTS) $(SREQ1) @$(call E, compile: $@) $(STAGE1) -c -o $@ $< diff --git a/mk/stage1.mk b/mk/stage1.mk index d3a2ca52853..a481058f481 100644 --- a/mk/stage1.mk +++ b/mk/stage1.mk @@ -1,31 +1,13 @@ -stage1/std.o: $(STDLIB_CRATE) $(STDLIB_INPUTS) \ - stage0/rustc$(X) stage0/$(CFG_STDLIB) stage0/intrinsics.bc \ +stage1/$(CFG_STDLIB): $(STDLIB_CRATE) $(STDLIB_INPUTS) \ + stage1/rustc$(X) stage0/$(CFG_STDLIB) stage1/intrinsics.bc \ $(LREQ) $(MKFILES) - @$(call E, compile: $@) - $(STAGE0) -c --shared -o $@ $< + @$(call E, compile_and_link: $@) + $(STAGE1) --shared -o $@ $< -stage1/$(CFG_STDLIB): stage1/std.o stage1/glue.o - @$(call E, link: $@) - $(Q)gcc $(CFG_GCCISH_CFLAGS) stage1/glue.o $(CFG_GCCISH_LINK_FLAGS) \ - -o $@ $< -Lstage1 -Lrt -lrustrt - -stage1/librustc.o: $(COMPILER_CRATE) $(COMPILER_INPUTS) $(SREQ0) - @$(call E, compile: $@) - $(STAGE0) -c --shared -o $@ $< - -stage1/$(CFG_RUSTCLIB): stage1/librustc.o stage1/glue.o - @$(call E, link: $@) - $(Q)gcc $(CFG_GCCISH_CFLAGS) stage1/glue.o $(CFG_GCCISH_LINK_FLAGS) \ - -o $@ $< -Lstage1 -Lrustllvm -Lrt -lrustrt -lrustllvm -lstd - -stage1/rustc.o: $(COMPILER_CRATE) $(COMPILER_INPUTS) $(SREQ0) - @$(call E, compile: $@) - $(STAGE0) -c -o $@ $< - -stage1/glue.o: stage0/rustc$(X) stage0/$(CFG_STDLIB) stage0/intrinsics.bc \ +stage1/glue.o: stage1/rustc$(X) stage0/$(CFG_STDLIB) stage0/intrinsics.bc \ $(LREQ) $(MKFILES) @$(call E, generate: $@) - $(STAGE0) -c -o $@ --glue + $(STAGE1) -c -o $@ --glue stage1/intrinsics.bc: $(INTRINSICS_BC) @$(call E, cp: $@) @@ -41,11 +23,6 @@ stage1/%.o: stage1/%.s @$(call E, assemble [gcc]: $@) $(Q)gcc $(CFG_GCCISH_CFLAGS) -o $@ -c $< -stage1/%$(X): stage1/%.o $(SREQ0) - @$(call E, link [gcc]: $@) - $(Q)gcc $(CFG_GCCISH_CFLAGS) stage1/glue.o -o $@ $< \ - -Lstage1 -Lrustllvm -Lrt rt/main.o -lrustrt -lrustllvm -lstd -lm - @# dsymutil sometimes fails or prints a warning, but the - @# program still runs. Since it simplifies debugging other - @# programs, I\'ll live with the noise. - -$(Q)$(CFG_DSYMUTIL) $@ +stage1/%$(X): $(COMPILER_CRATE) $(COMPILER_INPUTS) $(SREQ0) + @$(call E, compile_and_link: $@) + $(STAGE0) -o $@ $< diff --git a/mk/stage2.mk b/mk/stage2.mk index a1c8da05ba3..20443142067 100644 --- a/mk/stage2.mk +++ b/mk/stage2.mk @@ -1,31 +1,13 @@ -stage2/std.o: $(STDLIB_CRATE) $(STDLIB_INPUTS) \ - stage1/rustc$(X) stage1/$(CFG_STDLIB) stage1/intrinsics.bc \ +stage2/$(CFG_STDLIB): $(STDLIB_CRATE) $(STDLIB_INPUTS) \ + stage2/rustc$(X) stage1/$(CFG_STDLIB) stage2/intrinsics.bc \ $(LREQ) $(MKFILES) - @$(call E, compile: $@) - $(STAGE1) -c --shared -o $@ $< + @$(call E, compile_and_link: $@) + $(STAGE2) --shared -o $@ $< -stage2/$(CFG_STDLIB): stage2/std.o stage2/glue.o - @$(call E, link: $@) - $(Q)gcc $(CFG_GCCISH_CFLAGS) stage2/glue.o $(CFG_GCCISH_LINK_FLAGS) -o \ - $@ $< -Lstage2 -Lrt -lrustrt - -stage2/librustc.o: $(COMPILER_CRATE) $(COMPILER_INPUTS) $(SREQ1) - @$(call E, compile: $@) - $(STAGE1) -c --shared -o $@ $< - -stage2/$(CFG_RUSTCLIB): stage2/librustc.o stage2/glue.o - @$(call E, link: $@) - $(Q)gcc $(CFG_GCCISH_CFLAGS) stage2/glue.o $(CFG_GCCISH_LINK_FLAGS) \ - -o $@ $< -Lstage2 -Lrustllvm -Lrt -lrustrt -lrustllvm -lstd - -stage2/rustc.o: $(COMPILER_CRATE) $(COMPILER_INPUTS) $(SREQ1) - @$(call E, compile: $@) - $(STAGE1) -c -o $@ $< - -stage2/glue.o: stage1/rustc$(X) stage1/$(CFG_STDLIB) stage1/intrinsics.bc \ +stage2/glue.o: stage2/rustc$(X) stage1/$(CFG_STDLIB) stage1/intrinsics.bc \ rustllvm/$(CFG_RUSTLLVM) rt/$(CFG_RUNTIME) @$(call E, generate: $@) - $(STAGE1) -c -o $@ --glue + $(STAGE2) -c -o $@ --glue stage2/intrinsics.bc: $(INTRINSICS_BC) @$(call E, cp: $@) @@ -41,11 +23,6 @@ stage2/%.o: stage2/%.s @$(call E, assemble [gcc]: $@) $(Q)gcc $(CFG_GCCISH_CFLAGS) -o $@ -c $< -stage2/%$(X): stage2/%.o $(SREQ1) - @$(call E, link [gcc]: $@) - $(Q)gcc $(CFG_GCCISH_CFLAGS) stage2/glue.o -o $@ $< \ - -Lstage2 -Lrustllvm -Lrt rt/main.o -lrustrt -lrustllvm -lstd -lm - @# dsymutil sometimes fails or prints a warning, but the - @# program still runs. Since it simplifies debugging other - @# programs, I\'ll live with the noise. - -$(Q)$(CFG_DSYMUTIL) $@ +stage2/%$(X): $(COMPILER_CRATE) $(COMPILER_INPUTS) $(SREQ1) + @$(call E, compile_and_link: $@) + $(STAGE1) -o $@ $< diff --git a/mk/stage3.mk b/mk/stage3.mk index d8604ed999e..9f7c819ae11 100644 --- a/mk/stage3.mk +++ b/mk/stage3.mk @@ -1,22 +1,13 @@ stage3/$(CFG_STDLIB): $(STDLIB_CRATE) $(STDLIB_INPUTS) \ - stage2/rustc$(X) stage2/$(CFG_STDLIB) stage2/intrinsics.bc \ + stage3/rustc$(X) stage2/$(CFG_STDLIB) stage3/intrinsics.bc \ $(LREQ) $(MKFILES) @$(call E, compile_and_link: $@) - $(STAGE2) --shared -o $@ $< + $(STAGE3) --shared -o $@ $< -stage3/librustc.o: $(COMPILER_CRATE) $(COMPILER_INPUTS) $(SREQ2) - @$(call E, compile: $@) - $(STAGE2) -c --shared -o $@ $< - -stage3/$(CFG_RUSTCLIB): stage2/librustc.o stage2/glue.o - @$(call E, link: $@) - $(Q)gcc $(CFG_GCCISH_CFLAGS) stage2/glue.o $(CFG_GCCISH_LINK_FLAGS) \ - -o $@ $< -Lstage2 -Lrustllvm -Lrt -lrustrt -lrustllvm -lstd - -stage3/glue.o: stage2/rustc$(X) stage2/$(CFG_STDLIB) stage2/intrinsics.bc \ +stage3/glue.o: stage3/rustc$(X) stage2/$(CFG_STDLIB) stage3/intrinsics.bc \ rustllvm/$(CFG_RUSTLLVM) rt/$(CFG_RUNTIME) @$(call E, generate: $@) - $(STAGE2) -c -o $@ --glue + $(STAGE3) -c -o $@ --glue stage3/intrinsics.bc: $(INTRINSICS_BC) @$(call E, cp: $@)