@@ -313,8 +313,8 @@ impl Config {
313
313
}
314
314
315
315
pub fn target_supported ( & self ) -> bool {
316
- let target = env:: var ( "TARGET" ) . unwrap_or_default ( ) ;
317
- let host = env:: var ( "HOST" ) . unwrap_or_default ( ) ;
316
+ let target = env:: var_os ( "TARGET" ) . unwrap_or_default ( ) ;
317
+ let host = env:: var_os ( "HOST" ) . unwrap_or_default ( ) ;
318
318
319
319
// Only use pkg-config in host == target situations by default (allowing an
320
320
// override).
@@ -344,19 +344,25 @@ impl Config {
344
344
}
345
345
346
346
fn targetted_env_var ( & self , var_base : & str ) -> Option < OsString > {
347
- // Typically both `TARGET` and `HOST` will be valid utf-8, so we implicitly ignore the
348
- // possiblity of them having that failure mode.
349
- if let Ok ( target) = env:: var ( "TARGET" ) {
350
- let host = env:: var ( "HOST" ) . ok ( ) ?;
351
- let kind = if host == target { "HOST" } else { "TARGET" } ;
352
- let target_u = target. replace ( "-" , "_" ) ;
353
-
354
- self . env_var_os ( & format ! ( "{}_{}" , var_base, target) )
355
- . or_else ( || self . env_var_os ( & format ! ( "{}_{}" , var_base, target_u) ) )
356
- . or_else ( || self . env_var_os ( & format ! ( "{}_{}" , kind, var_base) ) )
357
- . or_else ( || self . env_var_os ( var_base) )
358
- } else {
359
- self . env_var_os ( var_base)
347
+ match ( env:: var ( "TARGET" ) , env:: var ( "HOST" ) ) {
348
+ ( Ok ( target) , Ok ( host) ) => {
349
+ let kind = if host == target { "HOST" } else { "TARGET" } ;
350
+ let target_u = target. replace ( "-" , "_" ) ;
351
+
352
+ self . env_var_os ( & format ! ( "{}_{}" , var_base, target) )
353
+ . or_else ( || self . env_var_os ( & format ! ( "{}_{}" , var_base, target_u) ) )
354
+ . or_else ( || self . env_var_os ( & format ! ( "{}_{}" , kind, var_base) ) )
355
+ . or_else ( || self . env_var_os ( var_base) )
356
+ }
357
+ ( Err ( env:: VarError :: NotPresent ) , _) | ( _, Err ( env:: VarError :: NotPresent ) ) => {
358
+ self . env_var_os ( var_base)
359
+ }
360
+ ( Err ( env:: VarError :: NotUnicode ( s) ) , _) | ( _, Err ( env:: VarError :: NotUnicode ( s) ) ) => {
361
+ panic ! (
362
+ "HOST or TARGET environment variable is not valid unicode: {:?}" ,
363
+ s
364
+ )
365
+ }
360
366
}
361
367
}
362
368
0 commit comments