@@ -90,6 +90,7 @@ ifdef CFG_WINDOWSY
90
90
CFG_EXE_SUFFIX := .exe
91
91
CFG_BOOT := ./rustboot.exe
92
92
CFG_RUSTC := ./rustc.exe
93
+ CFG_GLUE := ./glue.exe
93
94
CFG_GCC_CFLAGS += -march=i686
94
95
CFG_GCC_LINK_FLAGS += -shared -fPIC
95
96
CFG_RUN_TARG = $(1 )
@@ -101,6 +102,7 @@ ifdef CFG_UNIXY
101
102
CFG_INFO := $(info cfg: unix-y environment)
102
103
CFG_BOOT := ./rustboot
103
104
CFG_RUSTC := ./rustc
105
+ CFG_GLUE := ./glue
104
106
CFG_OBJ_SUFFIX := .o
105
107
CFG_RUN_TARG = LD_LIBRARY_PATH=. $(CFG_VALGRIND ) $(1 )
106
108
CFG_GCC := 1
@@ -111,6 +113,7 @@ ifdef CFG_UNIXY
111
113
CFG_RUNTIME := rustrt.dll
112
114
CFG_STDLIB := std.dll
113
115
CFG_RUSTC := ./rustc.exe
116
+ CFG_GLUE := ./glue
114
117
ifdef CFG_VALGRIND
115
118
CFG_VALGRIND += wine
116
119
endif
@@ -308,11 +311,13 @@ RUNTIME_LIBS := $(CFG_RUNTIME_LIBS)
308
311
STDLIB_CRATE := lib/std.rc
309
312
STDLIB_INPUTS := $(wildcard lib/* .rc lib/* .rs lib/* /* .rs)
310
313
COMPILER_CRATE := comp/rustc.rc
311
- COMPILER_INPUTS := $(wildcard comp/* .rc comp/* .rs comp/* /* .rs)
314
+ COMPILER_INPUTS := $(wildcard comp/rustc.rc comp/* .rs comp/* /* .rs)
315
+ GLUE_CRATE := comp/glue.rc
316
+ GLUE_INPUTS := $(wildcard comp/glue.rc comp/* .rs comp/* /* .rs)
312
317
313
318
GENERATED := boot/fe/lexer.ml boot/util/version.ml
314
319
315
- all : $(CFG_RUSTC ) $(MKFILES ) $(GENERATED )
320
+ all : $(CFG_RUSTC ) $(CFG_GLUE ) $( MKFILES ) $(GENERATED ) glue.o
316
321
317
322
boot/util/version.ml : Makefile
318
323
$(CFG_QUIET ) git log -1 \
@@ -368,6 +373,16 @@ $(CFG_RUSTC): $(COMPILER_INPUTS) $(CFG_BOOT) $(CFG_RUNTIME) $(CFG_STDLIB)
368
373
$(BOOT ) -minimal -o $@ $<
369
374
$(CFG_QUIET ) chmod 0755 $@
370
375
376
+ $(CFG_GLUE ) : $(GLUE_INPUTS ) $(CFG_BOOT ) $(CFG_RUNTIME ) $(CFG_STDLIB )
377
+ @$(call CFG_ECHO, compile: $< )
378
+ $(BOOT ) -minimal -o $@ $<
379
+ $(CFG_QUIET ) chmod 0755 $@
380
+
381
+ glue.o : glue.s
382
+
383
+ glue.s : $(CFG_GLUE )
384
+ $(CFG_GLUE ) > $@
385
+
371
386
self : $(CFG_RUSTC )
372
387
@$(call CFG_ECHO, compile: $< )
373
388
$(RUSTC ) $(COMPILER_CRATE )
@@ -763,9 +778,9 @@ test/bench/shootout/%.boot$(CFG_EXE_SUFFIX): \
763
778
@$(call CFG_ECHO, assemble [llvm]: $< )
764
779
$(CFG_QUIET ) gcc $(CFG_GCC_CFLAGS ) -o $@ -c $<
765
780
766
- % .rustc$(CFG_EXE_SUFFIX ) : % .o $(CFG_RUNTIME )
781
+ % .rustc$(CFG_EXE_SUFFIX ) : % .o $(CFG_RUNTIME ) glue.o
767
782
@$(call CFG_ECHO, link [llvm]: $< )
768
- $(CFG_QUIET ) gcc $(CFG_GCC_CFLAGS ) -o $@ $< -L. -lrustrt
783
+ $(CFG_QUIET ) gcc $(CFG_GCC_CFLAGS ) glue.o -o $@ $< -L. -lrustrt
769
784
@# dsymutil sometimes fails or prints a warning, but the
770
785
@# program still runs. Since it simplifies debugging other
771
786
@# programs, I\'ll live with the noise.
0 commit comments