Work better with how make/bmake works:

1.  Avoid a cd back into ${.CURDIR} to run mkbuiltins when we know make
    will first cd into ${.OBJDIR}. Keep the cwd to what make sets it to.
2.  Don't tell mkbuiltins where to write to (= ${.OBJDIR}), but where to
    get sources from (= ${.CURDIR}). This to compensate for point 1.

This fixes a problem with bmake's mk files that optimize ${.OBJDIR} to
expand to "." after changing cwd, not taking into account that the
target is pretty much undoing that and not getting the full path to the
object tree anymore.
This commit is contained in:
Marcel Moolenaar 2012-05-24 19:48:15 +00:00
parent 648466fc8d
commit 937b0a997b
2 changed files with 9 additions and 9 deletions

View File

@ -38,7 +38,7 @@ build-tools: mkinit mknodes mksyntax
.ORDER: builtins.c builtins.h
builtins.c builtins.h: mkbuiltins builtins.def
cd ${.CURDIR}; sh mkbuiltins ${.OBJDIR}
sh ${.CURDIR}/mkbuiltins ${.CURDIR}
init.c: mkinit alias.c eval.c exec.c input.c jobs.c options.c parser.c \
redir.c trap.c var.c

View File

@ -35,17 +35,17 @@
# $FreeBSD$
temp=`/usr/bin/mktemp -t ka`
havejobs=0
if grep '^#define[ ]*JOBS[ ]*1' shell.h > /dev/null
then havejobs=1
fi
havehist=1
if [ "X$1" = "X-h" ]; then
havehist=0
shift
fi
objdir=$1
exec > ${objdir}/builtins.c
srcdir=$1
havejobs=0
if grep '^#define[ ]*JOBS[ ]*1' $srcdir/shell.h > /dev/null
then havejobs=1
fi
exec > builtins.c
cat <<\!
/*
* This file was generated by the mkbuiltins program.
@ -57,7 +57,7 @@ cat <<\!
!
awk '/^[^#]/ {if(('$havejobs' || $2 != "-j") && ('$havehist' || $2 != "-h")) \
print $0}' builtins.def | sed 's/-[hj]//' > $temp
print $0}' $srcdir/builtins.def | sed 's/-[hj]//' > $temp
echo 'int (*const builtinfunc[])(int, char **) = {'
awk '/^[^#]/ { printf "\t%s,\n", $1}' $temp
echo '};
@ -74,7 +74,7 @@ awk '{ for (i = 2 ; i <= NF ; i++) {
echo ' { NULL, 0, 0 }
};'
exec > ${objdir}/builtins.h
exec > builtins.h
cat <<\!
/*
* This file was generated by the mkbuiltins program.