blob: a92d3a8961164cae5d82534d2575a313d37f6be4 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
|
# $NetBSD: cond-token-string.mk,v 1.4 2021/01/21 00:38:28 rillig Exp $
#
# Tests for quoted string literals in .if conditions.
#
# See also:
# cond-token-plain.mk
# Covers string literals without quotes (called "bare words").
# TODO: Implementation
# Cover the code in CondParser_String that frees the memory after parsing
# a variable expression based on an undefined variable.
.if "" != "${:Uvalue:Z}"
. error
.else
. error
.endif
.if x${:Uvalue}
. error
.else
. info xvalue is not defined.
.endif
# The 'x' produces a "Malformed conditional" since the left-hand side of a
# comparison in an .if directive must be either a variable expression, a
# quoted string literal or a number that starts with a digit.
.if x${:Uvalue} == ""
. error
.else
. error
.endif
# In plain words, a '\' can be used to escape any character, just as in
# double-quoted string literals. See CondParser_String.
.if \x${:Uvalue} == "xvalue"
. info Expected.
.else
. error
.endif
.MAKEFLAGS: -dc
# A string in quotes is checked whether it is not empty.
.if "UNDEF"
. info The string literal "UNDEF" is not empty.
.else
. error
.endif
# A space is not empty as well.
# This differs from many other places where whitespace is trimmed.
.if " "
. info The string literal " " is not empty, even though it consists of $\
whitespace only.
.else
. error
.endif
.if "${UNDEF}"
. error
.else
. info An undefined variable in quotes expands to an empty string, which $\
then evaluates to false.
.endif
.if "${:Uvalue}"
. info A nonempty variable expression evaluates to true.
.else
. error
.endif
.if "${:U}"
. error
.else
. info An empty variable evaluates to false.
.endif
.MAKEFLAGS: -d0
all:
@:;
|