Skip to content

Commit 73ba2dd

Browse files
committed
Shift stages around; stage0/rustc depends on stage0/libstd.so.
1 parent b101e26 commit 73ba2dd

File tree

2 files changed

+68
-49
lines changed

2 files changed

+68
-49
lines changed

Makefile.in

+67-48
Original file line numberDiff line numberDiff line change
@@ -89,8 +89,14 @@ endif
8989

9090
CFG_LDPATH :=$(CFG_BUILD_DIR)/rt
9191
CFG_LDPATH :=$(CFG_LDPATH):$(CFG_BUILD_DIR)/rustllvm
92-
CFG_TESTLIB=$(dir $(firstword $(1))):$(patsubst .%,%,$(suffix $(1)))
93-
CFG_EXE_TESTLIB=$(call CFG_TESTLIB,$(patsubst %.exe,%,$(1)))
92+
CFG_TESTLIB=$(CFG_BUILD_DIR)/$(strip \
93+
$(if $(findstring stage0,$(1)), \
94+
stage1 \
95+
$(if $(findstring stage1,$(1)), \
96+
stage2 \
97+
$(if $(findstring stage2,$(1)),\
98+
stage3 \
99+
))))
94100

95101
ifdef CFG_WINDOWSY
96102
CFG_INFO := $(info cfg: windows-y environment)
@@ -99,7 +105,7 @@ ifdef CFG_WINDOWSY
99105
CFG_LIB_NAME=$(1).dll
100106
CFG_LDPATH :=$(CFG_LDPATH):$(CFG_LLVM_BINDIR)
101107
CFG_LDPATH :=$(CFG_LDPATH):$$PATH
102-
CFG_RUN_TEST=PATH="$(CFG_LDPATH):$(call CFG_EXE_TESTLIB,$(1))" $(1)
108+
CFG_RUN_TEST=PATH="$(CFG_LDPATH):$(call CFG_TESTLIB,$(1))" $(1)
103109
CFG_RUN_TARG=PATH="$(CFG_BUILD_DIR)/$(1):$(CFG_LDPATH)" $(2)
104110

