# @(#) $Id: configure,v 1.35 1999/06/20 19:03:49 deyke Exp $

CC='cc'
CFLAGS='-O -I../lib'

LD='$(CC)'
LDFLAGS='$(CFLAGS) -s'

LIBS='../lib/libutil.a'
SLIBS=''

MKDIR='@if [ ! -d `dirname $@` ]; then mkdir -p `dirname $@`; fi'
RMTARGET='@if [ -f $@ ]; then rm -f $@ || mv -f $@ $@~; fi'

case "`uname -sr`" in

HP-UX*)
	CC='c89'
	if hp9000s800; then
		CFLAGS="$CFLAGS -z +ESlit -D_HPUX_SOURCE -DFD_SETSIZE=1024"
	else
		CFLAGS="$CFLAGS -D_HPUX_SOURCE -DFD_SETSIZE=1024"
	fi
	SLIBS='-lndbm'
	;;

AIX*)
	CFLAGS="$CFLAGS -qchars=signed -D_ALL_SOURCE -DFD_SETSIZE=1024"
	;;

IRIX64*)
	CFLAGS="$CFLAGS -signed -TENV:large_stack -DFD_SETSIZE=1024"
	;;

IRIX*)
	CFLAGS="$CFLAGS -signed -framepointer -DFD_SETSIZE=1024"
	;;

Linux*)
	CC='gcc'
	case `hostname` in
	deyke7*)
		CFLAGS="$CFLAGS -fsigned-char -ansi -pedantic -Wall -Wshadow -Wpointer-arith -Wstrict-prototypes -Wnested-externs -Dlinux -D_GNU_SOURCE -I../src/linux_include";;
	*)
		CFLAGS="$CFLAGS -I../src/linux_include";;
	esac
	if [ -f /usr/lib/libndbm.so -o -f /usr/lib/libndbm.a ]; then
		LIBDBM='ndbm'
	elif [ -f /usr/lib/libgdbm.so -o -f /usr/lib/libgdbm.a ]; then
		LIBDBM='gdbm'
	elif [ -f /usr/lib/libdbm.so -o -f /usr/lib/libdbm.a ]; then
		LIBDBM='dbm'
	else
		echo Cannot find a dbm library
		exit 1
	fi
	SLIBS="-l$LIBDBM"
	;;

386BSD*)
	CFLAGS="$CFLAGS -DFD_SETSIZE=1024"
	;;

NetBSD*)
	CFLAGS="$CFLAGS -DFD_SETSIZE=1024"
	SLIBS='-L/usr/pkg/lib -lcrypt -lgdbm'
	;;

FreeBSD*)
	CFLAGS="$CFLAGS -DFD_SETSIZE=1024"
	SLIBS='-lcrypt'
	;;

BSD/386*)
	CFLAGS="$CFLAGS -DFD_SETSIZE=1024"
	;;

SunOS\ 4.*)
	CC='acc'
	CFLAGS="$CFLAGS -DFD_SETSIZE=1024"
	;;

SunOS\ 5.*)
	CFLAGS="$CFLAGS -v -DFD_SETSIZE=1024"
	SLIBS='-lsocket -lnsl'
	;;

ULTRIX*)
	CC='gcc'
	CFLAGS="$CFLAGS -DULTRIX_RISC -DFD_SETSIZE=64"
	SLIBS='-ldbm'
	;;

A/UX*)
	CC='gcc'
	CFLAGS="$CFLAGS -fpcc-struct-return -D_POSIX_SOURCE"
	SLIBS='-ldbm -lposix'
	;;

RISC\ iX*)
	CC='../cc'
	CFLAGS='-DRISCiX -I../lib'
	;;

AOS*)
	CC='gcc'
	CFLAGS="$CFLAGS -Dibm6153"
	LIBS="../aos/libaos.a $LIBS"
	LDFLAGS='-g'
	;;

NeXT*)
	CC='gcc'
	CFLAGS="$CFLAGS -posix -D_POSIX_SOURCE -DFD_SETSIZE=256"
	LIBS="../NeXT/libnext.a $LIBS"
	SLIBS='-ldbm'
	;;

esac

rm -f configure.mak

echo 'CC='"'$CC'" >> configure.mak
echo 'CFLAGS='"'$CFLAGS'" >> configure.mak

echo 'LD='"'$LD'" >> configure.mak
echo 'LDFLAGS='"'$LDFLAGS'" >> configure.mak

echo 'LIBS='"'$LIBS'" >> configure.mak
echo 'SLIBS='"'$SLIBS'" >> configure.mak

echo 'MKDIR='"'$MKDIR'" >> configure.mak
echo 'RMTARGET='"'$RMTARGET'" >> configure.mak

echo 'export CC CFLAGS LD LDFLAGS LIBS SLIBS MKDIR RMTARGET' >> configure.mak

islink='-h'

case "`uname -sr`" in
AIX*)
	islink='-L';;
IRIX*)
	islink='-L';;
Linux*)
	islink='-L';;
AOS*)
	islink='-L';;
esac

tmp=tmp$$

