varmod-order.mk revision 1.9 1 # $NetBSD: varmod-order.mk,v 1.9 2023/02/26 06:08:06 rillig Exp $
2 #
3 # Tests for the :O variable modifier and its variants, which either sort the
4 # words of the value or shuffle them.
5
6 WORDS= one two three four five six seven eight nine ten
7 NUMBERS= 8 5 4 9 1 7 6 10 3 2 # in English alphabetical order
8
9 .if ${WORDS:O} != "eight five four nine one seven six ten three two"
10 . error ${WORDS:O}
11 .endif
12
13 # Unknown modifier "OX"
14 _:= ${WORDS:OX}
15
16 # Unknown modifier "OxXX"
17 _:= ${WORDS:OxXX}
18
19 # Missing closing brace, to cover the error handling code.
20 _:= ${WORDS:O
21 _:= ${NUMBERS:On
22 _:= ${NUMBERS:Onr
23
24 # Shuffling numerically doesn't make sense, so don't allow 'x' and 'n' to be
25 # combined.
26 #
27 # expect: make: Bad modifier ":Oxn" for variable "NUMBERS"
28 # expect+1: Malformed conditional (${NUMBERS:Oxn})
29 .if ${NUMBERS:Oxn}
30 . error
31 .else
32 . error
33 .endif
34
35 # Extra characters after ':On' are detected and diagnosed.
36 # TODO: Add line number information to the "Bad modifier" diagnostic.
37 #
38 # expect: make: Bad modifier ":On_typo" for variable "NUMBERS"
39 .if ${NUMBERS:On_typo}
40 . error
41 .else
42 . error
43 .endif
44
45 # Extra characters after ':Onr' are detected and diagnosed.
46 #
47 # expect: make: Bad modifier ":Onr_typo" for variable "NUMBERS"
48 .if ${NUMBERS:Onr_typo}
49 . error
50 .else
51 . error
52 .endif
53
54 # Extra characters after ':Orn' are detected and diagnosed.
55 #
56 # expect: make: Bad modifier ":Orn_typo" for variable "NUMBERS"
57 .if ${NUMBERS:Orn_typo}
58 . error
59 .else
60 . error
61 .endif
62
63 # Repeating the 'n' is not supported. In the typical use cases, the sorting
64 # criteria are fixed, not computed, therefore allowing this redundancy does
65 # not make sense.
66 #
67 # expect: make: Bad modifier ":Onn" for variable "NUMBERS"
68 .if ${NUMBERS:Onn}
69 . error
70 .else
71 . error
72 .endif
73
74 # Repeating the 'r' is not supported as well, for the same reasons as above.
75 #
76 # expect: make: Bad modifier ":Onrr" for variable "NUMBERS"
77 .if ${NUMBERS:Onrr}
78 . error
79 .else
80 . error
81 .endif
82
83 # Repeating the 'r' is not supported as well, for the same reasons as above.
84 #
85 # expect: make: Bad modifier ":Orrn" for variable "NUMBERS"
86 .if ${NUMBERS:Orrn}
87 . error
88 .else
89 . error
90 .endif
91
92
93 # Any modifier that starts with 'O' either sorts or shuffles the words. Other
94 # than for many other modifiers, there is no fallback to the SysV modifier
95 # ':from=to'.
96 .if ${SWITCH:UOn:On=Off} != "Off"
97 . error
98 .else
99 . error
100 .endif
101
102 all:
103