Skip to content

Commit a093541

Browse files
committed
feat: windows cmake support with vulkan
1 parent a6e1cec commit a093541

File tree

1 file changed

+18
-2
lines changed

1 file changed

+18
-2
lines changed

llama-cpp-sys-2/build.rs

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ fn main() {
151151
let llama_dst = out_dir.join("llama.cpp");
152152
let manifest_dir = env::var("CARGO_MANIFEST_DIR").expect("Failed to get CARGO_MANIFEST_DIR");
153153
let llama_src = Path::new(&manifest_dir).join("llama.cpp");
154-
let build_shared_libs = cfg!(feature = "directml") || cfg!(feature = "cuda");
154+
let build_shared_libs = cfg!(feature = "cuda") || cfg!(feature = "dynamic-link");
155155

156156
let build_shared_libs = std::env::var("LLAMA_BUILD_SHARED_LIBS")
157157
.map(|v| v == "1")
@@ -225,8 +225,25 @@ fn main() {
225225
if cfg!(windows) {
226226
config.static_crt(static_crt);
227227
}
228+
229+
230+
if cfg!(feature = "vulkan") {
231+
config.define("GGML_VULKAN", "ON");
232+
if cfg!(windows) {
233+
let vulkan_path = env::var("VULKAN_SDK").expect("Please install Vulkan SDK and ensure that VULKAN_SDK env variable is set");
234+
let vulkan_lib_path = Path::new(&vulkan_path).join("Lib");
235+
println!("cargo:rustc-link-search={}", vulkan_lib_path.display());
236+
println!("cargo:rustc-link-lib=vulkan-1");
237+
}
228238

239+
if cfg!(target_os = "linux") {
240+
println!("cargo:rustc-link-lib=vulkan");
241+
}
242+
}
229243

244+
if cfg!(feature = "cuda") {
245+
config.define("GGML_CUDA", "ON");
246+
}
230247

231248
// General
232249
config
@@ -266,7 +283,6 @@ fn main() {
266283
println!("cargo:rustc-link-lib=framework=Metal");
267284
println!("cargo:rustc-link-lib=framework=MetalKit");
268285
println!("cargo:rustc-link-lib=framework=Accelerate");
269-
270286
println!("cargo:rustc-link-lib=c++");
271287
}
272288

0 commit comments

Comments
 (0)