findfile()
{
	name=$1
	shift
	for i in $*; do
		if [ -f $i -a ! $islink $i ]; then
			echo "#define ${name} \"$i\""
			return
		fi
	done
	echo "#define ${name} \"\""
}

findprog()
{
	name=$1
	shift
	for i in $*; do
		if [ -f $i -a -x $i -a ! $islink $i ]; then
			echo "#define ${name} \"$i\""
			return
		fi
	done
	for i in $*; do
		if [ -f $i -a -x $i ]; then
			echo "#define ${name} \"$i\""
			return
		fi
	done
	for i in $*; do
		if [ -f $i -a ! $islink $i ]; then
			echo "#define ${name} \"$i\""
			return
		fi
	done
	for i in $*; do
		if [ -f $i ]; then
			echo "#define ${name} \"$i\""
			return
		fi
	done
	echo "#define ${name} \"\""
}

finddir()
{
	name=$1
	shift
	for i in $*; do
		if [ -d $i -a ! $islink $i ]; then
			echo "#define ${name} \"$i\""
			return
		fi
	done
	for i in $*; do
		if [ -d $i ]; then
			echo "#define ${name} \"$i\""
			return
		fi
	done
	echo "#define ${name} \"\""
}

checksymbol()
{
	echo "$2" >$tmp.c
	if $CC $CFLAGS $tmp.c $SLIBS -o $tmp >/dev/null 2>&1; then
		echo "#define $1 1"
	else
		echo "#define $1 0"
	fi
}

(

	echo "#ifndef _CONFIGURE_H"
	echo "#define _CONFIGURE_H"
	echo

	finddir HOME_DIR \
		/home \
		/users \
		/usr/people \
		/u

	finddir MAIL_DIR \
		/var/mail \
		/var/spool/mail \
		/usr/mail \
		/usr/spool/mail

	finddir NEWS_DIR \
		/var/spool/news \
		/usr/spool/news

	finddir SPOOL_DIR \
		/var/spool \
		/usr/spool

	finddir UUCP_DIR \
		/var/spool/uucp \
		/usr/spool/uucp

	echo

	findfile ALIASES_FILE \
		/etc/aliases \
		/etc/mail/aliases \
		/usr/lib/aliases

	findfile UTMP__FILE \
		/var/adm/utmp \
		/var/run/utmp \
		/etc/utmp

	findfile WTMP__FILE \
		/var/adm/wtmp \
		/var/log/wtmp \
		/etc/wtmp \
		/usr/adm/wtmp

	echo

	findprog CTLINND_PROG \
		/usr/local/news/bin/ctlinnd \
		/usr/lib/news/bin/ctlinnd \
		/usr/bin/ctlinnd

	findprog GZIP_PROG \
		/usr/bin/gzip \
		/bin/gzip \
		/usr/local/bin/gzip \
		/usr/contrib/bin/gzip

	findprog LS_PROG \
		/usr/bin/ls \
		/bin/ls

	findprog MAIL_PROG \
		/usr/openwin/bin/xview/mail \
		/usr/bin/mailx \
		/bin/mailx \
		/usr/sbin/Mail \
		/usr/bin/mail \
		/bin/mail

	findprog NEWALIASES_PROG \
		/usr/bin/newaliases \
		/usr/sbin/newaliases \
		/usr/ucb/newaliases \
		/usr/bsd/newaliases

	findprog RNEWS_PROG \
		/usr/bin/rnews \
		/usr/local/bin/rnews \
		/usr/lib/news/rnews \
		/usr/lib/rnews

	findprog SENDMAIL_PROG \
		/usr/sbin/sendmail \
		/usr/lib/sendmail

	echo

	checksymbol HAS_ADJTIME \
		"main(){adjtime(0,0);}"

	checksymbol HAS_INT32 \
		"#include <sys/types.h>
		 main(){int32 f;return f;}"

	checksymbol HAS_NDBM \
		"#include <ndbm.h>
		main(){dbm_open(0, 0, 0);return 0;}"

	checksymbol HAS_DB1_NDBM \
		"#include <db1/ndbm.h>
		main(){dbm_open(0, 0, 0);return 0;}"

	checksymbol HAS_NI \
		"#include <net/if_ni.h>
		 struct ni_desc x;
		 main(){return 0;}"

	checksymbol HAS_STRDUP \
		"main(){strdup(0);}"

	checksymbol HAS_STRERROR \
		"main(){strerror(0);}"

	checksymbol HAS_STRTOUL \
		"main(){strtoul(0,0,0);}"

	checksymbol HAS_UINT \
		"#include <sys/types.h>
		 main(){uint f;return f;}"

	echo

	echo "
	#include <sys/types.h>
	#ifdef _AIX
	#include <sys/select.h>
	#endif
	main(){fd_set f;}
	" >$tmp.c
	if $CC $CFLAGS $tmp.c -o $tmp >/dev/null 2>&1; then
		echo "#define TYPE_FD_SET fd_set"
	else
		echo "#define TYPE_FD_SET struct fd_set"
	fi

	echo
	echo "#endif"

) > configure.tmp

if cmp -s configure.tmp configure.h; then
	rm -f configure.tmp
else
	rm -f configure.h
	mv configure.tmp configure.h
fi

rm -f $tmp*
