Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 31 Jan 2013 16:44:24 +0000 (UTC)
From:      "Simon J. Gerraty" <sjg@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org
Subject:   svn commit: r246149 - in vendor/NetBSD/bmake/dist: . mk mk/sys unit-tests
Message-ID:  <201301311644.r0VGiOnv046470@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: sjg
Date: Thu Jan 31 16:44:23 2013
New Revision: 246149
URL: http://svnweb.freebsd.org/changeset/base/246149

Log:
  Import bmake-20130123
  
  Approved by:	marcel (mentor)

Added:
  vendor/NetBSD/bmake/dist/Makefile   (contents, props changed)
  vendor/NetBSD/bmake/dist/Makefile.config.in   (contents, props changed)
  vendor/NetBSD/bmake/dist/makefile.in   (contents, props changed)
  vendor/NetBSD/bmake/dist/mk/
  vendor/NetBSD/bmake/dist/mk/ChangeLog
  vendor/NetBSD/bmake/dist/mk/FILES
  vendor/NetBSD/bmake/dist/mk/README
  vendor/NetBSD/bmake/dist/mk/auto.dep.mk
  vendor/NetBSD/bmake/dist/mk/auto.obj.mk
  vendor/NetBSD/bmake/dist/mk/autoconf.mk
  vendor/NetBSD/bmake/dist/mk/autodep.mk
  vendor/NetBSD/bmake/dist/mk/dep.mk
  vendor/NetBSD/bmake/dist/mk/dirdeps.mk
  vendor/NetBSD/bmake/dist/mk/doc.mk
  vendor/NetBSD/bmake/dist/mk/dpadd.mk
  vendor/NetBSD/bmake/dist/mk/final.mk
  vendor/NetBSD/bmake/dist/mk/gendirdeps.mk
  vendor/NetBSD/bmake/dist/mk/host-target.mk
  vendor/NetBSD/bmake/dist/mk/host.libnames.mk
  vendor/NetBSD/bmake/dist/mk/inc.mk
  vendor/NetBSD/bmake/dist/mk/init.mk
  vendor/NetBSD/bmake/dist/mk/install-mk
  vendor/NetBSD/bmake/dist/mk/install-new.mk
  vendor/NetBSD/bmake/dist/mk/java.mk
  vendor/NetBSD/bmake/dist/mk/lib.mk
  vendor/NetBSD/bmake/dist/mk/libnames.mk
  vendor/NetBSD/bmake/dist/mk/libs.mk
  vendor/NetBSD/bmake/dist/mk/links.mk
  vendor/NetBSD/bmake/dist/mk/man.mk
  vendor/NetBSD/bmake/dist/mk/meta.autodep.mk
  vendor/NetBSD/bmake/dist/mk/meta.stage.mk
  vendor/NetBSD/bmake/dist/mk/meta.subdir.mk
  vendor/NetBSD/bmake/dist/mk/meta.sys.mk
  vendor/NetBSD/bmake/dist/mk/meta2deps.py   (contents, props changed)
  vendor/NetBSD/bmake/dist/mk/meta2deps.sh   (contents, props changed)
  vendor/NetBSD/bmake/dist/mk/mk-files.txt   (contents, props changed)
  vendor/NetBSD/bmake/dist/mk/nls.mk
  vendor/NetBSD/bmake/dist/mk/obj.mk
  vendor/NetBSD/bmake/dist/mk/options.mk
  vendor/NetBSD/bmake/dist/mk/own.mk
  vendor/NetBSD/bmake/dist/mk/prlist.mk
  vendor/NetBSD/bmake/dist/mk/prog.mk
  vendor/NetBSD/bmake/dist/mk/progs.mk
  vendor/NetBSD/bmake/dist/mk/rst2htm.mk
  vendor/NetBSD/bmake/dist/mk/scripts.mk
  vendor/NetBSD/bmake/dist/mk/srctop.mk
  vendor/NetBSD/bmake/dist/mk/subdir.mk
  vendor/NetBSD/bmake/dist/mk/sys/
  vendor/NetBSD/bmake/dist/mk/sys.clean-env.mk
  vendor/NetBSD/bmake/dist/mk/sys.dependfile.mk
  vendor/NetBSD/bmake/dist/mk/sys.mk
  vendor/NetBSD/bmake/dist/mk/sys/AIX.mk
  vendor/NetBSD/bmake/dist/mk/sys/Darwin.mk
  vendor/NetBSD/bmake/dist/mk/sys/Generic.mk
  vendor/NetBSD/bmake/dist/mk/sys/HP-UX.mk
  vendor/NetBSD/bmake/dist/mk/sys/IRIX.mk
  vendor/NetBSD/bmake/dist/mk/sys/Linux.mk
  vendor/NetBSD/bmake/dist/mk/sys/NetBSD.mk
  vendor/NetBSD/bmake/dist/mk/sys/OSF1.mk
  vendor/NetBSD/bmake/dist/mk/sys/OpenBSD.mk
  vendor/NetBSD/bmake/dist/mk/sys/SunOS.mk
  vendor/NetBSD/bmake/dist/mk/sys/UnixWare.mk
  vendor/NetBSD/bmake/dist/mk/target-flags.mk
  vendor/NetBSD/bmake/dist/mk/warnings.mk
  vendor/NetBSD/bmake/dist/mk/yacc.mk
Deleted:
  vendor/NetBSD/bmake/dist/Makefile.in
Modified:
  vendor/NetBSD/bmake/dist/ChangeLog
  vendor/NetBSD/bmake/dist/FILES
  vendor/NetBSD/bmake/dist/bmake.1
  vendor/NetBSD/bmake/dist/bmake.cat1
  vendor/NetBSD/bmake/dist/boot-strap
  vendor/NetBSD/bmake/dist/bsd.after-import.mk
  vendor/NetBSD/bmake/dist/compat.c
  vendor/NetBSD/bmake/dist/configure
  vendor/NetBSD/bmake/dist/configure.in
  vendor/NetBSD/bmake/dist/job.c
  vendor/NetBSD/bmake/dist/main.c
  vendor/NetBSD/bmake/dist/make-bootstrap.sh.in
  vendor/NetBSD/bmake/dist/make.1
  vendor/NetBSD/bmake/dist/meta.c
  vendor/NetBSD/bmake/dist/realpath.c
  vendor/NetBSD/bmake/dist/unit-tests/Makefile.in
  vendor/NetBSD/bmake/dist/var.c

