|
| 1 | + |
| 2 | +@GGML_VARIABLES_EXPANDED@ |
| 3 | + |
| 4 | +@PACKAGE_INIT@ |
| 5 | + |
| 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}") |
| 31 | + |
| 32 | +if (NOT GGML_SHARED_LIB) |
| 33 | + if (APPLE AND GGML_ACCELERATE) |
| 34 | + find_library(ACCELERATE_FRAMEWORK Accelerate REQUIRED) |
| 35 | + list(APPEND GGML_CPU_INTERFACE_LINK_LIBRARIES ${ACCELERATE_FRAMEWORK}) |
| 36 | + endif() |
| 37 | + |
| 38 | + if (GGML_OPENMP) |
| 39 | + find_package(OpenMP REQUIRED) |
| 40 | + list(APPEND GGML_CPU_INTERFACE_LINK_LIBRARIES OpenMP::OpenMP_C OpenMP::OpenMP_CXX) |
| 41 | + endif() |
| 42 | + |
| 43 | + if (GGML_CPU_HBM) |
| 44 | + find_library(memkind memkind REQUIRED) |
| 45 | + list(APPEND GGML_CPU_INTERFACE_LINK_LIBRARIES memkind) |
| 46 | + endif() |
| 47 | + |
| 48 | + if (GGML_BLAS) |
| 49 | + find_package(BLAS REQUIRED) |
| 50 | + list(APPEND GGML_CPU_INTERFACE_LINK_LIBRARIES ${BLAS_LIBRARIES}) |
| 51 | + list(APPEND GGML_CPU_INTERFACE_LINK_OPTIONS ${BLAS_LINKER_FLAGS}) |
| 52 | + endif() |
| 53 | + |
| 54 | + if (GGML_CUDA) |
| 55 | + find_package(CUDAToolkit REQUIRED) |
| 56 | + endif() |
| 57 | + |
| 58 | + if (GGML_METAL) |
| 59 | + find_library(FOUNDATION_LIBRARY Foundation REQUIRED) |
| 60 | + find_library(METAL_FRAMEWORK Metal REQUIRED) |
| 61 | + find_library(METALKIT_FRAMEWORK MetalKit REQUIRED) |
| 62 | + |
| 63 | + list(APPEND GGML_METAL_INTERFACE_LINK_LIBRARIES |
| 64 | + ${FOUNDATION_LIBRARY} ${METAL_FRAMEWORK} ${METALKIT_FRAMEWORK}) |
| 65 | + endif() |
| 66 | + |
| 67 | + if (GGML_VULKAN) |
| 68 | + find_package(Vulkan REQUIRED) |
| 69 | + list(APPEND GGML_VULKAN_INTERFACE_LINK_LIBRARIES Vulkan::Vulkan) |
| 70 | + endif() |
| 71 | + |
| 72 | + 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) |
| 77 | + endif() |
| 78 | + |
| 79 | + if (GGML_SYCL) |
| 80 | + find_package(DNNL) |
| 81 | + if (${DNNL_FOUND} AND GGML_SYCL_TARGET STREQUAL "INTEL") |
| 82 | + list(APPEND GGML_SYCL_INTERFACE_LINK_LIBRARIES DNNL::dnnl) |
| 83 | + endif() |
| 84 | + if (WIN32) |
| 85 | + find_package(IntelSYCL REQUIRED) |
| 86 | + find_package(MKL REQUIRED) |
| 87 | + list(APPEND GGML_SYCL_INTERFACE_LINK_LIBRARIES IntelSYCL::SYCL_CXX MKL::MKL MKL::MKL_SYCL) |
| 88 | + endif() |
| 89 | + endif() |
| 90 | +endif() |
| 91 | + |
| 92 | +set(_ggml_all_targets "") |
| 93 | +foreach(_ggml_backend ${GGML_AVAILABLE_BACKENDS}) |
| 94 | + string(REPLACE "-" "_" _ggml_backend_pfx "${_ggml_backend}") |
| 95 | + string(TOUPPER "${_ggml_backend_pfx}" _ggml_backend_pfx) |
| 96 | + |
| 97 | + find_library(${_ggml_backend_pfx}_LIBRARY ${_ggml_backend} |
| 98 | + REQUIRED |
| 99 | + HINTS ${GGML_LIB_DIR} |
| 100 | + NO_CMAKE_FIND_ROOT_PATH) |
| 101 | + |
| 102 | + message(STATUS "Found ${${_ggml_backend_pfx}_LIBRARY}") |
| 103 | + |
| 104 | + add_library(ggml::${_ggml_backend} UNKNOWN IMPORTED) |
| 105 | + set_target_properties(ggml::${_ggml_backend} |
| 106 | + PROPERTIES |
| 107 | + INTERFACE_INCLUDE_DIRECTORIES "${GGML_INCLUDE_DIR}" |
| 108 | + IMPORTED_LINK_INTERFACE_LANGUAGES "CXX" |
| 109 | + IMPORTED_LOCATION "${${_ggml_backend_pfx}_LIBRARY}" |
| 110 | + INTERFACE_COMPILE_FEATURES c_std_90 |
| 111 | + POSITION_INDEPENDENT_CODE ON) |
| 112 | + |
| 113 | + string(REGEX MATCH "^ggml-cpu" is_cpu_variant "${_ggml_backend}") |
| 114 | + if(is_cpu_variant) |
| 115 | + list(APPEND GGML_CPU_INTERFACE_LINK_LIBRARIES "ggml::ggml" "ggml::ggml-base") |
| 116 | + set_target_properties(ggml::${_ggml_backend} |
| 117 | + PROPERTIES |
| 118 | + INTERFACE_LINK_LIBRARIES "${GGML_CPU_INTERFACE_LINK_LIBRARIES}") |
| 119 | + |
| 120 | + if(GGML_CPU_INTERFACE_LINK_OPTIONS) |
| 121 | + set_target_properties(ggml::${_ggml_backend} |
| 122 | + PROPERTIES |
| 123 | + INTERFACE_LINK_OPTIONS "${GGML_CPU_INTERFACE_LINK_OPTIONS}") |
| 124 | + endif() |
| 125 | + |
| 126 | + else() |
| 127 | + list(APPEND ${_ggml_backend_pfx}_INTERFACE_LINK_LIBRARIES "ggml::ggml" "ggml::ggml-base") |
| 128 | + set_target_properties(ggml::${_ggml_backend} |
| 129 | + PROPERTIES |
| 130 | + INTERFACE_LINK_LIBRARIES "${${_ggml_backend_pfx}_INTERFACE_LINK_LIBRARIES}") |
| 131 | + |
| 132 | + if(${_ggml_backend_pfx}_INTERFACE_LINK_OPTIONS) |
| 133 | + set_target_properties(ggml::${_ggml_backend} |
| 134 | + PROPERTIES |
| 135 | + INTERFACE_LINK_OPTIONS "${${_ggml_backend_pfx}_INTERFACE_LINK_OPTIONS}") |
| 136 | + endif() |
| 137 | + endif() |
| 138 | + |
| 139 | + list(APPEND _ggml_all_targets ggml::${_ggml_backend}) |
| 140 | +endforeach() |
| 141 | + |
| 142 | +add_library(ggml::all INTERFACE IMPORTED) |
| 143 | +set_target_properties(ggml::all |
| 144 | + PROPERTIES |
| 145 | + INTERFACE_LINK_LIBRARIES "${_ggml_all_targets}") |
| 146 | + |
| 147 | +check_required_components(ggml) |
0 commit comments