@@ -3556,29 +3556,36 @@ fn config_gnu_bits(target: &str, cfg: &mut ctest::TestGenerator) {
3556
3556
&& !target. contains ( "riscv32" )
3557
3557
&& pointer_width == "32"
3558
3558
{
3559
- match env:: var ( "RUST_LIBC_UNSTABLE_GNU_TIME_BITS" ) {
3560
- Ok ( val) if val == "64" => {
3561
- cfg. define ( "_FILE_OFFSET_BITS" , Some ( "64" ) ) ;
3562
- cfg. define ( "_TIME_BITS" , Some ( "64" ) ) ;
3563
- cfg. cfg ( "gnu_file_offset_bits64" , None ) ;
3564
- cfg. cfg ( "linux_time_bits64" , None ) ;
3565
- cfg. cfg ( "gnu_time_bits64" , None ) ;
3566
- }
3567
- Ok ( val) if val != "32" => {
3568
- panic ! ( "RUST_LIBC_UNSTABLE_GNU_TIME_BITS may only be set to '32' or '64'" )
3569
- }
3570
- _ => {
3571
- match env:: var ( "RUST_LIBC_UNSTABLE_GNU_FILE_OFFSET_BITS" ) {
3572
- Ok ( val) if val == "64" => {
3573
- cfg. define ( "_FILE_OFFSET_BITS" , Some ( "64" ) ) ;
3574
- cfg. cfg ( "gnu_file_offset_bits64" , None ) ;
3575
- }
3576
- Ok ( val) if val != "32" => {
3577
- panic ! ( "RUST_LIBC_UNSTABLE_GNU_FILE_OFFSET_BITS may only be set to '32' or '64'" )
3578
- }
3579
- _ => { }
3580
- }
3581
- }
3559
+ let defaultbits = "32" . to_string ( ) ;
3560
+ let ( timebits, filebits) = match (
3561
+ env:: var ( "RUST_LIBC_UNSTABLE_GNU_TIME_BITS" ) ,
3562
+ env:: var ( "RUST_LIBC_UNSTABLE_GNU_FILE_OFFSET_BITS" ) ,
3563
+ ) {
3564
+ ( Ok ( _) , Ok ( _) ) => panic ! ( "Do not set both RUST_LIBC_UNSTABLE_GNU_TIME_BITS and RUST_LIBC_UNSTABLE_GNU_FILE_OFFSET_BITS" ) ,
3565
+ ( Err ( _) , Err ( _) ) => ( defaultbits. clone ( ) , defaultbits. clone ( ) ) ,
3566
+ ( Ok ( tb) , Err ( _) ) if tb == "64" => ( tb. clone ( ) , tb. clone ( ) ) ,
3567
+ ( Ok ( tb) , Err ( _) ) if tb == "32" => ( tb, defaultbits. clone ( ) ) ,
3568
+ ( Ok ( _) , Err ( _) ) => panic ! ( "Invalid value for RUST_LIBC_UNSTABLE_GNU_TIME_BITS, must be 32 or 64" ) ,
3569
+ ( Err ( _) , Ok ( fb) ) if fb == "32" || fb == "64" => ( defaultbits. clone ( ) , fb) ,
3570
+ ( Err ( _) , Ok ( _) ) => panic ! ( "Invalid value for RUST_LIBC_UNSTABLE_GNU_FILE_OFFSET_BITS, must be 32 or 64" ) ,
3571
+ } ;
3572
+ let valid_bits = [ "32" , "64" ] ;
3573
+ assert ! (
3574
+ valid_bits. contains( & filebits. as_str( ) ) && valid_bits. contains( & timebits. as_str( ) ) ,
3575
+ "Invalid value for RUST_LIBC_UNSTABLE_GNU_TIME_BITS or RUST_LIBC_UNSTABLE_GNU_FILE_OFFSET_BITS, must be 32, 64 or unset"
3576
+ ) ;
3577
+ assert ! (
3578
+ !( filebits == "32" && timebits == "64" ) ,
3579
+ "RUST_LIBC_UNSTABLE_GNU_FILE_OFFSET_BITS must be 64 or unset if RUST_LIBC_UNSTABLE_GNU_TIME_BITS is 64"
3580
+ ) ;
3581
+ if timebits == "64" {
3582
+ cfg. define ( "_TIME_BITS" , Some ( "64" ) ) ;
3583
+ cfg. cfg ( "linux_time_bits64" , None ) ;
3584
+ cfg. cfg ( "gnu_time_bits64" , None ) ;
3585
+ }
3586
+ if filebits == "64" {
3587
+ cfg. define ( "_FILE_OFFSET_BITS" , Some ( "64" ) ) ;
3588
+ cfg. cfg ( "gnu_file_offset_bits64" , None ) ;
3582
3589
}
3583
3590
}
3584
3591
}
0 commit comments