head	1.6;
access;
symbols
	perseant-exfatfs-base-20250801:1.6
	perseant-exfatfs-base-20240630:1.6
	perseant-exfatfs:1.6.0.16
	perseant-exfatfs-base:1.6
	cjep_sun2x:1.6.0.14
	cjep_sun2x-base:1.6
	cjep_staticlib_x-base1:1.6
	cjep_staticlib_x:1.6.0.12
	cjep_staticlib_x-base:1.6
	phil-wifi-20200421:1.6
	phil-wifi-20200411:1.6
	phil-wifi-20200406:1.6
	pgoyette-compat-merge-20190127:1.6
	pgoyette-compat-20190127:1.6
	pgoyette-compat-20190118:1.6
	pgoyette-compat-1226:1.6
	pgoyette-compat-1126:1.6
	pgoyette-compat-1020:1.6
	pgoyette-compat-0930:1.6
	pgoyette-compat-0906:1.6
	netbsd-7-2-RELEASE:1.5
	pgoyette-compat-0728:1.6
	pgoyette-compat-0625:1.6
	pgoyette-compat-0521:1.6
	pgoyette-compat-0502:1.6
	pgoyette-compat-0422:1.6
	pgoyette-compat-0415:1.6
	pgoyette-compat-0407:1.6
	pgoyette-compat-0330:1.6
	pgoyette-compat-0322:1.6
	pgoyette-compat-0315:1.6
	netbsd-7-1-2-RELEASE:1.5
	pgoyette-compat:1.6.0.10
	pgoyette-compat-base:1.6
	netbsd-7-1-1-RELEASE:1.5
	perseant-stdc-iso10646:1.6.0.8
	perseant-stdc-iso10646-base:1.6
	prg-localcount2-base3:1.6
	prg-localcount2-base2:1.6
	prg-localcount2-base1:1.6
	prg-localcount2:1.6.0.6
	prg-localcount2-base:1.6
	pgoyette-localcount-20170426:1.6
	bouyer-socketcan-base1:1.6
	pgoyette-localcount-20170320:1.6
	netbsd-7-1:1.5.0.28
	netbsd-7-1-RELEASE:1.5
	netbsd-7-1-RC2:1.5
	netbsd-7-nhusb-base-20170116:1.5
	bouyer-socketcan:1.6.0.4
	bouyer-socketcan-base:1.6
	pgoyette-localcount-20170107:1.6
	netbsd-7-1-RC1:1.5
	pgoyette-localcount-20161104:1.6
	netbsd-7-0-2-RELEASE:1.5
	localcount-20160914:1.6
	netbsd-7-nhusb:1.5.0.26
	netbsd-7-nhusb-base:1.5
	pgoyette-localcount-20160806:1.6
	pgoyette-localcount-20160726:1.6
	pgoyette-localcount:1.6.0.2
	pgoyette-localcount-base:1.6
	netbsd-7-0-1-RELEASE:1.5
	netbsd-7-0:1.5.0.24
	netbsd-7-0-RELEASE:1.5
	netbsd-7-0-RC3:1.5
	netbsd-7-0-RC2:1.5
	netbsd-7-0-RC1:1.5
	netbsd-5-2-3-RELEASE:1.4
	netbsd-5-1-5-RELEASE:1.4
	netbsd-6-0-6-RELEASE:1.5
	netbsd-6-1-5-RELEASE:1.5
	netbsd-7:1.5.0.22
	netbsd-7-base:1.5
	yamt-pagecache-base9:1.5
	yamt-pagecache-tag8:1.5
	netbsd-6-1-4-RELEASE:1.5
	netbsd-6-0-5-RELEASE:1.5
	tls-earlyentropy:1.5.0.20
	tls-earlyentropy-base:1.5
	riastradh-xf86-video-intel-2-7-1-pre-2-21-15:1.5
	riastradh-drm2-base3:1.5
	netbsd-6-1-3-RELEASE:1.5
	netbsd-6-0-4-RELEASE:1.5
	netbsd-5-2-2-RELEASE:1.4
	netbsd-5-1-4-RELEASE:1.4
	netbsd-6-1-2-RELEASE:1.5
	netbsd-6-0-3-RELEASE:1.5
	netbsd-5-2-1-RELEASE:1.4
	netbsd-5-1-3-RELEASE:1.4
	netbsd-6-1-1-RELEASE:1.5
	riastradh-drm2-base2:1.5
	riastradh-drm2-base1:1.5
	riastradh-drm2:1.5.0.14
	riastradh-drm2-base:1.5
	netbsd-6-1:1.5.0.18
	netbsd-6-0-2-RELEASE:1.5
	netbsd-6-1-RELEASE:1.5
	netbsd-6-1-RC4:1.5
	netbsd-6-1-RC3:1.5
	agc-symver:1.5.0.16
	agc-symver-base:1.5
	netbsd-6-1-RC2:1.5
	dholland-make-base:1.5
	netbsd-6-1-RC1:1.5
	yamt-pagecache-base8:1.5
	netbsd-5-2:1.4.0.16
	netbsd-6-0-1-RELEASE:1.5
	yamt-pagecache-base7:1.5
	netbsd-5-2-RELEASE:1.4
	netbsd-5-2-RC1:1.4
	matt-nb6-plus-nbase:1.5
	yamt-pagecache-base6:1.5
	netbsd-6-0:1.5.0.12
	netbsd-6-0-RELEASE:1.5
	netbsd-6-0-RC2:1.5
	tls-maxphys:1.5.0.10
	tls-maxphys-base:1.5
	matt-nb6-plus:1.5.0.8
	matt-nb6-plus-base:1.5
	netbsd-6-0-RC1:1.5
	yamt-pagecache-base5:1.5
	yamt-pagecache-base4:1.5
	netbsd-6:1.5.0.6
	netbsd-6-base:1.5
	netbsd-5-1-2-RELEASE:1.4
	netbsd-5-1-1-RELEASE:1.4
	yamt-pagecache-base3:1.5
	yamt-pagecache-base2:1.5
	yamt-pagecache:1.5.0.4
	yamt-pagecache-base:1.5
	cherry-xenmp:1.5.0.2
	cherry-xenmp-base:1.5
	bouyer-quota2-nbase:1.4
	bouyer-quota2:1.4.0.14
	bouyer-quota2-base:1.4
	matt-mips64-premerge-20101231:1.4
	matt-nb5-mips64-premerge-20101231:1.4
	matt-nb5-pq3:1.4.0.12
	matt-nb5-pq3-base:1.4
	netbsd-5-1:1.4.0.10
	netbsd-5-1-RELEASE:1.4
	netbsd-5-1-RC4:1.4
	matt-nb5-mips64-k15:1.4
	netbsd-5-1-RC3:1.4
	netbsd-5-1-RC2:1.4
	netbsd-5-1-RC1:1.4
	netbsd-5-0-2-RELEASE:1.4
	matt-nb5-mips64-premerge-20091211:1.4
	matt-premerge-20091211:1.4
	matt-nb5-mips64-u2-k2-k4-k7-k8-k9:1.4
	matt-nb4-mips64-k7-u2a-k9b:1.4
	matt-nb5-mips64-u1-k1-k5:1.4
	matt-nb5-mips64:1.4.0.8
	netbsd-5-0-1-RELEASE:1.4
	jym-xensuspend-nbase:1.4
	netbsd-5-0:1.4.0.6
	netbsd-5-0-RELEASE:1.4
	netbsd-5-0-RC4:1.4
	netbsd-5-0-RC3:1.4
	netbsd-5-0-RC2:1.4
	jym-xensuspend:1.4.0.4
	jym-xensuspend-base:1.4
	netbsd-5-0-RC1:1.4
	netbsd-5:1.4.0.2
	netbsd-5-base:1.4
	matt-mips64-base2:1.3
	matt-mips64:1.3.0.34
	mjf-devfs2:1.3.0.32
	mjf-devfs2-base:1.3
	netbsd-4-0-1-RELEASE:1.3
	wrstuden-revivesa-base-3:1.3
	wrstuden-revivesa-base-2:1.3
	wrstuden-fixsa-newbase:1.3
	wrstuden-revivesa-base-1:1.3
	yamt-pf42-base4:1.3
	yamt-pf42-base3:1.3
	hpcarm-cleanup-nbase:1.3
	yamt-pf42-baseX:1.3
	yamt-pf42-base2:1.3
	wrstuden-revivesa:1.3.0.30
	wrstuden-revivesa-base:1.3
	yamt-pf42:1.3.0.28
	yamt-pf42-base:1.3
	keiichi-mipv6-nbase:1.3
	keiichi-mipv6:1.3.0.26
	keiichi-mipv6-base:1.3
	christos-broken:1.3
	matt-armv6-nbase:1.3
	matt-armv6-prevmlocking:1.3
	wrstuden-fixsa-base-1:1.3
	netbsd-4-0:1.3.0.24
	netbsd-4-0-RELEASE:1.3
	cube-autoconf:1.3.0.22
	cube-autoconf-base:1.3
	netbsd-4-0-RC5:1.3
	netbsd-4-0-RC4:1.3
	netbsd-4-0-RC3:1.3
	netbsd-4-0-RC2:1.3
	netbsd-4-0-RC1:1.3
	matt-armv6:1.3.0.20
	matt-armv6-base:1.3
	matt-mips64-base:1.3
	hpcarm-cleanup:1.3.0.18
	hpcarm-cleanup-base:1.3
	netbsd-3-1-1-RELEASE:1.3
	netbsd-3-0-3-RELEASE:1.3
	wrstuden-fixsa:1.3.0.16
	wrstuden-fixsa-base:1.3
	abandoned-netbsd-4-base:1.3
	abandoned-netbsd-4:1.3.0.10
	netbsd-3-1:1.3.0.12
	netbsd-3-1-RELEASE:1.3
	netbsd-3-0-2-RELEASE:1.3
	netbsd-3-1-RC4:1.3
	netbsd-3-1-RC3:1.3
	netbsd-3-1-RC2:1.3
	netbsd-3-1-RC1:1.3
	netbsd-4:1.3.0.14
	netbsd-4-base:1.3
	chap-midi-nbase:1.3
	netbsd-3-0-1-RELEASE:1.3
	chap-midi:1.3.0.8
	chap-midi-base:1.3
	netbsd-3-0:1.3.0.6
	netbsd-3-0-RELEASE:1.3
	netbsd-3-0-RC6:1.3
	netbsd-3-0-RC5:1.3
	netbsd-3-0-RC4:1.3
	netbsd-3-0-RC3:1.3
	netbsd-3-0-RC2:1.3
	netbsd-3-0-RC1:1.3
	netbsd-2-0-3-RELEASE:1.3.2.4
	netbsd-2-1:1.3.2.4.0.4
	netbsd-2-1-RELEASE:1.3.2.4
	netbsd-2-1-RC6:1.3.2.4
	netbsd-2-1-RC5:1.3.2.4
	netbsd-2-1-RC4:1.3.2.4
	netbsd-2-1-RC3:1.3.2.4
	netbsd-2-1-RC2:1.3.2.4
	netbsd-2-1-RC1:1.3.2.4
	netbsd-2-0-2-RELEASE:1.3.2.4
	netbsd-3:1.3.0.4
	netbsd-3-base:1.3
	netbsd-2-0-1-RELEASE:1.3.2.4
	netbsd-2:1.3.2.4.0.2
	netbsd-2-base:1.3.2.4
	netbsd-2-0-RELEASE:1.3.2.4
	netbsd-2-0-RC5:1.3.2.4
	netbsd-2-0-RC4:1.3.2.4
	netbsd-2-0-RC3:1.3.2.4
	netbsd-2-0-RC2:1.3.2.4
	netbsd-2-0-RC1:1.3.2.4
	netbsd-2-0:1.3.0.2;
