@@ -54,10 +54,6 @@ const OPAQUE_TYPES: &[&str] = &[
5454 "xregs_state" ,
5555] ;
5656
57- fn kernel_version_code ( major : u8 , minor : u8 , patch : u8 ) -> u64 {
58- ( ( major as u64 ) << 16 ) | ( ( minor as u64 ) << 8 ) | ( patch as u64 )
59- }
60-
6157fn handle_kernel_version_cfg ( bindings_path : & PathBuf ) {
6258 let f = BufReader :: new ( fs:: File :: open ( bindings_path) . unwrap ( ) ) ;
6359 let mut version = None ;
@@ -72,29 +68,26 @@ fn handle_kernel_version_cfg(bindings_path: &PathBuf) {
7268 }
7369 }
7470 let version = version. expect ( "Couldn't find kernel version" ) ;
75- if version >= kernel_version_code ( 4 , 5 , 0 ) {
76- println ! ( "cargo:rustc-cfg=kernel_4_5_0_or_greater" )
77- }
78- if version >= kernel_version_code ( 4 , 7 , 0 ) {
79- println ! ( "cargo:rustc-cfg=kernel_4_7_0_or_greater" )
80- }
81- if version >= kernel_version_code ( 4 , 9 , 0 ) {
82- println ! ( "cargo:rustc-cfg=kernel_4_9_0_or_greater" )
83- }
84- if version >= kernel_version_code ( 4 , 13 , 0 ) {
85- println ! ( "cargo:rustc-cfg=kernel_4_13_0_or_greater" )
86- }
87- if version >= kernel_version_code ( 4 , 15 , 0 ) {
88- println ! ( "cargo:rustc-cfg=kernel_4_15_0_or_greater" )
89- }
90- if version >= kernel_version_code ( 4 , 19 , 0 ) {
91- println ! ( "cargo:rustc-cfg=kernel_4_19_0_or_greater" )
92- }
93- if version >= kernel_version_code ( 4 , 20 , 0 ) {
94- println ! ( "cargo:rustc-cfg=kernel_4_20_0_or_greater" )
71+ let ( major, minor) = match version. to_be_bytes ( ) {
72+ [ 0 , 0 , 0 , 0 , 0 , major, minor, _patch] => ( major, minor) ,
73+ _ => panic ! ( "unable to parse LINUX_VERSION_CODE {:x}" , version) ,
74+ } ;
75+
76+ if major >= 6 {
77+ panic ! ( "Please update build.rs with the last 5.x version" ) ;
78+ // Change this block to major >= 7, copy the below block for
79+ // major >= 6, fill in unimplemented!() for major >= 5
80+ }
81+ if major >= 5 {
82+ for x in 0 ..=if major > 5 { unimplemented ! ( ) } else { minor } {
83+ println ! ( "cargo:rustc-cfg=kernel_5_{}_0_or_greater" , x) ;
84+ }
9585 }
96- if version >= kernel_version_code ( 5 , 1 , 0 ) {
97- println ! ( "cargo:rustc-cfg=kernel_5_1_0_or_greater" )
86+ if major >= 4 {
87+ // We don't currently support anything older than 4.4
88+ for x in 4 ..=if major > 4 { 20 } else { minor } {
89+ println ! ( "cargo:rustc-cfg=kernel_4_{}_0_or_greater" , x) ;
90+ }
9891 }
9992}
10093
0 commit comments