postject_sys 0.1.5

Unofficial bindings for postject
Documentation
use std::env;
use std::path::PathBuf;

fn main() {
    #[allow(unused_variables)]
    let out_path = PathBuf::from(env::var("OUT_DIR").unwrap());
    let is_windows = env::var("CARGO_CFG_TARGET_OS").unwrap() == "windows";

    if is_windows {
        println!("cargo:rustc-link-lib=user32");
    }

    #[cfg(feature = "injectee")]
    {
        println!("cargo:rerun-if-changed=src/postjectee.c");
        println!("cargo:rerun-if-changed=src/postjectee.h");
        println!("cargo:rerun-if-changed=cmake/postject/postject-api.h");
        cc::Build::new()
            .file("src/postjectee.c")
            .flag_if_supported("-Wno-unused-parameter")
            .compile("postjectee");
        if is_windows {
            println!("cargo:rerun-if-changed=src/dummy_win_res.rc");
            embed_resource::compile("src/dummy_win_res.rc", embed_resource::NONE);
        }
    }

    #[cfg(feature = "injector")]
    {
        println!("cargo:rerun-if-changed=cmake/src/postjector.h");
        println!("cargo:rerun-if-changed=cmake/src/postjector.cpp");
        println!("cargo:rerun-if-changed=cmake/CMakeLists.txt");

        let dst = cmake::Config::new("cmake").build();

        println!(
            "cargo:rustc-link-search=native={}",
            dst.join("lib").display()
        );
        println!("cargo:rustc-link-lib=static=postjector");
        println!("cargo:rustc-link-lib=static=postject");
        println!("cargo:rustc-link-lib=static=LIEF");
    }
}