head	1.3;
access;
symbols
	perseant-exfatfs-base-20250801:1.3
	perseant-exfatfs-base-20240630:1.3
	perseant-exfatfs:1.3.0.16
	perseant-exfatfs-base:1.3
	cjep_sun2x:1.3.0.14
	cjep_sun2x-base:1.3
	cjep_staticlib_x-base1:1.3
	cjep_staticlib_x:1.3.0.12
	cjep_staticlib_x-base:1.3
	phil-wifi-20200421:1.3
	phil-wifi-20200411:1.3
	phil-wifi-20200406:1.3
	pgoyette-compat-merge-20190127:1.3
	pgoyette-compat-20190127:1.3
	pgoyette-compat-20190118:1.3
	pgoyette-compat-1226:1.3
	pgoyette-compat-1126:1.3
	pgoyette-compat-1020:1.3
	pgoyette-compat-0930:1.3
	pgoyette-compat-0906:1.3
	netbsd-7-2-RELEASE:1.2
	pgoyette-compat-0728:1.3
	pgoyette-compat-0625:1.3
	pgoyette-compat-0521:1.3
	pgoyette-compat-0502:1.3
	pgoyette-compat-0422:1.3
	pgoyette-compat-0415:1.3
	pgoyette-compat-0407:1.3
	pgoyette-compat-0330:1.3
	pgoyette-compat-0322:1.3
	pgoyette-compat-0315:1.3
	netbsd-7-1-2-RELEASE:1.2
	pgoyette-compat:1.3.0.10
	pgoyette-compat-base:1.3
	netbsd-7-1-1-RELEASE:1.2
	perseant-stdc-iso10646:1.3.0.8
	perseant-stdc-iso10646-base:1.3
	prg-localcount2-base3:1.3
	prg-localcount2-base2:1.3
	prg-localcount2-base1:1.3
	prg-localcount2:1.3.0.6
	prg-localcount2-base:1.3
	pgoyette-localcount-20170426:1.3
	bouyer-socketcan-base1:1.3
	pgoyette-localcount-20170320:1.3
	netbsd-7-1:1.2.0.26
	netbsd-7-1-RELEASE:1.2
	netbsd-7-1-RC2:1.2
	netbsd-7-nhusb-base-20170116:1.2
	bouyer-socketcan:1.3.0.4
	bouyer-socketcan-base:1.3
	pgoyette-localcount-20170107:1.3
	netbsd-7-1-RC1:1.2
	pgoyette-localcount-20161104:1.3
	netbsd-7-0-2-RELEASE:1.2
	localcount-20160914:1.3
	netbsd-7-nhusb:1.2.0.24
	netbsd-7-nhusb-base:1.2
	pgoyette-localcount-20160806:1.3
	pgoyette-localcount-20160726:1.3
	pgoyette-localcount:1.3.0.2
	pgoyette-localcount-base:1.3
	netbsd-7-0-1-RELEASE:1.2
	netbsd-7-0:1.2.0.22
	netbsd-7-0-RELEASE:1.2
	netbsd-7-0-RC3:1.2
	netbsd-7-0-RC2:1.2
	netbsd-7-0-RC1:1.2
	netbsd-5-2-3-RELEASE:1.1
	netbsd-5-1-5-RELEASE:1.1
	netbsd-6-0-6-RELEASE:1.2
	netbsd-6-1-5-RELEASE:1.2
	netbsd-7:1.2.0.20
	netbsd-7-base:1.2
	yamt-pagecache-base9:1.2
	yamt-pagecache-tag8:1.2
	netbsd-6-1-4-RELEASE:1.2
	netbsd-6-0-5-RELEASE:1.2
	tls-earlyentropy:1.2.0.18
	tls-earlyentropy-base:1.2
	riastradh-xf86-video-intel-2-7-1-pre-2-21-15:1.2
	riastradh-drm2-base3:1.2
	netbsd-6-1-3-RELEASE:1.2
	netbsd-6-0-4-RELEASE:1.2
	netbsd-5-2-2-RELEASE:1.1
	netbsd-5-1-4-RELEASE:1.1
	netbsd-6-1-2-RELEASE:1.2
	netbsd-6-0-3-RELEASE:1.2
	netbsd-5-2-1-RELEASE:1.1
	netbsd-5-1-3-RELEASE:1.1
	netbsd-6-1-1-RELEASE:1.2
	riastradh-drm2-base2:1.2
	riastradh-drm2-base1:1.2
	riastradh-drm2:1.2.0.12
	riastradh-drm2-base:1.2
	netbsd-6-1:1.2.0.16
	netbsd-6-0-2-RELEASE:1.2
	netbsd-6-1-RELEASE:1.2
	netbsd-6-1-RC4:1.2
	netbsd-6-1-RC3:1.2
	agc-symver:1.2.0.14
	agc-symver-base:1.2
	netbsd-6-1-RC2:1.2
	dholland-make-base:1.2
	netbsd-6-1-RC1:1.2
	yamt-pagecache-base8:1.2
	netbsd-5-2:1.1.0.56
	netbsd-6-0-1-RELEASE:1.2
	yamt-pagecache-base7:1.2
	netbsd-5-2-RELEASE:1.1
	netbsd-5-2-RC1:1.1
	matt-nb6-plus-nbase:1.2
	yamt-pagecache-base6:1.2
	netbsd-6-0:1.2.0.10
	netbsd-6-0-RELEASE:1.2
	netbsd-6-0-RC2:1.2
	tls-maxphys:1.2.0.8
	tls-maxphys-base:1.2
	matt-nb6-plus:1.2.0.6
	matt-nb6-plus-base:1.2
	netbsd-6-0-RC1:1.2
	yamt-pagecache-base5:1.2
	yamt-pagecache-base4:1.2
	netbsd-6:1.2.0.4
	netbsd-6-base:1.2
	netbsd-5-1-2-RELEASE:1.1
	netbsd-5-1-1-RELEASE:1.1
	yamt-pagecache-base3:1.2
	yamt-pagecache-base2:1.2
	yamt-pagecache:1.2.0.2
	yamt-pagecache-base:1.2
	cherry-xenmp:1.1.0.54
	cherry-xenmp-base:1.1
	bouyer-quota2-nbase:1.1
	bouyer-quota2:1.1.0.52
	bouyer-quota2-base:1.1
	matt-mips64-premerge-20101231:1.1
	matt-nb5-mips64-premerge-20101231:1.1
	matt-nb5-pq3:1.1.0.50
	matt-nb5-pq3-base:1.1
	netbsd-5-1:1.1.0.48
	netbsd-5-1-RELEASE:1.1
	netbsd-5-1-RC4:1.1
	matt-nb5-mips64-k15:1.1
	netbsd-5-1-RC3:1.1
	netbsd-5-1-RC2:1.1
	netbsd-5-1-RC1:1.1
	netbsd-5-0-2-RELEASE:1.1
	matt-nb5-mips64-premerge-20091211:1.1
	matt-premerge-20091211:1.1
	matt-nb5-mips64-u2-k2-k4-k7-k8-k9:1.1
	matt-nb4-mips64-k7-u2a-k9b:1.1
	matt-nb5-mips64-u1-k1-k5:1.1
	matt-nb5-mips64:1.1.0.46
	netbsd-5-0-1-RELEASE:1.1
	jym-xensuspend-nbase:1.1
	netbsd-5-0:1.1.0.44
	netbsd-5-0-RELEASE:1.1
	netbsd-5-0-RC4:1.1
	netbsd-5-0-RC3:1.1
	netbsd-5-0-RC2:1.1
	jym-xensuspend:1.1.0.42
	jym-xensuspend-base:1.1
	netbsd-5-0-RC1:1.1
	netbsd-5:1.1.0.40
	netbsd-5-base:1.1
	matt-mips64-base2:1.1
	matt-mips64:1.1.0.38
	mjf-devfs2:1.1.0.36
	mjf-devfs2-base:1.1
	netbsd-4-0-1-RELEASE:1.1
	wrstuden-revivesa-base-3:1.1
	wrstuden-revivesa-base-2:1.1
	wrstuden-fixsa-newbase:1.1
	wrstuden-revivesa-base-1:1.1
	yamt-pf42-base4:1.1
	yamt-pf42-base3:1.1
	hpcarm-cleanup-nbase:1.1
	yamt-pf42-baseX:1.1
	yamt-pf42-base2:1.1
	wrstuden-revivesa:1.1.0.34
	wrstuden-revivesa-base:1.1
	yamt-pf42:1.1.0.32
	yamt-pf42-base:1.1
	keiichi-mipv6-nbase:1.1
	keiichi-mipv6:1.1.0.30
	keiichi-mipv6-base:1.1
	christos-broken:1.1
	matt-armv6-nbase:1.1
	matt-armv6-prevmlocking:1.1
	wrstuden-fixsa-base-1:1.1
	netbsd-4-0:1.1.0.28
	netbsd-4-0-RELEASE:1.1
	cube-autoconf:1.1.0.26
	cube-autoconf-base:1.1
	netbsd-4-0-RC5:1.1
	netbsd-4-0-RC4:1.1
	netbsd-4-0-RC3:1.1
	netbsd-4-0-RC2:1.1
	netbsd-4-0-RC1:1.1
	matt-armv6:1.1.0.24
	matt-armv6-base:1.1
	matt-mips64-base:1.1
	hpcarm-cleanup:1.1.0.22
	hpcarm-cleanup-base:1.1
	netbsd-3-1-1-RELEASE:1.1
	netbsd-3-0-3-RELEASE:1.1
	wrstuden-fixsa:1.1.0.20
	wrstuden-fixsa-base:1.1
	abandoned-netbsd-4-base:1.1
	abandoned-netbsd-4:1.1.0.14
	netbsd-3-1:1.1.0.16
	netbsd-3-1-RELEASE:1.1
	netbsd-3-0-2-RELEASE:1.1
	netbsd-3-1-RC4:1.1
	netbsd-3-1-RC3:1.1
	netbsd-3-1-RC2:1.1
	netbsd-3-1-RC1:1.1
	netbsd-4:1.1.0.18
	netbsd-4-base:1.1
	chap-midi-nbase:1.1
	netbsd-3-0-1-RELEASE:1.1
	chap-midi:1.1.0.12
	chap-midi-base:1.1
	netbsd-3-0:1.1.0.10
	netbsd-3-0-RELEASE:1.1
	netbsd-3-0-RC6:1.1
	netbsd-3-0-RC5:1.1
	netbsd-3-0-RC4:1.1
	netbsd-3-0-RC3:1.1
	netbsd-3-0-RC2:1.1
	netbsd-3-0-RC1:1.1
	netbsd-2-0-3-RELEASE:1.1
	netbsd-2-1:1.1.0.8
	netbsd-2-1-RELEASE:1.1
	netbsd-2-1-RC6:1.1
	netbsd-2-1-RC5:1.1
	netbsd-2-1-RC4:1.1
	netbsd-2-1-RC3:1.1
	netbsd-2-1-RC2:1.1
	netbsd-2-1-RC1:1.1
	netbsd-2-0-2-RELEASE:1.1
	netbsd-3:1.1.0.6
	netbsd-3-base:1.1
	netbsd-2-0-1-RELEASE:1.1
	netbsd-2:1.1.0.4
	netbsd-2-base:1.1
	netbsd-2-0-RELEASE:1.1
	netbsd-2-0-RC5:1.1
	netbsd-2-0-RC4:1.1
	netbsd-2-0-RC3:1.1
	netbsd-2-0-RC2:1.1
	netbsd-2-0-RC1:1.1
	netbsd-2-0:1.1.0.2
	netbsd-2-0-base:1.1;