Modified: vendor/NetBSD/bmake/dist/ChangeLog
==============================================================================
--- vendor/NetBSD/bmake/dist/ChangeLog	Thu Jan 31 16:39:50 2013	(r246148)
+++ vendor/NetBSD/bmake/dist/ChangeLog	Thu Jan 31 16:44:23 2013	(r246149)
@@ -1,3 +1,35 @@
+2013-01-27  Simon J. Gerraty  <sjg@bad.crufty.net>
+
+	* Merge with NetBSD make, pick up
+	  o make.1: more info on how shell commands are handled.
+	  o job.c,main.c: detect write errors to job pipes.
+
+2013-01-25  Simon J. Gerraty  <sjg@bad.crufty.net>
+
+	* Makefile (MAKE_VERSION): 20130123
+	  Merge with NetBSD make, pick up
+	  o meta.c: if script uses .OODATE and meta_oodate() decides
+	    rebuild is needed, .OODATE will be empty - set it to .ALLSRC.
+	  o var.c: in debug output indicate which variabale modifiers
+	    apply to.
+	  o remove Check_Cwd logic the makefiles have been fixed.
+	
+2012-12-12  Simon J. Gerraty  <sjg@bad.crufty.net>
+
+	* makefile.in: add a simple makefile for folk who insist on
+	  ./configure; make; make install
+	  it just runs boot-strap
+	* include mk/* to accommodate the above
+	* boot-strap:  re-work to accommodate the above
+	  mksrc defaults to $Mydir/mk
+	  allow op={configure,build,install,clean,all}
+	  add options to facilitate install
+	* Makefile.config.in: just the bits set by configure
+	* Makefile: bump version to 20121212
+	  abandon Makefile.in (NetBSD Makefile)
+	  leverage mk/* instead
+	* configure.in: ensure srcdir is absolute
+
 2012-11-11  Simon J. Gerraty  <sjg@bad.crufty.net>
 
 	* Makefile.in (MAKE_VERSION): 20121111

Modified: vendor/NetBSD/bmake/dist/FILES
==============================================================================
--- vendor/NetBSD/bmake/dist/FILES	Thu Jan 31 16:39:50 2013	(r246148)
+++ vendor/NetBSD/bmake/dist/FILES	Thu Jan 31 16:44:23 2013	(r246149)
@@ -4,7 +4,9 @@ bmake.cat1
 boot-strap
 bsd.after-import.mk
 os.sh
-Makefile.in
+makefile.in
+Makefile
+Makefile.config.in
 PSD.doc/Makefile
 PSD.doc/tutorial.ms
 README
@@ -120,3 +122,63 @@ unit-tests/test.exp
 unit-tests/unexport
 unit-tests/unexport-env
 unit-tests/varcmd
+mk/ChangeLog
+mk/FILES
+mk/README
+mk/auto.obj.mk
+mk/autoconf.mk
+mk/autodep.mk
+mk/auto.dep.mk
+mk/dep.mk
+mk/doc.mk
+mk/dpadd.mk
+mk/final.mk
+mk/host-target.mk
+mk/host.libnames.mk
+mk/inc.mk
+mk/init.mk
+mk/install-mk
+mk/java.mk
+mk/lib.mk
+mk/libnames.mk
+mk/libs.mk
+mk/links.mk
+mk/man.mk
+mk/mk-files.txt
+mk/nls.mk
+mk/obj.mk
+mk/options.mk
+mk/own.mk
+mk/prlist.mk
+mk/prog.mk
+mk/progs.mk
+mk/rst2htm.mk
+mk/scripts.mk
+mk/srctop.mk
+mk/subdir.mk
+mk/sys.mk
+mk/sys.clean-env.mk
+mk/sys.dependfile.mk
+mk/sys/AIX.mk
+mk/sys/Darwin.mk
+mk/sys/Generic.mk
+mk/sys/HP-UX.mk
+mk/sys/IRIX.mk
+mk/sys/Linux.mk
+mk/sys/NetBSD.mk
+mk/sys/OSF1.mk
+mk/sys/OpenBSD.mk
+mk/sys/SunOS.mk
+mk/sys/UnixWare.mk
+mk/target-flags.mk
+mk/warnings.mk
+mk/yacc.mk
+mk/dirdeps.mk
+mk/gendirdeps.mk
+mk/install-new.mk
+mk/meta2deps.py
+mk/meta2deps.sh
+mk/meta.sys.mk
+mk/meta.autodep.mk
+mk/meta.stage.mk
+mk/meta.subdir.mk

Added: vendor/NetBSD/bmake/dist/Makefile
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ vendor/NetBSD/bmake/dist/Makefile	Thu Jan 31 16:44:23 2013	(r246149)
@@ -0,0 +1,221 @@
+#	$Id: Makefile,v 1.5 2013/01/28 19:31:58 sjg Exp $
+
+# Base version on src date
+MAKE_VERSION= 20130123
+
+PROG=	bmake
+
+SRCS= \
+	arch.c \
+	buf.c \
+	compat.c \
+	cond.c \
+	dir.c \
+	for.c \
+	hash.c \
+	job.c \
+	main.c \
+	make.c \
+	make_malloc.c \
+	meta.c \
+	parse.c \
+	str.c \
+	strlist.c \
+	suff.c \
+	targ.c \
+	trace.c \
+	util.c \
+	var.c
+
+# from lst.lib/
+SRCS+= \
+	lstAppend.c \
+	lstAtEnd.c \
+	lstAtFront.c \
+	lstClose.c \
+	lstConcat.c \
+	lstDatum.c \
+	lstDeQueue.c \
+	lstDestroy.c \
+	lstDupl.c \
+	lstEnQueue.c \
+	lstFind.c \
+	lstFindFrom.c \
+	lstFirst.c \
+	lstForEach.c \
+	lstForEachFrom.c \
+	lstInit.c \
+	lstInsert.c \
+	lstIsAtEnd.c \
+	lstIsEmpty.c \
+	lstLast.c \
+	lstMember.c \
+	lstNext.c \
+	lstOpen.c \
+	lstPrev.c \
+	lstRemove.c \
+	lstReplace.c \
+	lstSucc.c
+
+# this file gets generated by configure
+.-include "Makefile.config"
+
+.if !empty(LIBOBJS)
+SRCS+= ${LIBOBJS:T:.o=.c}
+.endif
+
+# just in case
+prefix?= /usr
+srcdir?= ${.CURDIR}
+
+DEFAULT_SYS_PATH?= .../share/mk:${prefix}/share/mk
+
+CPPFLAGS+= -DUSE_META
+CFLAGS+= ${CPPFLAGS}
+CFLAGS+= -D_PATH_DEFSYSPATH=\"${DEFAULT_SYS_PATH}\"
+CFLAGS+= -I. -I${srcdir} ${XDEFS} -DMAKE_NATIVE
+CFLAGS+= ${COPTS.${.ALLSRC:M*.c:T:u}}
+COPTS.main.c+= "-DMAKE_VERSION=\"${MAKE_VERSION}\""
+
+# meta mode can be useful even without filemon 
+FILEMON_H ?= /usr/include/dev/filemon/filemon.h
+.if exists(${FILEMON_H}) && ${FILEMON_H:T} == "filemon.h"
+COPTS.meta.c += -DHAVE_FILEMON_H -I${FILEMON_H:H}
+.endif
+
+.PATH:	${srcdir}
+.PATH:	${srcdir}/lst.lib
+
+.if make(obj) || make(clean)
+SUBDIR+= unit-tests
+.endif
+
+# start-delete1 for bsd.after-import.mk
+# we skip a lot of this when building as part of FreeBSD etc.
+
+# list of OS's which are derrived from BSD4.4
+BSD44_LIST= NetBSD FreeBSD OpenBSD DragonFly
+# we are...
+OS!= uname -s
+# are we 4.4BSD ?
+isBSD44:=${BSD44_LIST:M${OS}}
+
+.if ${isBSD44} == ""
+MANTARGET= cat
+INSTALL?=${srcdir}/install-sh
+.if (${MACHINE} == "sun386")
+# even I don't have one of these anymore :-)
+CFLAGS+= -DPORTAR
+.elif (${MACHINE} != "sunos")
+SRCS+= sigcompat.c
+CFLAGS+= -DSIGNAL_FLAGS=SA_RESTART
+.endif
+.else
+MANTARGET?= man
+.endif
+
+# turn this on by default - ignored if we are root
+WITH_INSTALL_AS_USER=
+
+# supress with -DWITHOUT_*
+OPTIONS_DEFAULT_YES+= \
+	AUTOCONF_MK \
+	INSTALL_MK \
+	PROG_LINK
+
+OPTIONS_DEFAULT_NO+= \
+	PROG_VERSION
+
+# process options now
+.include <own.mk>
+
+.if ${MK_PROG_VERSION} == "yes"
+PROG_NAME= ${PROG}-${MAKE_VERSION}
+.if ${MK_PROG_LINK} == "yes"
+SYMLINKS+= ${PROG}-${MAKE_VERSION} ${BINDIR}/${PROG}
+.endif
+.endif
+
+EXTRACT_MAN=no
+# end-delete1
+
+MAN= ${PROG}.1
+MAN1= ${MAN}
+
+.if (${PROG} != "make")
+CLEANFILES+= my.history
+.if make(${MAN}) || !exists(${srcdir}/${MAN})
+my.history: ${MAKEFILE}
+	@(echo ".Nm"; \
+	echo "is derived from NetBSD"; \
+	echo ".Xr make 1 ."; \
+	echo "It uses autoconf to facilitate portability to other platforms."; \
+	echo ".Pp") > $@
+
+.NOPATH: ${MAN}
+${MAN}:	make.1 my.history
+	@echo making $@
+	@sed -e 's/^.Nx/NetBSD/' -e '/^.Nm/s/make/${PROG}/' \
+	-e '/^.Sh HISTORY/rmy.history' \
+	-e '/^.Sh HISTORY/,$$s,^.Nm,make,' ${srcdir}/make.1 > $@
+
+all beforeinstall: ${MAN}
+_mfromdir=.
+.endif
+.endif
+
+MANTARGET?= cat
+MANDEST?= ${MANDIR}/${MANTARGET}1
+
+.if ${MANTARGET} == "cat"
+_mfromdir=${srcdir}
+.endif
+
+.include <prog.mk>
+
+CPPFLAGS+= -DMAKE_NATIVE -DHAVE_CONFIG_H
+COPTS.var.c += -Wno-cast-qual
+COPTS.job.c += -Wno-format-nonliteral
+COPTS.parse.c += -Wno-format-nonliteral
+COPTS.var.c += -Wno-format-nonliteral
+
+# Force these
+SHAREDIR= ${prefix}/share
+BINDIR= ${prefix}/bin
+MANDIR= ${SHAREDIR}/man
+
+.if !exists(.depend)
+${OBJS}: config.h
+.endif
+.if ${MK_AUTOCONF_MK} == "yes"
+.include <autoconf.mk>
+.endif
+
+# make sure that MAKE_VERSION gets updated.
+main.o: ${SRCS} ${MAKEFILE}
+
+# start-delete2 for bsd.after-import.mk
+SHARE_MK?=${SHAREDIR}/mk
+MKSRC=${srcdir}/mk
+INSTALL?=${srcdir}/install-sh
+
+.if ${MK_INSTALL_MK} == "yes"
+install: install-mk
+.endif
+
+beforeinstall:
+	test -d ${DESTDIR}${BINDIR} || ${INSTALL} -m 775 -d ${DESTDIR}${BINDIR}
+	test -d ${DESTDIR}${MANDEST} || ${INSTALL} -m 775 -d ${DESTDIR}${MANDEST}
+
+install-mk:
+.if exists(${MKSRC}/install-mk)
+	test -d ${DESTDIR}${SHARE_MK} || ${INSTALL} -m 775 -d ${DESTDIR}${SHARE_MK}
+	sh ${MKSRC}/install-mk -v -m 644 ${DESTDIR}${SHARE_MK}
+.else
+	@echo need to unpack mk.tar.gz under ${srcdir} or set MKSRC; false
+.endif
+# end-delete2
+
+# A simple unit-test driver to help catch regressions
+accept test:
+	cd ${.CURDIR}/unit-tests && MAKEFLAGS= ${.MAKE} -r -m / TEST_MAKE=${TEST_MAKE:U${.OBJDIR}/${PROG:T}} ${.TARGET}

Added: vendor/NetBSD/bmake/dist/Makefile.config.in
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ vendor/NetBSD/bmake/dist/Makefile.config.in	Thu Jan 31 16:44:23 2013	(r246149)
@@ -0,0 +1,16 @@
+# things set by configure
+
+prefix= @prefix@
+srcdir= @srcdir@
+CC?= @CC@
+MACHINE= @machine@
+MACHINE_ARCH= @machine_arch@
+DEFAULT_SYS_PATH= @default_sys_path@
+
+CPPFLAGS+= @CPPFLAGS@
+CFLAGS+= ${CPPFLAGS} @DEFS@
+LDFLAGS= @LDFLAGS@
+LIBOBJS= @LIBOBJS@
+LDADD= @LIBS@
+USE_META= @use_meta@
+FILEMON_H= @filemon_h@

Modified: vendor/NetBSD/bmake/dist/bmake.1
==============================================================================
--- vendor/NetBSD/bmake/dist/bmake.1	Thu Jan 31 16:39:50 2013	(r246148)
+++ vendor/NetBSD/bmake/dist/bmake.1	Thu Jan 31 16:44:23 2013	(r246149)
@@ -1,4 +1,4 @@
-.\"	$NetBSD: make.1,v 1.209 2012/10/08 15:09:48 christos Exp $
+.\"	$NetBSD: make.1,v 1.210 2013/01/27 18:52:01 sjg Exp $
 .\"
 .\" Copyright (c) 1990, 1993
 .\"	The Regents of the University of California.  All rights reserved.
@@ -29,7 +29,7 @@
 .\"
 .\"	from: @(#)make.1	8.4 (Berkeley) 3/19/94
 .\"
-.Dd October 8, 2012
+.Dd January 23, 2013
 .Dt MAKE 1
 .Os
 .Sh NAME
@@ -468,6 +468,50 @@ except that the effect can be limited to
 A
 .Ql Ic \-
 causes any non-zero exit status of the command line to be ignored.
+.Pp
+When
+.Nm
+is run in jobs mode with
+.Fl j Ar max_jobs ,
+the entire script for the target is fed to a
+single instance of the shell.
+.Pp
+In compatibility (non-jobs) mode, each command is run in a separate process.
+If the command contains any shell meta characters
+.Pq Ql #=|^(){};&<>*?[]:$`\e\en
+it will be passed to the shell, otherwise
+.Nm
+will attempt direct execution.
+.Pp
+Since
+.Nm
+will
+.Xr chdir 2
+to
+.Ql Va .OBJDIR
+before executing any targets, each child process
+starts with that as its current working directory.
+.Pp
+Makefiles should be written so that the mode of
+.Nm
+operation does not change their behavior.
+For example, any command which needs to use
+.Dq cd
+or
+.Dq chdir ,
+without side-effect should be put in parenthesis:
+.Bd -literal -offset indent
+
+avoid-chdir-side-effects:
+	@echo Building $@ in `pwd`
+	@(cd ${.CURDIR} && ${.MAKE} $@)
+	@echo Back in `pwd`
+
+ensure-one-shell-regardless-of-mode:
+	@echo Building $@ in `pwd`; \\
+	(cd ${.CURDIR} && ${.MAKE} $@); \\
+	echo Back in `pwd`
+.Ed
 .Sh VARIABLE ASSIGNMENTS
 Variables in make are much like variables in the shell, and, by tradition,
 consist of all upper-case letters.
@@ -2027,28 +2071,6 @@ NetBSD 5.0
 so that they still appear to be variable expansions.
 In particular this stops them being treated as syntax, and removes some
 obscure problems using them in .if statements.
-.Pp
-Unlike other
-.Nm
-programs, this implementation by default executes all commands for a given
-target using a single shell invocation.
-This is done for both efficiency and to simplify error handling in remote
-command invocations.
-Typically this is transparent to the user, unless the target commands change
-the current working directory using
-.Dq cd
-or
-.Dq chdir .
-To be compatible with Makefiles that do this, one can use
-.Fl B
-to disable this behavior.
-.Pp
-In compatibility mode, each command is run in a separate process.
-If the command contains any shell meta characters
-.Pq Ql #=|^(){};&<>*?[]:$`\e\en
-it will be passed to the shell, otherwise
-.Nm
-will attempt direct execution.
 .Sh SEE ALSO
 .Xr mkdep 1
 .Sh HISTORY

Modified: vendor/NetBSD/bmake/dist/bmake.cat1
==============================================================================
--- vendor/NetBSD/bmake/dist/bmake.cat1	Thu Jan 31 16:39:50 2013	(r246148)
+++ vendor/NetBSD/bmake/dist/bmake.cat1	Thu Jan 31 16:44:23 2013	(r246149)
@@ -284,6 +284,32 @@ SSHHEELLLL CCOOMMMMAANNDDSS
      line of a script.  A `--' causes any non-zero exit status of the command
      line to be ignored.
 
+     When bbmmaakkee is run in jobs mode with --jj _m_a_x___j_o_b_s, the entire script for
+     the target is fed to a single instance of the shell.
+
+     In compatibility (non-jobs) mode, each command is run in a separate
+     process.  If the command contains any shell meta characters
+     (`#=|^(){};&<>*?[]:$`\\n') it will be passed to the shell, otherwise
+     bbmmaakkee will attempt direct execution.
+
+     Since bbmmaakkee will chdir(2) to `_._O_B_J_D_I_R' before executing any targets, each
+     child process starts with that as its current working directory.
+
+     Makefiles should be written so that the mode of bbmmaakkee operation does not
+     change their behavior.  For example, any command which needs to use
+     ``cd'' or ``chdir'', without side-effect should be put in parenthesis:
+
+
+           avoid-chdir-side-effects:
+                   @echo Building $@ in `pwd`
+                   @(cd ${.CURDIR} && ${.MAKE} $@)
+                   @echo Back in `pwd`
+
+           ensure-one-shell-regardless-of-mode:
+                   @echo Building $@ in `pwd`; \
+                   (cd ${.CURDIR} && ${.MAKE} $@); \
+                   echo Back in `pwd`
+
 VVAARRIIAABBLLEE AASSSSIIGGNNMMEENNTTSS
      Variables in make are much like variables in the shell, and, by tradi-
      tion, consist of all upper-case letters.
@@ -1293,19 +1319,6 @@ CCOOMMPPAATTIIBBIILLIITTYY
      stops them being treated as syntax, and removes some obscure problems
      using them in .if statements.
 
-     Unlike other bbmmaakkee programs, this implementation by default executes all
-     commands for a given target using a single shell invocation.  This is
-     done for both efficiency and to simplify error handling in remote command
-     invocations.  Typically this is transparent to the user, unless the tar-
-     get commands change the current working directory using ``cd'' or
-     ``chdir''.  To be compatible with Makefiles that do this, one can use --BB
-     to disable this behavior.
-
-     In compatibility mode, each command is run in a separate process.  If the
-     command contains any shell meta characters (`#=|^(){};&<>*?[]:$`\\n') it
-     will be passed to the shell, otherwise bbmmaakkee will attempt direct execu-
-     tion.
-
 SSEEEE AALLSSOO
      mkdep(1)
 
@@ -1327,4 +1340,4 @@ BBUUGGSS
 
      There is no way of escaping a space character in a filename.
 
-NetBSD 5.1                      October 8, 2012                     NetBSD 5.1
+NetBSD 5.1                     January 23, 2013                     NetBSD 5.1

Modified: vendor/NetBSD/bmake/dist/boot-strap
==============================================================================
--- vendor/NetBSD/bmake/dist/boot-strap	Thu Jan 31 16:39:50 2013	(r246148)
+++ vendor/NetBSD/bmake/dist/boot-strap	Thu Jan 31 16:44:23 2013	(r246149)
@@ -3,23 +3,52 @@
 #	boot-strap
 #
 # SYNOPSIS:
-#	boot-strap [--"configure_arg" ... ][-s "srcdir"][-m "mksrc"]\\
-#		["prefix" ["bmakesrc" ["mksrc"]]]
+#	boot-strap ["options"]
+#	boot-strap --prefix=/opt --install
+#	boot-strap --prefix=$HOME --install-host-target -DWITH_PROG_VERSION
+#	boot-strap ["options"] op=build
+#	boot-strap ["options"] op=install
 #
 # DESCRIPTION:
 #	This script is used to configure/build bmake it builds for
-#	each OS in a subdir to keep the src clean. 
-#	On successful completion it echos commands to put the new
-#	bmake binary into the /configs tree (if it exists)
-#	(http://www.crufty.net/FreeWare/configs.html), $prefix/bin
-#	and a suitable ~/*bin directory.
+#	each host-target in a different subdir to keep the src clean.
+#	There is no requirement for an existing make(1).
 #
+#	On successful completion if no '--install' flag is given,
+#	it echos a command to do installation.
+#
+#	The variable "op" defaults to 'all', and is affected by
+#	'--install' flag as above.
+#	Other values include:
+#
+#	configure
+#		Just run 'configure'
+#
+#	build
+#		If 'configure' has not been done, do it, then
+#		run the build script, and finally 'test'.
+#
+#	install
+#		If 'build' has not been done, do it, 'test' then
+#		install. 
+#
+#	clean
+#		attempt to clean up
+#
+#	test
+#		run the unit-tests.  Done automatically after 'build'
+#		and before 'install'.
+#
+#	The above are leveraged by a trivial makefile for the benefit
+#	of those that have './configure; make; make install' baked
+#	into them.
+#	
 #	Options:
 #
 #	-c "rc"
 #		Pick up settings from "rc".  
 #		We look for '.bmake-boot-strap.rc' before processing
-#		options.
+#		options (unless SKIP_RC is set in environment).
 #
 #	--share "share_dir"
 #		Where to put man pages and mk files.
@@ -28,9 +57,28 @@
 #
 #	--mksrc "mksrc"
 #		Indicate where the mk files can be found.
-#		Default is ./mk or ../mk, set to 'none' to force
-#		building without "mksrc" but in that case a sys.mk
-#		needs to exist in the default syspath ($share_dir/mk)
+#		Default is $Mydir/mk
+#
+#	--install
+#		If build and test work, run bmake install.
+#		BINDIR=$prefix/bin
+#		SHAREDIR=$prefix/share
+#
+#	--install-host-target
+#		As for '--install' but BINDIR=$prefix/$HOST_TARGET/bin
+#		This is useful when $prefix/ is shared by multiple
+#		machines.
+#
+#	Flags relevant when installing:
+#
+#	-DWITHOUT_INSTALL_MK
+#		Skip installing mk files.
+#		By default they will be installed to $prefix/share/mk
+#
+#	-DWITH_PROG_VERSION
+#		Install 'bmake' as 'bmake-$MAKE_VERSION'
+#		A symlink will be made as 'bmake' unless
+#		-DWITHOUT_PROG_LINK is set.
 #
 #	Possibly useful configure_args:
 #
@@ -63,7 +111,7 @@
 #	Simon J. Gerraty <sjg@crufty.net>
 
 # RCSid:
-#	$Id: boot-strap,v 1.39 2012/03/26 17:08:22 sjg Exp $
+#	$Id: boot-strap,v 1.42 2013/01/25 20:20:33 sjg Exp $
 #
 #	@(#) Copyright (c) 2001 Simon J. Gerraty
 #
@@ -85,11 +133,10 @@ case "$Mydir" in
 *) Mydir=`cd "$Mydir" && 'pwd'`;;
 esac
 
-
 Usage() {
 	[ "$1" ] && echo "ERROR: $@" >&2
 	echo "Usage:" >&2
-	echo "$0 [--<configure_arg> ...][-s <srcdir>][-m <mksrc>][<prefix> [[<srcdir>] [<mksrc>]]]" >&2
+	echo "$0 [--<configure_arg> ...][<prefix>][--install]" >&2
 	exit 1
 }
 
@@ -110,28 +157,55 @@ source_rc() {
 	done
 }
 
+cmd_args="$@"
+
+# --install[-host-target] will set this
+INSTALL_PREFIX=
+# other things we pass to install step
+INSTALL_ARGS=
 CONFIGURE_ARGS=
 MAKESYSPATH=
 # pick a useful default prefix (for me at least ;-)
 for prefix in /opt/$HOST_TARGET "$HOME/$HOST_TARGET" /usr/pkg /usr/local ""
 do
-	[ -d "${prefix:-.}" ] && break
+	[ -d "${prefix:-.}" ] || continue
+	case "$prefix" in
+	*/$HOST_TARGET)
+		p=`dirname $prefix`
+		if [ -d $p/share ]; then
+			INSTALL_BIN=$HOST_TARGET/bin
+			prefix=$p
+		fi
+		;;
+	esac
+        echo "NOTE: default prefix=$prefix ${INSTALL_BIN:+INSTALL_BIN=$INSTALL_BIN}"
+	break
 done
