1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108
|
From: Christian Kastner <ckk@kvr.at>
Date: Sun, 13 Jul 2025 21:14:33 +0200
Subject: Add soversion to libraries
We need to move the build number/install version code around because it
must come before add_subdirectory(src).
Forwarded: not-needed
---
CMakeLists.txt | 44 ++++++++++++++++++++++----------------------
src/CMakeLists.txt | 3 +++
2 files changed, 25 insertions(+), 22 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index ef1f269..1e6660b 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -215,6 +215,28 @@ option(GGML_BUILD_TESTS "ggml: build tests" ${GGML_STANDALONE})
option(GGML_INSTALL_TESTS "ggml: install tests" OFF)
option(GGML_BUILD_EXAMPLES "ggml: build examples" ${GGML_STANDALONE})
+# Generate version info based on git commit.
+
+if(NOT DEFINED GGML_BUILD_NUMBER)
+ find_program(GIT_EXE NAMES git git.exe REQUIRED NO_CMAKE_FIND_ROOT_PATH)
+ execute_process(COMMAND ${GIT_EXE} rev-list --count HEAD
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+ OUTPUT_VARIABLE GGML_BUILD_NUMBER
+ OUTPUT_STRIP_TRAILING_WHITESPACE
+ )
+
+ if(GGML_BUILD_NUMBER EQUAL 1)
+ message(WARNING "GGML build version fixed at 1 likely due to a shallow clone.")
+ endif()
+
+ execute_process(COMMAND ${GIT_EXE} rev-parse --short HEAD
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+ OUTPUT_VARIABLE GGML_BUILD_COMMIT
+ OUTPUT_STRIP_TRAILING_WHITESPACE
+ )
+endif()
+set(GGML_INSTALL_VERSION 0.0.${GGML_BUILD_NUMBER})
+
#
# dependencies
#
@@ -302,27 +324,6 @@ endif()
# Create CMake package
#
-# Generate version info based on git commit.
-
-if(NOT DEFINED GGML_BUILD_NUMBER)
- find_program(GIT_EXE NAMES git git.exe REQUIRED NO_CMAKE_FIND_ROOT_PATH)
- execute_process(COMMAND ${GIT_EXE} rev-list --count HEAD
- WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
- OUTPUT_VARIABLE GGML_BUILD_NUMBER
- OUTPUT_STRIP_TRAILING_WHITESPACE
- )
-
- if(GGML_BUILD_NUMBER EQUAL 1)
- message(WARNING "GGML build version fixed at 1 likely due to a shallow clone.")
- endif()
-
- execute_process(COMMAND ${GIT_EXE} rev-parse --short HEAD
- WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
- OUTPUT_VARIABLE GGML_BUILD_COMMIT
- OUTPUT_STRIP_TRAILING_WHITESPACE
- )
-endif()
-
# Capture variables prefixed with GGML_.
@@ -350,7 +351,6 @@ set(GGML_VARIABLES_EXPANDED ${variable_set_statements})
# Create the CMake package and set install location.
-set(GGML_INSTALL_VERSION 0.0.${GGML_BUILD_NUMBER})
# On Debian, we install the library and headers to a private directory "ggml"
set(GGML_INCLUDE_INSTALL_DIR ${CMAKE_INSTALL_INCLUDEDIR}/ggml CACHE PATH "Location of header files")
set(GGML_LIB_INSTALL_DIR ${CMAKE_INSTALL_LIBDIR}/ggml CACHE PATH "Location of library files")
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 867e808..b4f2fa6 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -226,11 +226,13 @@ function(ggml_add_backend_library backend)
add_library(${backend} MODULE ${ARGN})
# write the shared library to the output directory
set_target_properties(${backend} PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
+ set_target_properties(${backend} PROPERTIES VERSION ${GGML_INSTALL_VERSION} SOVERSION 0)
target_compile_definitions(${backend} PRIVATE GGML_BACKEND_DL)
add_dependencies(ggml ${backend})
install(TARGETS ${backend} LIBRARY DESTINATION ${CMAKE_INSTALL_BINDIR})
else()
add_library(${backend} ${ARGN})
+ set_target_properties(${backend} PROPERTIES VERSION ${GGML_INSTALL_VERSION} SOVERSION 0)
target_link_libraries(ggml PUBLIC ${backend})
# On Debian, we install the library and headers to a private directory "ggml"
install(TARGETS ${backend} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}/ggml/${GGML_HWCAPS_SUBDIR})
@@ -399,6 +401,7 @@ endif()
if (BUILD_SHARED_LIBS)
foreach (target ggml-base ggml)
set_target_properties(${target} PROPERTIES POSITION_INDEPENDENT_CODE ON)
+ set_target_properties(${target} PROPERTIES VERSION ${GGML_INSTALL_VERSION} SOVERSION 0)
target_compile_definitions(${target} PRIVATE GGML_BUILD)
target_compile_definitions(${target} PUBLIC GGML_SHARED)
endforeach()
|