Module Name:    src
Committed By:   christos
Date:           Sun May 27 01:14:51 UTC 2018

Modified Files:
        src/external/mit/xorg: xorg-pkg-ver.mk
        src/sys/arch/acorn32/stand/lib: Makefile.inc
        src/sys/arch/hppa/spmath: Makefile.inc
        src/sys/arch/i386/stand/lib: Makefile.inc
        src/sys/arch/ia64/stand/efi/libefi: Makefile.inc
        src/sys/arch/m68k/fpsp: Makefile.inc
        src/sys/compat/common: Makefile.inc
        src/sys/lib/libgnuefi: Makefile.inc
        src/sys/lib/libkern: Makefile.inc
        src/sys/lib/libsa: Makefile.inc
        src/sys/lib/libz: Makefile.inc
        src/usr.bin/make: make.1 var.c
        src/usr.bin/make/unit-tests: varquote.exp varquote.mk

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

Discussed on tech-toolchain@
XXX: pullup 8


To generate a diff of this commit:
cvs rdiff -u -r1.8 -r1.9 src/external/mit/xorg/xorg-pkg-ver.mk
cvs rdiff -u -r1.3 -r1.4 src/sys/arch/acorn32/stand/lib/Makefile.inc
cvs rdiff -u -r1.9 -r1.10 src/sys/arch/hppa/spmath/Makefile.inc
cvs rdiff -u -r1.16 -r1.17 src/sys/arch/i386/stand/lib/Makefile.inc
cvs rdiff -u -r1.4 -r1.5 src/sys/arch/ia64/stand/efi/libefi/Makefile.inc
cvs rdiff -u -r1.20 -r1.21 src/sys/arch/m68k/fpsp/Makefile.inc
cvs rdiff -u -r1.24 -r1.25 src/sys/compat/common/Makefile.inc
cvs rdiff -u -r1.4 -r1.5 src/sys/lib/libgnuefi/Makefile.inc
cvs rdiff -u -r1.44 -r1.45 src/sys/lib/libkern/Makefile.inc
cvs rdiff -u -r1.23 -r1.24 src/sys/lib/libsa/Makefile.inc
cvs rdiff -u -r1.16 -r1.17 src/sys/lib/libz/Makefile.inc
cvs rdiff -u -r1.272 -r1.273 src/usr.bin/make/make.1
cvs rdiff -u -r1.219 -r1.220 src/usr.bin/make/var.c
cvs rdiff -u -r1.1 -r1.2 src/usr.bin/make/unit-tests/varquote.exp \
    src/usr.bin/make/unit-tests/varquote.mk

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/external/mit/xorg/xorg-pkg-ver.mk
diff -u src/external/mit/xorg/xorg-pkg-ver.mk:1.8 src/external/mit/xorg/xorg-pkg-ver.mk:1.9
--- src/external/mit/xorg/xorg-pkg-ver.mk:1.8	Sun Aug  9 06:09:07 2015
+++ src/external/mit/xorg/xorg-pkg-ver.mk	Sat May 26 21:14:51 2018
@@ -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.9 2018/05/27 01:14:51 christos 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 @@ XORG_PKG_PACKAGE_VERSION!= \
 	}' ${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!= \

Index: src/sys/arch/acorn32/stand/lib/Makefile.inc
diff -u src/sys/arch/acorn32/stand/lib/Makefile.inc:1.3 src/sys/arch/acorn32/stand/lib/Makefile.inc:1.4
--- src/sys/arch/acorn32/stand/lib/Makefile.inc:1.3	Tue Mar 22 04:25:22 2016
+++ src/sys/arch/acorn32/stand/lib/Makefile.inc	Sat May 26 21:14:50 2018
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile.inc,v 1.3 2016/03/22 08:25:22 mrg Exp $
+#	$NetBSD: Makefile.inc,v 1.4 2018/05/27 01:14:50 christos Exp $
 #
 #	Configuration variables (default values are below):
 #
@@ -22,12 +22,12 @@ RISCOSLIB=		${RISCOSDST}/libriscos.a
 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

Index: src/sys/arch/hppa/spmath/Makefile.inc
diff -u src/sys/arch/hppa/spmath/Makefile.inc:1.9 src/sys/arch/hppa/spmath/Makefile.inc:1.10
--- src/sys/arch/hppa/spmath/Makefile.inc:1.9	Tue Mar 22 04:25:22 2016
+++ src/sys/arch/hppa/spmath/Makefile.inc	Sat May 26 21:14:50 2018
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile.inc,v 1.9 2016/03/22 08:25:22 mrg Exp $
+#	$NetBSD: Makefile.inc,v 1.10 2018/05/27 01:14:50 christos Exp $
 
 #	$OpenBSD: Makefile.inc,v 1.4 2001/03/29 03:58:17 mickey Exp $
 #
@@ -15,13 +15,13 @@ SPMATH_PROF=	${SPMATHDST}/spmath.po
 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...

