Sat Jun 9 15:35:38 2018 UTC ()
Pull up following revision(s) (requested by christos in ticket #870):

	sys/lib/libgnuefi/Makefile.inc: revision 1.5
	external/mit/xorg/xorg-pkg-ver.mk: revision 1.9
	sys/arch/i386/stand/lib/Makefile.inc: revision 1.17
	sys/compat/common/Makefile.inc: revision 1.25
	usr.bin/make/unit-tests/varquote.exp: revision 1.1, 1.2
	sys/lib/libsa/Makefile.inc: revision 1.24
	usr.bin/make/var.c: revision 1.220
	sys/arch/ia64/stand/efi/libefi/Makefile.inc: revision 1.5
	sys/arch/hppa/spmath/Makefile.inc: revision 1.10
	usr.bin/make/unit-tests/varquote.mk: revision 1.1, 1.2
	usr.bin/make/unit-tests/Makefile: revision 1.53
	sys/lib/libkern/Makefile.inc: revision 1.45
	sys/arch/acorn32/stand/lib/Makefile.inc: revision 1.4
	sys/arch/m68k/fpsp/Makefile.inc: revision 1.21
	usr.bin/make/make.1: revision 1.273
	sys/lib/libz/Makefile.inc: revision 1.17

- Introduce :q modifier for make variables and make it double escape $'s so
  that passing variables to recursive makes with :q works as expected.
- Adjust makefiles that use recursive make to use :q

Discussed on tech-toolchain@

XXX: pullup 8


(martin)
diff -r1.8 -r1.8.8.1 src/external/mit/xorg/xorg-pkg-ver.mk
diff -r1.3 -r1.3.10.1 src/sys/arch/acorn32/stand/lib/Makefile.inc
diff -r1.9 -r1.9.10.1 src/sys/arch/hppa/spmath/Makefile.inc
diff -r1.16 -r1.16.10.1 src/sys/arch/i386/stand/lib/Makefile.inc
diff -r1.4 -r1.4.10.1 src/sys/arch/ia64/stand/efi/libefi/Makefile.inc
diff -r1.20 -r1.20.10.1 src/sys/arch/m68k/fpsp/Makefile.inc
diff -r1.22 -r1.22.10.1 src/sys/compat/common/Makefile.inc
diff -r1.4 -r1.4.6.1 src/sys/lib/libgnuefi/Makefile.inc
diff -r1.44 -r1.44.10.1 src/sys/lib/libkern/Makefile.inc
diff -r1.23 -r1.23.10.1 src/sys/lib/libsa/Makefile.inc
diff -r1.16 -r1.16.10.1 src/sys/lib/libz/Makefile.inc
diff -r1.266.4.1 -r1.266.4.2 src/usr.bin/make/make.1
diff -r1.215.4.1 -r1.215.4.2 src/usr.bin/make/var.c
diff -r1.52 -r1.52.8.1 src/usr.bin/make/unit-tests/Makefile
diff -r0 -r1.2.2.2 src/usr.bin/make/unit-tests/varquote.exp
diff -r0 -r1.2.2.2 src/usr.bin/make/unit-tests/varquote.mk

cvs diff -r1.8 -r1.8.8.1 src/external/mit/xorg/xorg-pkg-ver.mk (expand / switch to context diff)
--- src/external/mit/xorg/xorg-pkg-ver.mk 2015/08/09 10:09:07 1.8
+++ src/external/mit/xorg/xorg-pkg-ver.mk 2018/06/09 15:35:37 1.8.8.1
@@ -1,4 +1,4 @@
-#	$NetBSD: xorg-pkg-ver.mk,v 1.8 2015/08/09 10:09:07 aymeric Exp $
+#	$NetBSD: xorg-pkg-ver.mk,v 1.8.8.1 2018/06/09 15:35:37 martin Exp $
 
 # when including this make sure PROG is set so that $X11SRCDIR.$PROG
 # is a valid setting.  set XORG_PKG_VER_PROG if PROG is wrong.
@@ -19,7 +19,7 @@
 	}' ${X11SRCDIR.${XORG_PKG_VER_PROG}}/configure
 .if !empty(XORG_PKG_PACKAGE_VERSION)
 CPPFLAGS+=	-DPACKAGE_VERSION=\"${XORG_PKG_PACKAGE_VERSION:Q}\"
-CPPFLAGS+=	-DVERSION=\"${XORG_PKG_PACKAGE_VERSION:Q}\"
+CPPFLAGS+=	-DVERSION=\"${XORG_PKG_PACKAGE_VERSION:q}\"
 .endif
 
 XORG_PKG_PACKAGE_STRING!= \

