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 113 114 115 116 117 118 119

define DEF_DOC_TEST_HOST

doc-tutorial-extract$(1):
	@$$(call E, extract: tutorial tests)
	$$(Q)$$(EXTRACT_TESTS) $$(S)doc/tutorial.md $(1)/test/doc-tutorial

endef

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

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

B
Brian Anderson 已提交
124
define TEST_STAGEN
125

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

N
Niko Matsakis 已提交
133 134
check-stage$(1)-T-$(2)-H-$(3): tidy				\
	check-stage$(1)-T-$(2)-H-$(3)-rustc			\
135
        check-stage$(1)-T-$(2)-H-$(3)-core                      \
N
Niko Matsakis 已提交
136 137 138 139 140
	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			\
141
	check-stage$(1)-T-$(2)-H-$(3)-pretty                    \
B
Brian Anderson 已提交
142 143
        check-stage$(1)-T-$(2)-H-$(3)-rustdoc                   \
        check-stage$(1)-T-$(2)-H-$(3)-doc-tutorial
144

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

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

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

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

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

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

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

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

N
Niko Matsakis 已提交
169 170 171 172 173
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 已提交
174

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

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

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

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

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

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

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

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 已提交
206
# Rules for the standard library test runner
207

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

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

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

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

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

234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249
# 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 已提交
250
# Rules for the cfail/rfail/rpass/bench/perf test runner
251

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

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

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

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

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

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

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

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

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

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

B
Brian Anderson 已提交
319 320 321 322 323 324
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 已提交
325
check-stage$(1)-T-$(2)-H-$(3)-cfail-dummy:		\
N
Niko Matsakis 已提交
326
		$$(HBIN$(1)_H_$(3))/compiletest$$(X)	\
N
Niko Matsakis 已提交
327 328
		$$(SREQ$(1)_T_$(2)_H_$(3))		\
	        $$(CFAIL_TESTS)
N
Niko Matsakis 已提交
329 330 331
	@$$(call E, run cfail: $$<)
	$$(Q)$$(call CFG_RUN_CTEST,$(1),$$<,$(3)) \
		$$(CFAIL_ARGS$(1)-T-$(2)-H-$(3))
332

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

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

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

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

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

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

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

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

B
Brian Anderson 已提交
397 398 399 400 401 402 403 404
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 已提交
405
endef
406

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

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

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

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

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

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

N
Niko Matsakis 已提交
437 438 439 440 441 442
$(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 已提交
443

N
Niko Matsakis 已提交
444 445 446 447
$(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 已提交
448 449 450 451

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

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
465

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

endef

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

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

530
define DEF_CHECK_ALL_FOR_STAGE
N
Niko Matsakis 已提交
531

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

endef
582

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

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

endef

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

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