Makefile.in 5.2 KB
Newer Older
1 2 3 4 5
######################################################################
# Residual auto-configuration
######################################################################

include config.mk
G
Graydon Hoare 已提交
6
MKFILES := Makefile config.mk $(wildcard $(CFG_SRC_DIR)/mk/*.mk)
7 8 9 10 11 12 13

ifneq ($(MAKE_RESTARTS),)
CFG_INFO := $(info cfg: make restarts: $(MAKE_RESTARTS))
endif

CFG_INFO := $(info cfg: building on $(CFG_OSTYPE) $(CFG_CPUTYPE))

14
CFG_BOOT_FLAGS := $(BOOT_FLAGS)
G
Graydon Hoare 已提交
15

16
ifdef CFG_DISABLE_OPTIMIZE
17
  $(info cfg: disabling rustc optimization (CFG_DISABLE_OPTIMIZE))
18
  CFG_RUSTC_FLAGS :=
19
else
20
  CFG_RUSTC_FLAGS := -O
21
endif
22

23
ifdef SAVE_TEMPS
24
  CFG_RUSTC_FLAGS += --save-temps
25
endif
26 27 28
ifdef TIME_PASSES
  CFG_RUSTC_FLAGS += --time-passes
endif
29 30 31
ifdef NO_TYPESTATE
  CFG_RUSTC_FLAGS += --no-typestate
endif
32

G
Graydon Hoare 已提交
33 34
# platform-specific auto-configuration
include $(CFG_SRC_DIR)/mk/platform.mk
35 36

CFG_RUNTIME :=$(call CFG_LIB_NAME,rustrt)
37
CFG_RUSTLLVM :=$(call CFG_LIB_NAME,rustllvm)
38 39
CFG_STDLIB :=$(call CFG_LIB_NAME,std)

40
ifdef CFG_OCAMLC_OPT
41
  $(info cfg: have ocaml native compiler)
42 43
  OPT=.opt
else
44
  $(info cfg: have only ocaml bytecode compiler)
45 46
endif

47 48
ifdef CFG_DISABLE_VALGRIND
  $(info cfg: disabling valgrind (CFG_DISABLE_VALGRIND))
49 50 51
  CFG_VALGRIND :=
endif

G
Graydon Hoare 已提交
52 53 54 55 56 57 58 59 60 61
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
62 63 64 65 66
  ifeq ($(CFG_TEX),)
    $(info cfg: no tex found, omitting doc/rust.pdf)
  else
    DOCS += doc/rust.pdf
  endif
G
Graydon Hoare 已提交
67 68
endif

69 70 71 72
ifdef CFG_DISABLE_DOCS
  $(info cfg: disabling doc build (CFG_DISABLE_DOCS))
  DOCS :=
endif
G
Graydon Hoare 已提交
73

74 75 76 77 78 79 80 81 82 83
######################################################################
# Target-and-rule "utility variables"
######################################################################

ifdef VERBOSE
  Q :=
  E =
else
  Q := @
  E = echo $(1)
84 85
endif

86 87 88 89 90 91 92
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.
93 94 95 96 97 98
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)
99 100

# "Source" files we generate in builddir along the way.
G
Graydon Hoare 已提交
101
GENERATED :=
102 103 104 105 106 107 108 109

# Delete the built-in rules.
.SUFFIXES:
%:: %,v
%:: RCS/%,v
%:: RCS/%
%:: s.%
%:: SCCS/s.%
110

111 112 113 114
######################################################################
# Standard library variables
######################################################################

G
Graydon Hoare 已提交
115
STDLIB_CRATE := $(S)src/lib/std.rc
116
STDLIB_INPUTS := $(wildcard $(addprefix $(S)src/lib/,*.rc *.rs */*.rs))
117 118

######################################################################
119
# rustc crate variables
120 121
######################################################################

G
Graydon Hoare 已提交
122
COMPILER_CRATE := $(S)src/comp/rustc.rc
123
COMPILER_INPUTS := $(wildcard $(addprefix $(S)src/comp/, \
124 125
                                rustc.rc *.rs */*.rs))

126
######################################################################
G
Graydon Hoare 已提交
127
# Main target dependency variables
128 129
######################################################################

130
LREQ := rt/$(CFG_RUNTIME) rustllvm/$(CFG_RUSTLLVM)
131 132 133 134
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)
135

G
Graydon Hoare 已提交
136

137 138 139 140 141 142 143
######################################################################
# Exports for sub-utilities
######################################################################

export CFG_SRC_DIR


144 145 146
######################################################################
# Single-target rules
######################################################################
147

148 149
all: boot/rustboot$(X)          \
     rt/$(CFG_RUNTIME)          \
150
     rustllvm/$(CFG_RUSTLLVM)   \
151
     stage0/$(CFG_STDLIB)       \
152
     stage0/rustc$(X)           \
G
Graydon Hoare 已提交
153
     $(GENERATED)               \
154 155
     $(DOCS)                    \
     stage1/$(CFG_STDLIB)       \
156 157 158 159 160
     stage1/glue.o              \
     stage1/rustc$(X)           \
     stage2/$(CFG_STDLIB)       \
     stage2/glue.o              \
     stage2/rustc$(X)
161 162 163
#     stage3/$(CFG_STDLIB)       \
#     stage3/glue.o              \
#     stage3/rustc$(X)           \
164

165 166 167 168 169 170 171 172 173 174

######################################################################
# Re-configuration
######################################################################

config.mk: $(S)configure $(S)Makefile.in
	@$(call E, cfg: reconfiguring)
	$(S)configure $(CFG_CONFIGURE_ARGS)


175
######################################################################
G
Graydon Hoare 已提交
176
# Additional makefiles
177 178
######################################################################

G
Graydon Hoare 已提交
179 180 181 182 183 184 185 186 187
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
188
include $(CFG_SRC_DIR)/mk/snap.mk
G
Graydon Hoare 已提交
189 190
include $(CFG_SRC_DIR)/mk/clean.mk
include $(CFG_SRC_DIR)/mk/autodep.mk