23 #include "llvm/Option/ArgList.h" 24 #include "llvm/Support/Host.h" 25 using namespace clang;
45 Args.push_back(
"-fsyntax-only");
48 driver::Driver TheDriver(Args[0], llvm::sys::getDefaultTargetTriple(),
59 if (
C->getArgs().hasArg(driver::options::OPT__HASH_HASH_HASH)) {
60 C->getJobs().Print(llvm::errs(),
"\n",
true);
70 bool OffloadCompilation =
false;
71 if (Jobs.
size() > 1) {
72 for (
auto &A :
C->getActions()){
74 if (isa<driver::BindArchAction>(A))
75 A = *A->input_begin();
76 if (isa<driver::OffloadAction>(A)) {
77 OffloadCompilation =
true;
82 if (Jobs.
size() == 0 || !isa<driver::Command>(*Jobs.
begin()) ||
83 (Jobs.
size() > 1 && !OffloadCompilation)) {
85 llvm::raw_svector_ostream OS(Msg);
86 Jobs.
Print(OS,
"; ",
true);
87 Diags->Report(diag::err_fe_expected_compiler_job) << OS.str();
93 Diags->Report(diag::err_fe_expected_clang_command);
98 auto CI = llvm::make_unique<CompilerInvocation>();
100 const_cast<const char **>(CCArgs.data()),
101 const_cast<const char **>(CCArgs.data()) +
void createDiagnostics(DiagnosticConsumer *Client=nullptr, bool ShouldOwnClient=true)
Create the diagnostics engine using the invocation's diagnostic options and replace any existing one ...
static bool CreateFromArgs(CompilerInvocation &Res, const char *const *ArgBegin, const char *const *ArgEnd, DiagnosticsEngine &Diags)
Create a compiler invocation from a list of input options.
Compilation * BuildCompilation(ArrayRef< const char *> Args)
BuildCompilation - Construct a compilation object for a command line argument vector.
std::unique_ptr< CompilerInvocation > createInvocationFromCommandLine(ArrayRef< const char *> Args, IntrusiveRefCntPtr< DiagnosticsEngine > Diags=IntrusiveRefCntPtr< DiagnosticsEngine >(), IntrusiveRefCntPtr< llvm::vfs::FileSystem > VFS=nullptr)
createInvocationFromCommandLine - Construct a compiler invocation object for a command line argument ...
Driver - Encapsulate logic for constructing compilation processes from a set of gcc-driver-like comma...
const Tool & getCreator() const
getCreator - Return the Tool which caused the creation of this job.
JobList - A sequence of jobs to perform.
void setCheckInputsExist(bool Value)
void Print(llvm::raw_ostream &OS, const char *Terminator, bool Quote, CrashReportInfo *CrashInfo=nullptr) const
Options for controlling the compiler diagnostics engine.
Command - An executable path/name and argument vector to execute.
Dataflow Directional Tag Classes.
const llvm::opt::ArgStringList & getArguments() const