@@ -20,6 +20,7 @@ use std::str::FromStr;
20
20
use crate :: cache:: { Interned , INTERNER } ;
21
21
use crate :: cc_detect:: { ndk_compiler, Language } ;
22
22
use crate :: channel:: { self , GitInfo } ;
23
+ use crate :: compile:: CODEGEN_BACKEND_PREFIX ;
23
24
pub use crate :: flags:: Subcommand ;
24
25
use crate :: flags:: { Color , Flags , Warnings } ;
25
26
use crate :: util:: { exe, output, t} ;
@@ -1443,8 +1444,21 @@ impl Config {
1443
1444
. map ( |v| v. parse ( ) . expect ( "failed to parse rust.llvm-libunwind" ) ) ;
1444
1445
1445
1446
if let Some ( ref backends) = rust. codegen_backends {
1446
- config. rust_codegen_backends =
1447
- backends. iter ( ) . map ( |s| INTERNER . intern_str ( s) ) . collect ( ) ;
1447
+ let available_backends = vec ! [ "llvm" , "cranelift" , "gcc" ] ;
1448
+
1449
+ config. rust_codegen_backends = backends. iter ( ) . map ( |s| {
1450
+ if let Some ( backend) = s. strip_prefix ( CODEGEN_BACKEND_PREFIX ) {
1451
+ if available_backends. contains ( & backend) {
1452
+ panic ! ( "Invalid value '{s}' for 'rust.codegen-backends'. Instead, please use '{backend}'." ) ;
1453
+ } else {
1454
+ println ! ( "help: '{s}' for 'rust.codegen-backends' might fail. \
1455
+ Codegen backends are mostly defined without the '{CODEGEN_BACKEND_PREFIX}' prefix. \
1456
+ In this case, it would be referred to as '{backend}'.") ;
1457
+ }
1458
+ }
1459
+
1460
+ INTERNER . intern_str ( s)
1461
+ } ) . collect ( ) ;
1448
1462
}
1449
1463
1450
1464
config. rust_codegen_units = rust. codegen_units . map ( threads_from_config) ;
0 commit comments