aboutsummaryrefslogtreecommitdiff
path: root/contrib/bmake/mk/dirdeps.mk
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/bmake/mk/dirdeps.mk')
-rw-r--r--contrib/bmake/mk/dirdeps.mk16
1 files changed, 14 insertions, 2 deletions
diff --git a/contrib/bmake/mk/dirdeps.mk b/contrib/bmake/mk/dirdeps.mk
index 6fedd00310e9..aafa5ab47557 100644
--- a/contrib/bmake/mk/dirdeps.mk
+++ b/contrib/bmake/mk/dirdeps.mk
@@ -1,4 +1,4 @@
-# $Id: dirdeps.mk,v 1.157 2023/04/22 21:07:51 sjg Exp $
+# $Id: dirdeps.mk,v 1.160 2023/05/10 20:44:58 sjg Exp $
# SPDX-License-Identifier: BSD-2-Clause
#
@@ -273,6 +273,10 @@ _machine_dependfiles := ${.MAKE.DEPENDFILE_PREFERENCE:T:M*${MACHINE}*}
.endif
.endif
+# turn a list into a set of :N modifiers
+# NskipFoo = ${Foo:${M_ListToSkip}}
+M_ListToSkip ?= O:u:S,^,N,:ts:
+
# this is how we identify non-machine specific dependfiles
N_notmachine := ${.MAKE.DEPENDFILE_PREFERENCE:E:N*${MACHINE}*:${M_ListToSkip}}
@@ -333,6 +337,14 @@ DEP_${TARGET_SPEC_VARS:[$i]} := ${_tspec:[$i]}
DEP_MACHINE := ${_DEP_TARGET_SPEC}
.endif
+# host is special
+.if ${DEP_MACHINE:Mhost*} != ""
+DEP_TARGET_SPEC = ${DEP_MACHINE}
+.for v in ${TARGET_SPEC_VARS:O:u:NMACHINE}
+.undef DEP_$v
+.endfor
+.endif
+
# reset each time through
_build_all_dirs =
_build_xtra_dirs =
@@ -653,7 +665,7 @@ _machines := ${_machines:${M_dep_qual_fixes:ts:}:O:u}
# reset each time through
_build_dirs =
-.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+.if ${DEP_RELDIR} == ${_DEP_RELDIR} && ${_CURDIR} != ${SRCTOP}
# pickup other machines for this dir if necessary
_build_dirs += ${_machines:@m@${_CURDIR}.$m@}
.endif