-srcdir=
-mksrc=
+srcdir=$Mydir
+mksrc=$Mydir/mk
 objdir=
 quiet=:
 
-source_rc .bmake-boot-strap.rc . "$Mydir/.." "$HOME"
+${SKIP_RC:+:} source_rc .bmake-boot-strap.rc . "$Mydir/.." "$HOME"
 
 get_optarg() {
 	expr "x$1" : "x[^=]*=\\(.*\\)"
 }
 
+here=`'pwd'`
+if [ $here = $Mydir ]; then
+   # avoid polution
+   OBJROOT=../
+fi
+
+op=all
+BMAKE=
+
 while :
 do
 	case "$1" in
 	--) shift; break;;
+        --help) sed -n -e "1d;/RCSid/,\$d" -e '/^#\.[a-z]/d' -e '/^#/s,^# *,,p' $0; exit 0;;
 	--prefix) prefix="$2"; shift;;
 	--prefix=*) prefix=`get_optarg "$1"`;;
 	--src=*) srcdir=`get_optarg "$1"`;;
@@ -144,6 +218,13 @@ do
 	--with-default-sys-path)
 	    CONFIGURE_ARGS="$1 $2"
 	    MAKESYSPATH="$2"; shift;;
+	--install) INSTALL_PREFIX=${INSTALL_PREFIX:-$prefix};;
+	--install-host-target)
+                INSTALL_PREFIX=${INSTALL_PREFIX:-$prefix}
+                INSTALL_BIN=$HOST_TARGET/bin;;
+	--install-destdir=*) INSTALL_DESTDIR=`get_optarg "$1"`;;
+	--install-prefix=*) INSTALL_PREFIX=`get_optarg "$1"`;;
+	-DWITH*) INSTALL_ARGS="$INSTALL_ARGS $1";;
 	-s|--src) srcdir="$2"; shift;;
 	-m|--mksrc) mksrc="$2"; shift;;
 	-o|--objdir) objdir="$2"; shift;;