cvs diff -r1.3 -r1.3.10.1 src/sys/arch/acorn32/stand/lib/Makefile.inc (expand / switch to context diff)
--- src/sys/arch/acorn32/stand/lib/Makefile.inc 2016/03/22 08:25:22 1.3
+++ src/sys/arch/acorn32/stand/lib/Makefile.inc 2018/06/09 15:35:38 1.3.10.1
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile.inc,v 1.3 2016/03/22 08:25:22 mrg Exp $
+#	$NetBSD: Makefile.inc,v 1.3.10.1 2018/06/09 15:35:38 martin Exp $
 #
 #	Configuration variables (default values are below):
 #
@@ -22,12 +22,12 @@
 RISCOSMAKE= \
 	cd ${RISCOSDIR} && MAKEOBJDIRPREFIX= && unset MAKEOBJDIRPREFIX && \
 	  MAKEOBJDIR=${RISCOSDST} ${MAKE} \
-	    CC=${CC:Q} CFLAGS=${CFLAGS:Q} \
-	    AS=${AS:Q} AFLAGS=${AFLAGS:Q} \
-	    LD=${LD:Q} STRIP=${STRIP:Q} \
-	    MACHINE=${MACHINE} MACHINE_ARCH=${MACHINE_ARCH:Q} \
-	    RISCOSCPPFLAGS=${CPPFLAGS:S@^-I.@-I../../.@g:Q} \
-	    RISCOSMISCCPPFLAGS=${RISCOSMISCCPPFLAGS:Q} \
+	    CC=${CC:q} CFLAGS=${CFLAGS:q} \
+	    AS=${AS:q} AFLAGS=${AFLAGS:q} \
+	    LD=${LD:q} STRIP=${STRIP:q} \
+	    MACHINE=${MACHINE} MACHINE_ARCH=${MACHINE_ARCH:q} \
+	    RISCOSCPPFLAGS=${CPPFLAGS:S@^-I.@-I../../.@g:q} \
+	    RISCOSMISCCPPFLAGS=${RISCOSMISCCPPFLAGS:q} \
 	    ${RISCOSMISCMAKEFLAGS}
 
 ${RISCOSLIB}:		.NOTMAIN .MAKE __always_make_riscoslib

cvs diff -r1.9 -r1.9.10.1 src/sys/arch/hppa/spmath/Makefile.inc (expand / switch to context diff)
--- src/sys/arch/hppa/spmath/Makefile.inc 2016/03/22 08:25:22 1.9
+++ src/sys/arch/hppa/spmath/Makefile.inc 2018/06/09 15:35:38 1.9.10.1
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile.inc,v 1.9 2016/03/22 08:25:22 mrg Exp $
+#	$NetBSD: Makefile.inc,v 1.9.10.1 2018/06/09 15:35:38 martin Exp $
 
 #	$OpenBSD: Makefile.inc,v 1.4 2001/03/29 03:58:17 mickey Exp $
 #
@@ -15,13 +15,13 @@
 SPMATHMAKE= \
 	cd ${SPMATHDIR} && MAKEOBJDIRPREFIX= && unset MAKEOBJDIRPREFIX && \
 	  MAKEOBJDIR=${SPMATHDST} ${MAKE} \
-	    CC=${CC:Q} CFLAGS=${CFLAGS:Q} \
-	    SPMATHCPPFLAGS=${CPPFLAGS:S@^-I.@-I. -I../../.@g:Q} \
-	    AS=${AS:Q} AFLAGS=${AFLAGS:Q} \
-	    LD=${LD:Q} STRIP=${STRIP:Q} \
-	    CPP=${CPP:Q} STRIP=${STRIP:Q} AR=${AR:Q} \
-	    NM=${NM:Q} LORDER=${LORDER:Q} \
-	    XMACHINE=${MACHINE:Q} XMACHINE_ARCH=${MACHINE_ARCH:Q}
+	    CC=${CC:q} CFLAGS=${CFLAGS:q} \
+	    SPMATHCPPFLAGS=${CPPFLAGS:S@^-I.@-I. -I../../.@g:q} \
+	    AS=${AS:q} AFLAGS=${AFLAGS:q} \
+	    LD=${LD:q} STRIP=${STRIP:q} \
+	    CPP=${CPP:q} STRIP=${STRIP:q} AR=${AR:q} \
+	    NM=${NM:q} LORDER=${LORDER:q} \
+	    XMACHINE=${MACHINE:q} XMACHINE_ARCH=${MACHINE_ARCH:q}
 
 ${SPMATH}:	.NOTMAIN .MAKE __always_make_spmath
 	@echo making sure the spmath library is up to date...

