svn commit: r341652 - in head: contrib/bmake contrib/bmake/mk contrib/bmake/unit-tests usr.bin/bmake usr.bin/bmake/unit-tests

Simon J. Gerraty sjg at FreeBSD.org
Thu Dec 6 20:56:24 UTC 2018


Author: sjg
Date: Thu Dec  6 20:56:19 2018
New Revision: 341652
URL: https://svnweb.freebsd.org/changeset/base/341652

Log:
  Update bmake to version 20180919
  
  Cleanup of stats cache
  and new :q modifier.

Added:
  head/contrib/bmake/unit-tests/varquote.exp
     - copied unchanged from r341610, vendor/NetBSD/bmake/dist/unit-tests/varquote.exp
  head/contrib/bmake/unit-tests/varquote.mk
     - copied unchanged from r341610, vendor/NetBSD/bmake/dist/unit-tests/varquote.mk
Modified:
  head/contrib/bmake/ChangeLog
  head/contrib/bmake/FILES
  head/contrib/bmake/Makefile.config.in
  head/contrib/bmake/VERSION
  head/contrib/bmake/bmake.1
  head/contrib/bmake/dir.c
  head/contrib/bmake/make.1
  head/contrib/bmake/mk/ChangeLog
  head/contrib/bmake/mk/dirdeps-options.mk
  head/contrib/bmake/mk/dirdeps.mk
  head/contrib/bmake/mk/gendirdeps.mk
  head/contrib/bmake/mk/install-mk
  head/contrib/bmake/mk/meta.autodep.mk
  head/contrib/bmake/mk/meta.stage.mk
  head/contrib/bmake/unit-tests/Makefile.in
  head/contrib/bmake/var.c
  head/usr.bin/bmake/Makefile.config
  head/usr.bin/bmake/unit-tests/Makefile
Directory Properties:
  head/contrib/bmake/   (props changed)

Modified: head/contrib/bmake/ChangeLog
==============================================================================
--- head/contrib/bmake/ChangeLog	Thu Dec  6 20:28:09 2018	(r341651)
+++ head/contrib/bmake/ChangeLog	Thu Dec  6 20:56:19 2018	(r341652)
@@ -1,3 +1,14 @@
+2018-09-21  Simon J. Gerraty  <sjg at bad.crufty.net>
+
+	* VERSION: 20180919
+	  Merge with NetBSD make, pick up
+	  o var.c: add :q
+	  o dir.c: cleanup caching of stats
+
+2018-09-21  Simon J Gerraty  <sjg at beast.crufty.net>
+
+	* Makefile.config.in: use += where it makes sense.
+
 2018-05-12  Simon J. Gerraty  <sjg at bad.crufty.net>
 
 	* VERSION: 20180512

Modified: head/contrib/bmake/FILES
==============================================================================
--- head/contrib/bmake/FILES	Thu Dec  6 20:28:09 2018	(r341651)
+++ head/contrib/bmake/FILES	Thu Dec  6 20:56:19 2018	(r341652)
@@ -163,6 +163,8 @@ unit-tests/varcmd.exp
 unit-tests/varcmd.mk
 unit-tests/varmisc.exp
 unit-tests/varmisc.mk
+unit-tests/varquote.exp
+unit-tests/varquote.mk
 unit-tests/varshell.exp
 unit-tests/varshell.mk
 util.c

Modified: head/contrib/bmake/Makefile.config.in
==============================================================================
--- head/contrib/bmake/Makefile.config.in	Thu Dec  6 20:28:09 2018	(r341651)
+++ head/contrib/bmake/Makefile.config.in	Thu Dec  6 20:56:19 2018	(r341652)
@@ -1,6 +1,6 @@
 # things set by configure
 
-_MAKE_VERSION=@_MAKE_VERSION@
+_MAKE_VERSION?=@_MAKE_VERSION@
 
 prefix?= @prefix@
 srcdir= @srcdir@
@@ -11,9 +11,9 @@ DEFAULT_SYS_PATH?= @default_sys_path@
 
 CPPFLAGS+= @CPPFLAGS@
 CFLAGS+= ${CPPFLAGS} @DEFS@
-LDFLAGS= @LDFLAGS@
-LIBOBJS= @LIBOBJS@
-LDADD= @LIBS@
+LDFLAGS+= @LDFLAGS@
+LIBOBJS+= @LIBOBJS@
+LDADD+= @LIBS@
 USE_META= @use_meta@
 FILEMON_H?= @filemon_h@
 BMAKE_PATH_MAX?= @bmake_path_max@

Modified: head/contrib/bmake/VERSION
==============================================================================
--- head/contrib/bmake/VERSION	Thu Dec  6 20:28:09 2018	(r341651)
+++ head/contrib/bmake/VERSION	Thu Dec  6 20:56:19 2018	(r341652)
@@ -1,2 +1,2 @@
 # keep this compatible with sh and make
