# Copyright 1999-2026 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Id$
EAPI=8
inherit git-r3
inherit meson
DESCRIPTION="A bridge to use Windows VST and CLAP plugins on Linux via wine."
HOMEPAGE="https://github.com/robbert-vdh/yabridge"
EGIT_COMMIT="48ea9749b682c48875366134a42073d6b3d0a8c4"
EGIT_REPO_URI="https://github.com/robbert-vdh/yabridge.git"
# NOTE: Sub-repositories are originally cloned through Meson which then also adds additional configuration files.
# Those files are unfortunately missing when cloned through this ebuild and need to be added through patches.
SUBREPOS=(
"https://github.com/chriskohlhoff/asio.git ed6aa8a13d51dfc6c00ae453fc9fb7df5d6ea963 subprojects/asio"
"https://github.com/fraillt/bitsery.git d1a47e06e2104b195a19c73b61f1d5c1dceaa228 subprojects/bitsery"
"https://github.com/Naios/function2.git 9e303865d14f1204f09379e37bbeb30c4375139a subprojects/function2"
"https://github.com/gulrak/filesystem.git 8a2edd6d92ed820521d42c94d179462bf06b5ed3 subprojects/ghc_filesystem"
"https://github.com/marzer/tomlplusplus.git 30172438cee64926dc41fdd9c11fb3ba5b2ba9de subprojects/tomlplusplus"
"https://github.com/free-audio/clap.git 094bb76c85366a13cc6c49292226d8608d6ae50c subprojects/clap"
"https://github.com/robbert-vdh/vst3sdk.git v3.7.7_build_19-patched subprojects/vst3"
"https://github.com/steinbergmedia/vst3_base.git ea2bac9a109cce69ced21833fa6ff873dd6e368a subprojects/vst3/base"
"https://github.com/steinbergmedia/vst3_pluginterfaces.git bc5ff0f87aaa3cd28c114810f4f03c384421ad2c subprojects/vst3/pluginterfaces"
"https://github.com/steinbergmedia/vst3_public_sdk.git bbb0538535b171e805c8a8b612c2cd8a5f95738b subprojects/vst3/public.sdk"
)
LICENSE="GPL-3"
SLOT="0"
KEYWORDS="~amd64"
DEPEND="
!media-sound/yabridge-bin
"
RDEPEND="
${DEPEND}
media-sound/yabridgectl
app-crypt/libmd
dev-libs/libbsd
sys-devel/gcc
sys-libs/glibc
x11-libs/libXau
x11-libs/libxcb
x11-libs/libXdmcp
virtual/wine
"
RESTRICT="mirror"
EMESON_BUILDTYPE="release"
PATCHES=(
"${FILESDIR}/${P}-meson_subrepos.patch"
)
pkg_setup() {
if [[ "${PV}" =~ _p[0-9]+$ ]]; then
# 12345678901234567890123456789012345678901234567890123456789012345678901234567890
ewarn "You are about to install an untagged development version of yabridge"
ewarn "(this is NOT version ${PV/_p*/} but the development state as of ${PV/*_p/})."
fi
}
src_unpack() {
git-r3_src_unpack || die "main git-r3_src_unpack failed"
for subrepo in "${SUBREPOS[@]}"; do
read -r subrepo_uri subrepo_ref subrepo_dest <<< "$subrepo" || die "failed to split subrepository definition: ${subrepo}"
subrepo_dest="${S}/${subrepo_dest}"
#echo "uri: ${subrepo_uri} / ref: ${subrepo_ref} / dest: ${subrepo_dest}"
mkdir -p "${subrepo_dest}" || die "failed to create directory for subrepository: ${subrepo_dest}"
git-r3_fetch "${subrepo_uri}" "${subrepo_ref}" || die "failed to fetch subrepository ${subrepo_uri} at revision ${subrepo_ref}"
EGIT_SUBMODULES=() git-r3_checkout "${subrepo_uri}" "${subrepo_dest}" || die "failed to checkout subrepository ${subrepo_uri} to ${subrepo_dest}"
# fake Meson checkout
#echo "${subrepo_ref}" >"${subrepo_dest}/.meson-subproject-wrap-hash.txt"
git -C "${subrepo_dest}" show --pretty='%H' --no-patch >"${subrepo_dest}/.meson-subproject-wrap-hash.txt"
done
}
src_configure() {
# arguments taken from https://github.com/robbert-vdh/yabridge/blob/master/.github/workflows/build.yml
local emesonargs=(
--cross-file=cross-wine.conf
--unity=on
--unity-size=10000
-Dbitbridge=true
)
meson_src_configure
}
src_install() {
# NOTE: by default, meson install would be called, however the project does not define that step
# to avoid issues with linking etc. we install to default locations; see Arch Linux repository for reference:
# https://archlinux.org/packages/multilib/x86_64/yabridge/
# https://archlinux.org/packages/multilib/x86_64/yabridgectl/
cd "${BUILD_DIR}"
exeinto /usr/bin
#doexe yabridgectl
doexe *.exe
doexe *.exe.so
dolib.so *-clap.so
dolib.so *-vst2.so
dolib.so *-vst3.so
cd "${S}"
dodoc *.md
}
pkg_postinst() {
if [[ "${PV}" =~ _p[0-9]+$ ]]; then
# 12345678901234567890123456789012345678901234567890123456789012345678901234567890
ewarn "You have just installed an untagged development version of yabridge which"
ewarn "actually is NOT version ${PV/_p*/}."
ewarn ""
ewarn "When reporting any issues to the yabridge project, please mention the following"
ewarn "information to identify the source code used by this build:"
ewarn ""
ewarn " yabridge commit hash: ${EGIT_COMMIT}"
ewarn " as available on: ${PV/*_p/} (YYYYMMDD)"
ewarn ""
ewarn " Dependencies:"
for subrepo in "${SUBREPOS[@]}"; do
ewarn " ${subrepo}"
done
ewarn ""
ewarn "Make sure to switch back to media-sound/yabridge-bin when a stable releases"
ewarn "more recent than ${PV/_p*/} is available."
fi
}