use std::env;
use std::fs;
use std::io::ErrorKind;
use std::path::PathBuf;
fn main() {
let out_dir = env::var("OUT_DIR").unwrap();
let _profile = env::var("PROFILE").unwrap_or_else(|_| "release".to_string());
let mut artifacts_dir = PathBuf::from(&out_dir);
artifacts_dir.pop(); artifacts_dir.pop();
#[cfg(target_os = "windows")]
let lib_filename = "mumustring.dll";
#[cfg(target_os = "macos")]
let lib_filename = "libmumustring.dylib";
#[cfg(all(not(windows), not(target_os = "macos")))]
let lib_filename = "libmumustring.so";
let lib_path = artifacts_dir.join(&lib_filename);
let link_filename = lib_filename.replace("mumustring", "string");
let link_path = artifacts_dir.join(&link_filename);
let _ = fs::remove_file(&link_path);
#[cfg(unix)]
{
match std::os::unix::fs::symlink(&lib_path, &link_path) {
Ok(_) => {
println!("cargo:warning=Created symlink {:?} -> {:?}", link_filename, lib_filename);
}
Err(e) => {
if e.kind() == ErrorKind::Unsupported {
println!("cargo:warning=Symlink not supported => copying instead.");
fs::copy(&lib_path, &link_path)
.expect("Failed to copy plugin library for string => rename");
} else {
panic!("Failed to symlink for string plugin: {:?}", e);
}
}
}
}
#[cfg(not(unix))]
{
println!("cargo:warning=On this platform, copying instead of symlink.");
fs::copy(&lib_path, &link_path)
.expect("Failed to copy plugin library for string => rename");
}
}