@@ -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