summaryrefslogtreecommitdiffstats
path: root/games/gzdoom-legacy/gzdoom-legacy.SlackBuild
blob: d2ab9ef85a5c537ee970b6dc5eec5af4a765f9d8 (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
#!/bin/bash

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

# 20211009 bkw: BUILD=3, fix build on -current.
# 20200426 bkw:
# - Fix <unknown version> in window title for real this time, BUILD=2.

# 20170610 bkw:
# - Renamed to gzdoom-legacy. Too much effort to keep testing old
#   gzdoom versions every time there's a new release, so the regular
#   gzdoom build will only support the newest version. If you're
#   wondering why I keep supporting old versions, it's because I have
#   old hardware. Doom is from the 1990s, it shouldn't need a $5000
#   gaming rig to play properly in 2017.

# 20170324 bkw:
# - Updated for 2.4.0.

# 20170207 bkw:
# - BUILD=2
# - Get rid of private fmodapi, now that the SBo fmodapi has been updated
#   to a new enough version. Re-add fmodapi to REQUIRES.
# - Fix download link so we always get the correct filename.

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

cd $(dirname $0) ; CWD=$(pwd)

PRGNAM=gzdoom-legacy
SRCNAM=gzdoom
VERSION=${VERSION:-2.4.0}
BUILD=${BUILD:-3}
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 $SRCNAM-g$VERSION $SRCNAM-$VERSION
tar xvf $CWD/$SRCNAM-g$VERSION.tar.gz || \
  tar xvf $CWD/g$VERSION.tar.gz || \
  tar xvf $CWD/$SRCNAM-$VERSION.tar.gz || \
  tar xvf $CWD/$VERSION.tar.gz
cd $SRCNAM-g$VERSION || cd $SRCNAM-$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 {} \+

# fmodapi support tries to find its lib in the current dir, fix it:
sed -i \
  "s,setPluginPath(progdir),setPluginPath(\"/usr/lib$LIBDIRSUFFIX/$SRCNAM\")," \
  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

# Version-specific patches. As of 2021, it's unlikely any old versions
# of gzdoom will build without patching.
[ -e $CWD/compilefix.$VERSION.diff ] && \
  patch -p1 < $CWD/compilefix.$VERSION.diff

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 \
	 -DFMOD_LIBRARY=/usr/lib${LIBDIRSUFFIX}/libfmodex${LIBDIRSUFFIX}.so \
    -DCMAKE_BUILD_TYPE=Release ..
  make VERBOSE=1
  mkdir -p $PKG/usr/games $PKG/usr/share/games/doom
  install -m0755 -s $SRCNAM $PKG/usr/games/$SRCNAM
  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/$SRCNAM
    install -m0755 -s liboutput_sdl.so $PKG/usr/lib$LIBDIRSUFFIX/$SRCNAM/liboutput_sdl.so
  fi
cd ..

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

# PNG converted from Windows icon
mkdir -p $PKG/usr/share/pixmaps
cat $CWD/$SRCNAM.png > $PKG/usr/share/pixmaps/$SRCNAM.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