]>
Commit | Line | Data |
---|---|---|
1a4d82fc | 1 | # Copyright 2012-2014 The Rust Project Developers. See the COPYRIGHT |
223e47cc LB |
2 | # file at the top-level directory of this distribution and at |
3 | # http://rust-lang.org/COPYRIGHT. | |
4 | # | |
5 | # Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or | |
6 | # http://www.apache.org/licenses/LICENSE-2.0> or the MIT license | |
7 | # <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your | |
8 | # option. This file may not be copied, modified, or distributed | |
9 | # except according to those terms. | |
10 | ||
11 | ||
12 | ###################################################################### | |
13 | # Test variables | |
14 | ###################################################################### | |
15 | ||
16 | # The names of crates that must be tested | |
223e47cc | 17 | |
d9579d0f | 18 | # libcore/librustc_unicode tests are in a separate crate |
1a4d82fc JJ |
19 | DEPS_coretest := |
20 | $(eval $(call RUST_CRATE,coretest)) | |
21 | ||
c34b1796 AL |
22 | DEPS_collectionstest := |
23 | $(eval $(call RUST_CRATE,collectionstest)) | |
24 | ||
92a42be0 | 25 | TEST_TARGET_CRATES = $(filter-out core rustc_unicode alloc_system libc \ |
a7813a04 XL |
26 | alloc_jemalloc panic_unwind \ |
27 | panic_abort,$(TARGET_CRATES)) \ | |
9346a6ac | 28 | collectionstest coretest |
92a42be0 | 29 | TEST_DOC_CRATES = $(DOC_CRATES) arena flate fmt_macros getopts graphviz \ |
9e0c209e | 30 | log rand serialize syntax term test |
9346a6ac AL |
31 | TEST_HOST_CRATES = $(filter-out rustc_typeck rustc_borrowck rustc_resolve \ |
32 | rustc_trans rustc_lint,\ | |
1a4d82fc JJ |
33 | $(HOST_CRATES)) |
34 | TEST_CRATES = $(TEST_TARGET_CRATES) $(TEST_HOST_CRATES) | |
223e47cc LB |
35 | |
36 | ###################################################################### | |
37 | # Environment configuration | |
38 | ###################################################################### | |
39 | ||
40 | # The arguments to all test runners | |
41 | ifdef TESTNAME | |
42 | TESTARGS += $(TESTNAME) | |
43 | endif | |
44 | ||
1a4d82fc | 45 | ifdef CHECK_IGNORED |
223e47cc LB |
46 | TESTARGS += --ignored |
47 | endif | |
48 | ||
7453a54e | 49 | # Arguments to the cfail/rfail/rpass tests |
223e47cc LB |
50 | ifdef CFG_VALGRIND |
51 | CTEST_RUNTOOL = --runtool "$(CFG_VALGRIND)" | |
52 | endif | |
53 | ||
223e47cc LB |
54 | CTEST_TESTARGS := $(TESTARGS) |
55 | ||
85aaf69f SL |
56 | # --bench is only relevant for crate tests, not for the compile tests |
57 | ifdef PLEASE_BENCH | |
58 | TESTARGS += --bench | |
59 | endif | |
60 | ||
223e47cc LB |
61 | ifdef VERBOSE |
62 | CTEST_TESTARGS += --verbose | |
63 | endif | |
64 | ||
1a4d82fc JJ |
65 | # Setting locale ensures that gdb's output remains consistent. |
66 | # This prevents tests from failing with some locales (fixes #17423). | |
67 | export LC_ALL=C | |
68 | ||
223e47cc LB |
69 | TEST_LOG_FILE=tmp/check-stage$(1)-T-$(2)-H-$(3)-$(4).log |
70 | TEST_OK_FILE=tmp/check-stage$(1)-T-$(2)-H-$(3)-$(4).ok | |
71 | ||
72 | define DEF_TARGET_COMMANDS | |
73 | ||
74 | ifdef CFG_UNIXY_$(1) | |
1a4d82fc JJ |
75 | CFG_RUN_TEST_$(1)=$$(TARGET_RPATH_VAR$$(2)_T_$$(3)_H_$$(4)) \ |
76 | $$(call CFG_RUN_$(1),,$$(CFG_VALGRIND) $$(1)) | |
223e47cc LB |
77 | endif |
78 | ||
79 | ifdef CFG_WINDOWSY_$(1) | |
1a4d82fc | 80 | CFG_TESTLIB_$(1)=$$(CFG_BUILD_DIR)$$(2)/$$(strip \ |
223e47cc | 81 | $$(if $$(findstring stage0,$$(1)), \ |
1a4d82fc | 82 | stage0/$$(CFG_LIBDIR_RELATIVE), \ |
223e47cc | 83 | $$(if $$(findstring stage1,$$(1)), \ |
1a4d82fc | 84 | stage1/$$(CFG_LIBDIR_RELATIVE), \ |
223e47cc | 85 | $$(if $$(findstring stage2,$$(1)), \ |
1a4d82fc | 86 | stage2/$$(CFG_LIBDIR_RELATIVE), \ |
223e47cc | 87 | $$(if $$(findstring stage3,$$(1)), \ |
1a4d82fc JJ |
88 | stage3/$$(CFG_LIBDIR_RELATIVE), \ |
89 | )))))/rustlib/$$(CFG_BUILD)/lib | |
e9174d1e SL |
90 | CFG_RUN_TEST_$(1)=$$(TARGET_RPATH_VAR$$(2)_T_$$(3)_H_$$(4)) \ |
91 | $$(call CFG_RUN_$(1),$$(call CFG_TESTLIB_$(1),$$(1),$$(4)),$$(1)) | |
223e47cc LB |
92 | endif |
93 | ||
94 | # Run the compiletest runner itself under valgrind | |
95 | ifdef CTEST_VALGRIND | |
1a4d82fc JJ |
96 | CFG_RUN_CTEST_$(1)=$$(RPATH_VAR$$(1)_T_$$(3)_H_$$(3)) \ |
97 | $$(call CFG_RUN_TEST_$$(CFG_BUILD),$$(3),$$(4)) | |
223e47cc | 98 | else |
1a4d82fc JJ |
99 | CFG_RUN_CTEST_$(1)=$$(RPATH_VAR$$(1)_T_$$(3)_H_$$(3)) \ |
100 | $$(call CFG_RUN_$$(CFG_BUILD),$$(TLIB$$(1)_T_$$(3)_H_$$(3)),$$(2)) | |
223e47cc LB |
101 | endif |
102 | ||
103 | endef | |
104 | ||
1a4d82fc | 105 | $(foreach target,$(CFG_TARGET), \ |
223e47cc LB |
106 | $(eval $(call DEF_TARGET_COMMANDS,$(target)))) |
107 | ||
85aaf69f | 108 | # Target platform specific variables for android |
970d7e83 LB |
109 | define DEF_ADB_DEVICE_STATUS |
110 | CFG_ADB_DEVICE_STATUS=$(1) | |
111 | endef | |
112 | ||
1a4d82fc | 113 | $(foreach target,$(CFG_TARGET), \ |
85aaf69f | 114 | $(if $(findstring android, $(target)), \ |
970d7e83 | 115 | $(if $(findstring adb,$(CFG_ADB)), \ |
1a4d82fc JJ |
116 | $(if $(findstring device,$(shell $(CFG_ADB) devices 2>/dev/null | grep -E '^[:_A-Za-z0-9-]+[[:blank:]]+device')), \ |
117 | $(info check: android device attached) \ | |
118 | $(eval $(call DEF_ADB_DEVICE_STATUS, true)), \ | |
119 | $(info check: android device not attached) \ | |
120 | $(eval $(call DEF_ADB_DEVICE_STATUS, false)) \ | |
970d7e83 | 121 | ), \ |
1a4d82fc JJ |
122 | $(info check: adb not found) \ |
123 | $(eval $(call DEF_ADB_DEVICE_STATUS, false)) \ | |
970d7e83 LB |
124 | ), \ |
125 | ) \ | |
126 | ) | |
127 | ||
128 | ifeq ($(CFG_ADB_DEVICE_STATUS),true) | |
129 | CFG_ADB_TEST_DIR=/data/tmp | |
130 | ||
131 | $(info check: android device test dir $(CFG_ADB_TEST_DIR) ready \ | |
1a4d82fc JJ |
132 | $(shell $(CFG_ADB) remount 1>/dev/null) \ |
133 | $(shell $(CFG_ADB) shell rm -r $(CFG_ADB_TEST_DIR) >/dev/null) \ | |
134 | $(shell $(CFG_ADB) shell mkdir $(CFG_ADB_TEST_DIR)) \ | |
1a4d82fc | 135 | $(shell $(CFG_ADB) push $(S)src/etc/adb_run_wrapper.sh $(CFG_ADB_TEST_DIR) 1>/dev/null) \ |
85aaf69f SL |
136 | $(foreach target,$(CFG_TARGET), \ |
137 | $(if $(findstring android, $(target)), \ | |
138 | $(shell $(CFG_ADB) shell mkdir $(CFG_ADB_TEST_DIR)/$(target)) \ | |
7453a54e | 139 | $(foreach crate,$(TARGET_CRATES_$(target)), \ |
85aaf69f SL |
140 | $(shell $(CFG_ADB) push $(TLIB2_T_$(target)_H_$(CFG_BUILD))/$(call CFG_LIB_GLOB_$(target),$(crate)) \ |
141 | $(CFG_ADB_TEST_DIR)/$(target))), \ | |
142 | ))) | |
970d7e83 LB |
143 | else |
144 | CFG_ADB_TEST_DIR= | |
145 | endif | |
146 | ||
1a4d82fc JJ |
147 | # $(1) - name of doc test |
148 | # $(2) - file of the test | |
149 | define DOCTEST | |
150 | DOC_NAMES := $$(DOC_NAMES) $(1) | |
151 | DOCFILE_$(1) := $(2) | |
152 | endef | |
153 | ||
154 | $(foreach doc,$(DOCS), \ | |
155 | $(eval $(call DOCTEST,md-$(doc),$(S)src/doc/$(doc).md))) | |
92a42be0 SL |
156 | $(foreach file,$(wildcard $(S)src/doc/book/*.md), \ |
157 | $(eval $(call DOCTEST,$(file:$(S)src/doc/book/%.md=book-%),$(file)))) | |
c1a9b12d SL |
158 | $(foreach file,$(wildcard $(S)src/doc/nomicon/*.md), \ |
159 | $(eval $(call DOCTEST,$(file:$(S)src/doc/nomicon/%.md=nomicon-%),$(file)))) | |
223e47cc LB |
160 | ###################################################################### |
161 | # Main test targets | |
162 | ###################################################################### | |
163 | ||
1a4d82fc | 164 | # The main testing target. Tests lots of stuff. |
c34b1796 | 165 | check: check-sanitycheck cleantmptestlogs cleantestlibs all check-stage2 tidy |
85aaf69f | 166 | $(Q)$(CFG_PYTHON) $(S)src/etc/check-summary.py tmp/*.log |
223e47cc | 167 | |
1a4d82fc | 168 | # As above but don't bother running tidy. |
62682a34 | 169 | check-notidy: check-sanitycheck cleantmptestlogs cleantestlibs all check-stage2 |
223e47cc LB |
170 | $(Q)$(CFG_PYTHON) $(S)src/etc/check-summary.py tmp/*.log |
171 | ||
1a4d82fc | 172 | # A slightly smaller set of tests for smoke testing. |
62682a34 | 173 | check-lite: check-sanitycheck cleantestlibs cleantmptestlogs \ |
1a4d82fc JJ |
174 | $(foreach crate,$(TEST_TARGET_CRATES),check-stage2-$(crate)) \ |
175 | check-stage2-rpass check-stage2-rpass-valgrind \ | |
85aaf69f | 176 | check-stage2-rfail check-stage2-cfail check-stage2-pfail check-stage2-rmake |
223e47cc LB |
177 | $(Q)$(CFG_PYTHON) $(S)src/etc/check-summary.py tmp/*.log |
178 | ||
1a4d82fc | 179 | # Only check the 'reference' tests: rpass/cfail/rfail/rmake. |
62682a34 SL |
180 | check-ref: check-sanitycheck cleantestlibs cleantmptestlogs check-stage2-rpass \ |
181 | check-stage2-rpass-valgrind check-stage2-rfail check-stage2-cfail check-stage2-pfail \ | |
182 | check-stage2-rmake | |
223e47cc LB |
183 | $(Q)$(CFG_PYTHON) $(S)src/etc/check-summary.py tmp/*.log |
184 | ||
1a4d82fc | 185 | # Only check the docs. |
62682a34 | 186 | check-docs: check-sanitycheck cleantestlibs cleantmptestlogs check-stage2-docs |
223e47cc LB |
187 | $(Q)$(CFG_PYTHON) $(S)src/etc/check-summary.py tmp/*.log |
188 | ||
1a4d82fc JJ |
189 | # Some less critical tests that are not prone to breakage. |
190 | # Not run as part of the normal test suite, but tested by bors on checkin. | |
191 | check-secondary: check-build-compiletest check-build-lexer-verifier check-lexer check-pretty | |
192 | ||
c34b1796 AL |
193 | .PHONY: check-sanitycheck |
194 | ||
195 | check-sanitycheck: | |
196 | $(Q)$(CFG_PYTHON) $(S)src/etc/check-sanitycheck.py | |
197 | ||
1a4d82fc JJ |
198 | # check + check-secondary. |
199 | # | |
200 | # Issue #17883: build check-secondary first so hidden dependencies in | |
201 | # e.g. building compiletest are exercised (resolve those by adding | |
202 | # deps to rules that need them; not by putting `check` first here). | |
203 | check-all: check-secondary check | |
204 | ||
205 | # Pretty-printing tests. | |
206 | check-pretty: check-stage2-T-$(CFG_BUILD)-H-$(CFG_BUILD)-pretty-exec | |
207 | ||
208 | define DEF_CHECK_BUILD_COMPILETEST_FOR_STAGE | |
209 | check-stage$(1)-build-compiletest: $$(HBIN$(1)_H_$(CFG_BUILD))/compiletest$$(X_$(CFG_BUILD)) | |
210 | endef | |
211 | ||
212 | $(foreach stage,$(STAGES), \ | |
213 | $(eval $(call DEF_CHECK_BUILD_COMPILETEST_FOR_STAGE,$(stage)))) | |
214 | ||
215 | check-build-compiletest: \ | |
216 | check-stage1-build-compiletest \ | |
217 | check-stage2-build-compiletest | |
218 | ||
223e47cc LB |
219 | .PHONY: cleantmptestlogs cleantestlibs |
220 | ||
221 | cleantmptestlogs: | |
222 | $(Q)rm -f tmp/*.log | |
223 | ||
224 | cleantestlibs: | |
1a4d82fc | 225 | $(Q)find $(CFG_BUILD)/test \ |
223e47cc | 226 | -name '*.[odasS]' -o \ |
1a4d82fc JJ |
227 | -name '*.so' -o \ |
228 | -name '*.dylib' -o \ | |
229 | -name '*.dll' -o \ | |
230 | -name '*.def' -o \ | |
231 | -name '*.bc' -o \ | |
232 | -name '*.dSYM' -o \ | |
233 | -name '*.libaux' -o \ | |
234 | -name '*.out' -o \ | |
235 | -name '*.err' -o \ | |
223e47cc LB |
236 | -name '*.debugger.script' \ |
237 | | xargs rm -rf | |
238 | ||
239 | ||
240 | ###################################################################### | |
241 | # Tidy | |
242 | ###################################################################### | |
243 | ||
85aaf69f | 244 | .PHONY: tidy |
a7813a04 XL |
245 | tidy: $(HBIN0_H_$(CFG_BUILD))/tidy$(X_$(CFG_BUILD)) \ |
246 | $(SNAPSHOT_RUSTC_POST_CLEANUP) | |
247 | $(TARGET_RPATH_VAR0_T_$(CFG_BUILD)_H_$(CFG_BUILD)) $< $(S)src | |
248 | ||
249 | $(HBIN0_H_$(CFG_BUILD))/tidy$(X_$(CFG_BUILD)): \ | |
250 | $(TSREQ0_T_$(CFG_BUILD)_H_$(CFG_BUILD)) \ | |
251 | $(TLIB0_T_$(CFG_BUILD)_H_$(CFG_BUILD))/stamp.std \ | |
252 | $(call rwildcard,$(S)src/tools/tidy/src,*.rs) \ | |
253 | $(SNAPSHOT_RUSTC_POST_CLEANUP) | \ | |
254 | $(TLIB0_T_$(CFG_BUILD)_H_$(CFG_BUILD)) | |
255 | $(STAGE0_T_$(CFG_BUILD)_H_$(CFG_BUILD)) $(S)src/tools/tidy/src/main.rs \ | |
256 | --out-dir $(@D) --crate-name tidy | |
223e47cc LB |
257 | |
258 | ###################################################################### | |
259 | # Sets of tests | |
260 | ###################################################################### | |
261 | ||
262 | define DEF_TEST_SETS | |
263 | ||
1a4d82fc JJ |
264 | check-stage$(1)-T-$(2)-H-$(3)-exec: \ |
265 | check-stage$(1)-T-$(2)-H-$(3)-rpass-exec \ | |
266 | check-stage$(1)-T-$(2)-H-$(3)-rfail-exec \ | |
267 | check-stage$(1)-T-$(2)-H-$(3)-cfail-exec \ | |
85aaf69f | 268 | check-stage$(1)-T-$(2)-H-$(3)-pfail-exec \ |
7453a54e | 269 | check-stage$(1)-T-$(2)-H-$(3)-rpass-valgrind-exec \ |
1a4d82fc | 270 | check-stage$(1)-T-$(2)-H-$(3)-rmake-exec \ |
9346a6ac | 271 | check-stage$(1)-T-$(2)-H-$(3)-rustdocck-exec \ |
7453a54e SL |
272 | check-stage$(1)-T-$(2)-H-$(3)-crates-exec \ |
273 | check-stage$(1)-T-$(2)-H-$(3)-doc-crates-exec \ | |
1a4d82fc JJ |
274 | check-stage$(1)-T-$(2)-H-$(3)-debuginfo-gdb-exec \ |
275 | check-stage$(1)-T-$(2)-H-$(3)-debuginfo-lldb-exec \ | |
54a0048b | 276 | check-stage$(1)-T-$(2)-H-$(3)-incremental-exec \ |
a7813a04 | 277 | check-stage$(1)-T-$(2)-H-$(3)-ui-exec \ |
223e47cc | 278 | check-stage$(1)-T-$(2)-H-$(3)-doc-exec \ |
3157f602 | 279 | check-stage$(1)-T-$(2)-H-$(3)-doc-error-index-exec \ |
5bcae85e SL |
280 | check-stage$(1)-T-$(2)-H-$(3)-pretty-exec \ |
281 | check-stage$(1)-T-$(2)-H-$(3)-mir-opt-exec | |
223e47cc | 282 | |
54a0048b SL |
283 | ifndef CFG_DISABLE_CODEGEN_TESTS |
284 | check-stage$(1)-T-$(2)-H-$(3)-exec: \ | |
285 | check-stage$(1)-T-$(2)-H-$(3)-codegen-exec \ | |
286 | check-stage$(1)-T-$(2)-H-$(3)-codegen-units-exec | |
287 | endif | |
288 | ||
223e47cc LB |
289 | # Only test the compiler-dependent crates when the target is |
290 | # able to build a compiler (when the target triple is in the set of host triples) | |
1a4d82fc | 291 | ifneq ($$(findstring $(2),$$(CFG_HOST)),) |
223e47cc | 292 | |
54a0048b SL |
293 | check-stage$(1)-T-$(2)-H-$(3)-exec: \ |
294 | check-stage$(1)-T-$(2)-H-$(3)-rpass-full-exec \ | |
295 | check-stage$(1)-T-$(2)-H-$(3)-rfail-full-exec \ | |
296 | check-stage$(1)-T-$(2)-H-$(3)-cfail-full-exec | |
297 | ||
298 | check-stage$(1)-T-$(2)-H-$(3)-pretty-exec: \ | |
299 | check-stage$(1)-T-$(2)-H-$(3)-pretty-rpass-full-exec \ | |
300 | check-stage$(1)-T-$(2)-H-$(3)-pretty-rfail-full-exec | |
301 | ||
223e47cc LB |
302 | check-stage$(1)-T-$(2)-H-$(3)-crates-exec: \ |
303 | $$(foreach crate,$$(TEST_CRATES), \ | |
304 | check-stage$(1)-T-$(2)-H-$(3)-$$(crate)-exec) | |
305 | ||
306 | else | |
307 | ||
308 | check-stage$(1)-T-$(2)-H-$(3)-crates-exec: \ | |
309 | $$(foreach crate,$$(TEST_TARGET_CRATES), \ | |
310 | check-stage$(1)-T-$(2)-H-$(3)-$$(crate)-exec) | |
311 | ||
312 | endif | |
313 | ||
1a4d82fc JJ |
314 | check-stage$(1)-T-$(2)-H-$(3)-doc-crates-exec: \ |
315 | $$(foreach crate,$$(TEST_DOC_CRATES), \ | |
316 | check-stage$(1)-T-$(2)-H-$(3)-doc-crate-$$(crate)-exec) | |
317 | ||
223e47cc | 318 | check-stage$(1)-T-$(2)-H-$(3)-doc-exec: \ |
1a4d82fc JJ |
319 | $$(foreach docname,$$(DOC_NAMES), \ |
320 | check-stage$(1)-T-$(2)-H-$(3)-doc-$$(docname)-exec) \ | |
223e47cc LB |
321 | |
322 | check-stage$(1)-T-$(2)-H-$(3)-pretty-exec: \ | |
1a4d82fc JJ |
323 | check-stage$(1)-T-$(2)-H-$(3)-pretty-rpass-exec \ |
324 | check-stage$(1)-T-$(2)-H-$(3)-pretty-rpass-valgrind-exec \ | |
1a4d82fc | 325 | check-stage$(1)-T-$(2)-H-$(3)-pretty-rfail-exec \ |
223e47cc LB |
326 | check-stage$(1)-T-$(2)-H-$(3)-pretty-pretty-exec |
327 | ||
328 | endef | |
329 | ||
1a4d82fc JJ |
330 | $(foreach host,$(CFG_HOST), \ |
331 | $(foreach target,$(CFG_TARGET), \ | |
223e47cc LB |
332 | $(foreach stage,$(STAGES), \ |
333 | $(eval $(call DEF_TEST_SETS,$(stage),$(target),$(host)))))) | |
334 | ||
335 | ||
336 | ###################################################################### | |
337 | # Crate testing | |
338 | ###################################################################### | |
339 | ||
340 | define TEST_RUNNER | |
341 | ||
1a4d82fc JJ |
342 | # If NO_REBUILD is set then break the dependencies on everything but |
343 | # the source files so we can test crates without rebuilding any of the | |
344 | # parent crates. | |
223e47cc | 345 | ifeq ($(NO_REBUILD),) |
1a4d82fc | 346 | TESTDEP_$(1)_$(2)_$(3)_$(4) = $$(SREQ$(1)_T_$(2)_H_$(3)) \ |
7453a54e | 347 | $$(foreach crate,$$(TARGET_CRATES_$(2)), \ |
1a4d82fc JJ |
348 | $$(TLIB$(1)_T_$(2)_H_$(3))/stamp.$$(crate)) \ |
349 | $$(CRATE_FULLDEPS_$(1)_T_$(2)_H_$(3)_$(4)) | |
350 | ||
223e47cc | 351 | else |
1a4d82fc JJ |
352 | TESTDEP_$(1)_$(2)_$(3)_$(4) = $$(RSINPUTS_$(4)) |
353 | endif | |
354 | ||
355 | $(3)/stage$(1)/test/$(4)test-$(2)$$(X_$(2)): CFG_COMPILER_HOST_TRIPLE = $(2) | |
356 | $(3)/stage$(1)/test/$(4)test-$(2)$$(X_$(2)): \ | |
357 | $$(CRATEFILE_$(4)) \ | |
358 | $$(TESTDEP_$(1)_$(2)_$(3)_$(4)) | |
359 | @$$(call E, rustc: $$@) | |
62682a34 | 360 | $(Q)CFG_LLVM_LINKAGE_FILE=$$(LLVM_LINKAGE_PATH_$(2)) \ |
1a4d82fc | 361 | $$(subst @,,$$(STAGE$(1)_T_$(2)_H_$(3))) -o $$@ $$< --test \ |
54a0048b | 362 | -Cmetadata="test-crate" -L "$$(RT_OUTPUT_DIR_$(2))" \ |
c34b1796 | 363 | $$(LLVM_LIBDIR_RUSTFLAGS_$(2)) \ |
9cc50fc6 | 364 | $$(RUSTFLAGS_$(4)) |
223e47cc LB |
365 | |
366 | endef | |
367 | ||
1a4d82fc JJ |
368 | $(foreach host,$(CFG_HOST), \ |
369 | $(eval $(foreach target,$(CFG_TARGET), \ | |
223e47cc | 370 | $(eval $(foreach stage,$(STAGES), \ |
1a4d82fc JJ |
371 | $(eval $(foreach crate,$(TEST_CRATES), \ |
372 | $(eval $(call TEST_RUNNER,$(stage),$(target),$(host),$(crate)))))))))) | |
223e47cc LB |
373 | |
374 | define DEF_TEST_CRATE_RULES | |
375 | check-stage$(1)-T-$(2)-H-$(3)-$(4)-exec: $$(call TEST_OK_FILE,$(1),$(2),$(3),$(4)) | |
376 | ||
377 | $$(call TEST_OK_FILE,$(1),$(2),$(3),$(4)): \ | |
970d7e83 | 378 | $(3)/stage$(1)/test/$(4)test-$(2)$$(X_$(2)) |
223e47cc | 379 | @$$(call E, run: $$<) |
c34b1796 | 380 | $$(Q)touch $$@.start_time |
1a4d82fc JJ |
381 | $$(Q)$$(call CFG_RUN_TEST_$(2),$$<,$(1),$(2),$(3)) $$(TESTARGS) \ |
382 | --logfile $$(call TEST_LOG_FILE,$(1),$(2),$(3),$(4)) \ | |
383 | $$(call CRATE_TEST_EXTRA_ARGS,$(1),$(2),$(3),$(4)) \ | |
c34b1796 | 384 | && touch -r $$@.start_time $$@ && rm $$@.start_time |
223e47cc LB |
385 | endef |
386 | ||
85aaf69f | 387 | define DEF_TEST_CRATE_RULES_android |
970d7e83 LB |
388 | check-stage$(1)-T-$(2)-H-$(3)-$(4)-exec: $$(call TEST_OK_FILE,$(1),$(2),$(3),$(4)) |
389 | ||
390 | $$(call TEST_OK_FILE,$(1),$(2),$(3),$(4)): \ | |
391 | $(3)/stage$(1)/test/$(4)test-$(2)$$(X_$(2)) | |
392 | @$$(call E, run: $$< via adb) | |
c34b1796 | 393 | $$(Q)touch $$@.start_time |
1a4d82fc | 394 | $$(Q)$(CFG_ADB) push $$< $(CFG_ADB_TEST_DIR) |
85aaf69f | 395 | $$(Q)$(CFG_ADB) shell '(cd $(CFG_ADB_TEST_DIR); LD_LIBRARY_PATH=./$(2) \ |
1a4d82fc JJ |
396 | ./$$(notdir $$<) \ |
397 | --logfile $(CFG_ADB_TEST_DIR)/check-stage$(1)-T-$(2)-H-$(3)-$(4).log \ | |
398 | $$(call CRATE_TEST_EXTRA_ARGS,$(1),$(2),$(3),$(4)) $(TESTARGS))' \ | |
399 | > tmp/check-stage$(1)-T-$(2)-H-$(3)-$(4).tmp | |
400 | $$(Q)cat tmp/check-stage$(1)-T-$(2)-H-$(3)-$(4).tmp | |
401 | $$(Q)touch tmp/check-stage$(1)-T-$(2)-H-$(3)-$(4).log | |
402 | $$(Q)$(CFG_ADB) pull $(CFG_ADB_TEST_DIR)/check-stage$(1)-T-$(2)-H-$(3)-$(4).log tmp/ | |
403 | $$(Q)$(CFG_ADB) shell rm $(CFG_ADB_TEST_DIR)/check-stage$(1)-T-$(2)-H-$(3)-$(4).log | |
970d7e83 LB |
404 | @if grep -q "result: ok" tmp/check-stage$(1)-T-$(2)-H-$(3)-$(4).tmp; \ |
405 | then \ | |
406 | rm tmp/check-stage$(1)-T-$(2)-H-$(3)-$(4).tmp; \ | |
c34b1796 | 407 | touch -r $$@.start_time $$@ && rm $$@.start_time; \ |
970d7e83 LB |
408 | else \ |
409 | rm tmp/check-stage$(1)-T-$(2)-H-$(3)-$(4).tmp; \ | |
410 | exit 101; \ | |
411 | fi | |
412 | endef | |
413 | ||
414 | define DEF_TEST_CRATE_RULES_null | |
415 | check-stage$(1)-T-$(2)-H-$(3)-$(4)-exec: $$(call TEST_OK_FILE,$(1),$(2),$(3),$(4)) | |
416 | ||
417 | $$(call TEST_OK_FILE,$(1),$(2),$(3),$(4)): \ | |
418 | $(3)/stage$(1)/test/$(4)test-$(2)$$(X_$(2)) | |
1a4d82fc JJ |
419 | @$$(call E, failing: no device for $$< ) |
420 | false | |
970d7e83 LB |
421 | endef |
422 | ||
1a4d82fc JJ |
423 | $(foreach host,$(CFG_HOST), \ |
424 | $(foreach target,$(CFG_TARGET), \ | |
223e47cc LB |
425 | $(foreach stage,$(STAGES), \ |
426 | $(foreach crate, $(TEST_CRATES), \ | |
1a4d82fc | 427 | $(if $(findstring $(target),$(CFG_BUILD)), \ |
970d7e83 | 428 | $(eval $(call DEF_TEST_CRATE_RULES,$(stage),$(target),$(host),$(crate))), \ |
85aaf69f | 429 | $(if $(findstring android, $(target)), \ |
970d7e83 | 430 | $(if $(findstring $(CFG_ADB_DEVICE_STATUS),"true"), \ |
85aaf69f | 431 | $(eval $(call DEF_TEST_CRATE_RULES_android,$(stage),$(target),$(host),$(crate))), \ |
970d7e83 LB |
432 | $(eval $(call DEF_TEST_CRATE_RULES_null,$(stage),$(target),$(host),$(crate))) \ |
433 | ), \ | |
434 | $(eval $(call DEF_TEST_CRATE_RULES,$(stage),$(target),$(host),$(crate))) \ | |
435 | )))))) | |
223e47cc | 436 | |
223e47cc LB |
437 | ###################################################################### |
438 | # Rules for the compiletest tests (rpass, rfail, etc.) | |
439 | ###################################################################### | |
440 | ||
7453a54e SL |
441 | RPASS_RS := $(call rwildcard,$(S)src/test/run-pass/,*.rs) |
442 | RPASS_VALGRIND_RS := $(call rwildcard,$(S)src/test/run-pass-valgrind/,*.rs) | |
443 | RPASS_FULL_RS := $(call rwildcard,$(S)src/test/run-pass-fulldeps/,*.rs) | |
444 | RFAIL_FULL_RS := $(call rwildcard,$(S)src/test/run-fail-fulldeps/,*.rs) | |
445 | CFAIL_FULL_RS := $(call rwildcard,$(S)src/test/compile-fail-fulldeps/,*.rs) | |
446 | RFAIL_RS := $(call rwildcard,$(S)src/test/run-fail/,*.rs) | |
447 | RFAIL_RS := $(call rwildcard,$(S)src/test/run-fail/,*.rs) | |
448 | CFAIL_RS := $(call rwildcard,$(S)src/test/compile-fail/,*.rs) | |
449 | PFAIL_RS := $(call rwildcard,$(S)src/test/parse-fail/,*.rs) | |
450 | PRETTY_RS := $(call rwildcard,$(S)src/test/pretty/,*.rs) | |
451 | DEBUGINFO_GDB_RS := $(call rwildcard,$(S)src/test/debuginfo/,*.rs) | |
452 | DEBUGINFO_LLDB_RS := $(call rwildcard,$(S)src/test/debuginfo/,*.rs) | |
453 | CODEGEN_RS := $(call rwildcard,$(S)src/test/codegen/,*.rs) | |
454 | CODEGEN_CC := $(call rwildcard,$(S)src/test/codegen/,*.cc) | |
455 | CODEGEN_UNITS_RS := $(call rwildcard,$(S)src/test/codegen-units/,*.rs) | |
54a0048b | 456 | INCREMENTAL_RS := $(call rwildcard,$(S)src/test/incremental/,*.rs) |
a7813a04 XL |
457 | RMAKE_RS := $(wildcard $(S)src/test/run-make/*/Makefile) |
458 | UI_RS := $(call rwildcard,$(S)src/test/ui/,*.rs) \ | |
459 | $(call rwildcard,$(S)src/test/ui/,*.stdout) \ | |
460 | $(call rwildcard,$(S)src/test/ui/,*.stderr) | |
7453a54e | 461 | RUSTDOCCK_RS := $(call rwildcard,$(S)src/test/rustdoc/,*.rs) |
5bcae85e | 462 | MIR_OPT_RS := $(call rwildcard,$(S)src/test/mir-opt/,*.rs) |
223e47cc | 463 | |
1a4d82fc JJ |
464 | RPASS_TESTS := $(RPASS_RS) |
465 | RPASS_VALGRIND_TESTS := $(RPASS_VALGRIND_RS) | |
466 | RPASS_FULL_TESTS := $(RPASS_FULL_RS) | |
d9579d0f | 467 | RFAIL_FULL_TESTS := $(RFAIL_FULL_RS) |
1a4d82fc JJ |
468 | CFAIL_FULL_TESTS := $(CFAIL_FULL_RS) |
469 | RFAIL_TESTS := $(RFAIL_RS) | |
470 | CFAIL_TESTS := $(CFAIL_RS) | |
85aaf69f | 471 | PFAIL_TESTS := $(PFAIL_RS) |
223e47cc | 472 | PRETTY_TESTS := $(PRETTY_RS) |
1a4d82fc JJ |
473 | DEBUGINFO_GDB_TESTS := $(DEBUGINFO_GDB_RS) |
474 | DEBUGINFO_LLDB_TESTS := $(DEBUGINFO_LLDB_RS) | |
475 | CODEGEN_TESTS := $(CODEGEN_RS) $(CODEGEN_CC) | |
7453a54e | 476 | CODEGEN_UNITS_TESTS := $(CODEGEN_UNITS_RS) |
54a0048b | 477 | INCREMENTAL_TESTS := $(INCREMENTAL_RS) |
a7813a04 XL |
478 | RMAKE_TESTS := $(RMAKE_RS) |
479 | UI_TESTS := $(UI_RS) | |
5bcae85e | 480 | MIR_OPT_TESTS := $(MIR_OPT_RS) |
9346a6ac | 481 | RUSTDOCCK_TESTS := $(RUSTDOCCK_RS) |
223e47cc LB |
482 | |
483 | CTEST_SRC_BASE_rpass = run-pass | |
484 | CTEST_BUILD_BASE_rpass = run-pass | |
485 | CTEST_MODE_rpass = run-pass | |
486 | CTEST_RUNTOOL_rpass = $(CTEST_RUNTOOL) | |
487 | ||
1a4d82fc JJ |
488 | CTEST_SRC_BASE_rpass-valgrind = run-pass-valgrind |
489 | CTEST_BUILD_BASE_rpass-valgrind = run-pass-valgrind | |
490 | CTEST_MODE_rpass-valgrind = run-pass-valgrind | |
491 | CTEST_RUNTOOL_rpass-valgrind = $(CTEST_RUNTOOL) | |
492 | ||
493 | CTEST_SRC_BASE_rpass-full = run-pass-fulldeps | |
494 | CTEST_BUILD_BASE_rpass-full = run-pass-fulldeps | |
223e47cc LB |
495 | CTEST_MODE_rpass-full = run-pass |
496 | CTEST_RUNTOOL_rpass-full = $(CTEST_RUNTOOL) | |
497 | ||
d9579d0f AL |
498 | CTEST_SRC_BASE_rfail-full = run-fail-fulldeps |
499 | CTEST_BUILD_BASE_rfail-full = run-fail-fulldeps | |
500 | CTEST_MODE_rfail-full = run-fail | |
501 | CTEST_RUNTOOL_rfail-full = $(CTEST_RUNTOOL) | |
502 | ||
1a4d82fc JJ |
503 | CTEST_SRC_BASE_cfail-full = compile-fail-fulldeps |
504 | CTEST_BUILD_BASE_cfail-full = compile-fail-fulldeps | |
505 | CTEST_MODE_cfail-full = compile-fail | |
506 | CTEST_RUNTOOL_cfail-full = $(CTEST_RUNTOOL) | |
507 | ||
223e47cc LB |
508 | CTEST_SRC_BASE_rfail = run-fail |
509 | CTEST_BUILD_BASE_rfail = run-fail | |
510 | CTEST_MODE_rfail = run-fail | |
511 | CTEST_RUNTOOL_rfail = $(CTEST_RUNTOOL) | |
512 | ||
513 | CTEST_SRC_BASE_cfail = compile-fail | |
514 | CTEST_BUILD_BASE_cfail = compile-fail | |
515 | CTEST_MODE_cfail = compile-fail | |
516 | CTEST_RUNTOOL_cfail = $(CTEST_RUNTOOL) | |
517 | ||
85aaf69f SL |
518 | CTEST_SRC_BASE_pfail = parse-fail |
519 | CTEST_BUILD_BASE_pfail = parse-fail | |
520 | CTEST_MODE_pfail = parse-fail | |
521 | CTEST_RUNTOOL_pfail = $(CTEST_RUNTOOL) | |
522 | ||
1a4d82fc JJ |
523 | CTEST_SRC_BASE_debuginfo-gdb = debuginfo |
524 | CTEST_BUILD_BASE_debuginfo-gdb = debuginfo-gdb | |
525 | CTEST_MODE_debuginfo-gdb = debuginfo-gdb | |
526 | CTEST_RUNTOOL_debuginfo-gdb = $(CTEST_RUNTOOL) | |
527 | ||
528 | CTEST_SRC_BASE_debuginfo-lldb = debuginfo | |
529 | CTEST_BUILD_BASE_debuginfo-lldb = debuginfo-lldb | |
530 | CTEST_MODE_debuginfo-lldb = debuginfo-lldb | |
531 | CTEST_RUNTOOL_debuginfo-lldb = $(CTEST_RUNTOOL) | |
532 | ||
533 | CTEST_SRC_BASE_codegen = codegen | |
534 | CTEST_BUILD_BASE_codegen = codegen | |
535 | CTEST_MODE_codegen = codegen | |
536 | CTEST_RUNTOOL_codegen = $(CTEST_RUNTOOL) | |
537 | ||
7453a54e SL |
538 | CTEST_SRC_BASE_codegen-units = codegen-units |
539 | CTEST_BUILD_BASE_codegen-units = codegen-units | |
540 | CTEST_MODE_codegen-units = codegen-units | |
541 | CTEST_RUNTOOL_codegen-units = $(CTEST_RUNTOOL) | |
542 | ||
54a0048b SL |
543 | CTEST_SRC_BASE_incremental = incremental |
544 | CTEST_BUILD_BASE_incremental = incremental | |
545 | CTEST_MODE_incremental = incremental | |
546 | CTEST_RUNTOOL_incremental = $(CTEST_RUNTOOL) | |
547 | ||
a7813a04 XL |
548 | CTEST_SRC_BASE_rmake = run-make |
549 | CTEST_BUILD_BASE_rmake = run-make | |
550 | CTEST_MODE_rmake = run-make | |
551 | CTEST_RUNTOOL_rmake = $(CTEST_RUNTOOL) | |
552 | ||
553 | CTEST_SRC_BASE_ui = ui | |
554 | CTEST_BUILD_BASE_ui = ui | |
555 | CTEST_MODE_ui = ui | |
556 | CTEST_RUNTOOL_ui = $(CTEST_RUNTOOL) | |
557 | ||
5bcae85e SL |
558 | CTEST_SRC_BASE_mir-opt = mir-opt |
559 | CTEST_BUILD_BASE_mir-opt = mir-opt | |
560 | CTEST_MODE_mir-opt = mir-opt | |
561 | CTEST_RUNTOOL_mir-opt = $(CTEST_RUNTOOL) | |
562 | ||
9346a6ac AL |
563 | CTEST_SRC_BASE_rustdocck = rustdoc |
564 | CTEST_BUILD_BASE_rustdocck = rustdoc | |
565 | CTEST_MODE_rustdocck = rustdoc | |
566 | CTEST_RUNTOOL_rustdocck = $(CTEST_RUNTOOL) | |
567 | ||
1a4d82fc JJ |
568 | # CTEST_DISABLE_$(TEST_GROUP), if set, will cause the test group to be |
569 | # disabled and the associated message to be printed as a warning | |
570 | # during attempts to run those tests. | |
223e47cc LB |
571 | |
572 | ifeq ($(CFG_GDB),) | |
1a4d82fc JJ |
573 | CTEST_DISABLE_debuginfo-gdb = "no gdb found" |
574 | endif | |
575 | ||
576 | ifeq ($(CFG_LLDB),) | |
577 | CTEST_DISABLE_debuginfo-lldb = "no lldb found" | |
578 | endif | |
579 | ||
1a4d82fc JJ |
580 | ifneq ($(CFG_OSTYPE),apple-darwin) |
581 | CTEST_DISABLE_debuginfo-lldb = "lldb tests are only run on darwin" | |
223e47cc LB |
582 | endif |
583 | ||
584 | ifeq ($(CFG_OSTYPE),apple-darwin) | |
1a4d82fc | 585 | CTEST_DISABLE_debuginfo-gdb = "gdb on darwin needs root" |
223e47cc LB |
586 | endif |
587 | ||
c34b1796 AL |
588 | ifeq ($(findstring android, $(CFG_TARGET)), android) |
589 | CTEST_DISABLE_debuginfo-gdb = | |
590 | CTEST_DISABLE_debuginfo-lldb = "lldb tests are disabled on android" | |
591 | endif | |
592 | ||
e9174d1e SL |
593 | ifeq ($(findstring msvc,$(CFG_TARGET)),msvc) |
594 | CTEST_DISABLE_debuginfo-gdb = "gdb tests are disabled on MSVC" | |
595 | endif | |
596 | ||
1a4d82fc JJ |
597 | # CTEST_DISABLE_NONSELFHOST_$(TEST_GROUP), if set, will cause that |
598 | # test group to be disabled *unless* the target is able to build a | |
92a42be0 | 599 | # compiler (i.e. when the target triple is in the set of host |
1a4d82fc JJ |
600 | # triples). The associated message will be printed as a warning |
601 | # during attempts to run those tests. | |
602 | ||
223e47cc LB |
603 | define DEF_CTEST_VARS |
604 | ||
605 | # All the per-stage build rules you might want to call from the | |
606 | # command line. | |
607 | # | |
608 | # $(1) is the stage number | |
609 | # $(2) is the target triple to test | |
610 | # $(3) is the host triple to test | |
611 | ||
612 | # Prerequisites for compiletest tests | |
613 | TEST_SREQ$(1)_T_$(2)_H_$(3) = \ | |
614 | $$(HBIN$(1)_H_$(3))/compiletest$$(X_$(3)) \ | |
615 | $$(SREQ$(1)_T_$(2)_H_$(3)) | |
616 | ||
7453a54e | 617 | # Rules for the cfail/rfail/rpass test runner |
223e47cc | 618 | |
1a4d82fc JJ |
619 | # The tests select when to use debug configuration on their own; |
620 | # remove directive, if present, from CFG_RUSTC_FLAGS (issue #7898). | |
c34b1796 | 621 | CTEST_RUSTC_FLAGS := $$(subst -C debug-assertions,,$$(subst -C debug-assertions=on,,$$(CFG_RUSTC_FLAGS))) |
1a4d82fc JJ |
622 | |
623 | # The tests cannot be optimized while the rest of the compiler is optimized, so | |
624 | # filter out the optimization (if any) from rustc and then figure out if we need | |
625 | # to be optimized | |
626 | CTEST_RUSTC_FLAGS := $$(subst -O,,$$(CTEST_RUSTC_FLAGS)) | |
627 | ifndef CFG_DISABLE_OPTIMIZE_TESTS | |
628 | CTEST_RUSTC_FLAGS += -O | |
629 | endif | |
630 | ||
d9579d0f AL |
631 | # Analogously to the above, whether to pass `-g` when compiling tests |
632 | # is a separate choice from whether to pass `-g` when building the | |
633 | # compiler and standard library themselves. | |
634 | CTEST_RUSTC_FLAGS := $$(subst -g,,$$(CTEST_RUSTC_FLAGS)) | |
c30ab7b3 | 635 | CTEST_RUSTC_FLAGS := $$(subst -Cdebuginfo=1,,$$(CTEST_RUSTC_FLAGS)) |
d9579d0f AL |
636 | ifdef CFG_ENABLE_DEBUGINFO_TESTS |
637 | CTEST_RUSTC_FLAGS += -g | |
638 | endif | |
1a4d82fc | 639 | |
a7813a04 | 640 | CTEST_COMMON_ARGS$(1)-T-$(2)-H-$(3) = \ |
1a4d82fc JJ |
641 | --compile-lib-path $$(HLIB$(1)_H_$(3)) \ |
642 | --run-lib-path $$(TLIB$(1)_T_$(2)_H_$(3)) \ | |
643 | --rustc-path $$(HBIN$(1)_H_$(3))/rustc$$(X_$(3)) \ | |
9346a6ac | 644 | --rustdoc-path $$(HBIN$(1)_H_$(3))/rustdoc$$(X_$(3)) \ |
a7813a04 | 645 | --llvm-filecheck $(CFG_LLVM_INST_DIR_$(CFG_BUILD))/bin/FileCheck \ |
1a4d82fc JJ |
646 | --stage-id stage$(1)-$(2) \ |
647 | --target $(2) \ | |
648 | --host $(3) \ | |
a7813a04 XL |
649 | --docck-python $$(CFG_PYTHON) \ |
650 | --lldb-python $$(CFG_LLDB_PYTHON) \ | |
c30ab7b3 | 651 | --gdb="$(CFG_GDB)" \ |
1a4d82fc | 652 | --lldb-version="$(CFG_LLDB_VERSION)" \ |
9e0c209e | 653 | --llvm-version="$$(LLVM_VERSION_$(3))" \ |
a7813a04 | 654 | --android-cross-path=$(CFG_ARM_LINUX_ANDROIDEABI_NDK) \ |
1a4d82fc JJ |
655 | --adb-path=$(CFG_ADB) \ |
656 | --adb-test-dir=$(CFG_ADB_TEST_DIR) \ | |
9cc50fc6 | 657 | --host-rustcflags "$(RUSTC_FLAGS_$(3)) $$(CTEST_RUSTC_FLAGS) -L $$(RT_OUTPUT_DIR_$(3))" \ |
1a4d82fc | 658 | --lldb-python-dir=$(CFG_LLDB_PYTHON_DIR) \ |
9cc50fc6 | 659 | --target-rustcflags "$(RUSTC_FLAGS_$(2)) $$(CTEST_RUSTC_FLAGS) -L $$(RT_OUTPUT_DIR_$(2))" \ |
a7813a04 XL |
660 | --cc '$$(call FIND_COMPILER,$$(CC_$(2)))' \ |
661 | --cxx '$$(call FIND_COMPILER,$$(CXX_$(2)))' \ | |
662 | --cflags "$$(CFG_GCCISH_CFLAGS_$(2))" \ | |
663 | --llvm-components "$$(LLVM_ALL_COMPONENTS_$(2))" \ | |
664 | --llvm-cxxflags "$$(LLVM_CXXFLAGS_$(2))" \ | |
223e47cc LB |
665 | $$(CTEST_TESTARGS) |
666 | ||
1a4d82fc JJ |
667 | ifdef CFG_VALGRIND_RPASS |
668 | ifdef GOOD_VALGRIND_$(2) | |
1a4d82fc JJ |
669 | CTEST_COMMON_ARGS$(1)-T-$(2)-H-$(3) += --valgrind-path "$(CFG_VALGRIND_RPASS)" |
670 | endif | |
671 | endif | |
672 | ||
673 | ifndef CFG_DISABLE_VALGRIND_RPASS | |
674 | ifdef GOOD_VALGRIND_$(2) | |
675 | CTEST_COMMON_ARGS$(1)-T-$(2)-H-$(3) += --force-valgrind | |
676 | endif | |
677 | endif | |
678 | ||
223e47cc | 679 | CTEST_DEPS_rpass_$(1)-T-$(2)-H-$(3) = $$(RPASS_TESTS) |
1a4d82fc JJ |
680 | CTEST_DEPS_rpass-valgrind_$(1)-T-$(2)-H-$(3) = $$(RPASS_VALGRIND_TESTS) |
681 | CTEST_DEPS_rpass-full_$(1)-T-$(2)-H-$(3) = $$(RPASS_FULL_TESTS) $$(CSREQ$(1)_T_$(3)_H_$(3)) $$(SREQ$(1)_T_$(2)_H_$(3)) | |
d9579d0f | 682 | CTEST_DEPS_rfail-full_$(1)-T-$(2)-H-$(3) = $$(RFAIL_FULL_TESTS) $$(CSREQ$(1)_T_$(3)_H_$(3)) $$(SREQ$(1)_T_$(2)_H_$(3)) |
1a4d82fc | 683 | CTEST_DEPS_cfail-full_$(1)-T-$(2)-H-$(3) = $$(CFAIL_FULL_TESTS) $$(CSREQ$(1)_T_$(3)_H_$(3)) $$(SREQ$(1)_T_$(2)_H_$(3)) |
223e47cc LB |
684 | CTEST_DEPS_rfail_$(1)-T-$(2)-H-$(3) = $$(RFAIL_TESTS) |
685 | CTEST_DEPS_cfail_$(1)-T-$(2)-H-$(3) = $$(CFAIL_TESTS) | |
85aaf69f | 686 | CTEST_DEPS_pfail_$(1)-T-$(2)-H-$(3) = $$(PFAIL_TESTS) |
1a4d82fc JJ |
687 | CTEST_DEPS_debuginfo-gdb_$(1)-T-$(2)-H-$(3) = $$(DEBUGINFO_GDB_TESTS) |
688 | CTEST_DEPS_debuginfo-lldb_$(1)-T-$(2)-H-$(3) = $$(DEBUGINFO_LLDB_TESTS) \ | |
689 | $(S)src/etc/lldb_batchmode.py \ | |
690 | $(S)src/etc/lldb_rust_formatters.py | |
691 | CTEST_DEPS_codegen_$(1)-T-$(2)-H-$(3) = $$(CODEGEN_TESTS) | |
7453a54e | 692 | CTEST_DEPS_codegen-units_$(1)-T-$(2)-H-$(3) = $$(CODEGEN_UNITS_TESTS) |
54a0048b | 693 | CTEST_DEPS_incremental_$(1)-T-$(2)-H-$(3) = $$(INCREMENTAL_TESTS) |
a7813a04 XL |
694 | CTEST_DEPS_rmake_$(1)-T-$(2)-H-$(3) = $$(RMAKE_TESTS) \ |
695 | $$(CSREQ$(1)_T_$(3)_H_$(3)) $$(SREQ$(1)_T_$(2)_H_$(3)) | |
696 | CTEST_DEPS_ui_$(1)-T-$(2)-H-$(3) = $$(UI_TESTS) | |
5bcae85e | 697 | CTEST_DEPS_mir-opt_$(1)-T-$(2)-H-$(3) = $$(MIR_OPT_TESTS) |
9346a6ac | 698 | CTEST_DEPS_rustdocck_$(1)-T-$(2)-H-$(3) = $$(RUSTDOCCK_TESTS) \ |
7453a54e SL |
699 | $$(HBIN$(1)_H_$(3))/rustdoc$$(X_$(3)) \ |
700 | $(S)src/etc/htmldocck.py | |
223e47cc LB |
701 | |
702 | endef | |
703 | ||
1a4d82fc JJ |
704 | $(foreach host,$(CFG_HOST), \ |
705 | $(eval $(foreach target,$(CFG_TARGET), \ | |
223e47cc LB |
706 | $(eval $(foreach stage,$(STAGES), \ |
707 | $(eval $(call DEF_CTEST_VARS,$(stage),$(target),$(host)))))))) | |
708 | ||
709 | define DEF_RUN_COMPILETEST | |
710 | ||
a7813a04 | 711 | CTEST_ARGS$(1)-T-$(2)-H-$(3)-$(4) = \ |
1a4d82fc | 712 | $$(CTEST_COMMON_ARGS$(1)-T-$(2)-H-$(3)) \ |
223e47cc LB |
713 | --src-base $$(S)src/test/$$(CTEST_SRC_BASE_$(4))/ \ |
714 | --build-base $(3)/test/$$(CTEST_BUILD_BASE_$(4))/ \ | |
715 | --mode $$(CTEST_MODE_$(4)) \ | |
716 | $$(CTEST_RUNTOOL_$(4)) | |
717 | ||
718 | check-stage$(1)-T-$(2)-H-$(3)-$(4)-exec: $$(call TEST_OK_FILE,$(1),$(2),$(3),$(4)) | |
719 | ||
1a4d82fc JJ |
720 | # CTEST_DONT_RUN_$(1)-T-$(2)-H-$(3)-$(4) |
721 | # Goal: leave this variable as empty string if we should run the test. | |
722 | # Otherwise, set it to the reason we are not running the test. | |
723 | # (Encoded as a separate variable because GNU make does not have a | |
724 | # good way to express OR on ifeq commands) | |
725 | ||
726 | ifneq ($$(CTEST_DISABLE_$(4)),) | |
727 | # Test suite is disabled for all configured targets. | |
728 | CTEST_DONT_RUN_$(1)-T-$(2)-H-$(3)-$(4) := $$(CTEST_DISABLE_$(4)) | |
729 | else | |
730 | # else, check if non-self-hosted target (i.e. target not-in hosts) ... | |
731 | ifeq ($$(findstring $(2),$$(CFG_HOST)),) | |
732 | # ... if so, then check if this test suite is disabled for non-selfhosts. | |
733 | ifneq ($$(CTEST_DISABLE_NONSELFHOST_$(4)),) | |
734 | # Test suite is disabled for this target. | |
735 | CTEST_DONT_RUN_$(1)-T-$(2)-H-$(3)-$(4) := $$(CTEST_DISABLE_NONSELFHOST_$(4)) | |
736 | endif | |
737 | endif | |
738 | # Neither DISABLE nor DISABLE_NONSELFHOST is set ==> okay, run the test. | |
739 | endif | |
223e47cc | 740 | |
1a4d82fc | 741 | ifeq ($$(CTEST_DONT_RUN_$(1)-T-$(2)-H-$(3)-$(4)),) |
a7813a04 XL |
742 | $$(call TEST_OK_FILE,$(1),$(2),$(3),$(4)): \ |
743 | export INCLUDE := $$(CFG_MSVC_INCLUDE_PATH_$$(HOST_$(3))) | |
744 | $$(call TEST_OK_FILE,$(1),$(2),$(3),$(4)): \ | |
745 | export LIB := $$(CFG_MSVC_LIB_PATH_$$(HOST_$(3))) | |
223e47cc LB |
746 | $$(call TEST_OK_FILE,$(1),$(2),$(3),$(4)): \ |
747 | $$(TEST_SREQ$(1)_T_$(2)_H_$(3)) \ | |
748 | $$(CTEST_DEPS_$(4)_$(1)-T-$(2)-H-$(3)) | |
970d7e83 | 749 | @$$(call E, run $(4) [$(2)]: $$<) |
c34b1796 | 750 | $$(Q)touch $$@.start_time |
223e47cc LB |
751 | $$(Q)$$(call CFG_RUN_CTEST_$(2),$(1),$$<,$(3)) \ |
752 | $$(CTEST_ARGS$(1)-T-$(2)-H-$(3)-$(4)) \ | |
753 | --logfile $$(call TEST_LOG_FILE,$(1),$(2),$(3),$(4)) \ | |
c34b1796 | 754 | && touch -r $$@.start_time $$@ && rm $$@.start_time |
223e47cc LB |
755 | |
756 | else | |
757 | ||
1a4d82fc | 758 | $$(call TEST_OK_FILE,$(1),$(2),$(3),$(4)): |
970d7e83 | 759 | @$$(call E, run $(4) [$(2)]: $$<) |
1a4d82fc | 760 | @$$(call E, warning: tests disabled: $$(CTEST_DONT_RUN_$(1)-T-$(2)-H-$(3)-$(4))) |
223e47cc LB |
761 | touch $$@ |
762 | ||
763 | endif | |
764 | ||
765 | endef | |
766 | ||
d9579d0f | 767 | CTEST_NAMES = rpass rpass-valgrind rpass-full rfail-full cfail-full rfail cfail pfail \ |
a7813a04 | 768 | debuginfo-gdb debuginfo-lldb codegen codegen-units rustdocck incremental \ |
5bcae85e | 769 | rmake ui mir-opt |
223e47cc | 770 | |
1a4d82fc JJ |
771 | $(foreach host,$(CFG_HOST), \ |
772 | $(eval $(foreach target,$(CFG_TARGET), \ | |
223e47cc LB |
773 | $(eval $(foreach stage,$(STAGES), \ |
774 | $(eval $(foreach name,$(CTEST_NAMES), \ | |
775 | $(eval $(call DEF_RUN_COMPILETEST,$(stage),$(target),$(host),$(name)))))))))) | |
776 | ||
d9579d0f | 777 | PRETTY_NAMES = pretty-rpass pretty-rpass-valgrind pretty-rpass-full pretty-rfail-full pretty-rfail \ |
7453a54e | 778 | pretty-pretty |
223e47cc | 779 | PRETTY_DEPS_pretty-rpass = $(RPASS_TESTS) |
1a4d82fc | 780 | PRETTY_DEPS_pretty-rpass-valgrind = $(RPASS_VALGRIND_TESTS) |
223e47cc | 781 | PRETTY_DEPS_pretty-rpass-full = $(RPASS_FULL_TESTS) |
d9579d0f | 782 | PRETTY_DEPS_pretty-rfail-full = $(RFAIL_FULL_TESTS) |
223e47cc | 783 | PRETTY_DEPS_pretty-rfail = $(RFAIL_TESTS) |
223e47cc LB |
784 | PRETTY_DEPS_pretty-pretty = $(PRETTY_TESTS) |
785 | PRETTY_DIRNAME_pretty-rpass = run-pass | |
1a4d82fc JJ |
786 | PRETTY_DIRNAME_pretty-rpass-valgrind = run-pass-valgrind |
787 | PRETTY_DIRNAME_pretty-rpass-full = run-pass-fulldeps | |
d9579d0f | 788 | PRETTY_DIRNAME_pretty-rfail-full = run-fail-fulldeps |
223e47cc | 789 | PRETTY_DIRNAME_pretty-rfail = run-fail |
223e47cc LB |
790 | PRETTY_DIRNAME_pretty-pretty = pretty |
791 | ||
d9579d0f AL |
792 | define DEF_PRETTY_FULLDEPS |
793 | PRETTY_DEPS$(1)_T_$(2)_H_$(3)_pretty-rpass-full = $$(CSREQ$(1)_T_$(3)_H_$(3)) | |
794 | PRETTY_DEPS$(1)_T_$(2)_H_$(3)_pretty-rfail-full = $$(CSREQ$(1)_T_$(3)_H_$(3)) | |
795 | endef | |
796 | ||
797 | $(foreach host,$(CFG_HOST), \ | |
798 | $(foreach target,$(CFG_TARGET), \ | |
799 | $(foreach stage,$(STAGES), \ | |
800 | $(eval $(call DEF_PRETTY_FULLDEPS,$(stage),$(target),$(host)))))) | |
801 | ||
223e47cc LB |
802 | define DEF_RUN_PRETTY_TEST |
803 | ||
a7813a04 | 804 | PRETTY_ARGS$(1)-T-$(2)-H-$(3)-$(4) = \ |
1a4d82fc | 805 | $$(CTEST_COMMON_ARGS$(1)-T-$(2)-H-$(3)) \ |
223e47cc LB |
806 | --src-base $$(S)src/test/$$(PRETTY_DIRNAME_$(4))/ \ |
807 | --build-base $(3)/test/$$(PRETTY_DIRNAME_$(4))/ \ | |
808 | --mode pretty | |
809 | ||
810 | check-stage$(1)-T-$(2)-H-$(3)-$(4)-exec: $$(call TEST_OK_FILE,$(1),$(2),$(3),$(4)) | |
811 | ||
812 | $$(call TEST_OK_FILE,$(1),$(2),$(3),$(4)): \ | |
1a4d82fc JJ |
813 | $$(TEST_SREQ$(1)_T_$(2)_H_$(3)) \ |
814 | $$(PRETTY_DEPS_$(4)) \ | |
d9579d0f | 815 | $$(PRETTY_DEPS$(1)_T_$(2)_H_$(3)_$(4)) |
970d7e83 | 816 | @$$(call E, run pretty-rpass [$(2)]: $$<) |
c34b1796 | 817 | $$(Q)touch $$@.start_time |
223e47cc LB |
818 | $$(Q)$$(call CFG_RUN_CTEST_$(2),$(1),$$<,$(3)) \ |
819 | $$(PRETTY_ARGS$(1)-T-$(2)-H-$(3)-$(4)) \ | |
820 | --logfile $$(call TEST_LOG_FILE,$(1),$(2),$(3),$(4)) \ | |
c34b1796 | 821 | && touch -r $$@.start_time $$@ && rm $$@.start_time |
223e47cc LB |
822 | |
823 | endef | |
824 | ||
1a4d82fc JJ |
825 | $(foreach host,$(CFG_HOST), \ |
826 | $(foreach target,$(CFG_TARGET), \ | |
223e47cc LB |
827 | $(foreach stage,$(STAGES), \ |
828 | $(foreach pretty-name,$(PRETTY_NAMES), \ | |
829 | $(eval $(call DEF_RUN_PRETTY_TEST,$(stage),$(target),$(host),$(pretty-name))))))) | |
830 | ||
223e47cc | 831 | |
1a4d82fc JJ |
832 | ###################################################################### |
833 | # Crate & freestanding documentation tests | |
834 | ###################################################################### | |
835 | ||
836 | define DEF_RUSTDOC | |
837 | RUSTDOC_EXE_$(1)_T_$(2)_H_$(3) := $$(HBIN$(1)_H_$(3))/rustdoc$$(X_$(3)) | |
838 | RUSTDOC_$(1)_T_$(2)_H_$(3) := $$(RPATH_VAR$(1)_T_$(2)_H_$(3)) $$(RUSTDOC_EXE_$(1)_T_$(2)_H_$(3)) | |
839 | endef | |
840 | ||
841 | $(foreach host,$(CFG_HOST), \ | |
842 | $(foreach target,$(CFG_TARGET), \ | |
843 | $(foreach stage,$(STAGES), \ | |
844 | $(eval $(call DEF_RUSTDOC,$(stage),$(target),$(host)))))) | |
845 | ||
846 | # Freestanding | |
847 | ||
848 | define DEF_DOC_TEST | |
223e47cc LB |
849 | |
850 | check-stage$(1)-T-$(2)-H-$(3)-doc-$(4)-exec: $$(call TEST_OK_FILE,$(1),$(2),$(3),doc-$(4)) | |
851 | ||
1a4d82fc JJ |
852 | # If NO_REBUILD is set then break the dependencies on everything but |
853 | # the source files so we can test documentation without rebuilding | |
854 | # rustdoc etc. | |
855 | ifeq ($(NO_REBUILD),) | |
856 | DOCTESTDEP_$(1)_$(2)_$(3)_$(4) = \ | |
857 | $$(DOCFILE_$(4)) \ | |
858 | $$(TEST_SREQ$(1)_T_$(2)_H_$(3)) \ | |
859 | $$(RUSTDOC_EXE_$(1)_T_$(2)_H_$(3)) | |
860 | else | |
861 | DOCTESTDEP_$(1)_$(2)_$(3)_$(4) = $$(DOCFILE_$(4)) | |
862 | endif | |
223e47cc | 863 | |
1a4d82fc JJ |
864 | ifeq ($(2),$$(CFG_BUILD)) |
865 | $$(call TEST_OK_FILE,$(1),$(2),$(3),doc-$(4)): $$(DOCTESTDEP_$(1)_$(2)_$(3)_$(4)) | |
866 | @$$(call E, run doc-$(4) [$(2)]) | |
c34b1796 | 867 | $$(Q)touch $$@.start_time |
1a4d82fc | 868 | $$(Q)$$(RUSTDOC_$(1)_T_$(2)_H_$(3)) --cfg dox --test $$< \ |
c34b1796 AL |
869 | --test-args "$$(TESTARGS)" && \ |
870 | touch -r $$@.start_time $$@ && rm $$@.start_time | |
1a4d82fc JJ |
871 | else |
872 | $$(call TEST_OK_FILE,$(1),$(2),$(3),doc-$(4)): | |
873 | touch $$@ | |
874 | endif | |
223e47cc LB |
875 | endef |
876 | ||
1a4d82fc JJ |
877 | $(foreach host,$(CFG_HOST), \ |
878 | $(foreach target,$(CFG_TARGET), \ | |
223e47cc | 879 | $(foreach stage,$(STAGES), \ |
1a4d82fc JJ |
880 | $(foreach docname,$(DOC_NAMES), \ |
881 | $(eval $(call DEF_DOC_TEST,$(stage),$(target),$(host),$(docname))))))) | |
223e47cc | 882 | |
1a4d82fc | 883 | # Crates |
223e47cc | 884 | |
1a4d82fc | 885 | define DEF_CRATE_DOC_TEST |
223e47cc | 886 | |
1a4d82fc JJ |
887 | # If NO_REBUILD is set then break the dependencies on everything but |
888 | # the source files so we can test crate documentation without | |
889 | # rebuilding any of the parent crates. | |
890 | ifeq ($(NO_REBUILD),) | |
891 | CRATEDOCTESTDEP_$(1)_$(2)_$(3)_$(4) = \ | |
892 | $$(TEST_SREQ$(1)_T_$(2)_H_$(3)) \ | |
893 | $$(CRATE_FULLDEPS_$(1)_T_$(2)_H_$(3)_$(4)) \ | |
894 | $$(RUSTDOC_EXE_$(1)_T_$(2)_H_$(3)) | |
895 | else | |
896 | CRATEDOCTESTDEP_$(1)_$(2)_$(3)_$(4) = $$(RSINPUTS_$(4)) | |
897 | endif | |
223e47cc | 898 | |
1a4d82fc JJ |
899 | check-stage$(1)-T-$(2)-H-$(3)-doc-crate-$(4)-exec: \ |
900 | $$(call TEST_OK_FILE,$(1),$(2),$(3),doc-crate-$(4)) | |
223e47cc | 901 | |
1a4d82fc JJ |
902 | ifeq ($(2),$$(CFG_BUILD)) |
903 | $$(call TEST_OK_FILE,$(1),$(2),$(3),doc-crate-$(4)): $$(CRATEDOCTESTDEP_$(1)_$(2)_$(3)_$(4)) | |
904 | @$$(call E, run doc-crate-$(4) [$(2)]) | |
c34b1796 | 905 | $$(Q)touch $$@.start_time |
62682a34 | 906 | $$(Q)CFG_LLVM_LINKAGE_FILE=$$(LLVM_LINKAGE_PATH_$(2)) \ |
1a4d82fc | 907 | $$(RUSTDOC_$(1)_T_$(2)_H_$(3)) --test --cfg dox \ |
c34b1796 AL |
908 | $$(CRATEFILE_$(4)) --test-args "$$(TESTARGS)" && \ |
909 | touch -r $$@.start_time $$@ && rm $$@.start_time | |
1a4d82fc JJ |
910 | else |
911 | $$(call TEST_OK_FILE,$(1),$(2),$(3),doc-crate-$(4)): | |
912 | touch $$@ | |
913 | endif | |
223e47cc LB |
914 | |
915 | endef | |
916 | ||
1a4d82fc JJ |
917 | $(foreach host,$(CFG_HOST), \ |
918 | $(foreach target,$(CFG_TARGET), \ | |
919 | $(foreach stage,$(STAGES), \ | |
920 | $(foreach crate,$(TEST_DOC_CRATES), \ | |
921 | $(eval $(call DEF_CRATE_DOC_TEST,$(stage),$(target),$(host),$(crate))))))) | |
223e47cc | 922 | |
7453a54e SL |
923 | define DEF_DOC_TEST_ERROR_INDEX |
924 | ||
925 | check-stage$(1)-T-$(2)-H-$(3)-doc-error-index-exec: $$(call TEST_OK_FILE,$(1),$(2),$(3),doc-error-index) | |
926 | ||
927 | ifeq ($(2),$$(CFG_BUILD)) | |
928 | $$(call TEST_OK_FILE,$(1),$(2),$(3),doc-error-index): \ | |
929 | $$(TEST_SREQ$(1)_T_$(2)_H_$(3)) \ | |
930 | doc/error-index.md | |
931 | $$(Q)touch $$@.start_time | |
932 | $$(RUSTDOC_$(1)_T_$(2)_H_$(3)) --test doc/error-index.md | |
933 | $$(Q)touch -r $$@.start_time $$@ && rm $$@.start_time | |
934 | else | |
935 | $$(call TEST_OK_FILE,$(1),$(2),$(3),doc-error-index): | |
936 | $$(Q)touch $$@ | |
937 | endif | |
938 | endef | |
939 | ||
940 | $(foreach host,$(CFG_HOST), \ | |
941 | $(foreach target,$(CFG_TARGET), \ | |
942 | $(foreach stage,$(STAGES), \ | |
943 | $(eval $(call DEF_DOC_TEST_ERROR_INDEX,$(stage),$(target),$(host)))))) | |
944 | ||
223e47cc LB |
945 | ###################################################################### |
946 | # Shortcut rules | |
947 | ###################################################################### | |
948 | ||
949 | TEST_GROUPS = \ | |
950 | crates \ | |
951 | $(foreach crate,$(TEST_CRATES),$(crate)) \ | |
1a4d82fc | 952 | $(foreach crate,$(TEST_DOC_CRATES),doc-crate-$(crate)) \ |
223e47cc | 953 | rpass \ |
7453a54e | 954 | rpass-valgrind \ |
223e47cc | 955 | rpass-full \ |
d9579d0f | 956 | rfail-full \ |
1a4d82fc | 957 | cfail-full \ |
223e47cc LB |
958 | rfail \ |
959 | cfail \ | |
85aaf69f | 960 | pfail \ |
1a4d82fc | 961 | rmake \ |
9346a6ac | 962 | rustdocck \ |
1a4d82fc JJ |
963 | debuginfo-gdb \ |
964 | debuginfo-lldb \ | |
965 | codegen \ | |
7453a54e | 966 | codegen-units \ |
54a0048b | 967 | incremental \ |
a7813a04 | 968 | ui \ |
223e47cc | 969 | doc \ |
1a4d82fc | 970 | $(foreach docname,$(DOC_NAMES),doc-$(docname)) \ |
223e47cc LB |
971 | pretty \ |
972 | pretty-rpass \ | |
7453a54e | 973 | pretty-rpass-valgrind \ |
223e47cc | 974 | pretty-rpass-full \ |
d9579d0f | 975 | pretty-rfail-full \ |
223e47cc | 976 | pretty-rfail \ |
223e47cc | 977 | pretty-pretty \ |
5bcae85e | 978 | mir-opt \ |
223e47cc LB |
979 | $(NULL) |
980 | ||
981 | define DEF_CHECK_FOR_STAGE_AND_TARGET_AND_HOST | |
982 | check-stage$(1)-T-$(2)-H-$(3): check-stage$(1)-T-$(2)-H-$(3)-exec | |
983 | endef | |
984 | ||
985 | $(foreach stage,$(STAGES), \ | |
1a4d82fc JJ |
986 | $(foreach target,$(CFG_TARGET), \ |
987 | $(foreach host,$(CFG_HOST), \ | |
223e47cc LB |
988 | $(eval $(call DEF_CHECK_FOR_STAGE_AND_TARGET_AND_HOST,$(stage),$(target),$(host)))))) |
989 | ||
990 | define DEF_CHECK_FOR_STAGE_AND_TARGET_AND_HOST_AND_GROUP | |
991 | check-stage$(1)-T-$(2)-H-$(3)-$(4): check-stage$(1)-T-$(2)-H-$(3)-$(4)-exec | |
992 | endef | |
993 | ||
994 | $(foreach stage,$(STAGES), \ | |
1a4d82fc JJ |
995 | $(foreach target,$(CFG_TARGET), \ |
996 | $(foreach host,$(CFG_HOST), \ | |
223e47cc LB |
997 | $(foreach group,$(TEST_GROUPS), \ |
998 | $(eval $(call DEF_CHECK_FOR_STAGE_AND_TARGET_AND_HOST_AND_GROUP,$(stage),$(target),$(host),$(group))))))) | |
999 | ||
1000 | define DEF_CHECK_FOR_STAGE | |
1a4d82fc JJ |
1001 | check-stage$(1): check-stage$(1)-H-$$(CFG_BUILD) |
1002 | check-stage$(1)-H-all: $$(foreach target,$$(CFG_TARGET), \ | |
223e47cc LB |
1003 | check-stage$(1)-H-$$(target)) |
1004 | endef | |
1005 | ||
1006 | $(foreach stage,$(STAGES), \ | |
1007 | $(eval $(call DEF_CHECK_FOR_STAGE,$(stage)))) | |
1008 | ||
1009 | define DEF_CHECK_FOR_STAGE_AND_GROUP | |
1a4d82fc JJ |
1010 | check-stage$(1)-$(2): check-stage$(1)-H-$$(CFG_BUILD)-$(2) |
1011 | check-stage$(1)-H-all-$(2): $$(foreach target,$$(CFG_TARGET), \ | |
223e47cc LB |
1012 | check-stage$(1)-H-$$(target)-$(2)) |
1013 | endef | |
1014 | ||
1015 | $(foreach stage,$(STAGES), \ | |
1016 | $(foreach group,$(TEST_GROUPS), \ | |
1017 | $(eval $(call DEF_CHECK_FOR_STAGE_AND_GROUP,$(stage),$(group))))) | |
1018 | ||
1019 | ||
1020 | define DEF_CHECK_FOR_STAGE_AND_HOSTS | |
1a4d82fc | 1021 | check-stage$(1)-H-$(2): $$(foreach target,$$(CFG_TARGET), \ |
223e47cc LB |
1022 | check-stage$(1)-T-$$(target)-H-$(2)) |
1023 | endef | |
1024 | ||
1025 | $(foreach stage,$(STAGES), \ | |
1a4d82fc | 1026 | $(foreach host,$(CFG_HOST), \ |
223e47cc LB |
1027 | $(eval $(call DEF_CHECK_FOR_STAGE_AND_HOSTS,$(stage),$(host))))) |
1028 | ||
1029 | define DEF_CHECK_FOR_STAGE_AND_HOSTS_AND_GROUP | |
1a4d82fc | 1030 | check-stage$(1)-H-$(2)-$(3): $$(foreach target,$$(CFG_TARGET), \ |
223e47cc LB |
1031 | check-stage$(1)-T-$$(target)-H-$(2)-$(3)) |
1032 | endef | |
1033 | ||
1034 | $(foreach stage,$(STAGES), \ | |
1a4d82fc | 1035 | $(foreach host,$(CFG_HOST), \ |
223e47cc LB |
1036 | $(foreach group,$(TEST_GROUPS), \ |
1037 | $(eval $(call DEF_CHECK_FOR_STAGE_AND_HOSTS_AND_GROUP,$(stage),$(host),$(group)))))) | |
1038 | ||
1a4d82fc JJ |
1039 | define DEF_CHECK_DOC_FOR_STAGE |
1040 | check-stage$(1)-docs: $$(foreach docname,$$(DOC_NAMES), \ | |
1041 | check-stage$(1)-T-$$(CFG_BUILD)-H-$$(CFG_BUILD)-doc-$$(docname)) \ | |
1042 | $$(foreach crate,$$(TEST_DOC_CRATES), \ | |
7453a54e SL |
1043 | check-stage$(1)-T-$$(CFG_BUILD)-H-$$(CFG_BUILD)-doc-crate-$$(crate)) \ |
1044 | check-stage$(1)-T-$$(CFG_BUILD)-H-$$(CFG_BUILD)-doc-error-index-exec | |
1a4d82fc | 1045 | endef |
223e47cc | 1046 | |
1a4d82fc JJ |
1047 | $(foreach stage,$(STAGES), \ |
1048 | $(eval $(call DEF_CHECK_DOC_FOR_STAGE,$(stage)))) | |
223e47cc | 1049 | |
1a4d82fc JJ |
1050 | define DEF_CHECK_CRATE |
1051 | check-$(1): check-stage2-T-$$(CFG_BUILD)-H-$$(CFG_BUILD)-$(1)-exec | |
1052 | endef | |
223e47cc | 1053 | |
1a4d82fc JJ |
1054 | $(foreach crate,$(TEST_CRATES), \ |
1055 | $(eval $(call DEF_CHECK_CRATE,$(crate)))) |