#!/bin/sh
#
# iodoom3.SlackBuild
# 2013-05-04
#
# http://wiki.iodoom3.org/Downloading_and_Compiling_under_Linux

PRGNAM=iodoom3
VERSION=20130407

# automatically determine the architecture
if [ -z "$ARCH" ]; then
  case "$(uname -m)" in
    i686) ARCH=i686 ;;
    x86_64) ARCH=x86_64 ;;
       *) exit 1 ;;
  esac
fi

BUILD=${BUILD:-1}
TAG=${TAG:-scr}


DOOM3_DIR=${DOOM3_DIR:-"/mnt/ntfs/games/DOOM 3"}

HOMEPAGE="http://www.iodoom3.org/"
SOURCE="iod3-master.zip"
DOWNLOAD="http://github.com/iodoom/iod3/archive/master.zip"
MD5SUM="4e8a28cfe7b77ec9f295f9d26bdcea60"

REQUIRES="scons OpenAL"

MAINTAINER="Gernot Walzl"
EMAIL="gernot.walzl@gmx.at"

DESC="iodoom3

${HOMEPAGE}"

DOCS="$(pwd)/$0 *.txt"

# EOF info


# set initial variables
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}

# exit on error
set -e

# download the source if needed
if [ ! -f $CWD/$SOURCE ]; then
  wget -O $CWD/$SOURCE $DOWNLOAD || exit 1
fi

# check for correct source file
if [ "$(md5sum $CWD/$SOURCE | cut -f 1 -d ' ')" != "$MD5SUM" ]; then
  exit 1
fi

# extract the application source
cd $TMP || exit 1
unzip $CWD/$SOURCE || exit 1

# change to the application source directory
cd iod3-master || exit 1

# fix permissions
chown -R root:root .
chmod -R u+w,go+r-w,a-s .

# set configure options
if [ "$ARCH" = "i686" ]; then
  SLKCFLAGS="-O2 -march=i686 -mtune=i686"
 elif [ "$ARCH" = "x86_64" ]; then
  SLKCFLAGS="-O2 -fPIC"
 else
  SLKCFLAGS="-O2"
fi

# compile the source
cd neo
sed -i 's/define ID_ENFORCE_KEY 1/define ID_ENFORCE_KEY 0/' ./framework/BuildDefines.h
#scons BUILD="release" BASEFLAGS="$SLKCFLAGS" || exit 1
scons BUILD="release" || exit 1

# install everything into the package directory
rm -rf $PKG
mkdir -p $PKG/install
mkdir -p $PKG/usr/games/doom3
mkdir -p $PKG/usr/games/doom3/base
mkdir -p $PKG/usr/games/doom3/d3xp

mv doom.x86 $PKG/usr/games/doom3
mv gamex86-base.so $PKG/usr/games/doom3/base/gamex86.so
mv gamex86-d3xp.so $PKG/usr/games/doom3/d3xp/gamex86.so
cat > $PKG/usr/games/$PRGNAM <<EOF
#!/bin/sh
cd /usr/games/doom3
./doom.x86 "\$@"
EOF

chmod +x $PKG/usr/games/$PRGNAM
cd ..

cat > $PKG/usr/games/doom3/base/CHECKSUMS.md5 <<EOF
71b8d37b2444d3d86a36fd61783844fe  pak000.pk4
4bc4f3ba04ec2b4f4837be40e840a3c1  pak001.pk4
fa84069e9642ad9aa4b49624150cc345  pak002.pk4
f22d8464997924e4913e467e7d62d5fe  pak003.pk4
38561a3c73f93f2e6fd31abf1d4e9102  pak004.pk4
2afd4ece27d36393b7538d55a345b90d  pak005.pk4
a6e7003fa9dcc75073dc02b56399b370  pak006.pk4
6319f086f930ec1618ab09b4c20c268c  pak007.pk4
28750b7841de9453eb335bad6841a2a5  pak008.pk4
EOF

cat > $PKG/usr/games/doom3/d3xp/CHECKSUMS.md5 <<EOF
a883fef0fd10aadeb73d34c462ff865d  pak000.pk4
06fc9be965e345587064056bf22236d2  pak001.pk4
EOF

# add documentation
if [ "$DOCS" != "" ]; then
  mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
  cp -a $DOCS $PKG/usr/doc/$PRGNAM-$VERSION
  find $PKG/usr/doc/$PRGNAM-$VERSION -type f -exec chmod 644 {} \;
fi

# add some description to the package
if [ "$DESC" != "" ]; then
  echo "$DESC" | sed 's/^/'$PRGNAM': /g' > $PKG/install/slack-desc
fi

# append dependency information to the package
if [ "$REQUIRES" != "" ]; then
  for REQ in $REQUIRES; do
    echo "$REQ" >> $PKG/install/slack-required
  done
fi

# doinst.sh
cat > $PKG/install/doinst.sh <<EOF
#!/bin/sh
EOF
for I in $(seq 0 8); do
  cat >> $PKG/install/doinst.sh <<EOF
( cd usr/games/doom3/base ; ln -s "${DOOM3_DIR}/base/pak00${I}.pk4" pak00${I}.pk4 )
EOF
done
for I in $(seq 0 1); do
  cat >> $PKG/install/doinst.sh <<EOF
( cd usr/games/doom3/d3xp ; ln -s "${DOOM3_DIR}/d3xp/pak00${I}.pk4" pak00${I}.pk4 )
EOF
done

# build the package
cd $PKG
PKGVERSION=$(echo $VERSION | sed 's/-/./g')
makepkg -l y -c n \
  $OUTPUT/$PRGNAM-$PKGVERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz} \
  || exit 1

# make everything clean
cd $CWD
rm -rf $PKG
rm -rf $TMP/iod3-master
