2011-03-16 17:17:32 +01:00
|
|
|
######################################################################
|
|
|
|
# Residual auto-configuration
|
|
|
|
######################################################################
|
|
|
|
|
|
|
|
include config.mk
|
2011-05-01 22:18:52 +02:00
|
|
|
MKFILES := Makefile config.mk $(wildcard $(CFG_SRC_DIR)/mk/*.mk)
|
2011-03-16 17:17:32 +01:00
|
|
|
|
|
|
|
ifneq ($(MAKE_RESTARTS),)
|
|
|
|
CFG_INFO := $(info cfg: make restarts: $(MAKE_RESTARTS))
|
|
|
|
endif
|
|
|
|
|
|
|
|
CFG_INFO := $(info cfg: building on $(CFG_OSTYPE) $(CFG_CPUTYPE))
|
|
|
|
|
2011-03-18 07:51:45 +01:00
|
|
|
CFG_BOOT_FLAGS := $(BOOT_FLAGS)
|
2011-05-01 22:18:52 +02:00
|
|
|
|
2011-04-09 00:44:41 +02:00
|
|
|
ifdef CFG_DISABLE_OPTIMIZE
|
2011-04-09 01:29:19 +02:00
|
|
|
$(info cfg: disabling rustc optimization (CFG_DISABLE_OPTIMIZE))
|
2011-04-29 19:23:07 +02:00
|
|
|
CFG_RUSTC_FLAGS :=
|
2011-04-09 00:44:41 +02:00
|
|
|
else
|
2011-04-29 19:23:07 +02:00
|
|
|
CFG_RUSTC_FLAGS := -O
|
2011-04-09 00:44:41 +02:00
|
|
|
endif
|
2011-03-18 07:51:45 +01:00
|
|
|
|
2011-04-25 23:20:28 +02:00
|
|
|
ifdef SAVE_TEMPS
|
2011-04-26 20:32:08 +02:00
|
|
|
CFG_RUSTC_FLAGS += --save-temps
|
2011-04-25 23:20:28 +02:00
|
|
|
endif
|
2011-04-29 20:55:32 +02:00
|
|
|
ifdef TIME_PASSES
|
|
|
|
CFG_RUSTC_FLAGS += --time-passes
|
|
|
|
endif
|
2011-04-29 21:16:14 +02:00
|
|
|
ifdef NO_TYPESTATE
|
|
|
|
CFG_RUSTC_FLAGS += --no-typestate
|
|
|
|
endif
|
2011-04-25 23:20:28 +02:00
|
|
|
|
2011-05-01 22:18:52 +02:00
|
|
|
# platform-specific auto-configuration
|
|
|
|
include $(CFG_SRC_DIR)/mk/platform.mk
|
2011-03-18 07:51:45 +01:00
|
|
|
|
|
|
|
CFG_RUNTIME :=$(call CFG_LIB_NAME,rustrt)
|
2011-03-22 07:06:42 +01:00
|
|
|
CFG_RUSTLLVM :=$(call CFG_LIB_NAME,rustllvm)
|
2011-03-18 07:51:45 +01:00
|
|
|
CFG_STDLIB :=$(call CFG_LIB_NAME,std)
|
|
|
|
|
2011-03-16 17:17:32 +01:00
|
|
|
ifdef CFG_OCAMLC_OPT
|
2011-03-18 07:51:45 +01:00
|
|
|
$(info cfg: have ocaml native compiler)
|
2011-03-16 17:17:32 +01:00
|
|
|
OPT=.opt
|
|
|
|
else
|
2011-03-18 07:51:45 +01:00
|
|
|
$(info cfg: have only ocaml bytecode compiler)
|
2011-03-16 17:17:32 +01:00
|
|
|
endif
|
|
|
|
|
2011-03-30 06:45:09 +02:00
|
|
|
ifdef CFG_DISABLE_VALGRIND
|
|
|
|
$(info cfg: disabling valgrind (CFG_DISABLE_VALGRIND))
|
2011-03-18 07:51:45 +01:00
|
|
|
CFG_VALGRIND :=
|
|
|
|
endif
|
|
|
|
|
2011-03-23 18:37:35 +01: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
|
2011-03-23 21:31:51 +01:00
|
|
|
ifeq ($(CFG_TEX),)
|
|
|
|
$(info cfg: no tex found, omitting doc/rust.pdf)
|
|
|
|
else
|
|
|
|
DOCS += doc/rust.pdf
|
|
|
|
endif
|
2011-03-23 18:37:35 +01:00
|
|
|
endif
|
|
|
|
|
2011-03-30 06:45:09 +02:00
|
|
|
ifdef CFG_DISABLE_DOCS
|
|
|
|
$(info cfg: disabling doc build (CFG_DISABLE_DOCS))
|
|
|
|
DOCS :=
|
|
|
|
endif
|
2011-03-23 18:37:35 +01:00
|
|
|
|
2011-03-18 07:51:45 +01:00
|
|
|
######################################################################
|
|
|
|
# Target-and-rule "utility variables"
|
|
|
|
######################################################################
|
|
|
|
|
|
|
|
ifdef VERBOSE
|
|
|
|
Q :=
|
|
|
|
E =
|
|
|
|
else
|
|
|
|
Q := @
|
|
|
|
E = echo $(1)
|
2011-03-16 17:17:32 +01:00
|
|
|
endif
|
|
|
|
|
2011-03-18 07:51:45 +01:00
|
|
|
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.
|
2011-04-30 20:44:27 +02:00
|
|
|
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)
|
2011-03-18 07:51:45 +01:00
|
|
|
|
|
|
|
# "Source" files we generate in builddir along the way.
|
2011-05-01 22:18:52 +02:00
|
|
|
GENERATED :=
|
2011-03-18 07:51:45 +01:00
|
|
|
|
|
|
|
# Delete the built-in rules.
|
|
|
|
.SUFFIXES:
|
|
|
|
%:: %,v
|
|
|
|
%:: RCS/%,v
|
|
|
|
%:: RCS/%
|
|
|
|
%:: s.%
|
|
|
|
%:: SCCS/s.%
|
2011-03-16 17:17:32 +01:00
|
|
|
|
|
|
|
|
2011-03-18 07:51:45 +01:00
|
|
|
######################################################################
|
|
|
|
# Standard library variables
|
|
|
|
######################################################################
|
|
|
|
|
2011-03-21 21:42:29 +01:00
|
|
|
STDLIB_CRATE := $(S)src/lib/std.rc
|
2011-03-18 07:51:45 +01:00
|
|
|
STDLIB_INPUTS := $(wildcard $(addprefix $(S)src/lib/,*.rc *.rs */*.rs))
|
2011-03-16 17:17:32 +01:00
|
|
|
|
|
|
|
######################################################################
|
2011-03-18 07:51:45 +01:00
|
|
|
# rustc crate variables
|
2011-03-16 17:17:32 +01:00
|
|
|
######################################################################
|
|
|
|
|
2011-03-21 21:42:29 +01:00
|
|
|
COMPILER_CRATE := $(S)src/comp/rustc.rc
|
2011-03-19 01:30:06 +01:00
|
|
|
COMPILER_INPUTS := $(wildcard $(addprefix $(S)src/comp/, \
|
2011-03-18 07:51:45 +01:00
|
|
|
rustc.rc *.rs */*.rs))
|
|
|
|
|
2011-03-20 09:12:26 +01:00
|
|
|
######################################################################
|
2011-05-01 22:18:52 +02:00
|
|
|
# Main target dependency variables
|
2011-03-20 09:12:26 +01:00
|
|
|
######################################################################
|
|
|
|
|
2011-03-22 07:06:42 +01:00
|
|
|
LREQ := rt/$(CFG_RUNTIME) rustllvm/$(CFG_RUSTLLVM)
|
2011-04-30 20:44:27 +02:00
|
|
|
BREQ := boot/rustboot$(X) stage0/$(CFG_STDLIB)
|
|
|
|
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-20 09:12:26 +01:00
|
|
|
|
2011-03-23 18:37:35 +01:00
|
|
|
|
2011-03-18 07:51:45 +01:00
|
|
|
######################################################################
|
|
|
|
# Single-target rules
|
|
|
|
######################################################################
|
2011-03-16 17:17:32 +01:00
|
|
|
|
2011-03-19 01:41:32 +01:00
|
|
|
all: boot/rustboot$(X) \
|
|
|
|
rt/$(CFG_RUNTIME) \
|
2011-03-22 07:06:42 +01:00
|
|
|
rustllvm/$(CFG_RUSTLLVM) \
|
2011-03-20 09:12:26 +01:00
|
|
|
stage0/$(CFG_STDLIB) \
|
2011-04-30 20:44:27 +02:00
|
|
|
stage0/rustc$(X) \
|
2011-03-23 18:37:35 +01:00
|
|
|
$(GENERATED) \
|
2011-04-30 20:44:27 +02:00
|
|
|
$(DOCS) \
|
|
|
|
stage1/$(CFG_STDLIB) \
|
|
|
|
stage1/glue.o
|
|
|
|
# stage1/rustc$(X) \
|
|
|
|
# stage2/$(CFG_STDLIB) \
|
|
|
|
# stage3/$(CFG_STDLIB) \
|
|
|
|
# stage2/glue.o \
|
|
|
|
# stage3/glue.o \
|
|
|
|
# stage2/rustc$(X) \
|
|
|
|
# stage3/rustc$(X) \
|
2011-03-18 07:51:45 +01:00
|
|
|
|
2011-03-25 18:29:45 +01:00
|
|
|
|
|
|
|
######################################################################
|
|
|
|
# Re-configuration
|
|
|
|
######################################################################
|
|
|
|
|
|
|
|
config.mk: $(S)configure $(S)Makefile.in
|
|
|
|
@$(call E, cfg: reconfiguring)
|
|
|
|
$(S)configure $(CFG_CONFIGURE_ARGS)
|
|
|
|
|
|
|
|
|
2011-03-21 19:23:19 +01:00
|
|
|
######################################################################
|
2011-05-01 22:18:52 +02:00
|
|
|
# Additional makefiles
|
2011-03-21 19:23:19 +01:00
|
|
|
######################################################################
|
|
|
|
|
2011-05-01 22:18:52 +02:00
|
|
|
include $(CFG_SRC_DIR)/mk/boot.mk
|
|
|
|
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/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
|
|
|
|
include $(CFG_SRC_DIR)/mk/clean.mk
|
|
|
|
include $(CFG_SRC_DIR)/mk/autodep.mk
|