locks; strict;
comment	@# @;


1.3
date	2014.08.21.13.44.51;	author apb;	state dead;
branches;
next	1.2;
commitid	PNRbDMs9XSDHweNx;

1.2
date	2011.06.07.00.10.20;	author sjg;	state Exp;
branches;
next	1.1;

1.1
date	2004.02.20.09.03.26;	author sjg;	state Exp;
branches
	1.1.54.1;
next	;

1.1.54.1
date	2011.06.23.14.20.44;	author cherry;	state Exp;
branches;
next	;


desc
@@


1.3
log
@Give each group of tests its own output file.

* Rename each sub-makefile to *.mk;
* Add a *.exp file of expected output for each sub-makefile;
* Remove test.exp, which is replaced by all the other *.exp files.
* Use suffix rules to generate *.rawout and *.out files for
  each test case.
* Rewrite the test and accept targets to adapt to the new way.

The old (now removed) test.exp file is almost identical to the
concatenation (in the correct order) of all the new *.exp files.  There
are expected differences in makefile names embedded in the output, and
the new "exit status" lines.  Some old "*** Error code 1 (ignored)"
lines are also removed (replaced by new "exit status 1" lines).
@
text
@
LIST= one two three
LIST+= four five six

FU_mod-ts = a / b / cool

