rama 0.4.0

modular service framework
Documentation
fn main() -> Result<(), Box<dyn std::error::Error>> {
    emit_nightly_cfg();
    build_apple_oslog_shim()
}

#[rustversion::nightly]
fn emit_nightly_cfg() {
    println!("cargo:rustc-cfg=nightly_error_messages");
}

#[rustversion::not(nightly)]
fn emit_nightly_cfg() {}

#[cfg(target_vendor = "apple")]
fn build_apple_oslog_shim() -> Result<(), Box<dyn std::error::Error>> {
    if std::env::var("CARGO_CFG_TARGET_VENDOR").ok().as_deref() != Some("apple") {
        return Ok(());
    }

    const SHIM: &str = "src/telemetry/tracing/apple/oslog/shim.c";
    const HEADER: &str = "src/telemetry/tracing/apple/oslog/shim.h";

    println!("cargo:rerun-if-changed={SHIM}");
    println!("cargo:rerun-if-changed={HEADER}");

    cc::Build::new().file(SHIM).compile("rama_apple_oslog");
    Ok(())
}

#[cfg(not(target_vendor = "apple"))]
fn build_apple_oslog_shim() -> Result<(), Box<dyn std::error::Error>> {
    if std::env::var("CARGO_CFG_TARGET_VENDOR").ok().as_deref() == Some("apple") {
        return Err("building rama for an Apple target requires an Apple host toolchain".into());
    }
    Ok(())
}