tests.mk 12.7 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 33
FT := run_pass_stage2
FT_LIB := $(call CFG_LIB_NAME,$(FT))
FT_DRIVER := $(FT)_driver
GENERATED += test/$(FT).rc test/$(FT_DRIVER).rs

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

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

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

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

B
Brian Anderson 已提交
59 60 61
# The standard library test crate
STDTEST_CRATE := $(S)src/test/stdtest/stdtest.rc
STDTEST_INPUTS := $(wildcard $(S)src/test/stdtest/*rs)
62

63 64 65 66
# Run the compiletest runner itself under valgrind
ifdef CTEST_VALGRIND
  CFG_RUN_CTEST=$(call CFG_RUN_TEST,$(2))
else
N
Niko Matsakis 已提交
67
  CFG_RUN_CTEST=$(call CFG_RUN,$(TLIB$(1)_T_$(3)_H_$(3)),$(2))
68
endif
69

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

check: tidy check-stage2 \
75

B
Brian Anderson 已提交
76
check-full: tidy check-stage1 check-stage2 check-stage3 \
77

78
check-fast: tidy \
B
Brian Anderson 已提交
79
	check-stage2-rustc check-stage2-std \
N
Niko Matsakis 已提交
80
	test/$(FT_DRIVER).out
81

82
# Run the tidy script in multiple parts to avoid huge 'echo' commands
83
ifdef CFG_NOTIDY
B
Brian Anderson 已提交
84
tidy:
85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103
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) \
              $(STDLIB_CRATE) \
              $(STDLIB_INPUTS) \
              $(COMPILETEST_CRATE) \
              $(COMPILETEST_INPUTS) \
		  | xargs -n 10 python $(S)src/etc/tidy.py
		$(Q)echo \
              $(ALL_TEST_INPUTS) \
	  	| xargs -n 10 python $(S)src/etc/tidy.py
endif
104 105

######################################################################
B
Brian Anderson 已提交
106
# Rules for the test runners
107 108
######################################################################

B
Brian Anderson 已提交
109
define TEST_STAGEN
110

B
Brian Anderson 已提交
111
# All the per-stage build rules you might want to call from the
112 113 114
# command line.
#
# $(1) is the stage number
N
Niko Matsakis 已提交
115 116
# $(2) is the target triple to test
# $(3) is the host triple to test
117

N
Niko Matsakis 已提交
118 119 120 121 122 123 124 125
check-stage$(1)-T-$(2)-H-$(3): tidy				\
	check-stage$(1)-T-$(2)-H-$(3)-rustc			\
	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			\
	check-stage$(1)-T-$(2)-H-$(3)-pretty
126

N
Niko Matsakis 已提交
127 128
check-stage$(1)-T-$(2)-H-$(3)-std:				\
	check-stage$(1)-T-$(2)-H-$(3)-std-dummy
129

N
Niko Matsakis 已提交
130 131
check-stage$(1)-T-$(2)-H-$(3)-rustc:				\
	check-stage$(1)-T-$(2)-H-$(3)-rustc-dummy
132

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

N
Niko Matsakis 已提交
136 137
check-stage$(1)-T-$(2)-H-$(3)-rfail:				\
	check-stage$(1)-T-$(2)-H-$(3)-rfail-dummy
138

N
Niko Matsakis 已提交
139 140
check-stage$(1)-T-$(2)-H-$(3)-rpass:				\
	check-stage$(1)-T-$(2)-H-$(3)-rpass-dummy
141

N
Niko Matsakis 已提交
142 143
check-stage$(1)-T-$(2)-H-$(3)-bench:				\
	check-stage$(1)-T-$(2)-H-$(3)-bench-dummy
144

N
Niko Matsakis 已提交
145 146
check-stage$(1)-T-$(2)-H-$(3)-perf:				\
	check-stage$(1)-T-$(2)-H-$(3)-perf-dummy
147

N
Niko Matsakis 已提交
148 149 150 151 152
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 已提交
153

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

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

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

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

B
Brian Anderson 已提交
166
# Rules for the standard library test runner
167

N
Niko Matsakis 已提交
168 169 170
$(3)/test/stdtest.stage$(1)-$(2)$$(X):			\
		$$(STDTEST_CRATE) $$(STDTEST_INPUTS)	\
        $$(SREQ$(1)_T_$(2)_H_$(3))
B
Brian Anderson 已提交
171
	@$$(call E, compile_and_link: $$@)
N
Niko Matsakis 已提交
172
	$$(STAGE$(1)_T_$(2)_H_$(3)) -o $$@ $$< --test
173

N
Niko Matsakis 已提交
174
check-stage$(1)-T-$(2)-H-$(3)-std-dummy:			\
N
Niko Matsakis 已提交
175
		$(3)/test/stdtest.stage$(1)-$(2)$$(X)
B
Brian Anderson 已提交
176 177
	@$$(call E, run: $$<)
	$$(Q)$$(call CFG_RUN_TEST,$$<) $$(TESTARGS)
178

B
Brian Anderson 已提交
179
# Rules for the rustc test runner
180

N
Niko Matsakis 已提交
181 182 183 184
$(3)/test/rustctest.stage$(1)-$(2)$$(X):					\
		$$(COMPILER_CRATE)									\
		$$(COMPILER_INPUTS)									\
		$$(SREQ$(1)_T_$(2)_H_$(3))							\
N
Niko Matsakis 已提交
185
		$$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_RUSTLLVM)
B
Brian Anderson 已提交
186
	@$$(call E, compile_and_link: $$@)
N
Niko Matsakis 已提交
187
	$$(STAGE$(1)_T_$(2)_H_$(3)) -o $$@ $$< --test
188

N
Niko Matsakis 已提交
189
check-stage$(1)-T-$(2)-H-$(3)-rustc-dummy:		\
N
Niko Matsakis 已提交
190
		$(3)/test/rustctest.stage$(1)-$(2)$$(X)
B
Brian Anderson 已提交
191
	@$$(call E, run: $$<)
N
Niko Matsakis 已提交
192
	$$(Q)$$(call CFG_RUN_TEST,$$<) $$(TESTARGS)
193

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

N
Niko Matsakis 已提交
196
CTEST_COMMON_ARGS$(1)-T-$(2)-H-$(3) :=						\
N
Niko Matsakis 已提交
197 198 199 200 201 202 203
		--compile-lib-path $$(HLIB$(1)_H_$(3))				\
        --run-lib-path $$(TLIB$(1)_T_$(2)_H_$(3))			\
        --rustc-path $$(HBIN$(1)_H_$(3))/rustc$$(X)			\
        --stage-id stage$(1)-$(2)							\
        --rustcflags "$$(CFG_RUSTC_FLAGS) --target=$(2)"	\
        $$(CTEST_TESTARGS)

N
Niko Matsakis 已提交
204 205 206 207
CFAIL_ARGS$(1)-T-$(2)-H-$(3) := 				\
		$$(CTEST_COMMON_ARGS$(1)-T-$(2)-H-$(3))	\
        --src-base $$(S)src/test/compile-fail/	\
        --build-base test/compile-fail/			\
N
Niko Matsakis 已提交
208 209
        --mode compile-fail

N
Niko Matsakis 已提交
210 211 212 213 214
RFAIL_ARGS$(1)-T-$(2)-H-$(3) := 				\
		$$(CTEST_COMMON_ARGS$(1)-T-$(2)-H-$(3))	\
        --src-base $$(S)src/test/run-fail/		\
        --build-base test/run-fail/				\
        --mode run-fail							\
N
Niko Matsakis 已提交
215 216
        $$(CTEST_RUNTOOL)

N
Niko Matsakis 已提交
217 218 219 220 221
RPASS_ARGS$(1)-T-$(2)-H-$(3) := 				\
		$$(CTEST_COMMON_ARGS$(1)-T-$(2)-H-$(3))	\
        --src-base $$(S)src/test/run-pass/		\
        --build-base test/run-pass/				\
        --mode run-pass							\
N
Niko Matsakis 已提交
222 223
        $$(CTEST_RUNTOOL)

N
Niko Matsakis 已提交
224 225 226 227 228
BENCH_ARGS$(1)-T-$(2)-H-$(3) := 				\
		$$(CTEST_COMMON_ARGS$(1)-T-$(2)-H-$(3))	\
        --src-base $$(S)src/test/bench/			\
        --build-base test/bench/				\
        --mode run-pass							\
N
Niko Matsakis 已提交
229 230
        $$(CTEST_RUNTOOL)

N
Niko Matsakis 已提交
231 232 233 234 235
PERF_ARGS$(1)-T-$(2)-H-$(3) := 					\
		$$(CTEST_COMMON_ARGS$(1)-T-$(2)-H-$(3))	\
        --src-base $$(S)src/test/bench/			\
        --build-base test/perf/					\
        --mode run-pass							\
N
Niko Matsakis 已提交
236 237
        $$(CTEST_PERF_RUNTOOL)

N
Niko Matsakis 已提交
238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261
PRETTY_RPASS_ARGS$(1)-T-$(2)-H-$(3) := 			\
		$$(CTEST_COMMON_ARGS$(1)-T-$(2)-H-$(3))	\
        --src-base $$(S)src/test/run-pass/		\
        --build-base test/run-pass/				\
        --mode pretty

PRETTY_RFAIL_ARGS$(1)-T-$(2)-H-$(3) := 			\
		$$(CTEST_COMMON_ARGS$(1)-T-$(2)-H-$(3))	\
        --src-base $$(S)src/test/run-fail/		\
        --build-base test/run-fail/				\
        --mode pretty

PRETTY_BENCH_ARGS$(1)-T-$(2)-H-$(3) := 			\
		$$(CTEST_COMMON_ARGS$(1)-T-$(2)-H-$(3))	\
        --src-base $$(S)src/test/bench/			\
        --build-base test/bench/				\
        --mode pretty

PRETTY_PRETTY_ARGS$(1)-T-$(2)-H-$(3) := 		\
		$$(CTEST_COMMON_ARGS$(1)-T-$(2)-H-$(3))	\
        --src-base $$(S)src/test/pretty/		\
        --build-base test/pretty/				\
        --mode pretty

N
Niko Matsakis 已提交
262
check-stage$(1)-T-$(2)-H-$(3)-cfail-dummy:		\
N
Niko Matsakis 已提交
263 264 265
		$$(HBIN$(1)_H_$(3))/compiletest$$(X)	\
	    $$(SREQ$(1)_T_$(2)_H_$(3))				\
        $$(CFAIL_TESTS)
N
Niko Matsakis 已提交
266 267 268
	@$$(call E, run cfail: $$<)
	$$(Q)$$(call CFG_RUN_CTEST,$(1),$$<,$(3)) \
		$$(CFAIL_ARGS$(1)-T-$(2)-H-$(3))
269

N
Niko Matsakis 已提交
270
check-stage$(1)-T-$(2)-H-$(3)-rfail-dummy:		\
N
Niko Matsakis 已提交
271 272 273
		$$(HBIN$(1)_H_$(3))/compiletest$$(X)	\
	    $$(SREQ$(1)_T_$(2)_H_$(3))				\
        $$(RFAIL_TESTS)
N
Niko Matsakis 已提交
274 275 276
	@$$(call E, run rfail: $$<)
	$$(Q)$$(call CFG_RUN_CTEST,$(1),$$<,$(3)) \
		$$(RFAIL_ARGS$(1)-T-$(2)-H-$(3))
B
Brian Anderson 已提交
277

N
Niko Matsakis 已提交
278
check-stage$(1)-T-$(2)-H-$(3)-rpass-dummy:		\
N
Niko Matsakis 已提交
279 280 281
		$$(HBIN$(1)_H_$(3))/compiletest$$(X)	\
	    $$(SREQ$(1)_T_$(2)_H_$(3))				\
        $$(RPASS_TESTS)
N
Niko Matsakis 已提交
282 283 284
	@$$(call E, run rpass: $$<)
	$$(Q)$$(call CFG_RUN_CTEST,$(1),$$<,$(3)) \
		$$(RPASS_ARGS$(1)-T-$(2)-H-$(3))
B
Brian Anderson 已提交
285

N
Niko Matsakis 已提交
286
check-stage$(1)-T-$(2)-H-$(3)-bench-dummy:		\
N
Niko Matsakis 已提交
287 288 289
		$$(HBIN$(1)_H_$(3))/compiletest$$(X)	\
	    $$(SREQ$(1)_T_$(2)_H_$(3))				\
        $$(BENCH_TESTS)
N
Niko Matsakis 已提交
290 291 292
	@$$(call E, run bench: $$<)
	$$(Q)$$(call CFG_RUN_CTEST,$(1),$$<,$(3)) \
		$$(BENCH_ARGS$(1)-T-$(2)-H-$(3))
293

N
Niko Matsakis 已提交
294
check-stage$(1)-T-$(2)-H-$(3)-perf-dummy:		\
N
Niko Matsakis 已提交
295 296 297
		$$(HBIN$(1)_H_$(3))/compiletest$$(X)	\
        $$(SREQ$(1)_T_$(2)_H_$(3))				\
        $$(BENCH_TESTS)
298
	@$$(call E, perf: $$<)
N
Niko Matsakis 已提交
299 300
	$$(Q)$$(call CFG_RUN_CTEST,$(1),$$<,$(3)) \
		$$(PERF_ARGS$(1)-T-$(2)-H-$(3))
301

N
Niko Matsakis 已提交
302
check-stage$(1)-T-$(2)-H-$(3)-pretty-rpass-dummy:	\
N
Niko Matsakis 已提交
303 304
		$$(HBIN$(1)_H_$(3))/compiletest$$(X)		\
        $$(SREQ$(1)_T_$(2)_H_$(3))					\
N
Niko Matsakis 已提交
305
        $$(RPASS_TESTS)
N
Niko Matsakis 已提交
306 307 308
	@$$(call E, run pretty-rpass: $$<)
	$$(Q)$$(call CFG_RUN_CTEST,$(1),$$<,$(3)) \
		$$(PRETTY_RPASS_ARGS$(1)-T-$(2)-H-$(3))
309

N
Niko Matsakis 已提交
310
check-stage$(1)-T-$(2)-H-$(3)-pretty-rfail-dummy:	\
N
Niko Matsakis 已提交
311 312
		$$(HBIN$(1)_H_$(3))/compiletest$$(X)		\
        $$(SREQ$(1)_T_$(2)_H_$(3))					\
N
Niko Matsakis 已提交
313
        $$(RFAIL_TESTS)
N
Niko Matsakis 已提交
314 315 316
	@$$(call E, run pretty-rfail: $$<)
	$$(Q)$$(call CFG_RUN_CTEST,$(1),$$<,$(3)) \
		$$(PRETTY_RFAIL_ARGS$(1)-T-$(2)-H-$(3))
317

N
Niko Matsakis 已提交
318
check-stage$(1)-T-$(2)-H-$(3)-pretty-bench-dummy:	\
N
Niko Matsakis 已提交
319 320
		$$(HBIN$(1)_H_$(3))/compiletest$$(X)		\
		$$(SREQ$(1)_T_$(2)_H_$(3))					\
N
Niko Matsakis 已提交
321
        $$(BENCH_TESTS)
N
Niko Matsakis 已提交
322 323 324
	@$$(call E, run pretty-bench: $$<)
	$$(Q)$$(call CFG_RUN_CTEST,$(1),$$<,$(3)) \
		$$(PRETTY_BENCH_ARGS$(1)-T-$(2)-H-$(3))
325

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

B
Brian Anderson 已提交
334
endef
335

336
# Instantiate the template for stage 0, 1, 2, 3
337

N
Niko Matsakis 已提交
338 339 340 341
$(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 已提交
342

343 344
# Make convenient Shorthand Targets for use on command
# line or by other rules:
345

N
Niko Matsakis 已提交
346
define DEF_CHECK_SAME
347

N
Niko Matsakis 已提交
348 349 350 351 352 353 354 355
check-stage$(1)-H-$(2):        check-stage$(1)-T-$(2)-H-$(2)
check-stage$(1)-H-$(2)-perf:   check-stage$(1)-T-$(2)-H-$(2)-perf
check-stage$(1)-H-$(2)-rustc:  check-stage$(1)-T-$(2)-H-$(2)-rustc
check-stage$(1)-H-$(2)-std:    check-stage$(1)-T-$(2)-H-$(2)-std
check-stage$(1)-H-$(2)-rpass:  check-stage$(1)-T-$(2)-H-$(2)-rpass
check-stage$(1)-H-$(2)-rfail:  check-stage$(1)-T-$(2)-H-$(2)-rfail
check-stage$(1)-H-$(2)-cfail:  check-stage$(1)-T-$(2)-H-$(2)-cfail
check-stage$(1)-H-$(2)-bench:  check-stage$(1)-T-$(2)-H-$(2)-bench
356 357 358

endef

N
Niko Matsakis 已提交
359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374
$(foreach stage,$(STAGES),								\
 $(eval $(foreach target,$(CFG_TARGET_TRIPLES),			\
  $(eval $(call DEF_CHECK_SAME,$(stage),$(target))))))

define DEF_CHECK_HOST

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
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

endef
375

N
Niko Matsakis 已提交
376 377
$(foreach stage,$(STAGES),						\
 $(eval $(call DEF_CHECK_HOST,$(stage))))
B
Brian Anderson 已提交
378 379 380 381 382 383 384 385 386 387

######################################################################
# Fast-test rules
######################################################################

test/$(FT).rc test/$(FT_DRIVER).rs: $(TEST_RPASS_SOURCES_STAGE2) \
    $(S)src/etc/combine-tests.py
	@$(call E, check: building combined stage2 test runner)
	$(Q)$(S)src/etc/combine-tests.py

388
$(TARGET_HOST_LIB2)/$(FT_LIB): test/$(FT).rc $(SREQ2$(CFG_HOST_TRIPLE))
B
Brian Anderson 已提交
389
	@$(call E, compile_and_link: $@)
N
Niko Matsakis 已提交
390
	$(STAGE2_$(CFG_HOST_TRIPLE)) --lib -o $@ $<
B
Brian Anderson 已提交
391

392 393
test/$(FT_DRIVER)$(X): test/$(FT_DRIVER).rs $(TARGET_HOST_LIB2)/$(FT_LIB) \
	$(SREQ2$(CFG_HOST_TRIPLE))
B
Brian Anderson 已提交
394
	@$(call E, compile_and_link: $@)
N
Niko Matsakis 已提交
395
	$(STAGE2_$(CFG_HOST_TRIPLE)) -L $(HOST_LIB2) -o $@ $<
B
Brian Anderson 已提交
396

397
test/$(FT_DRIVER).out: test/$(FT_DRIVER)$(X) $(SREQ2$(CFG_HOST_TRIPLE))
398
	$(Q)$(call CFG_RUN_TEST, $<)