@@ -261,7 +342,7 @@ none|-) # we don't want it
 esac
 
 # Ok, get to work...
-objdir="${objdir:-$OS}"
+objdir="${objdir:-$OBJROOT$HOST_TARGET}"
 [ -d "$objdir" ] || mkdir -p "$objdir"
 [ -d "$objdir" ] || mkdir "$objdir"
 cd "$objdir" || exit 1
@@ -301,88 +382,80 @@ if [ "$mksrc" ]; then
         export CFLAGS_MF CFLAGS_MD
 fi
 
-$srcdir/configure $CONFIGURE_ARGS || exit 1
-chmod 755 make-bootstrap.sh || exit 1
-./make-bootstrap.sh || exit 1
-if [ -z "$MAKESYSPATH" ]; then
-       add_path "${share_dir:-...}/mk" MAKESYSPATH
-       case "$HOST_TARGET" in
-       netbsd*) add_path /usr/share/mk MAKESYSPATH;;
-       esac
-fi
-if [ -s "${mksrc:-/dev/null}/install-mk" ]; then
-        sh "${mksrc}/install-mk" "$objdir/mk"
-        case "$MAKESYSPATH" in
-        .../mk*) ;;
-        *) MAKESYSPATH=".../mk:${MAKESYSPATH}";;
-        esac
-fi
+# this makes it easy to run the bmake we just built
+# the :tA dance is needed because 'pwd' and even /bin/pwd
+# may not give the same result as realpath().
+Bmake() {
+    (
+	    cd $Mydir &&
+	    MAKESYSPATH=$mksrc SRCTOP=$Mydir OBJTOP=$objdir \
+	    MAKEOBJDIR='${.CURDIR:S,${SRCTOP:tA},${OBJTOP:tA},}' \
+	    ${BMAKE:-$objdir/bmake} -f $Mydir/Makefile "$@"
+    )
+}
+
 # make sure test below uses the same diff that configure did
 TOOL_DIFF=`type diff | sed 's,[()],,g;s,^[^/][^/]*,,;q'`