-_MAKE_VERSION=20180512
+_MAKE_VERSION=20180919

Modified: head/contrib/bmake/bmake.1
==============================================================================
--- head/contrib/bmake/bmake.1	Thu Dec  6 20:28:09 2018	(r341651)
+++ head/contrib/bmake/bmake.1	Thu Dec  6 20:56:19 2018	(r341652)
@@ -1,4 +1,4 @@
-.\"	$NetBSD: make.1,v 1.272 2018/04/02 04:26:17 dholland Exp $
+.\"	$NetBSD: make.1,v 1.273 2018/05/27 01:14:51 christos 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 June 22, 2017
+.Dd May 26, 2018
 .Dt BMAKE 1
 .Os
 .Sh NAME
@@ -1227,8 +1227,15 @@ due uno quattro tre
 .Ed
 .It Cm \&:Q
 Quotes every shell meta-character in the variable, so that it can be passed
+safely to the shell.
+.It Cm \&:q
+Quotes every shell meta-character in the variable, and also doubles
+.Sq $
+characters so that it can be passed
 safely through recursive invocations of
 .Nm .
+This is equivalent to: 
+.Sq \&:S/\e\&$/&&/g:Q .
 .It Cm \&:R
 Replaces each word in the variable with everything but its suffix.
 .It Cm \&:range[=count]

Modified: head/contrib/bmake/dir.c
==============================================================================
--- head/contrib/bmake/dir.c	Thu Dec  6 20:28:09 2018	(r341651)
+++ head/contrib/bmake/dir.c	Thu Dec  6 20:56:19 2018	(r341652)
@@ -1,4 +1,4 @@
-/*	$NetBSD: dir.c,v 1.71 2017/04/16 21:14:47 riastradh Exp $	*/
+/*	$NetBSD: dir.c,v 1.73 2018/07/12 18:03:31 christos Exp $	*/
 
 /*
  * Copyright (c) 1988, 1989, 1990 The Regents of the University of California.
@@ -70,14 +70,14 @@
  */
 
 #ifndef MAKE_NATIVE
-static char rcsid[] = "$NetBSD: dir.c,v 1.71 2017/04/16 21:14:47 riastradh Exp $";
+static char rcsid[] = "$NetBSD: dir.c,v 1.73 2018/07/12 18:03:31 christos Exp $";
 #else
 #include <sys/cdefs.h>
 #ifndef lint
 #if 0
 static char sccsid[] = "@(#)dir.c	8.2 (Berkeley) 1/2/94";
 #else
-__RCSID("$NetBSD: dir.c,v 1.71 2017/04/16 21:14:47 riastradh Exp $");
+__RCSID("$NetBSD: dir.c,v 1.73 2018/07/12 18:03:31 christos Exp $");
 #endif
 #endif /* not lint */
 #endif
@@ -268,15 +268,6 @@ struct cache_st {
 };
 
 /* minimize changes below */
-static time_t
-Hash_GetTimeValue(Hash_Entry *entry)
-{
-    struct cache_st *cst;
-
-    cst = entry->clientPtr;
-    return cst->mtime;
-}
-
 #define CST_LSTAT 1
 #define CST_UPDATE 2
 
@@ -298,6 +289,10 @@ cached_stats(Hash_Table *htp, const char *pathname, st
 	memset(st, 0, sizeof(*st));
 	st->st_mtime = cst->mtime;
 	st->st_mode = cst->mode;
+        if (DEBUG(DIR)) {
+            fprintf(debug_file, "Using cached time %s for %s\n",
+		Targ_FmtTime(st->st_mtime), pathname);
+	}
 	return 0;
     }
 
@@ -315,6 +310,10 @@ cached_stats(Hash_Table *htp, const char *pathname, st
     cst = entry->clientPtr;
     cst->mtime = st->st_mtime;
     cst->mode = st->st_mode;
+    if (DEBUG(DIR)) {
+	fprintf(debug_file, "   Caching %s for %s\n",
+	    Targ_FmtTime(st->st_mtime), pathname);
+    }
 
     return 0;
 }
@@ -995,14 +994,6 @@ DirLookupSubdir(Path *p, const char *name)
     }
 
     if (cached_stat(file, &stb) == 0) {
-	/*
-	 * Save the modification time so if it's needed, we don't have
-	 * to fetch it again.
-	 */
-	if (DEBUG(DIR)) {
-	    fprintf(debug_file, "   Caching %s for %s\n", Targ_FmtTime(stb.st_mtime),
-		    file);
-	}
 	nearmisses += 1;
 	return (file);
     }
