head	1.17;
access;
symbols
	netbsd-11-0-RC4:1.17
	netbsd-11-0-RC3:1.17
	netbsd-11-0-RC2:1.17
	netbsd-11-0-RC1:1.17
	perseant-exfatfs-base-20250801:1.17
	netbsd-11:1.17.0.2
	netbsd-11-base:1.17
	perseant-exfatfs-base-20240630:1.14
	perseant-exfatfs:1.14.0.2
	perseant-exfatfs-base:1.14;
locks; strict;
comment	@# @;


1.17
date	2025.04.11.17.21.31;	author rillig;	state Exp;
branches;
next	1.16;
commitid	htnYWDWLaFHuOEQF;

1.16
date	2024.08.07.05.48.45;	author rillig;	state Exp;
branches;
next	1.15;
commitid	47ynnDNk34RkTQkF;

1.15
date	2024.08.07.05.37.11;	author rillig;	state Exp;
branches;
next	1.14;
commitid	mde95flOZSqSQQkF;

1.14
date	2023.12.17.14.07.22;	author rillig;	state Exp;
branches
	1.14.2.1;
next	1.13;
commitid	yVK6h2wAREixcPQE;

1.13
date	2023.12.17.09.17.16;	author rillig;	state Exp;
branches;
next	1.12;
commitid	FmlqWMYRk4Z0BNQE;

1.12
date	2023.10.19.18.24.33;	author rillig;	state Exp;
branches;
next	1.11;
commitid	0JnzWxKfr6xmwgJE;

1.11
date	2023.08.11.04.56.31;	author rillig;	state Exp;
branches;
next	1.10;
commitid	VZpV45ImVxoCgkAE;

1.10
date	2023.06.21.21.21.52;	author sjg;	state Exp;
branches;
next	1.9;
commitid	wOMRvKFs89gqmRtE;

1.9
date	2023.06.21.14.33.36;	author rillig;	state Exp;
branches;
next	1.8;
commitid	XCK7a2a4VGNj5PtE;

1.8
date	2023.06.21.12.16.31;	author rillig;	state Exp;
branches;
next	1.7;
commitid	lstILJexF7m4jOtE;

1.7
date	2023.06.21.04.20.21;	author sjg;	state Exp;
branches;
next	1.6;
commitid	EfKbmxtxc7rYHLtE;

1.6
date	2023.06.20.09.25.34;	author rillig;	state Exp;
branches;
next	1.5;
commitid	lMxAjv5IExVfqFtE;

1.5
date	2023.06.19.20.07.35;	author rillig;	state Exp;
branches;
next	1.4;
commitid	dppelhPbjtSN0BtE;

1.4
date	2023.06.19.12.53.57;	author rillig;	state Exp;
branches;
next	1.3;
commitid	kNN3E5Z6q21iBytE;

1.3
date	2023.06.18.20.43.52;	author rillig;	state Exp;
branches;
next	1.2;
commitid	kHyU8ZUvC3pefttE;

1.2
date	2023.06.18.19.16.51;	author rillig;	state Exp;
branches;
next	1.1;
commitid	P6DDLUCNqjgqLstE;

1.1
date	2023.06.16.09.25.13;	author rillig;	state Exp;
branches;
next	;
commitid	UYlIXUqIf1Ooy9tE;

1.14.2.1
date	2025.08.02.05.58.34;	author perseant;	state Exp;
branches;
next	;
commitid	23j6GFaDws3O875G;


desc
@@


