View Raw Ebuild
# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
inherit autotools multibuild toolchain-funcs xdg
DESCRIPTION="Versatile Commodore Emulator"
HOMEPAGE="https://vice-emu.sourceforge.io/"
SRC_URI="https://downloads.sourceforge.net/vice-emu/releases/${P}.tar.gz"
LICENSE="GPL-2+"
SLOT="0"
KEYWORDS="amd64 ~arm ~arm64 x86"
IUSE="
alsa curl debug doc ethernet flac gif +gtk headless lame mpg123 ogg
openmp oss parport pci png portaudio pulseaudio sdl usb
"
REQUIRED_USE="|| ( gtk headless sdl )"
RDEPEND="
virtual/zlib:=
virtual/libintl
alsa? ( media-libs/alsa-lib )
curl? ( net-misc/curl )
ethernet? (
net-libs/libpcap
sys-libs/libcap
)
flac? ( media-libs/flac:= )
gif? ( media-libs/giflib:= )
gtk? (
>=app-accessibility/at-spi2-core-2.46:2
dev-libs/glib:2
dev-libs/libevdev
media-libs/fontconfig:1.0
media-libs/glew:0=[-egl-only(-)]
media-libs/libglvnd[X]
x11-libs/cairo
x11-libs/gdk-pixbuf:2
x11-libs/gtk+:3[X]
x11-libs/libX11
x11-libs/pango
)
lame? ( media-sound/lame )
mpg123? ( media-sound/mpg123-base )
ogg? (
media-libs/libogg
media-libs/libvorbis
)
parport? ( sys-libs/libieee1284 )
pci? ( sys-apps/pciutils )
png? ( media-libs/libpng:= )
portaudio? ( media-libs/portaudio )
pulseaudio? ( media-libs/libpulse )
sdl? (
media-libs/libsdl2[video]
media-libs/sdl2-image
)
usb? ( dev-libs/libusb:1 )
"
DEPEND="
${RDEPEND}
x11-base/xorg-proto
"
BDEPEND="
app-alternatives/awk
app-alternatives/lex
app-alternatives/yacc
app-arch/unzip
app-text/dos2unix
dev-embedded/xa
dev-lang/perl
sys-apps/texinfo
sys-devel/gettext
virtual/pkgconfig
doc? ( virtual/texi2dvi )
gtk? ( x11-misc/xdg-utils )
"
PATCHES=(
"${FILESDIR}"/${P}-mpg123-without-curl.patch
)
pkg_pretend() {
[[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp
}
pkg_setup() {
[[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp
}
src_prepare() {
default
eautoreconf
# strip the predefined C(XX)FLAGS
sed -Ei 's:(VICE_C(XX)?FLAGS=)"[^$]+":\1:' configure || die
MULTIBUILD_VARIANTS=(
$(usev headless)
$(usev sdl)
$(usev gtk) # build last, prefer its binaries if any duplicates
)
# debug build currently broken without copy sources
multibuild_copy_sources
}
src_configure() {
tc-export AR
multibuild_foreach_variant run_in_build_dir multibuild_src_configure
}
multibuild_src_configure() {
# append ".variant" to [xv]* binaries if building multiple variants
# except for gtk which always uses default names to match *.desktop
local xform
[[ ${#MULTIBUILD_VARIANTS[@]} -gt 1 && ${MULTIBUILD_VARIANT} != gtk ]] &&
xform="/^[xv]/s/\$/.${MULTIBUILD_VARIANT}/"
vice-multi_enable() {
if [[ ${MULTIBUILD_VARIANT} == ${1} ]]; then
echo --enable-${2}
else
echo --disable-${2}
fi
}
local econfargs=(
"${xform+--program-transform-name=${xform}}"
$(vice-multi_enable gtk desktop-files)
$(vice-multi_enable gtk gtk3ui)
$(vice-multi_enable headless headlessui)
$(vice-multi_enable sdl sdl2ui)
$(usex debug $(vice-multi_enable gtk debug-gtk3ui) --disable-debug-gtk3ui)
$(use_enable debug)
$(use_enable doc pdf-docs)
$(use_enable ethernet)
$(use_enable openmp)
$(use_enable parport parsid)
$(usev !usb enable_usbsid=no) # not setup properly in configure.ac atm
$(use_with alsa)
$(use_with curl libcurl)
$(use_with flac)
$(use_with gif)
$(use_with lame)
$(use_with lame static-lame) # disables dlopen, uses shared still
$(use_with mpg123)
$(use_with ogg vorbis)
$(use_with oss)
$(use_with parport libieee1284)
$(use_with png)
$(use_with portaudio)
$(use_with pulseaudio pulse)
$(usex alsa --enable-midi $(use_enable oss midi))
$(usev !pci ac_cv_header_pci_pci_h=no)
--disable-arch
--disable-sdl1ui
ac_cv_lib_ungif_EGifPutLine=no # ensure use giflib, not ungif
)
econf "${econfargs[@]}"
}
src_compile() {
# bug #924116 wrt SHELL
multibuild_foreach_variant run_in_build_dir emake SHELL="${BASH}"
}
src_install() {
# make xdg-icon-resource use ED, theme directory needs to pre-exist
# TODO: check if still needed on bump, handling may change,
# (see https://sourceforge.net/p/vice-emu/bugs/2127/)
dodir /usr/share/icons/hicolor
local -x XDG_UTILS_INSTALL_MODE=system
local -x XDG_DATA_DIRS=${ED}/usr/share
multibuild_foreach_variant run_in_build_dir default
# x64 symlink does not respect --program-transform-name (bug #955032)
if (( ${#MULTIBUILD_VARIANTS[@]} > 1 )); then
use gtk || rm -- "${ED}"/usr/bin/x64 || die
use sdl && dosym x64sc.sdl /usr/bin/x64.sdl
use headless && dosym x64sc.headless /usr/bin/x64.headless
fi
rm -f -- "${ED}"/usr/share/applications/*.cache || die
vice-install_extras() {
docinto html
dodoc doc/html/*.{html,css}
dodoc -r doc/html/images
insinto /usr/share/vim/vimfiles/ftdetect
doins doc/vim/ftdetect/*.vim
insinto /usr/share/vim/vimfiles/syntax
doins doc/vim/syntax/*.vim
}
multibuild_for_best_variant run_in_build_dir vice-install_extras
}