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