#!/bin/bash

# Builds lame for MMX/SSE testing

# Copyright (C) 2003-2006 IBM
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License as
# published by the Free Software Foundation; either version 2 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
# 02111-1307, USA.

source "$POUNDER_HOME/libpounder.sh"

# Is it already installed?
PROG=`which lame`
if [ ! -z "$PROG" ]; then
	exit 0
fi

# If we can't find nasm...
NASM=`which nasm`
if [ -z "$NASM" ]; then
	# Build it so we can test MMX/SSE.
	NASM_PKG=nasm-0.98.38
	NASM_TAR="$NASM_PKG.tar.gz"

	# Retrieve tarball
	cd "$POUNDER_OPTDIR"
	if [ ! -f "$NASM_TAR" ]; then
        	if [ $USE_CACHE -eq 1 ]; then
                	wget "${POUNDER_CACHE}${NASM_TAR}"
        	fi
        	if [ ! -f "$NASM_TAR" ]; then
                	get_from_sourceforge nasm $NASM_TAR
        	fi
	fi

	# Unpack if necessary
	if [ ! -d "NASM_PKG" ]; then
        	tar -xzf "$NASM_TAR"
	fi

	# Build
	cd "$NASM_PKG"
	./configure
	make $*

	export PATH=`/bin/ls -d $POUNDER_OPTDIR/nasm*/`:$PATH

fi

# Retrieve binary for lame, if necessary
PKGNAME=lame-3.96.1
TARNAME="$PKGNAME.tar.gz"
PROGNAME=lame

cd "$POUNDER_OPTDIR"
if [ ! -f "$TARNAME" ]; then
	if [ $USE_CACHE -eq 1 ]; then
		wget "${POUNDER_CACHE}${TARNAME}"
	fi
	if [ ! -f "$TARNAME" ]; then
		get_from_sourceforge $PROGNAME $TARNAME
	fi
fi

# Unpack if necessary
if [ ! -d "PKGNAME" ]; then
	tar -xzf "$TARNAME"
fi

# Build with MMX/SSE/3dnow/whatever support
cd "$PKGNAME"
./configure --enable-nasm
make $*

# Now build schedutils for CPU affinity assignments
_PKGNAME=schedutils-1.4.0
S_TARNAME="$S_PKGNAME.tar.gz"
S_PROGNAME=taskset

# Is it already installed?
S_PROG=`which $S_PROGNAME`
if [ ! -z "$S_PROG" ]; then
        exit 0
fi

# Does this OS support taskset?
grep sched_setaffinity /usr/include/sched.h > /dev/null 2>&1
if [ $? -ne 0 ]; then
        # Can't find the sched_setaffinity syscall; abort.
        # Probably we want to remove the schedutils dir in case
        # this install was leftover from another distro.
        cd "$POUNDER_OPTDIR"
        rm -rf "$S_PKGNAME"
        exit 0
fi

# Retrieve tarball, if necessary
cd "$POUNDER_OPTDIR"
if [ ! -f "$S_TARNAME" ]; then
        if [ $USE_CACHE -eq 1 ]; then
                wget "${POUNDER_CACHE}${S_TARNAME}"
        fi
        if [ ! -f "$S_TARNAME" ]; then
                wget "http://tech9.net/rml/schedutils/packages/$VERSION/$S_TARNAME"
        fi
fi

# Unpack if necessary
if [ ! -d "S_PKGNAME" ]; then
        tar -xzf "$S_TARNAME"
fi

# Build
cd "$S_PKGNAME"
make $*