wasmer/lib/runtime-c-api/build.rs

53 lines
1.8 KiB
Rust
Raw Normal View History

extern crate cbindgen;
use cbindgen::{Builder, Language};
use std::{env, fs, path::PathBuf};
fn main() {
let crate_dir = env::var("CARGO_MANIFEST_DIR").unwrap();
let mut crate_wasmer_header_file = PathBuf::from(&crate_dir);
crate_wasmer_header_file.push("wasmer");
let out_dir = env::var("OUT_DIR").unwrap();
let mut out_wasmer_header_file = PathBuf::from(&out_dir);
out_wasmer_header_file.push("wasmer");
// Generate the C bindings in the `OUT_DIR`.
out_wasmer_header_file.set_extension("h");
Builder::new()
2019-02-05 01:54:12 +00:00
.with_crate(crate_dir.clone())
2019-02-02 04:10:36 +00:00
.with_language(Language::C)
2019-02-10 00:07:05 +00:00
.with_include_guard("WASMER_H")
.generate()
2019-02-05 01:54:12 +00:00
.expect("Unable to generate C bindings")
.write_to_file(out_wasmer_header_file.as_path());
2019-02-05 01:54:12 +00:00
// Generate the C++ bindings in the `OUT_DIR`.
out_wasmer_header_file.set_extension("hh");
Builder::new()
2019-02-05 01:54:12 +00:00
.with_crate(crate_dir)
.with_language(Language::Cxx)
2019-02-10 00:07:05 +00:00
.with_include_guard("WASMER_H")
2019-02-05 01:54:12 +00:00
.generate()
.expect("Unable to generate C++ bindings")
.write_to_file(out_wasmer_header_file.as_path());
// Copy the generated C bindings from `OUT_DIR` to
// `CARGO_MANIFEST_DIR`.
crate_wasmer_header_file.set_extension("h");
out_wasmer_header_file.set_extension("h");
fs::copy(
out_wasmer_header_file.as_path(),
crate_wasmer_header_file.as_path(),
)
.expect("Unable to copy the generated C bindings");
// Copy the generated C++ bindings from `OUT_DIR` to
// `CARGO_MANIFEST_DIR`.
crate_wasmer_header_file.set_extension("h");
crate_wasmer_header_file.set_extension("hh");
out_wasmer_header_file.set_extension("hh");
fs::copy(out_wasmer_header_file, crate_wasmer_header_file)
.expect("Unable to copy the generated C++ bindings");
}