use std::process::Command;
fn main() {
let mut binding = Command::new("go");
let output =
binding.current_dir("./golib");
let output = if cfg!(debug_assertions) {
output.args(&[
"build",
"-buildmode=c-archive",
"-o",
"target/debug/libnosql_db_sdk_ffi.a",
"main.go",
])
} else {
output.args(&[
"build",
"-buildmode=c-archive",
"-o",
"target/release/libnosql_db_sdk_ffi_release.a",
"-ldflags=-s -w",
"-trimpath",
"main.go",
])
};
println!("{:?}", output);
match output.output() {
Ok(output) => {
println!("{}", String::from_utf8_lossy(&output.stdout));
if !output.status.success() {
eprintln!("{}", String::from_utf8_lossy(&output.stderr));
}
}
Err(e) => {
eprintln!("Failed to execute process: {}", e);
}
};
let path = if cfg!(debug_assertions) {
"./golib/target/debug"
} else {
"./golib/target/release"
};
let lib = if cfg!(debug_assertions) {
"nosql_db_sdk_ffi"
} else {
"nosql_db_sdk_ffi_release"
};
println!("cargo:rerun-if-changed=golib/main.go");
println!("cargo:rerun-if-changed=golib/nosqldb_sdk.go");
println!("cargo:rerun-if-changed=golib/ptrproxy.go");
println!("cargo:rerun-if-changed=golib/gophernize.go");
println!("cargo:rustc-link-search=native={}", path);
println!("cargo:rustc-link-lib=static={}", lib);
}