File: Add-soversion-to-libraries.patch

package info (click to toggle)
ggml 0.0~git20250712.d62df60-5
  • links: PTS, VCS
  • area: main
  • in suites: forky
  • size: 15,396 kB
  • sloc: cpp: 88,695; ansic: 36,758; objc: 6,050; lisp: 5,741; python: 1,465; sh: 626; makefile: 59
file content (108 lines) | stat: -rw-r--r-- 4,386 bytes parent folder | download
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()