Skip to content

Commit 70e6ffb

Browse files
committed
Bootstrap: Check validity of --target and --host triples before starting a build
Resolves #122128
1 parent ca7d34e commit 70e6ffb

File tree

2 files changed

+313
-0
lines changed

2 files changed

+313
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,290 @@
1+
{
2+
("x86_64-unknown-linux-gnu", x86_64_unknown_linux_gnu),
3+
("x86_64-unknown-linux-gnux32", x86_64_unknown_linux_gnux32),
4+
("i686-unknown-linux-gnu", i686_unknown_linux_gnu),
5+
("i586-unknown-linux-gnu", i586_unknown_linux_gnu),
6+
("loongarch64-unknown-linux-gnu", loongarch64_unknown_linux_gnu),
7+
("loongarch64-unknown-linux-musl", loongarch64_unknown_linux_musl),
8+
("m68k-unknown-linux-gnu", m68k_unknown_linux_gnu),
9+
("csky-unknown-linux-gnuabiv2", csky_unknown_linux_gnuabiv2),
10+
("csky-unknown-linux-gnuabiv2hf", csky_unknown_linux_gnuabiv2hf),
11+
("mips-unknown-linux-gnu", mips_unknown_linux_gnu),
12+
("mips64-unknown-linux-gnuabi64", mips64_unknown_linux_gnuabi64),
13+
("mips64el-unknown-linux-gnuabi64", mips64el_unknown_linux_gnuabi64),
14+
("mipsisa32r6-unknown-linux-gnu", mipsisa32r6_unknown_linux_gnu),
15+
("mipsisa32r6el-unknown-linux-gnu", mipsisa32r6el_unknown_linux_gnu),
16+
("mipsisa64r6-unknown-linux-gnuabi64", mipsisa64r6_unknown_linux_gnuabi64),
17+
("mipsisa64r6el-unknown-linux-gnuabi64", mipsisa64r6el_unknown_linux_gnuabi64),
18+
("mipsel-unknown-linux-gnu", mipsel_unknown_linux_gnu),
19+
("powerpc-unknown-linux-gnu", powerpc_unknown_linux_gnu),
20+
("powerpc-unknown-linux-gnuspe", powerpc_unknown_linux_gnuspe),
21+
("powerpc-unknown-linux-musl", powerpc_unknown_linux_musl),
22+
("powerpc64-ibm-aix", powerpc64_ibm_aix),
23+
("powerpc64-unknown-linux-gnu", powerpc64_unknown_linux_gnu),
24+
("powerpc64-unknown-linux-musl", powerpc64_unknown_linux_musl),
25+
("powerpc64le-unknown-linux-gnu", powerpc64le_unknown_linux_gnu),
26+
("powerpc64le-unknown-linux-musl", powerpc64le_unknown_linux_musl),
27+
("s390x-unknown-linux-gnu", s390x_unknown_linux_gnu),
28+
("s390x-unknown-linux-musl", s390x_unknown_linux_musl),
29+
("sparc-unknown-linux-gnu", sparc_unknown_linux_gnu),
30+
("sparc64-unknown-linux-gnu", sparc64_unknown_linux_gnu),
31+
("arm-unknown-linux-gnueabi", arm_unknown_linux_gnueabi),
32+
("arm-unknown-linux-gnueabihf", arm_unknown_linux_gnueabihf),
33+
("armeb-unknown-linux-gnueabi", armeb_unknown_linux_gnueabi),
34+
("arm-unknown-linux-musleabi", arm_unknown_linux_musleabi),
35+
("arm-unknown-linux-musleabihf", arm_unknown_linux_musleabihf),
36+
("armv4t-unknown-linux-gnueabi", armv4t_unknown_linux_gnueabi),
37+
("armv5te-unknown-linux-gnueabi", armv5te_unknown_linux_gnueabi),
38+
("armv5te-unknown-linux-musleabi", armv5te_unknown_linux_musleabi),
39+
("armv5te-unknown-linux-uclibceabi", armv5te_unknown_linux_uclibceabi),
40+
("armv7-unknown-linux-gnueabi", armv7_unknown_linux_gnueabi),
41+
("armv7-unknown-linux-gnueabihf", armv7_unknown_linux_gnueabihf),
42+
("thumbv7neon-unknown-linux-gnueabihf", thumbv7neon_unknown_linux_gnueabihf),
43+
("thumbv7neon-unknown-linux-musleabihf", thumbv7neon_unknown_linux_musleabihf),
44+
("armv7-unknown-linux-musleabi", armv7_unknown_linux_musleabi),
45+
("armv7-unknown-linux-musleabihf", armv7_unknown_linux_musleabihf),
46+
("aarch64-unknown-linux-gnu", aarch64_unknown_linux_gnu),
47+
("aarch64-unknown-linux-musl", aarch64_unknown_linux_musl),
48+
("x86_64-unknown-linux-musl", x86_64_unknown_linux_musl),
49+
("i686-unknown-linux-musl", i686_unknown_linux_musl),
50+
("i586-unknown-linux-musl", i586_unknown_linux_musl),
51+
("mips-unknown-linux-musl", mips_unknown_linux_musl),
52+
("mipsel-unknown-linux-musl", mipsel_unknown_linux_musl),
53+
("mips64-unknown-linux-muslabi64", mips64_unknown_linux_muslabi64),
54+
("mips64el-unknown-linux-muslabi64", mips64el_unknown_linux_muslabi64),
55+
("hexagon-unknown-linux-musl", hexagon_unknown_linux_musl),
56+
("hexagon-unknown-none-elf", hexagon_unknown_none_elf),
57+
58+
("mips-unknown-linux-uclibc", mips_unknown_linux_uclibc),
59+
("mipsel-unknown-linux-uclibc", mipsel_unknown_linux_uclibc),
60+
61+
("i686-linux-android", i686_linux_android),
62+
("x86_64-linux-android", x86_64_linux_android),
63+
("arm-linux-androideabi", arm_linux_androideabi),
64+
("armv7-linux-androideabi", armv7_linux_androideabi),
65+
("thumbv7neon-linux-androideabi", thumbv7neon_linux_androideabi),
66+
("aarch64-linux-android", aarch64_linux_android),
67+
("riscv64-linux-android", riscv64_linux_android),
68+
69+
("aarch64-unknown-freebsd", aarch64_unknown_freebsd),
70+
("armv6-unknown-freebsd", armv6_unknown_freebsd),
71+
("armv7-unknown-freebsd", armv7_unknown_freebsd),
72+
("i686-unknown-freebsd", i686_unknown_freebsd),
73+
("powerpc-unknown-freebsd", powerpc_unknown_freebsd),
74+
("powerpc64-unknown-freebsd", powerpc64_unknown_freebsd),
75+
("powerpc64le-unknown-freebsd", powerpc64le_unknown_freebsd),
76+
("riscv64gc-unknown-freebsd", riscv64gc_unknown_freebsd),
77+
("x86_64-unknown-freebsd", x86_64_unknown_freebsd),
78+
79+
("x86_64-unknown-dragonfly", x86_64_unknown_dragonfly),
80+
81+
("aarch64-unknown-openbsd", aarch64_unknown_openbsd),
82+
("i686-unknown-openbsd", i686_unknown_openbsd),
83+
("powerpc-unknown-openbsd", powerpc_unknown_openbsd),
84+
("powerpc64-unknown-openbsd", powerpc64_unknown_openbsd),
85+
("riscv64gc-unknown-openbsd", riscv64gc_unknown_openbsd),
86+
("sparc64-unknown-openbsd", sparc64_unknown_openbsd),
87+
("x86_64-unknown-openbsd", x86_64_unknown_openbsd),
88+
89+
("aarch64-unknown-netbsd", aarch64_unknown_netbsd),
90+
("aarch64_be-unknown-netbsd", aarch64_be_unknown_netbsd),
91+
("armv6-unknown-netbsd-eabihf", armv6_unknown_netbsd_eabihf),
92+
("armv7-unknown-netbsd-eabihf", armv7_unknown_netbsd_eabihf),
93+
("i586-unknown-netbsd", i586_unknown_netbsd),
94+
("i686-unknown-netbsd", i686_unknown_netbsd),
95+
("mipsel-unknown-netbsd", mipsel_unknown_netbsd),
96+
("powerpc-unknown-netbsd", powerpc_unknown_netbsd),
97+
("riscv64gc-unknown-netbsd", riscv64gc_unknown_netbsd),
98+
("sparc64-unknown-netbsd", sparc64_unknown_netbsd),
99+
("x86_64-unknown-netbsd", x86_64_unknown_netbsd),
100+
101+
("i686-unknown-haiku", i686_unknown_haiku),
102+
("x86_64-unknown-haiku", x86_64_unknown_haiku),
103+
104+
("i686-unknown-hurd-gnu", i686_unknown_hurd_gnu),
105+
106+
("aarch64-apple-darwin", aarch64_apple_darwin),
107+
("arm64e-apple-darwin", arm64e_apple_darwin),
108+
("x86_64-apple-darwin", x86_64_apple_darwin),
109+
("x86_64h-apple-darwin", x86_64h_apple_darwin),
110+
("i686-apple-darwin", i686_apple_darwin),
111+
112+
// FIXME(#106649): Remove aarch64-fuchsia in favor of aarch64-unknown-fuchsia
113+
("aarch64-fuchsia", aarch64_fuchsia),
114+
("aarch64-unknown-fuchsia", aarch64_unknown_fuchsia),
115+
("riscv64gc-unknown-fuchsia", riscv64gc_unknown_fuchsia),
116+
// FIXME(#106649): Remove x86_64-fuchsia in favor of x86_64-unknown-fuchsia
117+
("x86_64-fuchsia", x86_64_fuchsia),
118+
("x86_64-unknown-fuchsia", x86_64_unknown_fuchsia),
119+
120+
("avr-unknown-gnu-atmega328", avr_unknown_gnu_atmega328),
121+
122+
("x86_64-unknown-l4re-uclibc", x86_64_unknown_l4re_uclibc),
123+
124+
("aarch64-unknown-redox", aarch64_unknown_redox),
125+
("x86_64-unknown-redox", x86_64_unknown_redox),
126+
127+
("i386-apple-ios", i386_apple_ios),
128+
("x86_64-apple-ios", x86_64_apple_ios),
129+
("aarch64-apple-ios", aarch64_apple_ios),
130+
("arm64e-apple-ios", arm64e_apple_ios),
131+
("armv7s-apple-ios", armv7s_apple_ios),
132+
("x86_64-apple-ios-macabi", x86_64_apple_ios_macabi),
133+
("aarch64-apple-ios-macabi", aarch64_apple_ios_macabi),
134+
("aarch64-apple-ios-sim", aarch64_apple_ios_sim),
135+
("aarch64-apple-tvos", aarch64_apple_tvos),
136+
("aarch64-apple-tvos-sim", aarch64_apple_tvos_sim),
137+
("x86_64-apple-tvos", x86_64_apple_tvos),
138+
139+
("armv7k-apple-watchos", armv7k_apple_watchos),
140+
("arm64_32-apple-watchos", arm64_32_apple_watchos),
141+
("x86_64-apple-watchos-sim", x86_64_apple_watchos_sim),
142+
("aarch64-apple-watchos", aarch64_apple_watchos),
143+
("aarch64-apple-watchos-sim", aarch64_apple_watchos_sim),
144+
145+
("armebv7r-none-eabi", armebv7r_none_eabi),
146+
("armebv7r-none-eabihf", armebv7r_none_eabihf),
147+
("armv7r-none-eabi", armv7r_none_eabi),
148+
("armv7r-none-eabihf", armv7r_none_eabihf),
149+
("armv8r-none-eabihf", armv8r_none_eabihf),
150+
151+
("x86_64-pc-solaris", x86_64_pc_solaris),
152+
("sparcv9-sun-solaris", sparcv9_sun_solaris),
153+
154+
("x86_64-unknown-illumos", x86_64_unknown_illumos),
155+
("aarch64-unknown-illumos", aarch64_unknown_illumos),
156+
157+
("x86_64-pc-windows-gnu", x86_64_pc_windows_gnu),
158+
("i686-pc-windows-gnu", i686_pc_windows_gnu),
159+
("i686-uwp-windows-gnu", i686_uwp_windows_gnu),
160+
("x86_64-uwp-windows-gnu", x86_64_uwp_windows_gnu),
161+
162+
("aarch64-pc-windows-gnullvm", aarch64_pc_windows_gnullvm),
163+
("i686-pc-windows-gnullvm", i686_pc_windows_gnullvm),
164+
("x86_64-pc-windows-gnullvm", x86_64_pc_windows_gnullvm),
165+
166+
("aarch64-pc-windows-msvc", aarch64_pc_windows_msvc),
167+
("aarch64-uwp-windows-msvc", aarch64_uwp_windows_msvc),
168+
("arm64ec-pc-windows-msvc", arm64ec_pc_windows_msvc),
169+
("x86_64-pc-windows-msvc", x86_64_pc_windows_msvc),
170+
("x86_64-uwp-windows-msvc", x86_64_uwp_windows_msvc),
171+
("x86_64-win7-windows-msvc", x86_64_win7_windows_msvc),
172+
("i686-pc-windows-msvc", i686_pc_windows_msvc),
173+
("i686-uwp-windows-msvc", i686_uwp_windows_msvc),
174+
("i686-win7-windows-msvc", i686_win7_windows_msvc),
175+
("i586-pc-windows-msvc", i586_pc_windows_msvc),
176+
("thumbv7a-pc-windows-msvc", thumbv7a_pc_windows_msvc),
177+
("thumbv7a-uwp-windows-msvc", thumbv7a_uwp_windows_msvc),
178+
179+
("wasm32-unknown-emscripten", wasm32_unknown_emscripten),
180+
("wasm32-unknown-unknown", wasm32_unknown_unknown),
181+
("wasm32-wasi", wasm32_wasi),
182+
("wasm32-wasip1", wasm32_wasip1),
183+
("wasm32-wasip2", wasm32_wasip2),
184+
("wasm32-wasip1-threads", wasm32_wasip1_threads),
185+
("wasm64-unknown-unknown", wasm64_unknown_unknown),
186+
187+
("thumbv6m-none-eabi", thumbv6m_none_eabi),
188+
("thumbv7m-none-eabi", thumbv7m_none_eabi),
189+
("thumbv7em-none-eabi", thumbv7em_none_eabi),
190+
("thumbv7em-none-eabihf", thumbv7em_none_eabihf),
191+
("thumbv8m.base-none-eabi", thumbv8m_base_none_eabi),
192+
("thumbv8m.main-none-eabi", thumbv8m_main_none_eabi),
193+
("thumbv8m.main-none-eabihf", thumbv8m_main_none_eabihf),
194+
195+
("armv7a-none-eabi", armv7a_none_eabi),
196+
("armv7a-none-eabihf", armv7a_none_eabihf),
197+
198+
("msp430-none-elf", msp430_none_elf),
199+
200+
("aarch64-unknown-hermit", aarch64_unknown_hermit),
201+
("riscv64gc-unknown-hermit", riscv64gc_unknown_hermit),
202+
("x86_64-unknown-hermit", x86_64_unknown_hermit),
203+
204+
("x86_64-unikraft-linux-musl", x86_64_unikraft_linux_musl),
205+
206+
("riscv32i-unknown-none-elf", riscv32i_unknown_none_elf),
207+
("riscv32im-risc0-zkvm-elf", riscv32im_risc0_zkvm_elf),
208+
("riscv32im-unknown-none-elf", riscv32im_unknown_none_elf),
209+
("riscv32ima-unknown-none-elf", riscv32ima_unknown_none_elf),
210+
("riscv32imc-unknown-none-elf", riscv32imc_unknown_none_elf),
211+
("riscv32imc-esp-espidf", riscv32imc_esp_espidf),
212+
("riscv32imac-esp-espidf", riscv32imac_esp_espidf),
213+
("riscv32imafc-esp-espidf", riscv32imafc_esp_espidf),
214+
215+
("riscv32imac-unknown-none-elf", riscv32imac_unknown_none_elf),
216+
("riscv32imafc-unknown-none-elf", riscv32imafc_unknown_none_elf),
217+
("riscv32imac-unknown-xous-elf", riscv32imac_unknown_xous_elf),
218+
("riscv32gc-unknown-linux-gnu", riscv32gc_unknown_linux_gnu),
219+
("riscv32gc-unknown-linux-musl", riscv32gc_unknown_linux_musl),
220+
("riscv64imac-unknown-none-elf", riscv64imac_unknown_none_elf),
221+
("riscv64gc-unknown-none-elf", riscv64gc_unknown_none_elf),
222+
("riscv64gc-unknown-linux-gnu", riscv64gc_unknown_linux_gnu),
223+
("riscv64gc-unknown-linux-musl", riscv64gc_unknown_linux_musl),
224+
225+
("sparc-unknown-none-elf", sparc_unknown_none_elf),
226+
227+
("loongarch64-unknown-none", loongarch64_unknown_none),
228+
("loongarch64-unknown-none-softfloat", loongarch64_unknown_none_softfloat),
229+
230+
("aarch64-unknown-none", aarch64_unknown_none),
231+
("aarch64-unknown-none-softfloat", aarch64_unknown_none_softfloat),
232+
233+
("x86_64-fortanix-unknown-sgx", x86_64_fortanix_unknown_sgx),
234+
235+
("x86_64-unknown-uefi", x86_64_unknown_uefi),
236+
("i686-unknown-uefi", i686_unknown_uefi),
237+
("aarch64-unknown-uefi", aarch64_unknown_uefi),
238+
239+
("nvptx64-nvidia-cuda", nvptx64_nvidia_cuda),
240+
241+
("i686-wrs-vxworks", i686_wrs_vxworks),
242+
("x86_64-wrs-vxworks", x86_64_wrs_vxworks),
243+
("armv7-wrs-vxworks-eabihf", armv7_wrs_vxworks_eabihf),
244+
("aarch64-wrs-vxworks", aarch64_wrs_vxworks),
245+
("powerpc-wrs-vxworks", powerpc_wrs_vxworks),
246+
("powerpc-wrs-vxworks-spe", powerpc_wrs_vxworks_spe),
247+
("powerpc64-wrs-vxworks", powerpc64_wrs_vxworks),
248+
249+
("aarch64-kmc-solid_asp3", aarch64_kmc_solid_asp3),
250+
("armv7a-kmc-solid_asp3-eabi", armv7a_kmc_solid_asp3_eabi),
251+
("armv7a-kmc-solid_asp3-eabihf", armv7a_kmc_solid_asp3_eabihf),
252+
253+
("mipsel-sony-psp", mipsel_sony_psp),
254+
("mipsel-sony-psx", mipsel_sony_psx),
255+
("mipsel-unknown-none", mipsel_unknown_none),
256+
("thumbv4t-none-eabi", thumbv4t_none_eabi),
257+
("armv4t-none-eabi", armv4t_none_eabi),
258+
("thumbv5te-none-eabi", thumbv5te_none_eabi),
259+
("armv5te-none-eabi", armv5te_none_eabi),
260+
261+
("aarch64_be-unknown-linux-gnu", aarch64_be_unknown_linux_gnu),
262+
("aarch64-unknown-linux-gnu_ilp32", aarch64_unknown_linux_gnu_ilp32),
263+
("aarch64_be-unknown-linux-gnu_ilp32", aarch64_be_unknown_linux_gnu_ilp32),
264+
265+
("bpfeb-unknown-none", bpfeb_unknown_none),
266+
("bpfel-unknown-none", bpfel_unknown_none),
267+
268+
("armv6k-nintendo-3ds", armv6k_nintendo_3ds),
269+
270+
("aarch64-nintendo-switch-freestanding", aarch64_nintendo_switch_freestanding),
271+
272+
("armv7-sony-vita-newlibeabihf", armv7_sony_vita_newlibeabihf),
273+
274+
("armv7-unknown-linux-uclibceabi", armv7_unknown_linux_uclibceabi),
275+
("armv7-unknown-linux-uclibceabihf", armv7_unknown_linux_uclibceabihf),
276+
277+
("x86_64-unknown-none", x86_64_unknown_none),
278+
279+
("aarch64-unknown-teeos", aarch64_unknown_teeos),
280+
281+
("mips64-openwrt-linux-musl", mips64_openwrt_linux_musl),
282+
283+
("aarch64-unknown-nto-qnx710", aarch64_unknown_nto_qnx710),
284+
("x86_64-pc-nto-qnx710", x86_64_pc_nto_qnx710),
285+
("i586-pc-nto-qnx700", i586_pc_nto_qnx700),
286+
287+
("aarch64-unknown-linux-ohos", aarch64_unknown_linux_ohos),
288+
("armv7-unknown-linux-ohos", armv7_unknown_linux_ohos),
289+
("x86_64-unknown-linux-ohos", x86_64_unknown_linux_ohos),
290+
}

src/bootstrap/src/core/sanity.rs

+23
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,29 @@ than building it.
177177
continue;
178178
}
179179

180+
// Check if there exists a built-in target in the list of supported targets.
181+
let mut has_target = false;
182+
183+
let cur_dir = build.config.src.display().to_string();
184+
185+
let supported_target_file = format!("{cur_dir}/compiler/rustc_target/src/spec/supported_targets.txt");
186+
let contents = fs::read_to_string(supported_target_file)
187+
.expect("Should have been able to read the file.");
188+
189+
let target_str = target.to_string();
190+
for line in contents.lines() {
191+
has_target |= line.contains(&target_str);
192+
}
193+
194+
// If not, check for a valid file location that may have been specified
195+
// by the user for the custom target.
196+
has_target |= env::var_os("RUST_TARGET_PATH").is_some();
197+
198+
if !has_target {
199+
panic!("No such target exists in the target list,
200+
specify a correct location of the JSON specification file for custom targets!")
201+
}
202+
180203
if !build.config.dry_run() {
181204
cmd_finder.must_have(build.cc(*target));
182205
if let Some(ar) = build.ar(*target) {

0 commit comments

Comments
 (0)