89
89
90
90
CFG_LDPATH :=$(CFG_BUILD_DIR ) /rt
91
91
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
+ ) ) ) )
94
100
95
101
ifdef CFG_WINDOWSY
96
102
CFG_INFO := $(info cfg: windows-y environment)
@@ -99,7 +105,7 @@ ifdef CFG_WINDOWSY
99
105
CFG_LIB_NAME =$(1 ) .dll
100
106
CFG_LDPATH :=$(CFG_LDPATH ) :$(CFG_LLVM_BINDIR )
101
107
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 )
103
109
CFG_RUN_TARG=PATH ="$(CFG_BUILD_DIR ) /$(1 ) :$(CFG_LDPATH ) " $(2 )
104
110
105
111
CFG_PATH_MUNGE := $(strip perl -i.bak -p \
@@ -132,7 +138,7 @@ ifdef CFG_UNIXY
132
138
CFG_LDPATH :=$(CFG_LDPATH ) :$(CFG_LLVM_BINDIR )
133
139
CFG_LDPATH :=$(CFG_LDPATH ) :$$PATH
134
140
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 )
136
142
137
143
CFG_INFO := $(info cfg: mingw-cross)
138
144
CFG_GCC_CROSS := i586-mingw32msvc-
@@ -241,13 +247,13 @@ X := $(CFG_EXE_SUFFIX)
241
247
VPATH := $(S ) doc $(S ) src
242
248
243
249
# 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 )
251
257
252
258
# "Source" files we generate in builddir along the way.
253
259
GENERATED := boot/fe/lexer.ml boot/version.ml
@@ -410,25 +416,32 @@ COMPILER_INPUTS := $(wildcard $(addprefix $(S)src/comp/, \
410
416
# #####################################################################
411
417
412
418
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 )
417
423
418
424
419
425
# #####################################################################
420
426
# Single-target rules
421
427
# #####################################################################
422
428
423
429
all : boot/rustboot$(X ) \
424
- boot/$(CFG_STDLIB) \
425
430
rt/$(CFG_RUNTIME) \
426
431
rustllvm/$(CFG_RUSTLLVM) \
427
- stage0/rustc$(X) \
428
- stage0/glue.o \
429
432
stage0/$(CFG_STDLIB) \
433
+ stage0/rustc$(X) \
430
434
$(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) \
432
445
433
446
rt/$(CFG_RUNTIME ) : $(RUNTIME_OBJS ) $(MKFILES ) $(RUNTIME_HDR ) $(RUNTIME_DEF )
434
447
@$(call E, link: $@ )
@@ -470,38 +483,38 @@ boot/version.ml: $(MKFILES)
470
483
471
484
472
485
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)
475
488
@$(call E, compile: $@)
476
489
$(BOOT) -shared -o $@ $<
477
490
478
- stage0 /std.o : $(STDLIB_CRATE ) $(STDLIB_INPUTS ) stage0/rustc$(X ) $(MKFILES )
491
+ stage1 /std.o : $(STDLIB_CRATE ) $(STDLIB_INPUTS ) stage0/rustc$(X ) $(MKFILES )
479
492
@$(call E, compile: $@ )
480
493
$(STAGE0 ) -c --shared -o $@ $<
481
494
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
-
491
495
stage1/$(CFG_STDLIB ) : stage1/std.o stage1/glue.o
492
496
@$(call E, link: $@ )
493
497
$(Q ) gcc $(CFG_GCC_CFLAGS ) stage1/glue.o $(CFG_GCC_LINK_FLAGS ) -o $@ $< \
494
498
-Lstage1 -Lrt -lrustrt
495
499
496
- stage2/std.o : $(STDLIB_CRATE ) $(STDLIB_INPUTS ) stage2 /rustc$(X ) $(MKFILES )
500
+ stage2/std.o : $(STDLIB_CRATE ) $(STDLIB_INPUTS ) stage1 /rustc$(X ) $(MKFILES )
497
501
@$(call E, compile: $@ )
498
- $(STAGE2 ) -c --shared -o $@ $<
502
+ $(STAGE1 ) -c --shared -o $@ $<
499
503
500
504
stage2/$(CFG_STDLIB ) : stage2/std.o stage2/glue.o
501
505
@$(call E, link: $@ )
502
506
$(Q ) gcc $(CFG_GCC_CFLAGS ) stage2/glue.o $(CFG_GCC_LINK_FLAGS ) -o $@ $< \
503
507
-Lstage2 -Lrt -lrustrt
504
508
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
+
505
518
506
519
507
520
stage0/rustc$(X ) : $(COMPILER_CRATE ) $(COMPILER_INPUTS ) $(BREQ )
@@ -517,19 +530,23 @@ stage2/rustc.o: $(COMPILER_CRATE) $(COMPILER_INPUTS) $(SREQ1)
517
530
@$(call E, compile: $@ )
518
531
$(STAGE1 ) -c -o $@ $<
519
532
533
+ stage3/rustc.o : $(COMPILER_CRATE ) $(COMPILER_INPUTS ) $(SREQ2 )
534
+ @$(call E, compile: $@ )
535
+ $(STAGE2 ) -c -o $@ $<
536
+
520
537
521
538
522
- stage0 /glue.o : stage0/rustc$(X ) boot /$(CFG_STDLIB ) \
539
+ stage1 /glue.o : stage0/rustc$(X ) stage0 /$(CFG_STDLIB ) \
523
540
rustllvm/$(CFG_RUSTLLVM) rt/$(CFG_RUNTIME)
524
541
@$(call E, generate: $@)
525
542
$(STAGE0) -c -o $@ --glue
526
543
527
- stage1 /glue.o : stage1/rustc$(X ) stage0 /$(CFG_STDLIB ) \
544
+ stage2 /glue.o : stage1/rustc$(X ) stage1 /$(CFG_STDLIB ) \
528
545
rustllvm/$(CFG_RUSTLLVM) rt/$(CFG_RUNTIME)
529
546
@$(call E, generate: $@)
530
547
$(STAGE1) -c -o $@ --glue
531
548
532
- stage2 /glue.o : stage2/rustc$(X ) stage1 /$(CFG_STDLIB ) \
549
+ stage3 /glue.o : stage2/rustc$(X ) stage2 /$(CFG_STDLIB ) \
533
550
rustllvm/$(CFG_RUSTLLVM) rt/$(CFG_RUNTIME)
534
551
@$(call E, generate: $@)
535
552
$(STAGE2) -c -o $@ --glue
@@ -554,17 +571,17 @@ stage2/%.o: stage2/%.s
554
571
555
572
stage1/% $(X ) : stage1/% .o $(SREQ0 )
556
573
@$(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
559
576
@# dsymutil sometimes fails or prints a warning, but the
560
577
@# program still runs. Since it simplifies debugging other
561
578
@# programs, I\'ll live with the noise.
562
579
-$(Q)$(CFG_DSYMUTIL) $@
563
580
564
581
stage2/% $(X ) : stage2/% .o $(SREQ1 )
565
582
@$(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
568
585
@# dsymutil sometimes fails or prints a warning, but the
569
586
@# program still runs. Since it simplifies debugging other
570
587
@# programs, I\'ll live with the noise.
@@ -865,26 +882,26 @@ compile-check: tidy \
865
882
866
883
% .stage0$(X ) : % .stage0.o $(SREQ0 )
867
884
@$(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
870
887
@# dsymutil sometimes fails or prints a warning, but the
871
888
@# program still runs. Since it simplifies debugging other
872
889
@# programs, I\'ll live with the noise.
873
890
-$(Q)$(CFG_DSYMUTIL) $@
874
891
875
892
% .stage1$(X ) : % .stage1.o $(SREQ1 )
876
893
@$(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
879
896
@# dsymutil sometimes fails or prints a warning, but the
880
897
@# program still runs. Since it simplifies debugging other
881
898
@# programs, I\'ll live with the noise.
882
899
-$(Q)$(CFG_DSYMUTIL) $@
883
900
884
901
% .stage2$(X ) : % .stage2.o $(SREQ2 )
885
902
@$(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
888
905
@# dsymutil sometimes fails or prints a warning, but the
889
906
@# program still runs. Since it simplifies debugging other
890
907
@# programs, I\'ll live with the noise.
@@ -1161,10 +1178,12 @@ clean:
1161
1178
$(Q ) rm -f $(CRATE_DEPFILES:%.d=%.d.tmp )
1162
1179
$(Q ) rm -f $(GENERATED )
1163
1180
$(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 )
1165
1182
$(Q ) rm -f stage1/rustc$(X ) stage1/$(CFG_STDLIB ) stage1/glue*
1166
1183
$(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 )
1168
1187
$(Q ) rm -Rf $(PKG_NAME ) -* .tar.gz dist
1169
1188
$(Q ) rm -f $(foreach ext,cmx cmi cmo cma bc o a d exe,\
1170
1189
$(wildcard boot/*/*.$(ext) boot/*/*/*.$(ext)))
0 commit comments