llama-config.cmake.in 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. set(LLAMA_VERSION @LLAMA_INSTALL_VERSION@)
  2. set(LLAMA_BUILD_COMMIT @LLAMA_BUILD_COMMIT@)
  3. set(LLAMA_BUILD_NUMBER @LLAMA_BUILD_NUMBER@)
  4. set(LLAMA_SHARED_LIB @BUILD_SHARED_LIBS@)
  5. set(GGML_STATIC @GGML_STATIC@)
  6. set(GGML_NATIVE @GGML_NATIVE@)
  7. set(GGML_LTO @GGML_LTO@)
  8. set(GGML_CCACHE @GGML_CCACHE@)
  9. set(GGML_AVX @GGML_AVX@)
  10. set(GGML_AVX2 @GGML_AVX2@)
  11. set(GGML_AVX512 @GGML_AVX512@)
  12. set(GGML_AVX512_VBMI @GGML_AVX512_VBMI@)
  13. set(GGML_AVX512_VNNI @GGML_AVX512_VNNI@)
  14. set(GGML_AVX512_BF16 @GGML_AVX512_BF16@)
  15. set(GGML_AMX_TILE @GGML_AMX_TILE@)
  16. set(GGML_AMX_INT8 @GGML_AMX_INT8@)
  17. set(GGML_AMX_BF16 @GGML_AMX_BF16@)
  18. set(GGML_FMA @GGML_FMA@)
  19. set(GGML_LASX @GGML_LASX@)
  20. set(GGML_LSX @GGML_LSX@)
  21. set(GGML_RVV @GGML_RVV@)
  22. set(GGML_SVE @GGML_SVE@)
  23. set(GGML_ACCELERATE @GGML_ACCELERATE@)
  24. set(GGML_OPENMP @GGML_OPENMP@)
  25. set(GGML_CPU_HBM @GGML_CPU_HBM@)
  26. set(GGML_BLAS_VENDOR @GGML_BLAS_VENDOR@)
  27. set(GGML_CUDA_FORCE_MMQ @GGML_CUDA_FORCE_MMQ@)
  28. set(GGML_CUDA_FORCE_CUBLAS @GGML_CUDA_FORCE_CUBLAS@)
  29. set(GGML_CUDA_F16 @GGML_CUDA_F16@)
  30. set(GGML_CUDA_PEER_MAX_BATCH_SIZE @GGML_CUDA_PEER_MAX_BATCH_SIZE@)
  31. set(GGML_CUDA_NO_PEER_COPY @GGML_CUDA_NO_PEER_COPY@)
  32. set(GGML_CUDA_NO_VMM @GGML_CUDA_NO_VMM@)
  33. set(GGML_CUDA_FA_ALL_QUANTS @GGML_CUDA_FA_ALL_QUANTS@)
  34. set(GGML_CUDA_GRAPHS @GGML_CUDA_GRAPHS@)
  35. set(GGML_HIP_UMA @GGML_HIP_UMA@)
  36. set(GGML_VULKAN_CHECK_RESULTS @GGML_VULKAN_CHECK_RESULTS@)
  37. set(GGML_VULKAN_DEBUG @GGML_VULKAN_DEBUG@)
  38. set(GGML_VULKAN_MEMORY_DEBUG @GGML_VULKAN_MEMORY_DEBUG@)
  39. set(GGML_VULKAN_SHADER_DEBUG_INFO @GGML_VULKAN_SHADER_DEBUG_INFO@)
  40. set(GGML_VULKAN_PERF @GGML_VULKAN_PERF@)
  41. set(GGML_VULKAN_VALIDATE @GGML_VULKAN_VALIDATE@)
  42. set(GGML_VULKAN_RUN_TESTS @GGML_VULKAN_RUN_TESTS@)
  43. set(GGML_METAL_USE_BF16 @GGML_METAL_USE_BF16@)
  44. set(GGML_METAL_NDEBUG @GGML_METAL_NDEBUG@)
  45. set(GGML_METAL_SHADER_DEBUG @GGML_METAL_SHADER_DEBUG@)
  46. set(GGML_METAL_EMBED_LIBRARY @GGML_METAL_EMBED_LIBRARY@)
  47. set(GGML_METAL_MACOSX_VERSION_MIN @GGML_METAL_MACOSX_VERSION_MIN@)
  48. set(GGML_METAL_STD @GGML_METAL_STD@)
  49. set(GGML_SYCL_F16 @GGML_SYCL_F16@)
  50. set(GGML_SYCL_TARGET @GGML_SYCL_TARGET@)
  51. set(GGML_SYCL_DEVICE_ARCH @GGML_SYCL_DEVICE_ARCH@)
  52. @PACKAGE_INIT@
  53. set_and_check(LLAMA_INCLUDE_DIR "@PACKAGE_LLAMA_INCLUDE_INSTALL_DIR@")
  54. set_and_check(LLAMA_LIB_DIR "@PACKAGE_LLAMA_LIB_INSTALL_DIR@")
  55. set_and_check(LLAMA_BIN_DIR "@PACKAGE_LLAMA_BIN_INSTALL_DIR@")
  56. find_package(Threads REQUIRED)
  57. set(_llama_transient_defines "@GGML_TRANSIENT_DEFINES@")
  58. set(_llama_link_deps "")
  59. set(_llama_link_opts "")
  60. foreach(_ggml_lib ggml ggml-base)
  61. string(REPLACE "-" "_" _ggml_lib_var "${_ggml_lib}_LIBRARY")
  62. find_library(${_ggml_lib_var} ${_ggml_lib}
  63. REQUIRED
  64. HINTS ${LLAMA_LIB_DIR}
  65. NO_CMAKE_FIND_ROOT_PATH
  66. )
  67. list(APPEND _llama_link_deps "${${_ggml_lib_var}}")
  68. message(STATUS "Found ${${_ggml_lib_var}}")
  69. endforeach()
  70. foreach(backend amx blas cann cpu cuda hip kompute metal musa rpc sycl vulkan)
  71. string(TOUPPER "GGML_${backend}" backend_id)
  72. set(_ggml_lib "ggml-${backend}")
  73. string(REPLACE "-" "_" _ggml_lib_var "${_ggml_lib}_LIBRARY")
  74. find_library(${_ggml_lib_var} ${_ggml_lib}
  75. HINTS ${LLAMA_LIB_DIR}
  76. NO_CMAKE_FIND_ROOT_PATH
  77. )
  78. if(${_ggml_lib_var})
  79. list(APPEND _llama_link_deps "${${_ggml_lib_var}}")
  80. set(${backend_id} ON)
  81. message(STATUS "Found backend ${${_ggml_lib_var}}")
  82. else()
  83. set(${backend_id} OFF)
  84. endif()
  85. endforeach()
  86. if (NOT LLAMA_SHARED_LIB)
  87. if (APPLE AND GGML_ACCELERATE)
  88. find_library(ACCELERATE_FRAMEWORK Accelerate REQUIRED)
  89. list(APPEND _llama_link_deps ${ACCELERATE_FRAMEWORK})
  90. endif()
  91. if (GGML_OPENMP)
  92. find_package(OpenMP REQUIRED)
  93. list(APPEND _llama_link_deps OpenMP::OpenMP_C OpenMP::OpenMP_CXX)
  94. endif()
  95. if (GGML_CPU_HBM)
  96. find_library(memkind memkind REQUIRED)
  97. list(APPEND _llama_link_deps memkind)
  98. endif()
  99. if (GGML_BLAS)
  100. find_package(BLAS REQUIRED)
  101. list(APPEND _llama_link_deps ${BLAS_LIBRARIES})
  102. list(APPEND _llama_link_opts ${BLAS_LINKER_FLAGS})
  103. endif()
  104. if (GGML_CUDA)
  105. find_package(CUDAToolkit REQUIRED)
  106. endif()
  107. if (GGML_METAL)
  108. find_library(FOUNDATION_LIBRARY Foundation REQUIRED)
  109. find_library(METAL_FRAMEWORK Metal REQUIRED)
  110. find_library(METALKIT_FRAMEWORK MetalKit REQUIRED)
  111. list(APPEND _llama_link_deps ${FOUNDATION_LIBRARY}
  112. ${METAL_FRAMEWORK} ${METALKIT_FRAMEWORK})
  113. endif()
  114. if (GGML_VULKAN)
  115. find_package(Vulkan REQUIRED)
  116. list(APPEND _llama_link_deps Vulkan::Vulkan)
  117. endif()
  118. if (GGML_HIP)
  119. find_package(hip REQUIRED)
  120. find_package(hipblas REQUIRED)
  121. find_package(rocblas REQUIRED)
  122. list(APPEND _llama_link_deps hip::host roc::rocblas roc::hipblas)
  123. endif()
  124. if (GGML_SYCL)
  125. find_package(DNNL)
  126. if (${DNNL_FOUND} AND GGML_SYCL_TARGET STREQUAL "INTEL")
  127. list(APPEND _llama_link_deps DNNL::dnnl)
  128. endif()
  129. if (WIN32)
  130. find_package(IntelSYCL REQUIRED)
  131. find_package(MKL REQUIRED)
  132. list(APPEND _llama_link_deps IntelSYCL::SYCL_CXX MKL::MKL MKL::MKL_SYCL)
  133. endif()
  134. endif()
  135. endif()
  136. find_library(llama_LIBRARY llama
  137. REQUIRED
  138. HINTS ${LLAMA_LIB_DIR}
  139. NO_CMAKE_FIND_ROOT_PATH
  140. )
  141. add_library(llama UNKNOWN IMPORTED)
  142. set_target_properties(llama
  143. PROPERTIES
  144. INTERFACE_INCLUDE_DIRECTORIES "${LLAMA_INCLUDE_DIR}"
  145. INTERFACE_LINK_LIBRARIES "${_llama_link_deps}"
  146. INTERFACE_LINK_OPTIONS "${_llama_link_opts}"
  147. INTERFACE_COMPILE_DEFINITIONS "${_llama_transient_defines}"
  148. IMPORTED_LINK_INTERFACE_LANGUAGES "CXX"
  149. IMPORTED_LOCATION "${llama_LIBRARY}"
  150. INTERFACE_COMPILE_FEATURES cxx_std_11
  151. POSITION_INDEPENDENT_CODE ON )
  152. check_required_components(Llama)