locks; strict;
comment	@# @;


1.6
date	2014.08.21.13.44.51;	author apb;	state dead;
branches;
next	1.5;
commitid	PNRbDMs9XSDHweNx;

1.5
date	2011.03.06.00.02.14;	author sjg;	state Exp;
branches;
next	1.4;

1.4
date	2008.10.29.15.37.08;	author sjg;	state Exp;
branches;
next	1.3;

1.3
date	2004.04.13.16.06.23;	author sjg;	state Exp;
branches
	1.3.2.1;
next	1.2;

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

1.1
date	2004.04.08.00.59.01;	author sjg;	state Exp;
branches;
next	;

1.3.2.1
date	2004.04.13.16.06.23;	author tron;	state dead;
branches;
next	1.3.2.2;

1.3.2.2
date	2004.05.10.15.23.33;	author tron;	state Exp;
branches;
next	1.3.2.3;

1.3.2.3
date	2004.05.10.15.27.28;	author tron;	state Exp;
branches;
next	1.3.2.4;

1.3.2.4
date	2004.05.10.15.32.00;	author tron;	state Exp;
branches;
next	;


desc
@@


1.6
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
@# $Id: cond1,v 1.5 2011/03/06 00:02:14 sjg Exp $

# hard code these!
TEST_UNAME_S= NetBSD
TEST_UNAME_M= sparc
TEST_MACHINE= i386

