tests.mk 25.5 KB
Newer Older
G
Graydon Hoare 已提交
1 2 3 4
######################################################################
# Testing variables
######################################################################

5
RPASS_RC := $(wildcard $(S)src/test/run-pass/*.rc)
B
Brian Anderson 已提交
6
RPASS_RS := $(wildcard $(S)src/test/run-pass/*.rs)
7 8
RPASS_FULL_RC := $(wildcard $(S)src/test/run-pass-fulldeps/*.rc)
RPASS_FULL_RS := $(wildcard $(S)src/test/run-pass-fulldeps/*.rs)
9 10 11 12
RFAIL_RC := $(wildcard $(S)src/test/run-fail/*.rc)
RFAIL_RS := $(wildcard $(S)src/test/run-fail/*.rs)
CFAIL_RC := $(wildcard $(S)src/test/compile-fail/*.rc)
CFAIL_RS := $(wildcard $(S)src/test/compile-fail/*.rs)
13 14
BENCH_RS := $(wildcard $(S)src/test/bench/*.rs)
PRETTY_RS := $(wildcard $(S)src/test/pretty/*.rs)
G
Graydon Hoare 已提交
15

16 17 18 19
# perf tests are the same as bench tests only they run under
# a performance monitor.
PERF_RS := $(wildcard $(S)src/test/bench/*.rs)

B
Brian Anderson 已提交
20
RPASS_TESTS := $(RPASS_RC) $(RPASS_RS)
21
RPASS_FULL_TESTS := $(RPASS_FULL_RC) $(RPASS_FULL_RS)
B
Brian Anderson 已提交
22 23
RFAIL_TESTS := $(RFAIL_RC) $(RFAIL_RS)
CFAIL_TESTS := $(CFAIL_RC) $(CFAIL_RS)
24
BENCH_TESTS := $(BENCH_RS)
25
PERF_TESTS := $(PERF_RS)
26
PRETTY_TESTS := $(PRETTY_RS)
G
Graydon Hoare 已提交
27

28 29 30 31
FT := run_pass_stage2
FT_LIB := $(call CFG_LIB_NAME,$(FT))
FT_DRIVER := $(FT)_driver

B
Brian Anderson 已提交
32 33 34 35 36 37 38 39 40 41 42 43 44
# The arguments to all test runners
ifdef TESTNAME
  TESTARGS += $(TESTNAME)
endif

ifdef CHECK_XFAILS
  TESTARGS += --ignored
endif

# Arguments to the cfail/rfail/rpass/bench tests
ifdef CFG_VALGRIND
  CTEST_RUNTOOL = --runtool "$(CFG_VALGRIND)"
endif
45

46 47 48 49 50
# Arguments to the perf tests
ifdef CFG_PERF_TOOL
  CTEST_PERF_RUNTOOL = --runtool "$(CFG_PERF_TOOL)"
endif

B
Brian Anderson 已提交
51
CTEST_TESTARGS := $(TESTARGS)
G
Graydon Hoare 已提交
52

B
Brian Anderson 已提交
53 54 55
ifdef VERBOSE
  CTEST_TESTARGS += --verbose
endif
56

57 58
# Run the compiletest runner itself under valgrind
ifdef CTEST_VALGRIND
59
  CFG_RUN_CTEST=$(call CFG_RUN_TEST,$(2),$(3))
60
else
N
Niko Matsakis 已提交
61
  CFG_RUN_CTEST=$(call CFG_RUN,$(TLIB$(1)_T_$(3)_H_$(3)),$(2))
62
endif
63

64 65 66 67 68 69 70 71
# If we're running perf then set this environment variable
# to put the benchmarks into 'hard mode'
ifeq ($(MAKECMDGOALS),perf)
  RUST_BENCH=1
  export RUST_BENCH
endif


B
Brian Anderson 已提交
72 73 74 75
######################################################################
# Main test targets
######################################################################

76 77
.PHONY: cleantmptestlogs cleantestlibs

78 79
cleantmptestlogs:
	$(Q)rm -f tmp/*.log
80

81 82 83 84 85 86 87 88 89
cleantestlibs:
	$(Q)find $(CFG_HOST_TRIPLE)/test \
         -name '*.[odasS]' -o \
         -name '*.so' -o      \
         -name '*.dylib' -o   \
         -name '*.dll' -o     \
         -name '*.def' -o     \
         -name '*.bc' -o      \
         -name '*.dSYM' -o    \
90
         -name '*.libaux' -o      \
91 92
         -name '*.out' -o     \
         -name '*.err'        \
93
         | xargs rm -rf
94 95

check: cleantestlibs cleantmptestlogs tidy all check-stage2
96 97
	$(Q)$(S)src/etc/check-summary.py tmp/*.log

98 99
check-full: cleantestlibs cleantmptestlogs tidy \
            all check-stage1 check-stage2 check-stage3
100 101
	$(Q)$(S)src/etc/check-summary.py tmp/*.log

102
check-test: cleantestlibs cleantmptestlogs all check-stage2-rfail
103
	$(Q)$(S)src/etc/check-summary.py tmp/*.log
104

B
Brian Anderson 已提交
105 106 107 108 109
check-lite: cleantestlibs cleantmptestlogs rustc-stage2 \
	check-stage2-core check-stage2-std check-stage2-rpass \
	check-stage2-rfail check-stage2-cfail
	$(Q)$(S)src/etc/check-summary.py tmp/*.log

110
# Run the tidy script in multiple parts to avoid huge 'echo' commands
111
ifdef CFG_NOTIDY
B
Brian Anderson 已提交
112
tidy:
113
else
114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135

ALL_CS := $(wildcard $(S)src/rt/*.cpp \
                     $(S)src/rt/*/*.cpp \
                     $(S)src/rt/*/*/*.cpp \
                     $(S)srcrustllvm/*.cpp)
ALL_CS := $(filter-out $(S)src/rt/bigint/bigint_ext.cpp \
                       $(S)src/rt/bigint/bigint_int.cpp \
	,$(ALL_CS))
ALL_HS := $(wildcard $(S)src/rt/*.h \
                     $(S)src/rt/*/*.h \
                     $(S)src/rt/*/*/*.h \
                     $(S)srcrustllvm/*.h)
ALL_HS := $(filter-out $(S)src/rt/vg/valgrind.h \
                       $(S)src/rt/vg/memcheck.h \
                       $(S)src/rt/uthash/uthash.h \
                       $(S)src/rt/uthash/utlist.h \
                       $(S)src/rt/msvc/typeof.h \
                       $(S)src/rt/msvc/stdint.h \
                       $(S)src/rt/msvc/inttypes.h \
                       $(S)src/rt/bigint/bigint.h \
	,$(ALL_HS))

136 137
tidy:
		@$(call E, check: formatting)
138
		$(Q)find $(S)src -name '*.r[sc]' \
139
		| grep '^$(S)src/test' -v \
N
Niko Matsakis 已提交
140
		| xargs -n 10 python $(S)src/etc/tidy.py
141
		$(Q)find $(S)src/etc -name '*.py' \
142
		| xargs -n 10 python $(S)src/etc/tidy.py
143
		$(Q)echo $(ALL_CS) \
144
	  	| xargs -n 10 python $(S)src/etc/tidy.py
145
		$(Q)echo $(ALL_HS) \
146 147
	  	| xargs -n 10 python $(S)src/etc/tidy.py

148
endif
149

B
Brian Anderson 已提交
150 151 152 153
######################################################################
# Extracting tests for docs
######################################################################

154
EXTRACT_TESTS := "$(CFG_PYTHON)" $(S)src/etc/extract-tests.py
B
Brian Anderson 已提交
155 156 157 158 159

define DEF_DOC_TEST_HOST

doc-tutorial-extract$(1):
	@$$(call E, extract: tutorial tests)
160
	$$(Q)rm -f $(1)/test/doc-tutorial/*.rs
B
Brian Anderson 已提交
161 162
	$$(Q)$$(EXTRACT_TESTS) $$(S)doc/tutorial.md $(1)/test/doc-tutorial

163 164 165 166 167
doc-ref-extract$(1):
	@$$(call E, extract: ref tests)
	$$(Q)rm -f $(1)/test/doc-ref/*.rs
	$$(Q)$$(EXTRACT_TESTS) $$(S)doc/rust.md $(1)/test/doc-ref

B
Brian Anderson 已提交
168 169 170 171 172
endef

$(foreach host,$(CFG_TARGET_TRIPLES), \
 $(eval $(call DEF_DOC_TEST_HOST,$(host))))

173
######################################################################
B
Brian Anderson 已提交
174
# Rules for the test runners
175 176
######################################################################

B
Brian Anderson 已提交
177
define TEST_STAGEN
178

B
Brian Anderson 已提交
179
# All the per-stage build rules you might want to call from the
180 181 182
# command line.
#
# $(1) is the stage number
N
Niko Matsakis 已提交
183 184
# $(2) is the target triple to test
# $(3) is the host triple to test
185

186 187 188
# Prerequisites for compiletest tests
TEST_SREQ$(1)_T_$(2)_H_$(3) = \
	$$(HBIN$(1)_H_$(3))/compiletest$$(X) \
189
	$$(HSREQ$(1)_$(2)_$(3)) 
190

191 192 193 194 195
# Prerequisites for compiletest tests that have deps on librustc, etc
FULL_TEST_SREQ$(1)_T_$(2)_H_$(3) = \
	$$(HBIN$(1)_H_$(3))/compiletest$$(X) \
	$$(HSREQ$(1)_$(2)_$(3)) \
	$$(TLIBRUSTC_DEFAULT$(1)_T_$(2)_H_$(3))
196

N
Niko Matsakis 已提交
197 198
check-stage$(1)-T-$(2)-H-$(3): tidy				\
	check-stage$(1)-T-$(2)-H-$(3)-rustc			\
199
	check-stage$(1)-T-$(2)-H-$(3)-core          \
N
Niko Matsakis 已提交
200 201
	check-stage$(1)-T-$(2)-H-$(3)-std			\
	check-stage$(1)-T-$(2)-H-$(3)-rpass			\
202
	check-stage$(1)-T-$(2)-H-$(3)-rpass-full			\
N
Niko Matsakis 已提交
203 204 205
	check-stage$(1)-T-$(2)-H-$(3)-rfail			\
	check-stage$(1)-T-$(2)-H-$(3)-cfail			\
	check-stage$(1)-T-$(2)-H-$(3)-bench			\
206 207 208 209
	check-stage$(1)-T-$(2)-H-$(3)-pretty        \
    check-stage$(1)-T-$(2)-H-$(3)-rustdoc       \
    check-stage$(1)-T-$(2)-H-$(3)-doc-tutorial  \
    check-stage$(1)-T-$(2)-H-$(3)-doc-ref
210

211 212 213
check-stage$(1)-T-$(2)-H-$(3)-core:				\
	check-stage$(1)-T-$(2)-H-$(3)-core-dummy

N
Niko Matsakis 已提交
214 215
check-stage$(1)-T-$(2)-H-$(3)-std:				\
	check-stage$(1)-T-$(2)-H-$(3)-std-dummy
216

N
Niko Matsakis 已提交
217 218
check-stage$(1)-T-$(2)-H-$(3)-rustc:				\
	check-stage$(1)-T-$(2)-H-$(3)-rustc-dummy
219

N
Niko Matsakis 已提交
220 221
check-stage$(1)-T-$(2)-H-$(3)-cfail:				\
	check-stage$(1)-T-$(2)-H-$(3)-cfail-dummy
G
Graydon Hoare 已提交
222

N
Niko Matsakis 已提交
223 224
check-stage$(1)-T-$(2)-H-$(3)-rfail:				\
	check-stage$(1)-T-$(2)-H-$(3)-rfail-dummy
225

N
Niko Matsakis 已提交
226 227
check-stage$(1)-T-$(2)-H-$(3)-rpass:				\
	check-stage$(1)-T-$(2)-H-$(3)-rpass-dummy
228

229 230 231
check-stage$(1)-T-$(2)-H-$(3)-rpass-full:				\
	check-stage$(1)-T-$(2)-H-$(3)-rpass-full-dummy

N
Niko Matsakis 已提交
232 233
check-stage$(1)-T-$(2)-H-$(3)-bench:				\
	check-stage$(1)-T-$(2)-H-$(3)-bench-dummy
234

N
Niko Matsakis 已提交
235 236
check-stage$(1)-T-$(2)-H-$(3)-perf:				\
	check-stage$(1)-T-$(2)-H-$(3)-perf-dummy
237

N
Niko Matsakis 已提交
238 239
check-stage$(1)-T-$(2)-H-$(3)-pretty:			\
	check-stage$(1)-T-$(2)-H-$(3)-pretty-rpass	\
240
	check-stage$(1)-T-$(2)-H-$(3)-pretty-rpass-full	\
N
Niko Matsakis 已提交
241 242 243
    check-stage$(1)-T-$(2)-H-$(3)-pretty-rfail	\
    check-stage$(1)-T-$(2)-H-$(3)-pretty-bench	\
    check-stage$(1)-T-$(2)-H-$(3)-pretty-pretty
G
Graydon Hoare 已提交
244

N
Niko Matsakis 已提交
245 246
check-stage$(1)-T-$(2)-H-$(3)-pretty-rpass:			\
	check-stage$(1)-T-$(2)-H-$(3)-pretty-rpass-dummy
G
Graydon Hoare 已提交
247

248 249 250
check-stage$(1)-T-$(2)-H-$(3)-pretty-rpass-full:			\
	check-stage$(1)-T-$(2)-H-$(3)-pretty-rpass-full-dummy

N
Niko Matsakis 已提交
251 252
check-stage$(1)-T-$(2)-H-$(3)-pretty-rfail:			\
	check-stage$(1)-T-$(2)-H-$(3)-pretty-rfail-dummy
G
Graydon Hoare 已提交
253

N
Niko Matsakis 已提交
254 255
check-stage$(1)-T-$(2)-H-$(3)-pretty-bench:			\
	check-stage$(1)-T-$(2)-H-$(3)-pretty-bench-dummy
G
Graydon Hoare 已提交
256

N
Niko Matsakis 已提交
257 258
check-stage$(1)-T-$(2)-H-$(3)-pretty-pretty:				\
	check-stage$(1)-T-$(2)-H-$(3)-pretty-pretty-dummy
259

260 261 262
check-stage$(1)-T-$(2)-H-$(3)-rustdoc:				\
	check-stage$(1)-T-$(2)-H-$(3)-rustdoc-dummy

B
Brian Anderson 已提交
263 264 265
check-stage$(1)-T-$(2)-H-$(3)-doc-tutorial: \
	check-stage$(1)-T-$(2)-H-$(3)-doc-tutorial-dummy

266 267 268
check-stage$(1)-T-$(2)-H-$(3)-doc-ref: \
	check-stage$(1)-T-$(2)-H-$(3)-doc-ref-dummy

269 270 271 272 273 274
# Rules for the core library test runner

$(3)/test/coretest.stage$(1)-$(2)$$(X):			\
		$$(CORELIB_CRATE) $$(CORELIB_INPUTS)	\
        $$(SREQ$(1)_T_$(2)_H_$(3))
	@$$(call E, compile_and_link: $$@)
275
	$$(STAGE$(1)_T_$(2)_H_$(3)) -o $$@ $$< --test
276 277 278 279

check-stage$(1)-T-$(2)-H-$(3)-core-dummy:			\
		$(3)/test/coretest.stage$(1)-$(2)$$(X)
	@$$(call E, run: $$<)
280 281
	$$(Q)$$(call CFG_RUN_TEST,$$<,$(2),$(3)) $$(TESTARGS)	\
	--logfile tmp/check-stage$(1)-T-$(2)-H-$(3)-core.log
282

B
Brian Anderson 已提交
283
# Rules for the standard library test runner
284

N
Niko Matsakis 已提交
285
$(3)/test/stdtest.stage$(1)-$(2)$$(X):			\
286
		$$(STDLIB_CRATE) $$(STDLIB_INPUTS)	\
N
Niko Matsakis 已提交
287
        $$(SREQ$(1)_T_$(2)_H_$(3))
B
Brian Anderson 已提交
288
	@$$(call E, compile_and_link: $$@)
N
Niko Matsakis 已提交
289
	$$(STAGE$(1)_T_$(2)_H_$(3)) -o $$@ $$< --test
290

N
Niko Matsakis 已提交
291
check-stage$(1)-T-$(2)-H-$(3)-std-dummy:			\
N
Niko Matsakis 已提交
292
		$(3)/test/stdtest.stage$(1)-$(2)$$(X)
B
Brian Anderson 已提交
293
	@$$(call E, run: $$<)
294 295
	$$(Q)$$(call CFG_RUN_TEST,$$<,$(2),$(3)) $$(TESTARGS)	\
	--logfile tmp/check-stage$(1)-T-$(2)-H-$(3)-std.log
296

B
Brian Anderson 已提交
297
# Rules for the rustc test runner
298

N
Niko Matsakis 已提交
299 300 301 302
$(3)/test/rustctest.stage$(1)-$(2)$$(X):					\
		$$(COMPILER_CRATE)									\
		$$(COMPILER_INPUTS)									\
		$$(SREQ$(1)_T_$(2)_H_$(3))							\
N
Niko Matsakis 已提交
303
		$$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_RUSTLLVM)
B
Brian Anderson 已提交
304
	@$$(call E, compile_and_link: $$@)
N
Niko Matsakis 已提交
305
	$$(STAGE$(1)_T_$(2)_H_$(3)) -o $$@ $$< --test
306

N
Niko Matsakis 已提交
307
check-stage$(1)-T-$(2)-H-$(3)-rustc-dummy:		\
N
Niko Matsakis 已提交
308
		$(3)/test/rustctest.stage$(1)-$(2)$$(X)
B
Brian Anderson 已提交
309
	@$$(call E, run: $$<)
310 311
	$$(Q)$$(call CFG_RUN_TEST,$$<,$(2),$(3)) $$(TESTARGS)   \
	--logfile tmp/check-stage$(1)-T-$(2)-H-$(3)-rustc.log
312

313 314 315 316 317 318 319 320 321 322 323 324 325 326
# Rules for the rustdoc test runner

$(3)/test/rustdoctest.stage$(1)-$(2)$$(X):					\
		$$(RUSTDOC_CRATE) $$(RUSTDOC_INPUTS)		\
		$$(TSREQ$(1)_T_$(2)_H_$(3))					\
		$$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_CORELIB)  \
		$$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_STDLIB)   \
		$$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_LIBRUSTC)
	@$$(call E, compile_and_link: $$@)
	$$(STAGE$(1)_T_$(2)_H_$(3)) -o $$@ $$< --test

check-stage$(1)-T-$(2)-H-$(3)-rustdoc-dummy:		\
		$(3)/test/rustdoctest.stage$(1)-$(2)$$(X)
	@$$(call E, run: $$<)
327 328
	$$(Q)$$(call CFG_RUN_TEST,$$<,$(2),$(3)) $$(TESTARGS)	\
	--logfile tmp/check-stage$(1)-T-$(2)-H-$(3)-rustdoc.log
329

B
Brian Anderson 已提交
330
# Rules for the cfail/rfail/rpass/bench/perf test runner
331

N
Niko Matsakis 已提交
332
CTEST_COMMON_ARGS$(1)-T-$(2)-H-$(3) :=						\
N
Niko Matsakis 已提交
333 334 335
		--compile-lib-path $$(HLIB$(1)_H_$(3))				\
        --run-lib-path $$(TLIB$(1)_T_$(2)_H_$(3))			\
        --rustc-path $$(HBIN$(1)_H_$(3))/rustc$$(X)			\
336
        --aux-base $$(S)src/test/auxiliary/                 \
N
Niko Matsakis 已提交
337
        --stage-id stage$(1)-$(2)							\
N
Niko Matsakis 已提交
338
        --rustcflags "$$(CFG_RUSTC_FLAGS) --target=$(2)"	\
N
Niko Matsakis 已提交
339 340
        $$(CTEST_TESTARGS)

341
CFAIL_ARGS$(1)-T-$(2)-H-$(3) :=					\
N
Niko Matsakis 已提交
342 343
		$$(CTEST_COMMON_ARGS$(1)-T-$(2)-H-$(3))	\
        --src-base $$(S)src/test/compile-fail/	\
344
        --build-base $(3)/test/compile-fail/	\
N
Niko Matsakis 已提交
345 346
        --mode compile-fail

347
RFAIL_ARGS$(1)-T-$(2)-H-$(3) :=					\
N
Niko Matsakis 已提交
348 349
		$$(CTEST_COMMON_ARGS$(1)-T-$(2)-H-$(3))	\
        --src-base $$(S)src/test/run-fail/		\
350
        --build-base $(3)/test/run-fail/		\
N
Niko Matsakis 已提交
351
        --mode run-fail							\
N
Niko Matsakis 已提交
352 353
        $$(CTEST_RUNTOOL)

N
Niko Matsakis 已提交
354
RPASS_ARGS$(1)-T-$(2)-H-$(3) :=				\
N
Niko Matsakis 已提交
355 356
		$$(CTEST_COMMON_ARGS$(1)-T-$(2)-H-$(3))	\
        --src-base $$(S)src/test/run-pass/		\
357
        --build-base $(3)/test/run-pass/		\
N
Niko Matsakis 已提交
358
        --mode run-pass					\
N
Niko Matsakis 已提交
359 360
        $$(CTEST_RUNTOOL)

361 362 363 364 365 366 367
RPASS_FULL_ARGS$(1)-T-$(2)-H-$(3) :=				\
		$$(CTEST_COMMON_ARGS$(1)-T-$(2)-H-$(3))	\
        --src-base $$(S)src/test/run-pass-fulldeps/		\
        --build-base $(3)/test/run-pass-fulldeps/		\
        --mode run-pass					\
        $$(CTEST_RUNTOOL)

N
Niko Matsakis 已提交
368
BENCH_ARGS$(1)-T-$(2)-H-$(3) :=				\
N
Niko Matsakis 已提交
369 370
		$$(CTEST_COMMON_ARGS$(1)-T-$(2)-H-$(3))	\
        --src-base $$(S)src/test/bench/			\
371
        --build-base $(3)/test/bench/			\
N
Niko Matsakis 已提交
372
        --mode run-pass					\
N
Niko Matsakis 已提交
373 374
        $$(CTEST_RUNTOOL)

375
PERF_ARGS$(1)-T-$(2)-H-$(3) :=					\
N
Niko Matsakis 已提交
376 377
		$$(CTEST_COMMON_ARGS$(1)-T-$(2)-H-$(3))	\
        --src-base $$(S)src/test/bench/			\
378
        --build-base $(3)/test/perf/			\
N
Niko Matsakis 已提交
379
        --mode run-pass							\
N
Niko Matsakis 已提交
380 381
        $$(CTEST_PERF_RUNTOOL)

382
PRETTY_RPASS_ARGS$(1)-T-$(2)-H-$(3) :=			\
N
Niko Matsakis 已提交
383 384
		$$(CTEST_COMMON_ARGS$(1)-T-$(2)-H-$(3))	\
        --src-base $$(S)src/test/run-pass/		\
385
        --build-base $(3)/test/run-pass/		\
N
Niko Matsakis 已提交
386 387
        --mode pretty

388 389 390 391 392 393
PRETTY_RPASS_FULL_ARGS$(1)-T-$(2)-H-$(3) :=			\
		$$(CTEST_COMMON_ARGS$(1)-T-$(2)-H-$(3))	\
        --src-base $$(S)src/test/run-pass-fulldeps/		\
        --build-base $(3)/test/run-pass-fulldeps/		\
        --mode pretty

394
PRETTY_RFAIL_ARGS$(1)-T-$(2)-H-$(3) :=			\
N
Niko Matsakis 已提交
395 396
		$$(CTEST_COMMON_ARGS$(1)-T-$(2)-H-$(3))	\
        --src-base $$(S)src/test/run-fail/		\
397
        --build-base $(3)/test/run-fail/		\
N
Niko Matsakis 已提交
398 399
        --mode pretty

400
PRETTY_BENCH_ARGS$(1)-T-$(2)-H-$(3) :=			\
N
Niko Matsakis 已提交
401 402
		$$(CTEST_COMMON_ARGS$(1)-T-$(2)-H-$(3))	\
        --src-base $$(S)src/test/bench/			\
403
        --build-base $(3)/test/bench/			\
N
Niko Matsakis 已提交
404 405
        --mode pretty

406
PRETTY_PRETTY_ARGS$(1)-T-$(2)-H-$(3) :=			\
N
Niko Matsakis 已提交
407 408
		$$(CTEST_COMMON_ARGS$(1)-T-$(2)-H-$(3))	\
        --src-base $$(S)src/test/pretty/		\
409
        --build-base $(3)/test/pretty/			\
N
Niko Matsakis 已提交
410 411
        --mode pretty

B
Brian Anderson 已提交
412 413 414 415 416 417
DOC_TUTORIAL_ARGS$(1)-T-$(2)-H-$(3) :=			\
		$$(CTEST_COMMON_ARGS$(1)-T-$(2)-H-$(3))	\
        --src-base $(3)/test/doc-tutorial/		\
        --build-base $(3)/test/doc-tutorial/		\
        --mode run-pass

418 419 420 421 422 423
DOC_REF_ARGS$(1)-T-$(2)-H-$(3) :=			\
		$$(CTEST_COMMON_ARGS$(1)-T-$(2)-H-$(3))	\
        --src-base $(3)/test/doc-ref/			\
        --build-base $(3)/test/doc-ref/			\
        --mode run-pass

N
Niko Matsakis 已提交
424
check-stage$(1)-T-$(2)-H-$(3)-cfail-dummy:		\
425
		$$(TEST_SREQ$(1)_T_$(2)_H_$(3))		\
N
Niko Matsakis 已提交
426
	        $$(CFAIL_TESTS)
N
Niko Matsakis 已提交
427 428
	@$$(call E, run cfail: $$<)
	$$(Q)$$(call CFG_RUN_CTEST,$(1),$$<,$(3)) \
429 430
		$$(CFAIL_ARGS$(1)-T-$(2)-H-$(3)) \
		--logfile tmp/check-stage$(1)-T-$(2)-H-$(3)-cfail.log
431

N
Niko Matsakis 已提交
432
check-stage$(1)-T-$(2)-H-$(3)-rfail-dummy:		\
433
		$$(TEST_SREQ$(1)_T_$(2)_H_$(3))		\
N
Niko Matsakis 已提交
434
		$$(RFAIL_TESTS)
N
Niko Matsakis 已提交
435 436
	@$$(call E, run rfail: $$<)
	$$(Q)$$(call CFG_RUN_CTEST,$(1),$$<,$(3)) \
437 438
		$$(RFAIL_ARGS$(1)-T-$(2)-H-$(3)) \
		--logfile tmp/check-stage$(1)-T-$(2)-H-$(3)-rfail.log
B
Brian Anderson 已提交
439

N
Niko Matsakis 已提交
440
check-stage$(1)-T-$(2)-H-$(3)-rpass-dummy:		\
441
		$$(TEST_SREQ$(1)_T_$(2)_H_$(3))		\
N
Niko Matsakis 已提交
442
	        $$(RPASS_TESTS)
443
	@$$(call E, run rpass-full: $$<)
N
Niko Matsakis 已提交
444
	$$(Q)$$(call CFG_RUN_CTEST,$(1),$$<,$(3)) \
445 446
		$$(RPASS_ARGS$(1)-T-$(2)-H-$(3)) \
		--logfile tmp/check-stage$(1)-T-$(2)-H-$(3)-rpass.log
B
Brian Anderson 已提交
447

448 449 450 451 452 453 454 455
check-stage$(1)-T-$(2)-H-$(3)-rpass-full-dummy:		\
		$$(FULL_TEST_SREQ$(1)_T_$(2)_H_$(3))		\
	        $$(RPASS_FULL_TESTS)
	@$$(call E, run rpass: $$<)
	$$(Q)$$(call CFG_RUN_CTEST,$(1),$$<,$(3)) \
		$$(RPASS_FULL_ARGS$(1)-T-$(2)-H-$(3)) \
		--logfile tmp/check-stage$(1)-T-$(2)-H-$(3)-rpass-full.log

N
Niko Matsakis 已提交
456
check-stage$(1)-T-$(2)-H-$(3)-bench-dummy:		\
457
		$$(TEST_SREQ$(1)_T_$(2)_H_$(3))		\
N
Niko Matsakis 已提交
458
		$$(BENCH_TESTS)
N
Niko Matsakis 已提交
459 460
	@$$(call E, run bench: $$<)
	$$(Q)$$(call CFG_RUN_CTEST,$(1),$$<,$(3)) \
461 462
		$$(BENCH_ARGS$(1)-T-$(2)-H-$(3)) \
		--logfile tmp/check-stage$(1)-T-$(2)-H-$(3)-bench.log
463

N
Niko Matsakis 已提交
464
check-stage$(1)-T-$(2)-H-$(3)-perf-dummy:		\
465
	        $$(TEST_SREQ$(1)_T_$(2)_H_$(3))		\
N
Niko Matsakis 已提交
466
	        $$(BENCH_TESTS)
467
	@$$(call E, perf: $$<)
N
Niko Matsakis 已提交
468
	$$(Q)$$(call CFG_RUN_CTEST,$(1),$$<,$(3)) \
469 470
		$$(PERF_ARGS$(1)-T-$(2)-H-$(3)) \
		--logfile tmp/check-stage$(1)-T-$(2)-H-$(3)-perf.log
471

N
Niko Matsakis 已提交
472
check-stage$(1)-T-$(2)-H-$(3)-pretty-rpass-dummy:	\
473
	        $$(TEST_SREQ$(1)_T_$(2)_H_$(3))		\
N
Niko Matsakis 已提交
474
	        $$(RPASS_TESTS)
N
Niko Matsakis 已提交
475 476
	@$$(call E, run pretty-rpass: $$<)
	$$(Q)$$(call CFG_RUN_CTEST,$(1),$$<,$(3)) \
477 478
		$$(PRETTY_RPASS_ARGS$(1)-T-$(2)-H-$(3)) \
		--logfile tmp/check-stage$(1)-T-$(2)-H-$(3)-pretty-rpass.log
479

480 481 482 483 484 485 486 487
check-stage$(1)-T-$(2)-H-$(3)-pretty-rpass-full-dummy:	\
	        $$(FULL_TEST_SREQ$(1)_T_$(2)_H_$(3))		\
	        $$(RPASS_FULL_TESTS)
	@$$(call E, run pretty-rpass-full: $$<)
	$$(Q)$$(call CFG_RUN_CTEST,$(1),$$<,$(3)) \
		$$(PRETTY_RPASS_FULL_ARGS$(1)-T-$(2)-H-$(3)) \
		--logfile tmp/check-stage$(1)-T-$(2)-H-$(3)-pretty-rpass-full.log

N
Niko Matsakis 已提交
488
check-stage$(1)-T-$(2)-H-$(3)-pretty-rfail-dummy:	\
489
	        $$(TEST_SREQ$(1)_T_$(2)_H_$(3))		\
N
Niko Matsakis 已提交
490
	        $$(RFAIL_TESTS)
N
Niko Matsakis 已提交
491 492
	@$$(call E, run pretty-rfail: $$<)
	$$(Q)$$(call CFG_RUN_CTEST,$(1),$$<,$(3)) \
493 494
		$$(PRETTY_RFAIL_ARGS$(1)-T-$(2)-H-$(3)) \
		--logfile tmp/check-stage$(1)-T-$(2)-H-$(3)-pretty-rfail.log
495

N
Niko Matsakis 已提交
496
check-stage$(1)-T-$(2)-H-$(3)-pretty-bench-dummy:	\
497
		$$(TEST_SREQ$(1)_T_$(2)_H_$(3))		\
N
Niko Matsakis 已提交
498
	        $$(BENCH_TESTS)
N
Niko Matsakis 已提交
499 500
	@$$(call E, run pretty-bench: $$<)
	$$(Q)$$(call CFG_RUN_CTEST,$(1),$$<,$(3)) \
501 502
		$$(PRETTY_BENCH_ARGS$(1)-T-$(2)-H-$(3)) \
		--logfile tmp/check-stage$(1)-T-$(2)-H-$(3)-pretty-bench.log
503

N
Niko Matsakis 已提交
504
check-stage$(1)-T-$(2)-H-$(3)-pretty-pretty-dummy:	\
505
	        $$(TEST_SREQ$(1)_T_$(2)_H_$(3))		\
N
Niko Matsakis 已提交
506
	        $$(PRETTY_TESTS)
N
Niko Matsakis 已提交
507 508
	@$$(call E, run pretty-pretty: $$<)
	$$(Q)$$(call CFG_RUN_CTEST,$(1),$$<,$(3)) \
509 510
		$$(PRETTY_PRETTY_ARGS$(1)-T-$(2)-H-$(3)) \
		--logfile tmp/check-stage$(1)-T-$(2)-H-$(3)-pretty-pretty.log
511

B
Brian Anderson 已提交
512
check-stage$(1)-T-$(2)-H-$(3)-doc-tutorial-dummy:       \
513
	        $$(TEST_SREQ$(1)_T_$(2)_H_$(3))		\
B
Brian Anderson 已提交
514 515 516
                doc-tutorial-extract$(3)
	@$$(call E, run doc-tutorial: $$<)
	$$(Q)$$(call CFG_RUN_CTEST,$(1),$$<,$(3)) \
517 518
                $$(DOC_TUTORIAL_ARGS$(1)-T-$(2)-H-$(3)) \
		--logfile tmp/check-stage$(1)-T-$(2)-H-$(3)-doc-tutorial.log
B
Brian Anderson 已提交
519

520
check-stage$(1)-T-$(2)-H-$(3)-doc-ref-dummy:            \
521
	        $$(TEST_SREQ$(1)_T_$(2)_H_$(3))		\
522 523 524
                doc-ref-extract$(3)
	@$$(call E, run doc-ref: $$<)
	$$(Q)$$(call CFG_RUN_CTEST,$(1),$$<,$(3)) \
525 526
                $$(DOC_REF_ARGS$(1)-T-$(2)-H-$(3)) \
		--logfile tmp/check-stage$(1)-T-$(2)-H-$(3)-doc-ref.log
527

B
Brian Anderson 已提交
528
endef
529

530
# Instantiate the template for stage 0, 1, 2, 3
531

N
Niko Matsakis 已提交
532 533 534 535
$(foreach host,$(CFG_TARGET_TRIPLES), \
 $(eval $(foreach target,$(CFG_TARGET_TRIPLES), \
  $(eval $(foreach stage,$(STAGES), \
   $(eval $(call TEST_STAGEN,$(stage),$(target),$(host))))))))
B
Brian Anderson 已提交
536

N
Niko Matsakis 已提交
537 538 539
######################################################################
# Fast-test rules
######################################################################
540

541
GENERATED += tmp/$(FT).rc tmp/$(FT_DRIVER).rs
N
Niko Matsakis 已提交
542

N
Niko Matsakis 已提交
543
tmp/$(FT).rc tmp/$(FT_DRIVER).rs: \
544
		$(RPASS_TESTS) \
N
Niko Matsakis 已提交
545 546 547
		$(S)src/etc/combine-tests.py
	@$(call E, check: building combined stage2 test runner)
	$(Q)$(S)src/etc/combine-tests.py
N
Niko Matsakis 已提交
548 549 550 551 552 553 554 555 556 557

define DEF_CHECK_FAST_FOR_T_H
# $(1) unused
# $(2) target triple
# $(3) host triple

$$(TLIB2_T_$(2)_H_$(3))/$$(FT_LIB): \
		tmp/$$(FT).rc \
		$$(SREQ2_T_$(2)_H_$(3))
	@$$(call E, compile_and_link: $$@)
N
Niko Matsakis 已提交
558
	$$(STAGE2_T_$(2)_H_$(3)) --lib -o $$@ $$<
N
Niko Matsakis 已提交
559

N
Niko Matsakis 已提交
560 561 562 563 564
$(3)/test/$$(FT_DRIVER)-$(2)$$(X): \
		tmp/$$(FT_DRIVER).rs \
		$$(TLIB2_T_$(2)_H_$(3))/$$(FT_LIB) \
		$$(SREQ2_T_$(2)_H_$(3))
	@$$(call E, compile_and_link: $$@ $$<)
565
	$$(STAGE2_T_$(2)_H_$(3)) -o $$@ $$<
N
Niko Matsakis 已提交
566

N
Niko Matsakis 已提交
567 568 569
$(3)/test/$$(FT_DRIVER)-$(2).out: \
		$(3)/test/$$(FT_DRIVER)-$(2)$$(X) \
		$$(SREQ2_T_$(2)_H_$(3))
570 571
	$$(Q)$$(call CFG_RUN_TEST,$$<,$(2),$(3)) \
	--logfile tmp/$$(FT_DRIVER)-$(2).log
N
Niko Matsakis 已提交
572 573 574

check-fast-T-$(2)-H-$(3): tidy			\
	check-stage2-T-$(2)-H-$(3)-rustc	\
575
	check-stage2-T-$(2)-H-$(3)-core		\
N
Niko Matsakis 已提交
576
	check-stage2-T-$(2)-H-$(3)-std		\
N
Niko Matsakis 已提交
577
	$(3)/test/$$(FT_DRIVER)-$(2).out
N
Niko Matsakis 已提交
578 579 580 581 582 583 584 585 586 587 588 589

endef

$(foreach host,$(CFG_TARGET_TRIPLES), \
 $(eval $(foreach target,$(CFG_TARGET_TRIPLES), \
   $(eval $(call DEF_CHECK_FAST_FOR_T_H,,$(target),$(host))))))

######################################################################
# Shortcut rules
######################################################################

define DEF_CHECK_FOR_STAGE_H
590

591 592 593 594 595 596 597 598 599
check-stage$(1)-H-$(2):					\
	$$(foreach target,$$(CFG_TARGET_TRIPLES),	\
	 check-stage$(1)-T-$$(target)-H-$(2))
check-stage$(1)-H-$(2)-perf:					\
	$$(foreach target,$$(CFG_TARGET_TRIPLES),	\
	 check-stage$(1)-T-$$(target)-H-$(2)-perf)
check-stage$(1)-H-$(2)-rustc:					\
	$$(foreach target,$$(CFG_TARGET_TRIPLES),	\
	 check-stage$(1)-T-$$(target)-H-$(2)-rustc)
600 601 602
check-stage$(1)-H-$(2)-core:					\
	$$(foreach target,$$(CFG_TARGET_TRIPLES),	\
	 check-stage$(1)-T-$$(target)-H-$(2)-core)
603 604 605 606 607 608
check-stage$(1)-H-$(2)-std:					\
	$$(foreach target,$$(CFG_TARGET_TRIPLES),	\
	 check-stage$(1)-T-$$(target)-H-$(2)-std)
check-stage$(1)-H-$(2)-rpass:					\
	$$(foreach target,$$(CFG_TARGET_TRIPLES),	\
	 check-stage$(1)-T-$$(target)-H-$(2)-rpass)
609 610 611
check-stage$(1)-H-$(2)-rpass-full:					\
	$$(foreach target,$$(CFG_TARGET_TRIPLES),	\
	 check-stage$(1)-T-$$(target)-H-$(2)-rpass-full)
612 613 614 615 616 617 618 619 620
check-stage$(1)-H-$(2)-rfail:					\
	$$(foreach target,$$(CFG_TARGET_TRIPLES),	\
	 check-stage$(1)-T-$$(target)-H-$(2)-rfail)
check-stage$(1)-H-$(2)-cfail:					\
	$$(foreach target,$$(CFG_TARGET_TRIPLES),	\
	 check-stage$(1)-T-$$(target)-H-$(2)-cfail)
check-stage$(1)-H-$(2)-bench:					\
	$$(foreach target,$$(CFG_TARGET_TRIPLES),	\
	 check-stage$(1)-T-$$(target)-H-$(2)-bench)
621 622 623 624 625 626
check-stage$(1)-H-$(2)-pretty:					\
	$$(foreach target,$$(CFG_TARGET_TRIPLES),	\
	 check-stage$(1)-T-$$(target)-H-$(2)-pretty)
check-stage$(1)-H-$(2)-pretty-rpass:				\
	$$(foreach target,$$(CFG_TARGET_TRIPLES),	\
	 check-stage$(1)-T-$$(target)-H-$(2)-pretty-rpass)
627 628 629
check-stage$(1)-H-$(2)-pretty-rpass-full:				\
	$$(foreach target,$$(CFG_TARGET_TRIPLES),	\
	 check-stage$(1)-T-$$(target)-H-$(2)-pretty-rpass-full)
630 631 632 633 634 635 636 637 638
check-stage$(1)-H-$(2)-pretty-rfail:				\
	$$(foreach target,$$(CFG_TARGET_TRIPLES),	\
	 check-stage$(1)-T-$$(target)-H-$(2)-pretty-rfail)
check-stage$(1)-H-$(2)-pretty-bench:				\
	$$(foreach target,$$(CFG_TARGET_TRIPLES),	\
	 check-stage$(1)-T-$$(target)-H-$(2)-pretty-bench)
check-stage$(1)-H-$(2)-pretty-pretty:				\
	$$(foreach target,$$(CFG_TARGET_TRIPLES),	\
	 check-stage$(1)-T-$$(target)-H-$(2)-pretty-pretty)
639 640 641
check-stage$(1)-H-$(2)-rustdoc:					\
	$$(foreach target,$$(CFG_TARGET_TRIPLES),	\
	 check-stage$(1)-T-$$(target)-H-$(2)-rustdoc)
B
Brian Anderson 已提交
642 643 644
check-stage$(1)-H-$(2)-doc-tutorial:				\
	$$(foreach target,$$(CFG_TARGET_TRIPLES),	\
	 check-stage$(1)-T-$$(target)-H-$(2)-doc-tutorial)
645 646 647
check-stage$(1)-H-$(2)-doc-ref:				\
	$$(foreach target,$$(CFG_TARGET_TRIPLES),	\
	 check-stage$(1)-T-$$(target)-H-$(2)-doc-ref)
648 649 650

endef

N
Niko Matsakis 已提交
651
$(foreach stage,$(STAGES),					\
N
Niko Matsakis 已提交
652
 $(eval $(foreach target,$(CFG_TARGET_TRIPLES),			\
N
Niko Matsakis 已提交
653 654 655 656 657 658 659
  $(eval $(call DEF_CHECK_FOR_STAGE_H,$(stage),$(target))))))

define DEF_CHECK_FAST_FOR_H

check-fast-H-$(1): 		check-fast-T-$(1)-H-$(1)

endef
N
Niko Matsakis 已提交
660

N
Niko Matsakis 已提交
661 662 663
$(foreach target,$(CFG_TARGET_TRIPLES),			\
 $(eval $(call DEF_CHECK_FAST_FOR_H,$(target))))

664
define DEF_CHECK_ALL_FOR_STAGE
N
Niko Matsakis 已提交
665

666
check-stage$(1)-H-all: \
667 668
	$$(foreach target,$$(CFG_TARGET_TRIPLES),	\
	 check-stage$(1)-H-$$(target))
669
check-stage$(1)-H-all-perf: \
670 671
	$$(foreach target,$$(CFG_TARGET_TRIPLES),	\
	 check-stage$(1)-H-$$(target)-perf)
672
check-stage$(1)-H-all-rustc: \
673 674
	$$(foreach target,$$(CFG_TARGET_TRIPLES),	\
	 check-stage$(1)-H-$$(target)-rustc)
675 676 677
check-stage$(1)-H-all-core: \
	$$(foreach target,$$(CFG_TARGET_TRIPLES),	\
	 check-stage$(1)-H-$$(target)-core)
678
check-stage$(1)-H-all-std: \
679 680
	$$(foreach target,$$(CFG_TARGET_TRIPLES),	\
	 check-stage$(1)-H-$$(target)-std)
681
check-stage$(1)-H-all-rpass: \
682 683
	$$(foreach target,$$(CFG_TARGET_TRIPLES),	\
	 check-stage$(1)-H-$$(target)-rpass)
684 685 686
check-stage$(1)-H-all-rpass-full: \
	$$(foreach target,$$(CFG_TARGET_TRIPLES),	\
	 check-stage$(1)-H-$$(target)-rpass-full)
687
check-stage$(1)-H-all-rfail: \
688 689
	$$(foreach target,$$(CFG_TARGET_TRIPLES),	\
	 check-stage$(1)-H-$$(target)-rfail)
690
check-stage$(1)-H-all-cfail: \
691 692
	$$(foreach target,$$(CFG_TARGET_TRIPLES),	\
	 check-stage$(1)-H-$$(target)-cfail)
693
check-stage$(1)-H-all-bench: \
694 695
	$$(foreach target,$$(CFG_TARGET_TRIPLES),	\
	 check-stage$(1)-H-$$(target)-bench)
696 697 698 699 700 701
check-stage$(1)-H-all-pretty: \
	$$(foreach target,$$(CFG_TARGET_TRIPLES),	\
	 check-stage$(1)-H-$$(target)-pretty)
check-stage$(1)-H-all-pretty-rpass: \
	$$(foreach target,$$(CFG_TARGET_TRIPLES),	\
	 check-stage$(1)-H-$$(target)-pretty-rpass)
702 703 704
check-stage$(1)-H-all-pretty-rpass-full: \
	$$(foreach target,$$(CFG_TARGET_TRIPLES),	\
	 check-stage$(1)-H-$$(target)-pretty-rpass-full)
705 706 707 708 709 710 711 712 713
check-stage$(1)-H-all-pretty-rfail: \
	$$(foreach target,$$(CFG_TARGET_TRIPLES),	\
	 check-stage$(1)-H-$$(target)-pretty-rfail)
check-stage$(1)-H-all-pretty-bench: \
	$$(foreach target,$$(CFG_TARGET_TRIPLES),	\
	 check-stage$(1)-H-$$(target)-pretty-bench)
check-stage$(1)-H-all-pretty-pretty: \
	$$(foreach target,$$(CFG_TARGET_TRIPLES),	\
	 check-stage$(1)-H-$$(target)-pretty-pretty)
714 715 716
check-stage$(1)-H-all-rustdoc: \
	$$(foreach target,$$(CFG_TARGET_TRIPLES),	\
	 check-stage$(1)-H-$$(target)-rustdoc)
B
Brian Anderson 已提交
717 718 719
check-stage$(1)-H-all-doc-tutorial: \
	$$(foreach target,$$(CFG_TARGET_TRIPLES),	\
	 check-stage$(1)-H-$$(target)-doc-tutorial)
720 721 722
check-stage$(1)-H-all-doc-ref: \
	$$(foreach target,$$(CFG_TARGET_TRIPLES),	\
	 check-stage$(1)-H-$$(target)-doc-ref)
N
Niko Matsakis 已提交
723 724

endef
725

726
$(foreach stage,$(STAGES),						\
727
 $(eval $(call DEF_CHECK_ALL_FOR_STAGE,$(stage))))
728 729 730 731 732 733

define DEF_CHECK_FOR_STAGE

check-stage$(1): check-stage$(1)-H-$$(CFG_HOST_TRIPLE)
check-stage$(1)-perf: check-stage$(1)-H-$$(CFG_HOST_TRIPLE)-perf
check-stage$(1)-rustc: check-stage$(1)-H-$$(CFG_HOST_TRIPLE)-rustc
734
check-stage$(1)-core: check-stage$(1)-H-$$(CFG_HOST_TRIPLE)-core
735 736
check-stage$(1)-std: check-stage$(1)-H-$$(CFG_HOST_TRIPLE)-std
check-stage$(1)-rpass: check-stage$(1)-H-$$(CFG_HOST_TRIPLE)-rpass
737
check-stage$(1)-rpass-full: check-stage$(1)-H-$$(CFG_HOST_TRIPLE)-rpass-full
738 739 740
check-stage$(1)-rfail: check-stage$(1)-H-$$(CFG_HOST_TRIPLE)-rfail
check-stage$(1)-cfail: check-stage$(1)-H-$$(CFG_HOST_TRIPLE)-cfail
check-stage$(1)-bench: check-stage$(1)-H-$$(CFG_HOST_TRIPLE)-bench
741 742
check-stage$(1)-pretty: check-stage$(1)-H-$$(CFG_HOST_TRIPLE)-pretty
check-stage$(1)-pretty-rpass: check-stage$(1)-H-$$(CFG_HOST_TRIPLE)-pretty-rpass
743
check-stage$(1)-pretty-rpass-full: check-stage$(1)-H-$$(CFG_HOST_TRIPLE)-pretty-rpass-full
744 745 746
check-stage$(1)-pretty-rfail: check-stage$(1)-H-$$(CFG_HOST_TRIPLE)-pretty-rfail
check-stage$(1)-pretty-bench: check-stage$(1)-H-$$(CFG_HOST_TRIPLE)-pretty-bench
check-stage$(1)-pretty-pretty: check-stage$(1)-H-$$(CFG_HOST_TRIPLE)-pretty-pretty
747
check-stage$(1)-rustdoc: check-stage$(1)-H-$$(CFG_HOST_TRIPLE)-rustdoc
B
Brian Anderson 已提交
748
check-stage$(1)-doc-tutorial: check-stage$(1)-H-$$(CFG_HOST_TRIPLE)-doc-tutorial
749
check-stage$(1)-doc-ref: check-stage$(1)-H-$$(CFG_HOST_TRIPLE)-doc-ref
750 751 752

endef

N
Niko Matsakis 已提交
753
$(foreach stage,$(STAGES),						\
N
Niko Matsakis 已提交
754
 $(eval $(call DEF_CHECK_FOR_STAGE,$(stage))))
B
Brian Anderson 已提交
755

756
check-fast: check-fast-H-$(CFG_HOST_TRIPLE)