mirror of
https://github.com/ggerganov/whisper.cpp.git
synced 2025-04-11 21:08:29 +02:00
* examples : add dl to the list of libraries linked This commit adds the dynamic linker library to the list of libraries linked by the examples. The motivation for this change is that when building the examples on ubuntu 20.04, which uses GCC 9.4.0, the dynamic linker requires explicit linking or the following error is generated: ```console [ 64%] Linking CXX executable ../../bin/whisper-cli cd /app/whisper.cpp/build/examples/cli && /usr/bin/cmake -E cmake_link_script CMakeFiles/whisper-cli.dir/link.txt --verbose=1 /usr/bin/c++ -O3 -DNDEBUG CMakeFiles/whisper-cli.dir/cli.cpp.o -o ../../bin/whisper-cli -Wl,-rpath,/app/whisper.cpp/build/src:/app/whisper.cpp/build/ggml/src: ../libcommon.a ../../src/libwhisper.so.1.7.4 -pthread ../../ggml/src/libggml.so ../../ggml/src/libggml-cpu.so ../../ggml/src/libggml-base.so /usr/bin/ld: ../libcommon.a(common-whisper.cpp.o): undefined reference to symbol 'dlclose@@GLIBC_2.2.5' /usr/bin/ld: /lib/x86_64-linux-gnu/libdl.so.2: error adding symbols: DSO missing from command line collect2: error: ld returned 1 exit status make[2]: *** [examples/cli/CMakeFiles/whisper-cli.dir/build.make:89: bin/whisper-cli] Error 1 make[2]: Leaving directory '/app/whisper.cpp/build' make[1]: *** [CMakeFiles/Makefile2:433: examples/cli/CMakeFiles/whisper-cli.dir/all] Error 2 make[1]: Leaving directory '/app/whisper.cpp/build' make: *** [Makefile:130: all] Error 2 ``` Resolves: https://github.com/ggerganov/whisper.cpp/issues/2854
124 lines
3.4 KiB
CMake
124 lines
3.4 KiB
CMake
# dependencies
|
|
|
|
find_package(Threads REQUIRED)
|
|
|
|
# third-party
|
|
|
|
if (WHISPER_SDL2)
|
|
# SDL2
|
|
find_package(SDL2 REQUIRED)
|
|
|
|
string(STRIP "${SDL2_LIBRARIES}" SDL2_LIBRARIES)
|
|
|
|
message(STATUS "SDL2_INCLUDE_DIRS = ${SDL2_INCLUDE_DIRS}")
|
|
message(STATUS "SDL2_LIBRARIES = ${SDL2_LIBRARIES}")
|
|
endif()
|
|
|
|
# common
|
|
|
|
set(TARGET common)
|
|
|
|
unset(COMMON_EXTRA_LIBS)
|
|
|
|
if (WHISPER_FFMPEG)
|
|
# As of cmake 3.27, there is no official cmake support for FindFFmpeg.
|
|
# Consequnelty we added a FindFFmpeg.cmake script the cmake subfolder:
|
|
# whisper.cpp does not need the full ffmpeg libs, just AVFORMAT AVCODEC AVUTIL SWRESAMPLE
|
|
# libswresample performs highly optimized audio resampling, rematrixing and sample format conversion operations
|
|
# libavcodec provides a generic encoding/decoding framework and contains multiple decoders and encoders for audio, video and subtitle streams, and several bitstream filters.
|
|
# libavformat provides a generic framework for multiplexing and demultiplexing (muxing and demuxing) audio, video and subtitle streams.
|
|
find_package(FFmpeg REQUIRED)
|
|
|
|
if (NOT ${FFMPEG_FOUND})
|
|
message(FATAL_ERROR "Cannot find ffmpeg libs/headers")
|
|
endif()
|
|
|
|
message(STATUS "Found ffmpeg libs: ${FFMPEG_LIBRARIES}")
|
|
message(STATUS "Found ffmpeg headers in: ${FFMPEG_INCLUDE_DIRS}")
|
|
message(STATUS "ffmpeg definitions: ${FFMPEG_DEFINITIONS}")
|
|
message(STATUS "Found avformat ${AVFORMAT_VERSION}")
|
|
|
|
include_directories(${FFMPEG_INCLUDE_DIRS})
|
|
add_compile_definitions(WHISPER_FFMPEG)
|
|
|
|
list(APPEND COMMON_EXTRA_LIBS ${FFMPEG_LIBRARIES})
|
|
|
|
set(COMMON_SOURCES_FFMPEG ffmpeg-transcode.cpp)
|
|
endif()
|
|
|
|
|
|
add_library(${TARGET} STATIC
|
|
common.h
|
|
common.cpp
|
|
common-ggml.h
|
|
common-ggml.cpp
|
|
common-whisper.h
|
|
common-whisper.cpp
|
|
grammar-parser.h
|
|
grammar-parser.cpp
|
|
${COMMON_SOURCES_FFMPEG}
|
|
)
|
|
|
|
include(DefaultTargetOptions)
|
|
|
|
target_link_libraries(${TARGET} PRIVATE whisper ${COMMON_EXTRA_LIBS} ${CMAKE_DL_LIBS})
|
|
|
|
set_target_properties(${TARGET} PROPERTIES POSITION_INDEPENDENT_CODE ON)
|
|
set_target_properties(${TARGET} PROPERTIES FOLDER "libs")
|
|
|
|
if (WHISPER_SDL2)
|
|
# common-sdl
|
|
|
|
set(TARGET common-sdl)
|
|
|
|
add_library(${TARGET} STATIC
|
|
common-sdl.h
|
|
common-sdl.cpp
|
|
)
|
|
|
|
include(DefaultTargetOptions)
|
|
|
|
target_include_directories(${TARGET} PUBLIC ${SDL2_INCLUDE_DIRS})
|
|
target_link_libraries (${TARGET} PRIVATE ${SDL2_LIBRARIES})
|
|
|
|
set_target_properties(${TARGET} PROPERTIES POSITION_INDEPENDENT_CODE ON)
|
|
set_target_properties(${TARGET} PROPERTIES FOLDER "libs")
|
|
endif()
|
|
|
|
# add json lib
|
|
add_library(json_cpp INTERFACE)
|
|
target_include_directories(json_cpp INTERFACE ${CMAKE_CURRENT_SOURCE_DIR})
|
|
|
|
# examples
|
|
|
|
include_directories(${CMAKE_CURRENT_SOURCE_DIR})
|
|
|
|
if (EMSCRIPTEN)
|
|
add_subdirectory(whisper.wasm)
|
|
add_subdirectory(stream.wasm)
|
|
add_subdirectory(command.wasm)
|
|
add_subdirectory(bench.wasm)
|
|
elseif(CMAKE_JS_VERSION)
|
|
add_subdirectory(addon.node)
|
|
else()
|
|
add_subdirectory(cli)
|
|
add_subdirectory(bench)
|
|
add_subdirectory(server)
|
|
add_subdirectory(quantize)
|
|
if (WHISPER_SDL2)
|
|
add_subdirectory(stream)
|
|
add_subdirectory(command)
|
|
add_subdirectory(talk-llama)
|
|
add_subdirectory(lsp)
|
|
if (GGML_SYCL)
|
|
add_subdirectory(sycl)
|
|
endif()
|
|
endif (WHISPER_SDL2)
|
|
|
|
add_subdirectory(deprecation-warning)
|
|
endif()
|
|
|
|
if (WHISPER_SDL2)
|
|
add_subdirectory(wchess)
|
|
endif (WHISPER_SDL2)
|