.if ${TEST_UNAME_S}
Ok=var,
.endif
.if ("${TEST_UNAME_S}")
Ok+=(\"var\"),
.endif
.if (${TEST_UNAME_M} != ${TEST_MACHINE})
Ok+=(var != var),
.endif
.if ${TEST_UNAME_M} != ${TEST_MACHINE}
Ok+= var != var,
.endif
.if !((${TEST_UNAME_M} != ${TEST_MACHINE}) && defined(X))
Ok+= !((var != var) && defined(name)),
.endif
# from bsd.obj.mk
MKOBJ?=no
.if ${MKOBJ} == "no"
o= no
Ok+= var == "quoted",
.else
.if defined(notMAKEOBJDIRPREFIX) || defined(norMAKEOBJDIR)
.if defined(notMAKEOBJDIRPREFIX)
o=${MAKEOBJDIRPREFIX}${__curdir}
.else
o= ${MAKEOBJDIR}
.endif
.endif
o= o
.endif

# repeat the above to check we get the same result
.if ${MKOBJ} == "no"
o2= no
.else
.if defined(notMAKEOBJDIRPREFIX) || defined(norMAKEOBJDIR)
.if defined(notMAKEOBJDIRPREFIX)
o2=${MAKEOBJDIRPREFIX}${__curdir}
.else
o2= ${MAKEOBJDIR}
.endif
.endif
o2= o
.endif

PRIMES=2 3 5 7 11
NUMBERS=1 2 3 4 5

n=2
.if ${PRIMES:M$n} == ""
X=not
.else
X=
.endif

.if ${MACHINE_ARCH} == no-such
A=one
.else
.if ${MACHINE_ARCH} == not-this
.if ${MACHINE_ARCH} == something-else
A=unlikely
.else
A=no
.endif
.endif
A=other
# We expect an extra else warning - we're not skipping here
.else
A=this should be an error
.endif

.if $X != ""
.if $X == not
B=one
.else
B=other
# We expect an extra else warning - we are skipping here
.else
B=this should be an error
.endif
.else
B=unknown
.endif

.if "quoted" == quoted
C=clever
.else
C=dim
.endif

.if defined(nosuch) && ${nosuch:Mx} != ""
# this should not happen
.info nosuch is x
.endif

all:
	@@echo "$n is $X prime"
	@@echo "A='$A' B='$B' C='$C' o='$o,${o2}'"
	@@echo "Passed:${.newline} ${Ok:S/,/${.newline}/}"
	@@echo "${NUMBERS:@@n@@$n is ${("${PRIMES:M$n}" == ""):?not:} prime${.newline}@@}"
	@@echo "${"${DoNotQuoteHere:U0}" > 0:?OK:No}"
	@@echo "${${NoSuchNumber:U42} > 0:?OK:No}"
@


1.5
log
@Add unit tests to check that exists(some/dir/) works

Also fix handling of sysV substitutions when lhs and variable are empty.

Also that modifiers do not cause errors during conditional tests
when undefined variables should otherwise be ok.
Ie. .if defined(nosuch) && ${nosuch:Mx} != ""
@
text
@d1 1
a1 1
# $Id: cond1,v 1.4 2008/10/29 15:37:08 sjg Exp $
@


1.4
log
@If Parse_Error is called after curFile is invalid, set it to a dummy
to avoid seg-fault.  Also the NULL filename will cause ParseVErrorInternal
to skip trying to report file and line number info.

If CondToken is called outside the context of a .if etc, variables in
the expression being parsed will already be expanded, so allow for
an unqouted number to jump us back into the compare logic.
This allows ${${SomeNumber:U42} > 0:?True:False} to work anywhere.

Job_Finish should process postCommands if it has commands or children.
@
text
@d1 1
a1 1
# $Id: cond1,v 1.3 2004/04/13 16:06:23 sjg Exp $
d98 5
@


1.3
log
@Allow "string" and "${varspec}" on lhs of conditionals.
This makes it possible to use expressions like
${("${LIST:Msomething"}):?present:absent}
it also makes treatment of lhs and rhs more consistent, and
makes CondToken easier to read.

