| 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(()) |
| } |