rust/Makefile.in

202 lines
5.6 KiB
Makefile
Raw Normal View History

2011-03-16 16:17:32 +00:00
######################################################################
# Residual auto-configuration
######################################################################
include config.mk
2011-05-01 20:18:52 +00:00
MKFILES := Makefile config.mk $(wildcard $(CFG_SRC_DIR)/mk/*.mk)
2011-03-16 16:17:32 +00:00
ifneq ($(MAKE_RESTARTS),)
CFG_INFO := $(info cfg: make restarts: $(MAKE_RESTARTS))
endif
CFG_INFO := $(info cfg: building on $(CFG_OSTYPE) $(CFG_CPUTYPE))
2011-04-08 22:44:41 +00:00
ifdef CFG_DISABLE_OPTIMIZE
$(info cfg: disabling rustc optimization (CFG_DISABLE_OPTIMIZE))
CFG_RUSTC_FLAGS :=
2011-04-08 22:44:41 +00:00
else
CFG_RUSTC_FLAGS := -O
2011-04-08 22:44:41 +00:00
endif
ifdef SAVE_TEMPS
CFG_RUSTC_FLAGS += --save-temps
endif
2011-04-29 18:55:32 +00:00
ifdef TIME_PASSES
CFG_RUSTC_FLAGS += --time-passes
endif
ifdef NO_TYPESTATE
CFG_RUSTC_FLAGS += --no-typestate
endif
2011-05-01 20:18:52 +00:00
# platform-specific auto-configuration
include $(CFG_SRC_DIR)/mk/platform.mk
CFG_RUNTIME :=$(call CFG_LIB_NAME,rustrt)
CFG_RUSTLLVM :=$(call CFG_LIB_NAME,rustllvm)
CFG_STDLIB :=$(call CFG_LIB_NAME,std)
2011-03-16 16:17:32 +00:00
ifdef CFG_OCAMLC_OPT
$(info cfg: have ocaml native compiler)
2011-03-16 16:17:32 +00:00
OPT=.opt
else ifdef CFG_OCAMLC
$(info cfg: have only ocaml bytecode compiler)
2011-03-16 16:17:32 +00:00
endif
ifdef CFG_DISABLE_VALGRIND
$(info cfg: disabling valgrind (CFG_DISABLE_VALGRIND))
CFG_VALGRIND :=
endif
ifdef CFG_BAD_VALGRIND
$(info cfg: disabling valgrind due to its unreliability on this platform)
CFG_VALGRIND :=
endif
2011-03-23 17:37:35 +00:00
DOCS :=
ifeq ($(CFG_MAKEINFO),)
$(info cfg: no makeinfo found, omitting doc/rust.html)
else
DOCS += doc/rust.html
endif
ifeq ($(CFG_TEXI2PDF),)
$(info cfg: no texi2pdf found, omitting doc/rust.pdf)
else
ifeq ($(CFG_TEX),)
$(info cfg: no tex found, omitting doc/rust.pdf)
else
DOCS += doc/rust.pdf
endif
2011-03-23 17:37:35 +00:00
endif
ifdef CFG_DISABLE_DOCS
$(info cfg: disabling doc build (CFG_DISABLE_DOCS))
DOCS :=
endif
2011-03-23 17:37:35 +00:00
######################################################################
# Target-and-rule "utility variables"
######################################################################
ifdef VERBOSE
Q :=
E =
else
Q := @
E = echo $(1)
2011-03-16 16:17:32 +00:00
endif
S := $(CFG_SRC_DIR)
X := $(CFG_EXE_SUFFIX)
# Look in doc and src dirs.
VPATH := $(S)doc $(S)src
# Compilers we build, we now know how to run.
STAGE0 := $(Q)$(call CFG_RUN_TARG,stage0,\
stage0/rustc$(X) $(CFG_RUSTC_FLAGS) -L stage1)
STAGE1 := $(Q)$(call CFG_RUN_TARG,stage1, \
stage1/rustc$(X) $(CFG_RUSTC_FLAGS) -L stage2)
STAGE2 := $(Q)$(call CFG_RUN_TARG,stage2, \
stage2/rustc$(X) $(CFG_RUSTC_FLAGS) -L stage3)
# "Source" files we generate in builddir along the way.
2011-05-01 20:18:52 +00:00
GENERATED :=
# Delete the built-in rules.
.SUFFIXES:
%:: %,v
%:: RCS/%,v
%:: RCS/%
%:: s.%
%:: SCCS/s.%
2011-03-16 16:17:32 +00:00
######################################################################
# Standard library variables
######################################################################
2011-03-21 20:42:29 +00:00
STDLIB_CRATE := $(S)src/lib/std.rc
STDLIB_INPUTS := $(wildcard $(addprefix $(S)src/lib/,*.rc *.rs */*.rs))
2011-03-16 16:17:32 +00:00
######################################################################
# rustc crate variables
2011-03-16 16:17:32 +00:00
######################################################################
2011-03-21 20:42:29 +00:00
COMPILER_CRATE := $(S)src/comp/rustc.rc
COMPILER_INPUTS := $(wildcard $(addprefix $(S)src/comp/, \
rustc.rc *.rs */*.rs))
######################################################################
2011-05-01 20:18:52 +00:00
# Main target dependency variables
######################################################################
LREQ := rt/$(CFG_RUNTIME) rustllvm/$(CFG_RUSTLLVM)
SREQ0 := stage0/rustc$(X) $(LREQ) stage1/glue.o stage1/$(CFG_STDLIB)
SREQ1 := stage1/rustc$(X) $(LREQ) stage2/glue.o stage2/$(CFG_STDLIB)
SREQ2 := stage2/rustc$(X) $(LREQ) stage3/glue.o stage3/$(CFG_STDLIB)
2011-03-23 17:37:35 +00:00
2011-05-03 06:37:52 +00:00
######################################################################
# Exports for sub-utilities
######################################################################
export CFG_SRC_DIR
2011-05-05 01:28:30 +00:00
######################################################################
# Subprograms
######################################################################
LLVM_AS := $(CFG_LLVM_BINDIR)/llvm-as
2011-05-03 06:37:52 +00:00
######################################################################
# Single-target rules
######################################################################
2011-03-16 16:17:32 +00:00
all: rt/$(CFG_RUNTIME) \
rustllvm/$(CFG_RUSTLLVM) \
stage0/$(CFG_STDLIB) \
2011-05-05 01:28:30 +00:00
stage0/intrinsics.bc \
stage0/rustc$(X) \
2011-03-23 17:37:35 +00:00
$(GENERATED) \
$(DOCS) \
stage1/$(CFG_STDLIB) \
2011-05-05 01:28:30 +00:00
stage1/intrinsics.bc \
stage1/glue.o \
stage1/rustc$(X) \
stage2/$(CFG_STDLIB) \
2011-05-05 01:28:30 +00:00
stage2/intrinsics.bc \
stage2/glue.o \
stage2/rustc$(X) \
stage3/$(CFG_STDLIB) \
stage3/glue.o \
2011-05-05 01:28:30 +00:00
stage3/intrinsics.bc \
stage3/rustc$(X)
######################################################################
# Re-configuration
######################################################################
config.mk: $(S)configure $(S)Makefile.in
@$(call E, cfg: reconfiguring)
$(S)configure $(CFG_CONFIGURE_ARGS)
2011-03-21 18:23:19 +00:00
######################################################################
2011-05-01 20:18:52 +00:00
# Additional makefiles
2011-03-21 18:23:19 +00:00
######################################################################
2011-05-05 01:28:30 +00:00
include $(CFG_SRC_DIR)/mk/intrinsics.mk
2011-05-01 20:18:52 +00:00
include $(CFG_SRC_DIR)/mk/stage0.mk
include $(CFG_SRC_DIR)/mk/stage1.mk
include $(CFG_SRC_DIR)/mk/stage2.mk
include $(CFG_SRC_DIR)/mk/stage3.mk
2011-05-01 20:18:52 +00:00
include $(CFG_SRC_DIR)/mk/rt.mk
include $(CFG_SRC_DIR)/mk/rustllvm.mk
include $(CFG_SRC_DIR)/mk/docs.mk
include $(CFG_SRC_DIR)/mk/tests.mk
include $(CFG_SRC_DIR)/mk/dist.mk
2011-05-03 06:37:52 +00:00
include $(CFG_SRC_DIR)/mk/snap.mk
2011-05-01 20:18:52 +00:00
include $(CFG_SRC_DIR)/mk/clean.mk
include $(CFG_SRC_DIR)/mk/autodep.mk