ESP32-CAN/rustlib/build.rs

42 lines
1.3 KiB
Rust
Raw Normal View History

2021-06-09 07:25:56 +01:00
use std::env;
use std::path::{Path, PathBuf};
fn main() {
let target = env::var("TARGET").unwrap();
let cargo_dir = PathBuf::from(env::var("CARGO_MANIFEST_DIR").unwrap());
2021-06-09 07:25:56 +01:00
let out_dir = PathBuf::from(env::var("OUT_DIR").unwrap());
run_cbindgen(&cargo_dir, &out_dir);
2021-06-09 07:25:56 +01:00
run_bindgen(&target, &out_dir);
}
fn run_cbindgen(_cargo_dir: &Path, _out_dir: &Path) {
2021-06-09 07:25:56 +01:00
// TODO: Run cbindgen
}
2021-06-09 07:25:56 +01:00
fn run_bindgen(target: &str, out_dir: &Path) {
let mut builder = bindgen::Builder::default();
builder = builder.header("../main/CApi.h");
match target {
"riscv32i-unknown-none-elf" => {
builder = builder.clang_arg("--target=riscv32");
builder = builder.use_core();
builder = builder.ctypes_prefix("crate::ffi");
2021-06-09 07:25:56 +01:00
}
"xtensa-esp32-none-elf" => {
// Make sure that LLVM_CONFIG_PATH has been set to point to the
// Xtensa build of llvm-config.
2021-06-09 07:25:56 +01:00
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!");
}