hl-engine 0.1.0

Safe Rust lifecycle API for the standalone HL Linux guest engine
use std::{env, path::PathBuf};

fn main() {
    let target = env::var("TARGET").expect("Cargo sets TARGET");
    let root = PathBuf::from(env::var_os("CARGO_MANIFEST_DIR").expect("manifest directory"));
    let directory = match target.as_str() {
        "aarch64-apple-darwin" => "aarch64-apple-darwin",
        "aarch64-unknown-linux-gnu" => "aarch64-unknown-linux-gnu",
        _ => panic!("hl-engine does not support target {target}"),
    };
    println!(
        "cargo:rustc-link-search=native={}",
        root.join("assets/lib").join(directory).display()
    );
    println!("cargo:rustc-link-lib=static:+whole-archive=hl-engine");
    if target == "aarch64-unknown-linux-gnu" {
        for library in ["pthread", "dl", "m", "atomic"] {
            println!("cargo:rustc-link-lib={library}");
        }
    }
    println!("cargo:rerun-if-changed=assets/lib/{directory}/libhl-engine.a");
}