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

# Slackware build script for fizmo

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

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

# 20180709 bkw: seems to have been exactly a year...
# - Updated for v0.8.5.
# - Use github download URL.
# - Add SDL2=no option.
# - Add support for glktermw and remglk.
# - Fix slack-desc and README typos.
# - Update README for new optional deps.
# - Make slack-desc show whether package built with (SDL2|glktermw|remglk).

# 20170709 bkw:
# - Updated for v0.8.5_b1. Normally we avoid betas, but 0.8.4 has a
#   horrible bug in its 'make install' target, and 0.8.5_b1 fixes
#   that bug and is otherwise identical to 0.8.4.
# - Add icon, .desktop, and doinst.
# - Add note about optional SDL2 dep to README.

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

PRGNAM=fizmo
VERSION=${VERSION:-0.8.5}
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 the variable PRINT_PACKAGE_NAME is set, then this script will report what
# the name of the created package would be, and then exit. This information
# could be useful to other scripts.
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

# 0.8.5 doesn't really need this, but leave it in place in case someone
# wants to build 0.8.5_b1, or in case there's a future 0.8.6_b1 or
# so. Needed because upstream's beta versions have -b1 suffix, and Slack
# package version number can't have a dash.
SRCVER=${VERSION/_/-}

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

# The configure script doesn't autodetect when sdl2 is missing,
# so let's help it out a little.
if [ "${SDL2:-yes}" = "yes" ] && pkg-config --exists sdl2; then
  SDLARG="--enable-sdl"; SDLYN="yes"
else
  SDLARG="--disable-sdl"; SDLYN="no"
fi

# Likewise glktermw. Niche-market, but include for completeness' sake.
if [ "${GLK:-yes}" = "yes" -a -e /usr/include/glktermw/glk.h ]; then
  GLKARG="--enable-glktermw --with-glktermw-includedir=/usr/include/glktermw"
  GLKYN="yes"
else
  GLKARG="--disable-glktermw"
  GLKYN="no"
fi

# remglk looks even more niche-market than glktermw... speaks JSON, not
# English, intended for stuff like a web or irc backend.
if [ "${REMGLK:-yes}" = "yes" -a -e /usr/include/remglk/glk.h ]; then
  REMGLKARG="--enable-remglk --with-remglk-includedir=/usr/include/remglk"
  REMGLKYN="yes"
else
  REMGLKARG="--disable-remglk"
  REMGLKYN="no"
fi

# fizmo-glktermw and fizmo-remglk don't have man pages. They're
# experimental meaning likely to change frequently, so I'm too lazy to
# write man pages for them.

CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
./configure \
  $SDLARG \
  $GLKARG \
  $REMGLKARG \
  --bindir=/usr/games \
  --prefix=/usr \
  --libdir=/usr/lib${LIBDIRSUFFIX} \
  --sysconfdir=/etc \
  --localstatedir=/var \
  --mandir=/usr/man \
  --docdir=/usr/doc/$PRGNAM-$VERSION \
  --build=$ARCH-slackware-linux

make
make install-strip DESTDIR=$PKG
ln -s $PRGNAM-ncursesw $PKG/usr/games/$PRGNAM

gzip -9 $PKG/usr/man/man6/*.6
ln -s $PRGNAM-ncursesw.6.gz $PKG/usr/man/man6/$PRGNAM.6.gz

( cd doc ; ./create-txts.sh )
rm -f INSTALL.txt QUICKSTART.txt # don't need install instructions

# Icon created by SlackBuild author, based on Slackware 14.2's
# /usr/share/pixmaps/xterm-color_48x48.xpm
mkdir -p $PKG/usr/share/pixmaps
cat $CWD/$PRGNAM.png > $PKG/usr/share/pixmaps/$PRGNAM.png

# Desktop file written by SlackBuild author. It starts the curses version,
# since the SDL2 version doesn't have a file-picker dialog if you start
# it with no arguments (plus, SDL2 is optional).
mkdir -p $PKG/usr/share/applications
cat $CWD/$PRGNAM.desktop > $PKG/usr/share/applications/$PRGNAM.desktop

mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
cp -a *.txt $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild

mkdir -p $PKG/install
sed -e "s,@SDLYN@,$SDLYN," \
    -e "s,@GLKYN@,$GLKYN," \
    -e "s,@REMGLKYN@,$REMGLKYN," \
    $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