Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/contrib/atf/atf-c/h_build.h
39481 views
1
/* Copyright (c) 2009 The NetBSD Foundation, Inc.
2
* All rights reserved.
3
*
4
* Redistribution and use in source and binary forms, with or without
5
* modification, are permitted provided that the following conditions
6
* are met:
7
* 1. Redistributions of source code must retain the above copyright
8
* notice, this list of conditions and the following disclaimer.
9
* 2. Redistributions in binary form must reproduce the above copyright
10
* notice, this list of conditions and the following disclaimer in the
11
* documentation and/or other materials provided with the distribution.
12
*
13
* THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND
14
* CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
15
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
16
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
17
* IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY
18
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
20
* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
21
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
22
* IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
23
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
24
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */
25
26
#if defined(ATF_C_H_BUILD_H)
27
# error "Cannot include h_build.h more than once."
28
#else
29
# define ATF_C_H_BUILD_H
30
#endif
31
32
/* ---------------------------------------------------------------------
33
* Test case data.
34
* --------------------------------------------------------------------- */
35
36
static struct c_o_test {
37
const char *msg;
38
const char *cc;
39
const char *cflags;
40
const char *cppflags;
41
const char *sfile;
42
const char *ofile;
43
bool hasoptargs;
44
const char *const optargs[16];
45
const char *const expargv[16];
46
} c_o_tests[] = {
47
{
48
"No flags",
49
"cc",
50
"",
51
"",
52
"test.c",
53
"test.o",
54
false,
55
{
56
NULL
57
},
58
{
59
"cc", "-o", "test.o", "-c", "test.c", NULL
60
},
61
},
62
63
{
64
"Multi-word program name",
65
"cc -foo",
66
"",
67
"",
68
"test.c",
69
"test.o",
70
false,
71
{
72
NULL
73
},
74
{
75
"cc", "-foo", "-o", "test.o", "-c", "test.c", NULL
76
},
77
},
78
79
{
80
"Some cflags",
81
"cc",
82
"-f1 -f2 -f3 -f4-f5",
83
"",
84
"test.c",
85
"test.o",
86
false,
87
{
88
NULL
89
},
90
{
91
"cc", "-f1", "-f2", "-f3", "-f4-f5", "-o", "test.o",
92
"-c", "test.c", NULL
93
},
94
},
95
96
{
97
"Some cppflags",
98
"cc",
99
"",
100
"-f1 -f2 -f3 -f4-f5",
101
"test.c",
102
"test.o",
103
false,
104
{
105
NULL
106
},
107
{
108
"cc", "-f1", "-f2", "-f3", "-f4-f5", "-o", "test.o",
109
"-c", "test.c", NULL
110
},
111
},
112
113
{
114
"Some cflags and cppflags",
115
"cc",
116
"-f2",
117
"-f1",
118
"test.c",
119
"test.o",
120
false,
121
{
122
NULL
123
},
124
{
125
"cc", "-f1", "-f2", "-o", "test.o", "-c", "test.c", NULL
126
},
127
},
128
129
{
130
"Some optional arguments",
131
"cc",
132
"",
133
"",
134
"test.c",
135
"test.o",
136
true,
137
{
138
"-o1", "-o2", NULL
139
},
140
{
141
"cc", "-o1", "-o2", "-o", "test.o", "-c", "test.c", NULL
142
},
143
},
144
145
{
146
"Some cflags, cppflags and optional arguments",
147
"cc",
148
"-f2",
149
"-f1",
150
"test.c",
151
"test.o",
152
true,
153
{
154
"-o1", "-o2", NULL
155
},
156
{
157
"cc", "-f1", "-f2", "-o1", "-o2", "-o", "test.o",
158
"-c", "test.c", NULL
159
},
160
},
161
162
{
163
NULL,
164
NULL,
165
NULL,
166
NULL,
167
NULL,
168
NULL,
169
false,
170
{ NULL },
171
{ NULL },
172
},
173
};
174
175
static struct cpp_test {
176
const char *msg;
177
const char *cpp;
178
const char *cppflags;
179
const char *sfile;
180
const char *ofile;
181
bool hasoptargs;
182
const char *const optargs[16];
183
const char *const expargv[16];
184
} cpp_tests[] = {
185
{
186
"No flags",
187
"cpp",
188
"",
189
"test.c",
190
"test.out",
191
false,
192
{
193
NULL
194
},
195
{
196
"cpp", "-o", "test.out", "test.c", NULL
197
},
198
},
199
200
{
201
"Multi-word program name",
202
"cpp -foo",
203
"",
204
"test.c",
205
"test.out",
206
false,
207
{
208
NULL
209
},
210
{
211
"cpp", "-foo", "-o", "test.out", "test.c", NULL
212
},
213
},
214
215
{
216
"Some cppflags",
217
"cpp",
218
"-f1 -f2 -f3 -f4-f5",
219
"test.c",
220
"test.out",
221
false,
222
{
223
NULL
224
},
225
{
226
"cpp", "-f1", "-f2", "-f3", "-f4-f5", "-o", "test.out",
227
"test.c", NULL
228
},
229
},
230
231
{
232
"Some optional arguments",
233
"cpp",
234
"",
235
"test.c",
236
"test.out",
237
true,
238
{
239
"-o1", "-o2", NULL
240
},
241
{
242
"cpp", "-o1", "-o2", "-o", "test.out", "test.c", NULL
243
},
244
},
245
246
{
247
"Some cppflags and optional arguments",
248
"cpp",
249
"-f1",
250
"test.c",
251
"test.out",
252
true,
253
{
254
"-o1", "-o2", NULL
255
},
256
{
257
"cpp", "-f1", "-o1", "-o2", "-o", "test.out", "test.c", NULL
258
},
259
},
260
261
{
262
NULL,
263
NULL,
264
NULL,
265
NULL,
266
NULL,
267
false,
268
{ NULL },
269
{ NULL },
270
},
271
};
272
273
static struct cxx_o_test {
274
const char *msg;
275
const char *cxx;
276
const char *cxxflags;
277
const char *cppflags;
278
const char *sfile;
279
const char *ofile;
280
bool hasoptargs;
281
const char *const optargs[16];
282
const char *const expargv[16];
283
} cxx_o_tests[] = {
284
{
285
"No flags",
286
"c++",
287
"",
288
"",
289
"test.c",
290
"test.o",
291
false,
292
{
293
NULL
294
},
295
{
296
"c++", "-o", "test.o", "-c", "test.c", NULL
297
},
298
},
299
300
{
301
"Multi-word program name",
302
"c++ -foo",
303
"",
304
"",
305
"test.c",
306
"test.o",
307
false,
308
{
309
NULL
310
},
311
{
312
"c++", "-foo", "-o", "test.o", "-c", "test.c", NULL
313
},
314
},
315
316
{
317
"Some cxxflags",
318
"c++",
319
"-f1 -f2 -f3 -f4-f5",
320
"",
321
"test.c",
322
"test.o",
323
false,
324
{
325
NULL
326
},
327
{
328
"c++", "-f1", "-f2", "-f3", "-f4-f5", "-o", "test.o",
329
"-c", "test.c", NULL
330
},
331
},
332
333
{
334
"Some cppflags",
335
"c++",
336
"",
337
"-f1 -f2 -f3 -f4-f5",
338
"test.c",
339
"test.o",
340
false,
341
{
342
NULL
343
},
344
{
345
"c++", "-f1", "-f2", "-f3", "-f4-f5", "-o", "test.o",
346
"-c", "test.c", NULL
347
},
348
},
349
350
{
351
"Some cxxflags and cppflags",
352
"c++",
353
"-f2",
354
"-f1",
355
"test.c",
356
"test.o",
357
false,
358
{
359
NULL
360
},
361
{
362
"c++", "-f1", "-f2", "-o", "test.o", "-c", "test.c", NULL
363
},
364
},
365
366
{
367
"Some optional arguments",
368
"c++",
369
"",
370
"",
371
"test.c",
372
"test.o",
373
true,
374
{
375
"-o1", "-o2", NULL
376
},
377
{
378
"c++", "-o1", "-o2", "-o", "test.o", "-c", "test.c", NULL
379
},
380
},
381
382
{
383
"Some cxxflags, cppflags and optional arguments",
384
"c++",
385
"-f2",
386
"-f1",
387
"test.c",
388
"test.o",
389
true,
390
{
391
"-o1", "-o2", NULL
392
},
393
{
394
"c++", "-f1", "-f2", "-o1", "-o2", "-o", "test.o",
395
"-c", "test.c", NULL
396
},
397
},
398
399
{
400
NULL,
401
NULL,
402
NULL,
403
NULL,
404
NULL,
405
NULL,
406
false,
407
{ NULL },
408
{ NULL },
409
},
410
};
411
412