fn main() {
    println!("cargo:rustc-link-search=native=./build/gblibstdc++");
    println!("cargo:rustc-link-lib=static=gblibstdc++");

    let headers = [
        "include/kernel/process.hpp",
        "include/kernel/hw/pci.hpp",
    ];

    let bindings = bindgen::Builder::default()
        .use_core()
        .ctypes_prefix("core::ffi")
        .headers(headers)
        .clang_arg("-I./gblibstdc++/include")
        .clang_arg("-I./gblibc/include")
        .clang_arg("-I./include")
        .clang_arg("-std=c++20")
        .opaque_type("std::.*")
        .enable_cxx_namespaces()
        .parse_callbacks(Box::new(bindgen::CargoCallbacks::new()))
        .generate()
        .expect("Unable to generate bindings");

    let out_path = std::path::PathBuf::from(std::env::var("PWD").unwrap());
    bindings
        .write_to_file(out_path.join("src/bindings.rs"))
        .expect("Couldn't write bindings!");
}