ggml-config.cmake.in 6.8 KB

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