diff --git a/Cargo.toml b/Cargo.toml index 8365e485..e9469ad8 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -33,6 +33,7 @@ openblas = ["whisper-rs-sys/openblas"] metal = ["whisper-rs-sys/metal", "_gpu"] vulkan = ["whisper-rs-sys/vulkan", "_gpu"] openmp = ["whisper-rs-sys/openmp"] +intel-sycl = ["whisper-rs-sys/intel-sycl", "_gpu"] _gpu = [] test-with-tiny-model = [] diff --git a/sys/Cargo.toml b/sys/Cargo.toml index adbc89c4..8910875f 100644 --- a/sys/Cargo.toml +++ b/sys/Cargo.toml @@ -35,6 +35,7 @@ metal = [] vulkan = [] force-debug = [] openmp = [] +intel-sycl = [] [build-dependencies] cmake = "0.1" diff --git a/sys/build.rs b/sys/build.rs index 977dd5fe..c441ba0b 100644 --- a/sys/build.rs +++ b/sys/build.rs @@ -267,20 +267,39 @@ fn main() { config.define("GGML_OPENMP", "OFF"); } + if cfg!(feature = "intel-sycl") { + config.define("BUILD_SHARED_LIBS", "ON"); + config.define("GGML_SYCL", "ON"); + config.define("GGML_SYCL_TARGET", "INTEL"); + config.define("CMAKE_C_COMPILER", "icx"); + config.define("CMAKE_CXX_COMPILER", "icpx"); + } + let destination = config.build(); add_link_search_path(&out.join("build")).unwrap(); println!("cargo:rustc-link-search=native={}", destination.display()); - println!("cargo:rustc-link-lib=static=whisper"); - println!("cargo:rustc-link-lib=static=ggml"); - println!("cargo:rustc-link-lib=static=ggml-base"); - println!("cargo:rustc-link-lib=static=ggml-cpu"); + if cfg!(feature = "intel-sycl") { + println!("cargo:rustc-link-lib=whisper"); + println!("cargo:rustc-link-lib=ggml"); + println!("cargo:rustc-link-lib=ggml-base"); + println!("cargo:rustc-link-lib=ggml-cpu"); + } else { + println!("cargo:rustc-link-lib=static=whisper"); + println!("cargo:rustc-link-lib=static=ggml"); + println!("cargo:rustc-link-lib=static=ggml-base"); + println!("cargo:rustc-link-lib=static=ggml-cpu"); + } if cfg!(target_os = "macos") || cfg!(feature = "openblas") { println!("cargo:rustc-link-lib=static=ggml-blas"); } if cfg!(feature = "vulkan") { - println!("cargo:rustc-link-lib=static=ggml-vulkan"); + if cfg!(feature = "intel-sycl") { + println!("cargo:rustc-link-lib=ggml-vulkan"); + } else { + println!("cargo:rustc-link-lib=static=ggml-vulkan"); + } } if cfg!(feature = "hipblas") { @@ -299,6 +318,10 @@ fn main() { println!("cargo:rustc-link-lib=static=ggml-blas"); } + if cfg!(feature = "intel-sycl") { + println!("cargo:rustc-link-lib=ggml-sycl"); + } + println!( "cargo:WHISPER_CPP_VERSION={}", get_whisper_cpp_version(&whisper_root)