AAA= a a a
B.aaa= Baaa

all:   mod-ts

# Use print or printf iff they are builtin.
# XXX note that this causes problems, when make decides 
# there is no need to use a shell, so avoid where possible.
.if ${type print 2> /dev/null || echo:L:sh:Mbuiltin} != ""
PRINT= print -r --
.elif ${type printf 2> /dev/null || echo:L:sh:Mbuiltin} != ""
PRINT= printf '%s\n'
.else
PRINT= echo
.endif

mod-ts:
	@@echo 'LIST="${LIST}"'
	@@echo 'LIST:ts,="${LIST:ts,}"'
	@@echo 'LIST:ts/:tu="${LIST:ts/:tu}"'
	@@echo 'LIST:ts::tu="${LIST:ts::tu}"'
	@@echo 'LIST:ts:tu="${LIST:ts:tu}"'
	@@echo 'LIST:tu:ts/="${LIST:tu:ts/}"'
	@@echo 'LIST:ts:="${LIST:ts:}"'
	@@echo 'LIST:ts="${LIST:ts}"'
	@@echo 'LIST:ts:S/two/2/="${LIST:ts:S/two/2/}"'
	@@echo 'LIST:S/two/2/:ts="${LIST:S/two/2/:ts}"'
	@@echo 'LIST:ts/:S/two/2/="${LIST:ts/:S/two/2/}"'
	@@echo "Pretend the '/' in '/n' etc. below are back-slashes."
	@@${PRINT} 'LIST:ts/n="${LIST:ts\n}"'
	@@${PRINT} 'LIST:ts/t="${LIST:ts\t}"'
	@@${PRINT} 'LIST:ts/012:tu="${LIST:ts\012:tu}"'
	@@${PRINT} 'LIST:tx="${LIST:tx}"'
	@@${PRINT} 'LIST:ts/x:tu="${LIST:ts\x:tu}"'
	@@${PRINT} 'FU_$@@="${FU_${@@:ts}:ts}"'
	@@${PRINT} 'FU_$@@:ts:T="${FU_${@@:ts}:ts:T}" == cool?'
	@@${PRINT} 'B.$${AAA:ts}="${B.${AAA:ts}}" == Baaa?'
