Author: sjg
Date: Thu Dec  6 00:13:35 2018
New Revision: 341609
URL: https://svnweb.freebsd.org/changeset/base/341609

Log:
  Import bmake-20180919

Added:
  vendor/NetBSD/bmake/dist/unit-tests/varquote.exp
  vendor/NetBSD/bmake/dist/unit-tests/varquote.mk   (contents, props changed)
Modified:
  vendor/NetBSD/bmake/dist/ChangeLog
  vendor/NetBSD/bmake/dist/FILES
  vendor/NetBSD/bmake/dist/Makefile.config.in
  vendor/NetBSD/bmake/dist/VERSION
  vendor/NetBSD/bmake/dist/bmake.1
  vendor/NetBSD/bmake/dist/dir.c
  vendor/NetBSD/bmake/dist/make.1
  vendor/NetBSD/bmake/dist/mk/ChangeLog
  vendor/NetBSD/bmake/dist/mk/dirdeps-options.mk
  vendor/NetBSD/bmake/dist/mk/dirdeps.mk
  vendor/NetBSD/bmake/dist/mk/gendirdeps.mk
  vendor/NetBSD/bmake/dist/mk/install-mk
  vendor/NetBSD/bmake/dist/mk/meta.autodep.mk
  vendor/NetBSD/bmake/dist/mk/meta.stage.mk
  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 Dec  6 00:09:39 2018        
(r341608)
+++ vendor/NetBSD/bmake/dist/ChangeLog  Thu Dec  6 00:13:35 2018        
(r341609)
@@ -1,3 +1,14 @@
+2018-09-21  Simon J. Gerraty  <s...@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  <s...@beast.crufty.net>
+
+       * Makefile.config.in: use += where it makes sense.
+
 2018-05-12  Simon J. Gerraty  <s...@bad.crufty.net>
 
        * VERSION: 20180512

Modified: vendor/NetBSD/bmake/dist/FILES
==============================================================================
--- vendor/NetBSD/bmake/dist/FILES      Thu Dec  6 00:09:39 2018        
(r341608)
+++ vendor/NetBSD/bmake/dist/FILES      Thu Dec  6 00:13:35 2018        
(r341609)
@@ -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: vendor/NetBSD/bmake/dist/Makefile.config.in
==============================================================================
--- vendor/NetBSD/bmake/dist/Makefile.config.in Thu Dec  6 00:09:39 2018        
(r341608)
+++ vendor/NetBSD/bmake/dist/Makefile.config.in Thu Dec  6 00:13:35 2018        
(r341609)
@@ -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: vendor/NetBSD/bmake/dist/VERSION
==============================================================================
--- vendor/NetBSD/bmake/dist/VERSION    Thu Dec  6 00:09:39 2018        
(r341608)
+++ vendor/NetBSD/bmake/dist/VERSION    Thu Dec  6 00:13:35 2018        
(r341609)
@@ -1,2 +1,2 @@
 # keep this compatible with sh and make
-_MAKE_VERSION=20180512
+_MAKE_VERSION=20180919

Modified: vendor/NetBSD/bmake/dist/bmake.1
==============================================================================
--- vendor/NetBSD/bmake/dist/bmake.1    Thu Dec  6 00:09:39 2018        
(r341608)
+++ vendor/NetBSD/bmake/dist/bmake.1    Thu Dec  6 00:13:35 2018        
(r341609)
@@ -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: vendor/NetBSD/bmake/dist/dir.c
==============================================================================
--- vendor/NetBSD/bmake/dist/dir.c      Thu Dec  6 00:09:39 2018        
(r341608)
+++ vendor/NetBSD/bmake/dist/dir.c      Thu Dec  6 00:13:35 2018        
(r341609)
@@ -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: vendor/NetBSD/bmake/dist/make.1
==============================================================================
--- vendor/NetBSD/bmake/dist/make.1     Thu Dec  6 00:09:39 2018        
(r341608)
+++ vendor/NetBSD/bmake/dist/make.1     Thu Dec  6 00:13:35 2018        
(r341609)
@@ -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 MAKE 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: vendor/NetBSD/bmake/dist/mk/ChangeLog
==============================================================================
--- vendor/NetBSD/bmake/dist/mk/ChangeLog       Thu Dec  6 00:09:39 2018        
(r341608)
+++ vendor/NetBSD/bmake/dist/mk/ChangeLog       Thu Dec  6 00:13:35 2018        
(r341609)
@@ -1,3 +1,25 @@
+2018-09-19  Simon J Gerraty  <s...@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  <s...@beast.crufty.net>
+
+       * meta.stage.mk: allow wildcards in STAGE_FILES.* etc.
+
+2018-06-01  Simon J Gerraty  <s...@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  <s...@beast.crufty.net>
+
+       * dirdeps-options.mk: use local.dirdeps-options.mk
+         not local.dirdeps-option.mk
+
 2018-04-20  Simon J Gerraty  <s...@beast.crufty.net>
 
        * install-mk (MK_VERSION): 20180420

