ggml-config.cmake.in 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. @GGML_VARIABLES_EXPANDED@
  2. @PACKAGE_INIT@
  3. set_and_check(GGML_INCLUDE_DIR "@PACKAGE_GGML_INCLUDE_INSTALL_DIR@")
  4. set_and_check(GGML_LIB_DIR "@PACKAGE_GGML_LIB_INSTALL_DIR@")
  5. set_and_check(GGML_BIN_DIR "@PACKAGE_GGML_BIN_INSTALL_DIR@")
  6. find_package(Threads REQUIRED)
  7. find_library(GGML_LIBRARY ggml
  8. REQUIRED
  9. HINTS ${GGML_LIB_DIR}
  10. NO_CMAKE_FIND_ROOT_PATH)
  11. add_library(ggml::ggml UNKNOWN IMPORTED)
  12. set_target_properties(ggml::ggml
  13. PROPERTIES
  14. IMPORTED_LOCATION "${GGML_LIBRARY}")
  15. find_library(GGML_BASE_LIBRARY ggml-base
  16. REQUIRED
  17. HINTS ${GGML_LIB_DIR}
  18. NO_CMAKE_FIND_ROOT_PATH)
  19. add_library(ggml::ggml-base UNKNOWN IMPORTED)
  20. set_target_properties(ggml::ggml-base
  21. PROPERTIES
  22. IMPORTED_LOCATION "${GGML_BASE_LIBRARY}")
  23. if (NOT GGML_SHARED_LIB)
  24. if (APPLE AND GGML_ACCELERATE)
  25. find_library(ACCELERATE_FRAMEWORK Accelerate REQUIRED)
  26. list(APPEND GGML_CPU_INTERFACE_LINK_LIBRARIES ${ACCELERATE_FRAMEWORK})
  27. endif()
  28. if (GGML_OPENMP)
  29. find_package(OpenMP REQUIRED)
  30. list(APPEND GGML_CPU_INTERFACE_LINK_LIBRARIES OpenMP::OpenMP_C OpenMP::OpenMP_CXX)
  31. endif()
  32. if (GGML_CPU_HBM)
  33. find_library(memkind memkind REQUIRED)
  34. list(APPEND GGML_CPU_INTERFACE_LINK_LIBRARIES memkind)
  35. endif()
  36. if (GGML_BLAS)
  37. find_package(BLAS REQUIRED)
  38. list(APPEND GGML_CPU_INTERFACE_LINK_LIBRARIES ${BLAS_LIBRARIES})
  39. list(APPEND GGML_CPU_INTERFACE_LINK_OPTIONS ${BLAS_LINKER_FLAGS})
  40. endif()
  41. if (GGML_CUDA)
  42. find_package(CUDAToolkit REQUIRED)
  43. endif()
  44. if (GGML_METAL)
  45. find_library(FOUNDATION_LIBRARY Foundation REQUIRED)
  46. find_library(METAL_FRAMEWORK Metal REQUIRED)
  47. find_library(METALKIT_FRAMEWORK MetalKit REQUIRED)
  48. list(APPEND GGML_METAL_INTERFACE_LINK_LIBRARIES
  49. ${FOUNDATION_LIBRARY} ${METAL_FRAMEWORK} ${METALKIT_FRAMEWORK})
  50. endif()
  51. if (GGML_VULKAN)
  52. find_package(Vulkan REQUIRED)
  53. list(APPEND GGML_VULKAN_INTERFACE_LINK_LIBRARIES Vulkan::Vulkan)
  54. endif()
  55. if (GGML_HIP)
  56. find_package(hip REQUIRED)
  57. find_package(hipblas REQUIRED)
  58. find_package(rocblas REQUIRED)
  59. list(APPEND GGML_HIP_INTERFACE_LINK_LIBRARIES hip::host roc::rocblas roc::hipblas)
  60. endif()
  61. if (GGML_SYCL)
  62. find_package(DNNL)
  63. if (${DNNL_FOUND} AND GGML_SYCL_TARGET STREQUAL "INTEL")
  64. list(APPEND GGML_SYCL_INTERFACE_LINK_LIBRARIES DNNL::dnnl)
  65. endif()
  66. if (WIN32)
  67. find_package(IntelSYCL REQUIRED)
  68. find_package(MKL REQUIRED)
  69. list(APPEND GGML_SYCL_INTERFACE_LINK_LIBRARIES IntelSYCL::SYCL_CXX MKL::MKL MKL::MKL_SYCL)
  70. endif()
  71. endif()
  72. endif()
  73. set(_ggml_all_targets "")
  74. foreach(_ggml_backend ${GGML_AVAILABLE_BACKENDS})
  75. string(REPLACE "-" "_" _ggml_backend_pfx "${_ggml_backend}")
  76. string(TOUPPER "${_ggml_backend_pfx}" _ggml_backend_pfx)
  77. find_library(${_ggml_backend_pfx}_LIBRARY ${_ggml_backend}
  78. REQUIRED
  79. HINTS ${GGML_LIB_DIR}
  80. NO_CMAKE_FIND_ROOT_PATH)
  81. message(STATUS "Found ${${_ggml_backend_pfx}_LIBRARY}")
  82. add_library(ggml::${_ggml_backend} UNKNOWN IMPORTED)
  83. set_target_properties(ggml::${_ggml_backend}
  84. PROPERTIES
  85. INTERFACE_INCLUDE_DIRECTORIES "${GGML_INCLUDE_DIR}"
  86. IMPORTED_LINK_INTERFACE_LANGUAGES "CXX"
  87. IMPORTED_LOCATION "${${_ggml_backend_pfx}_LIBRARY}"
  88. INTERFACE_COMPILE_FEATURES c_std_90
  89. POSITION_INDEPENDENT_CODE ON)
  90. string(REGEX MATCH "^ggml-cpu" is_cpu_variant "${_ggml_backend}")
  91. if(is_cpu_variant)
  92. list(APPEND GGML_CPU_INTERFACE_LINK_LIBRARIES "ggml::ggml" "ggml::ggml-base")
  93. set_target_properties(ggml::${_ggml_backend}
  94. PROPERTIES
  95. INTERFACE_LINK_LIBRARIES "${GGML_CPU_INTERFACE_LINK_LIBRARIES}")
  96. if(GGML_CPU_INTERFACE_LINK_OPTIONS)
  97. set_target_properties(ggml::${_ggml_backend}
  98. PROPERTIES
  99. INTERFACE_LINK_OPTIONS "${GGML_CPU_INTERFACE_LINK_OPTIONS}")
  100. endif()
  101. else()
  102. list(APPEND ${_ggml_backend_pfx}_INTERFACE_LINK_LIBRARIES "ggml::ggml" "ggml::ggml-base")
  103. set_target_properties(ggml::${_ggml_backend}
  104. PROPERTIES
  105. INTERFACE_LINK_LIBRARIES "${${_ggml_backend_pfx}_INTERFACE_LINK_LIBRARIES}")
  106. if(${_ggml_backend_pfx}_INTERFACE_LINK_OPTIONS)
  107. set_target_properties(ggml::${_ggml_backend}
  108. PROPERTIES
  109. INTERFACE_LINK_OPTIONS "${${_ggml_backend_pfx}_INTERFACE_LINK_OPTIONS}")
  110. endif()
  111. endif()
  112. list(APPEND _ggml_all_targets ggml::${_ggml_backend})
  113. endforeach()
  114. add_library(ggml::all INTERFACE IMPORTED)
  115. set_target_properties(ggml::all
  116. PROPERTIES
  117. INTERFACE_LINK_LIBRARIES "${_ggml_all_targets}")
  118. check_required_components(ggml)