diff --git a/cmake/BuildWhispercpp.cmake b/cmake/BuildWhispercpp.cmake index f559b7f..afc7ced 100644 --- a/cmake/BuildWhispercpp.cmake +++ b/cmake/BuildWhispercpp.cmake @@ -13,6 +13,25 @@ if(UNIX AND NOT APPLE) set(WHISPER_EXTRA_CXX_FLAGS "-fPIC") endif() +# if on Windows - download OpenBLAS prebuilt binaries +if(WIN32) + set(OpenBLAS_URL + "https://github.com/xianyi/OpenBLAS/releases/download/v0.3.24/OpenBLAS-0.3.24-x64.zip") + set(OpenBLAS_SHA256 + "8E777E406BA7030D21ADB18683D6175E4FA5ADACFBC09982C01E81245B348132" + ) + ExternalProject_Add( + OpenBLAS + URL ${OpenBLAS_URL} + URL_HASH SHA256=${OpenBLAS_SHA256} + DOWNLOAD_NO_PROGRESS true + CONFIGURE_COMMAND "" + BUILD_COMMAND "" + INSTALL_COMMAND ${CMAKE_COMMAND} -E copy_directory ) + ExternalProject_Get_Property(OpenBLAS INSTALL_DIR) + set(OpenBLAS_DIR ${INSTALL_DIR}) +endif(WIN32) + ExternalProject_Add( Whispercpp_Build DOWNLOAD_EXTRACT_TIMESTAMP true @@ -20,31 +39,56 @@ ExternalProject_Add( GIT_TAG 7b374c9ac9b9861bb737eec060e4dfa29d229259 BUILD_COMMAND ${CMAKE_COMMAND} --build --config ${Whispercpp_BUILD_TYPE} BUILD_BYPRODUCTS /lib/static/${CMAKE_STATIC_LIBRARY_PREFIX}whisper${CMAKE_STATIC_LIBRARY_SUFFIX} + /bin/${CMAKE_SHARED_LIBRARY_PREFIX}whisper${CMAKE_SHARED_LIBRARY_SUFFIX} + /lib/${CMAKE_IMPORT_LIBRARY_PREFIX}whisper${CMAKE_IMPORT_LIBRARY_SUFFIX} CMAKE_GENERATOR ${CMAKE_GENERATOR} - INSTALL_COMMAND ${CMAKE_COMMAND} --install --config ${Whispercpp_BUILD_TYPE} - CMAKE_ARGS -DCMAKE_INSTALL_PREFIX= + INSTALL_COMMAND ${CMAKE_COMMAND} --install --config ${Whispercpp_BUILD_TYPE} && ${CMAKE_COMMAND} -E copy /${Whispercpp_BUILD_TYPE}/whisper.lib /lib + CONFIGURE_COMMAND + ${CMAKE_COMMAND} -E env OPENBLAS_PATH=${OpenBLAS_DIR} + ${CMAKE_COMMAND} -B -G ${CMAKE_GENERATOR} + -DCMAKE_INSTALL_PREFIX= -DCMAKE_BUILD_TYPE=${Whispercpp_BUILD_TYPE} -DCMAKE_GENERATOR_PLATFORM=${CMAKE_GENERATOR_PLATFORM} -DCMAKE_OSX_DEPLOYMENT_TARGET=10.13 -DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES_} -DCMAKE_CXX_FLAGS=${WHISPER_EXTRA_CXX_FLAGS} -DCMAKE_C_FLAGS=${WHISPER_EXTRA_CXX_FLAGS} - -DBUILD_SHARED_LIBS=OFF + -DBUILD_SHARED_LIBS=ON -DWHISPER_BUILD_TESTS=OFF -DWHISPER_BUILD_EXAMPLES=OFF - -DWHISPER_OPENBLAS=ON) + -DWHISPER_BLAS=ON) + +if(WIN32) + add_dependencies(Whispercpp_Build OpenBLAS) +endif(WIN32) ExternalProject_Get_Property(Whispercpp_Build INSTALL_DIR) -add_library(Whispercpp::Whisper STATIC IMPORTED) +add_library(Whispercpp::Whisper SHARED IMPORTED) set_target_properties( Whispercpp::Whisper PROPERTIES IMPORTED_LOCATION - ${INSTALL_DIR}/lib/static/${CMAKE_STATIC_LIBRARY_PREFIX}whisper${CMAKE_STATIC_LIBRARY_SUFFIX}) + ${INSTALL_DIR}/bin/${CMAKE_SHARED_LIBRARY_PREFIX}whisper${CMAKE_SHARED_LIBRARY_SUFFIX}) +set_target_properties( + Whispercpp::Whisper + PROPERTIES IMPORTED_IMPLIB + ${INSTALL_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}whisper${CMAKE_STATIC_LIBRARY_SUFFIX}) + +install(FILES ${INSTALL_DIR}/bin/${CMAKE_SHARED_LIBRARY_PREFIX}whisper${CMAKE_SHARED_LIBRARY_SUFFIX} DESTINATION "obs-plugins/64bit") + +# add openblas to the link line +if(WIN32) + add_library(Whispercpp::OpenBLAS STATIC IMPORTED) + set_target_properties( + Whispercpp::OpenBLAS + PROPERTIES IMPORTED_LOCATION + ${OpenBLAS_DIR}/lib/libopenblas.dll.a) + install(FILES ${OpenBLAS_DIR}/bin/libopenblas.dll DESTINATION "obs-plugins/64bit") +endif(WIN32) add_library(Whispercpp INTERFACE) add_dependencies(Whispercpp Whispercpp_Build) -target_link_libraries(Whispercpp INTERFACE Whispercpp::Whisper) +target_link_libraries(Whispercpp INTERFACE Whispercpp::Whisper Whispercpp::OpenBLAS) set_target_properties(Whispercpp::Whisper PROPERTIES INTERFACE_INCLUDE_DIRECTORIES ${INSTALL_DIR}/include) if(APPLE) target_link_libraries(Whispercpp INTERFACE "-framework Accelerate")