1.17
log
@make: convert more messages to the "file:123" format
@
text
@Parse_PushInput: variable-ifndef.tmp:1
Skipping 'variable-ifndef.tmp' because 'VARIABLE_IFNDEF' is defined
Parse_PushInput: variable-ifndef-reuse.tmp:1
Skipping 'variable-ifndef-reuse.tmp' because 'VARIABLE_IFNDEF' is defined
Parse_PushInput: variable-ifndef-zero.tmp:1
Parse_PushInput: variable-ifndef-zero.tmp:1
Parse_PushInput: variable-ifndef-one.tmp:1
Parse_PushInput: variable-ifndef-one.tmp:1
Parse_PushInput: comments.tmp:1
Skipping 'comments.tmp' because 'COMMENTS' is defined
Parse_PushInput: variable-if.tmp:1
Skipping 'variable-if.tmp' because 'VARIABLE_IF' is defined
Parse_PushInput: variable-if-reuse.tmp:1
Skipping 'variable-if-reuse.tmp' because 'VARIABLE_IF' is defined
Parse_PushInput: variable-if-triple-negation.tmp:1
Parse_PushInput: variable-if-triple-negation.tmp:1
Parse_PushInput: variable-if-spaced.tmp:1
Parse_PushInput: variable-if-spaced.tmp:1
Parse_PushInput: variable-if-parenthesized.tmp:1
Parse_PushInput: variable-if-parenthesized.tmp:1
Parse_PushInput: variable-ifdef-negated.tmp:1
Parse_PushInput: variable-ifdef-negated.tmp:1
Parse_PushInput: variable-name-mismatch.tmp:1
Parse_PushInput: variable-name-mismatch.tmp:1
Parse_PushInput: variable-ifndef-parenthesized.tmp:1
Parse_PushInput: variable-ifndef-parenthesized.tmp:1
Parse_PushInput: variable-name-exclamation.tmp:1
Parse_PushInput: variable-name-exclamation.tmp:1
Parse_PushInput: variable-name-exclamation-middle.tmp:1
Parse_PushInput: variable-name-exclamation-middle.tmp:1
Parse_PushInput: variable-name-parentheses.tmp:1
Parse_PushInput: variable-name-parentheses.tmp:1
Parse_PushInput: variable-ifndef-plus.tmp:1
Parse_PushInput: variable-ifndef-plus.tmp:1
Parse_PushInput: variable-if-plus.tmp:1
Parse_PushInput: variable-if-plus.tmp:1
Parse_PushInput: variable-ifndef-indirect.tmp:1
Parse_PushInput: variable-ifndef-indirect.tmp:1
Parse_PushInput: variable-if-indirect.tmp:1
Parse_PushInput: variable-if-indirect.tmp:1
Parse_PushInput: variable-assign-indirect.tmp:1
Skipping 'variable-assign-indirect.tmp' because 'VARIABLE_ASSIGN_INDIRECT' is defined
Parse_PushInput: variable-assign-late.tmp:1
Skipping 'variable-assign-late.tmp' because 'VARIABLE_ASSIGN_LATE' is defined
Parse_PushInput: variable-assign-nested.tmp:1
Parse_PushInput: .for loop in variable-assign-nested.tmp:3
Skipping 'variable-assign-nested.tmp' because 'VARIABLE_ASSIGN_NESTED' is defined
Parse_PushInput: variable-already-defined.tmp:1
Skipping 'variable-already-defined.tmp' because 'VARIABLE_ALREADY_DEFINED' is defined
Parse_PushInput: variable-defined-then-undefined.tmp:1
Parse_PushInput: variable-defined-then-undefined.tmp:1
Parse_PushInput: variable-two-times.tmp:1
Parse_PushInput: variable-two-times.tmp:1
Parse_PushInput: variable-clash.tmp:1
Skipping 'variable-clash.tmp' because 'VARIABLE_IF' is defined
Parse_PushInput: variable-swapped.tmp:1
Parse_PushInput: variable-swapped.tmp:1
Parse_PushInput: variable-undef-between.tmp:1
Parse_PushInput: variable-undef-between.tmp:1
Parse_PushInput: variable-undef-inside.tmp:1
Parse_PushInput: variable-undef-inside.tmp:1
Parse_PushInput: variable-not-defined.tmp:1
Parse_PushInput: variable-not-defined.tmp:1
Parse_PushInput: elif.tmp:1
Parse_PushInput: elif.tmp:1
Parse_PushInput: elif-reuse.tmp:1
Parse_PushInput: elif-reuse.tmp:1
Parse_PushInput: else.tmp:1
Parse_PushInput: else.tmp:1
Parse_PushInput: else-reuse.tmp:1
Parse_PushInput: else-reuse.tmp:1
Parse_PushInput: inner-if-elif-else.tmp:1
Skipping 'inner-if-elif-else.tmp' because 'INNER_IF_ELIF_ELSE' is defined
Parse_PushInput: target.tmp:1
Skipping 'target.tmp' because '__target.tmp__' is defined
Parse_PushInput: target-sys.tmp:1
Skipping 'target-sys.tmp' because '__<target-sys.tmp>__' is defined
Parse_PushInput: target-indirect.tmp:1
Skipping 'target-indirect.tmp' because 'target-indirect.tmp' is defined
Parse_PushInput: target-indirect-PARSEFILE.tmp:1
Skipping 'target-indirect-PARSEFILE.tmp' because '__target-indirect-PARSEFILE.tmp__' is defined
Parse_PushInput: target-indirect-PARSEFILE2.tmp:1
Skipping 'target-indirect-PARSEFILE2.tmp' because '__target-indirect-PARSEFILE2.tmp__' is defined
Parse_PushInput: subdir/target-indirect-PARSEFILE.tmp:1
Skipping 'subdir/target-indirect-PARSEFILE.tmp' because '__target-indirect-PARSEFILE.tmp__' is defined
Parse_PushInput: target-indirect-PARSEDIR-PARSEFILE.tmp:1
Skipping 'target-indirect-PARSEDIR-PARSEFILE.tmp' because '__target-indirect-PARSEDIR-PARSEFILE.tmp__' is defined
Parse_PushInput: subdir/target-indirect-PARSEDIR-PARSEFILE.tmp:1
Skipping 'subdir/target-indirect-PARSEDIR-PARSEFILE.tmp' because '__subdir/target-indirect-PARSEDIR-PARSEFILE.tmp__' is defined
Parse_PushInput: target-unguarded.tmp:1
Parse_PushInput: target-unguarded.tmp:1
Parse_PushInput: target-plus.tmp:1
Parse_PushInput: target-plus.tmp:1
Parse_PushInput: target-already-defined.tmp:1
Skipping 'target-already-defined.tmp' because 'target-already-defined' is defined
Parse_PushInput: target-name-exclamation.tmp:1
Parse_PushInput: target-name-exclamation.tmp:1
Parse_PushInput: target-name-leading-space.tmp:1
Parse_PushInput: target-name-leading-space.tmp:1
Parse_PushInput: target-name-trailing-space.tmp:1
Parse_PushInput: target-name-trailing-space.tmp:1
Parse_PushInput: target-call-parenthesized.tmp:1
Parse_PushInput: target-call-parenthesized.tmp:1
Parse_PushInput: multiline.tmp:1
Skipping 'multiline.tmp' because 'MULTILINE' is defined
exit status 0
@


