// Copyright 2019 The ChromiumOS Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. use std::env; use std::error::Error; use std::path::PathBuf; type Result = std::result::Result>; struct LocalProto { // Corresponding to the input file src/$module.proto. module: &'static str, } static LOCAL_PROTOS: &[LocalProto] = &[ #[cfg(feature = "plugin")] LocalProto { module: "plugin" }, #[cfg(feature = "composite-disk")] LocalProto { module: "cdisk_spec", }, LocalProto { module: "registered_events", }, ]; fn main() -> Result<()> { let out_dir = PathBuf::from(env::var("OUT_DIR")?); // Compile protos from the local src directory. let mut proto_paths = Vec::new(); for proto in LOCAL_PROTOS { proto_paths.push( ["src", &format!("{}.proto", proto.module)] .iter() .collect::(), ); } proto_build_tools::build_protos(&out_dir, proto_paths.as_slice()); Ok(()) }