cvs diff -r1.16 -r1.16.10.1 src/sys/arch/i386/stand/lib/Makefile.inc (expand / switch to context diff)
--- src/sys/arch/i386/stand/lib/Makefile.inc 2016/03/22 08:25:22 1.16
+++ src/sys/arch/i386/stand/lib/Makefile.inc 2018/06/09 15:35:37 1.16.10.1
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile.inc,v 1.16 2016/03/22 08:25:22 mrg Exp $
+#	$NetBSD: Makefile.inc,v 1.16.10.1 2018/06/09 15:35:37 martin Exp $
 #
 #	Configuration variables (default values are below):
 #
@@ -24,12 +24,12 @@
 I386MAKE= \
 	cd ${I386DIR} && MAKEOBJDIRPREFIX= && unset MAKEOBJDIRPREFIX && \
 	    MAKEOBJDIR=${I386DST} ${MAKE} \
-	    CC=${CC:Q} CFLAGS=${CFLAGS:Q} \
-	    AS=${AS:Q} AFLAGS=${AFLAGS:Q} \
-	    LD=${LD:Q} STRIP=${STRIP:Q} \
-	    MACHINE=${MACHINE} MACHINE_ARCH=${MACHINE_ARCH:Q} \
-	    I386CPPFLAGS=${CPPFLAGS:S@^-I.@-I../../.@g:Q} \
-	    I386MISCCPPFLAGS=${I386MISCCPPFLAGS:Q} \
+	    CC=${CC:q} CFLAGS=${CFLAGS:q} \
+	    AS=${AS:q} AFLAGS=${AFLAGS:q} \
+	    LD=${LD:q} STRIP=${STRIP:q} \
+	    MACHINE=${MACHINE} MACHINE_ARCH=${MACHINE_ARCH:q} \
+	    I386CPPFLAGS=${CPPFLAGS:S@^-I.@-I../../.@g:q} \
+	    I386MISCCPPFLAGS=${I386MISCCPPFLAGS:q} \
 	    ${I386MISCMAKEFLAGS}
 
 ${I386LIB}:		.NOTMAIN __always_make_i386lib

cvs diff -r1.4 -r1.4.10.1 src/sys/arch/ia64/stand/efi/libefi/Makefile.inc (expand / switch to context diff)
--- src/sys/arch/ia64/stand/efi/libefi/Makefile.inc 2016/03/22 08:25:22 1.4
+++ src/sys/arch/ia64/stand/efi/libefi/Makefile.inc 2018/06/09 15:35:38 1.4.10.1
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile.inc,v 1.4 2016/03/22 08:25:22 mrg Exp $
+#	$NetBSD: Makefile.inc,v 1.4.10.1 2018/06/09 15:35:38 martin Exp $
 #
 #	Configuration variables (default values are below):
 #
@@ -22,12 +22,12 @@
 EFIMAKE= \
 	cd ${EFIDIR} && MAKEOBJDIRPREFIX= && unset MAKEOBJDIRPREFIX && \
 	    MAKEOBJDIR=${EFIDST} ${MAKE} \
-	    CC=${CC:Q} CFLAGS=${CFLAGS:Q} \
-	    AS=${AS:Q} AFLAGS=${AFLAGS:Q} \
-	    LD=${LD:Q} STRIP=${STRIP:Q} \
-	    MACHINE=${MACHINE} MACHINE_ARCH=${MACHINE_ARCH:Q} \
-	    EFICPPFLAGS=${CPPFLAGS:S@^-I.@-I../../.@g:Q} \
-	    EFIMISCCPPFLAGS=${EFIMISCCPPFLAGS:Q} \
+	    CC=${CC:q} CFLAGS=${CFLAGS:q} \
+	    AS=${AS:q} AFLAGS=${AFLAGS:q} \
+	    LD=${LD:q} STRIP=${STRIP:q} \
+	    MACHINE=${MACHINE} MACHINE_ARCH=${MACHINE_ARCH:q} \
+	    EFICPPFLAGS=${CPPFLAGS:S@^-I.@-I../../.@g:q} \
+	    EFIMISCCPPFLAGS=${EFIMISCCPPFLAGS:q} \
 	    ${EFIMISCMAKEFLAGS}
 
 ${EFILIB}:		.NOTMAIN __always_make_efilib

cvs diff -r1.20 -r1.20.10.1 src/sys/arch/m68k/fpsp/Makefile.inc (expand / switch to context diff)
--- src/sys/arch/m68k/fpsp/Makefile.inc 2016/03/22 08:25:22 1.20
+++ src/sys/arch/m68k/fpsp/Makefile.inc 2018/06/09 15:35:38 1.20.10.1
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile.inc,v 1.20 2016/03/22 08:25:22 mrg Exp $
+#	$NetBSD: Makefile.inc,v 1.20.10.1 2018/06/09 15:35:38 martin Exp $
 #
 #	Configuration variables (default values are below):
 #
