22 #include "llvm/Option/ArgList.h" 23 #include "llvm/Support/Host.h" 24 using namespace clang;
44 Args.push_back(
"-fsyntax-only");
47 driver::Driver TheDriver(Args[0], llvm::sys::getDefaultTargetTriple(),
58 if (
C->getArgs().hasArg(driver::options::OPT__HASH_HASH_HASH)) {
59 C->getJobs().Print(llvm::errs(),
"\n",
true);
69 bool OffloadCompilation =
false;
70 if (Jobs.
size() > 1) {
71 for (
auto &A :
C->getActions()){
73 if (isa<driver::BindArchAction>(A))
74 A = *A->input_begin();
75 if (isa<driver::OffloadAction>(A)) {
76 OffloadCompilation =
true;
81 if (Jobs.
size() == 0 || !isa<driver::Command>(*Jobs.
begin()) ||
82 (Jobs.
size() > 1 && !OffloadCompilation)) {
84 llvm::raw_svector_ostream OS(Msg);
85 Jobs.
Print(OS,
"; ",
true);
86 Diags->Report(diag::err_fe_expected_compiler_job) << OS.str();
92 Diags->Report(diag::err_fe_expected_clang_command);
97 auto CI = llvm::make_unique<CompilerInvocation>();
99 const_cast<const char **>(CCArgs.data()),
100 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