@@ -54,10 +54,6 @@ const OPAQUE_TYPES: &[&str] = &[
54
54
"xregs_state" ,
55
55
] ;
56
56
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
-
61
57
fn handle_kernel_version_cfg ( bindings_path : & PathBuf ) {
62
58
let f = BufReader :: new ( fs:: File :: open ( bindings_path) . unwrap ( ) ) ;
63
59
let mut version = None ;
@@ -72,29 +68,26 @@ fn handle_kernel_version_cfg(bindings_path: &PathBuf) {
72
68
}
73
69
}
74
70
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
+ }
95
85
}
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
+ }
98
91
}
99
92
}
100
93
0 commit comments