@@ -18,27 +18,27 @@
 FPSPDST?=	${.OBJDIR}/lib/fpsp
 FPSPDOTDIR?= ../../.
 
-FPSPDIR=	${S:S@^.@${FPSPDOTDIR}@:Q}/arch/m68k/fpsp
+FPSPDIR=	${S:S@^.@${FPSPDOTDIR}@:q}/arch/m68k/fpsp
 FPSPOBJ=	${FPSPDST}/fpsp.o
 HAS_FPSP!=	grep '^\#define	FPSP	1$$' opt_fpsp.h || echo
 .if !empty(HAS_FPSP)
 FPSP=		${FPSPOBJ}
 .endif
 
-#	    CC=${CC:Q} CFLAGS=${CFLAGS:Q} \
-#	    AS=${AS:Q} AFLAGS=${AFLAGS:Q} \
-#	    LD=${LD:Q} STRIP=${STRIP:Q} \
+#	    CC=${CC:q} CFLAGS=${CFLAGS:q} \
+#	    AS=${AS:q} AFLAGS=${AFLAGS:q} \
+#	    LD=${LD:q} STRIP=${STRIP:q} \
 
 FPSPMAKE= \
-	cd ${FPSPDST} && ${MAKE} -f ${FPSPDIR:Q}/Makefile \
-	    FPSPDIR=${FPSPDIR:Q} \
-	    CC=${CC:Q} CFLAGS=${CFLAGS:Q} \
-	    LD=${LD:Q} STRIP=${STRIP:Q} \
+	cd ${FPSPDST} && ${MAKE} -f ${FPSPDIR:q}/Makefile \
+	    FPSPDIR=${FPSPDIR:q} \
+	    CC=${CC:q} CFLAGS=${CFLAGS:q} \
+	    LD=${LD:q} STRIP=${STRIP:q} \
 	    MACHINE=${MACHINE} \
-	    MACHINE_ARCH=${MACHINE_ARCH:Q} \
-	    FPSPCPPFLAGS=${CPPFLAGS:S@^-I.@-I${FPSPDOTDIR}@g:Q} \
-	    FPSPMISCCPPFLAGS=${FPSPMISCCPPFLAGS:Q} \
-	    FPSPDIR=${FPSPDIR:Q} \
+	    MACHINE_ARCH=${MACHINE_ARCH:q} \
+	    FPSPCPPFLAGS=${CPPFLAGS:S@^-I.@-I${FPSPDOTDIR}@g:q} \
+	    FPSPMISCCPPFLAGS=${FPSPMISCCPPFLAGS:q} \
+	    FPSPDIR=${FPSPDIR:q} \
 	    ${FPSPMISCMAKEFLAGS}
 
 ${FPSP}:		.NOTMAIN __always_make_fpsp

cvs diff -r1.22 -r1.22.10.1 src/sys/compat/common/Attic/Makefile.inc (expand / switch to context diff)
--- src/sys/compat/common/Attic/Makefile.inc 2016/03/22 08:25:23 1.22
+++ src/sys/compat/common/Attic/Makefile.inc 2018/06/09 15:35:37 1.22.10.1
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile.inc,v 1.22 2016/03/22 08:25:23 mrg Exp $
+#	$NetBSD: Makefile.inc,v 1.22.10.1 2018/06/09 15:35:37 martin Exp $
 #
 #	Configuration variables (default values are below):
 #
@@ -33,19 +33,19 @@
 COMPATLIBLN=	${COMPATDST}/${LIBCOMPATLNBN}
 
 COMPATMAKE= \
-	cd ${COMPATDST} && ${MAKE} -f ${COMPATDIR:Q}/Makefile \
-	    COMPATDIR=${COMPATDIR:Q} \
-	    CC=${CC:Q} CFLAGS=${CFLAGS:Q} \
-	    AS=${AS:Q} AFLAGS=${AFLAGS:Q} \
-	    AR=${AR:Q} NM=${NM:Q} \
-	    LORDER=${LORDER:Q} \
-	    TSORT=${TSORT:Q} \
-	    RANLIB=${RANLIB:Q} \
-	    LD=${LD:Q} LDFLAGS=${LDFLAGS:Q} \
-	    STRIP=${STRIP:Q} \
-	    MACHINE=${MACHINE} MACHINE_ARCH=${MACHINE_ARCH:Q} \
-	    COMPATCPPFLAGS=${CPPFLAGS:S@^-I.@-I${COMPATDOTDIR}@g:Q} \
-	    LINTFLAGS=${KERNLINTFLAGS:Q} \
+	cd ${COMPATDST} && ${MAKE} -f ${COMPATDIR:q}/Makefile \
+	    COMPATDIR=${COMPATDIR:q} \
+	    CC=${CC:q} CFLAGS=${CFLAGS:q} \
+	    AS=${AS:q} AFLAGS=${AFLAGS:q} \
+	    AR=${AR:q} NM=${NM:q} \
+	    LORDER=${LORDER:q} \
+	    TSORT=${TSORT:q} \
+	    RANLIB=${RANLIB:q} \
+	    LD=${LD:q} LDFLAGS=${LDFLAGS:q} \
+	    STRIP=${STRIP:q} \
+	    MACHINE=${MACHINE} MACHINE_ARCH=${MACHINE_ARCH:q} \
+	    COMPATCPPFLAGS=${CPPFLAGS:S@^-I.@-I${COMPATDOTDIR}@g:q} \
+	    LINTFLAGS=${KERNLINTFLAGS:q} \
 	    ${COMPATMISCMAKEFLAGS}
 
 ${COMPATLIB}:		.NOTMAIN .MAKE __always_make_compatlib

