ebpf: extract CARGO_CFG_BPF_TARGET_ARCH logic

reviewable/pr1376/r10
Tamir Duberstein 3 days ago
parent e5eb3058aa
commit f610453ec2
No known key found for this signature in database

@ -186,3 +186,36 @@ impl<'a> Toolchain<'a> {
}
}
}
/// Emit cfg flags that describe the desired BPF target architecture.
pub fn emit_bpf_target_arch_cfg() {
println!("cargo:rerun-if-env-changed=CARGO_CFG_BPF_TARGET_ARCH");
let bpf_target_arch = env::var_os("CARGO_CFG_BPF_TARGET_ARCH");
let target_arch = env::var_os("CARGO_CFG_TARGET_ARCH");
let arch = if let Some(bpf_target_arch) = bpf_target_arch.as_ref() {
bpf_target_arch.to_str().unwrap()
} else {
let target_arch = target_arch.as_ref().unwrap().to_str().unwrap();
if target_arch.starts_with("riscv64") {
"riscv64"
} else {
target_arch
}
};
println!("cargo:rustc-cfg=bpf_target_arch=\"{arch}\"");
print!("cargo::rustc-check-cfg=cfg(bpf_target_arch, values(");
for value in [
"aarch64",
"arm",
"loongarch64",
"mips",
"powerpc64",
"riscv64",
"s390x",
"x86_64",
] {
print!("\"{value}\",");
}
println!("))");
}

@ -14,3 +14,6 @@ workspace = true
[dependencies]
aya-ebpf-cty = { version = "^0.2.2", path = "../aya-ebpf-cty" }
[build-dependencies]
aya-build = { version = "^0.1.2", path = "../../aya-build" }

@ -1,29 +1,3 @@
use std::env;
fn main() {
println!("cargo:rerun-if-env-changed=CARGO_CFG_BPF_TARGET_ARCH");
if let Ok(arch) = env::var("CARGO_CFG_BPF_TARGET_ARCH") {
println!("cargo:rustc-cfg=bpf_target_arch=\"{arch}\"");
} else {
let arch = env::var("HOST").unwrap();
let mut arch = arch.split_once('-').map_or(&*arch, |x| x.0);
if arch.starts_with("riscv64") {
arch = "riscv64";
}
println!("cargo:rustc-cfg=bpf_target_arch=\"{arch}\"");
}
print!("cargo::rustc-check-cfg=cfg(bpf_target_arch, values(");
for arch in [
"aarch64",
"arm",
"loongarch64",
"mips",
"powerpc64",
"riscv64",
"s390x",
"x86_64",
] {
print!("\"{arch}\",");
}
println!("))");
aya_build::emit_bpf_target_arch_cfg()
}

@ -14,3 +14,6 @@ rust-version.workspace = true
[lints]
workspace = true
[build-dependencies]
aya-build = { version = "^0.1.2", path = "../../aya-build" }

@ -1,31 +1,5 @@
use std::env;
fn main() {
println!("cargo:rerun-if-env-changed=CARGO_CFG_BPF_TARGET_ARCH");
if let Ok(arch) = env::var("CARGO_CFG_BPF_TARGET_ARCH") {
println!("cargo:rustc-cfg=bpf_target_arch=\"{arch}\"");
} else {
let arch = env::var("HOST").unwrap();
let mut arch = arch.split_once('-').map_or(&*arch, |x| x.0);
if arch.starts_with("riscv64") {
arch = "riscv64";
}
println!("cargo:rustc-cfg=bpf_target_arch=\"{arch}\"");
}
print!("cargo::rustc-check-cfg=cfg(bpf_target_arch, values(");
for arch in [
"aarch64",
"arm",
"loongarch64",
"mips",
"powerpc64",
"riscv64",
"s390x",
"x86_64",
] {
print!("\"{arch}\",");
}
println!("))");
println!("cargo::rustc-check-cfg=cfg(target_arch, values(\"asmjs\",\"nvptx\",\"xtensa\"))");
aya_build::emit_bpf_target_arch_cfg()
}

@ -19,4 +19,5 @@ aya-ebpf-cty = { version = "^0.2.2", path = "../aya-ebpf-cty" }
aya-ebpf-macros = { version = "^0.1.1", path = "../../aya-ebpf-macros" }
[build-dependencies]
aya-build = { version = "^0.1.2", path = "../../aya-build" }
rustversion = { workspace = true }

@ -1,36 +1,8 @@
fn main() {
println!("cargo:rerun-if-env-changed=CARGO_CFG_BPF_TARGET_ARCH");
println!("cargo:rerun-if-env-changed=HOST");
print!("cargo::rustc-check-cfg=cfg(bpf_target_arch, values(");
for arch in [
"aarch64",
"arm",
"loongarch64",
"mips",
"powerpc64",
"riscv64",
"s390x",
"x86_64",
] {
print!("\"{arch}\",");
}
println!("))");
if let Some(arch) = std::env::var_os("CARGO_CFG_BPF_TARGET_ARCH") {
let arch = arch.to_str().unwrap();
println!("cargo:rustc-cfg=bpf_target_arch=\"{arch}\"");
} else if let Some(host) = std::env::var_os("HOST") {
let host = host.to_str().unwrap();
let mut arch = host.split_once('-').map_or(host, |(arch, _rest)| arch);
if arch.starts_with("riscv64") {
arch = "riscv64";
}
println!("cargo:rustc-cfg=bpf_target_arch=\"{arch}\"");
}
println!("cargo::rustc-check-cfg=cfg(generic_const_exprs)");
check_rust_version();
aya_build::emit_bpf_target_arch_cfg()
}
#[rustversion::nightly]

@ -28,3 +28,4 @@ pub fn aya_build::Toolchain<'a>::borrow_mut(&mut self) -> &mut T
impl<T> core::convert::From<T> for aya_build::Toolchain<'a>
pub fn aya_build::Toolchain<'a>::from(t: T) -> T
pub fn aya_build::build_ebpf(packages: impl core::iter::traits::collect::IntoIterator<Item = cargo_metadata::Package>, toolchain: aya_build::Toolchain<'_>) -> anyhow::Result<()>
pub fn aya_build::emit_bpf_target_arch_cfg()

Loading…
Cancel
Save