Skip to content

Commit f95caa7

Browse files
authored
cmake: add link dependencies to cmake find pkg (ggml-org#10433)
* cmake pkg: find accelerate, openmp, memkind libs * cmake pkg: find BLAS libs * try BLAS_LIBRARIES instead * Add BLAS link opts * Add more link deps. and set GGML_ vars
1 parent fab5d30 commit f95caa7

File tree

1 file changed

+104
-32
lines changed

1 file changed

+104
-32
lines changed

cmake/llama-config.cmake.in

Lines changed: 104 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,60 @@ set(LLAMA_BUILD_COMMIT @LLAMA_BUILD_COMMIT@)
33
set(LLAMA_BUILD_NUMBER @LLAMA_BUILD_NUMBER@)
44
set(LLAMA_SHARED_LIB @BUILD_SHARED_LIBS@)
55

6+
set(GGML_STATIC @GGML_STATIC@)
7+
set(GGML_NATIVE @GGML_NATIVE@)
8+
set(GGML_LTO @GGML_LTO@)
9+
set(GGML_CCACHE @GGML_CCACHE@)
10+
set(GGML_AVX @GGML_AVX@)
11+
set(GGML_AVX2 @GGML_AVX2@)
12+
set(GGML_AVX512 @GGML_AVX512@)
13+
set(GGML_AVX512_VBMI @GGML_AVX512_VBMI@)
14+
set(GGML_AVX512_VNNI @GGML_AVX512_VNNI@)
15+
set(GGML_AVX512_BF16 @GGML_AVX512_BF16@)
16+
set(GGML_AMX_TILE @GGML_AMX_TILE@)
17+
set(GGML_AMX_INT8 @GGML_AMX_INT8@)
18+
set(GGML_AMX_BF16 @GGML_AMX_BF16@)
19+
set(GGML_FMA @GGML_FMA@)
20+
set(GGML_LASX @GGML_LASX@)
21+
set(GGML_LSX @GGML_LSX@)
22+
set(GGML_RVV @GGML_RVV@)
23+
set(GGML_SVE @GGML_SVE@)
24+
625
set(GGML_ACCELERATE @GGML_ACCELERATE@)
26+
set(GGML_OPENMP @GGML_OPENMP@)
27+
set(GGML_CPU_HBM @GGML_CPU_HBM@)
28+
set(GGML_BLAS_VENDOR @GGML_BLAS_VENDOR@)
29+
30+
set(GGML_CUDA_FORCE_MMQ @GGML_CUDA_FORCE_MMQ@)
31+
set(GGML_CUDA_FORCE_CUBLAS @GGML_CUDA_FORCE_CUBLAS@)
32+
set(GGML_CUDA_F16 @GGML_CUDA_F16@)
33+
set(GGML_CUDA_PEER_MAX_BATCH_SIZE @GGML_CUDA_PEER_MAX_BATCH_SIZE@)
34+
set(GGML_CUDA_NO_PEER_COPY @GGML_CUDA_NO_PEER_COPY@)
35+
set(GGML_CUDA_NO_VMM @GGML_CUDA_NO_VMM@)
36+
set(GGML_CUDA_FA_ALL_QUANTS @GGML_CUDA_FA_ALL_QUANTS@)
37+
set(GGML_CUDA_GRAPHS @GGML_CUDA_GRAPHS@)
38+
39+
set(GGML_HIP_UMA @GGML_HIP_UMA@)
40+
741
set(GGML_VULKAN_CHECK_RESULTS @GGML_VULKAN_CHECK_RESULTS@)
8-
set(GGML_VULKAN_DEBUG @GGML_VULKAN_DEBUG@)
9-
set(GGML_VULKAN_MEMORY_DEBUG @GGML_VULKAN_MEMORY_DEBUG@)
10-
set(GGML_VULKAN_VALIDATE @GGML_VULKAN_VALIDATE@)
11-
set(GGML_OPENMP @GGML_OPENMP@)
42+
set(GGML_VULKAN_DEBUG @GGML_VULKAN_DEBUG@)
43+
set(GGML_VULKAN_MEMORY_DEBUG @GGML_VULKAN_MEMORY_DEBUG@)
44+
set(GGML_VULKAN_SHADER_DEBUG_INFO @GGML_VULKAN_SHADER_DEBUG_INFO@)
45+
set(GGML_VULKAN_PERF @GGML_VULKAN_PERF@)
46+
set(GGML_VULKAN_VALIDATE @GGML_VULKAN_VALIDATE@)
47+
set(GGML_VULKAN_RUN_TESTS @GGML_VULKAN_RUN_TESTS@)
48+
49+
set(GGML_METAL_USE_BF16 @GGML_METAL_USE_BF16@)
50+
set(GGML_METAL_NDEBUG @GGML_METAL_NDEBUG@)
51+
set(GGML_METAL_SHADER_DEBUG @GGML_METAL_SHADER_DEBUG@)
52+
set(GGML_METAL_EMBED_LIBRARY @GGML_METAL_EMBED_LIBRARY@)
53+
set(GGML_METAL_MACOSX_VERSION_MIN @GGML_METAL_MACOSX_VERSION_MIN@)
54+
set(GGML_METAL_STD @GGML_METAL_STD@)
55+
56+
set(GGML_SYCL_F16 @GGML_SYCL_F16@)
57+
set(GGML_SYCL_TARGET @GGML_SYCL_TARGET@)
58+
set(GGML_SYCL_DEVICE_ARCH @GGML_SYCL_DEVICE_ARCH@)
59+
1260

1361
@PACKAGE_INIT@
1462

@@ -20,6 +68,7 @@ find_package(Threads REQUIRED)
2068

2169
set(_llama_transient_defines "@GGML_TRANSIENT_DEFINES@")
2270
set(_llama_link_deps "")
71+
set(_llama_link_opts "")
2372
foreach(_ggml_lib ggml ggml-base)
2473
string(REPLACE "-" "_" _ggml_lib_var "${_ggml_lib}_LIBRARY")
2574
find_library(${_ggml_lib_var} ${_ggml_lib}
@@ -49,41 +98,63 @@ foreach(backend amx blas cann cpu cuda hip kompute metal musa rpc sycl vulkan)
4998
endif()
5099
endforeach()
51100

52-
if (APPLE AND GGML_ACCELERATE)
53-
find_library(ACCELERATE_FRAMEWORK Accelerate REQUIRED)
54-
endif()
101+
if (NOT LLAMA_SHARED_LIB)
102+
if (APPLE AND GGML_ACCELERATE)
103+
find_library(ACCELERATE_FRAMEWORK Accelerate REQUIRED)
104+
list(APPEND _llama_link_deps ${ACCELERATE_FRAMEWORK})
105+
endif()
55106

56-
if (GGML_BLAS)
57-
find_package(BLAS REQUIRED)
58-
endif()
107+
if (GGML_OPENMP)
108+
find_package(OpenMP REQUIRED)
109+
list(APPEND _llama_link_deps OpenMP::OpenMP_C OpenMP::OpenMP_CXX)
110+
endif()
59111

60-
if (GGML_CUDA)
61-
find_package(CUDAToolkit REQUIRED)
62-
endif()
112+
if (GGML_CPU_HBM)
113+
find_library(memkind memkind REQUIRED)
114+
list(APPEND _llama_link_deps memkind)
115+
endif()
63116

64-
if (GGML_METAL)
65-
find_library(FOUNDATION_LIBRARY Foundation REQUIRED)
66-
find_library(METAL_FRAMEWORK Metal REQUIRED)
67-
find_library(METALKIT_FRAMEWORK MetalKit REQUIRED)
68-
endif()
117+
if (GGML_BLAS)
118+
find_package(BLAS REQUIRED)
119+
list(APPEND _llama_link_deps ${BLAS_LIBRARIES})
120+
list(APPEND _llama_link_opts ${BLAS_LINKER_FLAGS})
121+
endif()
69122

70-
if (GGML_VULKAN)
71-
find_package(Vulkan REQUIRED)
72-
endif()
123+
if (GGML_CUDA)
124+
find_package(CUDAToolkit REQUIRED)
125+
endif()
73126

74-
if (GGML_HIP)
75-
find_package(hip REQUIRED)
76-
find_package(hipblas REQUIRED)
77-
find_package(rocblas REQUIRED)
78-
endif()
127+
if (GGML_METAL)
128+
find_library(FOUNDATION_LIBRARY Foundation REQUIRED)
129+
find_library(METAL_FRAMEWORK Metal REQUIRED)
130+
find_library(METALKIT_FRAMEWORK MetalKit REQUIRED)
131+
list(APPEND _llama_link_deps ${FOUNDATION_LIBRARY}
132+
${METAL_FRAMEWORK} ${METALKIT_FRAMEWORK})
133+
endif()
79134

80-
if (GGML_SYCL)
81-
find_package(IntelSYCL REQUIRED)
82-
find_package(MKL REQUIRED)
83-
endif()
135+
if (GGML_VULKAN)
136+
find_package(Vulkan REQUIRED)
137+
list(APPEND _llama_link_deps Vulkan::Vulkan)
138+
endif()
84139

85-
if (GGML_OPENMP)
86-
find_package(OpenMP REQUIRED)
140+
if (GGML_HIP)
141+
find_package(hip REQUIRED)
142+
find_package(hipblas REQUIRED)
143+
find_package(rocblas REQUIRED)
144+
list(APPEND _llama_link_deps hip::host roc::rocblas roc::hipblas)
145+
endif()
146+
147+
if (GGML_SYCL)
148+
find_package(DNNL)
149+
if (${DNNL_FOUND} AND GGML_SYCL_TARGET STREQUAL "INTEL")
150+
list(APPEND _llama_link_deps DNNL::dnnl)
151+
endif()
152+
if (WIN32)
153+
find_package(IntelSYCL REQUIRED)
154+
find_package(MKL REQUIRED)
155+
list(APPEND _llama_link_deps IntelSYCL::SYCL_CXX MKL::MKL MKL::MKL_SYCL)
156+
endif()
157+
endif()
87158
endif()
88159

89160
find_library(llama_LIBRARY llama
@@ -97,6 +168,7 @@ set_target_properties(llama
97168
PROPERTIES
98169
INTERFACE_INCLUDE_DIRECTORIES "${LLAMA_INCLUDE_DIR}"
99170
INTERFACE_LINK_LIBRARIES "${_llama_link_deps}"
171+
INTERFACE_LINK_OPTIONS "${_llama_link_opts}"
100172
INTERFACE_COMPILE_DEFINITIONS "${_llama_transient_defines}"
101173
IMPORTED_LINK_INTERFACE_LANGUAGES "CXX"
102174
IMPORTED_LOCATION "${llama_LIBRARY}"

0 commit comments

Comments
 (0)