273 lines
6.3 KiB
Bash
Executable File
273 lines
6.3 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
#sysname=$1
|
|
|
|
while [ $# != 0 ]; do
|
|
if [ x$1 = x--with-nsupdate ]; then
|
|
echo "nsupdate is always built now."
|
|
elif [ x$1 = x--print-sysname ]; then
|
|
print_sysname=yes
|
|
elif [ x$1 = x--work-dir ]; then
|
|
workname=$2
|
|
shift
|
|
elif [ x$1 = x--dirs ]; then
|
|
dirs=$2
|
|
shift
|
|
elif [ x$1 = x--no-links ]; then
|
|
nolinks=YES
|
|
elif [ x$1 = x--copts ]; then
|
|
copts=$2
|
|
shift
|
|
elif [ x$sysname = x ]; then
|
|
sysname=$1
|
|
else
|
|
echo "Unexpected argument: $1"
|
|
fi
|
|
shift
|
|
done
|
|
|
|
uname=`uname -s`
|
|
machine=`uname -m`
|
|
|
|
if [ "$sysname" = "" ]; then
|
|
case $uname in
|
|
SCO_SV)
|
|
IFS=":"
|
|
for foo in $PATH; do
|
|
if [ x$gcc_path = x ] && [ -x $foo/gcc ]; then
|
|
gcc_path=$foo/gcc
|
|
fi
|
|
done
|
|
IFS=" "
|
|
if [ x$gcc_path = x ]; then
|
|
sysname=sco-cc
|
|
sysname_print=sco
|
|
else
|
|
sysname=sco-gcc
|
|
sysname_print=sco
|
|
fi
|
|
;;
|
|
AIX)
|
|
sysname=aix;;
|
|
Darwin)
|
|
sysname=darwin;;
|
|
Rhapsody)
|
|
sysname=rhapsody;;
|
|
ULTRIX)
|
|
sysname=ultrix;;
|
|
BSD/OS)
|
|
release=`uname -r`
|
|
minor=`echo $release |sed -e 's/[0-9]*\.\([0-9][0-9]*\)\(\..*\)*$/\1/'`
|
|
major=`echo $release |sed -e 's/\([0-9][0-9]*\)\..*$/\1/'`
|
|
|
|
case $major in
|
|
[123]) sysname=bsdos ;;
|
|
*) case $minor in
|
|
0) sysname=bsdos ;;
|
|
*) sysname=bsdos-4.1 ;;
|
|
esac;;
|
|
esac;;
|
|
OSF1)
|
|
if [ $machine = 'alpha' ]; then
|
|
sysname=alphaosf
|
|
# OSF1 has libc snprintf/vsnprintf support as of 4.0F. There is
|
|
# no v4 & v5 portable compile-time way of knowing the system's
|
|
# version (we can #include a version-identing file, but it is only
|
|
# present in v5).
|
|
#
|
|
# So we rely on a system command, 'sizer', and default to
|
|
# no-snprintf if we can't find it.
|
|
if [ -x /usr/sbin/sizer ] ; then
|
|
release=`/usr/sbin/sizer -v | cut -d ' ' -f 4 | cut -c 2-`
|
|
major=`echo $release | cut -d . -f 1`
|
|
minor=`echo $release | cut -d . -f 2`
|
|
incr=`echo $minor | sed 's/[0-9]//g' | tr '[A-Z]' '[0-9]'`
|
|
minor=`echo $minor | sed 's/[A-Z]//g'`
|
|
|
|
if [ $major -gt 4 -o \
|
|
$major -eq 4 -a $minor -gt 0 -o \
|
|
$major -eq 4 -a $minor -eq 0 -a $incr -gt 5 ]; then
|
|
copts="$copts -DHAVE_SNPRINTF"
|
|
fi
|
|
fi
|
|
fi;;
|
|
Linux)
|
|
release=`uname -r`
|
|
minor=`echo $release |sed -e 's/[0-9]*\.\([0-9][0-9]*\)\(\..*\)*$/\1/'`
|
|
major=`echo $release |sed -e 's/\([0-9][0-9]*\)\..*$/\1/'`
|
|
|
|
case $major in
|
|
1) sysname=linux-1 ;;
|
|
2) case $minor in
|
|
0) sysname=linux-2.0 ;;
|
|
1) sysname=linux-2.1 ;;
|
|
2) sysname=linux-2.2 ;;
|
|
*) sysname=linux-2.2 ;;
|
|
esac;;
|
|
esac;;
|
|
SunOS)
|
|
release=`uname -r`
|
|
minor=`echo $release |sed -e 's/.*[0-9]*\.\([0-9][0-9]*\).*$/\1/'`
|
|
major=`echo $release |sed -e 's/\([0-9][0-9]*\)\..*$/\1/'`
|
|
IFS=":"
|
|
for foo in $PATH; do
|
|
if [ x$gcc_path = x ] && [ -x $foo/gcc ]; then
|
|
gcc_path=$foo/gcc
|
|
fi
|
|
done
|
|
IFS=" "
|
|
|
|
case $major in
|
|
4)
|
|
if [ x$gcc_path = x ]; then
|
|
echo SunOS 4 build will not work without the GNU C Compiler.
|
|
exit 1
|
|
fi
|
|
sysname=sunos4;;
|
|
5)
|
|
if [ x$gcc_path = x ]; then
|
|
sysname=sunos5-cc
|
|
sysname_print=sunos5
|
|
else
|
|
sysname=sunos5-gcc
|
|
sysname_print=sunos5
|
|
fi;;
|
|
esac;;
|
|
NetBSD)
|
|
sysname=netbsd;;
|
|
OpenBSD)
|
|
sysname=openbsd;;
|
|
FreeBSD)
|
|
sysname=freebsd;;
|
|
hpux)
|
|
IFS=":"
|
|
for foo in $PATH; do
|
|
if [ x$gcc_path = x ] && [ -x $foo/gcc ]; then
|
|
gcc_path=$foo/gcc
|
|
fi
|
|
done
|
|
IFS=" "
|
|
|
|
if [ x$gcc_path = x ]; then
|
|
sysname=hpux-cc
|
|
sysname_print=hpux
|
|
else
|
|
sysname=hpux-gcc
|
|
sysname_print=hpux
|
|
fi;;
|
|
HP-UX)
|
|
IFS=":"
|
|
for foo in $PATH; do
|
|
if [ x$gcc_path = x ] && [ -x $foo/gcc ]; then
|
|
gcc_path=$foo/gcc
|
|
fi
|
|
done
|
|
IFS=" "
|
|
|
|
if [ x$gcc_path = x ]; then
|
|
sysname=hpux-cc
|
|
sysname_print=hpux
|
|
else
|
|
sysname=hpux-gcc
|
|
sysname_print=hpux
|
|
fi;;
|
|
QNX)
|
|
release=`uname -r`
|
|
major=`echo $release |sed -e 's/\([0-9][0-9]*\)\..*$/\1/'`
|
|
case $major in
|
|
6)
|
|
sysname=qnxnto;;
|
|
*)
|
|
sysname=qnx;;
|
|
esac;;
|
|
NEXTSTEP)
|
|
sysname=nextstep;;
|
|
UnixWare)
|
|
sysname=uw7;;
|
|
esac
|
|
fi
|
|
|
|
if [ "$sysname" = "" ]; then
|
|
if [ x$print_sysname = xyes ]; then
|
|
echo "unknown"
|
|
else
|
|
echo "UNIX name: $uname machine: $machine"
|
|
echo
|
|
echo "Unknown system. If this is an SCO system running ODT 3.0 or"
|
|
echo "higher, type \`\`./configure sco''. Otherwise, this is a"
|
|
echo "configuration that isn't supported or hasn't been tested."
|
|
echo
|
|
echo "Supported configurations are:"
|
|
echo " aix AIX 4.1.5.0"
|
|
echo " ultrix ULTRIX 4.2A or higher"
|
|
echo " bsdos BSDI BSD/OS 2.1"
|
|
echo " alphaosf DEC Alpha OSF/1"
|
|
echo " linux Linux"
|
|
echo " sunos4 Sunos 4.1.4 (earlier releases may work)"
|
|
echo " sunos5-cc Solaris 2.4 or higher with Sun cc"
|
|
echo " sunos5-gcc Solaris 2.4 or higher with gcc"
|
|
echo " netbsd NetBSD 1.1 or higher"
|
|
echo " freebsd FreeBSD"
|
|
echo " openbsd OpenBSD (i386/alpha)"
|
|
echo " hpux HP-UX"
|
|
echo " qnx QNX 4.2 or higher"
|
|
echo " NEXTSTEP NeXTSTEP"
|
|
echo " sco SCO Open Server"
|
|
exit 1;
|
|
fi
|
|
fi
|
|
|
|
if [ x$print_sysname = xyes ]; then
|
|
if [ x$sysname_print != x ]; then
|
|
echo $sysname_print
|
|
else
|
|
echo $sysname
|
|
fi
|
|
exit 0
|
|
fi
|
|
|
|
if [ x$workname = x ]; then
|
|
if [ x$sysname_print != x ]; then
|
|
workname=work.${sysname_print}
|
|
else
|
|
workname=work.${sysname}
|
|
fi
|
|
fi
|
|
|
|
echo "System Type: $sysname"
|
|
|
|
if [ x$major != x ] && [ x$minor != x ]; then
|
|
majversubst="-e /^##--majver--/,/^##--majver--/s/MajorVersion/$major/"
|
|
minversubst="-e /^##--minver--/,/^##--minver--/s/MinorVersion/$minor/"
|
|
fi
|
|
|
|
if [ ! -d $workname ]; then
|
|
mkdir $workname
|
|
fi
|
|
|
|
if [ x"$dirs" = x ]; then
|
|
dirs=". client server relay common omapip dhcpctl minires dst"
|
|
fi
|
|
|
|
for foo in $dirs; do
|
|
bar=`basename $foo`
|
|
if [ ! -d ${workname}/$bar ]; then
|
|
mkdir ${workname}/$bar
|
|
fi
|
|
(sed $majversubst $minversubst \
|
|
-e "/^##--${sysname}--/,/^##--${sysname}--/s/^#//" \
|
|
<Makefile.conf; \
|
|
cat site.conf; \
|
|
echo "TOP = `pwd`"; \
|
|
echo CC_OPTIONS = $copts; \
|
|
cat $foo/Makefile.dist) \
|
|
>${workname}/$bar/Makefile
|
|
done
|
|
|
|
# Make the link tree in which to actually build.
|
|
if [ x$nolinks = x ]; then
|
|
make links
|
|
fi
|
|
|
|
exit 0
|