Source code

Revision control

Copy as Markdown

Other Tools

/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
use std::path::Path;
fn main() {
set_generated_files();
set_coverage_cfg();
}
/// Set the GLEAN_METRICS_FILE and CONVERSIONS_FILE environment variables to the locations of the
/// generated files.
///
/// We do this here to avoid a hardcoded path in the source (just in case this crate's src dir
/// moves, not that it's likely).
fn set_generated_files() {
let full_path = Path::new(env!("CARGO_MANIFEST_DIR"));
let relative_path = full_path
.strip_prefix(mozbuild::TOPSRCDIR)
.expect("CARGO_MANIFEST_DIR not a child of TOPSRCDIR");
for (file, env) in [
// Generated by glean_rust.py
("glean_metrics.rs", "GLEAN_METRICS_FILE"),
// Generated by conversions.py
("conversions.rs", "CONVERSIONS_FILE"),
] {
let objpath = mozbuild::TOPOBJDIR.join(relative_path).join(file);
// We don't really need anything like `rerun-if-env-changed=CARGO_MANIFEST_DIR` because that
// will inevitably mean the entire crate has moved or the srcdir has moved, which would result
// in a rebuild anyway.
println!("cargo:rustc-env={env}={}", objpath.display());
}
}
fn set_coverage_cfg() {
println!("cargo:rustc-check-cfg=cfg(ccov)");
if mozbuild::config::MOZ_CODE_COVERAGE {
println!("cargo:rustc-cfg=ccov");
}
}