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

# LocalAI voice-quality-enhancement backend (denoise/dereverb), built
# from localai-org's LocalVQE at the exact commit this LocalAI release
# pins. The CMake project root is the engine's ggml/ subdirectory, with
# upstream ggml vendored inside it (ggml/vendor/ggml). The build emits
# liblocalvqe.so plus shared libggml*.so (including per-CPU
# libggml-cpu-*.so variants when the engine's GGML_BACKEND_DL loader
# mode is active) — all installed under lib/.
# USE=cuda exceeds LocalAI's own packaging: its backend Makefile builds
# CPU/Vulkan only, but the engine carries a LOCALVQE_CUDA path. HIP has
# no engine code path at all — AMD is served via Vulkan, and USE=rocm is
# omitted via the eclass's LOCALAI_GGML_NO_ROCM gate.

EAPI=8

LOCAL_AI_ENGINE_LIB="liblocalvqe.so"
LOCAL_AI_CUDA_CMAKE_VARS="GGML_CUDA LOCALVQE_CUDA"
LOCAL_AI_VULKAN_CMAKE_VARS="GGML_VULKAN LOCALVQE_VULKAN"
LOCAL_AI_EXTRA_CMAKE_ARGS=(
	-DLOCALVQE_BUILD_SHARED=ON
	-DGGML_BUILD_TESTS=OFF
	-DGGML_BUILD_EXAMPLES=OFF
	-DCMAKE_POSITION_INDEPENDENT_CODE=ON
)
LOCALAI_GGML_NO_ROCM=1

inherit local-ai-ggml-go

# The LocalVQE commit LocalAI v4.11.0 builds against. Source of truth:
# backend/go/localvqe/Makefile (LOCALVQE_VERSION) at the upstream
# release tag; the ggml pin is that commit's ggml/vendor/ggml gitlink.
LOCALVQE_COMMIT="b0f0378a450e87c871b85689554801601ca56d98"
GGML_COMMIT="c044a8eeae2591faa0950c8b5e514cbc4bbfc4ca"

DESCRIPTION="LocalAI voice-quality-enhancement backend (LocalVQE gRPC server)"
SRC_URI="
	${LOCAL_AI_GO_SRC_URI}
	https://github.com/localai-org/LocalVQE/archive/${LOCALVQE_COMMIT}.tar.gz -> LocalVQE-${LOCALVQE_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/localvqe"
CMAKE_USE_DIR="${S}/sources/LocalVQE/ggml"

LICENSE="MIT Apache-2.0"
KEYWORDS="~amd64"

src_unpack() {
	local-ai-backend_go_unpack

	local ggml=( "ggml-org-ggml-${GGML_COMMIT}.tar.gz" "ggml-${GGML_COMMIT}" ggml/vendor/ggml )
	local-ai-backend_engine_unpack "LocalVQE-${LOCALVQE_COMMIT}.tar.gz" LocalVQE "${ggml[@]}"
}

src_install() {
	# Shared-libs layout: liblocalvqe.so plus every libggml*.so it loads
	# (the engine's runtime loader may pick among CPU variants), symlink
	# chains preserved, all under lib/.
	local-ai-backend_gen_run_sh "${PN}" \
		"LOCALVQE_LIBRARY=lib/${LOCAL_AI_ENGINE_LIB}" "LD_LIBRARY_PATH=lib"
	local-ai-backend_install "${PN}" "${S}/${PN}"
	local libdir="${LOCAL_AI_BACKENDS_DIR#${EPREFIX}}/${PN}/lib"
	dodir "${libdir}"
	find "${BUILD_DIR}" \( -name 'liblocalvqe.so*' -o -name 'libggml*.so*' \) \
		-exec cp -a {} "${ED}${libdir}/" \; || die
}