summaryrefslogtreecommitdiff
path: root/games/glbsp/glbsp.SlackBuild
blob: d171dc927739e958a599760a70e02f4039056d85 (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
#!/bin/bash

# Slackware build script for glbsp

# Written by B. Watson (urchlay@slackware.uk)

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

# 20211008 bkw: BUILD=2
# - include missing *.txt docs.
# - make fltk an optional dep.
# - include new-style icons.
# - add .desktop for nodeview.
# 20170621 bkw: fix build for -current (post-14.2)
# 20151126 bkw: fix build for -current (preparing for 14.2)

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

PRGNAM=glbsp
VERSION=${VERSION:-2.24}
BUILD=${BUILD:-2}
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

SRCVER=$( echo $VERSION | sed 's/\.//g' )

rm -rf $PKG
mkdir -p $TMP $PKG/usr/bin $PKG/usr/lib$LIBDIRSUFFIX $PKG/usr/man/man1 $OUTPUT
cd $TMP
rm -rf $PRGNAM-$VERSION-source
tar xvf $CWD/${PRGNAM}_src_${SRCVER}.tar.gz
cd $PRGNAM-$VERSION-source
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 {} \+

# Use fltk-config --cflags and --ldflags instead of hardcoded values
patch -p1 < $CWD/fltkconf.diff

# Upstream doesn't build a shared lib, but we will by default.
if [ "${STATIC:-no}" != "yes" ]; then
	patch -p1 < $CWD/dynamic_libglbsp.diff
fi

sed -i "s/-O2/$SLKCFLAGS/" Makefile.unx

# Fix build on gcc7
sed -i 's,return *false,return 0,' nodeview/path.cc

make -f Makefile.unx
make -f Makefile.unx install \
  INSTALL_PREFIX=$PKG/usr \
  MAN_PREFIX=$PKG/usr/man \
  LIBDIR=$PKG/usr/lib$LIBDIRSUFFIX

gzip -9 $PKG/usr/man/man1/$PRGNAM.1

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

mkdir -p $PKG/usr/lib$LIBDIRSUFFIX $PKG/usr/include/$PRGNAM
cat src/$PRGNAM.h > $PKG/usr/include/$PRGNAM/$PRGNAM.h

if [ "${STATIC:-no}" = "yes" ]; then
  cat lib$PRGNAM.a > $PKG/usr/lib$LIBDIRSUFFIX/lib$PRGNAM.a
fi

# I don't know whether apps including this header normally #include
# <glbsp.h> or <glbsp/glbsp.h>. The Debian package has both (with
# /usr/include/glbsp.h as a symlink), I will do likewise.
( cd $PKG/usr/include ; ln -s $PRGNAM/$PRGNAM.h $PRGNAM.h ) || exit 1

INCLUDES="does not include"
# Build with FLTK=no if have fltk but don't need the GUI.
if [ "${FLTK:-yes}" = "yes" ] && [ -x /usr/bin/fltk-config ]; then
  INCLUDES="includes"
  make -f Makefile.unx glBSPX
  cp glBSPX $PKG/usr/bin
  mkdir -p $PKG/usr/share/pixmaps $PKG/usr/share/applications
  cat $CWD/$PRGNAM.desktop > $PKG/usr/share/applications/$PRGNAM.desktop
  cat $CWD/nodeview.desktop > $PKG/usr/share/applications/nodeview.desktop
  cat gui/icon.xpm > $PKG/usr/share/pixmaps/$PRGNAM.xpm
  cd nodeview
    sed -i "s/-O -g3/$SLKCFLAGS/" Makefile.unx
    make -f Makefile.unx bin
    cp nodeview $PKG/usr/bin
    cat README.txt TODO.txt > $PKG/usr/doc/$PRGNAM-$VERSION/nodeview.txt
  cd ..

# 20211008 bkw: icons were extracted from included OSX icons with
# libicns, like so:
# icns2png -x gui/glBSPX.app/Contents/Resources/glbspx.icns
# rm -f *x1.png
  for i in 16 32 48 128; do
    size=${i}x${i}
    dir=$PKG/usr/share/icons/hicolor/$size/apps
    mkdir -p $dir
    cat $CWD/icons/glbspx_${size}x32.png > $dir/$PRGNAM.png
  done
fi

mkdir -p $PKG/install
sed "s,@INCLUDES@,$INCLUDES," < $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