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