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