xref: /freebsd/contrib/ntp/build (revision 2aaf9152a852aba9eb2036b95f4948ee77988826)
1c0b746e5SOllivier Robert#! /bin/sh
2c0b746e5SOllivier Robert
3c0b746e5SOllivier RobertLOGF=make.log
4c0b746e5SOllivier RobertIAM=`hostname || uname -n`
5eb6d21b4SOllivier RobertMYNAME=`IFS=. ; set $IAM ; echo $1`
6eb6d21b4SOllivier RobertSIG=
7c0b746e5SOllivier Robert
8224ba2bdSOllivier Robertcase "$1" in
9224ba2bdSOllivier Robert 0.*)
10224ba2bdSOllivier Robert    SIG=$1
11224ba2bdSOllivier Robert    shift
12224ba2bdSOllivier Robert    CONFIG_ARGS="$@"
13eb6d21b4SOllivier Robert    KEY=`sed -e q < .buildkey-$MYNAME`
14224ba2bdSOllivier Robert    case "$SIG" in
15224ba2bdSOllivier Robert     $KEY) ;;
16224ba2bdSOllivier Robert     *)
17224ba2bdSOllivier Robert	echo "Wrong directory for build on host $IAM"
189c2daa00SOllivier Robert	echo "This is <`pwd`>"
199c2daa00SOllivier Robert	echo "SIG is <$SIG>"
209c2daa00SOllivier Robert	echo "KEY is <$KEY>"
21224ba2bdSOllivier Robert	exit 1
22224ba2bdSOllivier Robert	;;
23224ba2bdSOllivier Robert    esac
24224ba2bdSOllivier Robert    ;;
25224ba2bdSOllivier Robert *)
26224ba2bdSOllivier Robert    CONFIG_ARGS="$@"
27224ba2bdSOllivier Robert    ;;
28224ba2bdSOllivier Robertesac
29224ba2bdSOllivier Robert
30c0b746e5SOllivier Robert#set -e
31c0b746e5SOllivier Robert#set -x
32c0b746e5SOllivier Robert
332b15cb3dSCy Schubertif [ ! -r sntp/libevent/build-aux/config.guess ] ; then
342b15cb3dSCy Schubert	echo "Error: bootstrap required." 1>&2 && exit 1
352b15cb3dSCy Schubertfi
362b15cb3dSCy Schubert
372b15cb3dSCy Schubert# sntp/scripts/cvo.sh invokes config.guess, and we want it to use the copy
382b15cb3dSCy Schubert# in the build-aux directory if there's not another config.guess earlier
392b15cb3dSCy Schubert# on the path, so we invoke it using env to append to the PATH.
402b15cb3dSCy Schubert
412b15cb3dSCy SchubertCVO=`env PATH="$PATH:./sntp/libevent/build-aux" sntp/scripts/cvo.sh @cvo@`
42c0b746e5SOllivier Robertcase "$CVO" in
432b15cb3dSCy Schubert *-*-*-*) echo "sntp/scripts/cvo.sh returned <$CVO>, which makes no sense to me."
442b15cb3dSCy Schubert    exit 1
452b15cb3dSCy Schubert    ;;
46c0b746e5SOllivier Robert *-*-*) ;;
472b15cb3dSCy Schubert *) echo "sntp/scripts/cvo.sh returned <$CVO>, which makes no sense to me."
48c0b746e5SOllivier Robert    exit 1
49c0b746e5SOllivier Robert    ;;
50c0b746e5SOllivier Robertesac
51c0b746e5SOllivier Robert
522b15cb3dSCy Schubertcase "$NTP_BDIR" in
532b15cb3dSCy Schubert '')
54c0b746e5SOllivier Robert    case "$IAM" in
55*052d159aSCy Schubert     *.ntp.org | *.ntfo.org)
562b15cb3dSCy Schubert	NTP_BDIR=host
572b15cb3dSCy Schubert	;;
58c0b746e5SOllivier Robert     *.udel.edu)
592b15cb3dSCy Schubert	NTP_BDIR=host
602b15cb3dSCy Schubert	# HMS: --enable-local-libopts is the default now...
612b15cb3dSCy Schubert	#CONFIG_ARGS="$CONFIG_ARGS --enable-local-libopts"
62ea906c41SOllivier Robert	case "$CVO" in
63ea906c41SOllivier Robert	 *-*-ultrix*)
64ea906c41SOllivier Robert	    CONFIG_ARGS="$CONFIG_ARGS --with-libregex=/usr/local"
65ea906c41SOllivier Robert	    ;;
66ea906c41SOllivier Robert	esac
67c0b746e5SOllivier Robert	;;
68c0b746e5SOllivier Robert     *)
692b15cb3dSCy Schubert	NTP_BDIR=cvo
702b15cb3dSCy Schubert	;;
712b15cb3dSCy Schubert     esac
722b15cb3dSCy Schubert     ;;
732b15cb3dSCy Schubertesac
742b15cb3dSCy Schubert
752b15cb3dSCy Schubertcase "$NTP_BDIR" in
762b15cb3dSCy Schubert host)
772b15cb3dSCy Schubert    BASEDIR=A.$MYNAME
782b15cb3dSCy Schubert    ;;
792b15cb3dSCy Schubert cvo)
802b15cb3dSCy Schubert    BASEDIR=A.$CVO
812b15cb3dSCy Schubert    ;;
822b15cb3dSCy Schubert *)
832b15cb3dSCy Schubert    echo "build: NTP_BDIR must be either 'cvo' or 'host'!" 1>&2
842b15cb3dSCy Schubert    exit 1
85c0b746e5SOllivier Robert    ;;
86c0b746e5SOllivier Robertesac
87c0b746e5SOllivier Robert
88224ba2bdSOllivier RobertKEYSUF=""
89224ba2bdSOllivier Robert
90224ba2bdSOllivier Robertcase "$CONFIG_ARGS" in
91224ba2bdSOllivier Robert *--with-crypto=autokey*)
92224ba2bdSOllivier Robert    KEYSUF="-autokey"
93224ba2bdSOllivier Robert    ;;
94224ba2bdSOllivier Robert *--without-crypto*)
959c2daa00SOllivier Robert    KEYSUF="-noopenssl"
96224ba2bdSOllivier Robert    ;;
97224ba2bdSOllivier Robertesac
98224ba2bdSOllivier Robert
99ea906c41SOllivier Robertcase "$CONFIG_ARGS" in
100ea906c41SOllivier Robert *--disable-all-clocks*)
101ea906c41SOllivier Robert    KEYSUF="$KEYSUF-no-refclocks"
102ea906c41SOllivier Robert    ;;
103ea906c41SOllivier Robertesac
104ea906c41SOllivier Robert
105ea906c41SOllivier Robertcase "$CONFIG_ARGS" in
106ea906c41SOllivier Robert *--disable-debugging*)
107ea906c41SOllivier Robert    KEYSUF="$KEYSUF-nodebug"
108ea906c41SOllivier Robert    ;;
109ea906c41SOllivier Robertesac
110ea906c41SOllivier Robert
111c0b746e5SOllivier Robertcase "$CC" in
1122b15cb3dSCy Schubert '')
1132b15cb3dSCy Schubert    CCSUF=""
1142b15cb3dSCy Schubert    ;;
1152b15cb3dSCy Schubert *)
1162b15cb3dSCy Schubert    CCSUF="-`echo $CC | sed -e 's: :_:g' -e's:/:+:g'`"
117c0b746e5SOllivier Robert    ;;
118c0b746e5SOllivier Robertesac
119c0b746e5SOllivier Robert
1202b15cb3dSCy SchubertBDIR="$BASEDIR$KEYSUF$CCSUF"
121c0b746e5SOllivier Robert
122c0b746e5SOllivier Robert[ -d "$BDIR" ] || mkdir $BDIR
123c0b746e5SOllivier Robert[ -f "$BDIR/.buildcvo" ] || echo $CVO > $BDIR/.buildcvo
124c0b746e5SOllivier Robert[ -f "$BDIR/.buildhost" ] || echo $IAM > $BDIR/.buildhost
125c0b746e5SOllivier Robert
126eb6d21b4SOllivier Robert
127c0b746e5SOllivier Robertcd $BDIR
128c0b746e5SOllivier Robert
129eb6d21b4SOllivier Robert#
1302b15cb3dSCy Schubert# Make sure we have a nice that works.
1312b15cb3dSCy Schubert# To disable use of nice, setenv NO_NICE_BUILD=1
132eb6d21b4SOllivier Robert#
1332b15cb3dSCy SchubertNICEB=
1342b15cb3dSCy Schubert[ "$NO_NICE_BUILD" != "1" ] && nice true && NICEB=nice
1352b15cb3dSCy Schubert[ -z "$NICEB" ] && {
1362b15cb3dSCy Schubert	NICEB="./.nicebuild-$MYNAME-$SIG"
1372b15cb3dSCy Schubert	cat > $NICEB <<-HEREDOC
138eb6d21b4SOllivier Robert		#! /bin/sh
139eb6d21b4SOllivier Robert		shift
140eb6d21b4SOllivier Robert		\$*
1412b15cb3dSCy SchubertHEREDOC
1422b15cb3dSCy Schubert	chmod +x $NICEB
1432b15cb3dSCy Schubert}
144c0b746e5SOllivier Robert
1452b15cb3dSCy Schubert#
1462b15cb3dSCy Schubert# Find a test which supports -nt, unlike Solaris /bin/sh builtin.
1472b15cb3dSCy Schubert#
1482b15cb3dSCy SchubertTEST="${TEST-}"
1492b15cb3dSCy Schubertif [ -z "$TEST" ] ; then
1502b15cb3dSCy Schubert    for try in test /bin/test /usr/bin/test ; do
1512b15cb3dSCy Schubert	case `$try config.status -nt ../configure 2>&1` in
1522b15cb3dSCy Schubert	 '')
1532b15cb3dSCy Schubert	    TEST="$try"
1542b15cb3dSCy Schubert	    # echo "Using $TEST"
1552b15cb3dSCy Schubert	    break
156c0b746e5SOllivier Robert	    ;;
157c0b746e5SOllivier Robert	esac
1582b15cb3dSCy Schubert    done
1592b15cb3dSCy Schubert    if [ -z "$TEST" ] ; then
1602b15cb3dSCy Schubert	echo "build: need help finding test binary" 1>&2
1612b15cb3dSCy Schubert	exit 1
1622b15cb3dSCy Schubert    fi
1632b15cb3dSCy Schubertfi
1642b15cb3dSCy Schubert
1652b15cb3dSCy SchubertCONFIGURE="../configure"
1662b15cb3dSCy Schubert# We need KEYSUF because of RAND_ and others, and -noopenssl"
1672b15cb3dSCy Schubert#CONFIGURE="$CONFIGURE --cache-file=../config.cache-$IAM$KEYSUF$CCSUF"
1682b15cb3dSCy SchubertCONFIGURE="$CONFIGURE $CONFIG_ARGS"
1692b15cb3dSCy Schubert
1702b15cb3dSCy Schubert
1712b15cb3dSCy Schubert(	# This sequence of commands is logged to make.log.
1722b15cb3dSCy Schubert	# If config.status is newer than ../configure, and the same
1732b15cb3dSCy Schubert	# is true for sntp, we do not need to re-run configure.
1742b15cb3dSCy Schubert	# For libevent, the twist is we may not be configuring the
1752b15cb3dSCy Schubert	# tearoff, so only act if its config.status exists.
1762b15cb3dSCy Schubert	# Solaris /bin/sh doesn't grok -nt.
1772b15cb3dSCy Schubert
1782b15cb3dSCy Schubert	( "$TEST" config.status -nt ../configure &&
1792b15cb3dSCy Schubert	  "$TEST" sntp/config.status -nt ../sntp/configure &&
1802b15cb3dSCy Schubert	  ( "$TEST" '!' -f sntp/libevent/config.status ||
1812b15cb3dSCy Schubert	    "$TEST" sntp/libevent/config.status -nt ../sntp/libevent/configure ) ) ||
1822b15cb3dSCy Schubert		"$NICEB" -7 $CONFIGURE
1832b15cb3dSCy Schubert	"$TEST" Makefile -nt config.status ||
1842b15cb3dSCy Schubert		"$NICEB" -5 ./config.status
1852b15cb3dSCy Schubert	"$TEST" sntp/Makefile -nt sntp/config.status ||
1862b15cb3dSCy Schubert		( cd sntp && "$NICEB" -5 ./config.status )
1872b15cb3dSCy Schubert	"$TEST" '!' -f sntp/libevent/Makefile ||
1882b15cb3dSCy Schubert	  "$TEST" sntp/libevent/Makefile -nt sntp/libevent/config.status ||
1892b15cb3dSCy Schubert		( cd sntp/libevent && "$NICEB" -5 ./config.status )
1902b15cb3dSCy Schubert	"$NICEB" -14 ${MAKE-make} && "$NICEB" -11 ${MAKE-make} check
191a151a66cSOllivier Robert) > $LOGF 2>&1
1922b15cb3dSCy Schubert
1932b15cb3dSCy SchubertEXITCODE=$?
1942b15cb3dSCy Schubert
1952b15cb3dSCy Schubert# clean up if we made a dummy nice script
1962b15cb3dSCy Schubertcase "$NICEB" in
1972b15cb3dSCy Schubert nice)
1982b15cb3dSCy Schubert    ;;
1992b15cb3dSCy Schubert *)
2002b15cb3dSCy Schubert    rm "$NICEB"
2012b15cb3dSCy Schubert    ;;
2022b15cb3dSCy Schubertesac
2032b15cb3dSCy Schubert
2042b15cb3dSCy Schubertexit $EXITCODE
205