in nfm-controller/build.rs [44:85]
fn build_ebpf(release: bool) {
let metadata = MetadataCommand::new()
.manifest_path("../Cargo.toml")
.exec()
.expect("Failed to get cargo metadata");
let target_dir = Path::new("..").canonicalize().unwrap().join("target/ebpf");
let target_triple = metadata.workspace_metadata["bpf_target"]
.as_str()
.expect("Failed to get BPF target triple");
let bpf_obj_path = target_dir
.join(target_triple)
.join(if release { "release" } else { "debug" })
.join("nfm-bpf");
println!(
"cargo:rustc-env=BPF_OBJECT_PATH={}",
bpf_obj_path.to_str().unwrap()
);
let target_trip_arg = format!("--target={}", &target_triple);
let target_dir_arg = format!("--target-dir={}", target_dir.to_str().unwrap());
let mut args = vec![
"build",
"--manifest-path=../nfm-bpf/Cargo.toml",
&target_trip_arg,
&target_dir_arg,
"-Z",
"build-std=core",
];
if release {
args.push("--release");
}
let status = Command::new("cargo")
.env("RUSTC_BOOTSTRAP", "1")
.env("RUSTFLAGS", "")
.args(&args)
.status()
.expect("Failed to build eBPF program");
assert!(status.success());
println!("cargo:rerun-if-changed=../nfm-bpf/**");
}