-export MAKESYSPATH TOOL_DIFF
-if [ "$mksrc" ]; then
-        $objdir/bmake test || exit 1
-else
-        # assume nothing
-        $objdir/bmake -r -m / test || exit 1
-fi
-# If -q given, we don't want all the install instructions
-$quiet exit 0
+export TOOL_DIFF
 
-make_version=`./bmake -r -m / -f ./Makefile -V MAKE_VERSION | ( read one two; echo $one )`
-bmake_version=bmake-$make_version
+op_configure() {
+	$srcdir/configure $CONFIGURE_ARGS || exit 1
+}
 
-if [ -s /usr/share/tmac/andoc.tmac ]; then
-	# this should be ok
-	man_subdir=man1
-	man_src=$srcdir/bmake.1
-else
-	# guess not
-	man_subdir=cat1
-	man_src=$srcdir/bmake.cat1
-fi
+op_build() {
+	[ -s make-bootstrap.sh ] || op_configure
+	chmod 755 make-bootstrap.sh || exit 1
+	./make-bootstrap.sh || exit 1
+	case "$op" in
+	build) op_test;;
+	esac
+}
 
-install_prefix() {
-    (
-	bin_dir=
-	share_dir=
-	man_dir=
-	mk_dir=
-	while :
-	do
-		case "$1" in
-		*=*) eval "$1"; shift;;
-		*) break;;
-		esac
-	done
-	bin_dir=${bin_dir:-$1/bin}
-	share_dir=${share_dir:-`ShareDir "$1"`}
-	man_dir=${man_dir:-$share_dir/man}
-	mk_dir=${mk_dir:-$share_dir/mk}
-	echo
-	echo Commands to install into $1/
-	echo
-	echo mkdir -p $bin_dir
-	echo cp $objdir/bmake $bin_dir/$bmake_version
-	echo rm -f $bin_dir/bmake
-	echo ln -s $bmake_version $bin_dir/bmake
-	echo mkdir -p $man_dir/$man_subdir
-	echo cp $man_src $man_dir/$man_subdir/bmake.1
-	if [ "$mksrc" ]; then
-		ev=`env | grep '_MK='`
-		echo $ev sh $mksrc/install-mk $mk_dir
+op_test() {
+	[ -x bmake ] || op_build
+	Bmake test || exit 1
+}
+
+op_clean() {
+	if [ -x bmake ]; then
+		ln bmake bmake$$
+		BMAKE=$objdir/bmake$$ Bmake clean
+		rm -f bmake$$
+	elif [ $objdir != $srcdir ]; then
+		rm -rf *
 	fi
-    )
 }
 
-case "$prefix/" in
-"$HOME"/*) ;;
-*)	CONFIGS=${CONFIGS:-/configs}
-	[ -d $CONFIGS ] &&
-	install_prefix mksrc= "$CONFIGS/$OS/$OSMAJOR.X/$MACHINE_ARCH$prefix"
-	# I like to keep a copy here...
-	install_prefix share_dir="$HOME/share" "$HOME/$HOST_TARGET"
-	;;
-esac
+op_install() {
+	op_test
+	case "$INSTALL_PREFIX,$INSTALL_BIN,$prefix" in
+	,$HOST_TARGET/bin,*/$HOST_TARGET)
+		INSTALL_PREFIX=`dirname $prefix`
+		;;
+	esac
+	INSTALL_PREFIX=${INSTALL_PREFIX:-$prefix}
+	Bmake install prefix=$INSTALL_PREFIX BINDIR=$INSTALL_PREFIX/${INSTALL_BIN:-bin} ${INSTALL_DESTDIR:+DESTDIR=$INSTALL_DESTDIR} $INSTALL_ARGS || exit 1
+}
+
+op_all() {
+	rm -f make-bootstrap.sh bmake *.o
+	if [ -n "$INSTALL_PREFIX" ]; then
+		op_install
+	else
+		op_test
+		MAKE_VERSION=`sed -n '/^MAKE_VERSION/ { s,.*=  *,,;p; }' $srcdir/Makefile`
+		echo You can install by running:
+		echo
+		echo $0 $cmd_args op=install
+		echo
+		echo "Use --install-prefix=/something to install somewhere other than $prefix"
+		echo "Use --install-destdir=/somewhere to set DESTDIR during install"
+		echo "Use --install-host-target to use INSTALL_BIN=$HOST_TARGET/bin"
+		echo "Use -DWITH_PROG_VERSION to install as bmake-$MAKE_VERSION"
+		echo "Use -DWITHOUT_PROG_LINK to supress bmake -> bmake-$MAKE_VERSION symlink"
+		echo "Use -DWITHOUT_INSTALL_MK to skip installing files to $prefix/share/mk"
+	fi
+}
 
-install_prefix "$prefix"
+op_$op
+exit 0

Modified: vendor/NetBSD/bmake/dist/bsd.after-import.mk
==============================================================================
--- vendor/NetBSD/bmake/dist/bsd.after-import.mk	Thu Jan 31 16:39:50 2013	(r246148)
+++ vendor/NetBSD/bmake/dist/bsd.after-import.mk	Thu Jan 31 16:44:23 2013	(r246149)
@@ -1,4 +1,4 @@
-# $Id: bsd.after-import.mk,v 1.9 2012/09/20 00:30:15 sjg Exp $
+# $Id: bsd.after-import.mk,v 1.11 2012/12/29 19:32:25 sjg Exp $
 
 # This makefile is for use when integrating bmake into a BSD build
 # system.  Use this makefile after importing bmake.
@@ -48,36 +48,36 @@ DEFAULT_SYS_PATH= .../share/mk:/usr/shar
 BOOTSTRAP_ARGS = \
 	--with-default-sys-path='${DEFAULT_SYS_PATH}' \
 	--prefix /usr \
-	--share /usr/share \
-	--mksrc none
+	--share /usr/share
+
 
 # run boot-strap with minimal influence
 bootstrap:	${BMAKE_SRC}/boot-strap ${MAKEFILE}
-	HOME=/ ${BMAKE_SRC}/boot-strap ${BOOTSTRAP_ARGS} ${BOOTSTRAP_XTRAS}
+	HOME=/ ${BMAKE_SRC}/boot-strap -o ${HOST_OS} ${BOOTSTRAP_ARGS} ${BOOTSTRAP_XTRAS}
 	touch ${.TARGET}
 
 # Makefiles need a little more tweaking than say config.h
 MAKEFILE_SED = 	sed -e '/^MACHINE/d' \
 	-e '/^PROG/ { s,=,?=,;s,bmake,$${.CURDIR:T},; }' \
 	-e 's,^.-include,.sinclude,' \
+	-e '/^\..*include  *</ { s,<,<bsd.,;/autoconf/d; }' \
 	-e 's,${SRCTOP},$${SRCTOP},g'
 
 # These are the simple files we want to capture
