|
1 | | - |
2 | | -@GGML_VARIABLES_EXPANDED@ |
3 | | - |
4 | 1 | @PACKAGE_INIT@ |
5 | 2 |
|
6 | | -set_and_check(GGML_INCLUDE_DIR "@PACKAGE_GGML_INCLUDE_INSTALL_DIR@") |
7 | | -set_and_check(GGML_LIB_DIR "@PACKAGE_GGML_LIB_INSTALL_DIR@") |
8 | | -#set_and_check(GGML_BIN_DIR "@PACKAGE_GGML_BIN_INSTALL_DIR@") |
9 | | - |
10 | | -find_package(Threads REQUIRED) |
11 | | - |
12 | | -find_library(GGML_LIBRARY ggml |
13 | | - REQUIRED |
14 | | - HINTS ${GGML_LIB_DIR} |
15 | | - NO_CMAKE_FIND_ROOT_PATH) |
16 | | - |
17 | | -add_library(ggml::ggml UNKNOWN IMPORTED) |
18 | | -set_target_properties(ggml::ggml |
19 | | - PROPERTIES |
20 | | - IMPORTED_LOCATION "${GGML_LIBRARY}") |
21 | | - |
22 | | -find_library(GGML_BASE_LIBRARY ggml-base |
23 | | - REQUIRED |
24 | | - HINTS ${GGML_LIB_DIR} |
25 | | - NO_CMAKE_FIND_ROOT_PATH) |
26 | | - |
27 | | -add_library(ggml::ggml-base UNKNOWN IMPORTED) |
28 | | -set_target_properties(ggml::ggml-base |
29 | | - PROPERTIES |
30 | | - IMPORTED_LOCATION "${GGML_BASE_LIBRARY}") |
| 3 | +@GGML_VARIABLES_EXPANDED@ |
31 | 4 |
|
| 5 | +# Find all dependencies before creating any target. |
| 6 | +include(CMakeFindDependencyMacro) |
| 7 | +find_dependency(Threads) |
32 | 8 | if (NOT GGML_SHARED_LIB) |
| 9 | + set(GGML_CPU_INTERFACE_LINK_LIBRARIES "") |
| 10 | + set(GGML_CPU_INTERFACE_LINK_OPTIONS "") |
| 11 | + |
33 | 12 | if (APPLE AND GGML_ACCELERATE) |
34 | | - find_library(ACCELERATE_FRAMEWORK Accelerate REQUIRED) |
| 13 | + find_library(ACCELERATE_FRAMEWORK Accelerate) |
| 14 | + if(NOT ACCELERATE_FRAMEWORK) |
| 15 | + set(${CMAKE_FIND_PACKAGE_NAME}_FOUND 0) |
| 16 | + return() |
| 17 | + endif() |
35 | 18 | list(APPEND GGML_CPU_INTERFACE_LINK_LIBRARIES ${ACCELERATE_FRAMEWORK}) |
36 | 19 | endif() |
37 | 20 |
|
38 | | - if (GGML_OPENMP) |
39 | | - find_package(OpenMP REQUIRED) |
| 21 | + if (GGML_OPENMP_ENABLED) |
| 22 | + find_dependency(OpenMP) |
40 | 23 | list(APPEND GGML_CPU_INTERFACE_LINK_LIBRARIES OpenMP::OpenMP_C OpenMP::OpenMP_CXX) |
41 | 24 | endif() |
42 | 25 |
|
43 | 26 | if (GGML_CPU_HBM) |
44 | | - find_library(memkind memkind REQUIRED) |
| 27 | + find_library(memkind memkind) |
| 28 | + if(NOT memkind) |
| 29 | + set(${CMAKE_FIND_PACKAGE_NAME}_FOUND 0) |
| 30 | + return() |
| 31 | + endif() |
45 | 32 | list(APPEND GGML_CPU_INTERFACE_LINK_LIBRARIES memkind) |
46 | 33 | endif() |
47 | 34 |
|
48 | 35 | if (GGML_BLAS) |
49 | | - find_package(BLAS REQUIRED) |
| 36 | + find_dependency(BLAS) |
50 | 37 | list(APPEND GGML_CPU_INTERFACE_LINK_LIBRARIES ${BLAS_LIBRARIES}) |
51 | 38 | list(APPEND GGML_CPU_INTERFACE_LINK_OPTIONS ${BLAS_LINKER_FLAGS}) |
52 | 39 | endif() |
53 | 40 |
|
54 | 41 | if (GGML_CUDA) |
55 | | - find_package(CUDAToolkit REQUIRED) |
| 42 | + set(GGML_CUDA_INTERFACE_LINK_LIBRARIES "") |
| 43 | + find_dependency(CUDAToolkit) |
| 44 | + if (GGML_STATIC) |
| 45 | + list(APPEND GGML_CUDA_INTERFACE_LINK_LIBRARIES $<LINK_ONLY:CUDA::cudart_static>) |
| 46 | + if (WIN32) |
| 47 | + list(APPEND GGML_CUDA_INTERFACE_LINK_LIBRARIES $<LINK_ONLY:CUDA::cublas> $<LINK_ONLY:CUDA::cublasLt>) |
| 48 | + else() |
| 49 | + list(APPEND GGML_CUDA_INTERFACE_LINK_LIBRARIES $<LINK_ONLY:CUDA::cublas_static> $<LINK_ONLY:CUDA::cublasLt_static>) |
| 50 | + endif() |
| 51 | + endif() |
| 52 | + if (NOT GGML_CUDA_NO_VMM) |
| 53 | + list(APPEND GGML_CUDA_INTERFACE_LINK_LIBRARIES $<LINK_ONLY:CUDA::cuda_driver>) |
| 54 | + endif() |
56 | 55 | endif() |
57 | 56 |
|
58 | 57 | if (GGML_METAL) |
59 | | - find_library(FOUNDATION_LIBRARY Foundation REQUIRED) |
60 | | - find_library(METAL_FRAMEWORK Metal REQUIRED) |
61 | | - find_library(METALKIT_FRAMEWORK MetalKit REQUIRED) |
| 58 | + find_library(FOUNDATION_LIBRARY Foundation) |
| 59 | + find_library(METAL_FRAMEWORK Metal) |
| 60 | + find_library(METALKIT_FRAMEWORK MetalKit) |
| 61 | + if(NOT FOUNDATION_LIBRARY OR NOT METAL_FRAMEWORK OR NOT METALKIT_FRAMEWORK) |
| 62 | + set(${CMAKE_FIND_PACKAGE_NAME}_FOUND 0) |
| 63 | + return() |
| 64 | + endif() |
| 65 | + set(GGML_METAL_INTERFACE_LINK_LIBRARIES |
| 66 | + ${FOUNDATION_LIBRARY} ${METAL_FRAMEWORK} ${METALKIT_FRAMEWORK}) |
| 67 | + endif() |
62 | 68 |
|
63 | | - list(APPEND GGML_METAL_INTERFACE_LINK_LIBRARIES |
64 | | - ${FOUNDATION_LIBRARY} ${METAL_FRAMEWORK} ${METALKIT_FRAMEWORK}) |
| 69 | + if (GGML_OPENCL) |
| 70 | + find_dependency(OpenCL) |
| 71 | + set(GGML_OPENCL_INTERFACE_LINK_LIBRARIES $<LINK_ONLY:OpenCL::OpenCL>) |
65 | 72 | endif() |
66 | 73 |
|
67 | 74 | if (GGML_VULKAN) |
68 | | - find_package(Vulkan REQUIRED) |
69 | | - list(APPEND GGML_VULKAN_INTERFACE_LINK_LIBRARIES Vulkan::Vulkan) |
| 75 | + find_dependency(Vulkan) |
| 76 | + set(GGML_VULKAN_INTERFACE_LINK_LIBRARIES $<LINK_ONLY:Vulkan::Vulkan>) |
70 | 77 | endif() |
71 | 78 |
|
72 | 79 | if (GGML_HIP) |
73 | | - find_package(hip REQUIRED) |
74 | | - find_package(hipblas REQUIRED) |
75 | | - find_package(rocblas REQUIRED) |
76 | | - list(APPEND GGML_HIP_INTERFACE_LINK_LIBRARIES hip::host roc::rocblas roc::hipblas) |
| 80 | + find_dependency(hip) |
| 81 | + find_dependency(hipblas) |
| 82 | + find_dependency(rocblas) |
| 83 | + set(GGML_HIP_INTERFACE_LINK_LIBRARIES hip::host roc::rocblas roc::hipblas) |
77 | 84 | endif() |
78 | 85 |
|
79 | 86 | if (GGML_SYCL) |
| 87 | + set(GGML_SYCL_INTERFACE_LINK_LIBRARIES "") |
80 | 88 | find_package(DNNL) |
81 | 89 | if (${DNNL_FOUND} AND GGML_SYCL_TARGET STREQUAL "INTEL") |
82 | 90 | list(APPEND GGML_SYCL_INTERFACE_LINK_LIBRARIES DNNL::dnnl) |
83 | 91 | endif() |
84 | 92 | if (WIN32) |
85 | | - find_package(IntelSYCL REQUIRED) |
86 | | - find_package(MKL REQUIRED) |
| 93 | + find_dependency(IntelSYCL) |
| 94 | + find_dependency(MKL) |
87 | 95 | list(APPEND GGML_SYCL_INTERFACE_LINK_LIBRARIES IntelSYCL::SYCL_CXX MKL::MKL MKL::MKL_SYCL) |
88 | 96 | endif() |
89 | 97 | endif() |
90 | 98 | endif() |
91 | 99 |
|
| 100 | +set_and_check(GGML_INCLUDE_DIR "@PACKAGE_GGML_INCLUDE_INSTALL_DIR@") |
| 101 | +set_and_check(GGML_LIB_DIR "@PACKAGE_GGML_LIB_INSTALL_DIR@") |
| 102 | +#set_and_check(GGML_BIN_DIR "@PACKAGE_GGML_BIN_INSTALL_DIR@") |
| 103 | + |
| 104 | +if(NOT TARGET ggml::ggml) |
| 105 | + |
| 106 | +find_package(Threads REQUIRED) |
| 107 | + |
| 108 | +find_library(GGML_LIBRARY ggml |
| 109 | + REQUIRED |
| 110 | + HINTS ${GGML_LIB_DIR} |
| 111 | + NO_CMAKE_FIND_ROOT_PATH) |
| 112 | + |
| 113 | +add_library(ggml::ggml UNKNOWN IMPORTED) |
| 114 | +set_target_properties(ggml::ggml |
| 115 | + PROPERTIES |
| 116 | + IMPORTED_LOCATION "${GGML_LIBRARY}") |
| 117 | + |
| 118 | +find_library(GGML_BASE_LIBRARY ggml-base |
| 119 | + REQUIRED |
| 120 | + HINTS ${GGML_LIB_DIR} |
| 121 | + NO_CMAKE_FIND_ROOT_PATH) |
| 122 | + |
| 123 | +add_library(ggml::ggml-base UNKNOWN IMPORTED) |
| 124 | +set_target_properties(ggml::ggml-base |
| 125 | + PROPERTIES |
| 126 | + IMPORTED_LOCATION "${GGML_BASE_LIBRARY}") |
| 127 | + |
92 | 128 | set(_ggml_all_targets "") |
93 | 129 | foreach(_ggml_backend ${GGML_AVAILABLE_BACKENDS}) |
94 | 130 | string(REPLACE "-" "_" _ggml_backend_pfx "${_ggml_backend}") |
@@ -149,4 +185,6 @@ set_target_properties(ggml::all |
149 | 185 | PROPERTIES |
150 | 186 | INTERFACE_LINK_LIBRARIES "${_ggml_all_targets}") |
151 | 187 |
|
| 188 | +endif() # TARGET ggml::ggml |
| 189 | + |
152 | 190 | check_required_components(ggml) |
0 commit comments