###########################################################################
## REMOVE THIS ENTIRE BLOCK OF TEXT (AFTER READING IT!)
##
## This template is not meant to be a "cut and paste" script to enable
## any random user to make a working package.  While we're certainly not
## discouraging use of this template, if you haven't manually gone
## through each step of the process without the build script (typically
## as a normal user, as this will reveal problems that you won't see as
## root), then there's a good chance that something important is missing
## from your submission.
##
## When using this template script, please remove as many of these
## unnecessary comments as possible.  Commented code is a good thing, but
## if it's obvious, there's no need to comment it.
## 
## AGAIN, REMOVE THE COMMENTS IF THEY ARE NOT NEEDED--DON'T JUST DELETE
## THIS BLOCK OF TEXT WITHOUT BOTHERING TO READ WHAT'S IN IT.
###########################################################################

#!/bin/sh
#
# Slackware build script for viking
#
# Written by Beej Jorgensen <beej@beej.us>

# Add license information here if you desire; otherwise, delete this
# comment block to grant this script to the public domain, which is
# the preferred thing to do.
#
# Some licenses may incorporate the "Written by" information above, and if
# so, that line can be omitted.
#
# We strongly suggest *not* using GPL for scripts, as it requires a copy
# of the GPL to be distributed with it.  Since the GPL itself is longer
# than any build script will be, this just doesn't make good sense...

# (This script based on Slackbuild.org's template.SlackBuild 1.4.  You
# should delete this entire comment, and the following two lines of code.)
echo 'You need to fully edit this script before you run it!'
exit 1

PRGNAM=viking
VERSION=${VERSION:-0.9.7}
ARCH=${ARCH:-i486}		# this should not change
BUILD=${BUILD:-1}
TAG=${TAG:-_beej}		# use "_SBo" for slackbuilds.org

CWD=$(pwd)
TMP=${TMP:-/tmp/build}	# use "/tmp/SBo" for slackbuilds.org
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp/build	# Drop the package in /tmp/build

if [ "$ARCH" = "i386" ]; then
  SLKCFLAGS="-O2 -march=i386 -mtune=i686"
elif [ "$ARCH" = "i486" ]; then
  SLKCFLAGS="-O2 -march=i486 -mtune=i686"
elif [ "$ARCH" = "i586" ]; then
  SLKCFLAGS="-O2 -march=i586 -mtune=i686"
elif [ "$ARCH" = "i686" ]; then
  SLKCFLAGS="-O2 -march=i686 -mtune=i686"
elif [ "$ARCH" = "x86_64" ]; then
  SLKCFLAGS="-O2 -fPIC"
fi

set -e # Exit on most errors
# If you prefer to do selective error checking with 
#   command || exit 1
# then that's also acceptable.

rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf $PRGNAM-$VERSION
tar xvf $CWD/viking-0.9.7.tar.gz
cd $PRGNAM-$VERSION
chown -R root:root .
find . \
 \( -perm 777 -o -perm 775 -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 {} \;

# Your application will probably need different configure flags; these
# are provided as an example only.  Be sure to build only shared
# libraries unless there's some need for static.
CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
./configure \
  --prefix=/usr \
  --sysconfdir=/etc \
  --localstatedir=/var \
  --mandir=/usr/man \
  --docdir=/usr/doc/$PRGNAM-$VERSION \
  --build=$ARCH-slackware-linux

# Compile the application and install it into the $PKG directory
make
make install DESTDIR=$PKG

# Strip binaries and libraries--this can be done with "make install-strip"
# in many source trees, and that's usually acceptable if so, but if not,
# use this:
( cd $PKG
  find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | \
    xargs strip --strip-unneeded 2> /dev/null || true
  find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | \
    xargs strip --strip-unneeded 2> /dev/null
)

# Compress man pages.  If the man pages are installed to /usr/share/man
# instead, you'll need to either add the --mandir=/usr/man flag to
# configure or move them manually after the make install process is run.
( cd $PKG/usr/man
  find . -type f -exec gzip -9 {} \;
  for i in $( find . -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
)

# Compress info pages and remove the package's dir file.  If no info
# pages are installed by the software, don't leave this in the script.
rm -f $PKG/usr/info/dir
gzip -9 $PKG/usr/info/*.info*

# Remove perllocal.pod and other special files that don't need to be
# installed, as they will overwrite what's already on the system.  If
# this is not needed, remove it from the script.
( cd $PKG
  # Remove "special" files
  find . -name perllocal.pod \
    -o -name ".packlist" \
    -o -name "*.bs" \
    | xargs rm -f
)

# Copy program documentation into the package.  The included
# documentation varies from one application to another, so be sure to
# adjust your script as needed.  Also, include the SlackBuild script in
# the documentation directory.
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
cp -a \
  #### DOCUMENTATION FILES GO HERE #### \
  $PKG/usr/doc/$PRGNAM-$VERSION

# Copy the slack-desc (and a custom doinst.sh if necessary) into ./install
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh

# Make the package; be sure to leave it in $OUTPUT.  If package symlinks
# need to be created during install *before* your custom contents of
# doinst.sh runs, then add the -p switch to the makepkg command below--
# see makepkg(8) for details.
cd $PKG
/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.tgz
