Commit a60f9aead for llama.cpp
commit a60f9aead0047b104807930b75fbc0a649f57779
Author: miyan <1138989048@qq.com>
Date: Tue Sep 22 19:58:42 2026 +0800
cmake : allow repeated find_package calls for llama (#29228)
diff --git a/cmake/llama-config.cmake.in b/cmake/llama-config.cmake.in
index 6db73577a..6500203b1 100644
--- a/cmake/llama-config.cmake.in
+++ b/cmake/llama-config.cmake.in
@@ -17,14 +17,16 @@ find_library(llama_LIBRARY llama
NO_CMAKE_FIND_ROOT_PATH
)
-add_library(llama UNKNOWN IMPORTED)
-set_target_properties(llama
- PROPERTIES
- INTERFACE_INCLUDE_DIRECTORIES "${LLAMA_INCLUDE_DIR}"
- INTERFACE_LINK_LIBRARIES "ggml::ggml;ggml::ggml-base;"
- IMPORTED_LINK_INTERFACE_LANGUAGES "CXX"
- IMPORTED_LOCATION "${llama_LIBRARY}"
- INTERFACE_COMPILE_FEATURES c_std_90
- POSITION_INDEPENDENT_CODE ON)
+if(NOT TARGET llama)
+ add_library(llama UNKNOWN IMPORTED)
+ set_target_properties(llama
+ PROPERTIES
+ INTERFACE_INCLUDE_DIRECTORIES "${LLAMA_INCLUDE_DIR}"
+ INTERFACE_LINK_LIBRARIES "ggml::ggml;ggml::ggml-base;"
+ IMPORTED_LINK_INTERFACE_LANGUAGES "CXX"
+ IMPORTED_LOCATION "${llama_LIBRARY}"
+ INTERFACE_COMPILE_FEATURES c_std_90
+ POSITION_INDEPENDENT_CODE ON)
+endif()
check_required_components(Llama)
diff --git a/examples/simple-cmake-pkg/CMakeLists.txt b/examples/simple-cmake-pkg/CMakeLists.txt
index 128e38c8f..04fe1291c 100644
--- a/examples/simple-cmake-pkg/CMakeLists.txt
+++ b/examples/simple-cmake-pkg/CMakeLists.txt
@@ -5,6 +5,9 @@ set(TARGET llama-simple-cmake-pkg)
find_package(Llama REQUIRED)
+# Check that repeated package discovery does not redefine imported targets.
+find_package(Llama REQUIRED)
+
add_executable(${TARGET} ${CMAKE_CURRENT_LIST_DIR}/../simple/simple.cpp)
install(TARGETS ${TARGET} RUNTIME)
target_link_libraries(${TARGET} PRIVATE llama ggml::all ${CMAKE_THREAD_LIBS_INIT})