@@ -99,8 +99,7 @@ ifdef CFG_UNIXY
99
99
CFG_PATH_MUNGE := true
100
100
CFG_EXE_SUFFIX :=
101
101
CFG_LDPATH :=$(CFG_LDPATH ) :$(CFG_LLVM_LIBDIR )
102
- CFG_RUN_TARG =\
103
- $(CFG_LDENV ) =$(dir $(firstword $(1 ) ) ) :$(CFG_LDPATH ) $(1 )
102
+ CFG_RUN_TARG=$(CFG_LDENV) =$(CFG_LDPATH ) $(1 )
104
103
CFG_RUN_TEST =\
105
104
$(CFG_LDENV ) =$(dir $(firstword $(1 ) ) ) :$(CFG_LDPATH ) \
106
105
$(CFG_VALGRIND ) $(1 )
@@ -140,7 +139,7 @@ CFG_RUNTIME :=$(call CFG_LIB_NAME,rustrt)
140
139
CFG_RUSTLLVM :=$(call CFG_LIB_NAME,rustllvm)
141
140
CFG_STDLIB :=$(call CFG_LIB_NAME,std)
142
141
143
- CFG_LLC_CFLAGS := -march=x86
142
+ CFG_LLC_CFLAGS := -march=x86 -relocation-model=pic
144
143
145
144
ifdef CFG_GCC
146
145
CFG_INFO := $(info cfg: using gcc)
@@ -438,21 +437,33 @@ boot/$(CFG_STDLIB): $(STDLIB_CRATE) $(STDLIB_INPUTS) \
438
437
@$(call E, compile: $@)
439
438
$(BOOT) -shared -o $@ $<
440
439
441
- stage0/$(CFG_STDLIB ) : $(STDLIB_CRATE ) $(STDLIB_INPUTS ) \
442
- stage0/rustc$(X) $(MKFILES)
440
+ stage0/std.bc : $(STDLIB_CRATE ) $(STDLIB_INPUTS ) stage0/rustc$(X ) $(MKFILES )
443
441
@$(call E, compile: $@ )
444
442
$(STAGE0 ) -shared -o $@ $<
445
443
446
- stage1/$(CFG_STDLIB ) : $(STDLIB_CRATE ) $(STDLIB_INPUTS ) \
447
- stage1/rustc$(X) $(MKFILES)
444
+ stage0/$(CFG_STDLIB ) : stage0/std.o stage0/glue.o
445
+ @$(call E, link: $@ )
446
+ $(Q ) gcc $(CFG_GCC_CFLAGS ) stage0/glue.o $(CFG_GCC_LINK_FLAGS ) -o $@ $< \
447
+ -Lstage0 -Lrt -lrustrt
448
+
449
+ stage1/std.bc : $(STDLIB_CRATE ) $(STDLIB_INPUTS ) stage1/rustc$(X ) $(MKFILES )
448
450
@$(call E, compile: $@ )
449
451
$(STAGE1 ) -shared -o $@ $<
450
452
451
- stage2/$(CFG_STDLIB ) : $(STDLIB_CRATE ) $(STDLIB_INPUTS ) \
452
- stage2/rustc$(X) $(MKFILES)
453
+ stage1/$(CFG_STDLIB ) : stage1/std.o stage1/glue.o
454
+ @$(call E, link: $@ )
455
+ $(Q ) gcc $(CFG_GCC_CFLAGS ) stage1/glue.o $(CFG_GCC_LINK_FLAGS ) -o $@ $< \
456
+ -Lstage1 -Lrt -lrustrt
457
+
458
+ stage2/std.bc : $(STDLIB_CRATE ) $(STDLIB_INPUTS ) stage2/rustc$(X ) $(MKFILES )
453
459
@$(call E, compile: $@ )
454
460
$(STAGE2 ) -shared -o $@ $<
455
461
462
+ stage2/$(CFG_STDLIB ) : stage2/std.o stage2/glue.o
463
+ @$(call E, link: $@ )
464
+ $(Q ) gcc $(CFG_GCC_CFLAGS ) stage2/glue.o $(CFG_GCC_LINK_FLAGS ) -o $@ $< \
465
+ -Lstage2 -Lrt -lrustrt
466
+
456
467
457
468
458
469
stage0/rustc$(X ) : $(COMPILER_CRATE ) $(COMPILER_INPUTS ) \
@@ -475,17 +486,17 @@ stage2/rustc$(X): $(COMPILER_CRATE) $(COMPILER_INPUTS) \
475
486
476
487
477
488
478
- stage0/glue.bc : stage0/rustc$(X ) stage0 /$(CFG_STDLIB ) \
489
+ stage0/glue.bc : stage0/rustc$(X ) boot /$(CFG_STDLIB ) \
479
490
rustllvm/$(CFG_RUSTLLVM) rt/$(CFG_RUNTIME)
480
491
@$(call E, generate: $@)
481
492
$(STAGE0) -o $@ -glue
482
493
483
- stage1/glue.bc : stage1/rustc$(X ) stage1 /$(CFG_STDLIB ) \
494
+ stage1/glue.bc : stage1/rustc$(X ) stage0 /$(CFG_STDLIB ) \
484
495
rustllvm/$(CFG_RUSTLLVM) rt/$(CFG_RUNTIME)
485
496
@$(call E, generate: $@)
486
497
$(STAGE1) -o $@ -glue
487
498
488
- stage2/glue.bc : stage2/rustc$(X ) stage2 /$(CFG_STDLIB ) \
499
+ stage2/glue.bc : stage2/rustc$(X ) stage1 /$(CFG_STDLIB ) \
489
500
rustllvm/$(CFG_RUSTLLVM) rt/$(CFG_RUNTIME)
490
501
@$(call E, generate: $@)
491
502
$(STAGE2) -o $@ -glue
0 commit comments