diff options
author | marcel <marcel@FreeBSD.org> | 2012-05-24 19:48:15 +0000 |
---|---|---|
committer | marcel <marcel@FreeBSD.org> | 2012-05-24 19:48:15 +0000 |
commit | e7223eeffb7133dbe8bf93d42f351391f821b133 (patch) | |
tree | 25f4112c4c46486072cad10f2ffd6add1d6d9fb2 | |
parent | 83c05d9d51d3ea56018ec2d5e73f61de2a6f8348 (diff) | |
download | FreeBSD-src-e7223eeffb7133dbe8bf93d42f351391f821b133.zip FreeBSD-src-e7223eeffb7133dbe8bf93d42f351391f821b133.tar.gz |
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.
-rw-r--r-- | bin/sh/Makefile | 2 | ||||
-rwxr-xr-x | bin/sh/mkbuiltins | 16 |
2 files changed, 9 insertions, 9 deletions
diff --git a/bin/sh/Makefile b/bin/sh/Makefile index afca8a3..cc04aa4 100644 --- a/bin/sh/Makefile +++ b/bin/sh/Makefile @@ -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 diff --git a/bin/sh/mkbuiltins b/bin/sh/mkbuiltins index 49af058..1be7ff1 100755 --- a/bin/sh/mkbuiltins +++ b/bin/sh/mkbuiltins @@ -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. |