39 lines
1.3 KiB
Rust
39 lines
1.3 KiB
Rust
fn main() {
|
|
let out_dir = std::env::var("OUT_DIR").unwrap();
|
|
let target_dir = std::path::Path::new(&out_dir)
|
|
.ancestors()
|
|
.nth(3) // Volta 3 níveis de `target/debug/build/inference-server-XYZ/out` para `target/debug/` ou `target/release/`
|
|
.unwrap();
|
|
|
|
let vendor_dir = std::path::PathBuf::from(std::env::var("CARGO_MANIFEST_DIR").unwrap())
|
|
.parent()
|
|
.unwrap()
|
|
.parent()
|
|
.unwrap()
|
|
.join("vendor")
|
|
.join("llama-bin");
|
|
|
|
if vendor_dir.exists() {
|
|
println!(
|
|
"cargo:warning=Copying DLLs from {:?} to {:?}",
|
|
vendor_dir, target_dir
|
|
);
|
|
|
|
// Vamos copiar todos os arquivos .dll
|
|
if let Ok(entries) = std::fs::read_dir(&vendor_dir) {
|
|
for entry in entries.flatten() {
|
|
let path = entry.path();
|
|
if path.is_file() && path.extension().and_then(|s| s.to_str()) == Some("dll") {
|
|
let file_name = path.file_name().unwrap();
|
|
let dest = target_dir.join(file_name);
|
|
let _ = std::fs::copy(&path, &dest);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// Rebuildar apenas se houver mudanças nessa build file ou nos bins da vendor
|
|
println!("cargo:rerun-if-changed=build.rs");
|
|
println!("cargo:rerun-if-changed=../../vendor/llama-bin");
|
|
}
|