cvs diff -r1.4 -r1.4.6.1 src/sys/lib/libgnuefi/Makefile.inc (expand / switch to context diff)
--- src/sys/lib/libgnuefi/Makefile.inc 2017/01/24 11:09:14 1.4
+++ src/sys/lib/libgnuefi/Makefile.inc 2018/06/09 15:35:37 1.4.6.1
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile.inc,v 1.4 2017/01/24 11:09:14 nonaka Exp $
+#	$NetBSD: Makefile.inc,v 1.4.6.1 2018/06/09 15:35:37 martin Exp $
 #
 #	Configuration variables (default values are below):
 #
@@ -23,7 +23,7 @@
 
 CWARNFLAGS.clang+=	-Wno-format-extra-args
 
-GNUEFIDIR=		${S:S@^.@${GNUEFIDOTDIR}@:Q}/lib/libgnuefi
+GNUEFIDIR=		${S:S@^.@${GNUEFIDOTDIR}@:q}/lib/libgnuefi
 .if (${GNUEFI_AS} == "obj")
 GNUEFILIB=		${GNUEFIDST}/libgnuefi.o
 GNUEFILIB_PROF=	${GNUEFIDST}/libgnuefi.po
@@ -35,19 +35,19 @@
 GNUEFIMISCCPPFLAGS+=-I${ZLIBSRCDIR}
 
 GNUEFIMAKE= \
-	cd ${GNUEFIDST} && ${MAKE} -f ${GNUEFIDIR:Q}/Makefile \
-	    GNUEFIDIR=${GNUEFIDIR:Q} \
-	    CC=${CC:Q} CFLAGS=${CFLAGS:Q} CPUFLAGS= \
-	    AS=${AS:Q} AFLAGS=${AFLAGS:Q} \
-	    LORDER=${LORDER:Q} \
-	    TSORT=${TSORT:Q} \
-	    LD=${LD:Q} STRIP=${STRIP:Q} \
-	    AR=${AR:Q} NM=${NM:Q} \
-	    RANLIB=${RANLIB:Q} SIZE=${SIZE:Q} \
-	    MACHINE=${MACHINE} MACHINE_ARCH=${MACHINE_ARCH:Q} \
-	    GNUEFICPPFLAGS=${CPPFLAGS:S@^-I.@-I${GNUEFIDOTDIR}@g:Q} \
-	    GNUEFIMISCCPPFLAGS=${GNUEFIMISCCPPFLAGS:Q} \
-	    LIBGNUEFI_ARCH=${LIBGNUEFI_ARCH:Q} \
+	cd ${GNUEFIDST} && ${MAKE} -f ${GNUEFIDIR:q}/Makefile \
+	    GNUEFIDIR=${GNUEFIDIR:q} \
+	    CC=${CC:q} CFLAGS=${CFLAGS:q} CPUFLAGS= \
+	    AS=${AS:q} AFLAGS=${AFLAGS:q} \
+	    LORDER=${LORDER:q} \
+	    TSORT=${TSORT:q} \
+	    LD=${LD:q} STRIP=${STRIP:q} \
+	    AR=${AR:q} NM=${NM:q} \
+	    RANLIB=${RANLIB:q} SIZE=${SIZE:q} \
+	    MACHINE=${MACHINE} MACHINE_ARCH=${MACHINE_ARCH:q} \
+	    GNUEFICPPFLAGS=${CPPFLAGS:S@^-I.@-I${GNUEFIDOTDIR}@g:q} \
+	    GNUEFIMISCCPPFLAGS=${GNUEFIMISCCPPFLAGS:q} \
+	    LIBGNUEFI_ARCH=${LIBGNUEFI_ARCH:q} \
 	    ${GNUEFIMISCMAKEFLAGS}
 
 ${GNUEFILIB}:		.NOTMAIN .MAKE __always_make_gnuefilib

