Author: sjg
Date: Fri Mar 18 20:03:09 2016
New Revision: 297040
URL: https://svnweb.freebsd.org/changeset/base/297040

Log:
  Update to bmake-20160315
  
  Archive member handling works again
  meta mode, treat missing reads as for writes.
  
  Update dirdeps.mk - much improved startup time.
  Update meta.stage.mk - avoid ln when chmod required.

Modified:
  head/contrib/bmake/ChangeLog
  head/contrib/bmake/Makefile
  head/contrib/bmake/bmake.1
  head/contrib/bmake/bmake.cat1
  head/contrib/bmake/make.1
  head/contrib/bmake/meta.c
  head/contrib/bmake/mk/ChangeLog
  head/contrib/bmake/mk/dirdeps.mk
  head/contrib/bmake/mk/install-mk
  head/contrib/bmake/mk/meta.autodep.mk
  head/contrib/bmake/mk/meta.stage.mk
  head/contrib/bmake/mk/sys.dependfile.mk
  head/contrib/bmake/parse.c
  head/contrib/bmake/suff.c
  head/contrib/bmake/var.c
  head/share/mk/dirdeps.mk
  head/share/mk/meta.stage.mk
  head/usr.bin/bmake/Makefile
Directory Properties:
  head/contrib/bmake/   (props changed)

Modified: head/contrib/bmake/ChangeLog
==============================================================================
--- head/contrib/bmake/ChangeLog        Fri Mar 18 19:48:49 2016        
(r297039)
+++ head/contrib/bmake/ChangeLog        Fri Mar 18 20:03:09 2016        
(r297040)
@@ -1,3 +1,20 @@
+2016-03-15  Simon J. Gerraty  <s...@bad.crufty.net>
+
+       * Makefile (_MAKE_VERSION): 20160315
+         Merge with NetBSD make, pick up
+         o fix handling of archive members
+
+2016-03-13  Simon J. Gerraty  <s...@bad.crufty.net>
+
+       * Makefile (_MAKE_VERSION): rename variable to avoid interference
+         with checks for ${MAKE_VERSION}
+
+2016-03-10  Simon J. Gerraty  <s...@bad.crufty.net>
+
+       * Makefile (MAKE_VERSION): 20160310
+         Merge with NetBSD make, pick up
+         o meta.c: treat missing Read file same as Write, incase we Delete it.
+
 2016-03-07  Simon J. Gerraty  <s...@bad.crufty.net>
 
        * Makefile (MAKE_VERSION): 20160307

Modified: head/contrib/bmake/Makefile
==============================================================================
--- head/contrib/bmake/Makefile Fri Mar 18 19:48:49 2016        (r297039)
+++ head/contrib/bmake/Makefile Fri Mar 18 20:03:09 2016        (r297040)
@@ -1,7 +1,7 @@
-#      $Id: Makefile,v 1.55 2016/03/07 22:02:47 sjg Exp $
+#      $Id: Makefile,v 1.58 2016/03/15 23:39:12 sjg Exp $
 
 # Base version on src date
-MAKE_VERSION= 20160307
+_MAKE_VERSION= 20160315
 
 PROG=  bmake
 
@@ -76,7 +76,7 @@ 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}\""
+COPTS.main.c+= "-DMAKE_VERSION=\"${_MAKE_VERSION}\""
 
 # meta mode can be useful even without filemon 
 FILEMON_H ?= /usr/include/dev/filemon/filemon.h

Modified: head/contrib/bmake/bmake.1
==============================================================================
--- head/contrib/bmake/bmake.1  Fri Mar 18 19:48:49 2016        (r297039)
+++ head/contrib/bmake/bmake.1  Fri Mar 18 20:03:09 2016        (r297040)
@@ -1,4 +1,4 @@
-.\"    $NetBSD: make.1,v 1.254 2016/02/20 01:43:28 wiz Exp $
+.\"    $NetBSD: make.1,v 1.255 2016/03/14 07:42:15 matthias Exp $
 .\"
 .\" Copyright (c) 1990, 1993
 .\"    The Regents of the University of California.  All rights reserved.
