15ffd83dbSDimitry Andric //===--- CommandLineArgs.cpp ----------------------------------------------===// 25ffd83dbSDimitry Andric // 35ffd83dbSDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 45ffd83dbSDimitry Andric // See https://llvm.org/LICENSE.txt for license information. 55ffd83dbSDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 65ffd83dbSDimitry Andric // 75ffd83dbSDimitry Andric //===----------------------------------------------------------------------===// 85ffd83dbSDimitry Andric 95ffd83dbSDimitry Andric #include "clang/Testing/CommandLineArgs.h" 105ffd83dbSDimitry Andric #include "llvm/Support/ErrorHandling.h" 115ffd83dbSDimitry Andric 125ffd83dbSDimitry Andric namespace clang { 135ffd83dbSDimitry Andric 145ffd83dbSDimitry Andric std::vector<std::string> getCommandLineArgsForTesting(TestLanguage Lang) { 155ffd83dbSDimitry Andric std::vector<std::string> Args; 165ffd83dbSDimitry Andric // Test with basic arguments. 175ffd83dbSDimitry Andric switch (Lang) { 185ffd83dbSDimitry Andric case Lang_C89: 195ffd83dbSDimitry Andric Args = {"-x", "c", "-std=c89"}; 205ffd83dbSDimitry Andric break; 215ffd83dbSDimitry Andric case Lang_C99: 225ffd83dbSDimitry Andric Args = {"-x", "c", "-std=c99"}; 235ffd83dbSDimitry Andric break; 245ffd83dbSDimitry Andric case Lang_CXX03: 255ffd83dbSDimitry Andric Args = {"-std=c++03", "-frtti"}; 265ffd83dbSDimitry Andric break; 275ffd83dbSDimitry Andric case Lang_CXX11: 285ffd83dbSDimitry Andric Args = {"-std=c++11", "-frtti"}; 295ffd83dbSDimitry Andric break; 305ffd83dbSDimitry Andric case Lang_CXX14: 315ffd83dbSDimitry Andric Args = {"-std=c++14", "-frtti"}; 325ffd83dbSDimitry Andric break; 335ffd83dbSDimitry Andric case Lang_CXX17: 345ffd83dbSDimitry Andric Args = {"-std=c++17", "-frtti"}; 355ffd83dbSDimitry Andric break; 365ffd83dbSDimitry Andric case Lang_CXX20: 375ffd83dbSDimitry Andric Args = {"-std=c++20", "-frtti"}; 385ffd83dbSDimitry Andric break; 39*81ad6265SDimitry Andric case Lang_OBJC: 40*81ad6265SDimitry Andric Args = {"-x", "objective-c", "-frtti", "-fobjc-nonfragile-abi"}; 41*81ad6265SDimitry Andric break; 425ffd83dbSDimitry Andric case Lang_OBJCXX: 435ffd83dbSDimitry Andric Args = {"-x", "objective-c++", "-frtti"}; 445ffd83dbSDimitry Andric break; 455ffd83dbSDimitry Andric case Lang_OpenCL: 465ffd83dbSDimitry Andric llvm_unreachable("Not implemented yet!"); 475ffd83dbSDimitry Andric } 485ffd83dbSDimitry Andric return Args; 495ffd83dbSDimitry Andric } 505ffd83dbSDimitry Andric 51*81ad6265SDimitry Andric std::vector<std::string> getCC1ArgsForTesting(TestLanguage Lang) { 52*81ad6265SDimitry Andric std::vector<std::string> Args; 53*81ad6265SDimitry Andric switch (Lang) { 54*81ad6265SDimitry Andric case Lang_C89: 55*81ad6265SDimitry Andric Args = {"-xc", "-std=c89"}; 56*81ad6265SDimitry Andric break; 57*81ad6265SDimitry Andric case Lang_C99: 58*81ad6265SDimitry Andric Args = {"-xc", "-std=c99"}; 59*81ad6265SDimitry Andric break; 60*81ad6265SDimitry Andric case Lang_CXX03: 61*81ad6265SDimitry Andric Args = {"-std=c++03"}; 62*81ad6265SDimitry Andric break; 63*81ad6265SDimitry Andric case Lang_CXX11: 64*81ad6265SDimitry Andric Args = {"-std=c++11"}; 65*81ad6265SDimitry Andric break; 66*81ad6265SDimitry Andric case Lang_CXX14: 67*81ad6265SDimitry Andric Args = {"-std=c++14"}; 68*81ad6265SDimitry Andric break; 69*81ad6265SDimitry Andric case Lang_CXX17: 70*81ad6265SDimitry Andric Args = {"-std=c++17"}; 71*81ad6265SDimitry Andric break; 72*81ad6265SDimitry Andric case Lang_CXX20: 73*81ad6265SDimitry Andric Args = {"-std=c++20"}; 74*81ad6265SDimitry Andric break; 75*81ad6265SDimitry Andric case Lang_OBJC: 76*81ad6265SDimitry Andric Args = {"-xobjective-c"}; 77*81ad6265SDimitry Andric break; 78*81ad6265SDimitry Andric case Lang_OBJCXX: 79*81ad6265SDimitry Andric Args = {"-xobjective-c++"}; 80*81ad6265SDimitry Andric break; 81*81ad6265SDimitry Andric case Lang_OpenCL: 82*81ad6265SDimitry Andric llvm_unreachable("Not implemented yet!"); 83*81ad6265SDimitry Andric } 84*81ad6265SDimitry Andric return Args; 85*81ad6265SDimitry Andric } 86*81ad6265SDimitry Andric 875ffd83dbSDimitry Andric StringRef getFilenameForTesting(TestLanguage Lang) { 885ffd83dbSDimitry Andric switch (Lang) { 895ffd83dbSDimitry Andric case Lang_C89: 905ffd83dbSDimitry Andric case Lang_C99: 915ffd83dbSDimitry Andric return "input.c"; 925ffd83dbSDimitry Andric 935ffd83dbSDimitry Andric case Lang_CXX03: 945ffd83dbSDimitry Andric case Lang_CXX11: 955ffd83dbSDimitry Andric case Lang_CXX14: 965ffd83dbSDimitry Andric case Lang_CXX17: 975ffd83dbSDimitry Andric case Lang_CXX20: 985ffd83dbSDimitry Andric return "input.cc"; 995ffd83dbSDimitry Andric 1005ffd83dbSDimitry Andric case Lang_OpenCL: 1015ffd83dbSDimitry Andric return "input.cl"; 1025ffd83dbSDimitry Andric 103*81ad6265SDimitry Andric case Lang_OBJC: 104*81ad6265SDimitry Andric return "input.m"; 105*81ad6265SDimitry Andric 1065ffd83dbSDimitry Andric case Lang_OBJCXX: 1075ffd83dbSDimitry Andric return "input.mm"; 1085ffd83dbSDimitry Andric } 1095ffd83dbSDimitry Andric llvm_unreachable("Unhandled TestLanguage enum"); 1105ffd83dbSDimitry Andric } 1115ffd83dbSDimitry Andric 1125ffd83dbSDimitry Andric } // end namespace clang 113