#!/bin/sh

PLAN9=`pwd` export PLAN9
PATH=/bin:/usr/bin:$PLAN9/bin:$PATH export PATH

echo "* Resetting $PLAN9/config"
rm -f config

(
if [ `uname` = Linux ]; then
	# On Linux, we use the kernel version to decide whether
	# to use pthreads or not.  On 2.6 versions that aren't
	# linking with NPTL by default, pretend to be an older kernel.
	echo "* Running on Linux: checking for NPTL..."
	gcc lib/linux-isnptl.c -lpthread
	if ./a.out >/dev/null
	then	
		echo "	NPTL found."
		echo "SYSVERSION=2.6.x" >$PLAN9/config
	else
		echo "	NPTL not found."
		echo "SYSVERSION=2.4.x" >$PLAN9/config
	fi
	rm -f ./a.out
fi

if [ -f LOCAL.config ]; then
	echo Using LOCAL.config options:
	sed 's/^/	/' LOCAL.config
	cat LOCAL.config >>config
fi

echo "* Building mk..."
cd src
make
echo "* Building everything (be patient)..."
mk clean
mk libs-nuke
mk all || exit 1
if [ ! -x $PLAN9/src/cmd/o.cleanname -o ! -x $PLAN9/src/cmd/acme/o.acme ]; then
	echo "* Warning: not all binaries built successfully."
fi
echo "* Installing everything..."
mk install || exit 1
if [ ! -x $PLAN9/bin/cleanname -o ! -x $PLAN9/bin/acme ]; then
	echo " "
	echo "* Warning: not all binaries built successfully."
fi
if [ ! -x $PLAN9/bin/cleanname ]; then
	echo " "
	echo "* Installation failed: $PLAN9/bin/cleanname does not exist."
	exit 1
fi
echo "* Cleaning up..."
mk clean
echo "* Renaming hard-coded /usr/local/plan9 paths..."
cd $PLAN9
sh lib/moveplan9.sh
echo "* Building web manual..."
(
	cd $PLAN9/dist
	echo cd `pwd`';' mk man
	mk man
)
if [ -x LOCAL.INSTALL ]; then
	echo "* Running local modifications..."
	echo ./LOCAL.INSTALL
	./LOCAL.INSTALL
fi

echo "* Done. "
echo "	"
echo "* Add these to your profile environment."
echo "	PLAN9=$PLAN9 export PLAN9"
echo '	PATH=$PATH:$PLAN9/bin export PATH'

) 2>&1 | tee install.log | awk -f $PLAN9/dist/isum.awk | tee install.sum

