#!/bin/sh

dobuild=true
doinstall=true

case "x$1" in
x)
	;;
x-b)
	dobuild=true
	doinstall=false
	;;
x-c)
	dobuild=false
	doinstall=true
	;;
x-r)
    shift
    PLAN9_TARGET=$1 export PLAN9_TARGET
    ;;
*)
	echo 'usage: INSTALL [-b | -c] [-r path]' 1>&2
	exit 1
esac

PLAN9=`pwd` export PLAN9
PATH=/bin:/usr/bin:$PLAN9/bin:$PATH export PATH
case `uname` in
SunOS)
	awk=nawk
	;;
*)
	awk=awk
	;;
esac

echo "+ Mailing list: http://groups.google.com/group/plan9port-dev"
echo "+ Issue tracker: http://code.swtch.com/plan9port/issues/"
echo "+ Submitting changes: http://swtch.com/go/codereview"
echo " "
echo "* Resetting $PLAN9/config"
rm -f config

(
echo "* Compiler version:"
9c -v 2>&1 | grep -v 'Configured with:' | grep -i version | sed 's/^/	/'

if [ `uname` = FreeBSD ]; then
       echo "* Running on FreeBSD, adjusting linker flags"
       echo "LDFLAGS='-L/usr/local/lib'" >> $PLAN9/config
fi

if [ `uname` = OpenBSD ]; then
       echo "* Running on OpenBSD, adjusting linker flags"
       echo "LDFLAGS='-L/usr/X11R6/lib -pthread'" >> $PLAN9/config
fi

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 [ `uname` = Darwin ]; then
	# On Darwin, uname -m -p cannot be trusted.
	echo "* Running on Darwin: checking architecture..."
	rm -f ./a.out
	if ! gcc lib/darwin-main.c >/dev/null 2>&1; then
		echo "Cannot find gcc. You may need to install the command-line tools using Xcode." >&2
		echo "See http://swtch.com/go/xcodegcc for details." >&2
		exit 1
	fi
	case "$(file ./a.out 2>/dev/null)" in
	*x86_64*)
		echo "	x86-64 found."
		echo "OBJTYPE=x86_64" >>$PLAN9/config
		;;
	*i386*)
		echo "	i386 found."
		echo "OBJTYPE=386" >>$PLAN9/config
		;;
	*ppc*)
		echo "  power found."
		echo "OBJTYPE=power" >>$PLAN9/config
		;;
	esac
	rm -f ./a.out
fi

if [ `uname` != Darwin ]; then
	# Determine whether fontsrv X11 files are available.
	rm -f a.out
	gcc -o a.out -c -Iinclude -I/usr/include -I/usr/local/include -I/usr/include/freetype2 -I/usr/local/include/freetype2 src/cmd/fontsrv/x11.c >/dev/null 2>&1
	if [ -f a.out ]; then
		echo "	fontsrv dependencies found."
		echo "FONTSRV=fontsrv" >>$PLAN9/config
	else
		echo "	fontsrv dependencies not found."
		echo "FONTSRV=" >>$PLAN9/config
		rm -f bin/fontsrv
	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

cd src
if $dobuild; then
	if [ ! -x ../bin/mk ]; then
		echo "* Building mk..."
		../dist/buildmk 2>&1 | sed 's/^[+] //'
	fi
	if [ ! -x ../bin/mk ]; then
		echo "* Error: mk failed to build."
		exit 1
	fi
	
	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 in $PLAN9/bin..."
	mk -k install || exit 1
	if [ ! -x $PLAN9/bin/cleanname -o ! -x $PLAN9/bin/acme -o ! -x $PLAN9/bin/sam ]; then
		echo " "
		echo "* Warning: not all binaries built successfully."
	fi
	echo "* Cleaning up..."
	mk clean
fi

if $doinstall; then
	if [ ! -x $PLAN9/bin/cleanname -o ! -x $PLAN9/bin/sam ]; then
		# Cleanname and sam are needed for moveplan9.sh and the man updates.
		if [ ! -x $PLAN9/bin/cleanname ]; then
			echo " "
			echo "* Installation failed: $PLAN9/bin/cleanname does not exist."
			exit 1
		fi
		if [ ! -x $PLAN9/bin/sam ]; then
			echo " "
			echo "* Installation failed: $PLAN9/bin/sam does not exist."
			exit 1
		fi
		echo "* NOT renaming hard-coded /usr/local/plan9 paths."
		echo "* NOT building web manual."
	else
		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
		)
	fi
	
	if [ -x LOCAL.INSTALL ]; then
		echo "* Running local modifications..."
		echo cd `pwd`';' ./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'
fi
) 2>&1 | tee install.log | $awk -f $PLAN9/dist/isum.awk -v 'copy='install.sum