cvs diff -r1.44 -r1.44.10.1 src/sys/lib/libkern/Makefile.inc (expand / switch to context diff)
--- src/sys/lib/libkern/Makefile.inc 2015/10/29 00:18:55 1.44
+++ src/sys/lib/libkern/Makefile.inc 2018/06/09 15:35:38 1.44.10.1
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile.inc,v 1.44 2015/10/29 00:18:55 mrg Exp $
+#	$NetBSD: Makefile.inc,v 1.44.10.1 2018/06/09 15:35:38 martin Exp $
 #
 #	Configuration variables (default values are below):
 #
@@ -21,7 +21,7 @@
 KERN_AS?=	library
 KERNDOTDIR?= ../../.
 
-KERNDIR=	${S:S@^.@${KERNDOTDIR}@:Q}/lib/libkern
+KERNDIR=	${S:S@^.@${KERNDOTDIR}@:q}/lib/libkern
 .if (${KERN_AS} == "obj")
 KERNLIB=	${KERNDST}/libkern.o
 KERNLIB_PROF=	${KERNDST}/libkern.po
@@ -34,21 +34,21 @@
 KERNLIBLN=	${KERNDST}/${LIBKERNLNBN}
 
 KERNMAKE= \
-	cd ${KERNDST} && ${MAKE} -f ${KERNDIR:Q}/Makefile \
-	    KERNDIR=${KERNDIR:Q} \
-	    CC=${CC:Q} CFLAGS=${CFLAGS:Q} CPUFLAGS= \
-	    AS=${AS:Q} AFLAGS=${AFLAGS:Q} \
-	    LORDER=${LORDER:Q} \
-	    TSORT=${TSORT:Q} \
-	    LD=${LD:Q} STRIP=${STRIP:Q} \
-	    AR=${AR:Q} NM=${NM:Q} \
-	    RANLIB=${RANLIB:Q} SIZE=${SIZE:Q} \
-	    MACHINE=${MACHINE} MACHINE_ARCH=${MACHINE_ARCH:Q} \
-	    KERNCPPFLAGS=${CPPFLAGS:S@^-I.@-I${KERNDOTDIR}@g:Q} \
-	    KERNMISCCPPFLAGS=${KERNMISCCPPFLAGS:Q} \
-	    LINTFLAGS=${KERNLINTFLAGS:Q} \
-	    LIBKERN_ARCH=${LIBKERN_ARCH:Q} \
-	    COMMON_MACHINE_ARCH=${COMMON_MACHINE_ARCH:Q} \
+	cd ${KERNDST} && ${MAKE} -f ${KERNDIR:q}/Makefile \
+	    KERNDIR=${KERNDIR:q} \
+	    CC=${CC:q} CFLAGS=${CFLAGS:q} CPUFLAGS= \
+	    AS=${AS:q} AFLAGS=${AFLAGS:q} \
+	    LORDER=${LORDER:q} \
+	    TSORT=${TSORT:q} \
+	    LD=${LD:q} STRIP=${STRIP:q} \
+	    AR=${AR:q} NM=${NM:q} \
+	    RANLIB=${RANLIB:q} SIZE=${SIZE:q} \
+	    MACHINE=${MACHINE} MACHINE_ARCH=${MACHINE_ARCH:q} \
+	    KERNCPPFLAGS=${CPPFLAGS:S@^-I.@-I${KERNDOTDIR}@g:q} \
+	    KERNMISCCPPFLAGS=${KERNMISCCPPFLAGS:q} \
+	    LINTFLAGS=${KERNLINTFLAGS:q} \
+	    LIBKERN_ARCH=${LIBKERN_ARCH:q} \
+	    COMMON_MACHINE_ARCH=${COMMON_MACHINE_ARCH:q} \
 	    ${KERNMISCMAKEFLAGS}
 
 ${KERNLIB}:		.NOTMAIN .MAKE __always_make_kernlib

cvs diff -r1.23 -r1.23.10.1 src/sys/lib/libsa/Makefile.inc (expand / switch to context diff)
--- src/sys/lib/libsa/Makefile.inc 2016/03/22 08:25:23 1.23
+++ src/sys/lib/libsa/Makefile.inc 2018/06/09 15:35:38 1.23.10.1
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile.inc,v 1.23 2016/03/22 08:25:23 mrg Exp $
+#	$NetBSD: Makefile.inc,v 1.23.10.1 2018/06/09 15:35:38 martin Exp $
 #
 #	Configuration variables (default values are below):
 #
@@ -23,7 +23,7 @@
 
 CWARNFLAGS.clang+=	-Wno-format-extra-args
 
