version 1.17, 2001/11/01 01:49:44 |
version 1.18, 2001/11/02 05:07:22 |
|
|
} |
} |
|
|
getmakevar () { |
getmakevar () { |
cat <<EOF | $make -s -f- $makeflags _x_ |
cat <<EOF | $make -s -f- _x_ |
_x_: |
_x_: |
echo \${$1} |
echo \${$1} |
.include <bsd.prog.mk> |
.include <bsd.prog.mk> |
|
|
echo " -o: set MKOBJDIRS=no (do not create objdirs at start of build)" |
echo " -o: set MKOBJDIRS=no (do not create objdirs at start of build)" |
echo " -r: remove contents of TOOLDIR and DESTDIR before building" |
echo " -r: remove contents of TOOLDIR and DESTDIR before building" |
echo " -t: build and install tools only (implies -b)" |
echo " -t: build and install tools only (implies -b)" |
echo " -u: set UPDATE (overrides mk.conf)" |
echo " -u: set UPDATE" |
echo " -w: create nbmake script at wrapper (default TOOLDIR/bin/nbmake-MACHINE)" |
echo " -w: create nbmake script at wrapper (default TOOLDIR/bin/nbmake-MACHINE)" |
echo " -D: set DESTDIR to dest (overrides mk.conf)" |
echo " -D: set DESTDIR to dest" |
echo " -O: set obj root directory to obj (sets a MAKEOBJDIR pattern)" |
echo " -O: set obj root directory to obj (sets a MAKEOBJDIR pattern)" |
echo " -R: build a release (and set RELEASEDIR to release)" |
echo " -R: build a release (and set RELEASEDIR to release)" |
echo " -T: set TOOLDIR to tools (overrides mk.conf)" |
echo " -T: set TOOLDIR to tools" |
echo "" |
echo "" |
echo "Note: if -T is unset and TOOLDIR is not set in the environment," |
echo "Note: if -T is unset and TOOLDIR is not set in the environment," |
echo " nbmake will be [re]built unconditionally." |
echo " nbmake will be [re]built unconditionally." |
|
|
} |
} |
|
|
# Set defaults. |
# Set defaults. |
|
MAKEFLAGS= |
buildtarget=build |
buildtarget=build |
cwd=`pwd` |
cwd=`pwd` |
do_buildsystem=true |
do_buildsystem=true |
do_buildonlytools=false |
do_buildonlytools=false |
do_rebuildmake=false |
do_rebuildmake=false |
do_removedirs=false |
do_removedirs=false |
makeenv='exec' |
makeenv= |
makeflags='' |
makewrapper= |
makewrapper='' |
|
opt_a=no |
opt_a=no |
opts='a:bhj:m:nortuw:D:O:R:T:' |
opts='a:bhj:m:nortuw:D:O:R:T:' |
runcmd='' |
runcmd= |
|
|
if type getopts >/dev/null 2>&1; then |
if type getopts >/dev/null 2>&1; then |
# Use POSIX getopts. |
# Use POSIX getopts. |
Line 147 while eval $getoptcmd; do case $opt in |
|
Line 147 while eval $getoptcmd; do case $opt in |
|
-b) do_buildsystem=false;; |
-b) do_buildsystem=false;; |
|
|
-j) eval $optargcmd |
-j) eval $optargcmd |
makeflags="$makeflags NBUILDJOBS=$OPTARG";; |
MAKEFLAGS="$MAKEFLAGS NBUILDJOBS=$OPTARG"; export MAKEFLAGS;; |
|
|
# -m overrides MACHINE_ARCH unless "-a" is specified |
# -m overrides MACHINE_ARCH unless "-a" is specified |
-m) eval $optargcmd |
-m) eval $optargcmd |
Line 161 while eval $getoptcmd; do case $opt in |
|
Line 161 while eval $getoptcmd; do case $opt in |
|
|
|
-t) do_buildonlytools=true; do_buildsystem=false;; |
-t) do_buildonlytools=true; do_buildsystem=false;; |
|
|
-u) makeflags="$makeflags UPDATE=yes";; |
-u) UPDATE=yes; export UPDATE |
|
makeenv="$makeenv UPDATE";; |
|
|
-w) eval $optargcmd; resolvepath |
-w) eval $optargcmd; resolvepath |
makewrapper="$OPTARG";; |
makewrapper="$OPTARG";; |
|
|
-D) eval $optargcmd; resolvepath |
-D) eval $optargcmd; resolvepath |
makeflags="$makeflags DESTDIR='$OPTARG'";; |
DESTDIR="$OPTARG" |
|
makeenv="$makeenv DESTDIR";; |
|
|
-O) eval $optargcmd; resolvepath |
-O) eval $optargcmd; resolvepath |
makeenv="env MAKEOBJDIR='\${.CURDIR:C,^$cwd,$OPTARG,}'" |
|
MAKEOBJDIR="\${.CURDIR:C,^$cwd,$OPTARG,}"; export MAKEOBJDIR |
MAKEOBJDIR="\${.CURDIR:C,^$cwd,$OPTARG,}"; export MAKEOBJDIR |
execcmd='';; |
makeenv="$makeenv MAKEOBJDIR";; |
|
|
-R) eval $optargcmd; resolvepath |
-R) eval $optargcmd; resolvepath |
makeflags="$makeflags RELEASEDIR=$OPTARG" |
RELEASEDIR=$OPTARG; export RELEASEDIR |
|
makeenv="$makeenv RELEASEDIR" |
buildtarget=release;; |
buildtarget=release;; |
|
|
-T) eval $optargcmd; resolvepath |
-T) eval $optargcmd; resolvepath |
TOOLDIR="$OPTARG" |
TOOLDIR="$OPTARG"; export TOOLDIR;; |
makeflags="$makeflags TOOLDIR='$TOOLDIR'";; |
|
|
|
--) break;; |
--) break;; |
-'?'|-h) usage;; |
-'?'|-h) usage;; |
|
|
[ -n "$MACHINE_ARCH" ] || getarch |
[ -n "$MACHINE_ARCH" ] || getarch |
|
|
# Set up default make(1) environment. |
# Set up default make(1) environment. |
makeflags="-m $cwd/share/mk $makeflags \ |
makeenv="$makeenv TOOLDIR MACHINE MACHINE_ARCH MAKEFLAGS" |
MACHINE=$MACHINE MACHINE_ARCH=$MACHINE_ARCH \ |
MAKEFLAGS="-m $cwd/share/mk $MAKEFLAGS MKOBJDIRS=${MKOBJDIRS-yes}" |
MKOBJDIRS=${MKOBJDIRS-yes}" |
export MAKEFLAGS MACHINE MACHINE_ARCH |
|
|
# Test make source file timestamps against installed nbmake binary, |
# Test make source file timestamps against installed nbmake binary, |
# if TOOLDIR is pre-set. |
# if TOOLDIR is pre-set. |
|
|
|
|
# Build bootstrap nbmake if needed. |
# Build bootstrap nbmake if needed. |
if $do_rebuildmake; then |
if $do_rebuildmake; then |
echo "===> Bootstrapping nbmake" |
$runcmd echo "===> Bootstrapping nbmake" |
tmpdir=${TMPDIR-/tmp}/nbbuild$$ |
tmpdir=${TMPDIR-/tmp}/nbbuild$$ |
|
|
$runcmd mkdir $tmpdir || bomb "cannot mkdir: $tmpdir" |
$runcmd mkdir $tmpdir || bomb "cannot mkdir: $tmpdir" |
|
|
# If TOOLDIR isn't already set, make objdirs in "tools" in case the |
# If TOOLDIR isn't already set, make objdirs in "tools" in case the |
# default setting from <bsd.own.mk> is used. |
# default setting from <bsd.own.mk> is used. |
if [ -z "$TOOLDIR" ] && [ "$MKOBJDIRS" != "no" ]; then |
if [ -z "$TOOLDIR" ] && [ "$MKOBJDIRS" != "no" ]; then |
$runcmd $make $makeflags obj-tools || exit 1 |
$runcmd cd tools |
|
$runcmd $make obj NOSUBDIR= || exit 1 |
|
$runcmd cd .. |
fi |
fi |
|
|
# Find DESTDIR and TOOLDIR. |
# Find DESTDIR and TOOLDIR. |
Line 247 if [ "$runcmd" = "echo" ]; then |
|
Line 250 if [ "$runcmd" = "echo" ]; then |
|
else |
else |
DESTDIR=`getmakevar DESTDIR`; echo "===> DESTDIR path: $DESTDIR" |
DESTDIR=`getmakevar DESTDIR`; echo "===> DESTDIR path: $DESTDIR" |
TOOLDIR=`getmakevar TOOLDIR`; echo "===> TOOLDIR path: $TOOLDIR" |
TOOLDIR=`getmakevar TOOLDIR`; echo "===> TOOLDIR path: $TOOLDIR" |
|
export DESTDIR TOOLDIR |
fi |
fi |
|
|
# Check validity of TOOLDIR and DESTDIR. |
# Check validity of TOOLDIR and DESTDIR. |
Line 294 if [ -z "$makewrapper" ]; then |
|
Line 298 if [ -z "$makewrapper" ]; then |
|
fi |
fi |
|
|
if $do_rebuildmake || [ ! -f $makewrapper ] || [ $makewrapper -ot build.sh ]; then |
if $do_rebuildmake || [ ! -f $makewrapper ] || [ $makewrapper -ot build.sh ]; then |
rm -f $makewrapper |
$runcmd rm -f $makewrapper |
if [ "$runcmd" = "echo" ]; then |
if [ "$runcmd" = "echo" ]; then |
mkscriptcmd='echo "cat >$makewrapper <<EOF" && cat' |
echo 'cat <<EOF >'$makewrapper |
|
makewrapout= |
else |
else |
mkscriptcmd="cat >$makewrapper" |
makewrapout=">>$makewrapper" |
fi |
fi |
eval $mkscriptcmd <<EOF |
|
|
eval cat <<EOF $makewrapout |
#! /bin/sh |
#! /bin/sh |
# 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$ |
# |
# |
$makeenv $TOOLDIR/bin/nbmake $makeflags \${1+\$@} |
|
|
EOF |
|
for f in $makeenv; do |
|
eval echo "$f=\'\$`echo $f`\'\;\ export\ $f" $makewrapout |
|
done |
|
|
|
eval cat <<EOF $makewrapout |
|
|
|
exec \$TOOLDIR/bin/nbmake \${1+"\$@"} |
EOF |
EOF |
[ "$runcmd" = "echo" ] && echo EOF |
[ "$runcmd" = "echo" ] && echo EOF |
$runcmd chmod +x $makewrapper |
$runcmd chmod +x $makewrapper |
Line 315 if $do_buildsystem; then |
|
Line 329 if $do_buildsystem; then |
|
${runcmd-exec} $makewrapper $buildtarget |
${runcmd-exec} $makewrapper $buildtarget |
elif $do_buildonlytools; then |
elif $do_buildonlytools; then |
if [ "$MKOBJDIRS" != "no" ]; then |
if [ "$MKOBJDIRS" != "no" ]; then |
$make $makeflags obj-tools || exit 1 |
$makewrapper obj-tools || exit 1 |
fi |
fi |
${runcmd-exec} sh -c "cd tools && \ |
$runcmd cd tools |
$make $makeflags MKTOOLS=always build" |
${runcmd-exec} $makewrapper MKTOOLS=always build |
fi |
fi |