9#ifndef LLVM_CLANG_DRIVER_JOB_H
10#define LLVM_CLANG_DRIVER_JOB_H
14#include "llvm/ADT/ArrayRef.h"
15#include "llvm/ADT/SmallVector.h"
16#include "llvm/ADT/StringRef.h"
17#include "llvm/ADT/iterator.h"
18#include "llvm/Option/Option.h"
19#include "llvm/Support/Program.h"
79 return {
RF_None, llvm::sys::WEM_UTF8,
nullptr};
86 return {
RF_Full, llvm::sys::WEM_UTF8,
"@"};
93 return {
RF_Full, llvm::sys::WEM_CurrentCodePage,
"@"};
100 return {
RF_Full, llvm::sys::WEM_UTF16,
"@"};
117 const char *Executable;
120 const char *PrependArg;
124 llvm::opt::ArgStringList Arguments;
130 std::vector<std::string> OutputFilenames;
134 const char *ResponseFile =
nullptr;
138 llvm::opt::ArgStringList InputFileList;
142 std::string ResponseFileFlag;
145 std::vector<const char *> Environment;
148 std::vector<std::optional<std::string>> RedirectFiles;
151 mutable std::optional<llvm::sys::ProcessStatistics> ProcStat;
163 void writeResponseFile(raw_ostream &OS)
const;
181 virtual void Print(llvm::raw_ostream &OS,
const char *Terminator,
bool Quote,
185 std::string *ErrMsg,
bool *ExecutionFailed)
const;
195 return ResponseSupport;
204 InputFileList = std::move(List);
217 Arguments = std::move(List);
224 const llvm::opt::ArgStringList &
getArguments()
const {
return Arguments; }
229 return OutputFilenames;