Update unit-test/cond1 to test new features.
@
text
@d1 1
a1 1
# $Id: cond1,v 1.2 2004/04/08 07:24:26 sjg Exp $
d103 2
@


1.3.2.1
log
@file cond1 was added on branch netbsd-2-0 on 2004-05-10 15:23:33 +0000
@
text
@d1 102
@


1.3.2.2
log
@Pull up revision 1.1 (requested by sjg in ticket #282):
Add check for extraneous .else's - based on patch from Arne H. Juul
in PR/24420.
Add a unit-test for conditionals.
Also in the unit-test makefile strip any .CURDIR in output.
PR: 24420
@
text
@a0 37
# $Id: cond1,v 1.3.2.1 2004/05/10 15:23:33 tron Exp $

PRIMES=2 3 5 7 11
NUMBERS=1 2 3 4 5

n=2
.if ${PRIMES:M$n} == ""
X=not
.else
X=
.endif

# We expect an extra else warning
.if ${MACHINE_ARCH} == no-such
A=one
.else
A=other
.else
A=this should be an error
.endif

# We expect an extra else warning
.if $X != ""
.if ${MACHINE_ARCH} == no-such
B=one
.else
B=other
.else
B=this should be an error
.endif
.else
B=unknown
.endif

all:
	@@echo "$n is $X prime"
	@@echo "A='$A' B='$B'"
@


1.3.2.3
log
@Pull up revision 1.2 (requested by sjg in ticket #282):
Revised patch for catching extraneous .else's
We actually need to tack condTop and skipIfLevel.
Bump MAXIF while here.
Enhance the unit-test for conditionals to exercise more code.
PR: 24420
@
text
@d1 1
a1 31
# $Id: cond1,v 1.3.2.2 2004/05/10 15:27:28 tron Exp $


# from bsd.obj.mk
MKOBJ?=no
.if ${MKOBJ} == "no"
o= no
.else
.if defined(notMAKEOBJDIRPREFIX) || defined(norMAKEOBJDIR)
.if defined(notMAKEOBJDIRPREFIX)
o=${MAKEOBJDIRPREFIX}${__curdir}
.else
o= ${MAKEOBJDIR}
.endif
.endif
o= o
.endif

# repeat the above to check we get the same result
.if ${MKOBJ} == "no"
o2= no
.else
.if defined(notMAKEOBJDIRPREFIX) || defined(norMAKEOBJDIR)
.if defined(notMAKEOBJDIRPREFIX)
o2=${MAKEOBJDIRPREFIX}${__curdir}
.else
o2= ${MAKEOBJDIR}
.endif
.endif
o2= o
.endif
d13 1
a16 7
.if ${MACHINE_ARCH} == not-this
.if ${MACHINE_ARCH} == something-else
A=unlikely
.else
A=no
.endif
.endif
a17 1
# We expect an extra else warning - we're not skipping here
d22 1
d24 1
a24 1
.if $X == not
a27 1
# We expect an extra else warning - we are skipping here
d37 1
a37 1
	@@echo "A='$A' B='$B' o='$o,${o2}'"
@


1.3.2.4
log
@Pull up revision 1.3 (requested by sjg in ticket #282):
Allow "string" and "${varspec}" on lhs of conditionals.
This makes it possible to use expressions like
${("${LIST:Msomething"}):?present:absent}
it also makes treatment of lhs and rhs more consistent, and
makes CondToken easier to read.
Update unit-test/cond1 to test new features.
@
text
@d1 1
a1 1
# $Id: cond1,v 1.3.2.3 2004/05/10 15:32:00 tron Exp $
a2 4
# hard code these!
TEST_UNAME_S= NetBSD
TEST_UNAME_M= sparc
TEST_MACHINE= i386
a3 15
.if ${TEST_UNAME_S}
Ok=var,
.endif
.if ("${TEST_UNAME_S}")
Ok+=(\"var\"),
.endif
.if (${TEST_UNAME_M} != ${TEST_MACHINE})
Ok+=(var != var),
.endif
.if ${TEST_UNAME_M} != ${TEST_MACHINE}
Ok+= var != var,
.endif
.if !((${TEST_UNAME_M} != ${TEST_MACHINE}) && defined(X))
Ok+= !((var != var) && defined(name)),
.endif
a7 1
Ok+= var == "quoted",
a71 6
.if "quoted" == quoted
C=clever
.else
C=dim
.endif

d74 1
a74 3
	@@echo "A='$A' B='$B' C='$C' o='$o,${o2}'"
	@@echo "Passed:${.newline} ${Ok:S/,/${.newline}/}"
	@@echo "${NUMBERS:@@n@@$n is ${("${PRIMES:M$n}" == ""):?not:} prime${.newline}@@}"
@


1.2
log
@Revised patch for catching extraneous .else's
We actually need to tack condTop and skipIfLevel.
Bump MAXIF while here.
Enhance the unit-test for conditionals to exercise more code.

PR: 24420
@
text
@d1 1
a1 1
# $Id: cond1,v 1.1 2004/04/08 00:59:01 sjg Exp $
d3 4
d8 15
d27 1
d92 6
d100 3
a102 1
	@@echo "A='$A' B='$B' o='$o,${o2}'"
@


1.1
log
@Add check for extraneous .else's - based on patch from Arne H. Juul
in PR/24420.
Add a unit-test for conditionals.
Also in the unit-test makefile strip any .CURDIR in output.

PR: 24420
@
text
@d1 31
a31 1
# $Id$
a42 1
# We expect an extra else warning
d46 7
d54 1
a58 1
# We expect an extra else warning
d60 1
a60 1
.if ${MACHINE_ARCH} == no-such
d64 1
d74 1
a74 1
	@@echo "A='$A' B='$B'"
@