Modified: vendor/NetBSD/bmake/dist/mk/dirdeps-options.mk
==============================================================================
--- vendor/NetBSD/bmake/dist/mk/dirdeps-options.mk      Thu Dec  6 00:09:39 
2018        (r341608)
+++ vendor/NetBSD/bmake/dist/mk/dirdeps-options.mk      Thu Dec  6 00:13:35 
2018        (r341609)
@@ -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@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: vendor/NetBSD/bmake/dist/mk/dirdeps.mk
==============================================================================
--- vendor/NetBSD/bmake/dist/mk/dirdeps.mk      Thu Dec  6 00:09:39 2018        
(r341608)
+++ vendor/NetBSD/bmake/dist/mk/dirdeps.mk      Thu Dec  6 00:13:35 2018        
(r341609)
@@ -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: vendor/NetBSD/bmake/dist/mk/gendirdeps.mk
==============================================================================
--- vendor/NetBSD/bmake/dist/mk/gendirdeps.mk   Thu Dec  6 00:09:39 2018        
(r341608)
+++ vendor/NetBSD/bmake/dist/mk/gendirdeps.mk   Thu Dec  6 00:13:35 2018        
(r341609)
@@ -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: vendor/NetBSD/bmake/dist/mk/install-mk
==============================================================================
--- vendor/NetBSD/bmake/dist/mk/install-mk      Thu Dec  6 00:09:39 2018        
(r341608)
+++ vendor/NetBSD/bmake/dist/mk/install-mk      Thu Dec  6 00:13:35 2018        
(r341609)
@@ -55,7 +55,7 @@
 #       Simon J. Gerraty <s...@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 @@
 #      s...@crufty.net
 #
 
-MK_VERSION=20180420
+MK_VERSION=20180919
 OWNER=
 GROUP=
 MODE=444

Modified: vendor/NetBSD/bmake/dist/mk/meta.autodep.mk
==============================================================================
--- vendor/NetBSD/bmake/dist/mk/meta.autodep.mk Thu Dec  6 00:09:39 2018        
(r341608)
+++ vendor/NetBSD/bmake/dist/mk/meta.autodep.mk Thu Dec  6 00:13:35 2018        
(r341609)
@@ -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: vendor/NetBSD/bmake/dist/mk/meta.stage.mk
==============================================================================
--- vendor/NetBSD/bmake/dist/mk/meta.stage.mk   Thu Dec  6 00:09:39 2018        
(r341608)
+++ vendor/NetBSD/bmake/dist/mk/meta.stage.mk   Thu Dec  6 00:13:35 2018        
(r341609)
@@ -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@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@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: vendor/NetBSD/bmake/dist/unit-tests/Makefile.in
==============================================================================
--- vendor/NetBSD/bmake/dist/unit-tests/Makefile.in     Thu Dec  6 00:09:39 
2018        (r341608)
+++ vendor/NetBSD/bmake/dist/unit-tests/Makefile.in     Thu Dec  6 00:13:35 
2018        (r341609)
@@ -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

Added: vendor/NetBSD/bmake/dist/unit-tests/varquote.exp
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ vendor/NetBSD/bmake/dist/unit-tests/varquote.exp    Thu Dec  6 00:13:35 
2018        (r341609)
@@ -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

Added: vendor/NetBSD/bmake/dist/unit-tests/varquote.mk
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ vendor/NetBSD/bmake/dist/unit-tests/varquote.mk     Thu Dec  6 00:13:35 
2018        (r341609)
@@ -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: vendor/NetBSD/bmake/dist/var.c
==============================================================================
--- vendor/NetBSD/bmake/dist/var.c      Thu Dec  6 00:09:39 2018        
(r341608)
+++ vendor/NetBSD/bmake/dist/var.c      Thu Dec  6 00:13:35 2018        
(r341609)
@@ -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;
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to