-
Notifications
You must be signed in to change notification settings - Fork 56
/
build.rs
70 lines (65 loc) · 2.21 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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#[allow(unused_imports)]
use std::{
env,
path::{Path, PathBuf},
};
#[cfg(feature = "regenerate-capnp")]
fn capnpc_compile_dataset(name: &'static str) -> capnp::Result<()> {
let mut command = capnpc::CompilerCommand::new();
#[cfg(windows)]
command.capnp_executable("prebuilt/capnp.exe");
command.file(&format!("src/datasets/{0}/{0}.capnp", name));
command.output_path(".");
command.default_parent_module(vec!["datasets".into(), name.into()]);
command.run()
}
#[cfg(feature = "regenerate-flatbuffers")]
fn flatc_compile_dataset(name: &'static str) -> flatc_rust::Result<()> {
#[cfg(windows)]
let flatc = flatc_rust::Flatc::from_path("./prebuilt/flatc.exe");
#[cfg(not(windows))]
let flatc = flatc_rust::Flatc::from_env_path();
flatc.run(flatc_rust::Args {
lang: "rust",
inputs: &[Path::new(&format!("./src/datasets/{0}/{0}.fbs", name))],
out_dir: Path::new(&format!("./src/datasets/{}", name)),
extra: &["--gen-onefile"],
..Default::default()
})
}
#[cfg(feature = "regenerate-prost")]
fn prost_compile_dataset(name: &'static str) -> std::io::Result<()> {
if cfg!(windows) {
match env::var("PROTOC") {
Err(_) => {
env::set_var("PROTOC", "./prebuilt/protoc.exe");
}
_ => {}
}
}
let mut prost_config = prost_build::Config::new();
prost_config.protoc_arg("--experimental_allow_proto3_optional");
prost_config.out_dir(format!("./src/datasets/{name}"));
prost_config.compile_protos(
&[format!("./src/datasets/{name}/{name}.proto").as_str()],
&["src"],
)
}
fn main() {
#[cfg(any(
feature = "regenerate-capnp",
feature = "regenerate-flatbuffers",
feature = "regenerate-prost"
))]
{
const DATASETS: &[&str] = &["log", "mesh", "minecraft_savedata", "mk48"];
for &name in DATASETS.iter() {
#[cfg(feature = "regenerate-capnp")]
capnpc_compile_dataset(name).unwrap();
#[cfg(feature = "regenerate-flatbuffers")]
flatc_compile_dataset(name).unwrap();
#[cfg(feature = "regenerate-prost")]
prost_compile_dataset(name).unwrap();
}
}
}