@@ -1134,7 +1125,6 @@ Dir_FindFile(const char *name, Lst path)
     Boolean	  hasLastDot = FALSE;	/* true we should search dot last */
     Boolean	  hasSlash;		/* true if 'name' contains a / */
     struct stat	  stb;			/* Buffer for stat, if necessary */
-    Hash_Entry	  *entry;		/* Entry for mtimes table */
     const char   *trailing_dot = ".";
 
     /*
@@ -1395,24 +1385,14 @@ Dir_FindFile(const char *name, Lst path)
     }
 
     bigmisses += 1;
-    entry = Hash_FindEntry(&mtimes, name);
-    if (entry != NULL) {
-	if (DEBUG(DIR)) {
-	    fprintf(debug_file, "   got it (in mtime cache)\n");
-	}
-	return(bmake_strdup(name));
-    } else if (cached_stat(name, &stb) == 0) {
-	if (DEBUG(DIR)) {
-	    fprintf(debug_file, "   Caching %s for %s\n", Targ_FmtTime(stb.st_mtime),
-		    name);
-	}
+    if (cached_stat(name, &stb) == 0) {
 	return (bmake_strdup(name));
-    } else {
-	if (DEBUG(DIR)) {
-	    fprintf(debug_file, "   failed. Returning NULL\n");
-	}
-	return NULL;
     }
+
+    if (DEBUG(DIR)) {
+	fprintf(debug_file, "   failed. Returning NULL\n");
+    }
+    return NULL;
 #endif /* notdef */
 }
 
