rust/Makefile.in

253 lines
7.0 KiB
Makefile
Raw Normal View History

2011-03-16 11:17:32 -05:00
######################################################################
# Residual auto-configuration
######################################################################
include config.mk
2011-05-01 15:18:52 -05:00
MKFILES := Makefile config.mk $(wildcard $(CFG_SRC_DIR)/mk/*.mk)
2011-03-16 11:17:32 -05: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 17:44:41 -05:00
ifdef CFG_DISABLE_OPTIMIZE
$(info cfg: disabling rustc optimization (CFG_DISABLE_OPTIMIZE))
CFG_RUSTC_FLAGS :=
2011-04-08 17:44:41 -05:00
else
CFG_RUSTC_FLAGS := -O
2011-04-08 17:44:41 -05:00
endif
ifdef SAVE_TEMPS
CFG_RUSTC_FLAGS += --save-temps
endif
2011-04-29 13:55:32 -05:00
ifdef TIME_PASSES
CFG_RUSTC_FLAGS += --time-passes
endif
ifdef TIME_LLVM_PASSES
CFG_RUSTC_FLAGS += --time-llvm-passes
endif
ifdef NO_TYPESTATE
CFG_RUSTC_FLAGS += --no-typestate
endif
ifdef DEBUG
CFG_RUSTC_FLAGS += -g
endif
2011-05-01 15:18:52 -05:00
# platform-specific auto-configuration
include $(CFG_SRC_DIR)/mk/platform.mk
# Run the stage1/2 compilers under valgrind
ifdef VALGRIND_COMPILE
CFG_VALGRIND_COMPILE :=$(CFG_VALGRIND)
else
CFG_VALGRIND_COMPILE :=
endif
CFG_RUNTIME :=$(call CFG_LIB_NAME,rustrt)
CFG_RUSTLLVM :=$(call CFG_LIB_NAME,rustllvm)
CFG_STDLIB :=$(call CFG_LIB_NAME,std)
CFG_LIBRUSTC :=$(call CFG_LIB_NAME,rustc)
# version-string calculation
CFG_GIT_DIR := $(CFG_SRC_DIR).git
2011-06-25 14:23:27 -05:00
CFG_VERSION = prerelease
2011-06-13 16:45:26 -05:00
ifneq ($(wildcard $(CFG_GIT)),)
ifneq ($(wildcard $(CFG_GIT_DIR)),)
CFG_VERSION += $(shell git --git-dir=$(CFG_GIT_DIR) log -1 \
--pretty=format:'(%h %ci)')
endif
2011-06-13 16:45:26 -05: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 12:37:35 -05: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 12:37:35 -05:00
endif
ifdef CFG_DISABLE_DOCS
$(info cfg: disabling doc build (CFG_DISABLE_DOCS))
DOCS :=
endif
2011-03-23 12:37:35 -05:00
######################################################################
# Target-and-rule "utility variables"
######################################################################
ifdef VERBOSE
Q :=
E =
else
Q := @
E = echo $(1)
2011-03-16 11:17:32 -05:00
endif
S := $(CFG_SRC_DIR)
X := $(CFG_EXE_SUFFIX)
# Look in doc and src dirs.
VPATH := $(S)doc $(S)src
# "Source" files we generate in builddir along the way.
2011-05-01 15:18:52 -05:00
GENERATED :=
# Delete the built-in rules.
.SUFFIXES:
%:: %,v
%:: RCS/%,v
%:: RCS/%
%:: s.%
%:: SCCS/s.%
2011-03-16 11:17:32 -05:00
######################################################################
# Standard library variables
######################################################################
2011-03-21 15:42:29 -05:00
STDLIB_CRATE := $(S)src/lib/std.rc
STDLIB_INPUTS := $(wildcard $(addprefix $(S)src/lib/,*.rc *.rs */*.rs))
2011-03-16 11:17:32 -05:00
######################################################################
# rustc crate variables
2011-03-16 11:17:32 -05:00
######################################################################
2011-03-21 15:42:29 -05:00
COMPILER_CRATE := $(S)src/comp/rustc.rc
COMPILER_INPUTS := $(wildcard $(addprefix $(S)src/comp/, \
rustc.rc *.rs */*.rs */*/*.rs))
2011-05-03 01:37:52 -05:00
######################################################################
# Exports for sub-utilities
######################################################################
export CFG_SRC_DIR
export CFG_VERSION
export CFG_LLVM_ROOT
export CFG_ENABLE_MINGW_CROSS
2011-05-03 01:37:52 -05:00
2011-05-04 20:28:30 -05:00
######################################################################
# Subprograms
######################################################################
LLVM_AS := $(CFG_LLVM_BINDIR)/llvm-as$(X)
2011-05-04 20:28:30 -05:00
LLC := $(CFG_LLVM_BINDIR)/llc$(X)
2011-05-03 01:37:52 -05:00
######################################################################
# Per-stage targets and runner
######################################################################
define SREQ
SREQ$(1) = stage$(1)/rustc$(X) \
stage$(1)/$$(CFG_RUNTIME) \
stage$(1)/$$(CFG_STDLIB) \
stage$(1)/$$(CFG_RUSTLLVM) \
stage$(1)/lib/glue.o \
stage$(1)/lib/main.o \
stage$(1)/lib/$$(CFG_RUNTIME) \
stage$(1)/lib/$$(CFG_STDLIB) \
$$(MKFILES)
STAGE$(1) := $$(Q)$$(call CFG_RUN_TARG,stage$(1),stage$(1), \
$$(CFG_VALGRIND_COMPILE) stage$(1)/rustc$$(X) \
$$(CFG_RUSTC_FLAGS))
endef
$(eval $(call SREQ,0))
$(eval $(call SREQ,1))
$(eval $(call SREQ,2))
$(eval $(call SREQ,3))
######################################################################
# Entrypoint rule
######################################################################
2011-03-16 11:17:32 -05:00
ifneq ($(CFG_IN_TRANSITION),)
CFG_INFO := $(info cfg:)
CFG_INFO := $(info cfg: *** compiler is in snapshot transition ***)
CFG_INFO := $(info cfg: *** stage2 and later will not be built ***)
CFG_INFO := $(info cfg:)
all: $(SREQ0) $(SREQ1) $(GENERATED) $(DOCS)
else
all: $(SREQ0) $(SREQ1) $(SREQ2) $(SREQ3) $(GENERATED) $(DOCS)
endif
######################################################################
# Re-configuration
######################################################################
config.mk: $(S)configure $(S)Makefile.in $(S)src/snapshots.txt
@$(call E, cfg: reconfiguring)
2011-06-30 15:41:20 -05:00
$(Q)$(S)configure $(CFG_CONFIGURE_ARGS)
2011-03-21 13:23:19 -05:00
######################################################################
2011-06-25 14:23:27 -05:00
# Primary-target makefiles
2011-03-21 13:23:19 -05:00
######################################################################
2011-05-04 20:28:30 -05:00
include $(CFG_SRC_DIR)/mk/intrinsics.mk
2011-05-01 15:18:52 -05:00
include $(CFG_SRC_DIR)/mk/stage0.mk
include $(CFG_SRC_DIR)/mk/stageN.mk
2011-05-01 15:18:52 -05:00
include $(CFG_SRC_DIR)/mk/rt.mk
include $(CFG_SRC_DIR)/mk/rustllvm.mk
include $(CFG_SRC_DIR)/mk/autodep.mk
include $(CFG_SRC_DIR)/mk/fuzzer.mk
2011-06-25 14:23:27 -05:00
include $(CFG_SRC_DIR)/mk/docs.mk
######################################################################
# Secondary makefiles, conditionalized for speed
######################################################################
2011-06-30 15:41:20 -05:00
ifneq ($(strip $(findstring dist,$(MAKECMDGOALS)) \
$(findstring check,$(MAKECMDGOALS)) \
$(findstring test,$(MAKECMDGOALS)) \
$(findstring tidy,$(MAKECMDGOALS)) \
2011-06-30 15:41:20 -05:00
$(findstring clean,$(MAKECMDGOALS))),)
CFG_INFO := $(info cfg: including dist rules)
2011-06-25 14:23:27 -05:00
include $(CFG_SRC_DIR)/mk/dist.mk
endif
2011-06-30 15:41:20 -05:00
ifneq ($(strip $(findstring snap,$(MAKECMDGOALS)) \
$(findstring clean,$(MAKECMDGOALS))),)
CFG_INFO := $(info cfg: including snap rules)
2011-06-25 14:23:27 -05:00
include $(CFG_SRC_DIR)/mk/snap.mk
endif
ifneq ($(findstring reformat,$(MAKECMDGOALS)),)
2011-06-30 15:41:20 -05:00
CFG_INFO := $(info cfg: including reformat rules)
2011-06-25 14:23:27 -05:00
include $(CFG_SRC_DIR)/mk/pp.mk
endif
2011-06-30 15:41:20 -05:00
ifneq ($(strip $(findstring check,$(MAKECMDGOALS)) \
$(findstring test,$(MAKECMDGOALS)) \
$(findstring tidy,$(MAKECMDGOALS))),)
CFG_INFO := $(info cfg: including test rules)
2011-06-25 14:23:27 -05:00
include $(CFG_SRC_DIR)/mk/tests.mk
endif
ifneq ($(findstring clean,$(MAKECMDGOALS)),)
2011-06-30 15:41:20 -05:00
CFG_INFO := $(info cfg: including clean rules)
2011-06-25 14:23:27 -05:00
include $(CFG_SRC_DIR)/mk/clean.mk
endif