aboutsummaryrefslogtreecommitdiff
path: root/games/odamex/odamex.SlackBuild
blob: dd0d7ff8737a4c09d968f78dbc64ed46ce83cdb4 (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
#!/bin/bash

# Slackware build script for odamex

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

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

# 20201024 bkw: update for v0.8.3.
# 20191201 bkw: update for v0.8.1.

# 20140910 bkw:
# - explicitly use the correct config script for wx, instead of relying
#   on /usr/bin/wx-config

# 20140827 bkw:
# - update for 0.7.0
# - require wxGTK3 (which is wx 3.x) instead of wxPython (wx 2.x)
# - pod-ify man page for easier editing
# - edit man page a bit
# - get rid of hard-coded /usr/share/games/doom, no longer needed
# - include sample orasrv.cfg from 0.6.4 source (it's gone from 0.7.0)

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

PRGNAM=odamex
VERSION=${VERSION:-0.8.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

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

# We can't trust the /usr/bin/wx-config symlink.
# Find the correct wx-config, if it exists. User can override by setting WXVER
# in the env, or by setting WXCONFIG to the full path.
WXVER=${WXVER:-3.0}
WXMAYBE="$( ls /usr/lib$LIBDIRSUFFIX/wx/config/*-$WXVER 2>/dev/null | head -1 )"
WXCONFIG=${WXCONFIG:-$WXMAYBE}
WXCONFIG=${WXCONFIG:-/usr/bin/wx-config}

rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf $PRGNAM-src-$VERSION
tar xvf $CWD/$PRGNAM-src-$VERSION.tar.bz2
cd $PRGNAM-src-$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 {} \+

# Make the launcher look in /usr/games for the odamex binary rather
# than the current directory. User can override with the settings
# dialog, this just sets the default.
sed -i \
  '/launchercfg_s.odamex_directory *= */s,wxGetCwd(),wxString::FromAscii("/usr/games"),' \
  odalaunch/src/dlg_main.cpp

# 20201024 bkw: Not sure why make is exiting with nonzero status after
# linking odalaunch. There are no error messages. Adding "-i" to the
# make command line is a band-aid for this.
mkdir -p build
cd build
  cmake \
    -DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
    -DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
    -DCMAKE_INSTALL_PREFIX=/usr \
    -DwxWidgets_CONFIG_EXECUTABLE=$WXCONFIG \
    -DCMAKE_BUILD_TYPE=Release ..
  make -i VERBOSE=1
cd ..

# cmake-based odamex lacks a 'make install' target, do it manually.
# Actually, there is one in 0.8.3, but it doesn't work.
mkdir -p $PKG/usr/games
install -s -m0755 build/client/$PRGNAM $PKG/usr/games
install -s -m0755 build/server/odasrv $PKG/usr/games
install -s -m0755 build/odalaunch/odalaunch $PKG/usr/games

mkdir -p $PKG/usr/share/games/doom

# wad file has moved in the source tree, accomodate either version
WAD="$PRGNAM.wad"
[ -e "wad/$PRGNAM.wad" ] && WAD="wad/$PRGNAM.wad"
install -m0644 $WAD $PKG/usr/share/games/doom

mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION/tech
cp -a CHANGELOG LICENSE MAINTAINERS README $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/odasrv.cfg > $PKG/usr/doc/$PRGNAM-$VERSION/odasrv.cfg.sample
install -m0644 documentation/tech/* $PKG/usr/doc/$PRGNAM-$VERSION/tech

# Man page created for this slackbuild
mkdir -p $PKG/usr/man/man6
gzip -9c < $CWD/$PRGNAM.6 > $PKG/usr/man/man6/$PRGNAM.6.gz

# Desktop stuff
mkdir -p $PKG/usr/share/applications $PKG/usr/share/pixmaps
for exe in $PRGNAM odasrv odalaunch; do
  sed -e '/^Encoding/d' -e 's,/usr/share/doom,/usr/share/games/doom,' \
    < installer/arch/$exe.desktop \
    > $PKG/usr/share/applications/$exe.desktop
  cat media/icon_${exe}_512.png > $PKG/usr/share/pixmaps/$exe.png
done

cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild

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}