1.16
log
@make: in erroneous conditions, report the non-expanded text

In a condition, when a function call expression is missing its closing
parenthesis, there's no point in having the expanded argument text in
the error message.

When parsing a bare word in a condition, the trailing space was included
in that word, which was inconsistent, as the leading space was not
included either.  Removing the trailing space from the word reduces the
cases where a multiple-inclusion guard steps in, but only in an edge
case that is irrelevant in practice.
@
text
@d1 1
a1 1
Parse_PushInput: file variable-ifndef.tmp, line 1
d3 1
a3 1
Parse_PushInput: file variable-ifndef-reuse.tmp, line 1
d5 5
a9 5
Parse_PushInput: file variable-ifndef-zero.tmp, line 1
Parse_PushInput: file variable-ifndef-zero.tmp, line 1
Parse_PushInput: file variable-ifndef-one.tmp, line 1
Parse_PushInput: file variable-ifndef-one.tmp, line 1
Parse_PushInput: file comments.tmp, line 1
d11 1
a11 1
Parse_PushInput: file variable-if.tmp, line 1
d13 1
a13 1
Parse_PushInput: file variable-if-reuse.tmp, line 1
d15 27
a41 27
Parse_PushInput: file variable-if-triple-negation.tmp, line 1
Parse_PushInput: file variable-if-triple-negation.tmp, line 1
Parse_PushInput: file variable-if-spaced.tmp, line 1
Parse_PushInput: file variable-if-spaced.tmp, line 1
Parse_PushInput: file variable-if-parenthesized.tmp, line 1
Parse_PushInput: file variable-if-parenthesized.tmp, line 1
Parse_PushInput: file variable-ifdef-negated.tmp, line 1
Parse_PushInput: file variable-ifdef-negated.tmp, line 1
Parse_PushInput: file variable-name-mismatch.tmp, line 1
Parse_PushInput: file variable-name-mismatch.tmp, line 1
Parse_PushInput: file variable-ifndef-parenthesized.tmp, line 1
Parse_PushInput: file variable-ifndef-parenthesized.tmp, line 1
Parse_PushInput: file variable-name-exclamation.tmp, line 1
Parse_PushInput: file variable-name-exclamation.tmp, line 1
Parse_PushInput: file variable-name-exclamation-middle.tmp, line 1
Parse_PushInput: file variable-name-exclamation-middle.tmp, line 1
Parse_PushInput: file variable-name-parentheses.tmp, line 1
Parse_PushInput: file variable-name-parentheses.tmp, line 1
Parse_PushInput: file variable-ifndef-plus.tmp, line 1
Parse_PushInput: file variable-ifndef-plus.tmp, line 1
Parse_PushInput: file variable-if-plus.tmp, line 1
Parse_PushInput: file variable-if-plus.tmp, line 1
Parse_PushInput: file variable-ifndef-indirect.tmp, line 1
Parse_PushInput: file variable-ifndef-indirect.tmp, line 1
Parse_PushInput: file variable-if-indirect.tmp, line 1
Parse_PushInput: file variable-if-indirect.tmp, line 1
Parse_PushInput: file variable-assign-indirect.tmp, line 1
d43 1
a43 1
Parse_PushInput: file variable-assign-late.tmp, line 1
d45 2
a46 2
Parse_PushInput: file variable-assign-nested.tmp, line 1
Parse_PushInput: .for loop in variable-assign-nested.tmp, line 3
d48 1
a48 1
Parse_PushInput: file variable-already-defined.tmp, line 1
d50 5
a54 5
Parse_PushInput: file variable-defined-then-undefined.tmp, line 1
Parse_PushInput: file variable-defined-then-undefined.tmp, line 1
Parse_PushInput: file variable-two-times.tmp, line 1
Parse_PushInput: file variable-two-times.tmp, line 1
Parse_PushInput: file variable-clash.tmp, line 1
d56 17
a72 17
Parse_PushInput: file variable-swapped.tmp, line 1
Parse_PushInput: file variable-swapped.tmp, line 1
Parse_PushInput: file variable-undef-between.tmp, line 1
Parse_PushInput: file variable-undef-between.tmp, line 1
Parse_PushInput: file variable-undef-inside.tmp, line 1
Parse_PushInput: file variable-undef-inside.tmp, line 1
Parse_PushInput: file variable-not-defined.tmp, line 1
Parse_PushInput: file variable-not-defined.tmp, line 1
Parse_PushInput: file elif.tmp, line 1
Parse_PushInput: file elif.tmp, line 1
Parse_PushInput: file elif-reuse.tmp, line 1
Parse_PushInput: file elif-reuse.tmp, line 1
Parse_PushInput: file else.tmp, line 1
Parse_PushInput: file else.tmp, line 1
Parse_PushInput: file else-reuse.tmp, line 1
Parse_PushInput: file else-reuse.tmp, line 1
Parse_PushInput: file inner-if-elif-else.tmp, line 1
d74 1
a74 1
Parse_PushInput: file target.tmp, line 1
d76 1
a76 1
Parse_PushInput: file target-sys.tmp, line 1
d78 1
a78 1
Parse_PushInput: file target-indirect.tmp, line 1
d80 1
a80 1
Parse_PushInput: file target-indirect-PARSEFILE.tmp, line 1
d82 1
a82 1
Parse_PushInput: file target-indirect-PARSEFILE2.tmp, line 1
d84 1
a84 1
Parse_PushInput: file subdir/target-indirect-PARSEFILE.tmp, line 1
d86 1
a86 1
Parse_PushInput: file target-indirect-PARSEDIR-PARSEFILE.tmp, line 1
d88 1
a88 1
Parse_PushInput: file subdir/target-indirect-PARSEDIR-PARSEFILE.tmp, line 1
d90 5
a94 5
Parse_PushInput: file target-unguarded.tmp, line 1
Parse_PushInput: file target-unguarded.tmp, line 1
Parse_PushInput: file target-plus.tmp, line 1
Parse_PushInput: file target-plus.tmp, line 1
Parse_PushInput: file target-already-defined.tmp, line 1
d96 9
a104 9
Parse_PushInput: file target-name-exclamation.tmp, line 1
Parse_PushInput: file target-name-exclamation.tmp, line 1
Parse_PushInput: file target-name-leading-space.tmp, line 1
Parse_PushInput: file target-name-leading-space.tmp, line 1
Parse_PushInput: file target-name-trailing-space.tmp, line 1
Parse_PushInput: file target-name-trailing-space.tmp, line 1
Parse_PushInput: file target-call-parenthesized.tmp, line 1
Parse_PushInput: file target-call-parenthesized.tmp, line 1
Parse_PushInput: file multiline.tmp, line 1
@


