# Copyright 2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

# LocalAI text-to-speech backend for Microsoft's VibeVoice model in GGUF
# format, built from mudler's vibevoice.cpp at the exact commit this
# LocalAI release pins.

EAPI=8

LOCAL_AI_ENGINE_LIB="libgovibevoicecpp.so"
# The wrapper CMake project defines its own toggles next to ggml's.
LOCAL_AI_CUDA_CMAKE_VARS="GGML_CUDA VIBEVOICE_GGML_CUDA"
LOCAL_AI_VULKAN_CMAKE_VARS="GGML_VULKAN VIBEVOICE_GGML_VULKAN"
# The engine subdirectory is EXCLUDE_FROM_ALL; this target pulls
# libvibevoice in as its link dependency.
LOCAL_AI_CMAKE_TARGET="govibevoicecpp"

inherit local-ai-ggml-go

# The vibevoice.cpp commit LocalAI v4.9.0 builds against. Source of truth:
# backend/go/vibevoice-cpp/Makefile (VIBEVOICE_CPP_VERSION) at the upstream
# release tag; the ggml pin is that commit's third_party/ggml submodule
# gitlink (ggml-org's mainline ggml).
VIBEVOICE_COMMIT="000e37282bc5bb09edc20f7047a47924122ba3a0"
GGML_COMMIT="8be60f83ec124c31f3a427053c29022e3072f8a4"

DESCRIPTION="LocalAI text-to-speech backend (vibevoice.cpp gRPC server)"
SRC_URI="
	${LOCAL_AI_GO_SRC_URI}
	https://github.com/mudler/vibevoice.cpp/archive/${VIBEVOICE_COMMIT}.tar.gz -> vibevoice.cpp-${VIBEVOICE_COMMIT}.tar.gz
	https://github.com/ggml-org/ggml/archive/${GGML_COMMIT}.tar.gz -> ggml-org-ggml-${GGML_COMMIT}.tar.gz
"
S="${WORKDIR}/LocalAI-${PV}/backend/go/vibevoice-cpp"

KEYWORDS="~amd64"

src_unpack() {
	local-ai-backend_go_unpack

	local ggml=( "ggml-org-ggml-${GGML_COMMIT}.tar.gz" "ggml-${GGML_COMMIT}" third_party/ggml )
	local-ai-backend_engine_unpack "vibevoice.cpp-${VIBEVOICE_COMMIT}.tar.gz" vibevoice.cpp "${ggml[@]}"
}