@@ -685,6 +685,9 @@ or it will not be recognized.
 .It Va .TARGET
 The name of the target; also known as
 .Ql Va @ .
+For compatibility with other makes this is an alias for
+.Ic .ARCHIVE
+in archive member rules.
 .El
 .Pp
 The shorter forms

Modified: head/contrib/bmake/bmake.cat1
==============================================================================
--- head/contrib/bmake/bmake.cat1       Fri Mar 18 19:48:49 2016        
(r297039)
+++ head/contrib/bmake/bmake.cat1       Fri Mar 18 20:03:09 2016        
(r297040)
@@ -438,7 +438,9 @@ VVAARRIIAABBLLEE AASSSSIIGG
                      suffixes declared with ..SSUUFFFFIIXXEESS or it 
will not be recog-
                      nized.
 
-           _._T_A_R_G_E_T   The name of the target; also known as `_@'.
+           _._T_A_R_G_E_T   The name of the target; also known as 
`_@'.  For compati-
+                     bility with other makes this is an alias for 
..AARRCCHHIIVVEE in
+                     archive member rules.
 
      The shorter forms (`_>', `_!', `_<', `_%', `_?', `_*', and `_@') 
are permitted
      for backward compatibility with historical makefiles and legacy POSIX

Modified: head/contrib/bmake/make.1
==============================================================================
--- head/contrib/bmake/make.1   Fri Mar 18 19:48:49 2016        (r297039)
+++ head/contrib/bmake/make.1   Fri Mar 18 20:03:09 2016        (r297040)
@@ -1,4 +1,4 @@
-.\"    $NetBSD: make.1,v 1.254 2016/02/20 01:43:28 wiz Exp $
+.\"    $NetBSD: make.1,v 1.255 2016/03/14 07:42:15 matthias Exp $
 .\"
 .\" Copyright (c) 1990, 1993
 .\"    The Regents of the University of California.  All rights reserved.
@@ -685,6 +685,9 @@ or it will not be recognized.
 .It Va .TARGET
 The name of the target; also known as
 .Ql Va @ .
+For compatibility with other makes this is an alias for
+.Ic .ARCHIVE
+in archive member rules.
 .El
 .Pp
 The shorter forms

Modified: head/contrib/bmake/meta.c
==============================================================================
--- head/contrib/bmake/meta.c   Fri Mar 18 19:48:49 2016        (r297039)
+++ head/contrib/bmake/meta.c   Fri Mar 18 20:03:09 2016        (r297040)
@@ -1,4 +1,4 @@
-/*      $NetBSD: meta.c,v 1.53 2016/03/07 21:45:43 christos Exp $ */
+/*      $NetBSD: meta.c,v 1.54 2016/03/11 07:01:21 sjg Exp $ */
 
 /*
  * Implement 'meta' mode.
@@ -1190,7 +1190,8 @@ meta_oodate(GNode *gn, Boolean oodate)
 
                    if ((link_src != NULL && lstat(p, &fs) < 0) ||
                        (link_src == NULL && stat(p, &fs) < 0)) {
-                       Lst_AtEnd(missingFiles, bmake_strdup(p));
+                       if (Lst_Find(missingFiles, p, string_match) == NULL)
+                               Lst_AtEnd(missingFiles, bmake_strdup(p));
                    }
                    break;
                check_link_src:
@@ -1281,9 +1282,8 @@ meta_oodate(GNode *gn, Boolean oodate)
                             * A referenced file outside of CWD is missing.
                             * We cannot catch every eventuality here...
                             */
-                           if (DEBUG(META))
-                               fprintf(debug_file, "%s: %d: file '%s' may have 
moved?...\n", fname, lineno, p);
-                           oodate = TRUE;
+                           if (Lst_Find(missingFiles, p, string_match) == NULL)
+                                   Lst_AtEnd(missingFiles, bmake_strdup(p));
                        }
                    }
                    if (buf[0] == 'E') {

Modified: head/contrib/bmake/mk/ChangeLog
==============================================================================
--- head/contrib/bmake/mk/ChangeLog     Fri Mar 18 19:48:49 2016        
(r297039)
+++ head/contrib/bmake/mk/ChangeLog     Fri Mar 18 20:03:09 2016        
(r297040)
@@ -1,3 +1,26 @@
+2016-03-15  Simon J. Gerraty  <s...@bad.crufty.net>
+
+       * install-mk (MK_VERSION): 20160315
+
+       * meta.stage.mk (LN_CP_SCRIPT): do not ln(1) if we have to chmod(1)
+         normally only applies to scripts.
+       
+       * dirdeps.mk: NO_DIRDEPS_BELOW to supress DIRDEPS below RELDIR as
+         well as outside it. 
+
+2016-03-10  Simon J. Gerraty  <s...@bad.crufty.net>
+
+       * install-mk (MK_VERSION): 20160310
+
+       * dirdeps.mk: use targets rather than a list to track DIRDEPS that
+         we have processed; the list gets very inefficient as number of
+         DIRDEPS gets large.
+
+       * sys.dependfile.mk: fix comment wrt MACHINE
+
+       * meta.autodep.mk: ignore staged DPADDs when bootstrapping.
+         patch from Bryan Drewery
+
 2016-03-02  Simon J. Gerraty  <s...@bad.crufty.net>
 
        * meta2deps.sh: don't ignore subdirs.

Modified: head/contrib/bmake/mk/dirdeps.mk
==============================================================================
--- head/contrib/bmake/mk/dirdeps.mk    Fri Mar 18 19:48:49 2016        
(r297039)
+++ head/contrib/bmake/mk/dirdeps.mk    Fri Mar 18 20:03:09 2016        
(r297040)
@@ -1,4 +1,4 @@
-# $Id: dirdeps.mk,v 1.59 2016/02/26 23:32:29 sjg Exp $
+# $Id: dirdeps.mk,v 1.62 2016/03/16 00:11:53 sjg Exp $
 
 # Copyright (c) 2010-2013, Juniper Networks, Inc.
 # All rights reserved.
@@ -135,7 +135,6 @@ start_utc := ${now_utc}
 
 # make sure these are empty to start with
 _DEP_TARGET_SPEC =
-_DIRDEP_CHECKED =
 
 # If TARGET_SPEC_VARS is other than just MACHINE
 # it should be set by sys.mk or similar by now.
@@ -225,7 +224,7 @@ _DEP_TARGET_SPEC = ${_last_dependfile:${
 .endif
 .if !empty(_last_dependfile)
 # record that we've read dependfile for this
-_DIRDEP_CHECKED += ${_CURDIR}.${TARGET_SPEC}
+_dirdeps_checked.${_CURDIR}.${TARGET_SPEC}:
 .endif
 .endif
 
@@ -306,8 +305,10 @@ DEP_SKIP_DIR = ${SKIP_DIR} \
 NSkipDir = ${DEP_SKIP_DIR:${M_ListToSkip}}
 
 .if defined(NO_DIRDEPS) || defined(NODIRDEPS) || defined(WITHOUT_DIRDEPS)
-# confine ourselves to the original dir
+# confine ourselves to the original dir and below.
 DIRDEPS_FILTER += M${_DEP_RELDIR}*
+.elif defined(NO_DIRDEPS_BELOW)
+DIRDEPS_FILTER += M${_DEP_RELDIR}
 .endif
 
 # this is what we run below
@@ -597,9 +598,9 @@ ${_this_dir}.$m: ${_build_dirs:M*.$m:N${
 
 # Now find more dependencies - and recurse.
 .for d in ${_build_all_dirs}
-.if ${_DIRDEP_CHECKED:M$d} == ""
+.if !target(_dirdeps_checked.$d)
 # once only
-_DIRDEP_CHECKED += $d
+_dirdeps_checked.$d:
 .if ${_debug_search}
 .info checking $d
 .endif

Modified: head/contrib/bmake/mk/install-mk
==============================================================================
--- head/contrib/bmake/mk/install-mk    Fri Mar 18 19:48:49 2016        
(r297039)
+++ head/contrib/bmake/mk/install-mk    Fri Mar 18 20:03:09 2016        
(r297040)
@@ -55,7 +55,7 @@
 #       Simon J. Gerraty <s...@crufty.net>
 
 # RCSid:
-#      $Id: install-mk,v 1.121 2016/02/27 00:23:02 sjg Exp $
+#      $Id: install-mk,v 1.123 2016/03/16 00:13:16 sjg Exp $
 #
 #      @(#) Copyright (c) 1994 Simon J. Gerraty
 #
@@ -70,7 +70,7 @@
 #      s...@crufty.net
 #
 
-MK_VERSION=20160226
+MK_VERSION=20160315
 OWNER=
 GROUP=
 MODE=444

Modified: head/contrib/bmake/mk/meta.autodep.mk
==============================================================================
--- head/contrib/bmake/mk/meta.autodep.mk       Fri Mar 18 19:48:49 2016        
(r297039)
+++ head/contrib/bmake/mk/meta.autodep.mk       Fri Mar 18 20:03:09 2016        
(r297040)
@@ -1,4 +1,4 @@
-# $Id: meta.autodep.mk,v 1.40 2016/02/22 22:44:58 sjg Exp $
+# $Id: meta.autodep.mk,v 1.41 2016/03/11 01:29:38 sjg Exp $
 
 #
 #      @(#) Copyright (c) 2010, Simon J. Gerraty
@@ -195,7 +195,7 @@ gendirdeps: ${_DEPENDFILE}
 # The pseudo machine "host" is used for HOST_TARGET
 DIRDEPS += \
        ${DPADD:M${_OBJTOP}*:H:C,${_OBJTOP}[^/]*/,,:N.:O:u} \
-       
${DPADD:M${_OBJROOT}*:N${_OBJTOP}*:H:S,${_OBJROOT},,:C,^([^/]+)/(.*),\2.\1,:S,${HOST_TARGET}$,host,:N.*:O:u}
+       
${DPADD:M${_OBJROOT}*:N${_OBJTOP}*:N${STAGE_ROOT:U${_OBJTOP}}/*:H:S,${_OBJROOT},,:C,^([^/]+)/(.*),\2.\1,:S,${HOST_TARGET}$,host,:N.*:O:u}
 
 .endif
 .endif

Modified: head/contrib/bmake/mk/meta.stage.mk
==============================================================================
--- head/contrib/bmake/mk/meta.stage.mk Fri Mar 18 19:48:49 2016        
(r297039)
+++ head/contrib/bmake/mk/meta.stage.mk Fri Mar 18 20:03:09 2016        
(r297040)
@@ -1,4 +1,4 @@
-# $Id: meta.stage.mk,v 1.43 2016/02/24 18:46:32 sjg Exp $
+# $Id: meta.stage.mk,v 1.44 2016/03/16 18:21:23 sjg Exp $
 #
 #      @(#) Copyright (c) 2011, Simon J. Gerraty
 #
@@ -58,7 +58,7 @@ GENDIRDEPS_FILTER += Nnot-empty-is-impor
 
 LN_CP_SCRIPT = LnCp() { \
   rm -f $$2 2> /dev/null; \
-  ln $$1 $$2 2> /dev/null || \
+  { [ -z "$$mode" ] && ln $$1 $$2 2> /dev/null; } || \
   cp -p $$1 $$2; }
 
 # a staging conflict should cause an error

Modified: head/contrib/bmake/mk/sys.dependfile.mk
==============================================================================
--- head/contrib/bmake/mk/sys.dependfile.mk     Fri Mar 18 19:48:49 2016        
(r297039)
+++ head/contrib/bmake/mk/sys.dependfile.mk     Fri Mar 18 20:03:09 2016        
(r297040)
@@ -1,4 +1,4 @@
-# $Id: sys.dependfile.mk,v 1.7 2016/02/20 01:57:39 sjg Exp $
+# $Id: sys.dependfile.mk,v 1.8 2016/03/11 01:34:13 sjg Exp $
 #
 #      @(#) Copyright (c) 2012, Simon J. Gerraty
 #
@@ -48,7 +48,7 @@ _e := ${.MAKE.DEPENDFILE_PREFERENCE:@m@$
 # MACHINE specific depend files are supported, but *not* default.
 # If any already exist, we should follow suit.
 _aml = ${ALL_MACHINE_LIST:Uarm amd64 i386 powerpc:N${MACHINE}} ${MACHINE}
-# MACHINE must be the last entry in _aml ;-)
+# make sure we restore MACHINE
 _m := ${MACHINE}
 _e := ${_aml:@MACHINE@${.MAKE.DEPENDFILE_PREFERENCE:@m@${exists($m):?$m:}@}@}
 MACHINE := ${_m}

Modified: head/contrib/bmake/parse.c
==============================================================================
--- head/contrib/bmake/parse.c  Fri Mar 18 19:48:49 2016        (r297039)
+++ head/contrib/bmake/parse.c  Fri Mar 18 20:03:09 2016        (r297040)
@@ -1,4 +1,4 @@
-/*     $NetBSD: parse.c,v 1.212 2016/02/19 06:19:06 sjg Exp $  */
+/*     $NetBSD: parse.c,v 1.213 2016/03/11 13:54:47 matthias Exp $     */
 
 /*
  * Copyright (c) 1988, 1989, 1990, 1993
@@ -69,14 +69,14 @@
  */
 
 #ifndef MAKE_NATIVE
-static char rcsid[] = "$NetBSD: parse.c,v 1.212 2016/02/19 06:19:06 sjg Exp $";
+static char rcsid[] = "$NetBSD: parse.c,v 1.213 2016/03/11 13:54:47 matthias 
Exp $";
 #else
 #include <sys/cdefs.h>
 #ifndef lint
 #if 0
 static char sccsid[] = "@(#)parse.c    8.3 (Berkeley) 3/19/94";
 #else
-__RCSID("$NetBSD: parse.c,v 1.212 2016/02/19 06:19:06 sjg Exp $");
+__RCSID("$NetBSD: parse.c,v 1.213 2016/03/11 13:54:47 matthias Exp $");
 #endif
 #endif /* not lint */
 #endif
@@ -1261,6 +1261,7 @@ ParseDoDependency(char *line)
                goto out;
            } else {
                /* Done with this word; on to the next. */
+               cp = line;
                continue;
            }
        }

Modified: head/contrib/bmake/suff.c
==============================================================================
--- head/contrib/bmake/suff.c   Fri Mar 18 19:48:49 2016        (r297039)
+++ head/contrib/bmake/suff.c   Fri Mar 18 20:03:09 2016        (r297040)
@@ -1,4 +1,4 @@
-/*     $NetBSD: suff.c,v 1.78 2016/02/18 18:29:14 christos Exp $       */
+/*     $NetBSD: suff.c,v 1.81 2016/03/15 18:30:14 matthias Exp $       */
 
 /*
  * Copyright (c) 1988, 1989, 1990, 1993
@@ -69,14 +69,14 @@
  */
 
 #ifndef MAKE_NATIVE
-static char rcsid[] = "$NetBSD: suff.c,v 1.78 2016/02/18 18:29:14 christos Exp 
$";
+static char rcsid[] = "$NetBSD: suff.c,v 1.81 2016/03/15 18:30:14 matthias Exp 
$";
 #else
 #include <sys/cdefs.h>
 #ifndef lint
 #if 0
 static char sccsid[] = "@(#)suff.c     8.4 (Berkeley) 3/21/94";
 #else
-__RCSID("$NetBSD: suff.c,v 1.78 2016/02/18 18:29:14 christos Exp $");
+__RCSID("$NetBSD: suff.c,v 1.81 2016/03/15 18:30:14 matthias Exp $");
 #endif
 #endif /* not lint */
 #endif
@@ -1894,6 +1894,7 @@ SuffFindArchiveDeps(GNode *gn, Lst slst)
        TARGET,             /* Must be first */
        PREFIX,             /* Must be second */
     };
+    LstNode    ln, nln;    /* Next suffix node to check */
     int                i;          /* Index into copy and vals */
     Suff       *ms;        /* Suffix descriptor for member */
     char       *name;      /* Start of member's name */
@@ -1955,6 +1956,20 @@ SuffFindArchiveDeps(GNode *gn, Lst slst)
     Var_Set(MEMBER, name, gn, 0);
     Var_Set(ARCHIVE, gn->name, gn, 0);
 
+    /*
+     * Set $@ for compatibility with other makes
+     */
+    Var_Set(TARGET, gn->name, gn, 0);
+
+    /*
+     * Now we've got the important local variables set, expand any sources
+     * that still contain variables or wildcards in their names.
+     */
+    for (ln = Lst_First(gn->children); ln != NULL; ln = nln) {
+       nln = Lst_Succ(ln);
+       SuffExpandChildren(ln, gn);
+    }
+
     if (ms != NULL) {
        /*
         * Member has a known suffix, so look for a transformation rule from
@@ -1962,7 +1977,6 @@ SuffFindArchiveDeps(GNode *gn, Lst slst)
         * through the entire list, we just look at suffixes to which the
         * member's suffix may be transformed...
         */
-       LstNode         ln;
        SuffixCmpData   sd;             /* Search string data */
 
        /*
@@ -2002,9 +2016,10 @@ SuffFindArchiveDeps(GNode *gn, Lst slst)
 
     /*
      * Flag the member as such so we remember to look in the archive for
-     * its modification time.
+     * its modification time. The OP_JOIN | OP_MADE is needed because this
+     * target should never get made.
      */
-    mem->type |= OP_MEMBER;
+    mem->type |= OP_MEMBER | OP_JOIN | OP_MADE;
 }
 
 /*-

Modified: head/contrib/bmake/var.c
==============================================================================
--- head/contrib/bmake/var.c    Fri Mar 18 19:48:49 2016        (r297039)
+++ head/contrib/bmake/var.c    Fri Mar 18 20:03:09 2016        (r297040)
@@ -1,4 +1,4 @@
-/*     $NetBSD: var.c,v 1.206 2016/03/07 20:20:35 sjg Exp $    */
+/*     $NetBSD: var.c,v 1.207 2016/03/11 15:12:39 matthias Exp $       */
 
 /*
  * Copyright (c) 1988, 1989, 1990, 1993
@@ -69,14 +69,14 @@
  */
 
 #ifndef MAKE_NATIVE
-static char rcsid[] = "$NetBSD: var.c,v 1.206 2016/03/07 20:20:35 sjg Exp $";
+static char rcsid[] = "$NetBSD: var.c,v 1.207 2016/03/11 15:12:39 matthias 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.206 2016/03/07 20:20:35 sjg Exp $");
+__RCSID("$NetBSD: var.c,v 1.207 2016/03/11 15:12:39 matthias Exp $");
 #endif
 #endif /* not lint */
 #endif
@@ -3699,11 +3699,11 @@ Var_Parse(const char *str, GNode *ctxt, 
                    case '@':
                        return UNCONST("$(.TARGET)");
                    case '%':
-                       return UNCONST("$(.ARCHIVE)");
+                       return UNCONST("$(.MEMBER)");
                    case '*':
                        return UNCONST("$(.PREFIX)");
                    case '!':
-                       return UNCONST("$(.MEMBER)");
+                       return UNCONST("$(.ARCHIVE)");
                }
            }
            /*

Modified: head/share/mk/dirdeps.mk
==============================================================================
--- head/share/mk/dirdeps.mk    Fri Mar 18 19:48:49 2016        (r297039)
+++ head/share/mk/dirdeps.mk    Fri Mar 18 20:03:09 2016        (r297040)
@@ -1,5 +1,5 @@
 # $FreeBSD$
-# $Id: dirdeps.mk,v 1.59 2016/02/26 23:32:29 sjg Exp $
+# $Id: dirdeps.mk,v 1.62 2016/03/16 00:11:53 sjg Exp $
 
 # Copyright (c) 2010-2013, Juniper Networks, Inc.
 # All rights reserved.
@@ -136,7 +136,6 @@ start_utc := ${now_utc}
 
 # make sure these are empty to start with
 _DEP_TARGET_SPEC =
-_DIRDEP_CHECKED =
 
 # If TARGET_SPEC_VARS is other than just MACHINE
 # it should be set by sys.mk or similar by now.
@@ -226,7 +225,7 @@ _DEP_TARGET_SPEC = ${_last_dependfile:${
 .endif
 .if !empty(_last_dependfile)
 # record that we've read dependfile for this
-_DIRDEP_CHECKED += ${_CURDIR}.${TARGET_SPEC}
+_dirdeps_checked.${_CURDIR}.${TARGET_SPEC}:
 .endif
 .endif
 
@@ -307,8 +306,10 @@ DEP_SKIP_DIR = ${SKIP_DIR} \
 NSkipDir = ${DEP_SKIP_DIR:${M_ListToSkip}}
 
 .if defined(NO_DIRDEPS) || defined(NODIRDEPS) || defined(WITHOUT_DIRDEPS)
-# confine ourselves to the original dir
+# confine ourselves to the original dir and below.
 DIRDEPS_FILTER += M${_DEP_RELDIR}*
+.elif defined(NO_DIRDEPS_BELOW)
+DIRDEPS_FILTER += M${_DEP_RELDIR}
 .endif
 
 # this is what we run below
@@ -598,9 +599,9 @@ ${_this_dir}.$m: ${_build_dirs:M*.$m:N${
 
 # Now find more dependencies - and recurse.
 .for d in ${_build_all_dirs}
-.if ${_DIRDEP_CHECKED:M$d} == ""
+.if !target(_dirdeps_checked.$d)
 # once only
-_DIRDEP_CHECKED += $d
+_dirdeps_checked.$d:
 .if ${_debug_search}
 .info checking $d
 .endif

Modified: head/share/mk/meta.stage.mk
==============================================================================
--- head/share/mk/meta.stage.mk Fri Mar 18 19:48:49 2016        (r297039)
+++ head/share/mk/meta.stage.mk Fri Mar 18 20:03:09 2016        (r297040)
@@ -1,5 +1,5 @@
 # $FreeBSD$
-# $Id: meta.stage.mk,v 1.43 2016/02/24 18:46:32 sjg Exp $
+# $Id: meta.stage.mk,v 1.44 2016/03/16 18:21:23 sjg Exp $
 #
 #      @(#) Copyright (c) 2011, Simon J. Gerraty
 #
@@ -59,7 +59,7 @@ GENDIRDEPS_FILTER += Nnot-empty-is-impor
 
 LN_CP_SCRIPT = LnCp() { \
   rm -f $$2 2> /dev/null; \
-  ln $$1 $$2 2> /dev/null || \
+  { [ -z "$$mode" ] && ln $$1 $$2 2> /dev/null; } || \
   cp -p $$1 $$2; }
 
 # a staging conflict should cause an error

Modified: head/usr.bin/bmake/Makefile
==============================================================================
--- head/usr.bin/bmake/Makefile Fri Mar 18 19:48:49 2016        (r297039)
+++ head/usr.bin/bmake/Makefile Fri Mar 18 20:03:09 2016        (r297040)
@@ -14,10 +14,10 @@ CFLAGS+= -I${.CURDIR}
 CLEANDIRS+= FreeBSD
 CLEANFILES+= bootstrap
 
-#      $Id: Makefile,v 1.55 2016/03/07 22:02:47 sjg Exp $
+#      $Id: Makefile,v 1.58 2016/03/15 23:39:12 sjg Exp $
 
 # Base version on src date
-_MAKE_VERSION= 20160307
+_MAKE_VERSION= 20160315
 
 PROG?= ${.CURDIR:T}
 
_______________________________________________
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