fix msvc
This commit is contained in:
56
build.rs
Normal file
56
build.rs
Normal file
@@ -0,0 +1,56 @@
|
||||
extern crate cc;
|
||||
use glob::glob;
|
||||
|
||||
fn main() {
|
||||
let out_dir = std::env::var("OUT_DIR").unwrap();
|
||||
|
||||
println!("cargo:rerun-if-changed=build.rs");
|
||||
println!("cargo:rustc-link-search={}", out_dir);
|
||||
cc::Build::new()
|
||||
.files(
|
||||
glob("./vendor/mruby-compiler2/src/**/*.c")
|
||||
.expect("cannot find c source")
|
||||
.map(|x| x.unwrap()),
|
||||
)
|
||||
.files(
|
||||
glob("./vendor/mruby-compiler2/lib/prism/src/**/*.c")
|
||||
.expect("cannot find c source")
|
||||
.map(|x| x.unwrap()),
|
||||
)
|
||||
.warnings(false)
|
||||
.define("MRB_NO_PRESYM", "")
|
||||
.define("MRB_INT64", "1")
|
||||
.define("PRISM_XALLOCATOR", "")
|
||||
.define("PRISM_BUILD_MINIMAL", "")
|
||||
.define("PICORB_VM_MRUBYC", "")
|
||||
.define("MRBC_ALLOC_LIBC", "")
|
||||
.include("./vendor/include")
|
||||
.include("./vendor/mruby-compiler2/include")
|
||||
.include("./vendor/mruby-compiler2/lib/prism/include")
|
||||
// .flag("-fPIC")
|
||||
.flag("-c")
|
||||
.compile("mrubycompiler2");
|
||||
|
||||
println!("cargo:rustc-link-lib=mrubycompiler2");
|
||||
let target_arch = std::env::var("CARGO_CFG_TARGET_ARCH").unwrap_or_default();
|
||||
let mut builder = bindgen::Builder::default()
|
||||
.header("./vendor/mruby-compiler2/include/mruby_compiler.h")
|
||||
.header("./vendor/mruby-compiler2/include/mrc_codedump.h")
|
||||
.clang_arg("-I./vendor/mruby-compiler2/include")
|
||||
.clang_arg("-I./vendor/mruby-compiler2/lib/prism/include")
|
||||
.blocklist_item("FP_NAN")
|
||||
.blocklist_item("FP_INFINITE")
|
||||
.blocklist_item("FP_ZERO")
|
||||
.blocklist_item("FP_SUBNORMAL")
|
||||
.blocklist_item("FP_NORMAL")
|
||||
.parse_callbacks(Box::new(bindgen::CargoCallbacks::new()));
|
||||
if target_arch == "wasm32" {
|
||||
builder = builder.blocklist_type("max_align_t");
|
||||
}
|
||||
let bindings = builder.generate().expect("Unable to generate bindings");
|
||||
|
||||
let out = std::path::PathBuf::from(out_dir).join("bindings.rs");
|
||||
bindings
|
||||
.write_to_file(out)
|
||||
.expect("Couldn't write bindings!");
|
||||
}
|
||||
Reference in New Issue
Block a user