Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
OpenDAS
ollama
Commits
dc264be6
"git@developer.sourcefind.cn:OpenDAS/mmcv.git" did not exist on "4e101e0b757b2c3006b321cb7c7b77c67b08b9d9"
Unverified
Commit
dc264be6
authored
Apr 16, 2025
by
Jeffrey Morgan
Committed by
GitHub
Apr 16, 2025
Browse files
ml: add missing cmake property and remove additional CMakeLists.txt (#10310)
parent
fbe70396
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
2 additions
and
539 deletions
+2
-539
CMakeLists.txt
CMakeLists.txt
+2
-1
llama/patches/0021-remove-ggml-git-build-info.patch
llama/patches/0021-remove-ggml-git-build-info.patch
+0
-45
ml/backend/ggml/ggml/.rsync-filter
ml/backend/ggml/ggml/.rsync-filter
+0
-4
ml/backend/ggml/ggml/CMakeLists.txt
ml/backend/ggml/ggml/CMakeLists.txt
+0
-337
ml/backend/ggml/ggml/cmake/ggml-config.cmake.in
ml/backend/ggml/ggml/cmake/ggml-config.cmake.in
+0
-152
No files found.
CMakeLists.txt
View file @
dc264be6
...
...
@@ -24,6 +24,7 @@ set(GGML_LLAMAFILE ON)
set
(
GGML_CUDA_PEER_MAX_BATCH_SIZE 128
)
set
(
GGML_CUDA_GRAPHS ON
)
set
(
GGML_CUDA_FA ON
)
set
(
GGML_CUDA_COMPRESSION_MODE none
)
if
((
CMAKE_OSX_ARCHITECTURES AND NOT CMAKE_OSX_ARCHITECTURES MATCHES
"arm64"
)
OR
(
NOT CMAKE_OSX_ARCHITECTURES AND NOT CMAKE_SYSTEM_PROCESSOR MATCHES
"arm|aarch64|ARM64|ARMv[0-9]+"
))
...
...
@@ -51,7 +52,7 @@ include_directories(${CMAKE_CURRENT_SOURCE_DIR}/ml/backend/ggml/ggml/src/ggml-cp
include_directories
(
${
CMAKE_CURRENT_SOURCE_DIR
}
/ml/backend/ggml/ggml/src/ggml-cpu/amx
)
set
(
GGML_CPU ON
)
add_subdirectory
(
${
CMAKE_CURRENT_SOURCE_DIR
}
/ml/backend/ggml/ggml
)
add_subdirectory
(
${
CMAKE_CURRENT_SOURCE_DIR
}
/ml/backend/ggml/ggml
/src
)
set_property
(
TARGET ggml PROPERTY EXCLUDE_FROM_ALL TRUE
)
get_target_property
(
CPU_VARIANTS ggml-cpu MANUALLY_ADDED_DEPENDENCIES
)
...
...
llama/patches/0021-remove-ggml-git-build-info.patch
deleted
100644 → 0
View file @
fbe70396
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: jmorganca <jmorganca@gmail.com>
Date: Sat, 12 Apr 2025 21:13:44 -0400
Subject: [PATCH] remove ggml git build info
---
ggml/CMakeLists.txt | 25 -------------------------
1 file changed, 25 deletions(-)
diff --git a/ggml/CMakeLists.txt b/ggml/CMakeLists.txt
index d33f843b..a6c59f22 100644
--- a/ggml/CMakeLists.txt
+++ b/ggml/CMakeLists.txt
@@ -287,31 +287,6 @@
if (GGML_STANDALONE)
DESTINATION share/pkgconfig)
endif()
-#
-# Create CMake package
-#
-
-# Generate version info based on git commit.
-
-if(NOT DEFINED GGML_BUILD_NUMBER)
- find_program(GIT_EXE NAMES git git.exe REQUIRED NO_CMAKE_FIND_ROOT_PATH)
- execute_process(COMMAND ${GIT_EXE} rev-list --count HEAD
- WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
- OUTPUT_VARIABLE GGML_BUILD_NUMBER
- OUTPUT_STRIP_TRAILING_WHITESPACE
- )
-
- if(GGML_BUILD_NUMBER EQUAL 1)
- message(WARNING "GGML build version fixed at 1 likely due to a shallow clone.")
- endif()
-
- execute_process(COMMAND ${GIT_EXE} rev-parse --short HEAD
- WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
- OUTPUT_VARIABLE GGML_BUILD_COMMIT
- OUTPUT_STRIP_TRAILING_WHITESPACE
- )
-endif()
-
# Capture variables prefixed with GGML_.
ml/backend/ggml/ggml/.rsync-filter
View file @
dc264be6
protect *.go
protect *-embed.*
include cmake/
include include/
include src/
include src/CMakeLists.txt
...
...
@@ -14,7 +13,6 @@ include src/ggml-cuda/vendors/
include src/ggml-cuda/template-instances/
include src/ggml-hip/
include src/ggml-metal/
include CMakeLists.txt
include *.c
include *.h
include *.cpp
...
...
@@ -22,6 +20,4 @@ include *.cu
include *.cuh
include *.m
include *.metal
include common.cmake
include ggml-config.cmake.in
exclude *
ml/backend/ggml/ggml/CMakeLists.txt
deleted
100644 → 0
View file @
fbe70396
cmake_minimum_required
(
VERSION 3.14
)
# for add_link_options and implicit target directories.
project
(
"ggml"
C CXX
)
include
(
CheckIncludeFileCXX
)
set
(
CMAKE_EXPORT_COMPILE_COMMANDS ON
)
if
(
NOT XCODE AND NOT MSVC AND NOT CMAKE_BUILD_TYPE
)
set
(
CMAKE_BUILD_TYPE Release CACHE STRING
"Build type"
FORCE
)
set_property
(
CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS
"Debug"
"Release"
"MinSizeRel"
"RelWithDebInfo"
)
endif
()
if
(
CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR
)
set
(
GGML_STANDALONE ON
)
set
(
CMAKE_RUNTIME_OUTPUT_DIRECTORY
${
CMAKE_BINARY_DIR
}
/bin
)
# configure project version
# TODO
else
()
set
(
GGML_STANDALONE OFF
)
endif
()
if
(
EMSCRIPTEN
)
set
(
BUILD_SHARED_LIBS_DEFAULT OFF
)
option
(
GGML_WASM_SINGLE_FILE
"ggml: embed WASM inside the generated ggml.js"
ON
)
else
()
if
(
MINGW
)
set
(
BUILD_SHARED_LIBS_DEFAULT OFF
)
else
()
set
(
BUILD_SHARED_LIBS_DEFAULT ON
)
endif
()
endif
()
# remove the lib prefix on win32 mingw
if
(
WIN32
)
set
(
CMAKE_STATIC_LIBRARY_PREFIX
""
)
set
(
CMAKE_SHARED_LIBRARY_PREFIX
""
)
set
(
CMAKE_SHARED_MODULE_PREFIX
""
)
endif
()
option
(
BUILD_SHARED_LIBS
"ggml: build shared libraries"
${
BUILD_SHARED_LIBS_DEFAULT
}
)
option
(
GGML_BACKEND_DL
"ggml: build backends as dynamic libraries (requires BUILD_SHARED_LIBS)"
OFF
)
#
# option list
#
# TODO: mark all options as advanced when not GGML_STANDALONE
if
(
APPLE
)
set
(
GGML_METAL_DEFAULT ON
)
set
(
GGML_BLAS_DEFAULT ON
)
set
(
GGML_BLAS_VENDOR_DEFAULT
"Apple"
)
else
()
set
(
GGML_METAL_DEFAULT OFF
)
set
(
GGML_BLAS_DEFAULT OFF
)
set
(
GGML_BLAS_VENDOR_DEFAULT
"Generic"
)
endif
()
if
(
CMAKE_CROSSCOMPILING OR DEFINED ENV{SOURCE_DATE_EPOCH}
)
message
(
STATUS
"Setting GGML_NATIVE_DEFAULT to OFF"
)
set
(
GGML_NATIVE_DEFAULT OFF
)
else
()
set
(
GGML_NATIVE_DEFAULT ON
)
endif
()
# defaults
if
(
NOT GGML_LLAMAFILE_DEFAULT
)
set
(
GGML_LLAMAFILE_DEFAULT OFF
)
endif
()
if
(
NOT GGML_CUDA_GRAPHS_DEFAULT
)
set
(
GGML_CUDA_GRAPHS_DEFAULT OFF
)
endif
()
# general
option
(
GGML_STATIC
"ggml: static link libraries"
OFF
)
option
(
GGML_NATIVE
"ggml: optimize the build for the current system"
${
GGML_NATIVE_DEFAULT
}
)
option
(
GGML_LTO
"ggml: enable link time optimization"
OFF
)
option
(
GGML_CCACHE
"ggml: use ccache if available"
ON
)
# debug
option
(
GGML_ALL_WARNINGS
"ggml: enable all compiler warnings"
ON
)
option
(
GGML_ALL_WARNINGS_3RD_PARTY
"ggml: enable all compiler warnings in 3rd party libs"
OFF
)
option
(
GGML_GPROF
"ggml: enable gprof"
OFF
)
# build
option
(
GGML_FATAL_WARNINGS
"ggml: enable -Werror flag"
OFF
)
# sanitizers
option
(
GGML_SANITIZE_THREAD
"ggml: enable thread sanitizer"
OFF
)
option
(
GGML_SANITIZE_ADDRESS
"ggml: enable address sanitizer"
OFF
)
option
(
GGML_SANITIZE_UNDEFINED
"ggml: enable undefined sanitizer"
OFF
)
# instruction set specific
if
(
GGML_NATIVE OR NOT GGML_NATIVE_DEFAULT
)
set
(
INS_ENB OFF
)
else
()
set
(
INS_ENB ON
)
endif
()
message
(
DEBUG
"GGML_NATIVE :
${
GGML_NATIVE
}
"
)
message
(
DEBUG
"GGML_NATIVE_DEFAULT :
${
GGML_NATIVE_DEFAULT
}
"
)
message
(
DEBUG
"INS_ENB :
${
INS_ENB
}
"
)
option
(
GGML_CPU_HBM
"ggml: use memkind for CPU HBM"
OFF
)
option
(
GGML_CPU_AARCH64
"ggml: use runtime weight conversion of Q4_0 to Q4_X_X"
ON
)
option
(
GGML_CPU_KLEIDIAI
"ggml: use KleidiAI optimized kernels if applicable"
OFF
)
option
(
GGML_AVX
"ggml: enable AVX"
${
INS_ENB
}
)
option
(
GGML_AVX_VNNI
"ggml: enable AVX-VNNI"
OFF
)
option
(
GGML_AVX2
"ggml: enable AVX2"
${
INS_ENB
}
)
option
(
GGML_BMI2
"ggml: enable BMI2"
${
INS_ENB
}
)
option
(
GGML_AVX512
"ggml: enable AVX512F"
OFF
)
option
(
GGML_AVX512_VBMI
"ggml: enable AVX512-VBMI"
OFF
)
option
(
GGML_AVX512_VNNI
"ggml: enable AVX512-VNNI"
OFF
)
option
(
GGML_AVX512_BF16
"ggml: enable AVX512-BF16"
OFF
)
if
(
NOT MSVC
)
# in MSVC F16C and FMA is implied with AVX2/AVX512
option
(
GGML_FMA
"ggml: enable FMA"
${
INS_ENB
}
)
option
(
GGML_F16C
"ggml: enable F16C"
${
INS_ENB
}
)
# MSVC does not seem to support AMX
option
(
GGML_AMX_TILE
"ggml: enable AMX-TILE"
OFF
)
option
(
GGML_AMX_INT8
"ggml: enable AMX-INT8"
OFF
)
option
(
GGML_AMX_BF16
"ggml: enable AMX-BF16"
OFF
)
endif
()
option
(
GGML_LASX
"ggml: enable lasx"
ON
)
option
(
GGML_LSX
"ggml: enable lsx"
ON
)
option
(
GGML_RVV
"ggml: enable rvv"
ON
)
option
(
GGML_RV_ZFH
"ggml: enable riscv zfh"
OFF
)
option
(
GGML_VXE
"ggml: enable vxe"
ON
)
option
(
GGML_CPU_ALL_VARIANTS
"ggml: build all variants of the CPU backend (requires GGML_BACKEND_DL)"
OFF
)
set
(
GGML_CPU_ARM_ARCH
""
CACHE STRING
"ggml: CPU architecture for ARM"
)
set
(
GGML_CPU_POWERPC_CPUTYPE
""
CACHE STRING
"ggml: CPU type for PowerPC"
)
if
(
WIN32
)
set
(
GGML_WIN_VER
"0x602"
CACHE STRING
"ggml: Windows version"
)
endif
()
# ggml core
set
(
GGML_SCHED_MAX_COPIES
"4"
CACHE STRING
"ggml: max input copies for pipeline parallelism"
)
option
(
GGML_CPU
"ggml: enable CPU backend"
ON
)
# 3rd party libs / backends
option
(
GGML_ACCELERATE
"ggml: enable Accelerate framework"
ON
)
option
(
GGML_BLAS
"ggml: use BLAS"
${
GGML_BLAS_DEFAULT
}
)
set
(
GGML_BLAS_VENDOR
${
GGML_BLAS_VENDOR_DEFAULT
}
CACHE STRING
"ggml: BLAS library vendor"
)
option
(
GGML_LLAMAFILE
"ggml: use LLAMAFILE"
${
GGML_LLAMAFILE_DEFAULT
}
)
option
(
GGML_CUDA
"ggml: use CUDA"
OFF
)
option
(
GGML_MUSA
"ggml: use MUSA"
OFF
)
option
(
GGML_CUDA_FORCE_MMQ
"ggml: use mmq kernels instead of cuBLAS"
OFF
)
option
(
GGML_CUDA_FORCE_CUBLAS
"ggml: always use cuBLAS instead of mmq kernels"
OFF
)
option
(
GGML_CUDA_F16
"ggml: use 16 bit floats for some calculations"
OFF
)
set
(
GGML_CUDA_PEER_MAX_BATCH_SIZE
"128"
CACHE STRING
"ggml: max. batch size for using peer access"
)
option
(
GGML_CUDA_NO_PEER_COPY
"ggml: do not use peer to peer copies"
OFF
)
option
(
GGML_CUDA_NO_VMM
"ggml: do not try to use CUDA VMM"
OFF
)
option
(
GGML_CUDA_FA
"ggml: compile ggml FlashAttention CUDA kernels"
ON
)
option
(
GGML_CUDA_FA_ALL_QUANTS
"ggml: compile all quants for FlashAttention"
OFF
)
option
(
GGML_CUDA_GRAPHS
"ggml: use CUDA graphs (llama.cpp only)"
${
GGML_CUDA_GRAPHS_DEFAULT
}
)
set
(
GGML_CUDA_COMPRESSION_MODE
"size"
CACHE STRING
"ggml: cuda link binary compression mode; requires cuda 12.8+"
)
set_property
(
CACHE GGML_CUDA_COMPRESSION_MODE PROPERTY STRINGS
"none;speed;balance;size"
)
option
(
GGML_HIP
"ggml: use HIP"
OFF
)
option
(
GGML_HIP_GRAPHS
"ggml: use HIP graph, experimental, slow"
OFF
)
option
(
GGML_HIP_NO_VMM
"ggml: do not try to use HIP VMM"
ON
)
option
(
GGML_HIP_ROCWMMA_FATTN
"ggml: enable rocWMMA for FlashAttention"
OFF
)
option
(
GGML_HIP_UMA
"ggml: use HIP unified memory architecture"
OFF
)
option
(
GGML_VULKAN
"ggml: use Vulkan"
OFF
)
option
(
GGML_VULKAN_CHECK_RESULTS
"ggml: run Vulkan op checks"
OFF
)
option
(
GGML_VULKAN_DEBUG
"ggml: enable Vulkan debug output"
OFF
)
option
(
GGML_VULKAN_MEMORY_DEBUG
"ggml: enable Vulkan memory debug output"
OFF
)
option
(
GGML_VULKAN_SHADER_DEBUG_INFO
"ggml: enable Vulkan shader debug info"
OFF
)
option
(
GGML_VULKAN_PERF
"ggml: enable Vulkan perf output"
OFF
)
option
(
GGML_VULKAN_VALIDATE
"ggml: enable Vulkan validation"
OFF
)
option
(
GGML_VULKAN_RUN_TESTS
"ggml: run Vulkan tests"
OFF
)
option
(
GGML_KOMPUTE
"ggml: use Kompute"
OFF
)
option
(
GGML_METAL
"ggml: use Metal"
${
GGML_METAL_DEFAULT
}
)
option
(
GGML_METAL_USE_BF16
"ggml: use bfloat if available"
OFF
)
option
(
GGML_METAL_NDEBUG
"ggml: disable Metal debugging"
OFF
)
option
(
GGML_METAL_SHADER_DEBUG
"ggml: compile Metal with -fno-fast-math"
OFF
)
option
(
GGML_METAL_EMBED_LIBRARY
"ggml: embed Metal library"
${
GGML_METAL
}
)
set
(
GGML_METAL_MACOSX_VERSION_MIN
""
CACHE STRING
"ggml: metal minimum macOS version"
)
set
(
GGML_METAL_STD
""
CACHE STRING
"ggml: metal standard version (-std flag)"
)
option
(
GGML_OPENMP
"ggml: use OpenMP"
ON
)
option
(
GGML_RPC
"ggml: use RPC"
OFF
)
option
(
GGML_SYCL
"ggml: use SYCL"
OFF
)
option
(
GGML_SYCL_F16
"ggml: use 16 bit floats for sycl calculations"
OFF
)
option
(
GGML_SYCL_GRAPH
"ggml: enable graphs in the SYCL backend"
ON
)
set
(
GGML_SYCL_TARGET
"INTEL"
CACHE STRING
"ggml: sycl target device"
)
set
(
GGML_SYCL_DEVICE_ARCH
""
CACHE STRING
"ggml: sycl device architecture"
)
option
(
GGML_OPENCL
"ggml: use OpenCL"
OFF
)
option
(
GGML_OPENCL_PROFILING
"ggml: use OpenCL profiling (increases overhead)"
OFF
)
option
(
GGML_OPENCL_EMBED_KERNELS
"ggml: embed kernels"
ON
)
option
(
GGML_OPENCL_USE_ADRENO_KERNELS
"ggml: use optimized kernels for Adreno"
ON
)
set
(
GGML_OPENCL_TARGET_VERSION
"300"
CACHE STRING
"gmml: OpenCL API version to target"
)
# toolchain for vulkan-shaders-gen
set
(
GGML_VULKAN_SHADERS_GEN_TOOLCHAIN
""
CACHE FILEPATH
"ggml: toolchain file for vulkan-shaders-gen"
)
# extra artifacts
option
(
GGML_BUILD_TESTS
"ggml: build tests"
${
GGML_STANDALONE
}
)
option
(
GGML_BUILD_EXAMPLES
"ggml: build examples"
${
GGML_STANDALONE
}
)
#
# dependencies
#
set
(
CMAKE_C_STANDARD 11
)
set
(
CMAKE_C_STANDARD_REQUIRED true
)
set
(
CMAKE_CXX_STANDARD 17
)
set
(
CMAKE_CXX_STANDARD_REQUIRED true
)
set
(
THREADS_PREFER_PTHREAD_FLAG ON
)
find_package
(
Threads REQUIRED
)
include
(
GNUInstallDirs
)
#
# build the library
#
add_subdirectory
(
src
)
#
# tests and examples
#
if
(
GGML_BUILD_TESTS
)
enable_testing
()
add_subdirectory
(
tests
)
endif
()
if
(
GGML_BUILD_EXAMPLES
)
add_subdirectory
(
examples
)
endif
()
#
# install
#
include
(
CMakePackageConfigHelpers
)
# all public headers
set
(
GGML_PUBLIC_HEADERS
include/ggml.h
include/ggml-cpu.h
include/ggml-alloc.h
include/ggml-backend.h
include/ggml-blas.h
include/ggml-cann.h
include/ggml-cpp.h
include/ggml-cuda.h
include/ggml-kompute.h
include/ggml-opt.h
include/ggml-metal.h
include/ggml-rpc.h
include/ggml-sycl.h
include/ggml-vulkan.h
include/gguf.h
)
set_target_properties
(
ggml PROPERTIES PUBLIC_HEADER
"
${
GGML_PUBLIC_HEADERS
}
"
)
#if (GGML_METAL)
# set_target_properties(ggml PROPERTIES RESOURCE "${CMAKE_CURRENT_SOURCE_DIR}/src/ggml-metal.metal")
#endif()
install
(
TARGETS ggml LIBRARY PUBLIC_HEADER
)
install
(
TARGETS ggml-base LIBRARY
)
if
(
GGML_STANDALONE
)
configure_file
(
${
CMAKE_CURRENT_SOURCE_DIR
}
/ggml.pc.in
${
CMAKE_CURRENT_BINARY_DIR
}
/ggml.pc
@ONLY
)
install
(
FILES
${
CMAKE_CURRENT_BINARY_DIR
}
/ggml.pc
DESTINATION share/pkgconfig
)
endif
()
# Capture variables prefixed with GGML_.
set
(
variable_set_statements
"
####### Expanded from @GGML_VARIABLES_EXPANED@ by configure_package_config_file() #######
####### Any changes to this file will be overwritten by the next CMake run #######
"
)
set
(
GGML_SHARED_LIB
${
BUILD_SHARED_LIBS
}
)
get_cmake_property
(
all_variables VARIABLES
)
foreach
(
variable_name IN LISTS all_variables
)
if
(
variable_name MATCHES
"^GGML_"
)
string
(
REPLACE
";"
"
\\
;"
variable_value
"
${${
variable_name
}}
"
)
set
(
variable_set_statements
"
${
variable_set_statements
}
set(
${
variable_name
}
\"
${
variable_value
}
\"
)
\n
"
)
endif
()
endforeach
()
set
(
GGML_VARIABLES_EXPANDED
${
variable_set_statements
}
)
# Create the CMake package and set install location.
set
(
GGML_INSTALL_VERSION 0.0.
${
GGML_BUILD_NUMBER
}
)
set
(
GGML_INCLUDE_INSTALL_DIR
${
CMAKE_INSTALL_INCLUDEDIR
}
CACHE PATH
"Location of header files"
)
set
(
GGML_LIB_INSTALL_DIR
${
CMAKE_INSTALL_LIBDIR
}
CACHE PATH
"Location of library files"
)
set
(
GGML_BIN_INSTALL_DIR
${
CMAKE_INSTALL_BINDIR
}
CACHE PATH
"Location of binary files"
)
configure_package_config_file
(
${
CMAKE_CURRENT_SOURCE_DIR
}
/cmake/ggml-config.cmake.in
${
CMAKE_CURRENT_BINARY_DIR
}
/ggml-config.cmake
INSTALL_DESTINATION
${
CMAKE_INSTALL_LIBDIR
}
/cmake/ggml
PATH_VARS GGML_INCLUDE_INSTALL_DIR
GGML_LIB_INSTALL_DIR
GGML_BIN_INSTALL_DIR
)
write_basic_package_version_file
(
${
CMAKE_CURRENT_BINARY_DIR
}
/ggml-version.cmake
VERSION
${
GGML_INSTALL_VERSION
}
COMPATIBILITY SameMajorVersion
)
install
(
FILES
${
CMAKE_CURRENT_BINARY_DIR
}
/ggml-config.cmake
${
CMAKE_CURRENT_BINARY_DIR
}
/ggml-version.cmake
DESTINATION
${
CMAKE_INSTALL_LIBDIR
}
/cmake/ggml
)
ml/backend/ggml/ggml/cmake/ggml-config.cmake.in
deleted
100644 → 0
View file @
fbe70396
@GGML_VARIABLES_EXPANDED@
@PACKAGE_INIT@
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@")
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}")
if (NOT GGML_SHARED_LIB)
if (APPLE AND GGML_ACCELERATE)
find_library(ACCELERATE_FRAMEWORK Accelerate REQUIRED)
list(APPEND GGML_CPU_INTERFACE_LINK_LIBRARIES ${ACCELERATE_FRAMEWORK})
endif()
if (GGML_OPENMP)
find_package(OpenMP REQUIRED)
list(APPEND GGML_CPU_INTERFACE_LINK_LIBRARIES OpenMP::OpenMP_C OpenMP::OpenMP_CXX)
endif()
if (GGML_CPU_HBM)
find_library(memkind memkind REQUIRED)
list(APPEND GGML_CPU_INTERFACE_LINK_LIBRARIES memkind)
endif()
if (GGML_BLAS)
find_package(BLAS REQUIRED)
list(APPEND GGML_CPU_INTERFACE_LINK_LIBRARIES ${BLAS_LIBRARIES})
list(APPEND GGML_CPU_INTERFACE_LINK_OPTIONS ${BLAS_LINKER_FLAGS})
endif()
if (GGML_CUDA)
find_package(CUDAToolkit REQUIRED)
endif()
if (GGML_METAL)
find_library(FOUNDATION_LIBRARY Foundation REQUIRED)
find_library(METAL_FRAMEWORK Metal REQUIRED)
find_library(METALKIT_FRAMEWORK MetalKit REQUIRED)
list(APPEND GGML_METAL_INTERFACE_LINK_LIBRARIES
${FOUNDATION_LIBRARY} ${METAL_FRAMEWORK} ${METALKIT_FRAMEWORK})
endif()
if (GGML_VULKAN)
find_package(Vulkan REQUIRED)
list(APPEND GGML_VULKAN_INTERFACE_LINK_LIBRARIES Vulkan::Vulkan)
endif()
if (GGML_HIP)
find_package(hip REQUIRED)
find_package(hipblas REQUIRED)
find_package(rocblas REQUIRED)
list(APPEND GGML_HIP_INTERFACE_LINK_LIBRARIES hip::host roc::rocblas roc::hipblas)
endif()
if (GGML_SYCL)
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_package(IntelSYCL REQUIRED)
find_package(MKL REQUIRED)
list(APPEND GGML_SYCL_INTERFACE_LINK_LIBRARIES IntelSYCL::SYCL_CXX MKL::MKL MKL::MKL_SYCL)
endif()
endif()
endif()
set(_ggml_all_targets "")
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()
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}")
check_required_components(ggml)
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment