ax-driver 0.11.3

ArceOS rdrive driver registration and rdif binding collection
Documentation
const VIRTIO_DEV_FEATURES: &[&str] = &[
    "virtio-blk",
    "virtio-gpu",
    "virtio-input",
    "virtio-net",
    "virtio-socket",
];

fn has_feature(feature: &str) -> bool {
    std::env::var(format!(
        "CARGO_FEATURE_{}",
        feature.to_uppercase().replace('-', "_")
    ))
    .is_ok()
}

fn has_any_feature(features: &[&str]) -> bool {
    features.iter().any(|feature| has_feature(feature))
}

fn enable_cfg_flag(key: &str) {
    println!("cargo:rustc-cfg={key}");
}

fn main() {
    let has_virtio_core = has_feature("virtio-core");
    let has_virtio_dev = has_any_feature(VIRTIO_DEV_FEATURES);
    if has_virtio_core || has_virtio_dev {
        enable_cfg_flag("virtio_dev");
    }
    if has_any_feature(&["ahci", "ls2k1000-ahci", "bcm2835-sdhci"]) {
        enable_cfg_flag("sync_block_dev");
    }

    println!("cargo::rustc-check-cfg=cfg(virtio_dev)");
    println!("cargo::rustc-check-cfg=cfg(sync_block_dev)");
}