From 6f03b925cca4aea83e292a5870e7e3363e13877a Mon Sep 17 00:00:00 2001 From: Julian Bayardo Spadafora Date: Sun, 12 Mar 2023 13:31:42 -0700 Subject: [PATCH 1/4] 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 From 8a3fad0e79a47cbc18e11514b6236736a1e15690 Mon Sep 17 00:00:00 2001 From: Julian Bayardo Spadafora Date: Sun, 12 Mar 2023 16:03:16 -0700 Subject: [PATCH 2/4] Woops, remove need for shared libraries --- sys/build.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/build.rs b/sys/build.rs index 9a55570..32906c0 100644 --- a/sys/build.rs +++ b/sys/build.rs @@ -66,7 +66,7 @@ fn main() { let code = std::process::Command::new("cmake") .arg("..") .arg("-DCMAKE_BUILD_TYPE=Release") - .arg("-DBUILD_SHARED_LIBS=ON") + .arg("-DBUILD_SHARED_LIBS=OFF") .arg("-DWHISPER_ALL_WARNINGS=OFF") .arg("-DWHISPER_ALL_WARNINGS_3RD_PARTY=OFF") .arg("-DWHISPER_BUILD_TESTS=OFF") From 9611d6aec4579a27dcb14f62ff94975dbce7224d Mon Sep 17 00:00:00 2001 From: Julian Bayardo Spadafora Date: Sun, 12 Mar 2023 20:32:11 -0700 Subject: [PATCH 3/4] Fix lib copy on Linux --- sys/build.rs | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/sys/build.rs b/sys/build.rs index 32906c0..b47ace4 100644 --- a/sys/build.rs +++ b/sys/build.rs @@ -86,12 +86,26 @@ fn main() { if code.code() != Some(0) { panic!("Failed to build libwhisper.a"); } + // move libwhisper.a to where Cargo expects it (OUT_DIR) - std::fs::copy( - "Release/whisper.lib", - format!("{}/whisper.lib", env::var("OUT_DIR").unwrap()), - ) - .expect("Failed to copy libwhisper.a"); + #[cfg(target_os="windows")] + { + std::fs::copy( + "Release/whisper.lib", + format!("{}/whisper.lib", env::var("OUT_DIR").unwrap()), + ) + .expect("Failed to copy libwhisper.a"); + } + + #[cfg(not(target_os="windows"))] + { + std::fs::copy( + "libwhisper.a", + format!("{}/libwhisper.a", 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::fs::remove_dir_all("build"); } From cf1461dc548326fbdf473398fa036b9ee97a6519 Mon Sep 17 00:00:00 2001 From: Julian Bayardo Spadafora Date: Sun, 12 Mar 2023 23:50:46 -0700 Subject: [PATCH 4/4] Formatting --- sys/build.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sys/build.rs b/sys/build.rs index b47ace4..a90727d 100644 --- a/sys/build.rs +++ b/sys/build.rs @@ -88,7 +88,7 @@ fn main() { } // move libwhisper.a to where Cargo expects it (OUT_DIR) - #[cfg(target_os="windows")] + #[cfg(target_os = "windows")] { std::fs::copy( "Release/whisper.lib", @@ -97,7 +97,7 @@ fn main() { .expect("Failed to copy libwhisper.a"); } - #[cfg(not(target_os="windows"))] + #[cfg(not(target_os = "windows"))] { std::fs::copy( "libwhisper.a",