mirror of
https://github.com/readest/readest.git
synced 2026-04-28 11:30:48 +00:00
65 lines
2 KiB
Rust
65 lines
2 KiB
Rust
use std::{env, fs, path::PathBuf, process::Command};
|
|
|
|
fn main() {
|
|
println!("cargo:rerun-if-changed=../extensions/windows-thumbnail/src");
|
|
let target_os = env::var("CARGO_CFG_TARGET_OS").unwrap_or_default();
|
|
if target_os == "windows" {
|
|
build_windows_thumbnail();
|
|
}
|
|
|
|
tauri_build::build()
|
|
}
|
|
|
|
fn build_windows_thumbnail() {
|
|
let manifest_dir = PathBuf::from(env::var("CARGO_MANIFEST_DIR").unwrap());
|
|
let dll_crate_dir = manifest_dir
|
|
.join("..")
|
|
.join("extensions")
|
|
.join("windows-thumbnail");
|
|
let dll_crate_manifest = dll_crate_dir.join("Cargo.toml");
|
|
let profile = env::var("PROFILE").unwrap_or_else(|_| "debug".into());
|
|
|
|
let mut cmd = Command::new(env::var("CARGO").unwrap_or("cargo".into()));
|
|
cmd.arg("build")
|
|
.arg("--package")
|
|
.arg("windows_thumbnail")
|
|
.arg("--manifest-path")
|
|
.arg(&dll_crate_manifest);
|
|
|
|
if profile == "release" {
|
|
cmd.arg("--release");
|
|
}
|
|
|
|
let target_triple = env::var("TARGET").unwrap_or_default();
|
|
let host_triple = env::var("HOST").unwrap_or_default();
|
|
if !target_triple.is_empty() && target_triple != host_triple {
|
|
cmd.arg("--target").arg(&target_triple);
|
|
}
|
|
|
|
let status = cmd
|
|
.status()
|
|
.expect("Failed to run cargo build for windows_thumbnail");
|
|
if !status.success() {
|
|
panic!("Failed to build windows_thumbnail DLL");
|
|
}
|
|
|
|
let dll_name = "windows_thumbnail.dll";
|
|
let candidate_paths = [
|
|
dll_crate_dir.join("target").join(&profile).join(dll_name),
|
|
dll_crate_dir
|
|
.join("target")
|
|
.join(&target_triple)
|
|
.join(&profile)
|
|
.join(dll_name),
|
|
];
|
|
|
|
let dll_src = candidate_paths
|
|
.iter()
|
|
.find(|p| p.exists())
|
|
.expect("Failed to find built windows_thumbnail DLL");
|
|
|
|
let dll_dest = &dll_crate_dir.join("target").join(dll_name);
|
|
|
|
fs::copy(dll_src, dll_dest).expect("Failed to copy windows_thumbnail DLL");
|
|
println!("cargo:rerun-if-changed={}", dll_dest.display());
|
|
}
|