# Copyright 2024-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
ROCM_VERSION=6.3
inherit rocm
inherit cmake
DESCRIPTION="Tensor library for machine learning"
HOMEPAGE="https://github.com/ggml-org/ggml"
SRC_URI="https://github.com/ggml-org/ggml/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz"
LICENSE="MIT"
SLOT="0"
KEYWORDS="~amd64"
X86_CPU_FLAGS=(
sse4_2
avx
f16c
avx2
bmi2
fma3
avx512f
avx512vbmi
avx512_vnni
avx_vnni
)
CPU_FLAGS=( "${X86_CPU_FLAGS[@]/#/cpu_flags_x86_}" )
IUSE="${CPU_FLAGS[*]} +blas mkl +rocm +openmp"
RESTRICT="test"
COMMON_DEPEND="
blas? (
!mkl? (
virtual/blas
)
mkl? (
sci-libs/mkl
)
)
rocm? (
>=sci-libs/hipBLAS-5.5:=[${ROCM_USEDEP}]
)
"
src_configure() {
local mycmakeargs=(
-DBUILD_SHARED_LIBS=ON
-DGGML_OPENMP=$(usex openmp ON OFF)
-DGGML_SSE42=$(usex cpu_flags_x86_sse4_2 ON OFF)
-DGGML_AVX=$(usex cpu_flags_x86_avx ON OFF)
-DGGML_AVX_VNNI=$(usex cpu_flags_x86_avx_vnni ON OFF)
-DGGML_F16C=$(usex cpu_flags_x86_f16c ON OFF)
-DGGML_AVX2=$(usex cpu_flags_x86_avx2 ON OFF)
-DGGML_BMI2=$(usex cpu_flags_x86_bmi2 ON OFF)
-DGGML_FMA=$(usex cpu_flags_x86_fma3 ON OFF)
-DGGML_AVX512=$(usex cpu_flags_x86_avx512f ON OFF)
-DGGML_AVX512_VBMI=$(usex cpu_flags_x86_avx512vbmi ON OFF)
-DGGML_AVX512_VNNI=$(usex cpu_flags_x86_avx512_vnni ON OFF)
# -DGGML_=$(usex cpu_flags_x86_ ON OFF)
)
if use blas; then
if use mkl; then
mycmakeargs+=(
-DGGML_BLAS_VENDOR="Intel"
)
else
mycmakeargs+=(
-DGGML_BLAS_VENDOR="Generic"
)
fi
fi
if use rocm; then
mycmakeargs+=(
-DGGML_HIP=ON
-DCMAKE_HIP_ARCHITECTURES="$(get_amdgpu_flags)"
-DCMAKE_HIP_PLATFORM="amd"
)
local -x HIP_PATH="${ESYSROOT}/usr"
check_amdgpu
else
mycmakeargs+=(
-DCMAKE_HIP_COMPILER="NOTFOUND"
)
fi
cmake_src_configure
}