-SADIR=		${S:S@^.@${SADOTDIR}@:Q}/lib/libsa
+SADIR=		${S:S@^.@${SADOTDIR}@:q}/lib/libsa
 .if (${SA_AS} == "obj")
 SALIB=		${SADST}/libsa.o
 SALIB_PROF=	${SADST}/libsa.po
@@ -35,18 +35,18 @@
 SAMISCCPPFLAGS+=-I${ZLIBSRCDIR}
 
 SAMAKE= \
-	cd ${SADST} && ${MAKE} -f ${SADIR:Q}/Makefile \
-	    SADIR=${SADIR:Q} \
-	    CC=${CC:Q} CFLAGS=${CFLAGS:Q} CPUFLAGS= \
-	    AS=${AS:Q} AFLAGS=${AFLAGS:Q} \
-	    LORDER=${LORDER:Q} \
-	    TSORT=${TSORT:Q} \
-	    LD=${LD:Q} STRIP=${STRIP:Q} \
-	    AR=${AR:Q} NM=${NM:Q} \
-	    RANLIB=${RANLIB:Q} SIZE=${SIZE:Q} \
-	    MACHINE=${MACHINE} MACHINE_ARCH=${MACHINE_ARCH:Q} \
-	    SACPPFLAGS=${CPPFLAGS:S@^-I.@-I${SADOTDIR}@g:Q} \
-	    SAMISCCPPFLAGS=${SAMISCCPPFLAGS:Q} \
+	cd ${SADST} && ${MAKE} -f ${SADIR:q}/Makefile \
+	    SADIR=${SADIR:q} \
+	    CC=${CC:q} CFLAGS=${CFLAGS:q} CPUFLAGS= \
+	    AS=${AS:q} AFLAGS=${AFLAGS:q} \
+	    LORDER=${LORDER:q} \
+	    TSORT=${TSORT:q} \
+	    LD=${LD:q} STRIP=${STRIP:q} \
+	    AR=${AR:q} NM=${NM:q} \
+	    RANLIB=${RANLIB:q} SIZE=${SIZE:q} \
+	    MACHINE=${MACHINE} MACHINE_ARCH=${MACHINE_ARCH:q} \
+	    SACPPFLAGS=${CPPFLAGS:S@^-I.@-I${SADOTDIR}@g:q} \
+	    SAMISCCPPFLAGS=${SAMISCCPPFLAGS:q} \
 	    ${SAMISCMAKEFLAGS}
 
 ${SALIB}:		.NOTMAIN .MAKE __always_make_salib

cvs diff -r1.16 -r1.16.10.1 src/sys/lib/libz/Makefile.inc (expand / switch to context diff)
--- src/sys/lib/libz/Makefile.inc 2016/03/22 08:25:23 1.16
+++ src/sys/lib/libz/Makefile.inc 2018/06/09 15:35:38 1.16.10.1
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile.inc,v 1.16 2016/03/22 08:25:23 mrg Exp $
+#	$NetBSD: Makefile.inc,v 1.16.10.1 2018/06/09 15:35:38 martin Exp $
 #
 #	Configuration variables (default values are below):
 #
@@ -21,7 +21,7 @@
 Z_AS?=		library
 ZDOTDIR?= ../../.
 
-ZDIR=		${S:S@^.@${ZDOTDIR}@:Q}/lib/libz
+ZDIR=		${S:S@^.@${ZDOTDIR}@:q}/lib/libz
 .if (${Z_AS} == "obj")
 ZLIB=		${ZDST}/libz.o
 ZLIB_PROF=	${ZDST}/libz.po
@@ -31,18 +31,18 @@
 .endif
 
 ZMAKE= \
-	cd ${ZDST} && ${MAKE} -f ${ZDIR:Q}/Makefile \
-	    ZDIR=${ZDIR:Q} \
-	    CC=${CC:Q} CFLAGS=${CFLAGS:Q} CPUFLAGS= \
-	    AS=${AS:Q} AFLAGS=${AFLAGS:Q} \
-	    LORDER=${LORDER:Q} \
-	    TSORT=${TSORT:Q} \
-	    LD=${LD:Q} STRIP=${STRIP:Q} \
-	    AR=${AR:Q} NM=${NM:Q} \
-	    RANLIB=${RANLIB:Q} SIZE=${SIZE:Q} \
-	    MACHINE=${MACHINE} MACHINE_ARCH=${MACHINE_ARCH:Q} \
-	    ZCPPFLAGS=${CPPFLAGS:S@^-I.@-I${ZDOTDIR}@g:Q} \
-	    ZMISCCPPFLAGS=${ZMISCCPPFLAGS:Q} \
+	cd ${ZDST} && ${MAKE} -f ${ZDIR:q}/Makefile \
+	    ZDIR=${ZDIR:q} \
+	    CC=${CC:q} CFLAGS=${CFLAGS:q} CPUFLAGS= \
+	    AS=${AS:q} AFLAGS=${AFLAGS:q} \
+	    LORDER=${LORDER:q} \
+	    TSORT=${TSORT:q} \
+	    LD=${LD:q} STRIP=${STRIP:q} \
+	    AR=${AR:q} NM=${NM:q} \
+	    RANLIB=${RANLIB:q} SIZE=${SIZE:q} \
+	    MACHINE=${MACHINE} MACHINE_ARCH=${MACHINE_ARCH:q} \
+	    ZCPPFLAGS=${CPPFLAGS:S@^-I.@-I${ZDOTDIR}@g:q} \
+	    ZMISCCPPFLAGS=${ZMISCCPPFLAGS:q} \
 	    ${ZMISCMAKEFLAGS}
 
 ${ZLIB}:		.NOTMAIN .MAKE __always_make_zlib

