From 6f03b925cca4aea83e292a5870e7e3363e13877a Mon Sep 17 00:00:00 2001 From: Julian Bayardo Spadafora Date: Sun, 12 Mar 2023 13:31:42 -0700 Subject: [PATCH] Fix build on Windows --- sys/build.rs | 35 ++++++++++++++++++++++++++--------- 1 file changed, 26 insertions(+), 9 deletions(-) diff --git a/sys/build.rs b/sys/build.rs index 56647ce..9a55570 100644 --- a/sys/build.rs +++ b/sys/build.rs @@ -58,9 +58,29 @@ fn main() { } // build libwhisper.a - env::set_current_dir("whisper.cpp").expect("Unable to change directory"); - let code = std::process::Command::new("make") - .arg("libwhisper.a") + env::set_current_dir("whisper.cpp").expect("Unable to change directory to whisper.cpp"); + _ = std::fs::remove_dir_all("build"); + _ = std::fs::create_dir("build"); + env::set_current_dir("build").expect("Unable to change directory to whisper.cpp build"); + + let code = std::process::Command::new("cmake") + .arg("..") + .arg("-DCMAKE_BUILD_TYPE=Release") + .arg("-DBUILD_SHARED_LIBS=ON") + .arg("-DWHISPER_ALL_WARNINGS=OFF") + .arg("-DWHISPER_ALL_WARNINGS_3RD_PARTY=OFF") + .arg("-DWHISPER_BUILD_TESTS=OFF") + .arg("-DWHISPER_BUILD_EXAMPLES=OFF") + .status() + .expect("Failed to generate build script"); + if code.code() != Some(0) { + panic!("Failed to generate build script"); + } + + let code = std::process::Command::new("cmake") + .arg("--build") + .arg(".") + .arg("--config Release") .status() .expect("Failed to build libwhisper.a"); if code.code() != Some(0) { @@ -68,15 +88,12 @@ fn main() { } // move libwhisper.a to where Cargo expects it (OUT_DIR) std::fs::copy( - "libwhisper.a", - format!("{}/libwhisper.a", env::var("OUT_DIR").unwrap()), + "Release/whisper.lib", + format!("{}/whisper.lib", env::var("OUT_DIR").unwrap()), ) .expect("Failed to copy libwhisper.a"); // clean the whisper build directory to prevent Cargo from complaining during crate publish - std::process::Command::new("make") - .arg("clean") - .status() - .expect("Failed to clean whisper build directory"); + _ = std::fs::remove_dir_all("build"); } // From https://github.com/alexcrichton/cc-rs/blob/fba7feded71ee4f63cfe885673ead6d7b4f2f454/src/lib.rs#L2462