summaryrefslogtreecommitdiff
path: root/llama.cpp/ggml/cmake
diff options
context:
space:
mode:
Diffstat (limited to 'llama.cpp/ggml/cmake')
-rw-r--r--llama.cpp/ggml/cmake/GitVars.cmake22
-rw-r--r--llama.cpp/ggml/cmake/common.cmake50
-rw-r--r--llama.cpp/ggml/cmake/ggml-config.cmake.in191
3 files changed, 263 insertions, 0 deletions
diff --git a/llama.cpp/ggml/cmake/GitVars.cmake b/llama.cpp/ggml/cmake/GitVars.cmake
new file mode 100644
index 0000000..1a4c24e
--- /dev/null
+++ b/llama.cpp/ggml/cmake/GitVars.cmake
@@ -0,0 +1,22 @@
+find_package(Git)
+
+# the commit's SHA1
+execute_process(COMMAND
+ "${GIT_EXECUTABLE}" describe --match=NeVeRmAtCh --always --abbrev=8
+ WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
+ OUTPUT_VARIABLE GIT_SHA1
+ ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
+
+# the date of the commit
+execute_process(COMMAND
+ "${GIT_EXECUTABLE}" log -1 --format=%ad --date=local
+ WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
+ OUTPUT_VARIABLE GIT_DATE
+ ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
+
+# the subject of the commit
+execute_process(COMMAND
+ "${GIT_EXECUTABLE}" log -1 --format=%s
+ WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
+ OUTPUT_VARIABLE GIT_COMMIT_SUBJECT
+ ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
diff --git a/llama.cpp/ggml/cmake/common.cmake b/llama.cpp/ggml/cmake/common.cmake
new file mode 100644
index 0000000..cb66388
--- /dev/null
+++ b/llama.cpp/ggml/cmake/common.cmake
@@ -0,0 +1,50 @@
+function(ggml_get_flags CCID CCVER)
+ set(C_FLAGS "")
+ set(CXX_FLAGS "")
+
+ if (CCID MATCHES "Clang")
+ set(C_FLAGS -Wunreachable-code-break -Wunreachable-code-return)
+ set(CXX_FLAGS -Wunreachable-code-break -Wunreachable-code-return -Wmissing-prototypes -Wextra-semi)
+
+ if (
+ (CCID STREQUAL "Clang" AND CCVER VERSION_GREATER_EQUAL 3.8.0) OR
+ (CCID STREQUAL "AppleClang" AND CCVER VERSION_GREATER_EQUAL 7.3.0)
+ )
+ list(APPEND C_FLAGS -Wdouble-promotion)
+ endif()
+ elseif (CCID STREQUAL "GNU")
+ set(C_FLAGS -Wdouble-promotion)
+ set(CXX_FLAGS -Wno-array-bounds)
+
+ if (CCVER VERSION_GREATER_EQUAL 8.1.0)
+ list(APPEND CXX_FLAGS -Wextra-semi)
+ endif()
+ endif()
+
+ set(GF_C_FLAGS ${C_FLAGS} PARENT_SCOPE)
+ set(GF_CXX_FLAGS ${CXX_FLAGS} PARENT_SCOPE)
+endfunction()
+
+function(ggml_get_system_arch)
+ if (CMAKE_OSX_ARCHITECTURES STREQUAL "arm64" OR
+ CMAKE_GENERATOR_PLATFORM_LWR STREQUAL "arm64" OR
+ (NOT CMAKE_OSX_ARCHITECTURES AND NOT CMAKE_GENERATOR_PLATFORM_LWR AND
+ CMAKE_SYSTEM_PROCESSOR MATCHES "^(aarch64|arm.*|ARM64)$"))
+ set(GGML_SYSTEM_ARCH "ARM" PARENT_SCOPE)
+ elseif (CMAKE_OSX_ARCHITECTURES STREQUAL "x86_64" OR
+ CMAKE_GENERATOR_PLATFORM_LWR MATCHES "^(x86_64|i686|amd64|x64|win32)$" OR
+ (NOT CMAKE_OSX_ARCHITECTURES AND NOT CMAKE_GENERATOR_PLATFORM_LWR AND
+ CMAKE_SYSTEM_PROCESSOR MATCHES "^(x86_64|i686|AMD64|amd64)$"))
+ set(GGML_SYSTEM_ARCH "x86" PARENT_SCOPE)
+ elseif (${CMAKE_SYSTEM_PROCESSOR} MATCHES "ppc|power")
+ set(GGML_SYSTEM_ARCH "PowerPC" PARENT_SCOPE)
+ elseif (${CMAKE_SYSTEM_PROCESSOR} MATCHES "loongarch64")
+ set(GGML_SYSTEM_ARCH "loongarch64" PARENT_SCOPE)
+ elseif (${CMAKE_SYSTEM_PROCESSOR} MATCHES "riscv64")
+ set(GGML_SYSTEM_ARCH "riscv64" PARENT_SCOPE)
+ elseif (${CMAKE_SYSTEM_PROCESSOR} MATCHES "s390x")
+ set(GGML_SYSTEM_ARCH "s390x" PARENT_SCOPE)
+ else()
+ set(GGML_SYSTEM_ARCH "UNKNOWN" PARENT_SCOPE)
+ endif()
+endfunction()
diff --git a/llama.cpp/ggml/cmake/ggml-config.cmake.in b/llama.cpp/ggml/cmake/ggml-config.cmake.in
new file mode 100644
index 0000000..91c9d5c
--- /dev/null
+++ b/llama.cpp/ggml/cmake/ggml-config.cmake.in
@@ -0,0 +1,191 @@
+@PACKAGE_INIT@
+
+@GGML_VARIABLES_EXPANDED@
+
+# Find all dependencies before creating any target.
+include(CMakeFindDependencyMacro)
+find_dependency(Threads)
+if (NOT GGML_SHARED_LIB)
+ set(GGML_CPU_INTERFACE_LINK_LIBRARIES "")
+ set(GGML_CPU_INTERFACE_LINK_OPTIONS "")
+
+ if (APPLE AND GGML_ACCELERATE)
+ find_library(ACCELERATE_FRAMEWORK Accelerate)
+ if(NOT ACCELERATE_FRAMEWORK)
+ set(${CMAKE_FIND_PACKAGE_NAME}_FOUND 0)
+ return()
+ endif()
+ list(APPEND GGML_CPU_INTERFACE_LINK_LIBRARIES ${ACCELERATE_FRAMEWORK})
+ endif()
+
+ if (GGML_OPENMP_ENABLED)
+ find_dependency(OpenMP)
+ list(APPEND GGML_CPU_INTERFACE_LINK_LIBRARIES OpenMP::OpenMP_C OpenMP::OpenMP_CXX)
+ endif()
+
+ if (GGML_CPU_HBM)
+ find_library(memkind memkind)
+ if(NOT memkind)
+ set(${CMAKE_FIND_PACKAGE_NAME}_FOUND 0)
+ return()
+ endif()
+ list(APPEND GGML_CPU_INTERFACE_LINK_LIBRARIES memkind)
+ endif()
+
+ if (GGML_BLAS)
+ find_dependency(BLAS)
+ list(APPEND GGML_BLAS_INTERFACE_LINK_LIBRARIES ${BLAS_LIBRARIES})
+ list(APPEND GGML_BLAS_INTERFACE_LINK_OPTIONS ${BLAS_LINKER_FLAGS})
+ endif()
+
+ if (GGML_CUDA)
+ set(GGML_CUDA_INTERFACE_LINK_LIBRARIES "")
+ find_dependency(CUDAToolkit)
+ if (GGML_STATIC)
+ list(APPEND GGML_CUDA_INTERFACE_LINK_LIBRARIES $<LINK_ONLY:CUDA::cudart_static>)
+ if (WIN32)
+ list(APPEND GGML_CUDA_INTERFACE_LINK_LIBRARIES $<LINK_ONLY:CUDA::cublas> $<LINK_ONLY:CUDA::cublasLt>)
+ else()
+ list(APPEND GGML_CUDA_INTERFACE_LINK_LIBRARIES $<LINK_ONLY:CUDA::cublas_static> $<LINK_ONLY:CUDA::cublasLt_static>)
+ endif()
+ endif()
+ if (NOT GGML_CUDA_NO_VMM)
+ list(APPEND GGML_CUDA_INTERFACE_LINK_LIBRARIES $<LINK_ONLY:CUDA::cuda_driver>)
+ endif()
+ endif()
+
+ if (GGML_METAL)
+ find_library(FOUNDATION_LIBRARY Foundation)
+ find_library(METAL_FRAMEWORK Metal)
+ find_library(METALKIT_FRAMEWORK MetalKit)
+ if(NOT FOUNDATION_LIBRARY OR NOT METAL_FRAMEWORK OR NOT METALKIT_FRAMEWORK)
+ set(${CMAKE_FIND_PACKAGE_NAME}_FOUND 0)
+ return()
+ endif()
+ set(GGML_METAL_INTERFACE_LINK_LIBRARIES
+ ${FOUNDATION_LIBRARY} ${METAL_FRAMEWORK} ${METALKIT_FRAMEWORK})
+ endif()
+
+ if (GGML_OPENCL)
+ find_dependency(OpenCL)
+ set(GGML_OPENCL_INTERFACE_LINK_LIBRARIES $<LINK_ONLY:OpenCL::OpenCL>)
+ endif()
+
+ if (GGML_VULKAN)
+ find_dependency(Vulkan)
+ set(GGML_VULKAN_INTERFACE_LINK_LIBRARIES $<LINK_ONLY:Vulkan::Vulkan>)
+ endif()
+
+ if (GGML_HIP)
+ find_dependency(hip)
+ find_dependency(hipblas)
+ find_dependency(rocblas)
+ set(GGML_HIP_INTERFACE_LINK_LIBRARIES hip::host roc::rocblas roc::hipblas)
+ endif()
+
+ if (GGML_SYCL)
+ set(GGML_SYCL_INTERFACE_LINK_LIBRARIES "")
+ find_package(DNNL)
+ if (${DNNL_FOUND} AND GGML_SYCL_TARGET STREQUAL "INTEL")
+ list(APPEND GGML_SYCL_INTERFACE_LINK_LIBRARIES DNNL::dnnl)
+ endif()
+ if (WIN32)
+ find_dependency(IntelSYCL)
+ find_dependency(MKL)
+ list(APPEND GGML_SYCL_INTERFACE_LINK_LIBRARIES IntelSYCL::SYCL_CXX MKL::MKL MKL::MKL_SYCL)
+ endif()
+ endif()
+endif()
+
+set_and_check(GGML_INCLUDE_DIR "@PACKAGE_GGML_INCLUDE_INSTALL_DIR@")
+set_and_check(GGML_LIB_DIR "@PACKAGE_GGML_LIB_INSTALL_DIR@")
+#set_and_check(GGML_BIN_DIR "@PACKAGE_GGML_BIN_INSTALL_DIR@")
+
+if(NOT TARGET ggml::ggml)
+ find_package(Threads REQUIRED)
+
+ find_library(GGML_LIBRARY ggml
+ REQUIRED
+ HINTS ${GGML_LIB_DIR}
+ NO_CMAKE_FIND_ROOT_PATH)
+
+ add_library(ggml::ggml UNKNOWN IMPORTED)
+ set_target_properties(ggml::ggml
+ PROPERTIES
+ IMPORTED_LOCATION "${GGML_LIBRARY}")
+
+ find_library(GGML_BASE_LIBRARY ggml-base
+ REQUIRED
+ HINTS ${GGML_LIB_DIR}
+ NO_CMAKE_FIND_ROOT_PATH)
+
+ add_library(ggml::ggml-base UNKNOWN IMPORTED)
+ set_target_properties(ggml::ggml-base
+ PROPERTIES
+ IMPORTED_LOCATION "${GGML_BASE_LIBRARY}")
+
+ set(_ggml_all_targets "")
+ if (NOT GGML_BACKEND_DL)
+ foreach(_ggml_backend ${GGML_AVAILABLE_BACKENDS})
+ string(REPLACE "-" "_" _ggml_backend_pfx "${_ggml_backend}")
+ string(TOUPPER "${_ggml_backend_pfx}" _ggml_backend_pfx)
+
+ find_library(${_ggml_backend_pfx}_LIBRARY ${_ggml_backend}
+ REQUIRED
+ HINTS ${GGML_LIB_DIR}
+ NO_CMAKE_FIND_ROOT_PATH)
+
+ message(STATUS "Found ${${_ggml_backend_pfx}_LIBRARY}")
+
+ add_library(ggml::${_ggml_backend} UNKNOWN IMPORTED)
+ set_target_properties(ggml::${_ggml_backend}
+ PROPERTIES
+ INTERFACE_INCLUDE_DIRECTORIES "${GGML_INCLUDE_DIR}"
+ IMPORTED_LINK_INTERFACE_LANGUAGES "CXX"
+ IMPORTED_LOCATION "${${_ggml_backend_pfx}_LIBRARY}"
+ INTERFACE_COMPILE_FEATURES c_std_90
+ POSITION_INDEPENDENT_CODE ON)
+
+ string(REGEX MATCH "^ggml-cpu" is_cpu_variant "${_ggml_backend}")
+ if(is_cpu_variant)
+ list(APPEND GGML_CPU_INTERFACE_LINK_LIBRARIES "ggml::ggml-base")
+ set_target_properties(ggml::${_ggml_backend}
+ PROPERTIES
+ INTERFACE_LINK_LIBRARIES "${GGML_CPU_INTERFACE_LINK_LIBRARIES}")
+
+ if(GGML_CPU_INTERFACE_LINK_OPTIONS)
+ set_target_properties(ggml::${_ggml_backend}
+ PROPERTIES
+ INTERFACE_LINK_OPTIONS "${GGML_CPU_INTERFACE_LINK_OPTIONS}")
+ endif()
+
+ else()
+ list(APPEND ${_ggml_backend_pfx}_INTERFACE_LINK_LIBRARIES "ggml::ggml-base")
+ set_target_properties(ggml::${_ggml_backend}
+ PROPERTIES
+ INTERFACE_LINK_LIBRARIES "${${_ggml_backend_pfx}_INTERFACE_LINK_LIBRARIES}")
+
+ if(${_ggml_backend_pfx}_INTERFACE_LINK_OPTIONS)
+ set_target_properties(ggml::${_ggml_backend}
+ PROPERTIES
+ INTERFACE_LINK_OPTIONS "${${_ggml_backend_pfx}_INTERFACE_LINK_OPTIONS}")
+ endif()
+ endif()
+
+ list(APPEND _ggml_all_targets ggml::${_ggml_backend})
+ endforeach()
+ endif()
+
+ list(APPEND GGML_INTERFACE_LINK_LIBRARIES ggml::ggml-base "${_ggml_all_targets}")
+ set_target_properties(ggml::ggml
+ PROPERTIES
+ INTERFACE_LINK_LIBRARIES "${GGML_INTERFACE_LINK_LIBRARIES}")
+
+ add_library(ggml::all INTERFACE IMPORTED)
+ set_target_properties(ggml::all
+ PROPERTIES
+ INTERFACE_LINK_LIBRARIES "${_ggml_all_targets}")
+
+endif()
+
+check_required_components(ggml)