aboutsummaryrefslogtreecommitdiff
path: root/games/vbam
diff options
context:
space:
mode:
authorB. Watson <yalhcru@gmail.com>2021-11-18 12:50:07 -0500
committerWilly Sudiarto Raharjo <willysr@slackbuilds.org>2021-12-04 10:08:55 +0700
commit1571820cd8e2fa9c2bae9282ee5d0e67b37ac749 (patch)
treeeb3c10504c2aca0d9567f451456ed81b34bb90a0 /games/vbam
parent5437d1ffdaccdee7c401fb599d2359710410521f (diff)
games/vbam: Fix -current build, enhancements.
Signed-off-by: B. Watson <yalhcru@gmail.com> Signed-off-by: Willy Sudiarto Raharjo <willysr@slackbuilds.org>
Diffstat (limited to 'games/vbam')
-rw-r--r--games/vbam/README45
-rw-r--r--games/vbam/slack-desc16
-rw-r--r--games/vbam/vbam.SlackBuild135
-rw-r--r--games/vbam/vbam.info2
4 files changed, 138 insertions, 60 deletions
diff --git a/games/vbam/README b/games/vbam/README
index a300e865d277..940fe37e7971 100644
--- a/games/vbam/README
+++ b/games/vbam/README
@@ -1,19 +1,36 @@
-vbam (cross-platform GameBoy emulator)
+vbam (cross-platform gameboy/gbc/gba emulator)
-VisualBoyAdvance-M is a Nintendo Game Boy Emulator with high compatibility
-with commercial games. It emulates the Nintendo Game Boy Advance hand
-held console, in addition to the original Game Boy hand held systems
-and its Super and Color variants. VBA-M is a continued development of
-the now inactive VisualBoy Advance project, with many improvements from
-various developments of VBA.
+VisualBoyAdvance-M is a Nintendo Game Boy Advance Emulator with high
+compatibility with commercial games. It emulates the Nintendo Game Boy
+Advance hand held console, in addition to the original Game Boy hand
+held systems and its Super and Color variants. VBA-M is a continued
+development of the now inactive VisualBoy Advance project, with many
+improvements from various developments of VBA.
-This application is the wxGTK GUI version of VisualBoyAdvance-M. The
-name of the executable is "visualboyadvance-m".
+The main executable is /usr/games/vbam, which is a command-line app
+with no GUI controls.
-FFMPEG=ON will enable recording and playback. It requires ffmpeg.
+Optional dependencies:
-There are a couple of alternatives on SBo you might try instead of this
-VBAM SlackBuild: vbam-libretro, mgba, and/or libretro-mgba.
+wxGTK3 - highly recommended, autodetected (can be disabled via
+WX=no). This gives you a /usr/games/visualboyadvance-m executable that
+has a modern graphical user interface, plus desktop integration.
-Note: when upgrading from 2.0.2 to 2.1.0, you may have to "rm -rf
-~/.vbam". Do this if vbam segfaults.
+SFML - autodetected (can be disabled via SFML=no). Only required for
+emulating the GBA Link cable.
+
+lirc - autodetected (can be disabled via LIRC=no). Allows using an
+IR remote control to control the emulator. Only works with the SDL
+user interface (the vbam executable). Untested by the SlackBuild
+maintainer, as I don't own any lirc-compatible hardware.
+
+Notes:
+
+The config file (vbam.ini) is shared between the visualboyadvance-m
+and vbam executables, and lives in ~/.config/visualboyadvance-m/
+(mentioned here because the man pages don't document this). When
+upgrading versions, you might have to delete the config file if vbam
+and/or visualboyadvance-m crash or act weird.
+
+There are a couple of alternatives on SBo you might try instead of
+this vbam SlackBuild: mgba and/or higan.
diff --git a/games/vbam/slack-desc b/games/vbam/slack-desc
index 0c135c7c2ef6..152217859558 100644
--- a/games/vbam/slack-desc
+++ b/games/vbam/slack-desc
@@ -6,14 +6,14 @@
# customary to leave one space after the ':' except on otherwise blank lines.
|-----handy-ruler------------------------------------------------------|
-vbam: vbam (cross-platform GameBoy emulator)
-vbam:
-vbam: vbam is a project dedicated to gathering community patches to the
-vbam: VisualBoyAdvance GameBoy emulator into one easily accessible project.
-vbam:
-vbam: Homepage: http://vba-m.com
-vbam:
-vbam:
+vbam: vbam (cross-platform gameboy/gbc/gba emulator)
vbam:
+vbam: VisualBoyAdvance-M is a Nintendo Game Boy Advance Emulator with high
+vbam: compatibility with commercial games. It emulates the Nintendo Game Boy
+vbam: Advance hand held console, in addition to the original Game Boy hand
+vbam: held systems and its Super and Color variants. VBA-M is a continued
+vbam: development of the now inactive VisualBoy Advance project, with many
+vbam: improvements from various developments of VBA.
vbam:
+vbam: Build options: wxGTK3=@WXYN@, lirc=@LIRCYN@, SFML=@SFYN@.
vbam:
diff --git a/games/vbam/vbam.SlackBuild b/games/vbam/vbam.SlackBuild
index ba17cf9af86c..205511dbf373 100644
--- a/games/vbam/vbam.SlackBuild
+++ b/games/vbam/vbam.SlackBuild
@@ -4,23 +4,32 @@
# Currently maintained by B. Watson <yalhcru@gmail.com>.
# Previously maintained by Dugan Chen <email removed>.
+# Modified by the SlackBuilds.org project.
# Written by JK Wood <email removed>.
-# Slackbuild is released under the Dog-on-Fire License:
-# If use of this script causes your dog to catch on fire,
-# you agree to send me five dollars. Or a picture
-# of the dog on fire.
-# Otherwise, you're on your own. I've tested the script
-# on my own computer, and it hasn't broken anything.
-# So if it does it on your computer, that falls in
-# the realm of "Not my problem."
-#
-# Of course, if you'll send a bug report to the above
-# email address, I may be able to see what you did
-# wrong and prevent it from happening in the future.
-# In which case, I may just send YOU five dollars.
-
-# Modified by the SlackBuilds.org project.
+# Licensed under the WTFPL. See http://www.wtfpl.net/txt/copying/ for details.
+
+# 20211117 bkw: note to self: there's been recent activity in
+# upstream's git. If another 6-12 months goes by without a release,
+# consider updating this for the latest git.
+
+# 20211117 bkw: BUILD=2
+# - fix build for -current and recent wxGTK3 update.
+# - relicense as WTFPL with permission from JK Wood.
+# - old-style icon symlink.
+# - call executable with full path in .desktop.
+# - add missing changelog/readme/todo to docdir.
+# - get rid of FFMPEG option (it's always enabled now).
+# - disable checking for updates (there haven't been any in
+# 5 years anyway, and this is a bit of a privacy concern for
+# some users).
+# - make wxGTK3 optional.
+# - only include .desktop and doinst in package if wxGTK3 enabled.
+# - make SFML optional. it's actually autodetected in v2.1.4,
+# so all this means is removing it from REQUIRES and adding
+# a note to README.
+# - always build the SDL UI executable (/usr/games/vbam).
+# - include vbam.ini.sample in docdir.
# 20191129 bkw: updated for 2.1.4.
# 20180702 bkw: updated for 2.1.0.
@@ -47,16 +56,13 @@ cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=vbam
VERSION=${VERSION:-2.1.4}
-BUILD=${BUILD:-1}
+BUILD=${BUILD:-2}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
SRCVER="$VERSION"
SRCNAM="visualboyadvance-m"
-# Set to ON to enable FFMPEG A/V recording.
-FFMPEG=${FFMPEG:-OFF}
-
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
i?86) ARCH=i586 ;;
@@ -65,9 +71,6 @@ if [ -z "$ARCH" ]; then
esac
fi
-# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
-# the name of the created package would be, and then exit. This information
-# could be useful to other scripts.
if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
exit 0
@@ -110,7 +113,27 @@ find -L . -perm /111 -a \! -perm 755 -a -exec chmod 755 {} \+ -o \
# if both wx(Python|GTK) 2 and 3 are installed, /usr/bin/wx-config
# is a symlink to the config for whichever was installed last. Avoid
# confusion, force the correct version.
-WXCONF=${WXCONF:-/usr/lib$LIBDIRSUFFIX/wx/config/gtk2-unicode-3.0}
+# 20211117 bkw: willysr's wxGTK3 has switched from gtk2 to gtk3, so
+# this line had to be adjusted slightly. With gtk2 this was failing
+# to build on -current anyway...
+WXCONF=${WXCONF:-/usr/lib$LIBDIRSUFFIX/wx/config/gtk3-unicode-3.0}
+
+# 20211117 bkw: upstream doesn't autodetect wx, we have to explicitly
+# set it to ON or OFF.
+WXDEF="-DENABLE_WX=OFF"
+if [ "${WX:-yes}" = "yes" ]; then
+ [ -x "$WXCONF" ] && WXDEF="-DENABLE_WX=OFF -DwxWidgets_CONFIG_EXECUTABLE=$WXCONF"
+fi
+
+# 20211117 bkw: lirc doesn't autodetect.
+LIRCOPT=OFF
+[ "${LIRC:-yes}" = "yes" ] && pkg-config --exists lirc && LIRCOPT=ON
+
+# 20211117 bkw: no handy -Dwhatever to disable this, surgery required.
+# At first glance it looks like -DENABLE_LINK=OFF would work, but it
+# doesn't: it disables the GBA Link emulation, but the vbam binaries
+# still get linked with the SFML shared libs. Derp.
+[ "${SFML:-yes}" = "no" ] && sed -i '/^find_package(SFML/d' CMakeLists.txt
# upstream cleverly parses their own ChangeLog to get the version number
# that gets compiled into the binary. They un-cleverly failed to follow
@@ -118,18 +141,29 @@ WXCONF=${WXCONF:-/usr/lib$LIBDIRSUFFIX/wx/config/gtk2-unicode-3.0}
# says 2.0.1 in its window title. So:
sed -i '/\[2\.0\.2\]/s,Bug fix release,-,' CHANGELOG.md
+# 20211117 bkw: fix the SDL UI build.
+sed -i 's,KMOD_META,KMOD_ALT,g' src/sdl/SDL.cpp
+
+# 20211117 bkw: -fuse-ld=gold works, but doesn't speed things up much.
+
mkdir -p build
cd build
cmake \
- -DwxWidgets_CONFIG_EXECUTABLE=$WXCONF \
+ -DENABLE_SDL=ON \
+ "$WXDEF" \
+ -DENABLE_LINK=$LINKOPT \
-DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
-DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
-DCMAKE_INSTALL_PREFIX=/usr \
-DENABLE_ASM_CORE=${ASM} \
-DENABLE_ASM_SCALERS=${ASM} \
- -DENABLE_FFMPEG=${FFMPEG} \
+ -DENABLE_FFMPEG=ON \
+ -DENABLE_ONLINEUPDATES=OFF \
+ -DENABLE_LIRC=$LIRCOPT \
+ -DCMAKE_EXE_LINKER_FLAGS="-fuse-ld=gold" \
+ -DCMAKE_SHARED_LINKER_FLAGS="-fuse-ld=gold" \
-DCMAKE_BUILD_TYPE=Release ..
- make
+ make VERBOSE=1
sed -i \
-e 's,/usr/share/man,/usr/man,g' \
-e 's,/usr/bin,/usr/games,g' \
@@ -137,20 +171,47 @@ cd build
make install DESTDIR=$PKG
cd ..
-strip $PKG/usr/games/$SRCNAM
-ln -s $SRCNAM $PKG/usr/games/$PRGNAM
+strip $PKG/usr/games/*
+gzip $PKG/usr/man/man6/$PRGNAM.6
-gzip $PKG/usr/man/man6/$SRCNAM.6
-ln -s $SRCNAM.6.gz $PKG/usr/man/man6/$PRGNAM.6.gz
+mkdir -p $PKG/install
-mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-rm -f doc/ReadMe.MFC.txt # this is for Windows only
-cp -a doc/* $PKG/usr/doc/$PRGNAM-$VERSION
-cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+if [ -x $PKG/usr/games/$SRCNAM ]; then
+ gzip $PKG/usr/man/man6/$SRCNAM.6
-mkdir -p $PKG/install
-cat $CWD/slack-desc > $PKG/install/slack-desc
-cat $CWD/doinst.sh > $PKG/install/doinst.sh
+ # in case someone's missing /usr/games from $PATH:
+ sed -i 's,^Exec=,&/usr/games/,' $PKG/usr/share/applications/*desktop
+
+ # old-style windowmanagers might need this:
+ mkdir -p $PKG/usr/share/pixmaps
+
+ ln -s ../icons/hicolor/48x48/apps/$PRGNAM.png $PKG/usr/share/pixmaps/$PRGNAM.png
+
+ # only need the doinst.sh if the WX GUI was built.
+ cat $CWD/doinst.sh > $PKG/install/doinst.sh
+fi
+
+PKGDOC=$PKG/usr/doc/$PRGNAM-$VERSION
+mkdir -p $PKGDOC
+# This config file gets installed, but never actually used by vbam...
+mv $PKG/etc/$PRGNAM.cfg $PKGDOC/$PRGNAM.cfg.sample
+rmdir $PKG/etc
+rm -f doc/ReadMe.MFC.txt # this is for Windows only
+cp -a *.md doc/* $PKGDOC
+cat $CWD/$PRGNAM.SlackBuild > $PKGDOC/$PRGNAM.SlackBuild
+
+# 20211117 bkw: actually look at what we just built, to see what's
+# enabled (instead of trusting that everything got included correctly).
+# It's better to use objdump than ldd here IMO.
+SFYN=no; LIRCYN=no; WXYN=no
+objdump -p $PKG/usr/games/$PRGNAM | grep -q 'NEEDED *libsfml' && SFYN=yes
+strings $PKG/usr/games/$PRGNAM | grep -q lircrc && LIRCYN=yes
+[ -x $PKG/usr/games/$SRCNAM ] && WXYN=yes
+
+sed -e "s,@SFYN@,$SFYN," \
+ -e "s,@LIRCYN@,$LIRCYN," \
+ -e "s,@WXYN@,$WXYN," \
+ $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/games/vbam/vbam.info b/games/vbam/vbam.info
index e25af905d691..061e75b22c54 100644
--- a/games/vbam/vbam.info
+++ b/games/vbam/vbam.info
@@ -5,6 +5,6 @@ DOWNLOAD="https://github.com/visualboyadvance-m/visualboyadvance-m/archive/v2.1.
MD5SUM="394119c22b531bf0ca79ffc7717057d1"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES="SFML wxGTK3"
+REQUIRES=""
MAINTAINER="B. Watson"
EMAIL="yalhcru@gmail.com"