#!/bin/sh
#
# Public Release 3
# 
# $Id: config,v 1.3 1997/08/12 16:09:51 naamato Exp $
#
# ------------------------------------------------------------------------
# 
# Copyright (c) 1996, 1997 The Regents of the University of Michigan
# All Rights Reserved
#  
# Royalty-free licenses to redistribute GateD Release
# 3 in whole or in part may be obtained by writing to:
# 
# 	Merit GateDaemon Project
# 	4251 Plymouth Road, Suite C
# 	Ann Arbor, MI 48105
#  
# THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
# EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION WARRANTIES OF 
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE REGENTS OF THE
# UNIVERSITY OF MICHIGAN AND MERIT DO NOT WARRANT THAT THE
# FUNCTIONS CONTAINED IN THE SOFTWARE WILL MEET LICENSEE'S REQUIREMENTS OR
# THAT OPERATION WILL BE UNINTERRUPTED OR ERROR FREE. The Regents of the
# University of Michigan and Merit shall not be liable for
# any special, indirect, incidental or consequential damages with respect
# to any claim by Licensee or any third party arising from use of the
# software. GateDaemon was originated and developed through release 3.0
# by Cornell University and its collaborators.
# 
# Please forward bug fixes, enhancements and questions to the
# gated mailing list: gated-people@gated.merit.edu.
# 
# ------------------------------------------------------------------------
# 
# Copyright (c) 1990,1991,1992,1993,1994,1995 by Cornell University.
#     All rights reserved.
# 
# THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY
# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT
# LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY
# AND FITNESS FOR A PARTICULAR PURPOSE.
# 
# GateD is based on Kirton's EGP, UC Berkeley's routing
# daemon	 (routed), and DCN's HELLO routing Protocol.
# Development of GateD has been supported in part by the
# National Science Foundation.
# 
# ------------------------------------------------------------------------
# 
# Portions of this software may fall under the following
# copyrights:
# 
# Copyright (c) 1988 Regents of the University of California.
# All rights reserved.
# 
# Redistribution and use in source and binary forms are
# permitted provided that the above copyright notice and
# this paragraph are duplicated in all such forms and that
# any documentation, advertising materials, and other
# materials related to such distribution and use
# acknowledge that the software was developed by the
# University of California, Berkeley.  The name of the
# University may not be used to endorse or promote
# products derived from this software without specific
# prior written permission.  THIS SOFTWARE IS PROVIDED
# ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES,
# INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
#
#
TMP=/tmp/$$

DCONFIG=Config
CONFIG=${DCONFIG}
CONFIG_SCRIPT=config_script
SED=sed
AWK=awk
CONFIG_AWK=config.awk
FILES=files
CONFIG_FILES=config.files.awk
DEFINES_H=defines.h
UTILDIR=`pwd`/util

case $# in
	0)
		ARCHTYPE=`${UTILDIR}/archtype` ;
		DIRS="obj.`hostname | sed -e 's/\..*//'` obj.${ARCHTYPE} obj" ;
		for dir in ${DIRS}; do
			if [ -r ${dir}/${DCONFIG} ]; then
				CONFIG=${dir}/${DCONFIG} ;
				break ;
			fi
		done
		if [ ! -r ${CONFIG} ]; then
			echo "$0: could not find ${CONFIG} in ${DIRS}" ;
			exit 1;
		fi
		;;
	1)
		CONFIG=$1
		if [ ! -r ${CONFIG} ]; then
			echo "$0: can not read ${CONFIG}" ;
			exit 1;
		fi
		;;
	*)
		echo "usage: $0: [config_file]"
		exit 1;
esac

#	Set default object directory
OBJDIR=`echo ${CONFIG} | ${SED} -e "s/\/${DCONFIG}//"`
case ${OBJDIR} in
	${DCONFIG})
		OBJDIR="obj";;
esac

echo "Parsing ${CONFIG}" ;
${AWK} -f ${UTILDIR}/${CONFIG_AWK} OBJDIR=${OBJDIR} ${CURDIR+SRCDIR=${CURDIR}} CONFIG_SCRIPT=${TMP}.3 DEFINES_H=${TMP}.4 ${CONFIG} || exit $?
chmod 755 ${TMP}.3

cat > ${TMP}.1 <<EOF
CONFIG_SCRIPT="@(CONFIG_SCRIPT)"
SED="@(SED)"
OBJDIR="@(OBJDIR)"
MAKECMD="@(MAKE)"
TEMPLATE="@(TEMPLATE)"
UTILDIR="@(SRCDIR)/@(UTILDIR)"
EOF
${TMP}.3 < ${TMP}.1 > ${TMP}.2
. ${TMP}.2
rm -r -f ${TMP}.{1,2}

echo "Directory:	${OBJDIR}" ;

if [ -f ${OBJDIR} ]; then
	echo "$0: ${OBJDIR} is not a directory" ;
	exit 1 ;
fi

if [ ! -d ${OBJDIR} ]; then
	echo "Creating object directory ${OBJDIR}" ;
	mkdir ${OBJDIR} || exit $? ;
# XXX - set permissions and stuff
fi

mv ${TMP}.3 ${OBJDIR}/${CONFIG_SCRIPT} || exit $? ;
mv ${TMP}.4 ${OBJDIR}/${DEFINES_H} || exit $? ;
cd ${OBJDIR} || exit $? ;

echo "Building Makefile from ${TEMPLATE}" ;
./${CONFIG_SCRIPT} < ${UTILDIR}/${FILES} > ${TMP}.1
${AWK} -f ${UTILDIR}/${CONFIG_FILES} MAKEFILE=Makefile ${TMP}.1 || exit $?
rm -r -f ${TMP}.1
./${CONFIG_SCRIPT} < ${UTILDIR}/${TEMPLATE} >> Makefile || exit $?

echo "${MAKECMD} links depend" ;
${MAKECMD} links || exit $? ;
${MAKECMD} depend || exit $? ;

echo "done" ;