1.15
log
@tests/make: demonstrate unintended parsing of words in conditions

A word is not supposed to include its trailing space, as it doesn't
contain its leading space either.
@
text
@d101 1
a101 1
Skipping 'target-name-trailing-space.tmp' because 'target-name-trailing-space' is defined
@


1.14
log
@tests/make: extend tests for include guards and empty expressions
@
text
@d98 4
a101 2
Parse_PushInput: file target-name-parenthesized.tmp, line 1
Parse_PushInput: file target-name-parenthesized.tmp, line 1
@


1.14.2.1
log
@Sync with HEAD
@
text
@d1 1
a1 1
Parse_PushInput: variable-ifndef.tmp:1
d3 1
a3 1
Parse_PushInput: variable-ifndef-reuse.tmp:1
d5 5
a9 5
Parse_PushInput: variable-ifndef-zero.tmp:1
Parse_PushInput: variable-ifndef-zero.tmp:1
Parse_PushInput: variable-ifndef-one.tmp:1
Parse_PushInput: variable-ifndef-one.tmp:1
Parse_PushInput: comments.tmp:1
d11 1
a11 1
Parse_PushInput: variable-if.tmp:1
d13 1
a13 1
Parse_PushInput: variable-if-reuse.tmp:1
d15 27
a41 27
Parse_PushInput: variable-if-triple-negation.tmp:1
Parse_PushInput: variable-if-triple-negation.tmp:1
Parse_PushInput: variable-if-spaced.tmp:1
Parse_PushInput: variable-if-spaced.tmp:1
Parse_PushInput: variable-if-parenthesized.tmp:1
Parse_PushInput: variable-if-parenthesized.tmp:1
Parse_PushInput: variable-ifdef-negated.tmp:1
Parse_PushInput: variable-ifdef-negated.tmp:1
Parse_PushInput: variable-name-mismatch.tmp:1
Parse_PushInput: variable-name-mismatch.tmp:1
Parse_PushInput: variable-ifndef-parenthesized.tmp:1
Parse_PushInput: variable-ifndef-parenthesized.tmp:1
Parse_PushInput: variable-name-exclamation.tmp:1
Parse_PushInput: variable-name-exclamation.tmp:1
Parse_PushInput: variable-name-exclamation-middle.tmp:1
Parse_PushInput: variable-name-exclamation-middle.tmp:1
Parse_PushInput: variable-name-parentheses.tmp:1
Parse_PushInput: variable-name-parentheses.tmp:1
Parse_PushInput: variable-ifndef-plus.tmp:1
Parse_PushInput: variable-ifndef-plus.tmp:1
Parse_PushInput: variable-if-plus.tmp:1
Parse_PushInput: variable-if-plus.tmp:1
Parse_PushInput: variable-ifndef-indirect.tmp:1
Parse_PushInput: variable-ifndef-indirect.tmp:1
Parse_PushInput: variable-if-indirect.tmp:1
Parse_PushInput: variable-if-indirect.tmp:1
Parse_PushInput: variable-assign-indirect.tmp:1
d43 1
a43 1
Parse_PushInput: variable-assign-late.tmp:1
d45 2
a46 2
Parse_PushInput: variable-assign-nested.tmp:1
Parse_PushInput: .for loop in variable-assign-nested.tmp:3
d48 1
a48 1
Parse_PushInput: variable-already-defined.tmp:1
d50 5
a54 5
Parse_PushInput: variable-defined-then-undefined.tmp:1
Parse_PushInput: variable-defined-then-undefined.tmp:1
Parse_PushInput: variable-two-times.tmp:1
Parse_PushInput: variable-two-times.tmp:1
Parse_PushInput: variable-clash.tmp:1
d56 17
a72 17
Parse_PushInput: variable-swapped.tmp:1
Parse_PushInput: variable-swapped.tmp:1
Parse_PushInput: variable-undef-between.tmp:1
Parse_PushInput: variable-undef-between.tmp:1
Parse_PushInput: variable-undef-inside.tmp:1
Parse_PushInput: variable-undef-inside.tmp:1
Parse_PushInput: variable-not-defined.tmp:1
Parse_PushInput: variable-not-defined.tmp:1
Parse_PushInput: elif.tmp:1
Parse_PushInput: elif.tmp:1
Parse_PushInput: elif-reuse.tmp:1
Parse_PushInput: elif-reuse.tmp:1
Parse_PushInput: else.tmp:1
Parse_PushInput: else.tmp:1
Parse_PushInput: else-reuse.tmp:1
Parse_PushInput: else-reuse.tmp:1
Parse_PushInput: inner-if-elif-else.tmp:1
d74 1
a74 1
Parse_PushInput: target.tmp:1
d76 1
a76 1
Parse_PushInput: target-sys.tmp:1
d78 1
a78 1
Parse_PushInput: target-indirect.tmp:1
d80 1
a80 1
Parse_PushInput: target-indirect-PARSEFILE.tmp:1
d82 1
a82 1
Parse_PushInput: target-indirect-PARSEFILE2.tmp:1
d84 1
a84 1
Parse_PushInput: subdir/target-indirect-PARSEFILE.tmp:1
d86 1
a86 1
Parse_PushInput: target-indirect-PARSEDIR-PARSEFILE.tmp:1
d88 1
a88 1
Parse_PushInput: subdir/target-indirect-PARSEDIR-PARSEFILE.tmp:1
d90 5
a94 5
Parse_PushInput: target-unguarded.tmp:1
Parse_PushInput: target-unguarded.tmp:1
Parse_PushInput: target-plus.tmp:1
Parse_PushInput: target-plus.tmp:1
Parse_PushInput: target-already-defined.tmp:1
d96 7
a102 9
Parse_PushInput: target-name-exclamation.tmp:1
Parse_PushInput: target-name-exclamation.tmp:1
Parse_PushInput: target-name-leading-space.tmp:1
Parse_PushInput: target-name-leading-space.tmp:1
Parse_PushInput: target-name-trailing-space.tmp:1
Parse_PushInput: target-name-trailing-space.tmp:1
Parse_PushInput: target-call-parenthesized.tmp:1
Parse_PushInput: target-call-parenthesized.tmp:1
Parse_PushInput: multiline.tmp:1
@


