| use std::env; | |
| use std::path::PathBuf; | |
| pub fn main() -> std::io::Result<()> { | |
| let ac = autocfg::new(); | |
| ac.emit_has_path("std::ffi::c_char"); | |
| let crate_root = PathBuf::from(env::var_os("CARGO_MANIFEST_DIR").unwrap()); | |
| let git_root = crate_root.join("../.."); | |
| let dst = PathBuf::from(env::var_os("OUT_DIR").unwrap()); | |
| let make_output = make_cmd::gnu_make() | |
| .env("DEVELOPER", "1") | |
| .env_remove("PROFILE") | |
| .current_dir(git_root.clone()) | |
| .args([ | |
| "INCLUDE_LIBGIT_RS=YesPlease", | |
| "contrib/libgit-sys/libgitpub.a", | |
| ]) | |
| .output() | |
| .expect("Make failed to run"); | |
| if !make_output.status.success() { | |
| panic!( | |
| "Make failed:\n stdout = {}\n stderr = {}\n", | |
| String::from_utf8(make_output.stdout).unwrap(), | |
| String::from_utf8(make_output.stderr).unwrap() | |
| ); | |
| } | |
| std::fs::copy(crate_root.join("libgitpub.a"), dst.join("libgitpub.a"))?; | |
| println!("cargo:rustc-link-search=native={}", dst.display()); | |
| println!("cargo:rustc-link-lib=gitpub"); | |
| println!("cargo:rerun-if-changed={}", git_root.display()); | |
| Ok(()) | |
| } |