ESP32-CAN/rustlib/build.rs

50 lines
1.4 KiB
Rust

use std::env;
use std::fs;
use std::path::{Path, PathBuf};
fn main() {
let target = env::var("TARGET").unwrap();
// let cargo_dir = PathBuf::from(env::var("CARGO_MANIFEST_DIR").unwrap());
let out_dir = PathBuf::from(env::var("OUT_DIR").unwrap());
// fs::remove_dir_all(&out_dir).unwrap();
// fs::create_dir_all(&out_dir).unwrap();
// run_cbindgen(&cargo_dir, &out_dir);
run_bindgen(&target, &out_dir);
}
// fn run_cbindgen(_cargo_dir: &Path, _out_dir: &Path) {
// TODO: Run cbindgen
// }
fn run_bindgen(target: &str, out_dir: &Path) {
// if target == "xtensa-esp32-none-elf" {
// env::set_var("LLVM_CONFIG_PATH", "/usr/local/xtensa/llvm/bin/llvm-config");
// }
let mut builder = bindgen::Builder::default();
builder = builder.header("../main/CApi.h");
builder = builder.use_core();
builder = builder.ctypes_prefix("ffi");
println!("Target: {}", target);
match target {
"riscv32i-unknown-none-elf" => {
builder = builder.clang_arg("--target=riscv32");
}
"xtensa-esp32-none-elf" => {
builder = builder.clang_arg("--target=xtensa-esp32-elf");
}
_ => {
panic!("Unexpect target archtitecture: {}", &target);
}
}
let bindings = builder.generate().expect("Couldn't generate bindings!");
bindings
.write_to_file(out_dir.join("bindings.rs"))
.expect("Couldn't save bindings!");
}