1.13
log
@tests/make: add tests for spacing in multiple-inclusion guards
@
text
@d102 2
@


1.12
log
@tests/make: clean up, explain and reorganize several tests
@
text
@d17 4
d25 2
d98 4
@


1.11
log
@make: clean up multiple-inclusion guards

No functional change.
@
text
@d5 4
@


1.10
log
@Cleanup guard tests

The .PARSEFILE:tA tests add no value, the correct form
is ${.PARSEDIR:tA}/${.PARSEFILE} but even there :tA rarely matters.
@
text
@d54 8
a61 8
Parse_PushInput: file if-elif.tmp, line 1
Parse_PushInput: file if-elif.tmp, line 1
Parse_PushInput: file if-elif-reuse.tmp, line 1
Parse_PushInput: file if-elif-reuse.tmp, line 1
Parse_PushInput: file if-else.tmp, line 1
Parse_PushInput: file if-else.tmp, line 1
Parse_PushInput: file if-else-reuse.tmp, line 1
Parse_PushInput: file if-else-reuse.tmp, line 1
@


1.9
log
@make: skip a file protected by a multiple-inclusion guard more often

In practice, the common situation is that a file is first included,
defines its multiple-inclusion guard and is then skipped instead of
being included again.

The other way round is that the multiple-inclusion guard is defined when
the file is included first.  In that case, the file is now regarded as
guarded as well.
@
text
@a75 6
Parse_PushInput: file target-indirect-PARSEFILE-tA.tmp, line 1
Skipping 'target-indirect-PARSEFILE-tA.tmp' because '__target-indirect-PARSEFILE-tA.tmp__' is defined
Parse_PushInput: file subdir/target-indirect-PARSEFILE-tA.tmp, line 1
Skipping 'subdir/target-indirect-PARSEFILE-tA.tmp' because '__target-indirect-PARSEFILE-tA.tmp__' is defined
Parse_PushInput: file subdir2/target-indirect-PARSEFILE-tA.tmp, line 1
Skipping 'subdir2/target-indirect-PARSEFILE-tA.tmp' because '__target-indirect-PARSEFILE-tA.tmp__' is defined
@


