@@ -36,12 +36,10 @@ function(WHISPER_LIB_PATHS COMPONENT SOURCE_DIR WHISPER_STATIC_LIB_PATH WHISPER_
3636 WHISPER_SHARED_MODULE_PATH )
3737 lib_name (${COMPONENT} WHISPER_COMPONENT_IMPORT_LIB )
3838
39- if (UNIX
40- AND NOT APPLE
41- AND NOT CI)
42- set (STATIC_PATH ${SOURCE_DIR} )
43- set (SHARED_PATH ${SOURCE_DIR} )
44- set (SHARED_BIN_PATH ${SOURCE_DIR} )
39+ if (UNIX AND NOT APPLE )
40+ set (STATIC_PATH ${SOURCE_DIR} /lib)
41+ set (SHARED_PATH ${SOURCE_DIR} /lib)
42+ set (SHARED_BIN_PATH ${SOURCE_DIR} /bin)
4543 else ()
4644 set (STATIC_PATH ${SOURCE_DIR} /${CMAKE_INSTALL_LIBDIR} )
4745 set (SHARED_PATH ${SOURCE_DIR} /${CMAKE_INSTALL_LIBDIR} )
@@ -161,7 +159,6 @@ if(APPLE)
161159 "${PREBUILT_WHISPERCPP_URL_BASE} /whispercpp-macos-$ENV{MACOS_ARCH} -${PREBUILT_WHISPERCPP_VERSION} .tar.gz" )
162160
163161 set (WHISPER_LIBRARIES Whisper WhisperCoreML GGML GGMLBase)
164- # list(APPEND WHISPER_RUNTIME_MODULES WhisperCoreML GGMLMetal GGMLBlas)
165162 list (APPEND WHISPER_RUNTIME_MODULES GGMLMetal GGMLBlas)
166163 set (WHISPER_DEPENDENCY_LIBRARIES "-framework Accelerate" "-framework CoreML" "-framework Metal" ${BLAS_LIBRARIES} )
167164 set (WHISPER_LIBRARY_TYPE SHARED)
@@ -180,7 +177,7 @@ if(APPLE)
180177 install (FILES ${WHISPER_DYLIBS} DESTINATION "${CMAKE_PROJECT_NAME } .plugin/Contents/Frameworks" )
181178elseif (WIN32 )
182179 if (NOT DEFINED ACCELERATION)
183- message (FATAL_ERROR "ACCELERATION is not set. Please set it to either `cpu `, `cuda `, `vulkan` or `hipblas `" )
180+ message (FATAL_ERROR "ACCELERATION is not set. Please set it to either `generic `, `nvidia `, or `amd `" )
184181 endif ()
185182
186183 set (WHISPER_LIBRARIES Whisper GGML GGMLBase)
@@ -244,10 +241,17 @@ else()
244241 set (CMAKE_CXX_COMPILER_LAUNCHER ${CCACHE_PROGRAM} )
245242 endif ()
246243
244+ set (BLA_VENDOR OpenBLAS)
245+ find_package (BLAS REQUIRED )
246+
247247 if (CI)
248248 set (WHISPER_LIBRARY_TYPE SHARED)
249249 set (WHISPER_LIBRARIES Whisper GGML GGMLBase)
250- # list(APPEND WHISPER_DEPENDENCY_LIBRARIES Vulkan::Vulkan ${BLAS_LIBRARIES} OpenCL::OpenCL)
250+ list (APPEND WHISPER_DEPENDENCY_LIBRARIES Vulkan::Vulkan BLAS::BLAS)
251+ if (NOT ${ACCELERATION} STREQUAL "nvidia" )
252+ # NVidia CUDA has its own OpenCL library
253+ list (APPEND WHISPER_DEPENDENCY_LIBRARIES OpenCL::OpenCL)
254+ endif ()
251255 list (
252256 APPEND
253257 WHISPER_RUNTIME_MODULES
@@ -262,6 +266,14 @@ else()
262266 GGMLBlas
263267 GGMLVulkan
264268 GGMLOpenCL)
269+ add_compile_definitions (WHISPER_DYNAMIC_BACKENDS )
270+
271+ find_package (
272+ Vulkan
273+ COMPONENTS glslc
274+ REQUIRED )
275+ find_package (OpenCL REQUIRED )
276+ find_package (Python3 REQUIRED )
265277
266278 set (ARCH_PREFIX "-x86_64" )
267279 set (ACCELERATION_PREFIX "-${ACCELERATION} " )
@@ -272,9 +284,39 @@ else()
272284 elseif (${ACCELERATION} STREQUAL "nvidia" )
273285 set (WHISPER_CPP_HASH "a43dc8a44577e965caf9b0baaae74f30a9e00d99a296768021e7ccf0b9217878" )
274286 list (APPEND WHISPER_RUNTIME_MODULES GGMLCUDA)
287+
288+ # Find CUDA libraries and link against them
289+ set (CUDAToolkit_ROOT /usr/local/cuda-12.8/)
290+ find_package (CUDAToolkit REQUIRED )
291+ list (
292+ APPEND
293+ WHISPER_DEPENDENCY_LIBRARIES
294+ CUDA::cudart
295+ CUDA::cublas
296+ CUDA::cublasLt
297+ CUDA::cuda_driver
298+ CUDA::OpenCL)
299+ set (CUDART_LIB ${CUDAToolkit_LIBRARY_DIR} /libcuda.so.1)
300+ if (NOT EXISTS ${CUDART_LIB} )
301+ message (
302+ STATUS
303+ "Creating symlink from ${CUDAToolkit_LIBRARY_DIR} /libcuda.so to ${CUDAToolkit_LIBRARY_DIR} /libcuda.so.1" )
304+ execute_process (COMMAND sudo ${CMAKE_COMMAND } -E create_symlink ${CUDAToolkit_LIBRARY_DIR} /libcuda.so
305+ ${CUDAToolkit_LIBRARY_DIR} /libcuda.so.1 )
306+ endif ()
275307 elseif (${ACCELERATION} STREQUAL "amd" )
276308 set (WHISPER_CPP_HASH "1a7592da41493e57ead23c97a420f2db11a4fe31049c9b01cdb310bff05fdca1" )
277309 list (APPEND WHISPER_RUNTIME_MODULES GGMLHip)
310+
311+ # Find hip libraries and link against them
312+ set (CMAKE_PREFIX_PATH /opt/rocm-6.4.2/lib/cmake)
313+ set (HIP_PLATFORM amd)
314+ set (CMAKE_HIP_PLATFORM amd)
315+ set (CMAKE_HIP_ARCHITECTURES OFF )
316+ find_package (hip REQUIRED )
317+ find_package (hipblas REQUIRED )
318+ find_package (rocblas REQUIRED )
319+ list (APPEND WHISPER_DEPENDENCY_LIBRARIES hip::host roc::rocblas roc::hipblas)
278320 else ()
279321 message (
280322 FATAL_ERROR
@@ -294,10 +336,15 @@ else()
294336
295337 set (WHISPER_SOURCE_DIR ${whispercpp_fetch_SOURCE_DIR } )
296338 set (WHISPER_LIB_DIR ${whispercpp_fetch_SOURCE_DIR } )
339+
340+ file (GLOB WHISPER_SOS ${whispercpp_fetch_SOURCE_DIR } /lib/*${CMAKE_SHARED_LIBRARY_SUFFIX}* )
341+ install (FILES ${WHISPER_SOS} DESTINATION "${CMAKE_INSTALL_LIBDIR} /obs-plugins/obs-localvocal" )
342+ file (GLOB WHISPER_BIN_SOS ${whispercpp_fetch_SOURCE_DIR } /bin/*${CMAKE_SHARED_LIBRARY_SUFFIX}* )
343+ install (FILES ${WHISPER_BIN_SOS} DESTINATION "${CMAKE_INSTALL_LIBDIR} /obs-plugins/obs-localvocal" )
297344 else ()
298345 # Source build
299346 if (${CMAKE_BUILD_TYPE } STREQUAL Release OR ${CMAKE_BUILD_TYPE } STREQUAL RelWithDebInfo)
300- set (Whispercpp_BUILD_TYPE Release )
347+ set (Whispercpp_BUILD_TYPE RelWithDebInfo )
301348 else ()
302349 set (Whispercpp_BUILD_TYPE Debug)
303350 endif ()
@@ -329,9 +376,35 @@ else()
329376 list (APPEND WHISPER_LIBRARIES GGMLBlas GGMLCPU)
330377 endif ()
331378
332- # TODO: Add SYCL support
379+ find_package (
380+ Vulkan
381+ COMPONENTS glslc
382+ QUIET )
383+ if (Vulkan_FOUND)
384+ message (STATUS "Vulkan found, Libraries: ${Vulkan_LIBRARIES} " )
385+ list (APPEND WHISPER_ADDITIONAL_CMAKE_ARGS -DGGML_VULKAN=ON )
386+ if (WHISPER_DYNAMIC_BACKENDS)
387+ list (APPEND WHISPER_RUNTIME_MODULES GGMLVulkan)
388+ else ()
389+ list (APPEND WHISPER_LIBRARIES GGMLVulkan)
390+ endif ()
391+ list (APPEND WHISPER_DEPENDENCY_LIBRARIES Vulkan::Vulkan)
392+ endif ()
393+
394+ find_package (OpenCL QUIET )
395+ find_package (Python3 QUIET )
396+ if (OpenCL_FOUND AND Python3_FOUND)
397+ message (STATUS "OpenCL found, Libraries: ${OpenCL_LIBRARIES} " )
398+ list (APPEND WHISPER_ADDITIONAL_CMAKE_ARGS -DGGML_OPENCL=ON -DGGML_OPENCL_EMBED_KERNELS=ON
399+ -DGGML_OPENCL_USE_ADRENO_KERNELS=OFF )
400+ if (WHISPER_DYNAMIC_BACKENDS)
401+ list (APPEND WHISPER_RUNTIME_MODULES GGMLOpenCL)
402+ else ()
403+ list (APPEND WHISPER_LIBRARIES GGMLOpenCL)
404+ endif ()
405+ list (APPEND WHISPER_DEPENDENCY_LIBRARIES OpenCL::OpenCL)
406+ endif ()
333407
334- # set(CMAKE_PREFIX_PATH "C:/Program Files/AMD/ROCm/6.1;$ENV{VULKAN_SDK}")
335408 set (HIP_PLATFORM amd)
336409 set (CMAKE_HIP_PLATFORM amd)
337410 set (CMAKE_HIP_ARCHITECTURES OFF )
@@ -342,7 +415,7 @@ else()
342415 AND hipblas_FOUND
343416 AND rocblas_FOUND)
344417 message (STATUS "hipblas found, Libraries: ${hipblas_LIBRARIES} " )
345- set ( WHISPER_ADDITIONAL_ENV "CMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH } ;HIP_PLATFORM=${HIP_PLATFORM} " )
418+ list ( APPEND WHISPER_ADDITIONAL_ENV "CMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH } ;HIP_PLATFORM=${HIP_PLATFORM} " )
346419 list (APPEND WHISPER_ADDITIONAL_CMAKE_ARGS -DGGML_HIP=ON -DGGML_HIP_ROCWMMA_FATTN=ON )
347420 if (WHISPER_DYNAMIC_BACKENDS)
348421 list (APPEND WHISPER_RUNTIME_MODULES GGMLHip)
@@ -364,35 +437,6 @@ else()
364437 list (APPEND WHISPER_DEPENDENCY_LIBRARIES CUDA::cudart CUDA::cublas CUDA::cublasLt CUDA::cuda_driver)
365438 endif ()
366439
367- find_package (
368- Vulkan
369- COMPONENTS glslc
370- QUIET )
371- if (Vulkan_FOUND)
372- message (STATUS "Vulkan found, Libraries: ${Vulkan_LIBRARIES} " )
373- list (APPEND WHISPER_ADDITIONAL_CMAKE_ARGS -DGGML_VULKAN=ON )
374- if (WHISPER_DYNAMIC_BACKENDS)
375- list (APPEND WHISPER_RUNTIME_MODULES GGMLVulkan)
376- else ()
377- list (APPEND WHISPER_LIBRARIES GGMLVulkan)
378- endif ()
379- list (APPEND WHISPER_DEPENDENCY_LIBRARIES Vulkan::Vulkan)
380- endif ()
381-
382- find_package (OpenCL QUIET )
383- find_package (Python3 QUIET )
384- if (OpenCL_FOUND AND Python3_FOUND)
385- message (STATUS "OpenCL found, Libraries: ${OpenCL_LIBRARIES} " )
386- list (APPEND WHISPER_ADDITIONAL_CMAKE_ARGS -DGGML_OPENCL=ON -DGGML_OPENCL_EMBED_KERNELS=ON
387- -DGGML_OPENCL_USE_ADRENO_KERNELS=OFF )
388- if (WHISPER_DYNAMIC_BACKENDS)
389- list (APPEND WHISPER_RUNTIME_MODULES GGMLOpenCL)
390- else ()
391- list (APPEND WHISPER_LIBRARIES GGMLOpenCL)
392- endif ()
393- list (APPEND WHISPER_DEPENDENCY_LIBRARIES OpenCL::OpenCL)
394- endif ()
395-
396440 foreach (component ${WHISPER_LIBRARIES} )
397441 whisper_lib_paths (${component} ${CMAKE_INSTALL_PREFIX } /${CMAKE_INSTALL_LIBDIR}/obs-plugins/${CMAKE_PROJECT_NAME}
398442 WHISPER_STATIC_LIB_PATH WHISPER_SHARED_LIB_PATH WHISPER_SHARED_MODULE_PATH )
0 commit comments