-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbuild.rs
40 lines (31 loc) · 1.5 KB
/
build.rs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
extern crate cc;
// extern crate
use bindgen::builder;
fn main(){
let manifest_dir = std::path::Path::new(env!("CARGO_MANIFEST_DIR"));
let bind = builder()
.header("cbroma/cbroma.h")
.generate().unwrap();
bind.write_to_file(std::path::PathBuf::from(
std::env::var("OUT_DIR").unwrap()
).join("bindings.rs")).unwrap();
let mut build = cc::Build::new();
build.flag_if_supported("-std=c++17");
build.flag_if_supported("/std:c++17");
build.flag_if_supported("-fexceptions");
build.flag_if_supported("-fpermissive");
build.flag_if_supported("-Wunused-parameter");
build.flag_if_supported("/EHsc");
// just so we can reach ghc. That's fucked up and I spent 2 hours just figuring that out.
build.include(manifest_dir);
build.include(manifest_dir.join("broma").join("include"));
build.include(manifest_dir.join("broma").join("PEGTL-3.2.7").join("include"));
// build.include(manifest_dir.join("broma").join("PEGTL-3.2.7").join("include").join("tao").join("pegtl"));
// build.include(manifest_dir.join("broma").join("PEGTL-3.2.7").join("include").join("tao").join("pegtl").join("contrib"));
// build.include(manifest_dir.join("cbroma"));
build.file(manifest_dir.join("broma/src/broma.cpp"));
// Compile C Port so Rust knows how to use broma correctly...
build.file(manifest_dir.join("cbroma/cbroma.cpp"));
build.include(manifest_dir.join("cbroma"));
build.compile("broma");
}