Skip to content

Commit 9a96389

Browse files
authored
ggml: Skip backend library linking code when GGML_BACKEND_DL=ON (#15094)
Any available libraries are found and loaded dynamically at runtime.
1 parent 1d72c84 commit 9a96389

File tree

1 file changed

+42
-40
lines changed

1 file changed

+42
-40
lines changed

ggml/cmake/ggml-config.cmake.in

Lines changed: 42 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ if(NOT TARGET ggml::ggml)
106106

107107
find_library(GGML_LIBRARY ggml
108108
REQUIRED
109-
HINTS ${GGML_LIB_DIR} ${GGML_BACKEND_DIR}
109+
HINTS ${GGML_LIB_DIR}
110110
NO_CMAKE_FIND_ROOT_PATH)
111111

112112
add_library(ggml::ggml UNKNOWN IMPORTED)
@@ -125,54 +125,56 @@ if(NOT TARGET ggml::ggml)
125125
IMPORTED_LOCATION "${GGML_BASE_LIBRARY}")
126126

127127
set(_ggml_all_targets "")
128-
foreach(_ggml_backend ${GGML_AVAILABLE_BACKENDS})
129-
string(REPLACE "-" "_" _ggml_backend_pfx "${_ggml_backend}")
130-
string(TOUPPER "${_ggml_backend_pfx}" _ggml_backend_pfx)
131-
132-
find_library(${_ggml_backend_pfx}_LIBRARY ${_ggml_backend}
133-
REQUIRED
134-
HINTS ${GGML_LIB_DIR}
135-
NO_CMAKE_FIND_ROOT_PATH)
136-
137-
message(STATUS "Found ${${_ggml_backend_pfx}_LIBRARY}")
138-
139-
add_library(ggml::${_ggml_backend} UNKNOWN IMPORTED)
140-
set_target_properties(ggml::${_ggml_backend}
141-
PROPERTIES
142-
INTERFACE_INCLUDE_DIRECTORIES "${GGML_INCLUDE_DIR}"
143-
IMPORTED_LINK_INTERFACE_LANGUAGES "CXX"
144-
IMPORTED_LOCATION "${${_ggml_backend_pfx}_LIBRARY}"
145-
INTERFACE_COMPILE_FEATURES c_std_90
146-
POSITION_INDEPENDENT_CODE ON)
147-
148-
string(REGEX MATCH "^ggml-cpu" is_cpu_variant "${_ggml_backend}")
149-
if(is_cpu_variant)
150-
list(APPEND GGML_CPU_INTERFACE_LINK_LIBRARIES "ggml::ggml-base")
151-
set_target_properties(ggml::${_ggml_backend}
152-
PROPERTIES
153-
INTERFACE_LINK_LIBRARIES "${GGML_CPU_INTERFACE_LINK_LIBRARIES}")
128+
if (NOT GGML_BACKEND_DL)
129+
foreach(_ggml_backend ${GGML_AVAILABLE_BACKENDS})
130+
string(REPLACE "-" "_" _ggml_backend_pfx "${_ggml_backend}")
131+
string(TOUPPER "${_ggml_backend_pfx}" _ggml_backend_pfx)
154132

155-
if(GGML_CPU_INTERFACE_LINK_OPTIONS)
156-
set_target_properties(ggml::${_ggml_backend}
157-
PROPERTIES
158-
INTERFACE_LINK_OPTIONS "${GGML_CPU_INTERFACE_LINK_OPTIONS}")
159-
endif()
133+
find_library(${_ggml_backend_pfx}_LIBRARY ${_ggml_backend}
134+
REQUIRED
135+
HINTS ${GGML_LIB_DIR}
136+
NO_CMAKE_FIND_ROOT_PATH)
137+
138+
message(STATUS "Found ${${_ggml_backend_pfx}_LIBRARY}")
160139

161-
else()
162-
list(APPEND ${_ggml_backend_pfx}_INTERFACE_LINK_LIBRARIES "ggml::ggml-base")
140+
add_library(ggml::${_ggml_backend} UNKNOWN IMPORTED)
163141
set_target_properties(ggml::${_ggml_backend}
164142
PROPERTIES
165-
INTERFACE_LINK_LIBRARIES "${${_ggml_backend_pfx}_INTERFACE_LINK_LIBRARIES}")
143+
INTERFACE_INCLUDE_DIRECTORIES "${GGML_INCLUDE_DIR}"
144+
IMPORTED_LINK_INTERFACE_LANGUAGES "CXX"
145+
IMPORTED_LOCATION "${${_ggml_backend_pfx}_LIBRARY}"
146+
INTERFACE_COMPILE_FEATURES c_std_90
147+
POSITION_INDEPENDENT_CODE ON)
148+
149+
string(REGEX MATCH "^ggml-cpu" is_cpu_variant "${_ggml_backend}")
150+
if(is_cpu_variant)
151+
list(APPEND GGML_CPU_INTERFACE_LINK_LIBRARIES "ggml::ggml-base")
152+
set_target_properties(ggml::${_ggml_backend}
153+
PROPERTIES
154+
INTERFACE_LINK_LIBRARIES "${GGML_CPU_INTERFACE_LINK_LIBRARIES}")
155+
156+
if(GGML_CPU_INTERFACE_LINK_OPTIONS)
157+
set_target_properties(ggml::${_ggml_backend}
158+
PROPERTIES
159+
INTERFACE_LINK_OPTIONS "${GGML_CPU_INTERFACE_LINK_OPTIONS}")
160+
endif()
166161

167-
if(${_ggml_backend_pfx}_INTERFACE_LINK_OPTIONS)
162+
else()
163+
list(APPEND ${_ggml_backend_pfx}_INTERFACE_LINK_LIBRARIES "ggml::ggml-base")
168164
set_target_properties(ggml::${_ggml_backend}
169165
PROPERTIES
170-
INTERFACE_LINK_OPTIONS "${${_ggml_backend_pfx}_INTERFACE_LINK_OPTIONS}")
166+
INTERFACE_LINK_LIBRARIES "${${_ggml_backend_pfx}_INTERFACE_LINK_LIBRARIES}")
167+
168+
if(${_ggml_backend_pfx}_INTERFACE_LINK_OPTIONS)
169+
set_target_properties(ggml::${_ggml_backend}
170+
PROPERTIES
171+
INTERFACE_LINK_OPTIONS "${${_ggml_backend_pfx}_INTERFACE_LINK_OPTIONS}")
172+
endif()
171173
endif()
172-
endif()
173174

174-
list(APPEND _ggml_all_targets ggml::${_ggml_backend})
175-
endforeach()
175+
list(APPEND _ggml_all_targets ggml::${_ggml_backend})
176+
endforeach()
177+
endif()
176178

177179
list(APPEND GGML_INTERFACE_LINK_LIBRARIES ggml::ggml-base "${_ggml_all_targets}")
178180
set_target_properties(ggml::ggml

0 commit comments

Comments
 (0)