Spaces:
Running
Running
| # TODO: should not use this | |
| if (WIN32) | |
| add_compile_definitions(_CRT_SECURE_NO_WARNINGS) | |
| if (BUILD_SHARED_LIBS) | |
| set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON) | |
| endif() | |
| endif() | |
| if (WHISPER_COREML) | |
| find_library(FOUNDATION_FRAMEWORK Foundation) | |
| find_library(COREML_FRAMEWORK CoreML) | |
| if (COREML_FRAMEWORK) | |
| message(STATUS "CoreML framework found") | |
| set(WHISPER_EXTRA_FLAGS ${WHISPER_EXTRA_FLAGS} -DWHISPER_USE_COREML) | |
| else() | |
| message(FATAL_ERROR "CoreML framework not found") | |
| endif() | |
| if (WHISPER_COREML_ALLOW_FALLBACK) | |
| set(WHISPER_EXTRA_FLAGS ${WHISPER_EXTRA_FLAGS} -DWHISPER_COREML_ALLOW_FALLBACK) | |
| endif() | |
| endif() | |
| if (WHISPER_OPENVINO) | |
| find_package(OpenVINO REQUIRED COMPONENTS Runtime) | |
| endif() | |
| # | |
| # libraries | |
| # | |
| # whisper.coreml | |
| if (WHISPER_COREML) | |
| set(TARGET whisper.coreml) | |
| add_library(${TARGET} | |
| coreml/whisper-encoder.h | |
| coreml/whisper-encoder.mm | |
| coreml/whisper-encoder-impl.h | |
| coreml/whisper-encoder-impl.m | |
| ) | |
| include(DefaultTargetOptions) | |
| target_include_directories(${TARGET} PUBLIC | |
| . | |
| ) | |
| target_link_libraries(${TARGET} PRIVATE ${FOUNDATION_FRAMEWORK} ${COREML_FRAMEWORK}) | |
| set_target_properties(${TARGET} PROPERTIES | |
| COMPILE_FLAGS "-fobjc-arc" | |
| XCODE_ATTRIBUTE_CLANG_ENABLE_OBJC_ARC YES | |
| ) | |
| set_target_properties(${TARGET} PROPERTIES FOLDER "libs") | |
| endif() | |
| if (WHISPER_OPENVINO) | |
| set(TARGET whisper.openvino) | |
| add_library(${TARGET} OBJECT | |
| openvino/whisper-openvino-encoder.h | |
| openvino/whisper-openvino-encoder.cpp | |
| ) | |
| target_include_directories(${TARGET} PUBLIC | |
| . | |
| ) | |
| set_property(TARGET ${TARGET} PROPERTY POSITION_INDEPENDENT_CODE ON) | |
| set(WHISPER_EXTRA_FLAGS ${WHISPER_EXTRA_FLAGS} -DWHISPER_USE_OPENVINO) | |
| target_link_libraries(${TARGET} PRIVATE ggml openvino::runtime) | |
| set_target_properties(${TARGET} PROPERTIES FOLDER "libs") | |
| endif() | |
| #if (GGML_CUDA) | |
| # cmake_minimum_required(VERSION 3.18) # for CMAKE_CUDA_ARCHITECTURES | |
| # | |
| # find_package(CUDAToolkit) | |
| # if (CUDAToolkit_FOUND) | |
| # message(STATUS "CUDA found") | |
| # | |
| # if (NOT DEFINED CMAKE_CUDA_ARCHITECTURES) | |
| # # 52 == lowest CUDA 12 standard | |
| # # 60 == f16 CUDA intrinsics | |
| # # 61 == integer CUDA intrinsics | |
| # # 70 == compute capability at which unrolling a loop in mul_mat_q kernels is faster | |
| # set(CMAKE_CUDA_ARCHITECTURES "52;61;70") # lowest CUDA 12 standard + lowest for integer intrinsics | |
| # endif() | |
| # message(STATUS "Using CUDA architectures: ${CMAKE_CUDA_ARCHITECTURES}") | |
| # | |
| # enable_language(CUDA) | |
| # else() | |
| # message(WARNING "CUDA not found") | |
| # endif() | |
| #endif() | |
| # whisper | |
| add_library(whisper | |
| ../include/whisper.h | |
| whisper.cpp | |
| whisper-mel.hpp | |
| ) | |
| # TODO: disabled because it relies on ggml internals that are no longer accessible (ggml-backend-impl.h, ggml-cuda/common.cuh, ..) | |
| #if (GGML_CUDA) | |
| # target_sources(whisper PRIVATE whisper-mel-cuda.cu) | |
| # | |
| # target_link_libraries(whisper PRIVATE CUDA::cufft) | |
| #endif() | |
| # Set the version numbers | |
| set_target_properties(whisper PROPERTIES | |
| VERSION ${PROJECT_VERSION} | |
| SOVERSION ${SOVERSION} | |
| ) | |
| target_include_directories(whisper PUBLIC . ../include) | |
| target_compile_features (whisper PUBLIC cxx_std_11) # don't bump | |
| if (WHISPER_EXTRA_FLAGS) | |
| target_compile_options(whisper PRIVATE ${WHISPER_EXTRA_FLAGS}) | |
| endif() | |
| target_link_libraries(whisper PUBLIC ggml) | |
| if (WHISPER_COREML) | |
| target_link_libraries(whisper PRIVATE whisper.coreml) | |
| endif() | |
| if (WHISPER_OPENVINO) | |
| target_link_libraries(whisper PRIVATE whisper.openvino) | |
| endif() | |
| if (WHISPER_MKL) | |
| target_link_libraries(whisper PRIVATE MKL::MKL) | |
| endif() | |
| if (BUILD_SHARED_LIBS) | |
| set_target_properties(whisper PROPERTIES POSITION_INDEPENDENT_CODE ON) | |
| target_compile_definitions(whisper PRIVATE WHISPER_SHARED WHISPER_BUILD) | |
| endif() | |