-configured_files= config.h unit-tests/Makefile
+configured_files= config.h Makefile.config unit-tests/Makefile
 
 after-import: bootstrap ${MAKEFILE}
-.for f in ${configured_files:N*Makefile}
+.for f in ${configured_files:M*.[ch]}
 	@echo Capturing $f
 	@mkdir -p ${${.CURDIR}/$f:L:H}
-	@cmp -s ${.CURDIR}/$f ${HOST_OS}/$f || \
-	    cp ${HOST_OS}/$f ${.CURDIR}/$f
+	@(echo '/* $$${HOST_OS}$$ */'; cat ${HOST_OS}/$f) > ${.CURDIR}/$f
 .endfor
-.for f in ${configured_files:M*Makefile}
+.for f in ${configured_files:M*Makefile*}
 	@echo Capturing $f
 	@mkdir -p ${${.CURDIR}/$f:L:H}
 	@(echo '# This is a generated file, do NOT edit!'; \
 	echo '# See ${_this:S,${SRCTOP}/,,}'; \
-	echo '#'; echo '# $$${OS}$$'; echo; \
+	echo '#'; echo '# $$${HOST_OS}$$'; echo; \
 	echo 'SRCTOP?= $${.CURDIR:${${.CURDIR}/$f:L:H:S,${SRCTOP}/,,:C,[^/]+,H,g:S,/,:,g}}'; echo; \
 	${MAKEFILE_SED} ${HOST_OS}/$f ) > ${.CURDIR}/$f
 .endfor
@@ -87,18 +87,22 @@ _makefile:	bootstrap ${MAKEFILE}
 	@echo Generating ${.CURDIR}/Makefile
 	@(echo '# This is a generated file, do NOT edit!'; \
 	echo '# See ${_this:S,${SRCTOP}/,,}'; \
-	echo '#'; echo '# $$${OS}$$'; \
+	echo '#'; echo '# $$${HOST_OS}$$'; \
 	echo; echo '.sinclude "Makefile.inc"'; \
 	echo; echo 'SRCTOP?= $${.CURDIR:${.CURDIR:S,${SRCTOP}/,,:C,[^/]+,H,g:S,/,:,g}}'; \
 	echo; echo '# look here first for config.h'; \
 	echo 'CFLAGS+= -I$${.CURDIR}'; echo; \
-	${MAKEFILE_SED} ${HOST_OS}/Makefile; \
+	echo '# for after-import'; \
+	echo 'CLEANDIRS+= ${HOST_OS}'; \
+	echo 'CLEANFILES+= bootstrap'; echo; \
+	${MAKEFILE_SED} \
+	${1 2:L:@n@-e '/start-delete$n/,/end-delete$n/d'@} \
+	${BMAKE_SRC}/Makefile; \
 	echo; echo '# override some simple things'; \
 	echo 'BINDIR= /usr/bin'; \
 	echo 'MANDIR= ${MANDIR:U/usr/share/man}'; \
 	echo; echo '# make sure we get this'; \
 	echo 'CFLAGS+= $${COPTS.$${.IMPSRC:T}}'; \
-	echo 'CLEANFILES+= bootstrap'; \
 	echo; echo 'after-import: ${_this:S,${SRCTOP},\${SRCTOP},}'; \
 	echo '	cd $${.CURDIR} && $${.MAKE} -f ${_this:S,${SRCTOP},\${SRCTOP},}'; \
 	echo ) > ${.TARGET}

Modified: vendor/NetBSD/bmake/dist/compat.c
==============================================================================
--- vendor/NetBSD/bmake/dist/compat.c	Thu Jan 31 16:39:50 2013	(r246148)
+++ vendor/NetBSD/bmake/dist/compat.c	Thu Jan 31 16:44:23 2013	(r246149)
@@ -1,4 +1,4 @@
-/*	$NetBSD: compat.c,v 1.90 2012/10/07 19:17:31 sjg Exp $	*/
+/*	$NetBSD: compat.c,v 1.91 2013/01/25 02:01:10 sjg Exp $	*/
 
 /*
  * Copyright (c) 1988, 1989, 1990 The Regents of the University of California.
@@ -70,14 +70,14 @@
  */
 
 #ifndef MAKE_NATIVE
-static char rcsid[] = "$NetBSD: compat.c,v 1.90 2012/10/07 19:17:31 sjg Exp $";
+static char rcsid[] = "$NetBSD: compat.c,v 1.91 2013/01/25 02:01:10 sjg Exp $";
 #else
 #include <sys/cdefs.h>
 #ifndef lint
 #if 0
 static char sccsid[] = "@(#)compat.c	8.2 (Berkeley) 3/19/94";
 #else
-__RCSID("$NetBSD: compat.c,v 1.90 2012/10/07 19:17:31 sjg Exp $");
+__RCSID("$NetBSD: compat.c,v 1.91 2013/01/25 02:01:10 sjg Exp $");
 #endif
 #endif /* not lint */
 #endif
@@ -377,7 +377,6 @@ again:
 	Fatal("Could not fork");
     }
     if (cpid == 0) {
-	Check_Cwd(av);
 	Var_ExportVars();
 #ifdef USE_META
 	if (useMeta) {

Modified: vendor/NetBSD/bmake/dist/configure
==============================================================================
Binary file (source and/or target). No diff available.

Modified: vendor/NetBSD/bmake/dist/configure.in
==============================================================================
--- vendor/NetBSD/bmake/dist/configure.in	Thu Jan 31 16:39:50 2013	(r246148)
+++ vendor/NetBSD/bmake/dist/configure.in	Thu Jan 31 16:44:23 2013	(r246149)
@@ -1,12 +1,18 @@
 dnl
 dnl RCSid:
-dnl	$Id: configure.in,v 1.45 2012/06/20 22:43:41 sjg Exp $
+dnl	$Id: configure.in,v 1.46 2012/12/28 21:28:18 sjg Exp $
 dnl
 dnl Process this file with autoconf to produce a configure script
 dnl
-AC_INIT([bmake], [20120620], [sjg@NetBSD.org])
+AC_INIT([bmake], [20121212], [sjg@NetBSD.org])
 AC_CONFIG_HEADER(config.h)
 

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201301311644.r0VGiOnv046470>