From 0b9cf7902cbe11dd19163a88e921b2755f03d71a Mon Sep 17 00:00:00 2001 From: Patrick Walton Date: Thu, 24 Mar 2011 18:43:32 -0700 Subject: [PATCH] build: Generate an object file for stage0/libstd.dylib --- Makefile.in | 35 +++++++++++++++++++++++------------ src/rt/rustrt.def.in | 1 + 2 files changed, 24 insertions(+), 12 deletions(-) diff --git a/Makefile.in b/Makefile.in index bb9bcef4077..129b46a81a0 100644 --- a/Makefile.in +++ b/Makefile.in @@ -99,8 +99,7 @@ ifdef CFG_UNIXY CFG_PATH_MUNGE := true CFG_EXE_SUFFIX := CFG_LDPATH :=$(CFG_LDPATH):$(CFG_LLVM_LIBDIR) - CFG_RUN_TARG=\ - $(CFG_LDENV)=$(dir $(firstword $(1))):$(CFG_LDPATH) $(1) + CFG_RUN_TARG=$(CFG_LDENV)=$(CFG_LDPATH) $(1) CFG_RUN_TEST=\ $(CFG_LDENV)=$(dir $(firstword $(1))):$(CFG_LDPATH) \ $(CFG_VALGRIND) $(1) @@ -140,7 +139,7 @@ CFG_RUNTIME :=$(call CFG_LIB_NAME,rustrt) CFG_RUSTLLVM :=$(call CFG_LIB_NAME,rustllvm) CFG_STDLIB :=$(call CFG_LIB_NAME,std) -CFG_LLC_CFLAGS := -march=x86 +CFG_LLC_CFLAGS := -march=x86 -relocation-model=pic ifdef CFG_GCC CFG_INFO := $(info cfg: using gcc) @@ -438,21 +437,33 @@ boot/$(CFG_STDLIB): $(STDLIB_CRATE) $(STDLIB_INPUTS) \ @$(call E, compile: $@) $(BOOT) -shared -o $@ $< -stage0/$(CFG_STDLIB): $(STDLIB_CRATE) $(STDLIB_INPUTS) \ - stage0/rustc$(X) $(MKFILES) +stage0/std.bc: $(STDLIB_CRATE) $(STDLIB_INPUTS) stage0/rustc$(X) $(MKFILES) @$(call E, compile: $@) $(STAGE0) -shared -o $@ $< -stage1/$(CFG_STDLIB): $(STDLIB_CRATE) $(STDLIB_INPUTS) \ - stage1/rustc$(X) $(MKFILES) +stage0/$(CFG_STDLIB): stage0/std.o stage0/glue.o + @$(call E, link: $@) + $(Q)gcc $(CFG_GCC_CFLAGS) stage0/glue.o $(CFG_GCC_LINK_FLAGS) -o $@ $< \ + -Lstage0 -Lrt -lrustrt + +stage1/std.bc: $(STDLIB_CRATE) $(STDLIB_INPUTS) stage1/rustc$(X) $(MKFILES) @$(call E, compile: $@) $(STAGE1) -shared -o $@ $< -stage2/$(CFG_STDLIB): $(STDLIB_CRATE) $(STDLIB_INPUTS) \ - stage2/rustc$(X) $(MKFILES) +stage1/$(CFG_STDLIB): stage1/std.o stage1/glue.o + @$(call E, link: $@) + $(Q)gcc $(CFG_GCC_CFLAGS) stage1/glue.o $(CFG_GCC_LINK_FLAGS) -o $@ $< \ + -Lstage1 -Lrt -lrustrt + +stage2/std.bc: $(STDLIB_CRATE) $(STDLIB_INPUTS) stage2/rustc$(X) $(MKFILES) @$(call E, compile: $@) $(STAGE2) -shared -o $@ $< +stage2/$(CFG_STDLIB): stage2/std.o stage2/glue.o + @$(call E, link: $@) + $(Q)gcc $(CFG_GCC_CFLAGS) stage2/glue.o $(CFG_GCC_LINK_FLAGS) -o $@ $< \ + -Lstage2 -Lrt -lrustrt + stage0/rustc$(X): $(COMPILER_CRATE) $(COMPILER_INPUTS) \ @@ -475,17 +486,17 @@ stage2/rustc$(X): $(COMPILER_CRATE) $(COMPILER_INPUTS) \ -stage0/glue.bc: stage0/rustc$(X) stage0/$(CFG_STDLIB) \ +stage0/glue.bc: stage0/rustc$(X) boot/$(CFG_STDLIB) \ rustllvm/$(CFG_RUSTLLVM) rt/$(CFG_RUNTIME) @$(call E, generate: $@) $(STAGE0) -o $@ -glue -stage1/glue.bc: stage1/rustc$(X) stage1/$(CFG_STDLIB) \ +stage1/glue.bc: stage1/rustc$(X) stage0/$(CFG_STDLIB) \ rustllvm/$(CFG_RUSTLLVM) rt/$(CFG_RUNTIME) @$(call E, generate: $@) $(STAGE1) -o $@ -glue -stage2/glue.bc: stage2/rustc$(X) stage2/$(CFG_STDLIB) \ +stage2/glue.bc: stage2/rustc$(X) stage1/$(CFG_STDLIB) \ rustllvm/$(CFG_RUSTLLVM) rt/$(CFG_RUNTIME) @$(call E, generate: $@) $(STAGE2) -o $@ -glue diff --git a/src/rt/rustrt.def.in b/src/rt/rustrt.def.in index d917aa937a1..f8ac1ed46ef 100644 --- a/src/rt/rustrt.def.in +++ b/src/rt/rustrt.def.in @@ -13,6 +13,7 @@ rand_free rand_new rand_next refcount +rust_dirent_filename rust_file_is_dir rust_get_stdin rust_get_stdout