aboutsummaryrefslogtreecommitdiff
path: root/games/gzdoom/gzdoom.SlackBuild
blob: 2976aa808b3496e45009e4b5e9e3d7a2069698cd (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
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
#!/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.

# 20170113 bkw:
# - Updated for 2.3.2. 1.9.1 and 1.8.09 still work, too.
# - Use newer version of fmodapi. Due to licensing confusion, the
#   fmodapi version on SBo hasn't been upgraded in forever. So this
#   build now uses its own dedicated fmodapi, which installs to
#   a private directory (won't conflict with system fmodapi, if present).

# 20160928 bkw:
# - Updated for 2.2.0. 1.9.1 and 1.8.09 still work, too.

# 20160803 bkw:
# - Updated for 2.1.1. Also for 1.9.1 and 1.8.09 (see README_versions.txt)
# - Update .info for new HOMEPAGE
# - Upstream's now doing releases on github, so README.source is
#   no longer needed.
# - Install executable in /usr/games, not /usr/bin
# - Get rid of -j1 on make command (parallel builds work now)
# - Make the game version show up in the window title, instead
#   of <unknown version>.
# - Fix VERSIONSTR if it's wrong.
# - i486 => i586

# 20140305 bkw:
# - Moved giant block comments about the source to README.source,
#   updated them to reflect upstream's change from svn to git.
# - Updated for 1.8.2 (sort-of; see README.source)

# 20130612 bkw: Updated for 1.8.00

# 20130416 bkw:
# - Updated for 1.7.01
# - Add README note about config file location change
# - Split up giant README
# - Fix CRLF endings in usr/doc/gzdoom-*/*
# - Add WTFPL

PRGNAM=gzdoom
VERSION=${VERSION:-2.3.2}
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

# See if fmodapi tarball is in script dir. If so, use it. We
# currently support 2 versions of it: 4.44.50 and 4.44.61. These
# are newer than the SBo fmodapi package, which is 4.28.17. You
# could try a different fmodapi here (by editing the 'for' args),
# but only for recent-ish fmodapi versions because this stuff
# depends on both x86 and x86_64 being included in the fmodapi
# tarball (which wasn't the case for 4.28.17 and earlier).
for i in 44450 44461; do
  [ -e $CWD/fmodapi${i}linux.tar.gz ] && fmodver=$i
done

[ -n "$fmodver" ] && tar xvf $CWD/fmodapi${fmodver}linux.tar.gz

chown -R root:root .
find -L . \
 \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 -o -perm 511 \) \
 -exec chmod 755 {} \; -o \
 \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
 -exec chmod 644 {} \;

# Set up fmodapi, if present.
if [ -n "$fmodver" ]; then
  fmoddir=fmodapi${fmodver}linux

  mkdir -p $PKG/usr/lib$LIBDIRSUFFIX/$PRGNAM $PKG/usr/include/tmp

  mv $fmoddir/api/lib/libfmodex$LIBDIRSUFFIX-*.so \
     $fmoddir/api/lib/libfmodexL$LIBDIRSUFFIX-*.so \
     $PKG/usr/lib$LIBDIRSUFFIX/$PRGNAM

  mv $fmoddir/api/inc/* $PKG/usr/include/tmp

  cd $PKG/usr/lib$LIBDIRSUFFIX/$PRGNAM
    ln -s libfmodex$LIBDIRSUFFIX-*.so libfmodex$LIBDIRSUFFIX.so
    ln -s libfmodexL$LIBDIRSUFFIX-*.so libfmodexL$LIBDIRSUFFIX.so
  cd -

  # These cmake args will cause cmake to ignore any fmodapi installed in
  # the standard system locations. The -Wl,-rpath stuff is needed to get
  # gzdoom to use the fmod we include here (at runtime), instead of the
  # system-wide one in /usr/lib$LIBDIRSUFFIX.
  fmod_cmake="\
    -DFMOD_INCLUDE_DIR=$PKG/usr/include/tmp \
    -DFMOD_LIBRARY=$PKG/usr/lib$LIBDIRSUFFIX/$PRGNAM/libfmodex$LIBDIRSUFFIX.so \
    -DCMAKE_EXE_LINKER_FLAGS='-Wl,-rpath=/usr/lib$LIBDIRSUFFIX/$PRGNAM'
    -DCMAKE_MODULE_LINKER_FLAGS='-Wl,-rpath=/usr/lib$LIBDIRSUFFIX/$PRGNAM'"
fi

# fmodapi MIDI support tries to find its lib in the current dir, fix it:
sed -i \
  "s,setPluginPath(progdir),setPluginPath(\"/usr/lib$LIBDIRSUFFIX/$PRGNAM\")," \
  src/sound/fmodsound.cpp

# 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

# Sometimes upstream forgets to bump the version number, so the window
# title will read 1.8.08 for version 1.8.09, eg.
sed -i "/#define *VERSIONSTR/s,\"[^\"]*\",\"$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

mkdir -p build
cd build
  cmake \
    $fmod_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/

  # If fmodapi support was compiled in:
  if [ -e liboutput_sdl.so ]; then
    mkdir -p $PKG/usr/lib$LIBDIRSUFFIX/$PRGNAM
    install -m0755 -s liboutput_sdl.so $PKG/usr/lib$LIBDIRSUFFIX/$PRGNAM/liboutput_sdl.so
  fi
cd ..

# gzdoom doesn't install any headers; this is for the fmod hackery.
rm -rf $PKG/usr/include

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