|
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