version 1.58.2.9, 2005/12/12 11:20:33 |
version 1.59, 2002/05/24 14:43:31 |
|
|
#! /usr/bin/env sh |
#! /bin/sh |
# $NetBSD$ |
# $NetBSD$ |
# |
# |
# Top level build wrapper, for a system containing no tools. |
# Top level build wrapper, for a system containing no tools. |
|
|
# This script should run on any POSIX-compliant shell. For systems |
# This script should run on any POSIX-compliant shell. For systems |
# with a strange /bin/sh, "ksh" or "bash" may be an ample alternative. |
# with a strange /bin/sh, "ksh" or "bash" may be an ample alternative. |
# |
# |
# Note, however, that due to the way the interpreter is invoked above, |
|
# if a POSIX-compliant shell is the first in the PATH, you won't have |
|
# to take any further action. |
|
# |
|
|
|
bomb () { |
bomb () { |
echo "" |
echo "" |
|
|
[ -d usr.bin/make ] || bomb "build.sh must be run from the top source level" |
[ -d usr.bin/make ] || bomb "build.sh must be run from the top source level" |
[ -f share/mk/bsd.own.mk ] || bomb "src/share/mk is missing; please re-fetch the source tree" |
[ -f share/mk/bsd.own.mk ] || bomb "src/share/mk is missing; please re-fetch the source tree" |
|
|
# If $PWD is a valid name of the current directory, POSIX mandates that pwd |
TOP=`pwd` |
# return it by default which causes problems in the presence of symlinks. |
|
# Unsetting PWD is simpler than changing every occurrence of pwd to use -P. |
|
# |
|
# XXX Except that doesn't work on Solaris. |
|
unset PWD |
|
if [ "x`uname -s`" = "xSunOS" ]; then |
|
TOP=`pwd -P` |
|
else |
|
TOP=`pwd` |
|
fi |
|
|
|
getarch () { |
getarch () { |
# Translate a MACHINE into a default MACHINE_ARCH. |
# Translate a MACHINE into a default MACHINE_ARCH. |
|
|
resolvepath () { |
resolvepath () { |
case $OPTARG in |
case $OPTARG in |
/*) ;; |
/*) ;; |
*) OPTARG="$TOP/$OPTARG";; |
*) OPTARG="$cwd/$OPTARG";; |
esac |
esac |
} |
} |
|
|
|
|
# Set defaults. |
# Set defaults. |
MAKEFLAGS= |
MAKEFLAGS= |
buildtarget=build |
buildtarget=build |
|
cwd=`pwd` |
do_buildsystem=true |
do_buildsystem=true |
do_buildonlytools=false |
do_buildonlytools=false |
do_rebuildmake=false |
do_rebuildmake=false |
Line 198 while eval $getoptcmd; do case $opt in |
|
Line 185 while eval $getoptcmd; do case $opt in |
|
makeenv="$makeenv MAKEOBJDIRPREFIX";; |
makeenv="$makeenv MAKEOBJDIRPREFIX";; |
|
|
-O) eval $optargcmd; resolvepath |
-O) eval $optargcmd; resolvepath |
MAKEOBJDIR="\${.CURDIR:C,^$TOP,$OPTARG,}"; export MAKEOBJDIR |
MAKEOBJDIR="\${.CURDIR:C,^$cwd,$OPTARG,}"; export MAKEOBJDIR |
makeobjdir=$OPTARG |
makeobjdir=$OPTARG |
makeenv="$makeenv MAKEOBJDIR";; |
makeenv="$makeenv MAKEOBJDIR";; |
|
|
|
|
validatearch |
validatearch |
|
|
# Set up default make(1) environment. |
# Set up default make(1) environment. |
NETBSDSRCDIR=${TOP} |
makeenv="$makeenv TOOLDIR MACHINE MACHINE_ARCH MAKEFLAGS" |
makeenv="$makeenv TOOLDIR MACHINE MACHINE_ARCH MAKEFLAGS NETBSDSRCDIR" |
|
if [ ! -z "$BUILDID" ]; then |
if [ ! -z "$BUILDID" ]; then |
makeenv="$makeenv BUILDID" |
makeenv="$makeenv BUILDID" |
fi |
fi |
MAKEFLAGS="-m $TOP/share/mk $MAKEFLAGS MKOBJDIRS=${MKOBJDIRS-yes}" |
MAKEFLAGS="-m $cwd/share/mk $MAKEFLAGS MKOBJDIRS=${MKOBJDIRS-yes}" |
export MAKEFLAGS MACHINE MACHINE_ARCH |
export MAKEFLAGS MACHINE MACHINE_ARCH |
|
|
# Test make source file timestamps against installed nbmake binary, |
# Test make source file timestamps against installed nbmake binary, |
Line 265 if $do_rebuildmake; then |
|
Line 251 if $do_rebuildmake; then |
|
$runcmd cd "$tmpdir" |
$runcmd cd "$tmpdir" |
|
|
$runcmd env CC="${HOST_CC-cc}" CPPFLAGS="${HOST_CPPFLAGS}" CFLAGS="${HOST_CFLAGS--O}" LDFLAGS="${HOST_LDFLAGS}" \ |
$runcmd env CC="${HOST_CC-cc}" CPPFLAGS="${HOST_CPPFLAGS}" CFLAGS="${HOST_CFLAGS--O}" LDFLAGS="${HOST_LDFLAGS}" \ |
sh "$TOP/tools/make/configure" || bomb "configure of nbmake failed" |
"$cwd/tools/make/configure" || bomb "configure of nbmake failed" |
$runcmd sh buildmake.sh || bomb "build of nbmake failed" |
$runcmd sh buildmake.sh || bomb "build of nbmake failed" |
|
|
make="$tmpdir/nbmake" |
make="$tmpdir/nbmake" |
$runcmd cd "$TOP" |
$runcmd cd "$cwd" |
$runcmd rm -f usr.bin/make/*.o usr.bin/make/lst.lib/*.o |
$runcmd rm -f usr.bin/make/*.o usr.bin/make/lst.lib/*.o |
fi |
fi |
|
|
|
|
echo "===> DESTDIR path: $DESTDIR" |
echo "===> DESTDIR path: $DESTDIR" |
|
|
TOOLDIR=`getmakevar TOOLDIR`; |
TOOLDIR=`getmakevar TOOLDIR`; |
[ $? = 0 ] || bomb "getmakevar TOOLDIR failed"; |
[ $? = 0 ] || bomb "getmakevar DESTDIR failed"; |
echo "===> TOOLDIR path: $TOOLDIR" |
echo "===> TOOLDIR path: $TOOLDIR" |
|
|
export DESTDIR TOOLDIR |
export DESTDIR TOOLDIR |
|
|
|
|
# Recreate $TOOLDIR. |
# Recreate $TOOLDIR. |
$runcmd mkdir -p "$TOOLDIR/bin" || bomb "mkdir of '$TOOLDIR/bin' failed" |
$runcmd mkdir -p "$TOOLDIR/bin" || bomb "mkdir of '$TOOLDIR/bin' failed" |
build_start=$(date) |
|
|
|
# Install nbmake if it was built. |
# Install nbmake if it was built. |
if $do_rebuildmake; then |
if $do_rebuildmake; then |
Line 390 eval cat <<EOF $makewrapout |
|
Line 375 eval cat <<EOF $makewrapout |
|
# Set proper variables to allow easy "make" building of a NetBSD subtree. |
# Set proper variables to allow easy "make" building of a NetBSD subtree. |
# Generated from: \$NetBSD$ |
# Generated from: \$NetBSD$ |
# |
# |
unset INFODIR |
|
unset LESSCHARSET |
|
LC_ALL='C' ; export LC_ALL |
|
EOF |
EOF |
for f in $makeenv; do |
for f in $makeenv; do |
eval echo "$f=\'\$`echo $f`\'\;\ export\ $f" $makewrapout |
eval echo "$f=\'\$`echo $f`\'\;\ export\ $f" $makewrapout |
Line 419 elif $do_buildonlytools; then |
|
Line 402 elif $do_buildonlytools; then |
|
${runcmd-exec} "$makewrapper" dependall install |
${runcmd-exec} "$makewrapper" dependall install |
fi |
fi |
fi |
fi |
echo "===> Build started: ${build_start}" |
|
echo "===> Build ended: $(date)" |
|
echo "===> DESTDIR path: $DESTDIR" |
|
echo "===> TOOLDIR path: $TOOLDIR" |
|