cmake : update semver handling to be consistent with ggml/llama.cpp
This commit modifies the semantic version handling to be consistent with how llama.cpp and ggml handle semver. This commit introdues a new example named test-cmake which is intended to be used to test the cmake configuration and installation.
This commit is contained in:
parent
4834a2327d
commit
b6e63fa4ac
|
|
@ -1,9 +1,26 @@
|
|||
cmake_minimum_required(VERSION 3.5) # for add_link_options and implicit target directories.
|
||||
project("whisper.cpp" C CXX)
|
||||
project("whisper.cpp" VERSION 1.9.2)
|
||||
include(CheckIncludeFileCXX)
|
||||
|
||||
set(SOVERSION 1)
|
||||
### whisper.cpp version
|
||||
set(WHISPER_VERSION_MAJOR 1)
|
||||
set(WHISPER_VERSION_MINOR 9)
|
||||
set(WHISPER_VERSION_PATCH 2)
|
||||
set(WHISPER_VERSION_BASE "${WHISPER_VERSION_MAJOR}.${WHISPER_VERSION_MINOR}.${WHISPER_VERSION_PATCH}")
|
||||
|
||||
# whether this is a development/nightly build
|
||||
# set this to OFF when making a release from a release tag (vX.Y.Z)
|
||||
# ref: https://github.com/ggml-org/ggml/discussions/1579
|
||||
option(WHISPER_BUILD_IS_DEV "whisper: dev build" ON)
|
||||
|
||||
if (WHISPER_BUILD_IS_DEV)
|
||||
set(WHISPER_VERSION "${WHISPER_VERSION_BASE}-dev")
|
||||
else()
|
||||
# TODO: check that the current commit is tagged correctly according to the version specified above
|
||||
set(WHISPER_VERSION "${WHISPER_VERSION_BASE}")
|
||||
endif()
|
||||
|
||||
message(STATUS "whisper.cpp version: ${WHISPER_VERSION}")
|
||||
|
||||
#set(CMAKE_WARN_DEPRECATED YES)
|
||||
set(CMAKE_WARN_UNUSED_CLI YES)
|
||||
|
|
@ -170,9 +187,12 @@ add_subdirectory(src)
|
|||
include(GNUInstallDirs)
|
||||
include(CMakePackageConfigHelpers)
|
||||
|
||||
set(WHISPER_BUILD_NUMBER ${BUILD_NUMBER})
|
||||
set(WHISPER_BUILD_COMMIT ${BUILD_COMMIT})
|
||||
set(WHISPER_INSTALL_VERSION ${CMAKE_PROJECT_VERSION})
|
||||
if (NOT DEFINED WHISPER_BUILD_NUMBER)
|
||||
set(WHISPER_BUILD_NUMBER ${BUILD_NUMBER})
|
||||
endif()
|
||||
if (NOT DEFINED WHISPER_BUILD_COMMIT)
|
||||
set(WHISPER_BUILD_COMMIT ${BUILD_COMMIT})
|
||||
endif()
|
||||
|
||||
set(WHISPER_INCLUDE_INSTALL_DIR ${CMAKE_INSTALL_INCLUDEDIR} CACHE PATH "Location of header files")
|
||||
set(WHISPER_LIB_INSTALL_DIR ${CMAKE_INSTALL_LIBDIR} CACHE PATH "Location of library files")
|
||||
|
|
@ -185,14 +205,14 @@ set_target_properties(whisper PROPERTIES PUBLIC_HEADER ${CMAKE_CURRENT_SOURCE_DI
|
|||
install(TARGETS whisper LIBRARY PUBLIC_HEADER)
|
||||
|
||||
target_compile_definitions(whisper PRIVATE
|
||||
WHISPER_VERSION="${PROJECT_VERSION}"
|
||||
WHISPER_VERSION="${WHISPER_VERSION}"
|
||||
)
|
||||
|
||||
set_target_properties(parakeet PROPERTIES PUBLIC_HEADER ${CMAKE_CURRENT_SOURCE_DIR}/include/parakeet.h)
|
||||
install(TARGETS parakeet LIBRARY PUBLIC_HEADER)
|
||||
|
||||
target_compile_definitions(parakeet PRIVATE
|
||||
PARAKEET_VERSION="${PROJECT_VERSION}"
|
||||
PARAKEET_VERSION="${WHISPER_VERSION}"
|
||||
)
|
||||
|
||||
configure_package_config_file(
|
||||
|
|
@ -205,12 +225,12 @@ configure_package_config_file(
|
|||
WHISPER_BIN_INSTALL_DIR )
|
||||
|
||||
write_basic_package_version_file(
|
||||
${CMAKE_CURRENT_BINARY_DIR}/whisper-version.cmake
|
||||
VERSION ${WHISPER_INSTALL_VERSION}
|
||||
${CMAKE_CURRENT_BINARY_DIR}/whisper-config-version.cmake
|
||||
VERSION ${WHISPER_VERSION}
|
||||
COMPATIBILITY SameMajorVersion)
|
||||
|
||||
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/whisper-config.cmake
|
||||
${CMAKE_CURRENT_BINARY_DIR}/whisper-version.cmake
|
||||
${CMAKE_CURRENT_BINARY_DIR}/whisper-config-version.cmake
|
||||
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/whisper)
|
||||
|
||||
configure_file(cmake/whisper.pc.in
|
||||
|
|
@ -234,12 +254,12 @@ configure_package_config_file(
|
|||
PARAKEET_BIN_INSTALL_DIR)
|
||||
|
||||
write_basic_package_version_file(
|
||||
${CMAKE_CURRENT_BINARY_DIR}/parakeet-version.cmake
|
||||
VERSION ${WHISPER_INSTALL_VERSION}
|
||||
${CMAKE_CURRENT_BINARY_DIR}/parakeet-config-version.cmake
|
||||
VERSION ${WHISPER_VERSION}
|
||||
COMPATIBILITY SameMajorVersion)
|
||||
|
||||
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/parakeet-config.cmake
|
||||
${CMAKE_CURRENT_BINARY_DIR}/parakeet-version.cmake
|
||||
${CMAKE_CURRENT_BINARY_DIR}/parakeet-config-version.cmake
|
||||
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/parakeet)
|
||||
|
||||
configure_file(cmake/parakeet.pc.in
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "whisper.cpp",
|
||||
"version": "@PROJECT_VERSION@",
|
||||
"version": "@WHISPER_VERSION@",
|
||||
"description": "Whisper speech recognition",
|
||||
"main": "whisper.js",
|
||||
"scripts": {
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "whisper.cpp",
|
||||
"version": "1.9.2",
|
||||
"version": "1.9.2-dev",
|
||||
"description": "Whisper speech recognition",
|
||||
"main": "whisper.js",
|
||||
"scripts": {
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
set(PARAKEET_VERSION @WHISPER_INSTALL_VERSION@)
|
||||
set(PARAKEET_VERSION @WHISPER_VERSION@)
|
||||
set(PARAKEET_BUILD_COMMIT @WHISPER_BUILD_COMMIT@)
|
||||
set(PARAKEET_BUILD_NUMBER @WHISPER_BUILD_NUMBER@)
|
||||
set(PARAKEET_SHARED_LIB @BUILD_SHARED_LIBS@)
|
||||
|
|
@ -7,7 +7,7 @@ set(PARAKEET_SHARED_LIB @BUILD_SHARED_LIBS@)
|
|||
|
||||
set_and_check(PARAKEET_INCLUDE_DIR "@PACKAGE_PARAKEET_INCLUDE_INSTALL_DIR@")
|
||||
set_and_check(PARAKEET_LIB_DIR "@PACKAGE_PARAKEET_LIB_INSTALL_DIR@")
|
||||
set_and_check(PARAKEET_BIN_DIR "@PACKAGE_PARAKEET_BIN_INSTALL_DIR@")
|
||||
set(PARAKEET_BIN_DIR "@PACKAGE_PARAKEET_BIN_INSTALL_DIR@")
|
||||
|
||||
find_package(ggml REQUIRED HINTS ${PARAKEET_LIB_DIR}/cmake)
|
||||
|
||||
|
|
|
|||
|
|
@ -5,6 +5,6 @@ includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@
|
|||
|
||||
Name: parakeet
|
||||
Description: Port of NVIDIA's Parakeet model in C/C++
|
||||
Version: @PROJECT_VERSION@
|
||||
Version: @WHISPER_VERSION@
|
||||
Libs: -L${libdir} -lggml -lggml-base -lparakeet
|
||||
Cflags: -I${includedir}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
set(WHISPER_VERSION @WHISPER_INSTALL_VERSION@)
|
||||
set(WHISPER_VERSION @WHISPER_VERSION@)
|
||||
set(WHISPER_BUILD_COMMIT @WHISPER_BUILD_COMMIT@)
|
||||
set(WHISPER_BUILD_NUMBER @WHISPER_BUILD_NUMBER@)
|
||||
set(WHISPER_SHARED_LIB @BUILD_SHARED_LIBS@)
|
||||
|
|
@ -7,9 +7,9 @@ set(WHISPER_SHARED_LIB @BUILD_SHARED_LIBS@)
|
|||
|
||||
set_and_check(WHISPER_INCLUDE_DIR "@PACKAGE_WHISPER_INCLUDE_INSTALL_DIR@")
|
||||
set_and_check(WHISPER_LIB_DIR "@PACKAGE_WHISPER_LIB_INSTALL_DIR@")
|
||||
set_and_check(WHISPER_BIN_DIR "@PACKAGE_WHISPER_BIN_INSTALL_DIR@")
|
||||
set(WHISPER_BIN_DIR "@PACKAGE_WHISPER_BIN_INSTALL_DIR@")
|
||||
|
||||
find_package(ggml REQUIRED HINTS ${LLAMA_LIB_DIR}/cmake)
|
||||
find_package(ggml REQUIRED HINTS ${WHISPER_LIB_DIR}/cmake)
|
||||
|
||||
find_library(whisper_LIBRARY whisper
|
||||
REQUIRED
|
||||
|
|
|
|||
|
|
@ -5,6 +5,6 @@ includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@
|
|||
|
||||
Name: whisper
|
||||
Description: Port of OpenAI's Whisper model in C/C++
|
||||
Version: @PROJECT_VERSION@
|
||||
Version: @WHISPER_VERSION@
|
||||
Libs: -L${libdir} -lggml -lggml-base -lwhisper
|
||||
Cflags: -I${includedir}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,3 @@
|
|||
whisper-build-install
|
||||
install
|
||||
build
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
cmake_minimum_required(VERSION 3.14)
|
||||
project(whisper-simple)
|
||||
|
||||
set(CMAKE_CXX_STANDARD 17)
|
||||
|
||||
# request a version that is satisfied by both dev (1.9.2-dev) and release (1.9.2) installs
|
||||
# (find_package does not accept a pre-release version as an argument)
|
||||
find_package(whisper 1.9.2 REQUIRED)
|
||||
|
||||
add_executable(test-cmake test-cmake.cpp)
|
||||
|
||||
target_link_libraries(test-cmake PRIVATE whisper)
|
||||
|
||||
target_compile_definitions(test-cmake PRIVATE
|
||||
WHISPER_BUILD_NUMBER=${WHISPER_BUILD_NUMBER}
|
||||
WHISPER_BUILD_COMMIT="${WHISPER_BUILD_COMMIT}"
|
||||
)
|
||||
|
|
@ -0,0 +1,40 @@
|
|||
## cmake-test
|
||||
|
||||
This is just for manually testing/developing of a whisper.cpp installation to
|
||||
enable troubleshooting issues and exploration. The idea is that this can be used
|
||||
after making changes to whisper.cpp installation cmake configuration and then
|
||||
verify it locally.
|
||||
|
||||
### Usage
|
||||
The following will configure, build, and install whisper.cpp
|
||||
|
||||
Configuring/build/install:
|
||||
```console
|
||||
./build-install.sh
|
||||
```
|
||||
The above command will create a directory named `install` in the current directory
|
||||
which will have the following files in its lib directory:
|
||||
```console
|
||||
$ ls install/lib/
|
||||
cmake libggml-base.so libggml.so libparakeet.so libwhisper.so
|
||||
libggml-base.so.0 libggml-base.so.0.20.0 libggml.so.0 libparakeet.so.1 libwhisper.so.1
|
||||
libggml-cpu.so libggml.so.0.20.0 libggml.so.0.20.0 libparakeet.so.1.9.2 libwhisper.so.1.9.2
|
||||
libggml-cpu.so.0 pkgconfig libparakeet.so libwhisper.so
|
||||
```
|
||||
|
||||
Build/run this project using the installation created above:
|
||||
```console
|
||||
$ ./build.sh
|
||||
-- The C compiler identification is GNU 13.3.0
|
||||
-- The CXX compiler identification is GNU 13.3.0
|
||||
-- Detecting C compiler ABI info - done
|
||||
-- Detecting CXX compiler ABI info - done
|
||||
-- Detecting CXX compile features - done
|
||||
-- Configuring done (0.1s)
|
||||
-- Generating done (0.0s)
|
||||
-- Build files have been written to: /path/to/whisper.cpp/examples/test-cmake/build
|
||||
[ 50%] Building CXX object CMakeFiles/test-cmake.dir/test-cmake.cpp.o
|
||||
[100%] Linking CXX executable test-cmake
|
||||
[100%] Built target test-cmake
|
||||
[test-cmake] version: 1.9.2-dev, build: 4925 (1fe009ca)
|
||||
```
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
build_dir=whisper-build-install
|
||||
install_dir=install
|
||||
|
||||
rm -rf ${build_dir} ${install_dir}
|
||||
|
||||
cmake -S ../../. -B ${build_dir} -DCMAKE_BUILD_TYPE=Release \
|
||||
-DBUILD_SHARED_LIBS=ON \
|
||||
-DWHISPER_BUILD_TESTS=OFF \
|
||||
-DWHISPER_BUILD_EXAMPLES=OFF \
|
||||
-DWHISPER_BUILD_SERVER=OFF \
|
||||
-DCMAKE_INSTALL_PREFIX="${PWD}/${install_dir}"
|
||||
|
||||
cmake --build ${build_dir} --parallel 12
|
||||
cmake --install ${build_dir}
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
cmake -S . -B build -DCMAKE_PREFIX_PATH="${PWD}/install"
|
||||
cmake --build build
|
||||
|
||||
LD_LIBRARY_PATH="${PWD}/install/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}" ./build/test-cmake
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
#include "whisper.h"
|
||||
|
||||
#include <cstdio>
|
||||
|
||||
int main(void) {
|
||||
printf("[test-cmake] version: %s, build: %d (%s)\n",
|
||||
whisper_version(), WHISPER_BUILD_NUMBER, WHISPER_BUILD_COMMIT);
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -121,13 +121,15 @@ target_link_libraries(parakeet PUBLIC ggml Threads::Threads)
|
|||
|
||||
# Set the version numbers
|
||||
set_target_properties(whisper PROPERTIES
|
||||
VERSION ${PROJECT_VERSION}
|
||||
SOVERSION ${SOVERSION}
|
||||
VERSION ${WHISPER_VERSION_BASE}
|
||||
SOVERSION ${WHISPER_VERSION_MAJOR}
|
||||
MACHO_CURRENT_VERSION 0 # keep macOS linker from seeing oversized version number
|
||||
)
|
||||
|
||||
set_target_properties(parakeet PROPERTIES
|
||||
VERSION ${PROJECT_VERSION}
|
||||
SOVERSION ${SOVERSION}
|
||||
VERSION ${WHISPER_VERSION_BASE}
|
||||
SOVERSION ${WHISPER_VERSION_MAJOR}
|
||||
MACHO_CURRENT_VERSION 0 # keep macOS linker from seeing oversized version number
|
||||
)
|
||||
|
||||
target_include_directories(whisper PUBLIC . ../include)
|
||||
|
|
|
|||
Loading…
Reference in New Issue