xref: /netbsd-src/external/apache2/llvm/dist/clang/lib/Testing/CommandLineArgs.cpp (revision e038c9c4676b0f19b1b7dd08a940c6ed64a6d5ae)
1*e038c9c4Sjoerg //===--- CommandLineArgs.cpp ----------------------------------------------===//
2*e038c9c4Sjoerg //
3*e038c9c4Sjoerg // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4*e038c9c4Sjoerg // See https://llvm.org/LICENSE.txt for license information.
5*e038c9c4Sjoerg // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6*e038c9c4Sjoerg //
7*e038c9c4Sjoerg //===----------------------------------------------------------------------===//
8*e038c9c4Sjoerg 
9*e038c9c4Sjoerg #include "clang/Testing/CommandLineArgs.h"
10*e038c9c4Sjoerg #include "llvm/Support/ErrorHandling.h"
11*e038c9c4Sjoerg 
12*e038c9c4Sjoerg namespace clang {
13*e038c9c4Sjoerg 
getCommandLineArgsForTesting(TestLanguage Lang)14*e038c9c4Sjoerg std::vector<std::string> getCommandLineArgsForTesting(TestLanguage Lang) {
15*e038c9c4Sjoerg   std::vector<std::string> Args;
16*e038c9c4Sjoerg   // Test with basic arguments.
17*e038c9c4Sjoerg   switch (Lang) {
18*e038c9c4Sjoerg   case Lang_C89:
19*e038c9c4Sjoerg     Args = {"-x", "c", "-std=c89"};
20*e038c9c4Sjoerg     break;
21*e038c9c4Sjoerg   case Lang_C99:
22*e038c9c4Sjoerg     Args = {"-x", "c", "-std=c99"};
23*e038c9c4Sjoerg     break;
24*e038c9c4Sjoerg   case Lang_CXX03:
25*e038c9c4Sjoerg     Args = {"-std=c++03", "-frtti"};
26*e038c9c4Sjoerg     break;
27*e038c9c4Sjoerg   case Lang_CXX11:
28*e038c9c4Sjoerg     Args = {"-std=c++11", "-frtti"};
29*e038c9c4Sjoerg     break;
30*e038c9c4Sjoerg   case Lang_CXX14:
31*e038c9c4Sjoerg     Args = {"-std=c++14", "-frtti"};
32*e038c9c4Sjoerg     break;
33*e038c9c4Sjoerg   case Lang_CXX17:
34*e038c9c4Sjoerg     Args = {"-std=c++17", "-frtti"};
35*e038c9c4Sjoerg     break;
36*e038c9c4Sjoerg   case Lang_CXX20:
37*e038c9c4Sjoerg     Args = {"-std=c++20", "-frtti"};
38*e038c9c4Sjoerg     break;
39*e038c9c4Sjoerg   case Lang_OBJCXX:
40*e038c9c4Sjoerg     Args = {"-x", "objective-c++", "-frtti"};
41*e038c9c4Sjoerg     break;
42*e038c9c4Sjoerg   case Lang_OpenCL:
43*e038c9c4Sjoerg     llvm_unreachable("Not implemented yet!");
44*e038c9c4Sjoerg   }
45*e038c9c4Sjoerg   return Args;
46*e038c9c4Sjoerg }
47*e038c9c4Sjoerg 
getFilenameForTesting(TestLanguage Lang)48*e038c9c4Sjoerg StringRef getFilenameForTesting(TestLanguage Lang) {
49*e038c9c4Sjoerg   switch (Lang) {
50*e038c9c4Sjoerg   case Lang_C89:
51*e038c9c4Sjoerg   case Lang_C99:
52*e038c9c4Sjoerg     return "input.c";
53*e038c9c4Sjoerg 
54*e038c9c4Sjoerg   case Lang_CXX03:
55*e038c9c4Sjoerg   case Lang_CXX11:
56*e038c9c4Sjoerg   case Lang_CXX14:
57*e038c9c4Sjoerg   case Lang_CXX17:
58*e038c9c4Sjoerg   case Lang_CXX20:
59*e038c9c4Sjoerg     return "input.cc";
60*e038c9c4Sjoerg 
61*e038c9c4Sjoerg   case Lang_OpenCL:
62*e038c9c4Sjoerg     return "input.cl";
63*e038c9c4Sjoerg 
64*e038c9c4Sjoerg   case Lang_OBJCXX:
65*e038c9c4Sjoerg     return "input.mm";
66*e038c9c4Sjoerg   }
67*e038c9c4Sjoerg   llvm_unreachable("Unhandled TestLanguage enum");
68*e038c9c4Sjoerg }
69*e038c9c4Sjoerg 
70*e038c9c4Sjoerg } // end namespace clang
71