| 1 | //===- FrontendOptions.cpp ------------------------------------------------===// |
| 2 | // |
| 3 | // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. |
| 4 | // See https://llvm.org/LICENSE.txt for license information. |
| 5 | // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
| 6 | // |
| 7 | //===----------------------------------------------------------------------===// |
| 8 | |
| 9 | #include "clang/Frontend/FrontendOptions.h" |
| 10 | #include "clang/Basic/LangStandard.h" |
| 11 | #include "llvm/ADT/StringSwitch.h" |
| 12 | |
| 13 | using namespace clang; |
| 14 | |
| 15 | InputKind FrontendOptions::getInputKindForExtension(StringRef Extension) { |
| 16 | return llvm::StringSwitch<InputKind>(Extension) |
| 17 | .Cases(CaseStrings: {"ast" , "pcm" }, |
| 18 | Value: InputKind(Language::Unknown, InputKind::Precompiled)) |
| 19 | .Case(S: "c" , Value: Language::C) |
| 20 | .Cases(CaseStrings: {"S" , "s" }, Value: Language::Asm) |
| 21 | .Case(S: "i" , Value: InputKind(Language::C).getPreprocessed()) |
| 22 | .Case(S: "ii" , Value: InputKind(Language::CXX).getPreprocessed()) |
| 23 | .Case(S: "cui" , Value: InputKind(Language::CUDA).getPreprocessed()) |
| 24 | .Case(S: "m" , Value: Language::ObjC) |
| 25 | .Case(S: "mi" , Value: InputKind(Language::ObjC).getPreprocessed()) |
| 26 | .Cases(CaseStrings: {"mm" , "M" }, Value: Language::ObjCXX) |
| 27 | .Case(S: "mii" , Value: InputKind(Language::ObjCXX).getPreprocessed()) |
| 28 | .Cases(CaseStrings: {"C" , "cc" , "cp" }, Value: Language::CXX) |
| 29 | .Cases(CaseStrings: {"cpp" , "CPP" , "c++" , "cxx" , "hpp" , "hxx" }, Value: Language::CXX) |
| 30 | .Case(S: "cppm" , Value: Language::CXX) |
| 31 | .Cases(CaseStrings: {"iim" , "iih" }, Value: InputKind(Language::CXX).getPreprocessed()) |
| 32 | .Case(S: "cl" , Value: Language::OpenCL) |
| 33 | .Case(S: "clcpp" , Value: Language::OpenCLCXX) |
| 34 | .Cases(CaseStrings: {"cu" , "cuh" }, Value: Language::CUDA) |
| 35 | .Case(S: "hip" , Value: Language::HIP) |
| 36 | .Cases(CaseStrings: {"ll" , "bc" }, Value: Language::LLVM_IR) |
| 37 | .Case(S: "hlsl" , Value: Language::HLSL) |
| 38 | .Case(S: "cir" , Value: Language::CIR) |
| 39 | .Default(Value: Language::Unknown); |
| 40 | } |
| 41 | |