Index: src/sys/arch/i386/stand/lib/Makefile.inc
diff -u src/sys/arch/i386/stand/lib/Makefile.inc:1.16 src/sys/arch/i386/stand/lib/Makefile.inc:1.17
--- src/sys/arch/i386/stand/lib/Makefile.inc:1.16	Tue Mar 22 04:25:22 2016
+++ src/sys/arch/i386/stand/lib/Makefile.inc	Sat May 26 21:14:50 2018
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile.inc,v 1.16 2016/03/22 08:25:22 mrg Exp $
+#	$NetBSD: Makefile.inc,v 1.17 2018/05/27 01:14:50 christos Exp $
 #
 #	Configuration variables (default values are below):
 #
@@ -24,12 +24,12 @@ CWARNFLAGS.clang+=	-Wno-tautological-com
 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

Index: src/sys/arch/ia64/stand/efi/libefi/Makefile.inc
diff -u src/sys/arch/ia64/stand/efi/libefi/Makefile.inc:1.4 src/sys/arch/ia64/stand/efi/libefi/Makefile.inc:1.5
--- src/sys/arch/ia64/stand/efi/libefi/Makefile.inc:1.4	Tue Mar 22 04:25:22 2016
+++ src/sys/arch/ia64/stand/efi/libefi/Makefile.inc	Sat May 26 21:14:50 2018
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile.inc,v 1.4 2016/03/22 08:25:22 mrg Exp $
+#	$NetBSD: Makefile.inc,v 1.5 2018/05/27 01:14:50 christos Exp $
 #
 #	Configuration variables (default values are below):
 #
@@ -22,12 +22,12 @@ EFILIB=			${EFIDST}/libefi.a
 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

Index: src/sys/arch/m68k/fpsp/Makefile.inc
diff -u src/sys/arch/m68k/fpsp/Makefile.inc:1.20 src/sys/arch/m68k/fpsp/Makefile.inc:1.21
--- src/sys/arch/m68k/fpsp/Makefile.inc:1.20	Tue Mar 22 04:25:22 2016
+++ src/sys/arch/m68k/fpsp/Makefile.inc	Sat May 26 21:14:50 2018
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile.inc,v 1.20 2016/03/22 08:25:22 mrg Exp $
+#	$NetBSD: Makefile.inc,v 1.21 2018/05/27 01:14:50 christos 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

Index: src/sys/compat/common/Makefile.inc
diff -u src/sys/compat/common/Makefile.inc:1.24 src/sys/compat/common/Makefile.inc:1.25
--- src/sys/compat/common/Makefile.inc:1.24	Thu Apr 12 16:36:59 2018
+++ src/sys/compat/common/Makefile.inc	Sat May 26 21:14:50 2018
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile.inc,v 1.24 2018/04/12 20:36:59 christos Exp $
+#	$NetBSD: Makefile.inc,v 1.25 2018/05/27 01:14:50 christos Exp $
 #
 #	Configuration variables (default values are below):
 #
@@ -37,19 +37,19 @@ LIBCOMPATLNBN=	llib-lcompat.ln
 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

Index: src/sys/lib/libgnuefi/Makefile.inc
diff -u src/sys/lib/libgnuefi/Makefile.inc:1.4 src/sys/lib/libgnuefi/Makefile.inc:1.5
--- src/sys/lib/libgnuefi/Makefile.inc:1.4	Tue Jan 24 06:09:14 2017
+++ src/sys/lib/libgnuefi/Makefile.inc	Sat May 26 21:14:50 2018
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile.inc,v 1.4 2017/01/24 11:09:14 nonaka Exp $
+#	$NetBSD: Makefile.inc,v 1.5 2018/05/27 01:14:50 christos Exp $
 #
 #	Configuration variables (default values are below):
 #
@@ -23,7 +23,7 @@ GNUEFIDOTDIR?= ../../.
 
 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 @@ ZLIBSRCDIR:=	${.PARSEDIR}/../../../commo
 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

Index: src/sys/lib/libkern/Makefile.inc
diff -u src/sys/lib/libkern/Makefile.inc:1.44 src/sys/lib/libkern/Makefile.inc:1.45
--- src/sys/lib/libkern/Makefile.inc:1.44	Wed Oct 28 20:18:55 2015
+++ src/sys/lib/libkern/Makefile.inc	Sat May 26 21:14:50 2018
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile.inc,v 1.44 2015/10/29 00:18:55 mrg Exp $
+#	$NetBSD: Makefile.inc,v 1.45 2018/05/27 01:14:50 christos Exp $
 #
 #	Configuration variables (default values are below):
 #
@@ -21,7 +21,7 @@ KERNDST?=	${.OBJDIR}/lib/kern
 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 @@ LIBKERNLNBN=	llib-lkern.ln
 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

