#!/bin/sh
#	buildkit --
#		Build a kernel kit from an RCS tree
# sas 850219
# bog 851016
#

version='$Header: buildkit,v 800.0 86/02/20 20:44:29 root Exp $'
echo
echo $version
echo

curdir=`pwd`

case $# in
2)	;;
*)	
	echo "usage: buildkit <subdir> <destination dir>"
	exit 1
	;;
esac

echo ""
if [ -r $1/dirlist ]; then
	echo "using $1/dirlist as directory tree specification"
	# Make sure conf is being included.
	dirlist=`(cat $1/dirlist; echo conf) | sort | uniq`
else
	echo "$1/dirlist does not exist."
	exit 2
fi

if [ -d $2 ]; then
	echo -n "$2 exists...hit <cr> to clear directory: "
	read x
	rm -rf $2
fi

echo -n "making $2..."
mkdir $2 
echo "done"

# Check out all directories.  (Make sure the conf directory gets created.)
for e in $dirlist
	do
	echo "Checking out $e..."
	mkdir $2/$e
	case $e in
		etc)	# go a level deeper -- all utils in subdirectories.
			# we ONLY GO ONE LEVEL DEEPER! 
			# (not a recursive checkout)
			for d in $e/*
				# d is of the form etc/blah.  No need for $e.
				do
				mkdir $2/$d
				for f in $d/RCS/*,v
					do
					co -q $f $2/$d/`basename $f ,v`
				done
			done
			;;
		*)	# normal checkout.
			for f in $e/RCS/*,v
				do
				co -q $f $2/$e/`basename $f ,v`
			done
			;;
	esac
	echo "Done."
done

 
# Make the compile directory. We are assuming that 
# the system has not been configured already.
echo "Making compile directory."
mkdir $2/$1

echo "config $1"
cd $2/conf
config $1
echo "make depend"
cd ../$1
make depend
echo "Remove -O from compilation of trap.c"
ed makefile << EOF
/^trap.o:/
/CC/
s/-O//p
w
q
EOF
echo "done."

# Link machine to s32 if it is there.
cd ..
if [ -d s32 ] ; then
	ln -s s32 machine
fi

echo "Building sourcekit."
cd $2
find * -type f -print > /tmp/sourcekit
mv /tmp/sourcekit sourcekit
echo "done."

echo "Building makefile."
cat > makefile << EOF
# dummy makefile for release -- makes vmunix and ps.

all:
	(cd ENG; make vmunix ps adb pstat iostat vmstat)
	cd boot; make boot

clean:
	cd ENG; make clean
	for i in ps adb pstat iostat vmstat; do (cd etc/\$\$i; make clean;) done
	cd boot; make clean

EOF
echo "done."

cd $curdir

echo "Installing default files."
for e in scaldkit test.sh testmade explain.test testkit devkit
	do
	if [ -r $1/RCS/$e,v ]; then
		co -q $1/RCS/$e,v $2/$e
	else
		echo "error -- $1/RCS/$e,v does not exist."
	fi
done
echo "done."

echo "Kit exists in $2. Use istkitok to verify."
echo ""

exit 0
