166 lines
5.4 KiB
Bash
166 lines
5.4 KiB
Bash
#!/bin/bash
|
|
|
|
# Slackware build script for gzdoom
|
|
|
|
# Written by B. Watson (urchlay@slackware.uk)
|
|
|
|
# Licensed under the WTFPL. See http://www.wtfpl.net/txt/copying/ for details.
|
|
|
|
# 20230810 bkw: add patch to fix build on -current (does no harm on 15.0).
|
|
# 20230109 bkw: Updated for 4.10.0. Many thanks to fourtysixandtwo for
|
|
# testing this on more capable hardware than I have, and for finding
|
|
# the "-glversion 3.3" argument.
|
|
# 20201115 bkw: Add missing fix_zipdir.diff. Dammit.
|
|
# 20201107 bkw: Updated for 4.5.0.
|
|
# 20201027 bkw:
|
|
# - Updated for 4.4.2.
|
|
# - Add new zmusic dep.
|
|
# - Use 'make install/strip' now that it's supported.
|
|
# - Use upstream's icon, multiple sizes in /usr/share/icons.
|
|
# 20200302 bkw: Updated for 4.3.3.
|
|
# 20191201 bkw: Updated for 4.2.4.
|
|
# 20181022 bkw: Updated for 3.6.0.
|
|
# 20180827 bkw: Updated for 3.5.1.
|
|
# 20180801 bkw: Updated for 3.5.0.
|
|
# 20180623 bkw: Updated for 3.4.1 (released the day after my 3.4.0 update).
|
|
# 20180612 bkw: Updated for 3.4.0.
|
|
# 20180104 bkw: Updated for 3.2.5.
|
|
# 20171222 bkw: Updated for 3.2.4.
|
|
# 20170608 bkw:
|
|
# - Updated for 3.1.0. fmodapi support has been removed by upstream, so
|
|
# it's no longer a dep.
|
|
# - Add OpenAL as a dep. Technically it's not required, as gzdoom will
|
|
# happily compile & run without it... but it won't be able to make
|
|
# any sound at all. Nobody wants this. If you disagree with my decision
|
|
# to make OpenAL a hard dep, I don't want to hear about it (you won't
|
|
# be able to make sound anyway, so I won't have to...)
|
|
# - Stop supporting old versions of gzdoom. The old versions are now
|
|
# supported as "gzdoom-legacy" for those that need them.
|
|
|
|
cd $(dirname $0) ; CWD=$(pwd)
|
|
|
|
PRGNAM=gzdoom
|
|
VERSION=${VERSION:-4.10.0}
|
|
BUILD=${BUILD:-1}
|
|
TAG=${TAG:-_SBo}
|
|
PKGTYPE=${PKGTYPE:-tgz}
|
|
|
|
if [ -z "$ARCH" ]; then
|
|
case "$( uname -m )" in
|
|
i?86) ARCH=i586 ;;
|
|
arm*) ARCH=arm ;;
|
|
*) ARCH=$( uname -m ) ;;
|
|
esac
|
|
fi
|
|
|
|
if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
|
|
echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
|
|
exit 0
|
|
fi
|
|
|
|
TMP=${TMP:-/tmp/SBo}
|
|
PKG=$TMP/package-$PRGNAM
|
|
OUTPUT=${OUTPUT:-/tmp}
|
|
|
|
if [ "$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"
|
|
LIBDIRSUFFIX="64"
|
|
else
|
|
SLKCFLAGS="-O2"
|
|
LIBDIRSUFFIX=""
|
|
fi
|
|
|
|
set -e
|
|
|
|
rm -rf $PKG
|
|
mkdir -p $TMP $PKG $OUTPUT
|
|
cd $TMP
|
|
rm -rf $PRGNAM-g$VERSION $PRGNAM-$VERSION
|
|
tar xvf $CWD/$PRGNAM-g$VERSION.tar.gz
|
|
cd $PRGNAM-g$VERSION || 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 {} \+
|
|
|
|
# 20230810 bkw: patch for gcc 13 (Slackware -current), from AUR, by
|
|
# way of biker_rat on LQ, delivered C/O ponce.
|
|
patch -p1 < $CWD/gcc13-missing-includes.diff
|
|
|
|
# 20201027 bkw: fix the '<unknown version>' in the window title. This
|
|
# used to be done in an uglier way (with a patch that occasionally broke
|
|
# when applied against new gzdooms).
|
|
sed -i '/COMMAND.*UpdateRevision/s,^,# ,' src/CMakeLists.txt
|
|
( echo "#define GIT_DESCRIPTION \"$VERSION\""
|
|
echo "#define GIT_HASH \"release\""
|
|
echo "#define GIT_TIME __DATE__" ) > src/gitinfo.h
|
|
|
|
# 3.1.0 started needing -DNDEBUG. Using ld.gold speeds up the final link
|
|
# enough to be worth using (saves 17+ sec on my test box).
|
|
SLKCFLAGS="$SLKCFLAGS -DNDEBUG -fuse-ld=gold"
|
|
|
|
# 20200302 bkw: gcc 5.5 needs this, not sure it's required by the C++ spec
|
|
sed -i '1i#include <cmath>' \
|
|
src/rendering/swrenderer/drawers/r_draw.cpp \
|
|
src/rendering/swrenderer/viewport/r_spritedrawer.cpp
|
|
|
|
# 20220318 bkw: gzdoom requires SSE2. not a problem for x86_64, but we
|
|
# have to explicitly set the flags for the 32-bit build to succeed.
|
|
SLKCFLAGS+=" -msse -msse2"
|
|
|
|
mkdir -p build
|
|
cd build
|
|
cmake \
|
|
-DCMAKE_C_FLAGS_RELEASE:STRING="$SLKCFLAGS -DSHARE_DIR=\\\"/usr/share/games/doom\\\"" \
|
|
-DCMAKE_CXX_FLAGS_RELEASE:STRING="$SLKCFLAGS -DSHARE_DIR=\\\"/usr/share/games/doom\\\"" \
|
|
-DINSTALL_DOCS_PATH=doc/$PRGNAM-$VERSION \
|
|
-DINSTALL_PATH=games \
|
|
-DCMAKE_INSTALL_PREFIX=/usr \
|
|
-DLIB_SUFFIX=${LIBDIRSUFFIX} \
|
|
-DMAN_INSTALL_DIR=/usr/man \
|
|
-DCMAKE_BUILD_TYPE=Release ..
|
|
make VERBOSE=1
|
|
make install/strip DESTDIR=$PKG
|
|
cd ..
|
|
|
|
if fgrep -q '<unknown' src/gitinfo.h; then
|
|
echo "*** BREAKAGE: gitinfo.h got regenerated with <unknown version>" 1>&2
|
|
echo "*** Fix it, or get the maintainer to." 1>&2
|
|
echo "*** Press ^C to abort or wait 5 seconds for the build to continue" 1>&2
|
|
sleep 5
|
|
fi
|
|
|
|
# .desktop written for this SlackBuild
|
|
mkdir -p $PKG/usr/share/applications
|
|
cat $CWD/$PRGNAM.desktop > $PKG/usr/share/applications/$PRGNAM.desktop
|
|
|
|
# New-school desktop-ey icons.
|
|
for i in 16 22 32 48 64 128 256; do
|
|
SIZE=${i}x${i}
|
|
DIR=$PKG/usr/share/icons/hicolor/$SIZE/apps
|
|
mkdir -p $DIR
|
|
convert src/posix/zdoom.xpm -resize $SIZE $DIR/$PRGNAM.png
|
|
done
|
|
|
|
# Old-school windowmanagerish icon.
|
|
mkdir -p $PKG/usr/share/pixmaps
|
|
ln -s ../icons/hicolor/64x64/apps/$PRGNAM.png $PKG/usr/share/pixmaps/$PRGNAM.png
|
|
|
|
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
|
|
cat $CWD/README_SBo.txt > $PKG/usr/doc/$PRGNAM-$VERSION/README_SBo.txt
|
|
|
|
# Fix DOS CRLF line endings. The stuff in licenses/ is already OK, for 2.3.2.
|
|
sed -i 's/\r//' $PKG/usr/doc/$PRGNAM-$VERSION/*.*
|
|
|
|
mkdir -p $PKG/install
|
|
cat $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
|