#!/bin/bash # Slackware build script for VICE # Copyright 2008 Mauro Giachero (email removed) # Copyright 2020 B. Watson (yalhcru@gmail.com) # All rights reserved. # # Redistribution and use of this script, with or without modification, is # permitted provided that the following conditions are met: # # 1. Redistributions of this script must retain the above copyright # notice, this list of conditions and the following disclaimer. # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO # EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # 20200801 bkw: # - Take over maintenance # - Autodetect ffmpeg # - Allow building with SDL 1.x # - Allow building without pulseaudio # - Get rid of xa dep # - Install TTF fonts in correct place, get rid of other formats # - install-info in doinst.sh so vice.info shows up in the info dir # - Have slack-desc show build options # - Re-enable the old x64 emulator # - BUILD=3 PRGNAM=vice VERSION=${VERSION:-3.4} BUILD=${BUILD:-3} TAG=${TAG:-_SBo} if [ -z "$ARCH" ]; then case "$( uname -m )" in i?86) ARCH=i586 ;; arm*) ARCH=arm ;; *) ARCH=$( uname -m ) ;; esac fi CWD=$(pwd) TMP=${TMP:-/tmp/SBo} PKG=$TMP/package-$PRGNAM OUTPUT=${OUTPUT:-/tmp} if [ "$ARCH" = "i586" ]; then SLKCFLAGS="-O2 -march=i586 -mtune=i686" LIBDIRSUFFIX="" elif [ "$ARCH" = "i586" ]; then SLKCFLAGS="-O2 -march=i586 -mtune=i686" LIBDIRSUFFIX="" elif [ "$ARCH" = "i686" ]; then SLKCFLAGS="-O2 -march=i686 -mtune=i686" LIBDIRSUFFIX="" elif [ "$ARCH" = "x86_64" ]; then SLKCFLAGS="-O2 -fPIC -pipe" LIBDIRSUFFIX="64" else SLKCFLAGS="-O2" LIBDIRSUFFIX="" fi set -e # The "--enable-shared-ffmpeg" option creates conflicts with external # ffmpeg libraries, so we don't use it here. Static would be OK, but # it won't build, so it's not an option for now either: I don't care # enough about it to spend any more time trying to fix it. If you do # care, come up with a way to build with --enable-static-ffmpeg, send # me a patch, and I'll include it here. [ -x /usr/bin/ffmpeg ] && ffmpeg="--enable-external-ffmpeg" SDL="${SDL:-auto}" if [ "$SDL" = "auto" ]; then SDL=1 pkg-config --exists sdl2 && SDL=2 fi case "$SDL" in 1) sdlopt="--enable-sdlui" ;; 2) sdlopt="--enable-sdlui2" ;; *) echo -e "$( basename $0 ):" \ "invalid SDL option '$SDL'." \ "Valid options are:\n auto 1 2" \ 1>&2 exit 1 ;; esac # Anticipating 15.0's pure-alsa-system if [ "${PULSE:-yes}" != "yes" ]; then pulseopt="--without-pulse" fi echo "=== sdlopt '$sdlopt', ffmpeg '$ffmpeg', pulseopt '$pulseopt'" rm -rf $PKG mkdir -p $TMP $PKG $OUTPUT cd $TMP rm -rf $PRGNAM-$VERSION tar xvf $CWD/$PRGNAM-$VERSION.tar.?z cd $PRGNAM-$VERSION chown -R root:root . find -L . -perm /111 -a \! -perm 755 -a -exec chmod 755 {} \+ -o \ \! -perm /111 -a \! -perm 644 -a -exec chmod 644 {} \+ # Set proper paths in documentation. sed -i "s/\/usr\/local\/lib\//\/usr\/lib${LIBDIRSUFFIX}\//g" \ man/vice.1 sed -i 's/"\/vice_toc\.html"/"\/html\/vice_toc\.html"/g' \ src/arch/gtk3/uicommands.c sed -i "s/\/usr\/local/\/usr/g" doc/vice.* doc/html/*html sed -i "s/\/usr\/lib\//\/usr\/lib${LIBDIRSUFFIX}\//g" doc/vice.* doc/html/*html # Avoid the need for xa. It's only used to generate a small C header # file, which we include a prebuilt version of here. There's nothing # dynamic about this header, it's just a small chunk of 6502 object # code as a C array, and for a given version of vice it'll always be # the same code. cat $CWD/psiddrv.h.prebuilt.$VERSION > src/c64/psiddrv.h autoreconf -vif DOCDIR=/usr/doc/$PRGNAM-$VERSION PKGDOC=$PKG/$DOCDIR CFLAGS="$SLKCFLAGS -w -Wl,--allow-multiple-definition" \ CXXFLAGS="$SLKCFLAGS" \ XA=/bin/true \ ./configure \ $sdlopt \ $ffmpeg \ $pulseopt \ --enable-x64 \ --prefix=/usr \ --libdir=/usr/lib${LIBDIRSUFFIX} \ --sysconfdir=/etc \ --localstatedir=/var \ --mandir=/usr/man \ --infodir=/usr/info \ --docdir=$DOCDIR \ --with-x \ --enable-quicktime \ --enable-ethernet \ --enable-parsid \ --enable-cpuhistory \ --build=$ARCH-slackware-linux make make install-strip DESTDIR=$PKG rm -f $PKG/usr/info/dir gzip -9 $PKG/usr/man/man?/*.? $PKG/usr/info/* mkdir -p $PKG/usr/share/{applications,pixmaps} install -D -m 0644 $CWD/config/*.desktop $PKG/usr/share/applications install -D -m 0644 $CWD/config/vice.png $PKG/usr/share/pixmaps # Move the docs to the Slackware standard place, symlink to where vice # expects it to be. mkdir -p $PKGDOC mv $PKG/usr/lib$LIBDIRSUFFIX/$PRGNAM/doc/* $PKGDOC ( cd $PKGDOC chmod 644 * mkdir html mv *.html *.png *.gif *.css html/ ) ( cd $PKG/usr/lib$LIBDIRSUFFIX/$PRGNAM rmdir doc ln -s $DOCDIR doc ) # 20200728 bkw: when I inherited this build, it was installing the # fonts to the doc dir (where they can't be used), but updating # the font cache in doinst.sh. I'm not so sure the fonts are # really necessary, but in case they are, I've moved them to # /usr/share/fonts/TTF (and gotten rid of the non-TTF ones). mkdir -p $PKG/usr/share/fonts/TTF mv $PKGDOC/*.ttf $PKG/usr/share/fonts/TTF rm -f $PKGDOC/Lato-* # This would install Commodore font where other software can use it. # However, the characters in the font are in PETSCII order, not ASCII # or Unicode, so it's not all that useful. #ln -s ../../../lib$LIBDIRSUFFIX/$PRGNAM/common/CBM.ttf $PKG/usr/share/fonts/TTF cp -a AUTHORS ChangeLog COPYING FEEDBACK NEWS README $PKGDOC cat $CWD/$PRGNAM.SlackBuild > $PKGDOC/$PRGNAM.SlackBuild # Make the slack-desc reflect the build options. FF=no; SDL=1.2; PA=no # We can't use ldd to detect whether ffmpeg is built in since it # gets loaded with dlopen(). Hence this stuff: grep -q '^#define USE_SDLUI2\>' src/config.h && SDL=2.0 grep -q '^#define HAVE_FFMPEG\>' src/config.h && FF=yes grep -q '^#define USE_PULSE\>' src/config.h && PA=yes mkdir -p $PKG/install sed -e "s,@FF@,$FF," \ -e "s,@PA@,$PA," \ -e "s,@SDL@,$SDL," \ $CWD/slack-desc > $PKG/install/slack-desc cat $CWD/doinst.sh > $PKG/install/doinst.sh cd $PKG /sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}