Index: src/sys/lib/libsa/Makefile.inc
diff -u src/sys/lib/libsa/Makefile.inc:1.23 src/sys/lib/libsa/Makefile.inc:1.24
--- src/sys/lib/libsa/Makefile.inc:1.23	Tue Mar 22 04:25:23 2016
+++ src/sys/lib/libsa/Makefile.inc	Sat May 26 21:14:51 2018
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile.inc,v 1.23 2016/03/22 08:25:23 mrg Exp $
+#	$NetBSD: Makefile.inc,v 1.24 2018/05/27 01:14:51 christos Exp $
 #
 #	Configuration variables (default values are below):
 #
@@ -23,7 +23,7 @@ SADOTDIR?= ../../.
 
 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 @@ ZLIBSRCDIR:=	${.PARSEDIR}/../../../commo
 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

Index: src/sys/lib/libz/Makefile.inc
diff -u src/sys/lib/libz/Makefile.inc:1.16 src/sys/lib/libz/Makefile.inc:1.17
--- src/sys/lib/libz/Makefile.inc:1.16	Tue Mar 22 04:25:23 2016
+++ src/sys/lib/libz/Makefile.inc	Sat May 26 21:14:51 2018
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile.inc,v 1.16 2016/03/22 08:25:23 mrg Exp $
+#	$NetBSD: Makefile.inc,v 1.17 2018/05/27 01:14:51 christos Exp $
 #
 #	Configuration variables (default values are below):
 #
@@ -21,7 +21,7 @@ ZDST?=		${.OBJDIR}/lib/z
 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 @@ ZLIB_PROF=	${ZDST}/libz_p.a
 .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

Index: src/usr.bin/make/make.1
diff -u src/usr.bin/make/make.1:1.272 src/usr.bin/make/make.1:1.273
--- src/usr.bin/make/make.1:1.272	Mon Apr  2 00:26:17 2018
+++ src/usr.bin/make/make.1	Sat May 26 21:14:51 2018
@@ -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
@@ -1226,8 +1226,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]

Index: src/usr.bin/make/var.c
diff -u src/usr.bin/make/var.c:1.219 src/usr.bin/make/var.c:1.220
--- src/usr.bin/make/var.c:1.219	Wed May 23 20:27:24 2018
+++ src/usr.bin/make/var.c	Sat May 26 21:14:51 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: var.c,v 1.219 2018/05/24 00:27:24 christos 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.219 2018/05/24 00:27:24 christos 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.219 2018/05/24 00:27:24 christos Exp $");
+__RCSID("$NetBSD: var.c,v 1.220 2018/05/27 01:14:51 christos Exp $");
 #endif
 #endif /* not lint */
 #endif
@@ -325,7 +325,7 @@ static Boolean VarLoopExpand(GNode *, Va
 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 *,
@@ -2316,6 +2316,7 @@ VarGetPattern(GNode *ctxt, Var_Parse_Sta
  *-----------------------------------------------------------------------
  * 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
@@ -2326,7 +2327,7 @@ VarGetPattern(GNode *ctxt, Var_Parse_Sta
  *-----------------------------------------------------------------------
  */
 static char *
-VarQuote(char *str)
+VarQuote(char *str, Boolean quoteDollar)
 {
 
     Buffer  	  buf;
@@ -2347,7 +2348,7 @@ VarQuote(char *str)
 	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, "\\$");
     }
 
@@ -3488,9 +3489,10 @@ ApplyModifiers(char *nstr, const char *t
 		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;

Index: src/usr.bin/make/unit-tests/varquote.exp
diff -u src/usr.bin/make/unit-tests/varquote.exp:1.1 src/usr.bin/make/unit-tests/varquote.exp:1.2
--- src/usr.bin/make/unit-tests/varquote.exp:1.1	Wed May 23 20:25:44 2018
+++ src/usr.bin/make/unit-tests/varquote.exp	Sat May 26 21:14:51 2018
@@ -1,2 +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
Index: src/usr.bin/make/unit-tests/varquote.mk
diff -u src/usr.bin/make/unit-tests/varquote.mk:1.1 src/usr.bin/make/unit-tests/varquote.mk:1.2
--- src/usr.bin/make/unit-tests/varquote.mk:1.1	Wed May 23 20:25:44 2018
+++ src/usr.bin/make/unit-tests/varquote.mk	Sat May 26 21:14:51 2018
@@ -1,12 +1,13 @@
-# $NetBSD: varquote.mk,v 1.1 2018/05/24 00:25:44 christos Exp $
+# $NetBSD: varquote.mk,v 1.2 2018/05/27 01:14:51 christos Exp $
 #
-# Test VAR:Q modifier
+# 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:Q}
+	@${MAKE} -f ${MAKEFILE} REPROFLAGS=${REPROFLAGS:S/\$/&&/g:Q}
+	@${MAKE} -f ${MAKEFILE} REPROFLAGS=${REPROFLAGS:q}
 .else
 all:
 	@echo ${REPROFLAGS}

Reply via email to