105111
CFG_PATH_MUNGE := $(strip perl -i.bak -p \
@@ -132,7 +138,7 @@ ifdef CFG_UNIXY
132138
CFG_LDPATH :=$(CFG_LDPATH):$(CFG_LLVM_BINDIR)
133139
CFG_LDPATH :=$(CFG_LDPATH):$$PATH
134140
CFG_RUN_TARG=PATH=$(CFG_BUILD_DIR)/$(1):$(CFG_LDPATH) $(2)
135-
CFG_RUN_TEST=PATH=$(CFG_LDPATH):$(call CFG_EXE_TESTLIB,$(1)) $(1)
141+
CFG_RUN_TEST=PATH=$(CFG_LDPATH):$(call CFG_TESTLIB,$(1)) $(1)
136142

137143
CFG_INFO := $(info cfg: mingw-cross)
138144
CFG_GCC_CROSS := i586-mingw32msvc-
@@ -241,13 +247,13 @@ X := $(CFG_EXE_SUFFIX)
241247
VPATH := $(S)doc $(S)src
242248

243249
# Compilers we build, we now know how to run.
244-
BOOT := $(Q)OCAMLRUNPARAM="b1" boot/rustboot$(X) $(CFG_BOOT_FLAGS) -L boot
245-
STAGE0 := $(Q)$(call CFG_RUN_TARG,boot,\
246-
stage0/rustc$(X) $(CFG_RUSTC_FLAGS) -L stage0)
247-
STAGE1 := $(Q)$(call CFG_RUN_TARG,stage0, \
248-
stage1/rustc$(X) $(CFG_RUSTC_FLAGS) -L stage1)
249-
STAGE2 := $(Q)$(call CFG_RUN_TARG,stage1, \
250-
stage2/rustc$(X) $(CFG_RUSTC_FLAGS) -L stage2)
250+
BOOT := $(Q)OCAMLRUNPARAM="b1" boot/rustboot$(X) $(CFG_BOOT_FLAGS) -L stage0
251+
STAGE0 := $(Q)$(call CFG_RUN_TARG,stage0,\
252+
stage0/rustc$(X) $(CFG_RUSTC_FLAGS) -L stage1)
253+
STAGE1 := $(Q)$(call CFG_RUN_TARG,stage1, \
254+
stage1/rustc$(X) $(CFG_RUSTC_FLAGS) -L stage2)
255+
STAGE2 := $(Q)$(call CFG_RUN_TARG,stage2, \
256+
stage2/rustc$(X) $(CFG_RUSTC_FLAGS) -L stage3)
251257

252258
# "Source" files we generate in builddir along the way.
253259
GENERATED := boot/fe/lexer.ml boot/version.ml
@@ -410,25 +416,32 @@ COMPILER_INPUTS := $(wildcard $(addprefix $(S)src/comp/, \
410416
######################################################################
411417

412418
LREQ := rt/$(CFG_RUNTIME) rustllvm/$(CFG_RUSTLLVM)
413-
BREQ := boot/rustboot$(X) boot/$(CFG_STDLIB)
414-
SREQ0 := stage0/rustc$(X) $(LREQ) stage0/glue.o stage0/$(CFG_STDLIB)
415-
SREQ1 := stage1/rustc$(X) $(LREQ) stage1/glue.o stage1/$(CFG_STDLIB)
416-
SREQ2 := stage2/rustc$(X) $(LREQ) stage2/glue.o stage2/$(CFG_STDLIB)
419+
BREQ := boot/rustboot$(X) stage0/$(CFG_STDLIB)
420+
SREQ0 := stage0/rustc$(X) $(LREQ) stage1/glue.o stage1/$(CFG_STDLIB)
421+
SREQ1 := stage1/rustc$(X) $(LREQ) stage2/glue.o stage2/$(CFG_STDLIB)
422+
SREQ2 := stage2/rustc$(X) $(LREQ) stage3/glue.o stage3/$(CFG_STDLIB)
417423

418424

419425
######################################################################
420426
# Single-target rules
421427
######################################################################
422428

423429
all: boot/rustboot$(X) \
424-
boot/$(CFG_STDLIB) \
425430
rt/$(CFG_RUNTIME) \
426431
rustllvm/$(CFG_RUSTLLVM) \
427-
stage0/rustc$(X) \
428-
stage0/glue.o \
429432
stage0/$(CFG_STDLIB) \
433+
stage0/rustc$(X) \
430434
$(GENERATED) \
431-
$(DOCS)
435+
$(DOCS) \
436+
stage1/$(CFG_STDLIB) \
437+
stage1/glue.o
438+
# stage1/rustc$(X) \
439+
# stage2/$(CFG_STDLIB) \
440+
# stage3/$(CFG_STDLIB) \
441+
# stage2/glue.o \
442+
# stage3/glue.o \
443+
# stage2/rustc$(X) \
444+
# stage3/rustc$(X) \
432445
433446
rt/$(CFG_RUNTIME): $(RUNTIME_OBJS) $(MKFILES) $(RUNTIME_HDR) $(RUNTIME_DEF)
434447
@$(call E, link: $@)
@@ -470,38 +483,38 @@ boot/version.ml: $(MKFILES)
470483

471484

472485

473-
boot/$(CFG_STDLIB): $(STDLIB_CRATE) $(STDLIB_INPUTS) \
474-
boot/rustboot$(X) $(MKFILES)
486+
stage0/$(CFG_STDLIB): $(STDLIB_CRATE) $(STDLIB_INPUTS) \
487+
boot/rustboot$(X) $(MKFILES)
475488
@$(call E, compile: $@)
476489
$(BOOT) -shared -o $@ $<
477490

478-
stage0/std.o: $(STDLIB_CRATE) $(STDLIB_INPUTS) stage0/rustc$(X) $(MKFILES)
491+
stage1/std.o: $(STDLIB_CRATE) $(STDLIB_INPUTS) stage0/rustc$(X) $(MKFILES)
479492
@$(call E, compile: $@)
480493
$(STAGE0) -c --shared -o $@ $<
481494

482-
stage0/$(CFG_STDLIB): stage0/std.o stage0/glue.o
483-
@$(call E, link: $@)
484-
$(Q)gcc $(CFG_GCC_CFLAGS) stage0/glue.o $(CFG_GCC_LINK_FLAGS) -o $@ $< \
485-
-Lstage0 -Lrt -lrustrt
486-
487-
stage1/std.o: $(STDLIB_CRATE) $(STDLIB_INPUTS) stage1/rustc$(X) $(MKFILES)
488-
@$(call E, compile: $@)
489-
$(STAGE1) -c --shared -o $@ $<
490-
491495
stage1/$(CFG_STDLIB): stage1/std.o stage1/glue.o
492496
@$(call E, link: $@)
493497
$(Q)gcc $(CFG_GCC_CFLAGS) stage1/glue.o $(CFG_GCC_LINK_FLAGS) -o $@ $< \
494498
-Lstage1 -Lrt -lrustrt
495499

496-
stage2/std.o: $(STDLIB_CRATE) $(STDLIB_INPUTS) stage2/rustc$(X) $(MKFILES)
500+
stage2/std.o: $(STDLIB_CRATE) $(STDLIB_INPUTS) stage1/rustc$(X) $(MKFILES)
497501
@$(call E, compile: $@)
498-
$(STAGE2) -c --shared -o $@ $<
502+
$(STAGE1) -c --shared -o $@ $<
499503

500504
stage2/$(CFG_STDLIB): stage2/std.o stage2/glue.o
501505
@$(call E, link: $@)
502506
$(Q)gcc $(CFG_GCC_CFLAGS) stage2/glue.o $(CFG_GCC_LINK_FLAGS) -o $@ $< \
503507
-Lstage2 -Lrt -lrustrt
504508

509+
stage3/std.o: $(STDLIB_CRATE) $(STDLIB_INPUTS) stage2/rustc$(X) $(MKFILES)
510+
@$(call E, compile: $@)
511+
$(STAGE2) -c --shared -o $@ $<
512+
513+
stage3/$(CFG_STDLIB): stage3/std.o stage3/glue.o
514+
@$(call E, link: $@)
515+
$(Q)gcc $(CFG_GCC_CFLAGS) stage3/glue.o $(CFG_GCC_LINK_FLAGS) -o $@ $< \
516+
-Lstage3 -Lrt -lrustrt
517+
505518

506519

507520
stage0/rustc$(X): $(COMPILER_CRATE) $(COMPILER_INPUTS) $(BREQ)
@@ -517,19 +530,23 @@ stage2/rustc.o: $(COMPILER_CRATE) $(COMPILER_INPUTS) $(SREQ1)
517530
@$(call E, compile: $@)
518531
$(STAGE1) -c -o $@ $<
519532

533+
stage3/rustc.o: $(COMPILER_CRATE) $(COMPILER_INPUTS) $(SREQ2)
534+
@$(call E, compile: $@)
535+
$(STAGE2) -c -o $@ $<
536+
520537

521538

522-
stage0/glue.o: stage0/rustc$(X) boot/$(CFG_STDLIB) \
539+
stage1/glue.o: stage0/rustc$(X) stage0/$(CFG_STDLIB) \
523540
rustllvm/$(CFG_RUSTLLVM) rt/$(CFG_RUNTIME)
524541
@$(call E, generate: $@)
525542
$(STAGE0) -c -o $@ --glue
526543

527-
stage1/glue.o: stage1/rustc$(X) stage0/$(CFG_STDLIB) \
544+
stage2/glue.o: stage1/rustc$(X) stage1/$(CFG_STDLIB) \
528545
rustllvm/$(CFG_RUSTLLVM) rt/$(CFG_RUNTIME)
529546
@$(call E, generate: $@)
530547
$(STAGE1) -c -o $@ --glue
531548

532-
stage2/glue.o: stage2/rustc$(X) stage1/$(CFG_STDLIB) \
549+
stage3/glue.o: stage2/rustc$(X) stage2/$(CFG_STDLIB) \
533550
rustllvm/$(CFG_RUSTLLVM) rt/$(CFG_RUNTIME)
534551
@$(call E, generate: $@)
535552
$(STAGE2) -c -o $@ --glue
@@ -554,17 +571,17 @@ stage2/%.o: stage2/%.s
554571

555572
stage1/%$(X): stage1/%.o $(SREQ0)
556573
@$(call E, link [gcc]: $@)
557-
$(Q)gcc $(CFG_GCC_CFLAGS) stage0/glue.o -o $@ $< \
558-
-Lstage0 -Lrustllvm -Lrt -lrustrt -lrustllvm -lstd -lm
574+
$(Q)gcc $(CFG_GCC_CFLAGS) stage1/glue.o -o $@ $< \
575+
-Lstage1 -Lrustllvm -Lrt -lrustrt -lrustllvm -lstd -lm
559576
@# dsymutil sometimes fails or prints a warning, but the
560577
@# program still runs. Since it simplifies debugging other
561578
@# programs, I\'ll live with the noise.
562579
-$(Q)$(CFG_DSYMUTIL) $@
563580

564581
stage2/%$(X): stage2/%.o $(SREQ1)
565582
@$(call E, link [gcc]: $@)
566-
$(Q)gcc $(CFG_GCC_CFLAGS) stage1/glue.o -o $@ $< \
567-
-Lstage1 -Lrustllvm -Lrt -lrustrt -lrustllvm -lstd -lm
583+
$(Q)gcc $(CFG_GCC_CFLAGS) stage2/glue.o -o $@ $< \
584+
-Lstage2 -Lrustllvm -Lrt -lrustrt -lrustllvm -lstd -lm
568585
@# dsymutil sometimes fails or prints a warning, but the
569586
@# program still runs. Since it simplifies debugging other
570587
@# programs, I\'ll live with the noise.
@@ -865,26 +882,26 @@ compile-check: tidy \
865882

866883
%.stage0$(X): %.stage0.o $(SREQ0)
867884
@$(call E, link [gcc]: $@)
868-
$(Q)gcc $(CFG_GCC_CFLAGS) stage0/glue.o -o $@ $< \
869-
-Lstage0 -Lrt -lrustrt -lstd -lm
885+
$(Q)gcc $(CFG_GCC_CFLAGS) stage1/glue.o -o $@ $< \
886+
-Lstage1 -Lrt -lrustrt -lstd -lm
870887
@# dsymutil sometimes fails or prints a warning, but the
871888
@# program still runs. Since it simplifies debugging other
872889
@# programs, I\'ll live with the noise.
873890
-$(Q)$(CFG_DSYMUTIL) $@
874891

875892
%.stage1$(X): %.stage1.o $(SREQ1)
876893
@$(call E, link [gcc]: $@)
877-
$(Q)gcc $(CFG_GCC_CFLAGS) stage1/glue.o -o $@ $< \
878-
-Lstage1 -Lrt -lrustrt -lstd -lm
894+
$(Q)gcc $(CFG_GCC_CFLAGS) stage2/glue.o -o $@ $< \
895+
-Lstage2 -Lrt -lrustrt -lstd -lm
879896
@# dsymutil sometimes fails or prints a warning, but the
880897
@# program still runs. Since it simplifies debugging other
881898
@# programs, I\'ll live with the noise.
882899
-$(Q)$(CFG_DSYMUTIL) $@
883900

884901
%.stage2$(X): %.stage2.o $(SREQ2)
885902
@$(call E, link [gcc]: $@)
886-
$(Q)gcc $(CFG_GCC_CFLAGS) stage2/glue.o -o $@ $< \
887-
-Lstage2 -Lrt -lrustrt -lstd -lm
903+
$(Q)gcc $(CFG_GCC_CFLAGS) stage3/glue.o -o $@ $< \
904+
-Lstage3 -Lrt -lrustrt -lstd -lm
888905
@# dsymutil sometimes fails or prints a warning, but the
889906
@# program still runs. Since it simplifies debugging other
890907
@# programs, I\'ll live with the noise.
@@ -1161,10 +1178,12 @@ clean:
11611178
$(Q)rm -f $(CRATE_DEPFILES:%.d=%.d.tmp)
11621179
$(Q)rm -f $(GENERATED)
11631180
$(Q)rm -f boot/rustboot$(X) boot/$(CFG_STDLIB)
1164-
$(Q)rm -f stage0/rustc$(X) stage0/$(CFG_STDLIB) stage0/glue*
1181+
$(Q)rm -f stage0/rustc$(X) stage0/$(CFG_STDLIB)
11651182
$(Q)rm -f stage1/rustc$(X) stage1/$(CFG_STDLIB) stage1/glue*
11661183
$(Q)rm -f stage2/rustc$(X) stage2/$(CFG_STDLIB) stage2/glue*
1167-
$(Q)rm -f rustllvm/$(CFG_RUSTLLVM) rt/$(CFG_RUNTIME)
1184+
$(Q)rm -f stage3/rustc$(X) stage3/$(CFG_STDLIB) stage3/glue*
1185+
$(Q)rm -f rustllvm/$(CFG_RUSTLLVM) rustllvm/rustllvmbits.a
1186+
$(Q)rm -f rt/$(CFG_RUNTIME)
11681187
$(Q)rm -Rf $(PKG_NAME)-*.tar.gz dist
11691188
$(Q)rm -f $(foreach ext,cmx cmi cmo cma bc o a d exe,\
11701189
$(wildcard boot/*/*.$(ext) boot/*/*/*.$(ext)))

configure

+1-1
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,7 @@ for i in \
168168
boot/fe boot/me boot/be boot/driver boot/util \
169169
rt rt/isaac rt/bigint rt/sync rt/test \
170170
rustllvm \
171-
stage0 stage1 stage2 \
171+
dl stage0 stage1 stage2 stage3 \
172172
test/run-pass test/run-fail test/compile-fail \
173173
test/bench/99-bottles test/bench/shootout
174174
do

0 commit comments

Comments
 (0)