-
Notifications
You must be signed in to change notification settings - Fork 1
/
build.rs
47 lines (38 loc) · 1.7 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
#![forbid(unsafe_code)]
use std::path::Path;
fn main() {
// NOTE: We cannot use `CARGO_MANIFEST_DIR`, because protoc doesn't work well with
// absolute paths.
#[allow(clippy::eq_op)]
let is_public =
env!("CARGO_PKG_REPOSITORY") == "https://github.com/worldcoin/orb-messages";
let (messages_dir, priv_dir) = if is_public {
println!("cargo:warning=Be aware that private definitions are stubbed out when building the public crate.");
(Path::new("messages"), Path::new("messages/private_stub"))
} else {
(Path::new("public/messages"), Path::new("private"))
};
// rebuild if any of this changes
println!("cargo:rerun-if-env-changed=PROTOC");
println!("cargo:rerun-if-env-changed=PROTOC_INCLUDE");
println!("cargo:rerun-if-changed={}", messages_dir.display());
println!("cargo:rerun-if-changed={}", priv_dir.display());
let main_proto = messages_dir.join("mcu_messaging_main.proto");
let sec_proto = messages_dir.join("mcu_messaging_sec.proto");
let sec_priv_proto = priv_dir.join("mcu_messaging_sec_priv.proto");
// Codegen with protoc.
if let Err(err) = || -> std::io::Result<()> {
prost_build::Config::default()
.default_package_filename("mcu_messaging_main")
.compile_protos(&[main_proto], &[messages_dir])?;
prost_build::Config::default()
.default_package_filename("mcu_messaging_sec")
.compile_protos(&[sec_proto], &[messages_dir, &priv_dir])?;
prost_build::Config::default()
.default_package_filename("mcu_messaging_sec_priv")
.compile_protos(&[sec_priv_proto], &[priv_dir])?;
Ok(())
}() {
panic!("{err}");
}
}