aboutsummaryrefslogtreecommitdiff
path: root/src/Makefile
diff options
context:
space:
mode:
authorPatrick Walton <[email protected]>2011-03-11 18:02:09 -0800
committerPatrick Walton <[email protected]>2011-03-11 18:03:00 -0800
commitd34e1ff89e067a57921091fbdffe8c13fa38341c (patch)
tree7c3ab414d5295bd77ef48737b2c9c6771997fe0c /src/Makefile
parentInclude glob in crate depfile deps, to handle file-add events with cached dep... (diff)
downloadrust-d34e1ff89e067a57921091fbdffe8c13fa38341c.tar.xz
rust-d34e1ff89e067a57921091fbdffe8c13fa38341c.zip
rustc: Add a binding to LLVM's object file reader. Until it's sent upstream, add an explicit "support" library for our LLVM extensions.
Diffstat (limited to 'src/Makefile')
-rw-r--r--src/Makefile34
1 files changed, 31 insertions, 3 deletions
diff --git a/src/Makefile b/src/Makefile
index bceef7ff..dc6a78a5 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -34,6 +34,7 @@ DSYMUTIL := true
ifeq ($(CFG_OSTYPE), FreeBSD)
CFG_RUNTIME := librustrt.so
+ CFG_SUPPORT := librustsupport.so
CFG_STDLIB := libstd.so
CFG_GCC_CFLAGS += -fPIC -march=i686 -I/usr/local/include
CFG_GCC_LINK_FLAGS += -shared -fPIC -lpthread -lrt
@@ -47,6 +48,7 @@ endif
ifeq ($(CFG_OSTYPE), Linux)
CFG_RUNTIME := librustrt.so
+ CFG_SUPPORT := librustsupport.so
CFG_STDLIB := libstd.so
CFG_GCC_CFLAGS += -fPIC -march=i686
CFG_GCC_LINK_FLAGS += -shared -fPIC -ldl -lpthread -lrt
@@ -60,6 +62,7 @@ endif
ifeq ($(CFG_OSTYPE), Darwin)
CFG_RUNTIME := librustrt.dylib
+ CFG_SUPPORT := librustsupport.dylib
CFG_STDLIB := libstd.dylib
CFG_UNIXY := 1
CFG_GCC_LINK_FLAGS += -dynamiclib -lpthread
@@ -85,6 +88,7 @@ ifdef CFG_WINDOWSY
CFG_NATIVE := 1
endif
CFG_RUNTIME := rustrt.dll
+ CFG_SUPPORT := rustsupport.dll
CFG_STDLIB := std.dll
CFG_EXE_SUFFIX := .exe
CFG_BOOT := ./rustboot.exe
@@ -107,6 +111,7 @@ ifdef CFG_UNIXY
CFG_GCC_CROSS := i586-mingw32msvc-
CFG_BOOT_FLAGS += -t win32-x86-pe
CFG_RUNTIME := rustrt.dll
+ CFG_SUPPORT := rustsupport.dll
CFG_STDLIB := std.dll
CFG_RUSTC := ./rustc.exe
ifdef CFG_VALGRIND
@@ -179,7 +184,7 @@ endif
ifneq ($(CFG_LLVM_CONFIG),)
CFG_LLVM_VERSION := $(shell $(CFG_LLVM_CONFIG) --version)
$(info cfg: found llvm-config at $(CFG_LLVM_CONFIG))
- CFG_LLVM_ALLOWED_VERSIONS := 2.8svn 2.8 2.9svn
+ CFG_LLVM_ALLOWED_VERSIONS := 2.8svn 2.8 2.9svn 3.0svn
ifneq ($(findstring $(CFG_LLVM_VERSION),$(CFG_LLVM_ALLOWED_VERSIONS)),)
$(info cfg: using LLVM version $(CFG_LLVM_VERSION))
else
@@ -193,6 +198,10 @@ ifdef CFG_LLVM_CONFIG
LLC := "$(shell $(CFG_LLVM_CONFIG) --bindir)/llc"
CFG_LLC_CFLAGS := -march=x86
LLVM-DIS := "$(shell $(CFG_LLVM_CONFIG) --bindir)/llvm-dis"
+ CFG_LLVM_INCDIR := $(shell $(CFG_LLVM_CONFIG) --includedir)
+ CFG_LLVM_CXXFLAGS := $(shell $(CFG_LLVM_CONFIG) --cxxflags)
+ CFG_LLVM_LDFLAGS := $(shell $(CFG_LLVM_CONFIG) --ldflags)
+ CFG_LLVM_LIBS := $(shell $(CFG_LLVM_CONFIG) --libs)
endif
MKFILES := Makefile
@@ -301,6 +310,14 @@ RUNTIME_HDR := rt/globals.h \
RUNTIME_INCS := -Irt/isaac -Irt/uthash
RUNTIME_OBJS := $(RUNTIME_CS:.cpp=.o)
+SUPPORT_CS := support/Object.cpp
+
+SUPPORT_HDR := support/include/llvm-c/Object.h
+
+SUPPORT_INCS := -iquote $(CFG_LLVM_INCDIR)
+SUPPORT_OBJS := $(SUPPORT_CS:.cpp=.o)
+SUPPORT_LIBS := $(CFG_LLVM_LDFLAGS) $(CFG_LLVM_LIBS)
+
STDLIB_CRATE := lib/std.rc
STDLIB_INPUTS := $(wildcard lib/*.rc lib/*.rs lib/*/*.rs)
COMPILER_CRATE := comp/rustc.rc
@@ -321,14 +338,24 @@ $(CFG_RUNTIME): $(RUNTIME_OBJS) $(MKFILES) $(RUNTIME_HDR)
@$(call CFG_ECHO, compile: $<)
$(CFG_QUIET)$(call CFG_LINK_C, $@) $(RUNTIME_OBJS)
+$(CFG_SUPPORT): $(SUPPORT_OBJS) $(MKFILES) $(SUPPORT_HDR)
+ @$(call CFG_ECHO, compile: $<)
+ $(CFG_QUIET)$(call CFG_LINK_C, $@ $(CFG_LLVM_LDFLAGS) $(CFG_LLVM_LIBS)) \
+ $(SUPPORT_OBJS)
+
$(CFG_STDLIB): $(STDLIB_CRATE) $(CFG_BOOT) $(MKFILES)
@$(call CFG_ECHO, compile: $<)
$(BOOT) -shared -o $@ $(STDLIB_CRATE)
-%.o: %.cpp $(MKFILES)
+rt/%.o: rt/%.cpp $(MKFILES)
@$(call CFG_ECHO, compile: $<)
$(CFG_QUIET)$(call CFG_COMPILE_C, $@, $(RUNTIME_INCS)) $<
+support/%.o: support/%.cpp $(MKFILES)
+ @$(call CFG_ECHO, compile: $<)
+ $(CFG_QUIET)$(call CFG_COMPILE_C, $@, $(CFG_LLVM_CXXFLAGS) \
+ $(SUPPORT_INCS)) $<
+
ifdef CFG_NATIVE
$(CFG_BOOT): $(BOOT_CMXS) $(MKFILES)
@$(call CFG_ECHO, compile: $<)
@@ -359,7 +386,8 @@ endif
# Main compiler targets and rules
######################################################################
-$(CFG_RUSTC): $(COMPILER_INPUTS) $(CFG_BOOT) $(CFG_RUNTIME) $(CFG_STDLIB)
+$(CFG_RUSTC): $(COMPILER_INPUTS) $(CFG_BOOT) $(CFG_RUNTIME) $(CFG_STDLIB) \
+ $(CFG_SUPPORT)
@$(call CFG_ECHO, compile: $<)
$(BOOT) -minimal -o $@ $<
$(CFG_QUIET)chmod 0755 $@