1.8
log
@tests/make: clean up and extend tests for multiple-inclusion guards

Multiple-inclusion guards can be defined either as variables or as
targets.  Rename the variable tests so they include the word 'variable'.

Add tests to cover special characters in guard names (both variable and
target), just in case ParseVarnameGuard gets removed someday.

Document the pitfalls associated with choosing a naming scheme for
guards that leads to name clashes, such as with .PARSEFILE without
.PARSEDIR.
@
text
@d3 2
d9 2
d39 3
a41 1
Parse_PushInput: file variable-already-defined.tmp, line 1
d45 1
a45 1
Parse_PushInput: file variable-clash.tmp, line 1
d56 2
d60 2
d75 1
a75 1
Parse_PushInput: file subdir/target-indirect-PARSEFILE.tmp, line 1
d81 1
a81 1
Parse_PushInput: file subdir2/target-indirect-PARSEFILE-tA.tmp, line 1
d90 2
a91 2
Parse_PushInput: file target-already-set.tmp, line 1
Parse_PushInput: file target-already-set.tmp, line 1
@


1.7
log
@Allow guard targets to use variables.

I commonly use __${.PARSEDIR:tA}__ where a unique guard
is needed, __${.PARSEDIR}__ is also useful in many cases.

Combination of patch from rillig and mine
@
text
@d1 2
a2 2
Parse_PushInput: file guarded-ifndef.tmp, line 1
Skipping 'guarded-ifndef.tmp' because 'GUARDED_IFNDEF' is defined
d5 43
a47 34
Parse_PushInput: file guarded-if.tmp, line 1
Skipping 'guarded-if.tmp' because 'GUARDED_IF' is defined
Parse_PushInput: file triple-negation.tmp, line 1
Parse_PushInput: file triple-negation.tmp, line 1
Parse_PushInput: file ifdef-negated.tmp, line 1
Parse_PushInput: file ifdef-negated.tmp, line 1
Parse_PushInput: file varname-mismatch.tmp, line 1
Parse_PushInput: file varname-mismatch.tmp, line 1
Parse_PushInput: file ifndef-plus.tmp, line 1
Parse_PushInput: file ifndef-plus.tmp, line 1
Parse_PushInput: file if-plus.tmp, line 1
Parse_PushInput: file if-plus.tmp, line 1
Parse_PushInput: file ifndef-indirect.tmp, line 1
Parse_PushInput: file ifndef-indirect.tmp, line 1
Parse_PushInput: file if-indirect.tmp, line 1
Parse_PushInput: file if-indirect.tmp, line 1
Parse_PushInput: file varassign-indirect.tmp, line 1
Skipping 'varassign-indirect.tmp' because 'VARASSIGN_INDIRECT' is defined
Parse_PushInput: file late-assignment.tmp, line 1
Skipping 'late-assignment.tmp' because 'LATE_ASSIGNMENT' is defined
Parse_PushInput: file two-conditions.tmp, line 1
Skipping 'two-conditions.tmp' because 'TWO_CONDITIONS' is defined
Parse_PushInput: file already-set.tmp, line 1
Parse_PushInput: file already-set.tmp, line 1
Parse_PushInput: file twice.tmp, line 1
Parse_PushInput: file twice.tmp, line 1
Parse_PushInput: file reuse.tmp, line 1
Parse_PushInput: file reuse.tmp, line 1
Parse_PushInput: file swapped.tmp, line 1
Parse_PushInput: file swapped.tmp, line 1
Parse_PushInput: file undef-between.tmp, line 1
Parse_PushInput: file undef-between.tmp, line 1
Parse_PushInput: file undef-inside.tmp, line 1
Parse_PushInput: file undef-inside.tmp, line 1
d64 2
d68 8
d82 2
@


