aboutsummaryrefslogtreecommitdiff
path: root/games/gzdoom/gzdoom.SlackBuild
blob: 404ddb1a7deaab89f98266b1a312b99b7cee6bb8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
#!/bin/sh

# Slackware build script for gzdoom

# Written by B. Watson (yalhcru@gmail.com)

# Licensed under the WTFPL. See http://www.wtfpl.net/txt/copying/ for details.

# 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.

PRGNAM=gzdoom
VERSION=${VERSION:-4.3.3}
BUILD=${BUILD:-1}
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" = "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 || \
  tar xvf $CWD/g$VERSION.tar.gz || \
  tar xvf $CWD/$PRGNAM-$VERSION.tar.gz || \
  tar xvf $CWD/$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 {} \+

# gzdoom in windowed mode wants to display its git tag and hash as part
# of the window title. For releases this shows up as "<unknown version> 0",
# which doesn't hurt anything but is ugly.
# This makes the window title appear as e.g. "GZDOOM 2.1.1 (Aug 3 2016)". The
# date is the build date.
patch -p1 < $CWD/window_title_version.diff
sed -i "/#define *VERSIONSTR/s,GIT_DESCRIPTION,\"$VERSION\"," src/version.h

# This isn't currently used, but was in the past, and will be again I'm sure.
[ -e $CWD/compilefix.$VERSION.diff ] && \
  patch -p1 < $CWD/compilefix.$VERSION.diff

# 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

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\\\"" \
    -DCMAKE_INSTALL_PREFIX=/usr \
    -DLIB_SUFFIX=${LIBDIRSUFFIX} \
    -DMAN_INSTALL_DIR=/usr/man \
    -DCMAKE_BUILD_TYPE=Release ..
  make VERBOSE=1
  mkdir -p $PKG/usr/games $PKG/usr/share/games/doom
  install -m0755 -s $PRGNAM $PKG/usr/games/$PRGNAM
  install -m0644 *.pk3 $PKG/usr/share/games/doom/
cd ..

# .desktop written for this SlackBuild
mkdir -p $PKG/usr/share/applications
cat $CWD/$PRGNAM.desktop > $PKG/usr/share/applications/$PRGNAM.desktop

# PNG converted from Windows icon
mkdir -p $PKG/usr/share/pixmaps
cat $CWD/$PRGNAM.png > $PKG/usr/share/pixmaps/$PRGNAM.png

mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
cp -a docs/* $PKG/usr/doc/$PRGNAM-$VERSION
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:-tgz}