@@ -1518,7 +1498,6 @@ Dir_MTime(GNode *gn, Boolean recheck)
 {
     char          *fullName;  /* the full pathname of name */
     struct stat	  stb;	      /* buffer for finding the mod time */
-    Hash_Entry	  *entry;
 
     if (gn->type & OP_ARCHV) {
 	return Arch_MTime(gn);
@@ -1569,17 +1548,7 @@ Dir_MTime(GNode *gn, Boolean recheck)
 	fullName = bmake_strdup(gn->name);
     }
 
-    if (!recheck)
-	entry = Hash_FindEntry(&mtimes, fullName);
-    else
-	entry = NULL;
-    if (entry != NULL) {
-	stb.st_mtime = Hash_GetTimeValue(entry);
-	if (DEBUG(DIR)) {
-	    fprintf(debug_file, "Using cached time %s for %s\n",
-		    Targ_FmtTime(stb.st_mtime), fullName);
-	}
-    } else if (cached_stats(&mtimes, fullName, &stb, recheck ? CST_UPDATE : 0) < 0) {
+    if (cached_stats(&mtimes, fullName, &stb, recheck ? CST_UPDATE : 0) < 0) {
 	if (gn->type & OP_MEMBER) {
 	    if (fullName != gn->path)
 		free(fullName);

Modified: head/contrib/bmake/make.1
==============================================================================
--- head/contrib/bmake/make.1	Thu Dec  6 20:28:09 2018	(r341651)
+++ head/contrib/bmake/make.1	Thu Dec  6 20:56:19 2018	(r341652)
@@ -1,4 +1,4 @@
-.\"	$NetBSD: make.1,v 1.272 2018/04/02 04:26:17 dholland Exp $
+.\"	$NetBSD: make.1,v 1.273 2018/05/27 01:14:51 christos 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 September 27, 2018
+.Dd December 5, 2018
 .Dt MAKE 1
 .Os
 .Sh NAME
@@ -1238,8 +1238,15 @@ due uno quattro tre
 .Ed
 .It Cm \&:Q
 Quotes every shell meta-character in the variable, so that it can be passed
+safely to the shell.
+.It Cm \&:q
+Quotes every shell meta-character in the variable, and also doubles
+.Sq $
+characters so that it can be passed
 safely through recursive invocations of
 .Nm .
+This is equivalent to: 
+.Sq \&:S/\e\&$/&&/g:Q .
 .It Cm \&:R
 Replaces each word in the variable with everything but its suffix.
 .It Cm \&:range[=count]

Modified: head/contrib/bmake/mk/ChangeLog
==============================================================================
--- head/contrib/bmake/mk/ChangeLog	Thu Dec  6 20:28:09 2018	(r341651)
+++ head/contrib/bmake/mk/ChangeLog	Thu Dec  6 20:56:19 2018	(r341652)
@@ -1,3 +1,25 @@
+2018-09-19  Simon J Gerraty  <sjg at beast.crufty.net>
+
+	* install-mk (MK_VERSION): 20180919
+
+	* dirdeps-options.mk: .undef cannot handle var that expands to
+	  more than one var. 
+
+2018-07-08  Simon J Gerraty  <sjg at beast.crufty.net>
+
+	* meta.stage.mk: allow wildcards in STAGE_FILES.* etc.
+
+2018-06-01  Simon J Gerraty  <sjg at beast.crufty.net>
+
+	* meta.autodep.mk: export META_FILES to avoid command line limit
+	* gendirdeps.mk: if we have lots of .meta files put them in
+	  an @list
+
+2018-05-28  Simon J Gerraty  <sjg at beast.crufty.net>
+
+	* dirdeps-options.mk: use local.dirdeps-options.mk
+	  not local.dirdeps-option.mk
+
 2018-04-20  Simon J Gerraty  <sjg at beast.crufty.net>
 
 	* install-mk (MK_VERSION): 20180420

Modified: head/contrib/bmake/mk/dirdeps-options.mk
==============================================================================
--- head/contrib/bmake/mk/dirdeps-options.mk	Thu Dec  6 20:28:09 2018	(r341651)
+++ head/contrib/bmake/mk/dirdeps-options.mk	Thu Dec  6 20:56:19 2018	(r341652)
@@ -1,4 +1,4 @@
-# $Id: dirdeps-options.mk,v 1.5 2018/04/18 15:53:57 sjg Exp $
+# $Id: dirdeps-options.mk,v 1.9 2018/09/20 00:07:19 sjg Exp $
 #
 #	@(#) Copyright (c) 2018, Simon J. Gerraty
 #
@@ -25,7 +25,7 @@
 # If a Makefile.depend.options file exists, it will be included by
 # dirdeps.mk and meta.autodep.mk
 #
-# We include local.dirdeps-option.mk which may also define DIRDEPS.*
+# We include local.dirdeps-options.mk which may also define DIRDEPS.*
 # for options.
 #
 # Thus a directory, that is affected by an option FOO would have
@@ -35,7 +35,7 @@
 # DIRDEPS.FOO.yes
 # DIRDEPS.FOO.no
 # to whatever applies for that dir, or it can rely on globals
-# set in local.dirdeps-option.mk
+# set in local.dirdeps-options.mk
 # Either way, we will .undef DIRDEPS.* when done.
 
 # This should have been set by Makefile.depend.options
@@ -43,7 +43,7 @@
 DIRDEPS_OPTIONS ?=
 
 # pickup any DIRDEPS.* we need
-.-include <local.dirdeps-option.mk>
+.-include <local.dirdeps-options.mk>
 
 .if ${.MAKE.LEVEL} == 0
 # :U below avoids potential errors when we :=
@@ -52,7 +52,10 @@ DIRDEPS += ${DIRDEPS.$o.${MK_$o:U}:U}
 .endfor
 DIRDEPS := ${DIRDEPS:O:u}
 # avoid cross contamination
-.undef ${DIRDEPS_OPTIONS:tu:@o at DIRDEPS.$o.yes DIRDEPS.$o.no@}
+.for o in ${DIRDEPS_OPTIONS:tu}
+.undef DIRDEPS.$o.yes
+.undef DIRDEPS.$o.no
+.endfor
 .else
 # whether options are enabled or not,
 # we want to filter out the relevant DIRDEPS.*

Modified: head/contrib/bmake/mk/dirdeps.mk
==============================================================================
--- head/contrib/bmake/mk/dirdeps.mk	Thu Dec  6 20:28:09 2018	(r341651)
+++ head/contrib/bmake/mk/dirdeps.mk	Thu Dec  6 20:56:19 2018	(r341652)
@@ -1,4 +1,4 @@
-# $Id: dirdeps.mk,v 1.95 2018/04/23 17:53:56 sjg Exp $
+# $Id: dirdeps.mk,v 1.96 2018/06/20 22:26:39 sjg Exp $
 
 # Copyright (c) 2010-2013, Juniper Networks, Inc.
 # All rights reserved.
@@ -731,6 +731,8 @@ DIRDEPS =
 .info loading ${_m} for ${d:E}
 .endif
 .include <${_m}>
+.else
+.-include <local.dirdeps-missing.mk>
 .endif
 .endif
 .endif
@@ -746,7 +748,7 @@ DIRDEPS =
 DEP_RELDIR := ${RELDIR}
 _DEP_RELDIR := ${RELDIR}
 # Since we are/should be included by .MAKE.DEPENDFILE
-# is is a final opportunity to add/hook global rules.
+# This is a final opportunity to add/hook global rules.
 .-include <local.dirdeps-build.mk>
 
 # pickup local dependencies

Modified: head/contrib/bmake/mk/gendirdeps.mk
==============================================================================
--- head/contrib/bmake/mk/gendirdeps.mk	Thu Dec  6 20:28:09 2018	(r341651)
+++ head/contrib/bmake/mk/gendirdeps.mk	Thu Dec  6 20:56:19 2018	(r341652)
@@ -1,4 +1,4 @@
-# $Id: gendirdeps.mk,v 1.38 2018/03/10 00:53:52 sjg Exp $
+# $Id: gendirdeps.mk,v 1.39 2018/06/08 01:25:31 sjg Exp $
 
 # Copyright (c) 2010-2013, Juniper Networks, Inc.
 # All rights reserved.
@@ -171,11 +171,27 @@ GENDIRDEPS_SEDCMDS += \
 # we canonicalize them to keep things simple
 # if we are using a split-fs sandbox, it gets a little messier.
 _objtop := ${_OBJTOP:tA}
+
+# some people put *.meta in META_XTRAS to make sure we get here
+_meta_files := ${META_FILES:N\*.meta:O:u}
+# assume a big list
+_meta_files_arg= @meta.list
+.if empty(_meta_files) && ${META_FILES:M\*.meta} != ""
+# XXX this should be considered a bad idea, 
+# since we cannot ignore stale .meta
+x != cd ${_OBJDIR} && find . -name '*.meta' -print -o \( -type d ! -name . -prune \) | sed 's,^./,,' > meta.list; echo
+.elif ${_meta_files:[#]} > 500
+.export _meta_files
+x != echo; for m in $$_meta_files; do echo $$m; done > meta.list
+.else
+_meta_files_arg:= ${_meta_files}
+.endif
+
 dir_list != cd ${_OBJDIR} && \
 	${META2DEPS_CMD} MACHINE=${MACHINE} \
 	SRCTOP=${SRCTOP} RELDIR=${RELDIR} CURDIR=${_CURDIR} \
 	${META2DEPS_ARGS} \
-	${META_FILES:O:u} | ${META2DEPS_FILTER} ${_skip_gendirdeps} \
+	${_meta_files_arg} | ${META2DEPS_FILTER} ${_skip_gendirdeps} \
 	sed ${GENDIRDEPS_SEDCMDS}
 
 .if ${dir_list:M*ERROR\:*} != ""

Modified: head/contrib/bmake/mk/install-mk
==============================================================================
--- head/contrib/bmake/mk/install-mk	Thu Dec  6 20:28:09 2018	(r341651)
+++ head/contrib/bmake/mk/install-mk	Thu Dec  6 20:56:19 2018	(r341652)
@@ -55,7 +55,7 @@
 #       Simon J. Gerraty <sjg at crufty.net>
 
 # RCSid:
-#	$Id: install-mk,v 1.156 2018/04/22 04:42:47 sjg Exp $
+#	$Id: install-mk,v 1.160 2018/09/20 00:07:19 sjg Exp $
 #
 #	@(#) Copyright (c) 1994 Simon J. Gerraty
 #
@@ -70,7 +70,7 @@
 #	sjg at crufty.net
 #
 
-MK_VERSION=20180420
+MK_VERSION=20180919
 OWNER=
 GROUP=
 MODE=444

Modified: head/contrib/bmake/mk/meta.autodep.mk
==============================================================================
--- head/contrib/bmake/mk/meta.autodep.mk	Thu Dec  6 20:28:09 2018	(r341651)
+++ head/contrib/bmake/mk/meta.autodep.mk	Thu Dec  6 20:56:19 2018	(r341652)
@@ -1,4 +1,4 @@
-# $Id: meta.autodep.mk,v 1.48 2018/04/15 06:30:04 sjg Exp $
+# $Id: meta.autodep.mk,v 1.50 2018/06/08 01:25:31 sjg Exp $
 
 #
 #	@(#) Copyright (c) 2010, Simon J. Gerraty
@@ -20,9 +20,11 @@ __${_this}__: .NOTMAIN
 
 .-include <local.autodep.mk>
 
+PICO?= .pico
+
 .if defined(SRCS)
 # it would be nice to be able to query .SUFFIXES
-OBJ_EXTENSIONS+= .o .po .lo .So
+OBJ_EXTENSIONS+= .o .po .lo ${PICO}
 
 # explicit dependencies help short-circuit .SUFFIX searches
 SRCS_DEP_FILTER+= N*.[hly]
@@ -178,7 +180,7 @@ DEPEND_SUFFIXES += .c .h .cpp .hpp .cxx .hxx .cc .hh
 	@case "${.MAKE.META.FILES:T:M*.po.*}" in \
 	*.po.*) mv $@.${.MAKE.PID} $@;; \
 	*) { cat $@.${.MAKE.PID}; \
-	sed 's,\.So:,.o:,;s,\.o:,.po:,' $@.${.MAKE.PID}; } | sort -u > $@; \
+	sed 's,\${PICO}:,.o:,;s,\.o:,.po:,' $@.${.MAKE.PID}; } | sort -u > $@; \
 	rm -f $@.${.MAKE.PID};; \
 	esac
 .else
@@ -243,7 +245,7 @@ META_FILES = *.meta
 .elif ${OPTIMIZE_OBJECT_META_FILES:Uno:tl} == "no"
 META_FILES = ${.MAKE.META.FILES:T:N.depend*:O:u}
 .else
-# if we have 1000's of .o.meta, .So.meta etc we need only look at one set
+# if we have 1000's of .o.meta, ${PICO}.meta etc we need only look at one set
 # it is left as an exercise for the reader to work out what this does
 META_FILES = ${.MAKE.META.FILES:T:N.depend*:N*o.meta:O:u} \
 	${.MAKE.META.FILES:T:M*.${.MAKE.META.FILES:M*o.meta:R:E:O:u:[1]}.meta:O:u}
@@ -260,6 +262,9 @@ META_FILES = ${.MAKE.META.FILES:T:N.depend*:N*o.meta:O
 .if !empty(GENDIRDEPS_FILTER)
 .export GENDIRDEPS_FILTER
 .endif
+# export to avoid blowing command line limit
+META_FILES := ${META_XTRAS:U:O:u} ${META_FILES:U:T:O:u:${META_FILE_FILTER:ts:}}
+.export META_FILES
 .endif
 
 # we might have .../ in MAKESYSPATH
@@ -270,8 +275,7 @@ ${_DEPENDFILE}: ${_depend} ${.PARSEDIR}/gendirdeps.mk 
 	SKIP_GENDIRDEPS='${SKIP_GENDIRDEPS:O:u}' \
 	DPADD='${FORCE_DPADD:O:u}' ${_gendirdeps_mutex} \
 	MAKESYSPATH=${_makesyspath} \
-	${.MAKE} -f gendirdeps.mk RELDIR=${RELDIR} _DEPENDFILE=${_DEPENDFILE} \
-	META_FILES='${META_XTRAS:O:u} ${META_FILES:T:O:u:${META_FILE_FILTER:ts:}}')
+	${.MAKE} -f gendirdeps.mk RELDIR=${RELDIR} _DEPENDFILE=${_DEPENDFILE})
 	@test -s $@ && touch $@; :
 .endif
 

Modified: head/contrib/bmake/mk/meta.stage.mk
==============================================================================
--- head/contrib/bmake/mk/meta.stage.mk	Thu Dec  6 20:28:09 2018	(r341651)
+++ head/contrib/bmake/mk/meta.stage.mk	Thu Dec  6 20:56:19 2018	(r341652)
@@ -1,4 +1,4 @@
-# $Id: meta.stage.mk,v 1.55 2017/10/27 01:17:09 sjg Exp $
+# $Id: meta.stage.mk,v 1.56 2018/07/08 17:12:54 sjg Exp $
 #
 #	@(#) Copyright (c) 2011-2017, Simon J. Gerraty
 #
@@ -141,7 +141,7 @@ _STAGE_AS_BASENAME_USE:        .USE .dirdep ${.TARGET:
 
 .if !empty(STAGE_INCSDIR)
 .if !empty(STAGE_INCS)
-stage_incs: ${STAGE_INCS}
+stage_incs: ${STAGE_INCS:N*\**}
 .endif
 .if target(stage_incs) || !empty(.ALLTARGETS:Mstage_includes)
 STAGE_TARGETS += stage_incs
@@ -156,7 +156,7 @@ stage_incs:	.dirdep
 
 .if !empty(STAGE_LIBDIR)
 .if !empty(STAGE_LIBS)
-stage_libs: ${STAGE_LIBS}
+stage_libs: ${STAGE_LIBS:N*\**}
 .endif
 .if target(stage_libs)
 STAGE_TARGETS += stage_libs
@@ -191,7 +191,7 @@ CLEANFILES += ${STAGE_SETS:@s at stage*$s@}
 # some makefiles need to populate multiple directories
 .for s in ${STAGE_SETS:O:u}
 .if !empty(STAGE_FILES.$s)
-stage_files.$s: ${STAGE_FILES.$s}
+stage_files.$s: ${STAGE_FILES.$s:N*\**}
 .endif
 .if target(stage_files.$s) || target(stage_files${s:S,^,.,:N._default})
 STAGE_TARGETS += stage_files
@@ -262,7 +262,7 @@ CLEANFILES += ${STAGE_AS_SETS:@s at stage*$s@}
 # both operations happen together
 .for s in ${STAGE_AS_SETS:O:u}
 .if !empty(STAGE_AS.$s)
-stage_as.$s: ${STAGE_AS.$s}
+stage_as.$s: ${STAGE_AS.$s:N*\**}
 .endif
 .if target(stage_as.$s)
 STAGE_TARGETS += stage_as
@@ -277,7 +277,7 @@ stage_as.$s:	.dirdep
 .endif
 
 .if !empty(STAGE_AS_AND_SYMLINK.$s)
-stage_as_and_symlink.$s: ${STAGE_AS_AND_SYMLINK.$s}
+stage_as_and_symlink.$s: ${STAGE_AS_AND_SYMLINK.$s:N*\**}
 .endif
 .if target(stage_as_and_symlink.$s)
 STAGE_TARGETS += stage_as_and_symlink

Modified: head/contrib/bmake/unit-tests/Makefile.in
==============================================================================
--- head/contrib/bmake/unit-tests/Makefile.in	Thu Dec  6 20:28:09 2018	(r341651)
+++ head/contrib/bmake/unit-tests/Makefile.in	Thu Dec  6 20:56:19 2018	(r341652)
@@ -1,6 +1,6 @@
-# $Id: Makefile.in,v 1.48 2015/12/07 04:06:29 sjg Exp $
+# $Id: Makefile.in,v 1.49 2018/09/21 21:39:05 sjg Exp $
 #
-# $NetBSD: Makefile,v 1.52 2015/05/05 21:51:09 sjg Exp $
+# $NetBSD: Makefile,v 1.53 2018/05/24 00:25:44 christos Exp $
 #
 # Unit tests for make(1)
 # The main targets are:
@@ -54,6 +54,7 @@ TESTNAMES= \
 	unexport-env \
 	varcmd \
 	varmisc \
+	varquote \
 	varshell
 
 # these tests were broken by referting POSIX chanegs

Copied: head/contrib/bmake/unit-tests/varquote.exp (from r341610, vendor/NetBSD/bmake/dist/unit-tests/varquote.exp)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/contrib/bmake/unit-tests/varquote.exp	Thu Dec  6 20:56:19 2018	(r341652, copy of r341610, vendor/NetBSD/bmake/dist/unit-tests/varquote.exp)
@@ -0,0 +1,3 @@
+-fdebug-prefix-map=$NETBSDSRCDIR=/usr/src -fdebug-regex-map=/usr/src/(.*)/obj$=/usr/obj/\1
+-fdebug-prefix-map=$NETBSDSRCDIR=/usr/src -fdebug-regex-map=/usr/src/(.*)/obj$=/usr/obj/\1
+exit status 0

Copied: head/contrib/bmake/unit-tests/varquote.mk (from r341610, vendor/NetBSD/bmake/dist/unit-tests/varquote.mk)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/contrib/bmake/unit-tests/varquote.mk	Thu Dec  6 20:56:19 2018	(r341652, copy of r341610, vendor/NetBSD/bmake/dist/unit-tests/varquote.mk)
@@ -0,0 +1,14 @@
+# $NetBSD: varquote.mk,v 1.2 2018/05/27 01:14:51 christos Exp $
+#
+# Test VAR:q modifier
+
+.if !defined(REPROFLAGS)
+REPROFLAGS+=    -fdebug-prefix-map=\$$NETBSDSRCDIR=/usr/src
+REPROFLAGS+=    -fdebug-regex-map='/usr/src/(.*)/obj$$=/usr/obj/\1'
+all:
+	@${MAKE} -f ${MAKEFILE} REPROFLAGS=${REPROFLAGS:S/\$/&&/g:Q}
+	@${MAKE} -f ${MAKEFILE} REPROFLAGS=${REPROFLAGS:q}
+.else
+all:
+	@echo ${REPROFLAGS}
+.endif

Modified: head/contrib/bmake/var.c
==============================================================================
--- head/contrib/bmake/var.c	Thu Dec  6 20:28:09 2018	(r341651)
+++ head/contrib/bmake/var.c	Thu Dec  6 20:56:19 2018	(r341652)
@@ -1,4 +1,4 @@
-/*	$NetBSD: var.c,v 1.218 2018/02/18 00:52:42 sjg Exp $	*/
+/*	$NetBSD: var.c,v 1.220 2018/05/27 01:14:51 christos Exp $	*/
 
 /*
  * Copyright (c) 1988, 1989, 1990, 1993
@@ -69,14 +69,14 @@
  */
 
 #ifndef MAKE_NATIVE
-static char rcsid[] = "$NetBSD: var.c,v 1.218 2018/02/18 00:52:42 sjg Exp $";
+static char rcsid[] = "$NetBSD: var.c,v 1.220 2018/05/27 01:14:51 christos Exp $";
 #else
 #include <sys/cdefs.h>
 #ifndef lint
 #if 0
 static char sccsid[] = "@(#)var.c	8.3 (Berkeley) 3/19/94";
 #else
-__RCSID("$NetBSD: var.c,v 1.218 2018/02/18 00:52:42 sjg Exp $");
+__RCSID("$NetBSD: var.c,v 1.220 2018/05/27 01:14:51 christos Exp $");
 #endif
 #endif /* not lint */
 #endif
@@ -324,7 +324,7 @@ static Boolean VarLoopExpand(GNode *, Var_Parse_State 
 static char *VarGetPattern(GNode *, Var_Parse_State *,
 			   int, const char **, int, int *, int *,
 			   VarPattern *);
-static char *VarQuote(char *);
+static char *VarQuote(char *, Boolean);
 static char *VarHash(char *);
 static char *VarModify(GNode *, Var_Parse_State *,
     const char *,
@@ -2315,6 +2315,7 @@ VarGetPattern(GNode *ctxt, Var_Parse_State *vpstate MA
  *-----------------------------------------------------------------------
  * VarQuote --
  *	Quote shell meta-characters and space characters in the string
+ *	if quoteDollar is set, also quote and double any '$' characters.
  *
  * Results:
  *	The quoted string
@@ -2325,7 +2326,7 @@ VarGetPattern(GNode *ctxt, Var_Parse_State *vpstate MA
  *-----------------------------------------------------------------------
  */
 static char *
-VarQuote(char *str)
+VarQuote(char *str, Boolean quoteDollar)
 {
 
     Buffer  	  buf;
@@ -2346,6 +2347,8 @@ VarQuote(char *str)
 	if (isspace((unsigned char)*str) || ismeta((unsigned char)*str))
 	    Buf_AddByte(&buf, '\\');
 	Buf_AddByte(&buf, *str);
+	if (quoteDollar && *str == '$')
+	    Buf_AddBytes(&buf, 2, "\\$");
     }
 
     str = Buf_Destroy(&buf, FALSE);
@@ -3485,9 +3488,10 @@ ApplyModifiers(char *nstr, const char *tstr,
 		break;
 	    }
 #endif
+	case 'q':
 	case 'Q':
 	    if (tstr[1] == endc || tstr[1] == ':') {
-		newStr = VarQuote(nstr);
+		newStr = VarQuote(nstr, modifier == 'q');
 		cp = tstr + 1;
 		termc = *cp;
 		break;

Modified: head/usr.bin/bmake/Makefile.config
==============================================================================
--- head/usr.bin/bmake/Makefile.config	Thu Dec  6 20:28:09 2018	(r341651)
+++ head/usr.bin/bmake/Makefile.config	Thu Dec  6 20:56:19 2018	(r341652)
@@ -7,7 +7,7 @@ SRCTOP?= ${.CURDIR:H:H}
 
 # things set by configure
 
-_MAKE_VERSION=20180512
+_MAKE_VERSION?=20180919
 
 prefix?= /usr
 srcdir= ${SRCTOP}/contrib/bmake
@@ -17,8 +17,8 @@ DEFAULT_SYS_PATH?= .../share/mk:/usr/share/mk
 CPPFLAGS+= 
 CFLAGS+= ${CPPFLAGS} -DHAVE_CONFIG_H
 LDFLAGS+= 
-LIBOBJS=  ${LIBOBJDIR}stresep$U.o
-LDADD= 
+LIBOBJS+=  ${LIBOBJDIR}stresep$U.o
+LDADD+= 
 USE_META= yes
 FILEMON_H?= /usr/include/dev/filemon/filemon.h
 BMAKE_PATH_MAX?= 1024

Modified: head/usr.bin/bmake/unit-tests/Makefile
==============================================================================
--- head/usr.bin/bmake/unit-tests/Makefile	Thu Dec  6 20:28:09 2018	(r341651)
+++ head/usr.bin/bmake/unit-tests/Makefile	Thu Dec  6 20:56:19 2018	(r341652)
@@ -5,9 +5,9 @@
 
 SRCTOP?= ${.CURDIR:H:H:H}
 
-# $Id: Makefile.in,v 1.48 2015/12/07 04:06:29 sjg Exp $
+# $Id: Makefile.in,v 1.49 2018/09/21 21:39:05 sjg Exp $
 #
-# $NetBSD: Makefile,v 1.52 2015/05/05 21:51:09 sjg Exp $
+# $NetBSD: Makefile,v 1.53 2018/05/24 00:25:44 christos Exp $
 #
 # Unit tests for make(1)
 # The main targets are:
@@ -61,6 +61,7 @@ TESTNAMES= \
 	unexport-env \
 	varcmd \
 	varmisc \
+	varquote \
 	varshell
 
 # these tests were broken by referting POSIX chanegs


More information about the svn-src-all mailing list