1.6
log
@make: allow targets to be used as multiple-inclusion guards

This style is used by FreeBSD, among others.
@
text
@d50 7
a56 1
Parse_PushInput: file target-indirect.tmp, line 1
@


1.5
log
@make: add tests for full code coverage of multiple-inclusion guards
@
text
@d2 1
a2 1
Skipping 'guarded-ifndef.tmp' because 'GUARDED_IFNDEF' is already set
d4 1
a4 1
Skipping 'comments.tmp' because 'COMMENTS' is already set
d6 1
a6 1
Skipping 'guarded-if.tmp' because 'GUARDED_IF' is already set
d22 1
a22 1
Skipping 'varassign-indirect.tmp' because 'VARASSIGN_INDIRECT' is already set
d24 1
a24 1
Skipping 'late-assignment.tmp' because 'LATE_ASSIGNMENT' is already set
d26 1
a26 1
Skipping 'two-conditions.tmp' because 'TWO_CONDITIONS' is already set
d44 13
a56 1
Skipping 'inner-if-elif-else.tmp' because 'INNER_IF_ELIF_ELSE' is already set
@


1.4
log
@make: if a makefile is protected by a guard, only include it once

"looks reasonable" sjg@@
@
text
@d9 2
d13 10
a22 2
Parse_PushInput: file varname-indirect.tmp, line 1
Skipping 'varname-indirect.tmp' because 'VARNAME_INDIRECT' is already set
@


