View Raw Ebuild
# Copyright 2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
PYTHON_COMPAT=( python3_{13..14} )
inherit cmake python-any-r1 toolchain-funcs
DESCRIPTION="Tensor library for machine learning"
HOMEPAGE="https://github.com/ggml-org/ggml"
if [[ ${PV} == 9999 ]]; then
inherit git-r3
EGIT_REPO_URI="https://github.com/ggml-org/ggml.git"
else
# No releases but are planned
# https://github.com/ggml-org/ggml/issues/1086
COMMIT="b96890f3ab5ffbdbe56bc126df5366c34bd08d39"
SRC_URI="
https://github.com/ggml-org/ggml/archive/${COMMIT}.tar.gz
-> ${PN}-${COMMIT}.tar.gz
"
S="${WORKDIR}/${PN}-${COMMIT}"
KEYWORDS="~amd64"
fi
LICENSE="MIT"
SLOT="0/${PV}"
IUSE="blas opencl openmp test vulkan"
declare -A CPU_FEATURES=(
[AMX_BF16]="x86"
[AMX_INT8]="x86"
[AMX_TILE]="x86"
[AVX2]="x86"
[AVX512_BF16]="x86"
[AVX512_VBMI]="x86;avx512vbmi"
[AVX512_VNNI]="x86"
[AVX]="x86"
[AVX_VNNI]="x86"
[BMI2]="x86"
[F16C]="x86"
[FMA]="x86;fma3"
[SSE42]="x86;sse4_2"
[VSX]="ppc"
)
add_cpu_features_use() {
for flag in ${!CPU_FEATURES[@]}; do
IFS=$';' read -r arch use <<< ${CPU_FEATURES[${flag}]}
IUSE+=" cpu_flags_${arch}_${use:-${flag,,}}"
done
}
add_cpu_features_use
RESTRICT="!test? ( test )"
COMMON_DEPEND="
blas? ( virtual/blas )
opencl? ( virtual/opencl )
"
RDEPEND="${COMMON_DEPEND}
media-libs/vulkan-loader
"
DEPEND="${COMMON_DEPEND}
vulkan? ( dev-util/vulkan-headers )
"
BDEPEND="
virtual/pkgconfig
opencl? ( ${PYTHON_DEPS} )
vulkan? ( dev-util/glslang )
"
pkg_pretend() {
[[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp
}
pkg_setup() {
[[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp
use opencl && python-any-r1_pkg_setup
}
src_configure() {
local mycmakeargs=(
-DGGML_BACKEND_DL=OFF
-DGGML_CPU_ALL_VARIANTS=OFF
-DGGML_NATIVE=OFF
-DGGML_LTO=OFF
-DGGML_CCACHE=OFF
-DGGML_BUILD_TESTS=$(usex test)
-DGGML_BUILD_EXAMPLES=OFF # todo
-DGGML_BLAS=$(usex blas)
-DGGML_OPENCL=$(usex opencl)
-DGGML_OPENMP=$(usex openmp)
-DGGML_VULKAN=$(usex vulkan)
-DGGML_VULKAN_TESTS=$(usex vulkan $(usex test))
# features
-DGGML_AVX512=OFF # no-op on its own
-DGGML_LASX=OFF # only appends -mlasx
-DGGML_LSX=OFF # only appends -mlsx
-DGGML_RVV=OFF # no-op on its own
-DGGML_RV_ZFH=OFF # adds march
-DGGML_XTHEADVECTOR=OFF # adds march
-DGGML_VXE=OFF # s390x, no use flag
-DGGML_NNPA=OFF # s390x, no use flag
)
if [[ ${PV} != 9999 ]]; then
mycmakeargs+=(
-DGGML_BUILD_NUMBER=1 # avoid git
-DGGML_BUILD_COMMIT="${COMMIT}"
)
fi
for flag in ${!CPU_FEATURES[@]}; do
IFS=$';' read -r arch use <<< ${CPU_FEATURES[${flag}]}
mycmakeargs+=(
-DGGML_${flag}=$(usex cpu_flags_${arch}_${use:-${flag,,}})
)
done
cmake_src_configure
}