char-fork/llama.cpp

git clone https://git.t4t.associates/char-fork/llama.cpp

Jonathan Clohessykleidiai: Rework KleidiAI Build System/Integration (#26077)d222767c7

char/aliceai-t5-moe
7.8 KiB216 linesraw
1@PACKAGE_INIT@
2
3@GGML_VARIABLES_EXPANDED@
4
5# Find all dependencies before creating any target.
6include(CMakeFindDependencyMacro)
7find_dependency(Threads)
8if (NOT GGML_SHARED_LIB)
9    set(GGML_BASE_INTERFACE_LINK_LIBRARIES "")
10    set(GGML_CPU_INTERFACE_LINK_LIBRARIES "")
11    set(GGML_CPU_INTERFACE_LINK_OPTIONS   "")
12
13    if (APPLE AND GGML_ACCELERATE)
14        find_library(ACCELERATE_FRAMEWORK Accelerate)
15        if(NOT ACCELERATE_FRAMEWORK)
16            set(${CMAKE_FIND_PACKAGE_NAME}_FOUND 0)
17            return()
18        endif()
19        list(APPEND GGML_CPU_INTERFACE_LINK_LIBRARIES ${ACCELERATE_FRAMEWORK})
20    endif()
21
22    if (GGML_OPENMP_ENABLED)
23        find_dependency(OpenMP)
24        set(GGML_OPENMP_INTERFACE_LINK_LIBRARIES "")
25        if (TARGET OpenMP::OpenMP_C)
26            list(APPEND GGML_OPENMP_INTERFACE_LINK_LIBRARIES OpenMP::OpenMP_C)
27        endif()
28        if (TARGET OpenMP::OpenMP_CXX)
29            list(APPEND GGML_OPENMP_INTERFACE_LINK_LIBRARIES OpenMP::OpenMP_CXX)
30        endif()
31        list(APPEND GGML_BASE_INTERFACE_LINK_LIBRARIES ${GGML_OPENMP_INTERFACE_LINK_LIBRARIES})
32        list(APPEND GGML_CPU_INTERFACE_LINK_LIBRARIES ${GGML_OPENMP_INTERFACE_LINK_LIBRARIES})
33    endif()
34
35    if (GGML_CPU_HBM)
36        find_library(memkind memkind)
37        if(NOT memkind)
38            set(${CMAKE_FIND_PACKAGE_NAME}_FOUND 0)
39            return()
40        endif()
41        list(APPEND GGML_CPU_INTERFACE_LINK_LIBRARIES memkind)
42    endif()
43
44    if (GGML_BLAS)
45        find_dependency(BLAS)
46        list(APPEND GGML_BLAS_INTERFACE_LINK_LIBRARIES ${BLAS_LIBRARIES})
47        list(APPEND GGML_BLAS_INTERFACE_LINK_OPTIONS   ${BLAS_LINKER_FLAGS})
48    endif()
49
50    if (GGML_CUDA)
51        set(GGML_CUDA_INTERFACE_LINK_LIBRARIES "")
52        find_dependency(CUDAToolkit)
53        if (GGML_STATIC)
54            list(APPEND GGML_CUDA_INTERFACE_LINK_LIBRARIES $<LINK_ONLY:CUDA::cudart_static>)
55            if (WIN32)
56                list(APPEND GGML_CUDA_INTERFACE_LINK_LIBRARIES $<LINK_ONLY:CUDA::cublas> $<LINK_ONLY:CUDA::cublasLt>)
57            else()
58                list(APPEND GGML_CUDA_INTERFACE_LINK_LIBRARIES $<LINK_ONLY:CUDA::cublas_static> $<LINK_ONLY:CUDA::cublasLt_static>)
59            endif()
60        endif()
61        if (NOT GGML_CUDA_NO_VMM)
62            list(APPEND GGML_CUDA_INTERFACE_LINK_LIBRARIES $<LINK_ONLY:CUDA::cuda_driver>)
63        endif()
64    endif()
65
66    if (GGML_METAL)
67        find_library(FOUNDATION_LIBRARY Foundation)
68        find_library(METAL_FRAMEWORK    Metal)
69        find_library(METALKIT_FRAMEWORK MetalKit)
70        if(NOT FOUNDATION_LIBRARY OR NOT METAL_FRAMEWORK OR NOT METALKIT_FRAMEWORK)
71            set(${CMAKE_FIND_PACKAGE_NAME}_FOUND 0)
72            return()
73        endif()
74        set(GGML_METAL_INTERFACE_LINK_LIBRARIES
75            ${FOUNDATION_LIBRARY} ${METAL_FRAMEWORK} ${METALKIT_FRAMEWORK})
76    endif()
77
78    if (GGML_OPENCL)
79        find_dependency(OpenCL)
80        set(GGML_OPENCL_INTERFACE_LINK_LIBRARIES $<LINK_ONLY:OpenCL::OpenCL>)
81    endif()
82
83    if (GGML_VULKAN)
84        find_dependency(Vulkan)
85        set(GGML_VULKAN_INTERFACE_LINK_LIBRARIES $<LINK_ONLY:Vulkan::Vulkan>)
86    endif()
87
88    if (GGML_HIP)
89        find_dependency(hip)
90        find_dependency(hipblas)
91        find_dependency(rocblas)
92        set(GGML_HIP_INTERFACE_LINK_LIBRARIES hip::host roc::rocblas roc::hipblas)
93    endif()
94
95    if (GGML_SYCL)
96        set(GGML_SYCL_INTERFACE_LINK_LIBRARIES "")
97        find_package(DNNL)
98        if (${DNNL_FOUND} AND GGML_SYCL_TARGET STREQUAL "INTEL")
99            list(APPEND GGML_SYCL_INTERFACE_LINK_LIBRARIES DNNL::dnnl)
100        endif()
101        if (WIN32)
102            find_dependency(IntelSYCL)
103            find_dependency(MKL)
104            list(APPEND GGML_SYCL_INTERFACE_LINK_LIBRARIES IntelSYCL::SYCL_CXX MKL::MKL MKL::MKL_SYCL)
105        endif()
106    endif()
107endif()
108
109set_and_check(GGML_INCLUDE_DIR "@PACKAGE_GGML_INCLUDE_INSTALL_DIR@")
110set_and_check(GGML_LIB_DIR "@PACKAGE_GGML_LIB_INSTALL_DIR@")
111#set_and_check(GGML_BIN_DIR "@PACKAGE_GGML_BIN_INSTALL_DIR@")
112
113if (NOT GGML_SHARED_LIB AND GGML_CPU_KLEIDIAI)
114    unset(KLEIDIAI_LIBRARY CACHE)
115    unset(KLEIDIAI_LIBRARY)
116    find_library(KLEIDIAI_LIBRARY kleidiai
117        REQUIRED
118        HINTS ${GGML_LIB_DIR}
119        NO_CMAKE_FIND_ROOT_PATH)
120    list(APPEND GGML_CPU_INTERFACE_LINK_LIBRARIES ${KLEIDIAI_LIBRARY})
121endif()
122
123if(NOT TARGET ggml::ggml)
124    find_package(Threads REQUIRED)
125
126    unset(GGML_LIBRARY CACHE)
127    find_library(GGML_LIBRARY ggml
128        REQUIRED
129        HINTS ${GGML_LIB_DIR}
130        NO_CMAKE_FIND_ROOT_PATH)
131
132    add_library(ggml::ggml UNKNOWN IMPORTED)
133    set_target_properties(ggml::ggml
134        PROPERTIES
135            IMPORTED_LOCATION "${GGML_LIBRARY}"
136            INTERFACE_INCLUDE_DIRECTORIES "${GGML_INCLUDE_DIR}")
137
138    unset(GGML_BASE_LIBRARY CACHE)
139    find_library(GGML_BASE_LIBRARY ggml-base
140        REQUIRED
141        HINTS ${GGML_LIB_DIR}
142        NO_CMAKE_FIND_ROOT_PATH)
143
144    add_library(ggml::ggml-base UNKNOWN IMPORTED)
145    set_target_properties(ggml::ggml-base
146        PROPERTIES
147            IMPORTED_LOCATION "${GGML_BASE_LIBRARY}"
148            INTERFACE_INCLUDE_DIRECTORIES "${GGML_INCLUDE_DIR}"
149            INTERFACE_LINK_LIBRARIES "${GGML_BASE_INTERFACE_LINK_LIBRARIES}")
150
151    set(_ggml_all_targets "")
152    if (NOT GGML_BACKEND_DL)
153        foreach(_ggml_backend ${GGML_AVAILABLE_BACKENDS})
154            string(REPLACE "-" "_" _ggml_backend_pfx "${_ggml_backend}")
155            string(TOUPPER "${_ggml_backend_pfx}" _ggml_backend_pfx)
156
157            unset(${_ggml_backend_pfx}_LIBRARY CACHE)
158            find_library(${_ggml_backend_pfx}_LIBRARY ${_ggml_backend}
159                REQUIRED
160                HINTS ${GGML_LIB_DIR}
161                NO_CMAKE_FIND_ROOT_PATH)
162
163            message(STATUS "Found ${${_ggml_backend_pfx}_LIBRARY}")
164
165            add_library(ggml::${_ggml_backend} UNKNOWN IMPORTED)
166            set_target_properties(ggml::${_ggml_backend}
167                PROPERTIES
168                    INTERFACE_INCLUDE_DIRECTORIES "${GGML_INCLUDE_DIR}"
169                    IMPORTED_LINK_INTERFACE_LANGUAGES "CXX"
170                    IMPORTED_LOCATION "${${_ggml_backend_pfx}_LIBRARY}"
171                    INTERFACE_COMPILE_FEATURES c_std_90
172                    POSITION_INDEPENDENT_CODE ON)
173
174            string(REGEX MATCH "^ggml-cpu" is_cpu_variant "${_ggml_backend}")
175            if(is_cpu_variant)
176                list(APPEND GGML_CPU_INTERFACE_LINK_LIBRARIES "ggml::ggml-base")
177                set_target_properties(ggml::${_ggml_backend}
178                PROPERTIES
179                    INTERFACE_LINK_LIBRARIES "${GGML_CPU_INTERFACE_LINK_LIBRARIES}")
180
181                if(GGML_CPU_INTERFACE_LINK_OPTIONS)
182                    set_target_properties(ggml::${_ggml_backend}
183                        PROPERTIES
184                            INTERFACE_LINK_OPTIONS "${GGML_CPU_INTERFACE_LINK_OPTIONS}")
185                endif()
186
187            else()
188                list(APPEND ${_ggml_backend_pfx}_INTERFACE_LINK_LIBRARIES "ggml::ggml-base")
189                set_target_properties(ggml::${_ggml_backend}
190                    PROPERTIES
191                        INTERFACE_LINK_LIBRARIES "${${_ggml_backend_pfx}_INTERFACE_LINK_LIBRARIES}")
192
193                if(${_ggml_backend_pfx}_INTERFACE_LINK_OPTIONS)
194                    set_target_properties(ggml::${_ggml_backend}
195                        PROPERTIES
196                            INTERFACE_LINK_OPTIONS "${${_ggml_backend_pfx}_INTERFACE_LINK_OPTIONS}")
197                endif()
198            endif()
199
200            list(APPEND _ggml_all_targets ggml::${_ggml_backend})
201        endforeach()
202    endif()
203
204    list(APPEND GGML_INTERFACE_LINK_LIBRARIES ggml::ggml-base "${_ggml_all_targets}")
205    set_target_properties(ggml::ggml
206        PROPERTIES
207            INTERFACE_LINK_LIBRARIES "${GGML_INTERFACE_LINK_LIBRARIES}")
208
209    add_library(ggml::all INTERFACE IMPORTED)
210    set_target_properties(ggml::all
211        PROPERTIES
212            INTERFACE_LINK_LIBRARIES "${_ggml_all_targets}")
213
214endif()
215
216check_required_components(ggml)