| @@ -1,21 +1,22 @@ | | | @@ -1,21 +1,22 @@ |
1 | # $Id: varmisc.mk,v 1.14 2020/07/26 11:10:29 rillig Exp $ | | 1 | # $Id: varmisc.mk,v 1.15 2020/07/26 20:30:42 rillig Exp $ |
2 | # | | 2 | # |
3 | # Miscellaneous variable tests. | | 3 | # Miscellaneous variable tests. |
4 | | | 4 | |
5 | all: unmatched_var_paren D_true U_true D_false U_false Q_lhs Q_rhs NQ_none \ | | 5 | all: unmatched_var_paren D_true U_true D_false U_false Q_lhs Q_rhs NQ_none \ |
6 | strftime cmpv manok | | 6 | strftime cmpv manok |
7 | all: save-dollars | | 7 | all: save-dollars |
8 | all: export-appended | | 8 | all: export-appended |
| | | 9 | all: parse-dynamic |
9 | | | 10 | |
10 | unmatched_var_paren: | | 11 | unmatched_var_paren: |
11 | @echo ${foo::=foo-text} | | 12 | @echo ${foo::=foo-text} |
12 | | | 13 | |
13 | True = ${echo true >&2:L:sh}TRUE | | 14 | True = ${echo true >&2:L:sh}TRUE |
14 | False= ${echo false >&2:L:sh}FALSE | | 15 | False= ${echo false >&2:L:sh}FALSE |
15 | | | 16 | |
16 | VSET= is set | | 17 | VSET= is set |
17 | .undef UNDEF | | 18 | .undef UNDEF |
18 | | | 19 | |
19 | U_false: | | 20 | U_false: |
20 | @echo :U skipped when var set | | 21 | @echo :U skipped when var set |
21 | @echo ${VSET:U${False}} | | 22 | @echo ${VSET:U${False}} |
| @@ -146,13 +147,30 @@ VAR.${param}= ${param} | | | @@ -146,13 +147,30 @@ VAR.${param}= ${param} |
146 | # The appended value is not exported automatically. | | 147 | # The appended value is not exported automatically. |
147 | # When a variable is exported, the exported value is taken at the time of the | | 148 | # When a variable is exported, the exported value is taken at the time of the |
148 | # .export directive. Later changes to the variable have no effect. | | 149 | # .export directive. Later changes to the variable have no effect. |
149 | .export FROM_ENV_BEFORE | | 150 | .export FROM_ENV_BEFORE |
150 | FROM_ENV+= mk | | 151 | FROM_ENV+= mk |
151 | FROM_ENV_BEFORE+= mk | | 152 | FROM_ENV_BEFORE+= mk |
152 | FROM_ENV_AFTER+= mk | | 153 | FROM_ENV_AFTER+= mk |
153 | .export FROM_ENV_AFTER | | 154 | .export FROM_ENV_AFTER |
154 | | | 155 | |
155 | export-appended: | | 156 | export-appended: |
156 | @echo $@: "$$FROM_ENV" | | 157 | @echo $@: "$$FROM_ENV" |
157 | @echo $@: "$$FROM_ENV_BEFORE" | | 158 | @echo $@: "$$FROM_ENV_BEFORE" |
158 | @echo $@: "$$FROM_ENV_AFTER" | | 159 | @echo $@: "$$FROM_ENV_AFTER" |
| | | 160 | |
| | | 161 | # begin parse-dynamic |
| | | 162 | # |
| | | 163 | # Demonstrate that the target-specific variables are not evaluated in |
| | | 164 | # the global context. They are preserved until there is a local context |
| | | 165 | # in which resolving them makes sense. |
| | | 166 | |
| | | 167 | ${:U>}= before |
| | | 168 | G_TARGET:= $@ |
| | | 169 | G_MEMBER:= $% |
| | | 170 | G_PREFIX:= $* |
| | | 171 | G_ARCHIVE:= $! |
| | | 172 | G_ALLSRC:= $> |
| | | 173 | ${:U>}= after |
| | | 174 | |
| | | 175 | parse-dynamic: |
| | | 176 | @echo $@: ${G_TARGET} ${G_MEMBER} ${G_PREFIX} ${G_ARCHIVE} ${G_ALLSRC} |