# Copyright 1999-2026 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 inherit cmake MY_PN="whisper.cpp" MY_P="${MY_PN}-${PV}" DESCRIPTION="Port of OpenAI's Whisper model in C/C++" HOMEPAGE="https://github.com/ggml-org/whisper.cpp" SRC_URI="https://github.com/ggml-org/whisper.cpp/archive/refs/tags/v${PV}.tar.gz -> ${MY_P}.tar.gz" S="${WORKDIR}/${MY_P}" LICENSE="MIT" SLOT="0" KEYWORDS="~amd64 ~arm64" IUSE="blas cuda ffmpeg hip opencl sdl2 vulkan" CDEPEND="blas? ( sci-libs/openblas ) cuda? ( dev-util/nvidia-cuda-toolkit:= ) ffmpeg? ( media-video/ffmpeg:= ) hip? ( dev-util/hip:= sci-libs/hipBLAS:= sci-libs/rocBLAS:= ) opencl? ( sci-libs/clblast:= ) sdl2? ( media-libs/libsdl2:= )" DEPEND="${CDEPEND} vulkan? ( dev-util/vulkan-headers ) " RDEPEND="${CDEPEND} vulkan? ( media-libs/vulkan-loader ) " BDEPEND="vulkan? ( media-libs/shaderc )" src_prepare() { # Drop talk-llama: it fetches llama.cpp during configure. Other SDL2 examples # remain available. verified 2026-08-24 sed -i '/add_subdirectory(talk-llama)/d' examples/CMakeLists.txt || die cmake_src_prepare } src_configure() { local mycmakeargs=( -DWHISPER_BUILD_EXAMPLES=ON -DWHISPER_BUILD_TESTS=OFF -DGGML_NATIVE=OFF -DGGML_CCACHE=OFF -DGGML_BLAS=$(usex blas) -DGGML_CLBLAST=$(usex opencl) -DGGML_CUDA=$(usex cuda) -DGGML_HIP=$(usex hip) -DGGML_VULKAN=$(usex vulkan) -DWHISPER_COMMON_FFMPEG=$(usex ffmpeg) -DWHISPER_SDL2=$(usex sdl2) ) if use cuda; then # Pin GCC 15 when available; CUDA 13 rejects newer hosts. # verified 2026-05-14 with CUDA 13.2 and active GCC 16 local g15=/usr/bin/x86_64-pc-linux-gnu-g++-15 [[ -x ${g15} ]] && mycmakeargs+=( -DCMAKE_CUDA_HOST_COMPILER="${g15}" ) fi if use blas; then # Require OpenBLAS: generic FindBLAS may choose libblas without cblas_sgemm. mycmakeargs+=( -DGGML_BLAS_VENDOR=OpenBLAS ) fi cmake_src_configure } src_install() { cmake_src_install newinitd "${FILESDIR}/${PN}.init" "${PN}" newconfd "${FILESDIR}/${PN}.confd" "${PN}" }