1*bb4ee6a4SAndroid Build Coastguard Worker // Copyright 2019 The ChromiumOS Authors
2*bb4ee6a4SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be
3*bb4ee6a4SAndroid Build Coastguard Worker // found in the LICENSE file.
4*bb4ee6a4SAndroid Build Coastguard Worker
5*bb4ee6a4SAndroid Build Coastguard Worker use std::env;
6*bb4ee6a4SAndroid Build Coastguard Worker use std::error::Error;
7*bb4ee6a4SAndroid Build Coastguard Worker use std::path::PathBuf;
8*bb4ee6a4SAndroid Build Coastguard Worker
9*bb4ee6a4SAndroid Build Coastguard Worker type Result<T> = std::result::Result<T, Box<dyn Error>>;
10*bb4ee6a4SAndroid Build Coastguard Worker
11*bb4ee6a4SAndroid Build Coastguard Worker struct LocalProto {
12*bb4ee6a4SAndroid Build Coastguard Worker // Corresponding to the input file src/$module.proto.
13*bb4ee6a4SAndroid Build Coastguard Worker module: &'static str,
14*bb4ee6a4SAndroid Build Coastguard Worker }
15*bb4ee6a4SAndroid Build Coastguard Worker
16*bb4ee6a4SAndroid Build Coastguard Worker static LOCAL_PROTOS: &[LocalProto] = &[
17*bb4ee6a4SAndroid Build Coastguard Worker #[cfg(feature = "plugin")]
18*bb4ee6a4SAndroid Build Coastguard Worker LocalProto { module: "plugin" },
19*bb4ee6a4SAndroid Build Coastguard Worker #[cfg(feature = "composite-disk")]
20*bb4ee6a4SAndroid Build Coastguard Worker LocalProto {
21*bb4ee6a4SAndroid Build Coastguard Worker module: "cdisk_spec",
22*bb4ee6a4SAndroid Build Coastguard Worker },
23*bb4ee6a4SAndroid Build Coastguard Worker LocalProto {
24*bb4ee6a4SAndroid Build Coastguard Worker module: "registered_events",
25*bb4ee6a4SAndroid Build Coastguard Worker },
26*bb4ee6a4SAndroid Build Coastguard Worker ];
27*bb4ee6a4SAndroid Build Coastguard Worker
main() -> Result<()>28*bb4ee6a4SAndroid Build Coastguard Worker fn main() -> Result<()> {
29*bb4ee6a4SAndroid Build Coastguard Worker let out_dir = PathBuf::from(env::var("OUT_DIR")?);
30*bb4ee6a4SAndroid Build Coastguard Worker
31*bb4ee6a4SAndroid Build Coastguard Worker // Compile protos from the local src directory.
32*bb4ee6a4SAndroid Build Coastguard Worker let mut proto_paths = Vec::new();
33*bb4ee6a4SAndroid Build Coastguard Worker for proto in LOCAL_PROTOS {
34*bb4ee6a4SAndroid Build Coastguard Worker proto_paths.push(
35*bb4ee6a4SAndroid Build Coastguard Worker ["src", &format!("{}.proto", proto.module)]
36*bb4ee6a4SAndroid Build Coastguard Worker .iter()
37*bb4ee6a4SAndroid Build Coastguard Worker .collect::<PathBuf>(),
38*bb4ee6a4SAndroid Build Coastguard Worker );
39*bb4ee6a4SAndroid Build Coastguard Worker }
40*bb4ee6a4SAndroid Build Coastguard Worker proto_build_tools::build_protos(&out_dir, proto_paths.as_slice());
41*bb4ee6a4SAndroid Build Coastguard Worker
42*bb4ee6a4SAndroid Build Coastguard Worker Ok(())
43*bb4ee6a4SAndroid Build Coastguard Worker }
44