1.3
log
@tests/make: clean up test for multiple-inclusion guards
@
text
@d2 1
a2 1
Parse_PushInput: file guarded-ifndef.tmp, line 1
d4 1
a4 2
Parse_PushInput: file comments.tmp, line 1
Parse_PushInput: file guarded-if.tmp, line 1
d6 1
d12 1
a12 1
Parse_PushInput: file varname-indirect.tmp, line 1
d14 1
a14 2
Parse_PushInput: file late-assignment.tmp, line 1
Parse_PushInput: file two-conditions.tmp, line 1
d16 1
d34 1
a34 1
Parse_PushInput: file inner-if-elif-else.tmp, line 1
@


1.2
log
@tests/make: extend test for multiple-inclusion guards
@
text
@d1 34
a34 34
Parse_PushInput: file directive-include-guard-guarded-ifndef.tmp, line 1
Parse_PushInput: file directive-include-guard-guarded-ifndef.tmp, line 1
Parse_PushInput: file directive-include-guard-comments.tmp, line 1
Parse_PushInput: file directive-include-guard-comments.tmp, line 1
Parse_PushInput: file directive-include-guard-guarded-if.tmp, line 1
Parse_PushInput: file directive-include-guard-guarded-if.tmp, line 1
Parse_PushInput: file directive-include-guard-triple-negation.tmp, line 1
Parse_PushInput: file directive-include-guard-triple-negation.tmp, line 1
Parse_PushInput: file directive-include-guard-varname-mismatch.tmp, line 1
Parse_PushInput: file directive-include-guard-varname-mismatch.tmp, line 1
Parse_PushInput: file directive-include-guard-varname-indirect.tmp, line 1
Parse_PushInput: file directive-include-guard-varname-indirect.tmp, line 1
Parse_PushInput: file directive-include-guard-late-assignment.tmp, line 1
Parse_PushInput: file directive-include-guard-late-assignment.tmp, line 1
Parse_PushInput: file directive-include-guard-two-conditions.tmp, line 1
Parse_PushInput: file directive-include-guard-two-conditions.tmp, line 1
Parse_PushInput: file directive-include-guard-already-set.tmp, line 1
Parse_PushInput: file directive-include-guard-already-set.tmp, line 1
Parse_PushInput: file directive-include-guard-twice.tmp, line 1
Parse_PushInput: file directive-include-guard-twice.tmp, line 1
Parse_PushInput: file directive-include-guard-reuse.tmp, line 1
Parse_PushInput: file directive-include-guard-reuse.tmp, line 1
Parse_PushInput: file directive-include-guard-swapped.tmp, line 1
Parse_PushInput: file directive-include-guard-swapped.tmp, line 1
Parse_PushInput: file directive-include-guard-undef-between.tmp, line 1
Parse_PushInput: file directive-include-guard-undef-between.tmp, line 1
Parse_PushInput: file directive-include-guard-undef-inside.tmp, line 1
Parse_PushInput: file directive-include-guard-undef-inside.tmp, line 1
Parse_PushInput: file directive-include-guard-if-elif.tmp, line 1
Parse_PushInput: file directive-include-guard-if-elif.tmp, line 1
Parse_PushInput: file directive-include-guard-if-else.tmp, line 1
Parse_PushInput: file directive-include-guard-if-else.tmp, line 1
Parse_PushInput: file directive-include-guard-inner-if-elif-else.tmp, line 1
Parse_PushInput: file directive-include-guard-inner-if-elif-else.tmp, line 1
@


1.1
log
@tests/make: add test for multiple-inclusion guards
@
text
@d25 10
@

