winit 0.28.3

Cross-platform window creation library.
Documentation
use cfg_aliases::cfg_aliases;

#[cfg(all(
    any(
        target_os = "linux",
        target_os = "dragonfly",
        target_os = "freebsd",
        target_os = "openbsd",
        target_os = "netbsd",
    ),
    feature = "wayland",
))]
mod wayland {
    use std::env;
    use std::path::PathBuf;
    use wayland_scanner::Side;

    pub fn main() {
        let mut path = PathBuf::from(env::var("OUT_DIR").unwrap());
        path.push("fractional_scale_v1.rs");
        wayland_scanner::generate_code(
            "wayland_protocols/fractional-scale-v1.xml",
            &path,
            Side::Client,
        );
    }
}

fn main() {
    // The script doesn't depend on our code
    println!("cargo:rerun-if-changed=build.rs");
    println!("cargo:rerun-if-changed=wayland_protocols");

    // Setup cfg aliases
    cfg_aliases! {
        // Systems.
        android_platform: { target_os = "android" },
        wasm_platform: { target_arch = "wasm32" },
        macos_platform: { target_os = "macos" },
        ios_platform: { target_os = "ios" },
        windows_platform: { target_os = "windows" },
        apple: { any(target_os = "ios", target_os = "macos") },
        free_unix: { all(unix, not(apple), not(android_platform)) },
        redox: { target_os = "redox" },

        // Native displays.
        x11_platform: { all(feature = "x11", free_unix, not(wasm), not(redox)) },
        wayland_platform: { all(feature = "wayland", free_unix, not(wasm), not(redox)) },
        orbital_platform: { redox },
    }

    // XXX aliases are not available for the build script itself.
    #[cfg(all(
        any(
            target_os = "linux",
            target_os = "dragonfly",
            target_os = "freebsd",
            target_os = "openbsd",
            target_os = "netbsd",
        ),
        feature = "wayland",
    ))]
    wayland::main();
}