| // Checks that all the targets returned by `rustc --print target-list` are valid target |
| // specifications. |
| |
| // ignore-tidy-linelength |
| //@ needs-llvm-components: aarch64 arm avr bpf csky hexagon loongarch m68k mips msp430 nvptx powerpc riscv sparc systemz webassembly x86 |
| // FIXME(jieyouxu): there has to be a better way to do this, without the needs-llvm-components it |
| // will fail on LLVM built without all of the components listed above. |
| |
| use run_make_support::bare_rustc; |
| |
| // FIXME(#127877): certain experimental targets fail with creating a 'LLVM TargetMachine' in CI, so |
| // we skip them. |
| const EXPERIMENTAL_TARGETS: &[&str] = &["avr", "m68k", "csky", "xtensa"]; |
| |
| fn main() { |
| let targets = bare_rustc().print("target-list").run().stdout_utf8(); |
| |
| for target in targets.lines() { |
| // skip experimental targets that would otherwise fail |
| if EXPERIMENTAL_TARGETS.iter().any(|experimental| target.contains(experimental)) { |
| continue; |
| } |
| |
| bare_rustc().target(target).print("sysroot").run(); |
| } |
| } |