@@ -3698,29 +3698,36 @@ fn config_gnu_bits(target: &str, cfg: &mut ctest::TestGenerator) {
3698
3698
&& !target. contains ( "riscv32" )
3699
3699
&& pointer_width == "32"
3700
3700
{
3701
- match env:: var ( "RUST_LIBC_UNSTABLE_GNU_TIME_BITS" ) {
3702
- Ok ( val) if val == "64" => {
3703
- cfg. define ( "_FILE_OFFSET_BITS" , Some ( "64" ) ) ;
3704
- cfg. define ( "_TIME_BITS" , Some ( "64" ) ) ;
3705
- cfg. cfg ( "gnu_file_offset_bits64" , None ) ;
3706
- cfg. cfg ( "linux_time_bits64" , None ) ;
3707
- cfg. cfg ( "gnu_time_bits64" , None ) ;
3708
- }
3709
- Ok ( val) if val != "32" => {
3710
- panic ! ( "RUST_LIBC_UNSTABLE_GNU_TIME_BITS may only be set to '32' or '64'" )
3711
- }
3712
- _ => {
3713
- match env:: var ( "RUST_LIBC_UNSTABLE_GNU_FILE_OFFSET_BITS" ) {
3714
- Ok ( val) if val == "64" => {
3715
- cfg. define ( "_FILE_OFFSET_BITS" , Some ( "64" ) ) ;
3716
- cfg. cfg ( "gnu_file_offset_bits64" , None ) ;
3717
- }
3718
- Ok ( val) if val != "32" => {
3719
- panic ! ( "RUST_LIBC_UNSTABLE_GNU_FILE_OFFSET_BITS may only be set to '32' or '64'" )
3720
- }
3721
- _ => { }
3722
- }
3723
- }
3701
+ let defaultbits = "32" . to_string ( ) ;
3702
+ let ( timebits, filebits) = match (
3703
+ env:: var ( "RUST_LIBC_UNSTABLE_GNU_TIME_BITS" ) ,
3704
+ env:: var ( "RUST_LIBC_UNSTABLE_GNU_FILE_OFFSET_BITS" ) ,
3705
+ ) {
3706
+ ( Ok ( _) , Ok ( _) ) => panic ! ( "Do not set both RUST_LIBC_UNSTABLE_GNU_TIME_BITS and RUST_LIBC_UNSTABLE_GNU_FILE_OFFSET_BITS" ) ,
3707
+ ( Err ( _) , Err ( _) ) => ( defaultbits. clone ( ) , defaultbits. clone ( ) ) ,
3708
+ ( Ok ( tb) , Err ( _) ) if tb == "64" => ( tb. clone ( ) , tb. clone ( ) ) ,
3709
+ ( Ok ( tb) , Err ( _) ) if tb == "32" => ( tb, defaultbits. clone ( ) ) ,
3710
+ ( Ok ( _) , Err ( _) ) => panic ! ( "Invalid value for RUST_LIBC_UNSTABLE_GNU_TIME_BITS, must be 32 or 64" ) ,
3711
+ ( Err ( _) , Ok ( fb) ) if fb == "32" || fb == "64" => ( defaultbits. clone ( ) , fb) ,
3712
+ ( Err ( _) , Ok ( _) ) => panic ! ( "Invalid value for RUST_LIBC_UNSTABLE_GNU_FILE_OFFSET_BITS, must be 32 or 64" ) ,
3713
+ } ;
3714
+ let valid_bits = [ "32" , "64" ] ;
3715
+ assert ! (
3716
+ valid_bits. contains( & filebits. as_str( ) ) && valid_bits. contains( & timebits. as_str( ) ) ,
3717
+ "Invalid value for RUST_LIBC_UNSTABLE_GNU_TIME_BITS or RUST_LIBC_UNSTABLE_GNU_FILE_OFFSET_BITS, must be 32, 64 or unset"
3718
+ ) ;
3719
+ assert ! (
3720
+ !( filebits == "32" && timebits == "64" ) ,
3721
+ "RUST_LIBC_UNSTABLE_GNU_FILE_OFFSET_BITS must be 64 or unset if RUST_LIBC_UNSTABLE_GNU_TIME_BITS is 64"
3722
+ ) ;
3723
+ if timebits == "64" {
3724
+ cfg. define ( "_TIME_BITS" , Some ( "64" ) ) ;
3725
+ cfg. cfg ( "linux_time_bits64" , None ) ;
3726
+ cfg. cfg ( "gnu_time_bits64" , None ) ;
3727
+ }
3728
+ if filebits == "64" {
3729
+ cfg. define ( "_FILE_OFFSET_BITS" , Some ( "64" ) ) ;
3730
+ cfg. cfg ( "gnu_file_offset_bits64" , None ) ;
3724
3731
}
3725
3732
}
3726
3733
}
0 commit comments