144357eefSEugene Zelenko //===- FrontendOptions.cpp ------------------------------------------------===//
227b19dc1SDaniel Dunbar //
32946cd70SChandler Carruth // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
42946cd70SChandler Carruth // See https://llvm.org/LICENSE.txt for license information.
52946cd70SChandler Carruth // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
627b19dc1SDaniel Dunbar //
727b19dc1SDaniel Dunbar //===----------------------------------------------------------------------===//
827b19dc1SDaniel Dunbar
927b19dc1SDaniel Dunbar #include "clang/Frontend/FrontendOptions.h"
1009d890d7SRainer Orth #include "clang/Basic/LangStandard.h"
1127b19dc1SDaniel Dunbar #include "llvm/ADT/StringSwitch.h"
1244357eefSEugene Zelenko
1327b19dc1SDaniel Dunbar using namespace clang;
1427b19dc1SDaniel Dunbar
getInputKindForExtension(StringRef Extension)150e62c1ccSChris Lattner InputKind FrontendOptions::getInputKindForExtension(StringRef Extension) {
1627b19dc1SDaniel Dunbar return llvm::StringSwitch<InputKind>(Extension)
1709d890d7SRainer Orth .Cases("ast", "pcm", InputKind(Language::Unknown, InputKind::Precompiled))
1809d890d7SRainer Orth .Case("c", Language::C)
1909d890d7SRainer Orth .Cases("S", "s", Language::Asm)
2009d890d7SRainer Orth .Case("i", InputKind(Language::C).getPreprocessed())
2109d890d7SRainer Orth .Case("ii", InputKind(Language::CXX).getPreprocessed())
2209d890d7SRainer Orth .Case("cui", InputKind(Language::CUDA).getPreprocessed())
2309d890d7SRainer Orth .Case("m", Language::ObjC)
2409d890d7SRainer Orth .Case("mi", InputKind(Language::ObjC).getPreprocessed())
2509d890d7SRainer Orth .Cases("mm", "M", Language::ObjCXX)
2609d890d7SRainer Orth .Case("mii", InputKind(Language::ObjCXX).getPreprocessed())
2709d890d7SRainer Orth .Cases("C", "cc", "cp", Language::CXX)
289c390955SSam McCall .Cases("cpp", "CPP", "c++", "cxx", "hpp", "hxx", Language::CXX)
2909d890d7SRainer Orth .Case("cppm", Language::CXX)
30*5c6a1464SIain Sandoe .Cases("iim", "iih", InputKind(Language::CXX).getPreprocessed())
3109d890d7SRainer Orth .Case("cl", Language::OpenCL)
32d1c8a151SAnastasia Stulova .Case("clcpp", Language::OpenCLCXX)
33e7c7a198SAnatoliy Tomilov .Cases("cu", "cuh", Language::CUDA)
3460963fa6SYaxun (Sam) Liu .Case("hip", Language::HIP)
3509d890d7SRainer Orth .Cases("ll", "bc", Language::LLVM_IR)
3609d890d7SRainer Orth .Default(Language::Unknown);
3727b19dc1SDaniel Dunbar }
38