#!/bin/bash

# Slackware build script for fountain

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

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

# Notes:

# I can't find an actual content-bearing homepage for this. It's a
# very useful utility, so I packaged it up with a placeholder homepage.

# The support library tracefct is just built statically and linked into
# the executable. If ever there's a need for it, it could be broken out
# into its own SlackBuild easily enough.

# No idea why the man page is installed in section "l". I never heard
# of this before. Wikipedia lists it as "LAPACK library functions",
# which this most certainly isn't. So I moved it to section 1.
# 20250915 bkw: fountain's upstream (Diab Jerius) points out that
# man page section "l" means "local", and that man-db on Linux still
# includes it in the default search path. I'll stick with section 1
# anyway, since Slackware has no /usr/man/manl/ and I don't want to
# create it just for one man page.

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

PRGNAM=fountain
VERSION=${VERSION:-1.0.3}
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 [ ! -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

LIBNAM=tracefct
LIBVER=${LIBVER:-1.0.10}

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

DOCDIR=/usr/doc/$PRGNAM-$VERSION
PKGDOC=$PKG/$DOCDIR

# don't see much point making this library a separate build.
cd $LIBNAM-$LIBVER
LIBINST="$(pwd)/inst"

CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
./configure \
  --prefix=$LIBINST \
  --disable-shared \
  --enable-static

make
make install-strip
cd -

PKG_CONFIG_PATH="$LIBINST/lib/pkgconfig:$PKG_CONFIG_PATH" \
CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
./configure \
  --prefix=/usr \
  --libdir=/usr/lib${LIBDIRSUFFIX} \
  --sysconfdir=/etc \
  --localstatedir=/var \
  --mandir=/usr/man \
  --docdir=/usr/doc/$PRGNAM-$VERSION \
  --disable-static \
  --build=$ARCH-slackware-linux

make
make install-strip DESTDIR=$PKG docdir=$DOCDIR

# who ever heard of man section "l"? horrible idea anyway (looks too
# much like a 1 in most fonts). the "right" way to fix this would
# be to sed docs/Makefile.am, but this project is too old for modern
# autotools to work with, so post hoc hackery is called for. While
# we're at it, fix some grammar and readability issues.
mkdir -p $PKG/usr/man/man1
mv $PKG/usr/man/manl/$PRGNAM.l $PKG/usr/man/man1/$PRGNAM.1
rm -rf $PKG/usr/man/manl
sed -i -e "s,\($PRGNAM \)l,\11,g" \
       -e 's/Command (/Commands (/' \
       -e 's/may also/will also/' \
       -e 's/writes it to/writes (pipes) it to/' \
       -e 's/which will be passed the/will be passed \\fBfountain\\fR'"'s standard/" \
       -e 's/quoted from the shell/quoted to protect them from the shell/' \
    $PKG/usr/man/man1/$PRGNAM.1
gzip -9 $PKG/usr/man/man1/$PRGNAM.1

cp -a COPYING ChangeLog NEWS README $PKGDOC
cat $CWD/$PRGNAM.SlackBuild > $PKGDOC/$PRGNAM.SlackBuild

mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc

cd $PKG
/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
