From 25170a539b0187a428cfbbbc84529e98e208f0a4 Mon Sep 17 00:00:00 2001 From: Alessandro Decina Date: Sun, 21 Feb 2021 20:20:51 +0000 Subject: [PATCH] xtask: start moving bindgen to its own module --- xtask/src/codegen/aya_bpf.rs | 29 ++++++++--------------------- xtask/src/codegen/bindgen.rs | 22 ++++++++++++++++++++++ xtask/src/codegen/mod.rs | 1 + 3 files changed, 31 insertions(+), 21 deletions(-) create mode 100644 xtask/src/codegen/bindgen.rs diff --git a/xtask/src/codegen/aya_bpf.rs b/xtask/src/codegen/aya_bpf.rs index 2afbef37..62a4b04f 100644 --- a/xtask/src/codegen/aya_bpf.rs +++ b/xtask/src/codegen/aya_bpf.rs @@ -14,7 +14,10 @@ use syn::{ Type, }; -use crate::codegen::getters::{generate_getters_for_items, Getter}; +use crate::codegen::{ + bindgen::bindgen, + getters::{generate_getters_for_items, Getter}, +}; #[derive(StructOpt)] pub struct CodegenOptions { @@ -26,26 +29,10 @@ pub fn codegen(opts: CodegenOptions) -> Result<(), anyhow::Error> { let dir = PathBuf::from("bpf/aya-bpf"); let generated = dir.join("src/bpf/generated"); - let types: Vec<&str> = vec!["bpf_map_.*"]; - let vars = vec!["BPF_.*", "bpf_.*"]; - let mut cmd = Command::new("bindgen"); - cmd.arg("--no-layout-tests") - .arg("--use-core") - .arg("--ctypes-prefix") - .arg("::aya_bpf_cty") - .arg("--default-enum-style") - .arg("consts") - .arg("--no-prepend-enum-name") - .arg(&*dir.join("include/aya_bpf_bindings.h").to_string_lossy()); - - for x in types { - cmd.arg("--whitelist-type").arg(x); - } - - for x in vars { - cmd.arg("--whitelist-var").arg(x); - } - + let types = ["bpf_map_.*"]; + let vars = ["BPF_.*", "bpf_.*"]; + let mut cmd = bindgen(&types, &vars); + cmd.arg(&*dir.join("include/aya_bpf_bindings.h").to_string_lossy()); cmd.arg("--"); cmd.arg("-I").arg(opts.libbpf_dir.join("src")); diff --git a/xtask/src/codegen/bindgen.rs b/xtask/src/codegen/bindgen.rs new file mode 100644 index 00000000..30be31ea --- /dev/null +++ b/xtask/src/codegen/bindgen.rs @@ -0,0 +1,22 @@ +use std::process::Command; + +pub fn bindgen(types: &[&str], vars: &[&str]) -> Command { + let mut cmd = Command::new("bindgen"); + cmd.arg("--no-layout-tests") + .arg("--use-core") + .arg("--ctypes-prefix") + .arg("::aya_bpf_cty") + .arg("--default-enum-style") + .arg("consts") + .arg("--no-prepend-enum-name"); + + for x in types { + cmd.arg("--whitelist-type").arg(x); + } + + for x in vars { + cmd.arg("--whitelist-var").arg(x); + } + + cmd +} diff --git a/xtask/src/codegen/mod.rs b/xtask/src/codegen/mod.rs index 66c0f74d..1740bc74 100644 --- a/xtask/src/codegen/mod.rs +++ b/xtask/src/codegen/mod.rs @@ -1,4 +1,5 @@ mod aya_bpf; +mod bindgen; pub mod getters; use structopt::StructOpt;