tests.mk 20.0 KB
Newer Older
G
Graydon Hoare 已提交
1 2 3 4 5 6 7 8
######################################################################
# Testing variables
######################################################################

ALL_TEST_INPUTS = $(wildcard $(S)src/test/*/*.rs   \
                              $(S)src/test/*/*/*.rs \
                              $(S)src/test/*/*.rc)

9
RPASS_RC := $(wildcard $(S)src/test/run-pass/*.rc)
B
Brian Anderson 已提交
10
RPASS_RS := $(wildcard $(S)src/test/run-pass/*.rs)
11 12 13 14
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)
15 16
BENCH_RS := $(wildcard $(S)src/test/bench/*.rs)
PRETTY_RS := $(wildcard $(S)src/test/pretty/*.rs)
G
Graydon Hoare 已提交
17

18 19 20 21
# 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 已提交
22 23 24
RPASS_TESTS := $(RPASS_RC) $(RPASS_RS)
RFAIL_TESTS := $(RFAIL_RC) $(RFAIL_RS)
CFAIL_TESTS := $(CFAIL_RC) $(CFAIL_RS)
25
BENCH_TESTS := $(BENCH_RS)
26
PERF_TESTS := $(PERF_RS)
27
PRETTY_TESTS := $(PRETTY_RS)
G
Graydon Hoare 已提交
28

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

B
Brian Anderson 已提交
33 34 35 36 37 38 39 40 41 42 43 44 45
# 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
46

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

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

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

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

B
Brian Anderson 已提交
65 66 67 68
######################################################################
# Main test targets
######################################################################

69
check: tidy all check-stage2 \
70

71
check-full: tidy all check-stage1 check-stage2 check-stage3 \
72

73
# Run the tidy script in multiple parts to avoid huge 'echo' commands
74
ifdef CFG_NOTIDY
B
Brian Anderson 已提交
75
tidy:
76 77 78 79 80 81 82 83 84 85
else
tidy:
		@$(call E, check: formatting)
		$(Q)echo \
	  	  $(addprefix $(S)src/, $(RUSTLLVM_LIB_CS) $(RUSTLLVM_OBJS_CS) \
	    	  $(RUSTLLVM_HDR) \
                $(RUNTIME_CS) $(RUNTIME_HDR) $(RUNTIME_S)) \
              $(wildcard $(S)src/etc/*.py)  \
              $(COMPILER_CRATE) \
              $(COMPILER_INPUTS) \
86 87
              $(CORELIB_CRATE) \
              $(CORELIB_INPUTS) \
88 89 90 91
              $(STDLIB_CRATE) \
              $(STDLIB_INPUTS) \
              $(COMPILETEST_CRATE) \
              $(COMPILETEST_INPUTS) \
92 93
              $(CARGO_CRATE) \
              $(CARGO_INPUTS) \
94 95
              $(RUSTDOC_CRATE) \
              $(RUSTDOC_INPUTS) \
96 97 98 99 100
		  | xargs -n 10 python $(S)src/etc/tidy.py
		$(Q)echo \
              $(ALL_TEST_INPUTS) \
	  	| xargs -n 10 python $(S)src/etc/tidy.py
endif
101

B
Brian Anderson 已提交
102 103 104 105 106

######################################################################
# Extracting tests for docs
######################################################################

107
EXTRACT_TESTS := "$(CFG_PYTHON)" $(S)src/etc/extract-tests.py
B
Brian Anderson 已提交
108 109 110 111 112

define DEF_DOC_TEST_HOST

doc-tutorial-extract$(1):
	@$$(call E, extract: tutorial tests)
113
	$$(Q)rm -f $(1)/test/doc-tutorial/*.rs
B
Brian Anderson 已提交
114 115 116 117 118 119 120
	$$(Q)$$(EXTRACT_TESTS) $$(S)doc/tutorial.md $(1)/test/doc-tutorial

endef

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

121
######################################################################
B
Brian Anderson 已提交
122
# Rules for the test runners
123 124
######################################################################

B
Brian Anderson 已提交
125
define TEST_STAGEN
126

B
Brian Anderson 已提交
127
# All the per-stage build rules you might want to call from the
128 129 130
# command line.
#
# $(1) is the stage number
N
Niko Matsakis 已提交
131 132
# $(2) is the target triple to test
# $(3) is the host triple to test
133

N
Niko Matsakis 已提交
134 135
check-stage$(1)-T-$(2)-H-$(3): tidy				\
	check-stage$(1)-T-$(2)-H-$(3)-rustc			\
136
        check-stage$(1)-T-$(2)-H-$(3)-core                      \
N
Niko Matsakis 已提交
137 138 139 140 141
	check-stage$(1)-T-$(2)-H-$(3)-std			\
	check-stage$(1)-T-$(2)-H-$(3)-rpass			\
	check-stage$(1)-T-$(2)-H-$(3)-rfail			\
	check-stage$(1)-T-$(2)-H-$(3)-cfail			\
	check-stage$(1)-T-$(2)-H-$(3)-bench			\
142
	check-stage$(1)-T-$(2)-H-$(3)-pretty                    \
B
Brian Anderson 已提交
143 144
        check-stage$(1)-T-$(2)-H-$(3)-rustdoc                   \
        check-stage$(1)-T-$(2)-H-$(3)-doc-tutorial
145

146 147 148
check-stage$(1)-T-$(2)-H-$(3)-core:				\
	check-stage$(1)-T-$(2)-H-$(3)-core-dummy

N
Niko Matsakis 已提交
149 150
check-stage$(1)-T-$(2)-H-$(3)-std:				\
	check-stage$(1)-T-$(2)-H-$(3)-std-dummy
151

N
Niko Matsakis 已提交
152 153
check-stage$(1)-T-$(2)-H-$(3)-rustc:				\
	check-stage$(1)-T-$(2)-H-$(3)-rustc-dummy
154

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

N
Niko Matsakis 已提交
158 159
check-stage$(1)-T-$(2)-H-$(3)-rfail:				\
	check-stage$(1)-T-$(2)-H-$(3)-rfail-dummy
160

N
Niko Matsakis 已提交
161 162
check-stage$(1)-T-$(2)-H-$(3)-rpass:				\
	check-stage$(1)-T-$(2)-H-$(3)-rpass-dummy
163

N
Niko Matsakis 已提交
164 165
check-stage$(1)-T-$(2)-H-$(3)-bench:				\
	check-stage$(1)-T-$(2)-H-$(3)-bench-dummy
166

N
Niko Matsakis 已提交
167 168
check-stage$(1)-T-$(2)-H-$(3)-perf:				\
	check-stage$(1)-T-$(2)-H-$(3)-perf-dummy
169

N
Niko Matsakis 已提交
170 171 172 173 174
check-stage$(1)-T-$(2)-H-$(3)-pretty:			\
	check-stage$(1)-T-$(2)-H-$(3)-pretty-rpass	\
    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 已提交
175

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

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

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

N
Niko Matsakis 已提交
185 186
check-stage$(1)-T-$(2)-H-$(3)-pretty-pretty:				\
	check-stage$(1)-T-$(2)-H-$(3)-pretty-pretty-dummy
187

188 189 190
check-stage$(1)-T-$(2)-H-$(3)-rustdoc:				\
	check-stage$(1)-T-$(2)-H-$(3)-rustdoc-dummy

B
Brian Anderson 已提交
191 192 193
check-stage$(1)-T-$(2)-H-$(3)-doc-tutorial: \
	check-stage$(1)-T-$(2)-H-$(3)-doc-tutorial-dummy

194 195 196 197 198 199
# 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: $$@)
200
	$$(STAGE$(1)_T_$(2)_H_$(3)) -o $$@ $$< --test
201 202 203 204 205 206

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

B
Brian Anderson 已提交
207
# Rules for the standard library test runner
208

N
Niko Matsakis 已提交
209
$(3)/test/stdtest.stage$(1)-$(2)$$(X):			\
210
		$$(STDLIB_CRATE) $$(STDLIB_INPUTS)	\
N
Niko Matsakis 已提交
211
        $$(SREQ$(1)_T_$(2)_H_$(3))
B
Brian Anderson 已提交
212
	@$$(call E, compile_and_link: $$@)
N
Niko Matsakis 已提交
213
	$$(STAGE$(1)_T_$(2)_H_$(3)) -o $$@ $$< --test
214

N
Niko Matsakis 已提交
215
check-stage$(1)-T-$(2)-H-$(3)-std-dummy:			\
N
Niko Matsakis 已提交
216
		$(3)/test/stdtest.stage$(1)-$(2)$$(X)
B
Brian Anderson 已提交
217
	@$$(call E, run: $$<)
218
	$$(Q)$$(call CFG_RUN_TEST,$$<,$(2),$(3)) $$(TESTARGS)
219

B
Brian Anderson 已提交
220
# Rules for the rustc test runner
221

N
Niko Matsakis 已提交
222 223 224 225
$(3)/test/rustctest.stage$(1)-$(2)$$(X):					\
		$$(COMPILER_CRATE)									\
		$$(COMPILER_INPUTS)									\
		$$(SREQ$(1)_T_$(2)_H_$(3))							\
N
Niko Matsakis 已提交
226
		$$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_RUSTLLVM)
B
Brian Anderson 已提交
227
	@$$(call E, compile_and_link: $$@)
N
Niko Matsakis 已提交
228
	$$(STAGE$(1)_T_$(2)_H_$(3)) -o $$@ $$< --test
229

N
Niko Matsakis 已提交
230
check-stage$(1)-T-$(2)-H-$(3)-rustc-dummy:		\
N
Niko Matsakis 已提交
231
		$(3)/test/rustctest.stage$(1)-$(2)$$(X)
B
Brian Anderson 已提交
232
	@$$(call E, run: $$<)
233
	$$(Q)$$(call CFG_RUN_TEST,$$<,$(2),$(3)) $$(TESTARGS)
234

235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250
# 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: $$<)
	$$(Q)$$(call CFG_RUN_TEST,$$<,$(2),$(3)) $$(TESTARGS)

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

N
Niko Matsakis 已提交
253
CTEST_COMMON_ARGS$(1)-T-$(2)-H-$(3) :=						\
N
Niko Matsakis 已提交
254 255 256
		--compile-lib-path $$(HLIB$(1)_H_$(3))				\
        --run-lib-path $$(TLIB$(1)_T_$(2)_H_$(3))			\
        --rustc-path $$(HBIN$(1)_H_$(3))/rustc$$(X)			\
257
        --aux-base $$(S)src/test/auxiliary/                 \
N
Niko Matsakis 已提交
258
        --stage-id stage$(1)-$(2)							\
N
Niko Matsakis 已提交
259
        --rustcflags "$$(CFG_RUSTC_FLAGS) --target=$(2)"	\
N
Niko Matsakis 已提交
260 261
        $$(CTEST_TESTARGS)

262
CFAIL_ARGS$(1)-T-$(2)-H-$(3) :=					\
N
Niko Matsakis 已提交
263 264
		$$(CTEST_COMMON_ARGS$(1)-T-$(2)-H-$(3))	\
        --src-base $$(S)src/test/compile-fail/	\
265
        --build-base $(3)/test/compile-fail/	\
N
Niko Matsakis 已提交
266 267
        --mode compile-fail

268
RFAIL_ARGS$(1)-T-$(2)-H-$(3) :=					\
N
Niko Matsakis 已提交
269 270
		$$(CTEST_COMMON_ARGS$(1)-T-$(2)-H-$(3))	\
        --src-base $$(S)src/test/run-fail/		\
271
        --build-base $(3)/test/run-fail/		\
N
Niko Matsakis 已提交
272
        --mode run-fail							\
N
Niko Matsakis 已提交
273 274
        $$(CTEST_RUNTOOL)

N
Niko Matsakis 已提交
275
RPASS_ARGS$(1)-T-$(2)-H-$(3) :=				\
N
Niko Matsakis 已提交
276 277
		$$(CTEST_COMMON_ARGS$(1)-T-$(2)-H-$(3))	\
        --src-base $$(S)src/test/run-pass/		\
278
        --build-base $(3)/test/run-pass/		\
N
Niko Matsakis 已提交
279
        --mode run-pass					\
N
Niko Matsakis 已提交
280 281
        $$(CTEST_RUNTOOL)

N
Niko Matsakis 已提交
282
BENCH_ARGS$(1)-T-$(2)-H-$(3) :=				\
N
Niko Matsakis 已提交
283 284
		$$(CTEST_COMMON_ARGS$(1)-T-$(2)-H-$(3))	\
        --src-base $$(S)src/test/bench/			\
285
        --build-base $(3)/test/bench/			\
N
Niko Matsakis 已提交
286
        --mode run-pass					\
N
Niko Matsakis 已提交
287 288
        $$(CTEST_RUNTOOL)

289
PERF_ARGS$(1)-T-$(2)-H-$(3) :=					\
N
Niko Matsakis 已提交
290 291
		$$(CTEST_COMMON_ARGS$(1)-T-$(2)-H-$(3))	\
        --src-base $$(S)src/test/bench/			\
292
        --build-base $(3)/test/perf/			\
N
Niko Matsakis 已提交
293
        --mode run-pass							\
N
Niko Matsakis 已提交
294 295
        $$(CTEST_PERF_RUNTOOL)

296
PRETTY_RPASS_ARGS$(1)-T-$(2)-H-$(3) :=			\
N
Niko Matsakis 已提交
297 298
		$$(CTEST_COMMON_ARGS$(1)-T-$(2)-H-$(3))	\
        --src-base $$(S)src/test/run-pass/		\
299
        --build-base $(3)/test/run-pass/		\
N
Niko Matsakis 已提交
300 301
        --mode pretty

302
PRETTY_RFAIL_ARGS$(1)-T-$(2)-H-$(3) :=			\
N
Niko Matsakis 已提交
303 304
		$$(CTEST_COMMON_ARGS$(1)-T-$(2)-H-$(3))	\
        --src-base $$(S)src/test/run-fail/		\
305
        --build-base $(3)/test/run-fail/		\
N
Niko Matsakis 已提交
306 307
        --mode pretty

308
PRETTY_BENCH_ARGS$(1)-T-$(2)-H-$(3) :=			\
N
Niko Matsakis 已提交
309 310
		$$(CTEST_COMMON_ARGS$(1)-T-$(2)-H-$(3))	\
        --src-base $$(S)src/test/bench/			\
311
        --build-base $(3)/test/bench/			\
N
Niko Matsakis 已提交
312 313
        --mode pretty

314
PRETTY_PRETTY_ARGS$(1)-T-$(2)-H-$(3) :=			\
N
Niko Matsakis 已提交
315 316
		$$(CTEST_COMMON_ARGS$(1)-T-$(2)-H-$(3))	\
        --src-base $$(S)src/test/pretty/		\
317
        --build-base $(3)/test/pretty/			\
N
Niko Matsakis 已提交
318 319
        --mode pretty

B
Brian Anderson 已提交
320 321 322 323 324 325
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

N
Niko Matsakis 已提交
326
check-stage$(1)-T-$(2)-H-$(3)-cfail-dummy:		\
N
Niko Matsakis 已提交
327
		$$(HBIN$(1)_H_$(3))/compiletest$$(X)	\
N
Niko Matsakis 已提交
328 329
		$$(SREQ$(1)_T_$(2)_H_$(3))		\
	        $$(CFAIL_TESTS)
N
Niko Matsakis 已提交
330 331 332
	@$$(call E, run cfail: $$<)
	$$(Q)$$(call CFG_RUN_CTEST,$(1),$$<,$(3)) \
		$$(CFAIL_ARGS$(1)-T-$(2)-H-$(3))
333

N
Niko Matsakis 已提交
334
check-stage$(1)-T-$(2)-H-$(3)-rfail-dummy:		\
N
Niko Matsakis 已提交
335
		$$(HBIN$(1)_H_$(3))/compiletest$$(X)	\
N
Niko Matsakis 已提交
336 337
		$$(SREQ$(1)_T_$(2)_H_$(3))		\
		$$(RFAIL_TESTS)
N
Niko Matsakis 已提交
338 339 340
	@$$(call E, run rfail: $$<)
	$$(Q)$$(call CFG_RUN_CTEST,$(1),$$<,$(3)) \
		$$(RFAIL_ARGS$(1)-T-$(2)-H-$(3))
B
Brian Anderson 已提交
341

N
Niko Matsakis 已提交
342
check-stage$(1)-T-$(2)-H-$(3)-rpass-dummy:		\
N
Niko Matsakis 已提交
343
		$$(HBIN$(1)_H_$(3))/compiletest$$(X)	\
N
Niko Matsakis 已提交
344 345
		$$(SREQ$(1)_T_$(2)_H_$(3))		\
	        $$(RPASS_TESTS)
N
Niko Matsakis 已提交
346 347 348
	@$$(call E, run rpass: $$<)
	$$(Q)$$(call CFG_RUN_CTEST,$(1),$$<,$(3)) \
		$$(RPASS_ARGS$(1)-T-$(2)-H-$(3))
B
Brian Anderson 已提交
349

N
Niko Matsakis 已提交
350
check-stage$(1)-T-$(2)-H-$(3)-bench-dummy:		\
N
Niko Matsakis 已提交
351
		$$(HBIN$(1)_H_$(3))/compiletest$$(X)	\
N
Niko Matsakis 已提交
352 353
		$$(SREQ$(1)_T_$(2)_H_$(3))		\
		$$(BENCH_TESTS)
N
Niko Matsakis 已提交
354 355 356
	@$$(call E, run bench: $$<)
	$$(Q)$$(call CFG_RUN_CTEST,$(1),$$<,$(3)) \
		$$(BENCH_ARGS$(1)-T-$(2)-H-$(3))
357

N
Niko Matsakis 已提交
358
check-stage$(1)-T-$(2)-H-$(3)-perf-dummy:		\
N
Niko Matsakis 已提交
359
		$$(HBIN$(1)_H_$(3))/compiletest$$(X)	\
N
Niko Matsakis 已提交
360 361
	        $$(SREQ$(1)_T_$(2)_H_$(3))		\
	        $$(BENCH_TESTS)
362
	@$$(call E, perf: $$<)
N
Niko Matsakis 已提交
363 364
	$$(Q)$$(call CFG_RUN_CTEST,$(1),$$<,$(3)) \
		$$(PERF_ARGS$(1)-T-$(2)-H-$(3))
365

N
Niko Matsakis 已提交
366
check-stage$(1)-T-$(2)-H-$(3)-pretty-rpass-dummy:	\
N
Niko Matsakis 已提交
367 368 369
		$$(HBIN$(1)_H_$(3))/compiletest$$(X)	\
	        $$(SREQ$(1)_T_$(2)_H_$(3))		\
	        $$(RPASS_TESTS)
N
Niko Matsakis 已提交
370 371 372
	@$$(call E, run pretty-rpass: $$<)
	$$(Q)$$(call CFG_RUN_CTEST,$(1),$$<,$(3)) \
		$$(PRETTY_RPASS_ARGS$(1)-T-$(2)-H-$(3))
373

N
Niko Matsakis 已提交
374
check-stage$(1)-T-$(2)-H-$(3)-pretty-rfail-dummy:	\
N
Niko Matsakis 已提交
375 376 377
		$$(HBIN$(1)_H_$(3))/compiletest$$(X)	\
	        $$(SREQ$(1)_T_$(2)_H_$(3))		\
	        $$(RFAIL_TESTS)
N
Niko Matsakis 已提交
378 379 380
	@$$(call E, run pretty-rfail: $$<)
	$$(Q)$$(call CFG_RUN_CTEST,$(1),$$<,$(3)) \
		$$(PRETTY_RFAIL_ARGS$(1)-T-$(2)-H-$(3))
381

N
Niko Matsakis 已提交
382
check-stage$(1)-T-$(2)-H-$(3)-pretty-bench-dummy:	\
N
Niko Matsakis 已提交
383 384 385
		$$(HBIN$(1)_H_$(3))/compiletest$$(X)	\
		$$(SREQ$(1)_T_$(2)_H_$(3))		\
	        $$(BENCH_TESTS)
N
Niko Matsakis 已提交
386 387 388
	@$$(call E, run pretty-bench: $$<)
	$$(Q)$$(call CFG_RUN_CTEST,$(1),$$<,$(3)) \
		$$(PRETTY_BENCH_ARGS$(1)-T-$(2)-H-$(3))
389

N
Niko Matsakis 已提交
390
check-stage$(1)-T-$(2)-H-$(3)-pretty-pretty-dummy:	\
N
Niko Matsakis 已提交
391 392 393
		$$(HBIN$(1)_H_$(3))/compiletest$$(X)	\
	        $$(SREQ$(1)_T_$(2)_H_$(3))		\
	        $$(PRETTY_TESTS)
N
Niko Matsakis 已提交
394 395 396
	@$$(call E, run pretty-pretty: $$<)
	$$(Q)$$(call CFG_RUN_CTEST,$(1),$$<,$(3)) \
		$$(PRETTY_PRETTY_ARGS$(1)-T-$(2)-H-$(3))
397

B
Brian Anderson 已提交
398 399 400 401 402 403 404 405
check-stage$(1)-T-$(2)-H-$(3)-doc-tutorial-dummy:       \
		$$(HBIN$(1)_H_$(3))/compiletest$$(X)	\
	        $$(SREQ$(1)_T_$(2)_H_$(3))		\
                doc-tutorial-extract$(3)
	@$$(call E, run doc-tutorial: $$<)
	$$(Q)$$(call CFG_RUN_CTEST,$(1),$$<,$(3)) \
                $$(DOC_TUTORIAL_ARGS$(1)-T-$(2)-H-$(3))

B
Brian Anderson 已提交
406
endef
407

408
# Instantiate the template for stage 0, 1, 2, 3
409

N
Niko Matsakis 已提交
410 411 412 413
$(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 已提交
414

N
Niko Matsakis 已提交
415 416 417
######################################################################
# Fast-test rules
######################################################################
418

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

N
Niko Matsakis 已提交
421
tmp/$(FT).rc tmp/$(FT_DRIVER).rs: \
422
		$(RPASS_TESTS) \
N
Niko Matsakis 已提交
423 424 425
		$(S)src/etc/combine-tests.py
	@$(call E, check: building combined stage2 test runner)
	$(Q)$(S)src/etc/combine-tests.py
N
Niko Matsakis 已提交
426 427 428 429 430 431 432 433 434 435

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 已提交
436
	$$(STAGE2_T_$(2)_H_$(3)) --lib -o $$@ $$<
N
Niko Matsakis 已提交
437

N
Niko Matsakis 已提交
438 439 440 441 442 443
$(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: $$@ $$<)
	$$(STAGE2_T_$(2)_H_$(3)) -L $$(TLIB2_T_$(2)_H_$(3)) -o $$@ $$<
N
Niko Matsakis 已提交
444

N
Niko Matsakis 已提交
445 446 447 448
$(3)/test/$$(FT_DRIVER)-$(2).out: \
		$(3)/test/$$(FT_DRIVER)-$(2)$$(X) \
		$$(SREQ2_T_$(2)_H_$(3))
	$$(Q)$$(call CFG_RUN_TEST,$$<,$(2),$(3))
N
Niko Matsakis 已提交
449 450 451 452

check-fast-T-$(2)-H-$(3): tidy			\
	check-stage2-T-$(2)-H-$(3)-rustc	\
	check-stage2-T-$(2)-H-$(3)-std		\
N
Niko Matsakis 已提交
453
	$(3)/test/$$(FT_DRIVER)-$(2).out
N
Niko Matsakis 已提交
454 455 456 457 458 459 460 461 462 463 464 465

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
466

467 468 469 470 471 472 473 474 475
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)
476 477 478
check-stage$(1)-H-$(2)-core:					\
	$$(foreach target,$$(CFG_TARGET_TRIPLES),	\
	 check-stage$(1)-T-$$(target)-H-$(2)-core)
479 480 481 482 483 484 485 486 487 488 489 490 491 492 493
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)
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)
494 495 496 497 498 499 500 501 502 503 504 505 506 507 508
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)
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)
509 510 511
check-stage$(1)-H-$(2)-rustdoc:					\
	$$(foreach target,$$(CFG_TARGET_TRIPLES),	\
	 check-stage$(1)-T-$$(target)-H-$(2)-rustdoc)
B
Brian Anderson 已提交
512 513 514
check-stage$(1)-H-$(2)-doc-tutorial:				\
	$$(foreach target,$$(CFG_TARGET_TRIPLES),	\
	 check-stage$(1)-T-$$(target)-H-$(2)-doc-tutorial)
515 516 517

endef

N
Niko Matsakis 已提交
518
$(foreach stage,$(STAGES),					\
N
Niko Matsakis 已提交
519
 $(eval $(foreach target,$(CFG_TARGET_TRIPLES),			\
N
Niko Matsakis 已提交
520 521 522 523 524 525 526
  $(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 已提交
527

N
Niko Matsakis 已提交
528 529 530
$(foreach target,$(CFG_TARGET_TRIPLES),			\
 $(eval $(call DEF_CHECK_FAST_FOR_H,$(target))))

531
define DEF_CHECK_ALL_FOR_STAGE
N
Niko Matsakis 已提交
532

533
check-stage$(1)-H-all: \
534 535
	$$(foreach target,$$(CFG_TARGET_TRIPLES),	\
	 check-stage$(1)-H-$$(target))
536
check-stage$(1)-H-all-perf: \
537 538
	$$(foreach target,$$(CFG_TARGET_TRIPLES),	\
	 check-stage$(1)-H-$$(target)-perf)
539
check-stage$(1)-H-all-rustc: \
540 541
	$$(foreach target,$$(CFG_TARGET_TRIPLES),	\
	 check-stage$(1)-H-$$(target)-rustc)
542 543 544
check-stage$(1)-H-all-core: \
	$$(foreach target,$$(CFG_TARGET_TRIPLES),	\
	 check-stage$(1)-H-$$(target)-core)
545
check-stage$(1)-H-all-std: \
546 547
	$$(foreach target,$$(CFG_TARGET_TRIPLES),	\
	 check-stage$(1)-H-$$(target)-std)
548
check-stage$(1)-H-all-rpass: \
549 550
	$$(foreach target,$$(CFG_TARGET_TRIPLES),	\
	 check-stage$(1)-H-$$(target)-rpass)
551
check-stage$(1)-H-all-rfail: \
552 553
	$$(foreach target,$$(CFG_TARGET_TRIPLES),	\
	 check-stage$(1)-H-$$(target)-rfail)
554
check-stage$(1)-H-all-cfail: \
555 556
	$$(foreach target,$$(CFG_TARGET_TRIPLES),	\
	 check-stage$(1)-H-$$(target)-cfail)
557
check-stage$(1)-H-all-bench: \
558 559
	$$(foreach target,$$(CFG_TARGET_TRIPLES),	\
	 check-stage$(1)-H-$$(target)-bench)
560 561 562 563 564 565 566 567 568 569 570 571 572 573 574
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)
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)
575 576 577
check-stage$(1)-H-all-rustdoc: \
	$$(foreach target,$$(CFG_TARGET_TRIPLES),	\
	 check-stage$(1)-H-$$(target)-rustdoc)
B
Brian Anderson 已提交
578 579 580
check-stage$(1)-H-all-doc-tutorial: \
	$$(foreach target,$$(CFG_TARGET_TRIPLES),	\
	 check-stage$(1)-H-$$(target)-doc-tutorial)
N
Niko Matsakis 已提交
581 582

endef
583

584
$(foreach stage,$(STAGES),						\
585
 $(eval $(call DEF_CHECK_ALL_FOR_STAGE,$(stage))))
586 587 588 589 590 591

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
592
check-stage$(1)-core: check-stage$(1)-H-$$(CFG_HOST_TRIPLE)-core
593 594 595 596 597
check-stage$(1)-std: check-stage$(1)-H-$$(CFG_HOST_TRIPLE)-std
check-stage$(1)-rpass: check-stage$(1)-H-$$(CFG_HOST_TRIPLE)-rpass
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
598 599 600 601 602
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
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
603
check-stage$(1)-rustdoc: check-stage$(1)-H-$$(CFG_HOST_TRIPLE)-rustdoc
B
Brian Anderson 已提交
604
check-stage$(1)-doc-tutorial: check-stage$(1)-H-$$(CFG_HOST_TRIPLE)-doc-tutorial
605 606 607

endef

N
Niko Matsakis 已提交
608
$(foreach stage,$(STAGES),						\
N
Niko Matsakis 已提交
609
 $(eval $(call DEF_CHECK_FOR_STAGE,$(stage))))
B
Brian Anderson 已提交
610

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