277e5dc36e
Previously, aconfig repo is the root directory of aconfig binary crate, but it also hosts printflags crate inside, and there is no cargo support for printflags binary crate. In addition, with more aconfig development, more crates are being added to this repo. Thus this repo should be configured as a Cargo workspace with multiple crates rather than a single crate. Note the top level Cargo.toml file specifies the crates this workspace carries: (1) aconfig_protos: the proto library crate that will be used by many other crates such as aconfig binary crate and printflags binary crate (2) aconfig: the aconfig binary crate (3) printflags: the printflags binary crate (1) aconfig_protos crate setup: Inside aconfig_protos dir we set up the aconfig_protos crate, the previously src/proto.rs is now aconfig_protos/src/lib.rs, the build.rs is carried over to this crate. (2) aconfig binary crate setup: Notice its Cargo.toml file claims package dependency on aconfig_protos crate. It no longer carries proto related module and build.rs file. (3) printflags binary crate setup: Similary, notice that in its Cargo.toml file, it claims package dependency on aconfig_protos crate. With this setup, we can Cargo build/test each crate individually when inside a specific crate dir. But we can also run Cargo build/test at repo root level, which will build/test all the crates in this workplace. This is the structuring cl. The next cl is to move storage modules into its own library crate. This storage file library crate will be used by both aconfig binary crate as well as flag read library crate (to be created as another new crate here). Bug: b/321984352 Test: top and individual crate dir level Cargo build/test, m each individual targets Change-Id: I75833f4997f7ee554ff6c1557df9ac87f62b2732 Merged-In: I75833f4997f7ee554ff6c1557df9ac87f62b2732
17 lines
437 B
Rust
17 lines
437 B
Rust
use protobuf_codegen::Codegen;
|
|
|
|
fn main() {
|
|
let proto_files = vec!["protos/aconfig.proto"];
|
|
|
|
// tell cargo to only re-run the build script if any of the proto files has changed
|
|
for path in &proto_files {
|
|
println!("cargo:rerun-if-changed={}", path);
|
|
}
|
|
|
|
Codegen::new()
|
|
.pure()
|
|
.include("protos")
|
|
.inputs(proto_files)
|
|
.cargo_out_dir("aconfig_proto")
|
|
.run_from_script();
|
|
}
|