cvs diff -r1.266.4.1 -r1.266.4.2 src/usr.bin/make/make.1 (expand / switch to context diff)
--- src/usr.bin/make/make.1 2017/07/18 15:26:14 1.266.4.1
+++ src/usr.bin/make/make.1 2018/06/09 15:35:38 1.266.4.2
@@ -1,4 +1,4 @@
-.\"	$NetBSD: make.1,v 1.266.4.1 2017/07/18 15:26:14 snj Exp $
+.\"	$NetBSD: make.1,v 1.266.4.2 2018/06/09 15:35:38 martin 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 19, 2017
+.Dd June 9, 2018
 .Dt MAKE 1
 .Os
 .Sh NAME
@@ -1205,8 +1205,15 @@
 .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]

cvs diff -r1.215.4.1 -r1.215.4.2 src/usr.bin/make/var.c (expand / switch to context diff)
--- src/usr.bin/make/var.c 2018/06/07 15:59:27 1.215.4.1
+++ src/usr.bin/make/var.c 2018/06/09 15:35:38 1.215.4.2
@@ -1,4 +1,4 @@
-/*	$NetBSD: var.c,v 1.215.4.1 2018/06/07 15:59:27 martin Exp $	*/
+/*	$NetBSD: var.c,v 1.215.4.2 2018/06/09 15:35:38 martin Exp $	*/
 
 /*
  * Copyright (c) 1988, 1989, 1990, 1993
@@ -69,14 +69,14 @@
  */
 
 #ifndef MAKE_NATIVE
-static char rcsid[] = "$NetBSD: var.c,v 1.215.4.1 2018/06/07 15:59:27 martin Exp $";
+static char rcsid[] = "$NetBSD: var.c,v 1.215.4.2 2018/06/09 15:35:38 martin 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.215.4.1 2018/06/07 15:59:27 martin Exp $");
+__RCSID("$NetBSD: var.c,v 1.215.4.2 2018/06/09 15:35:38 martin Exp $");
 #endif
 #endif /* not lint */
 #endif
@@ -325,7 +325,7 @@
 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 @@
  *-----------------------------------------------------------------------
  * 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 @@
  *-----------------------------------------------------------------------
  */
 static char *
-VarQuote(char *str)
+VarQuote(char *str, Boolean quoteDollar)
 {
 
     Buffer  	  buf;
@@ -2346,7 +2347,7 @@
 	if (isspace((unsigned char)*str) || ismeta((unsigned char)*str))
 	    Buf_AddByte(&buf, '\\');
 	Buf_AddByte(&buf, *str);
-	if (*str == '$')
+	if (quoteDollar && *str == '$')
 	    Buf_AddBytes(&buf, 2, "\\$");
     }
 
@@ -3487,9 +3488,10 @@
 		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;

cvs diff -r1.52 -r1.52.8.1 src/usr.bin/make/unit-tests/Makefile (expand / switch to context diff)
--- src/usr.bin/make/unit-tests/Makefile 2015/05/05 21:51:09 1.52
+++ src/usr.bin/make/unit-tests/Makefile 2018/06/09 15:35:38 1.52.8.1
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile,v 1.52 2015/05/05 21:51:09 sjg Exp $
+# $NetBSD: Makefile,v 1.52.8.1 2018/06/09 15:35:38 martin Exp $
 #
 # Unit tests for make(1)
 # The main targets are:
@@ -50,6 +50,7 @@
 	unexport-env \
 	varcmd \
 	varmisc \
+	varquote \
 	varshell
 
 # these tests were broken by referting POSIX chanegs

File Added: src/usr.bin/make/unit-tests/Attic/varquote.exp
-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

File Added: src/usr.bin/make/unit-tests/Attic/varquote.mk
# $NetBSD: varquote.mk,v 1.2.2.2 2018/06/09 15:35:38 martin 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