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