@


1.2
log
@Some systems (eg. MirBSD) use a ksh, with an echo which cannot
be used for things containing \x: etc.
Check for print or printf as builtin and use if available.
Note that a builtin will fail, if make decides a shell is not needed.
@
text
@@


1.1
log
@Fix :M so that modifiers in nested variables don't terminate parsing
early.  Add a unit-test to verify it works and keeps working.
Re-jig the unit-tests so that all are sub makefiles.
@
text
@d12 11
d36 8
a43 8
	@@echo 'LIST:ts/n="${LIST:ts\n}"'
	@@echo 'LIST:ts/t="${LIST:ts\t}"'
	@@echo 'LIST:ts/012:tu="${LIST:ts\012:tu}"'
	@@echo 'LIST:tx="${LIST:tx}"'
	@@echo 'LIST:ts/x:tu="${LIST:ts\x:tu}"'
	@@echo 'FU_$@@="${FU_${@@:ts}:ts}"'
	@@echo 'FU_$@@:ts:T="${FU_${@@:ts}:ts:T}" == cool?'
	@@echo 'B.$${AAA:ts}="${B.${AAA:ts}}" == Baaa?'
@


1.1.54.1
log
@Catchup with rmind-uvmplock merge.
@
text
@a11 11
# Use print or printf iff they are builtin.
# XXX note that this causes problems, when make decides 
# there is no need to use a shell, so avoid where possible.
.if ${type print 2> /dev/null || echo:L:sh:Mbuiltin} != ""
PRINT= print -r --
.elif ${type printf 2> /dev/null || echo:L:sh:Mbuiltin} != ""
PRINT= printf '%s\n'
.else
PRINT= echo
.endif

d25 8
a32 8
	@@${PRINT} 'LIST:ts/n="${LIST:ts\n}"'
	@@${PRINT} 'LIST:ts/t="${LIST:ts\t}"'
	@@${PRINT} 'LIST:ts/012:tu="${LIST:ts\012:tu}"'
	@@${PRINT} 'LIST:tx="${LIST:tx}"'
	@@${PRINT} 'LIST:ts/x:tu="${LIST:ts\x:tu}"'
	@@${PRINT} 'FU_$@@="${FU_${@@:ts}:ts}"'
	@@${PRINT} 'FU_$@@:ts:T="${FU_${@@:ts}:ts:T}" == cool?'
	@@${PRINT} 'B.$${AAA:ts}="${B.${AAA:ts}}" == Baaa?'
@


