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 109 110 111
|
From: Christian Kastner <ckk@debian.org>
Date: Wed, 6 Aug 2025 22:07:46 +0200
Subject: Skip backend library linking code when GGML_BACKEND_DL=ON
Any available libraries are found and loaded dynamically at runtime.
Applied-Upstream: https://github.com/ggml-org/llama.cpp/pull/15094
---
cmake/ggml-config.cmake.in | 80 ++++++++++++++++++++++++----------------------
1 file changed, 41 insertions(+), 39 deletions(-)
diff --git a/cmake/ggml-config.cmake.in b/cmake/ggml-config.cmake.in
index 6ccba60..4960818 100644
--- a/cmake/ggml-config.cmake.in
+++ b/cmake/ggml-config.cmake.in
@@ -92,54 +92,56 @@ if (NOT GGML_SHARED_LIB)
endif()
set(_ggml_all_targets "")
-foreach(_ggml_backend ${GGML_AVAILABLE_BACKENDS})
- string(REPLACE "-" "_" _ggml_backend_pfx "${_ggml_backend}")
- string(TOUPPER "${_ggml_backend_pfx}" _ggml_backend_pfx)
-
- find_library(${_ggml_backend_pfx}_LIBRARY ${_ggml_backend}
- REQUIRED
- HINTS ${GGML_LIB_DIR} ${GGML_BACKEND_DIR}
- NO_CMAKE_FIND_ROOT_PATH)
-
- message(STATUS "Found ${${_ggml_backend_pfx}_LIBRARY}")
-
- add_library(ggml::${_ggml_backend} UNKNOWN IMPORTED)
- set_target_properties(ggml::${_ggml_backend}
- PROPERTIES
- INTERFACE_INCLUDE_DIRECTORIES "${GGML_INCLUDE_DIR}"
- IMPORTED_LINK_INTERFACE_LANGUAGES "CXX"
- IMPORTED_LOCATION "${${_ggml_backend_pfx}_LIBRARY}"
- INTERFACE_COMPILE_FEATURES c_std_90
- POSITION_INDEPENDENT_CODE ON)
-
- string(REGEX MATCH "^ggml-cpu" is_cpu_variant "${_ggml_backend}")
- if(is_cpu_variant)
- list(APPEND GGML_CPU_INTERFACE_LINK_LIBRARIES "ggml::ggml-base")
- set_target_properties(ggml::${_ggml_backend}
- PROPERTIES
- INTERFACE_LINK_LIBRARIES "${GGML_CPU_INTERFACE_LINK_LIBRARIES}")
+if (NOT GGML_BACKEND_DL)
+ foreach(_ggml_backend ${GGML_AVAILABLE_BACKENDS})
+ string(REPLACE "-" "_" _ggml_backend_pfx "${_ggml_backend}")
+ string(TOUPPER "${_ggml_backend_pfx}" _ggml_backend_pfx)
- if(GGML_CPU_INTERFACE_LINK_OPTIONS)
- set_target_properties(ggml::${_ggml_backend}
- PROPERTIES
- INTERFACE_LINK_OPTIONS "${GGML_CPU_INTERFACE_LINK_OPTIONS}")
- endif()
+ find_library(${_ggml_backend_pfx}_LIBRARY ${_ggml_backend}
+ REQUIRED
+ HINTS ${GGML_LIB_DIR} ${GGML_BACKEND_DIR}
+ NO_CMAKE_FIND_ROOT_PATH)
+
+ message(STATUS "Found ${${_ggml_backend_pfx}_LIBRARY}")
- else()
- list(APPEND ${_ggml_backend_pfx}_INTERFACE_LINK_LIBRARIES "ggml::ggml-base")
+ add_library(ggml::${_ggml_backend} UNKNOWN IMPORTED)
set_target_properties(ggml::${_ggml_backend}
PROPERTIES
- INTERFACE_LINK_LIBRARIES "${${_ggml_backend_pfx}_INTERFACE_LINK_LIBRARIES}")
+ INTERFACE_INCLUDE_DIRECTORIES "${GGML_INCLUDE_DIR}"
+ IMPORTED_LINK_INTERFACE_LANGUAGES "CXX"
+ IMPORTED_LOCATION "${${_ggml_backend_pfx}_LIBRARY}"
+ INTERFACE_COMPILE_FEATURES c_std_90
+ POSITION_INDEPENDENT_CODE ON)
+
+ string(REGEX MATCH "^ggml-cpu" is_cpu_variant "${_ggml_backend}")
+ if(is_cpu_variant)
+ list(APPEND GGML_CPU_INTERFACE_LINK_LIBRARIES "ggml::ggml-base")
+ set_target_properties(ggml::${_ggml_backend}
+ PROPERTIES
+ INTERFACE_LINK_LIBRARIES "${GGML_CPU_INTERFACE_LINK_LIBRARIES}")
+
+ if(GGML_CPU_INTERFACE_LINK_OPTIONS)
+ set_target_properties(ggml::${_ggml_backend}
+ PROPERTIES
+ INTERFACE_LINK_OPTIONS "${GGML_CPU_INTERFACE_LINK_OPTIONS}")
+ endif()
- if(${_ggml_backend_pfx}_INTERFACE_LINK_OPTIONS)
+ else()
+ list(APPEND ${_ggml_backend_pfx}_INTERFACE_LINK_LIBRARIES "ggml::ggml-base")
set_target_properties(ggml::${_ggml_backend}
PROPERTIES
- INTERFACE_LINK_OPTIONS "${${_ggml_backend_pfx}_INTERFACE_LINK_OPTIONS}")
+ INTERFACE_LINK_LIBRARIES "${${_ggml_backend_pfx}_INTERFACE_LINK_LIBRARIES}")
+
+ if(${_ggml_backend_pfx}_INTERFACE_LINK_OPTIONS)
+ set_target_properties(ggml::${_ggml_backend}
+ PROPERTIES
+ INTERFACE_LINK_OPTIONS "${${_ggml_backend_pfx}_INTERFACE_LINK_OPTIONS}")
+ endif()
endif()
- endif()
- list(APPEND _ggml_all_targets ggml::${_ggml_backend})
-endforeach()
+ list(APPEND _ggml_all_targets ggml::${_ggml_backend})
+ endforeach()
+endif()
list(APPEND GGML_INTERFACE_LINK_LIBRARIES ggml::ggml-base "${_ggml_all_targets}")
set_target_properties(ggml::ggml
|