xref: /freebsd/contrib/bmake/unit-tests/posix1.exp (revision 0b3105a37d7adcadcb720112fed4dc4e8040be99)
1${VAR} = "foo  bar baz"
2a
3b
4c
5foo baR baz,  bar baz, foo bar baz, fooadd baradd bazadd
6mkdir -p 'dir'
7touch 'dir/obj_1.h'
8mkdir -p 'dir'
9printf '#include "obj_1.h"\nconst char* obj_1 = "dir/obj_1.c";\n' \
10    >'dir/obj_1.c'
11Local variables
12 ${@}="dir/obj_1.o" ${<}="dir/obj_1.c"
13 ${*}="dir/obj_1" ${?}="dir/obj_1.h dir/obj_1.c"
14 ${%}=""
15
16Directory and filename parts of local variables
17 ${@D}="dir" ${@F}="obj_1.o"
18 ${<D}="dir" ${<F}="obj_1.c"
19 ${*D}="dir" ${*F}="obj_1"
20 ${?D}="dir dir" ${?F}="obj_1.h obj_1.c"
21 ${%D}="" ${%F}=""
22
23Local variable substitutions
24 ${@:.o=}="dir/obj_1" ${<:.c=.C}="dir/obj_1.C"
25 ${*:=.h}="dir/obj_1.h" ${?:.h=.H}="dir/obj_1.H dir/obj_1.c"
26 ${%:=}=""
27
28Target with suffix transformations
29 ${@D:=append}="dirappend"
30 ${@F:.o=.O}="obj_1.O"
31
32 Implied source with suffix transformations
33 ${<D:r=rr}="dirr"
34 ${<F:.c=.C}="obj_1.C"
35
36 Suffixless target with suffix transformations
37 ${*D:.=dot}="dir"
38 ${*F:.a=}="obj_1"
39
40 Out-of-date dependencies with suffix transformations
41 ${?D:ir=}="d d"
42 ${?F:.h=.H}="obj_1.H obj_1.c"
43
44 Member with suffix transformations
45 ${%D:.=}=""
46 ${%F:${VAR2}=${VAR}}=""
47
48cc -c -o 'dir/obj_1.o' 'dir/obj_1.c'
49mkdir -p '.'
50touch 'dummy'
51Local variables
52 ${@}="lib.a" ${<}="dir/obj_1.o"
53 ${*}="obj1" ${?}="dir/obj_1.o dummy"
54 ${%}="obj1.o"
55
56Directory and filename parts of local variables
57 ${@D}="." ${@F}="lib.a"
58 ${<D}="dir" ${<F}="obj_1.o"
59 ${*D}="." ${*F}="obj1"
60 ${?D}="dir ." ${?F}="obj_1.o dummy"
61 ${%D}="." ${%F}="obj1.o"
62
63Local variable substitutions
64 ${@:.o=}="lib.a" ${<:.c=.C}="dir/obj_1.o"
65 ${*:=.h}="obj1.h" ${?:.h=.H}="dir/obj_1.o dummy"
66 ${%:=}="obj1.o"
67
68Target with suffix transformations
69 ${@D:=append}=".append"
70 ${@F:.o=.O}="lib.a"
71
72 Implied source with suffix transformations
73 ${<D:r=rr}="dirr"
74 ${<F:.c=.C}="obj_1.o"
75
76 Suffixless target with suffix transformations
77 ${*D:.=dot}="dot"
78 ${*F:.a=}="obj1"
79
80 Out-of-date dependencies with suffix transformations
81 ${?D:ir=}="d ."
82 ${?F:.h=.H}="obj_1.o dummy"
83
84 Member with suffix transformations
85 ${%D:.=}=""
86 ${%F:${VAR2}=${VAR}}="obj1foo  bar baz"
87
88cp 'dir/obj_1.o' 'obj1.o'
89ar -rcv 'lib.a' 'obj1.o'
90a - obj1.o
91rm -f 'obj1.o'
92mkdir -p '.'
93printf '#include "obj_2.h"\nconst char* obj_2 = "obj_2.c";\n' \
94    >'obj_2.c'
95mkdir -p '.'
96touch 'obj_2.h'
97Local variables
98 ${@}="obj2.o" ${<}="obj_2.c"
99 ${*}="obj2" ${?}="obj_2.c obj_2.h dir/obj_1.h"
100 ${%}=""
101
102Directory and filename parts of local variables
103 ${@D}="." ${@F}="obj2.o"
104 ${<D}="." ${<F}="obj_2.c"
105 ${*D}="." ${*F}="obj2"
106 ${?D}=". . dir" ${?F}="obj_2.c obj_2.h obj_1.h"
107 ${%D}="" ${%F}=""
108
109Local variable substitutions
110 ${@:.o=}="obj2" ${<:.c=.C}="obj_2.C"
111 ${*:=.h}="obj2.h" ${?:.h=.H}="obj_2.c obj_2.H dir/obj_1.H"
112 ${%:=}=""
113
114Target with suffix transformations
115 ${@D:=append}=".append"
116 ${@F:.o=.O}="obj2.O"
117
118 Implied source with suffix transformations
119 ${<D:r=rr}="."
120 ${<F:.c=.C}="obj_2.C"
121
122 Suffixless target with suffix transformations
123 ${*D:.=dot}="dot"
124 ${*F:.a=}="obj2"
125
126 Out-of-date dependencies with suffix transformations
127 ${?D:ir=}=". . d"
128 ${?F:.h=.H}="obj_2.c obj_2.H obj_1.H"
129
130 Member with suffix transformations
131 ${%D:.=}=""
132 ${%F:${VAR2}=${VAR}}=""
133
134cc -c -o 'obj2.o' 'obj_2.c'
135ar -rcv 'lib.a' 'obj2.o'
136a - obj2.o
137mkdir -p '.'
138touch 'obj3.h'
139mkdir -p 'dir'
140touch 'dir/dummy'
141mkdir -p '.'
142printf '#include "obj3.h"\nconst char* obj3 = "obj3.c";\n' \
143    >'obj3.c'
144Local variables
145 ${@}="lib.a" ${<}="obj3.c"
146 ${*}="obj3" ${?}="obj3.h dir/dummy obj3.c"
147 ${%}="obj3.o"
148
149Directory and filename parts of local variables
150 ${@D}="." ${@F}="lib.a"
151 ${<D}="." ${<F}="obj3.c"
152 ${*D}="." ${*F}="obj3"
153 ${?D}=". dir ." ${?F}="obj3.h dummy obj3.c"
154 ${%D}="." ${%F}="obj3.o"
155
156Local variable substitutions
157 ${@:.o=}="lib.a" ${<:.c=.C}="obj3.C"
158 ${*:=.h}="obj3.h" ${?:.h=.H}="obj3.H dir/dummy obj3.c"
159 ${%:=}="obj3.o"
160
161Target with suffix transformations
162 ${@D:=append}=".append"
163 ${@F:.o=.O}="lib.a"
164
165 Implied source with suffix transformations
166 ${<D:r=rr}="."
167 ${<F:.c=.C}="obj3.C"
168
169 Suffixless target with suffix transformations
170 ${*D:.=dot}="dot"
171 ${*F:.a=}="obj3"
172
173 Out-of-date dependencies with suffix transformations
174 ${?D:ir=}=". d ."
175 ${?F:.h=.H}="obj3.H dummy obj3.c"
176
177 Member with suffix transformations
178 ${%D:.=}=""
179 ${%F:${VAR2}=${VAR}}="obj3foo  bar baz"
180
181cc -c -o 'obj3.o' 'obj3.c'
182ar -rcv 'lib.a' 'obj3.o'
183a - obj3.o
184rm -f 'obj3.o'
185exit status 0
186