@@ -13,38 +13,115 @@ if(UNIX AND NOT APPLE)
13
13
set (WHISPER_EXTRA_CXX_FLAGS "-fPIC" )
14
14
endif ()
15
15
16
- ExternalProject_Add (
17
- Whispercpp_Build
18
- DOWNLOAD_EXTRACT_TIMESTAMP true
19
- GIT_REPOSITORY https://github.com/ggerganov/whisper.cpp.git
20
- GIT_TAG 7b374c9ac9b9861bb737eec060e4dfa29d229259
21
- BUILD_COMMAND ${CMAKE_COMMAND} --build <BINARY_DIR> --config ${Whispercpp_BUILD_TYPE}
22
- BUILD_BYPRODUCTS <INSTALL_DIR>/lib/static/${CMAKE_STATIC_LIBRARY_PREFIX}whisper${CMAKE_STATIC_LIBRARY_SUFFIX}
23
- CMAKE_GENERATOR ${CMAKE_GENERATOR}
24
- INSTALL_COMMAND ${CMAKE_COMMAND} --install <BINARY_DIR> --config ${Whispercpp_BUILD_TYPE}
25
- CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
26
- -DCMAKE_BUILD_TYPE=${Whispercpp_BUILD_TYPE}
27
- -DCMAKE_GENERATOR_PLATFORM=${CMAKE_GENERATOR_PLATFORM}
28
- -DCMAKE_OSX_DEPLOYMENT_TARGET=10.13
29
- -DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES_}
30
- -DCMAKE_CXX_FLAGS=${WHISPER_EXTRA_CXX_FLAGS}
31
- -DCMAKE_C_FLAGS=${WHISPER_EXTRA_CXX_FLAGS}
32
- -DBUILD_SHARED_LIBS=OFF
33
- -DWHISPER_BUILD_TESTS=OFF
34
- -DWHISPER_BUILD_EXAMPLES=OFF
35
- -DWHISPER_OPENBLAS=ON )
16
+ # if on Windows - download OpenBLAS prebuilt binaries
17
+ if (WIN32 )
18
+ if (LOCALVOCAL_WITH_CUDA )
19
+ # Build with CUDA Check that CUDA_TOOLKIT_ROOT_DIR is set
20
+ if (NOT DEFINED CUDA_TOOLKIT_ROOT_DIR )
21
+ message (FATAL_ERROR "CUDA_TOOLKIT_ROOT_DIR is not set. Please set it to the root directory of your CUDA "
22
+ "installation." )
23
+ endif (NOT DEFINED CUDA_TOOLKIT_ROOT_DIR )
24
+
25
+ set (WHISPER_ADDITIONAL_ENV "CUDAToolkit_ROOT=${CUDA_TOOLKIT_ROOT_DIR} " )
26
+ set (WHISPER_ADDITIONAL_CMAKE_ARGS -DWHISPER_CUBLAS=ON -DCMAKE_GENERATOR_TOOLSET=cuda=${CUDA_TOOLKIT_ROOT_DIR} )
27
+ else (LOCALVOCAL_WITH_CUDA )
28
+ # Build with OpenBLAS
29
+ set (OpenBLAS_URL "https://github.com/xianyi/OpenBLAS/releases/download/v0.3.24/OpenBLAS-0.3.24-x64.zip" )
30
+ set (OpenBLAS_SHA256 "8E777E406BA7030D21ADB18683D6175E4FA5ADACFBC09982C01E81245B348132" )
31
+ ExternalProject_Add (
32
+ OpenBLAS
33
+ URL ${OpenBLAS_URL}
34
+ URL_HASH SHA256=${OpenBLAS_SHA256}
35
+ DOWNLOAD_NO_PROGRESS true
36
+ CONFIGURE_COMMAND ""
37
+ BUILD_COMMAND ""
38
+ INSTALL_COMMAND ${CMAKE_COMMAND} -E copy_directory <SOURCE_DIR> <INSTALL_DIR> )
39
+ ExternalProject_Get_Property (OpenBLAS INSTALL_DIR )
40
+ set (OpenBLAS_DIR ${INSTALL_DIR} )
41
+ set (WHISPER_ADDITIONAL_ENV "OPENBLAS_PATH=${OpenBLAS_DIR} " )
42
+ set (WHISPER_ADDITIONAL_CMAKE_ARGS -DWHISPER_BLAS=ON -DWHISPER_CUBLAS=OFF )
43
+ endif (LOCALVOCAL_WITH_CUDA )
44
+
45
+ ExternalProject_Add (
46
+ Whispercpp_Build
47
+ DOWNLOAD_EXTRACT_TIMESTAMP true
48
+ GIT_REPOSITORY https://github.com/ggerganov/whisper.cpp.git
49
+ GIT_TAG 7b374c9ac9b9861bb737eec060e4dfa29d229259
50
+ BUILD_COMMAND ${CMAKE_COMMAND} --build <BINARY_DIR> --config ${Whispercpp_BUILD_TYPE}
51
+ BUILD_BYPRODUCTS
52
+ <INSTALL_DIR>/lib/static/${CMAKE_STATIC_LIBRARY_PREFIX}whisper${CMAKE_STATIC_LIBRARY_SUFFIX}
53
+ <INSTALL_DIR>/bin/${CMAKE_SHARED_LIBRARY_PREFIX}whisper${CMAKE_SHARED_LIBRARY_SUFFIX}
54
+ <INSTALL_DIR>/lib/${CMAKE_IMPORT_LIBRARY_PREFIX}whisper${CMAKE_IMPORT_LIBRARY_SUFFIX}
55
+ CMAKE_GENERATOR ${CMAKE_GENERATOR}
56
+ INSTALL_COMMAND ${CMAKE_COMMAND} --install <BINARY_DIR> --config ${Whispercpp_BUILD_TYPE} && ${CMAKE_COMMAND} -E
57
+ copy <BINARY_DIR>/${Whispercpp_BUILD_TYPE}/whisper.lib <INSTALL_DIR>/lib
58
+ CONFIGURE_COMMAND
59
+ ${CMAKE_COMMAND} -E env ${WHISPER_ADDITIONAL_ENV} ${CMAKE_COMMAND} <SOURCE_DIR> -B <BINARY_DIR> -G
60
+ ${CMAKE_GENERATOR} -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR> -DCMAKE_BUILD_TYPE=${Whispercpp_BUILD_TYPE}
61
+ -DCMAKE_GENERATOR_PLATFORM=${CMAKE_GENERATOR_PLATFORM} -DCMAKE_OSX_DEPLOYMENT_TARGET=10.13
62
+ -DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES_} -DCMAKE_CXX_FLAGS=${WHISPER_EXTRA_CXX_FLAGS}
63
+ -DCMAKE_C_FLAGS=${WHISPER_EXTRA_CXX_FLAGS} -DBUILD_SHARED_LIBS=ON -DWHISPER_BUILD_TESTS=OFF
64
+ -DWHISPER_BUILD_EXAMPLES=OFF ${WHISPER_ADDITIONAL_CMAKE_ARGS} )
65
+
66
+ if (NOT LOCALVOCAL_WITH_CUDA )
67
+ add_dependencies (Whispercpp_Build OpenBLAS )
68
+ endif (NOT LOCALVOCAL_WITH_CUDA )
69
+ else ()
70
+ # On Linux and MacOS build a static Whisper library
71
+ ExternalProject_Add (
72
+ Whispercpp_Build
73
+ DOWNLOAD_EXTRACT_TIMESTAMP true
74
+ GIT_REPOSITORY https://github.com/ggerganov/whisper.cpp.git
75
+ GIT_TAG 7b374c9ac9b9861bb737eec060e4dfa29d229259
76
+ BUILD_COMMAND ${CMAKE_COMMAND} --build <BINARY_DIR> --config ${Whispercpp_BUILD_TYPE}
77
+ BUILD_BYPRODUCTS <INSTALL_DIR>/lib/static/${CMAKE_STATIC_LIBRARY_PREFIX}whisper${CMAKE_STATIC_LIBRARY_SUFFIX}
78
+ CMAKE_GENERATOR ${CMAKE_GENERATOR}
79
+ INSTALL_COMMAND ${CMAKE_COMMAND} --install <BINARY_DIR> --config ${Whispercpp_BUILD_TYPE}
80
+ CONFIGURE_COMMAND
81
+ ${CMAKE_COMMAND} -E env OPENBLAS_PATH=${OpenBLAS_DIR} ${CMAKE_COMMAND} <SOURCE_DIR> -B <BINARY_DIR> -G
82
+ ${CMAKE_GENERATOR} -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR> -DCMAKE_BUILD_TYPE=${Whispercpp_BUILD_TYPE}
83
+ -DCMAKE_GENERATOR_PLATFORM=${CMAKE_GENERATOR_PLATFORM} -DCMAKE_OSX_DEPLOYMENT_TARGET=10.13
84
+ -DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES_} -DCMAKE_CXX_FLAGS=${WHISPER_EXTRA_CXX_FLAGS}
85
+ -DCMAKE_C_FLAGS=${WHISPER_EXTRA_CXX_FLAGS} -DBUILD_SHARED_LIBS=OFF -DWHISPER_BUILD_TESTS=OFF
86
+ -DWHISPER_BUILD_EXAMPLES=OFF -DWHISPER_BLAS=OFF )
87
+ endif (WIN32 )
36
88
37
89
ExternalProject_Get_Property (Whispercpp_Build INSTALL_DIR )
38
90
39
- add_library (Whispercpp::Whisper STATIC IMPORTED )
40
- set_target_properties (
41
- Whispercpp::Whisper
42
- PROPERTIES IMPORTED_LOCATION
43
- ${INSTALL_DIR} /lib/static/${CMAKE_STATIC_LIBRARY_PREFIX}whisper${CMAKE_STATIC_LIBRARY_SUFFIX} )
91
+ # add the Whisper library to the link line
92
+ if (WIN32 )
93
+ add_library (Whispercpp::Whisper SHARED IMPORTED )
94
+ set_target_properties (
95
+ Whispercpp::Whisper
96
+ PROPERTIES IMPORTED_LOCATION ${INSTALL_DIR} /bin/${CMAKE_SHARED_LIBRARY_PREFIX}whisper${CMAKE_SHARED_LIBRARY_SUFFIX} )
97
+ set_target_properties (
98
+ Whispercpp::Whisper
99
+ PROPERTIES IMPORTED_IMPLIB ${INSTALL_DIR} /lib/${CMAKE_STATIC_LIBRARY_PREFIX}whisper${CMAKE_STATIC_LIBRARY_SUFFIX} )
100
+
101
+ install (FILES ${INSTALL_DIR} /bin/${CMAKE_SHARED_LIBRARY_PREFIX}whisper${CMAKE_SHARED_LIBRARY_SUFFIX}
102
+ DESTINATION "obs-plugins/64bit" )
103
+
104
+ if (NOT LOCALVOCAL_WITH_CUDA )
105
+ # add openblas to the link line
106
+ add_library (Whispercpp::OpenBLAS STATIC IMPORTED )
107
+ set_target_properties (Whispercpp::OpenBLAS PROPERTIES IMPORTED_LOCATION ${OpenBLAS_DIR} /lib/libopenblas.dll.a )
108
+ install (FILES ${OpenBLAS_DIR} /bin/libopenblas.dll DESTINATION "obs-plugins/64bit" )
109
+ endif (NOT LOCALVOCAL_WITH_CUDA )
110
+ else ()
111
+ # on Linux and MacOS add the static Whisper library to the link line
112
+ add_library (Whispercpp::Whisper STATIC IMPORTED )
113
+ set_target_properties (
114
+ Whispercpp::Whisper
115
+ PROPERTIES IMPORTED_LOCATION
116
+ ${INSTALL_DIR} /lib/static/${CMAKE_STATIC_LIBRARY_PREFIX}whisper${CMAKE_STATIC_LIBRARY_SUFFIX} )
117
+ endif (WIN32 )
44
118
45
119
add_library (Whispercpp INTERFACE )
46
120
add_dependencies (Whispercpp Whispercpp_Build )
47
121
target_link_libraries (Whispercpp INTERFACE Whispercpp::Whisper )
122
+ if (WIN32 AND NOT LOCALVOCAL_WITH_CUDA )
123
+ target_link_libraries (Whispercpp INTERFACE Whispercpp::OpenBLAS )
124
+ endif ()
48
125
set_target_properties (Whispercpp::Whisper PROPERTIES INTERFACE_INCLUDE_DIRECTORIES ${INSTALL_DIR} /include )
49
126
if (APPLE )
50
127
target_link_libraries (Whispercpp INTERFACE "-framework Accelerate" )
0 commit comments