Skip to content
This repository was archived by the owner on Mar 7, 2021. It is now read-only.

Commit 93ce02d

Browse files
committed
build.rs: Auto-generate all kernel_x_y_0_or_greater cfgs
1 parent 6b92658 commit 93ce02d

File tree

1 file changed

+19
-26
lines changed

1 file changed

+19
-26
lines changed

build.rs

+19-26
Original file line numberDiff line numberDiff line change
@@ -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-
6157
fn 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

Comments
 (0)