#!/bin/bash
#
# Heavily based on the Slackware 10.2 SlackBuild
# http://www.theora.org
# 
# bumped to version 1.0alpha7 - rafael2k
#
# got it from http://www.slacky.it/download/libraries/libtheora/1.0alpha5/src/libtheora.SlackBuild
# small changes by rhatto
#

CWD="`pwd`"

if [ -f ~/.slackbuildrc ]; then
  source ~/.slackbuildrc
elif [ -f /etc/slackbuildrc ]; then
  source /etc/slackbuildrc
fi

PACKAGE="libtheora"
VERSION=${VERSION:=1.0beta2}
ARCH=${ARCH:-i486}
TARGET=${TARGET:=$ARCH}
BUILD=${BUILD:=1rha}
TMP=${TMP:=/tmp}
SRC_DIR=${SRC:=$CWD}
REPOS=${REPOS:=$TMP}

# -------  error codes for createpkg  --------------
ERROR_WGET=31;      ERROR_MAKE=32;      ERROR_INSTALL=33
ERROR_MD5=34;       ERROR_CONF=35;      ERROR_HELP=36
ERROR_TAR=37;       ERROR_MKPKG=38;     ERROR_GPG=39
ERROR_PATCH=40

RTOOL="wget"
PACKAGE_EXT="bz2"
SRC="$PACKAGE-$VERSION.tar.$PACKAGE_EXT"
URL="http://downloads.xiph.org/releases/theora/$SRC"

SRC_DIR="$SRC_DIR/$PACKAGE"
mkdir -p $SRC_DIR

if [ "$RTOOL" == "wget" ] && [ ! -f "$SRC_DIR/$SRC" ]; then
  wget "$URL" -O "$SRC_DIR/$SRC" || exit $ERROR_WGET
fi

if [ "$ARCH" = "i486" ]; then
  SLKCFLAGS="-O2 -march=i486 -mcpu=i686"
elif [ "$ARCH" = "i686" ]; then
  SLKCFLAGS="-O2 -march=i686 -mcpu=i686"
elif [ "$ARCH" = "x86_64" ]; then
  SLKCFLAGS="-O2"
fi

if [ "$ARCH" == "x86_64" ]; then
  LIBDIR="/usr/lib64"
else
  LIBDIR="/usr/lib"
fi

if [ ! -d $TMP ]; then
  mkdir -p $TMP
fi

if [ ! -d $PKG ]; then
  mkdir -p $PKG
fi

TMP="$TMP/$PACKAGE"
rm -rf $TMP
mkdir -p $TMP
cd $TMP

NAME="$PACKAGE"
PKG=$TMP/package-$PACKAGE

tar xvf $SRC_DIR/$SRC || exit $ERROR_TAR
cd $NAME-$VERSION
chown -R root.root .

if [ -f "$CWD/$PACKAGE-$VERSION.diff" ]; then
  patch -p1 < $CWD/$PACKAGE-$VERSION.diff || exit $ERROR_PATCH
fi

if [ -f "$CWD/$PACKAGE-$VERSION-$ARCH.diff" ]; then
  patch -p1 < $CWD/$PACKAGE-$VERSION-$ARCH.diff || exit $ERROR_PATCH
fi

find . -perm 777 -exec chmod 755 {} \;

CFLAGS="$SLKCFLAGS" CXXFLAGS="$SLKCFLAGS" \
./configure --prefix=/usr --libdir=$LIBDIR --program-prefix="" --program-suffix="" $TARGET-slackware-linux || exit $ERROR_CONF

make || exit $ERROR_MAKE
make install DESTDIR=$PKG || exit $ERROR_INSTALL

cp -a COPYING README $PKG/usr/share/doc/$NAME-$VERSION

( cd $PKG
  find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
  find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
)

mkdir -p $PKG/install
cat << EOF > $PKG/install/slack-desc
# HOW TO EDIT THIS FILE:
# The "handy ruler" below makes it easier to edit a package description. Line
# up the first '|' above the ':' following the base package name, and the '|' 
# on the right side marks the last column you can put a character in. You must
# make exactly 11 lines for the formatting to be correct. It's also customary
# to leave one space after the ':'.

         |----handy-ruler-----------------------------------------------------|
libtheora: Libtheora
libtheora:
libtheora: Theora is an open video codec being developed by the Xiph.org
libtheora: Foundation as part of their Ogg project (It is a project that aims
libtheora: to integrate On2's VP3 video codec, Ogg Vorbis audio codec and Ogg
libtheora: multimedia container formats into a multimedia solution that can
libtheora: compete with MPEG-4 format).
libtheora:
libtheora:
libtheora:
libtheora:
EOF

cd $PKG

echo 'chroot . /sbin/ldconfig' > install/doinst.sh

makepkg -l y -c n $REPOS/$NAME-$VERSION-$ARCH-$BUILD.tgz || exit $ERROR_MKPKG

if [ "$CLEANUP" == "yes" ]; then
  rm -rf $TMP
fi