14 #include "llvm/Option/ArgList.h" 19 using namespace clang;
29 const char *LinkingOutput)
const {
31 ArgStringList CmdArgs;
33 CmdArgs.push_back(
"-o");
36 CmdArgs.push_back(
"-c");
38 if (Args.hasArg(options::OPT_v))
39 CmdArgs.push_back(
"-v");
41 if (Arg *A = Args.getLastArg(options::OPT_g_Group))
42 if (!A->getOption().matches(options::OPT_g0))
43 CmdArgs.push_back(
"-g");
45 if (Args.hasFlag(options::OPT_fverbose_asm, options::OPT_fno_verbose_asm,
47 CmdArgs.push_back(
"-fverbose-asm");
49 Args.AddAllArgValues(CmdArgs, options::OPT_Wa_COMMA, options::OPT_Xassembler);
51 for (
const auto &II : Inputs)
52 CmdArgs.push_back(II.getFilename());
54 const char *Exec = Args.MakeArgString(getToolChain().GetProgramPath(
"xcc"));
55 C.
addCommand(llvm::make_unique<Command>(JA, *
this, Exec, CmdArgs, Inputs));
62 const char *LinkingOutput)
const {
63 ArgStringList CmdArgs;
66 CmdArgs.push_back(
"-o");
69 assert(Output.
isNothing() &&
"Invalid output.");
72 if (Args.hasArg(options::OPT_v))
73 CmdArgs.push_back(
"-v");
76 if (Args.hasFlag(options::OPT_fexceptions, options::OPT_fno_exceptions,
78 CmdArgs.push_back(
"-fexceptions");
82 const char *Exec = Args.MakeArgString(getToolChain().GetProgramPath(
"xcc"));
83 C.
addCommand(llvm::make_unique<Command>(JA, *
this, Exec, CmdArgs, Inputs));
112 ArgStringList &CC1Args)
const {
113 if (DriverArgs.hasArg(clang::driver::options::OPT_nostdinc) ||
114 DriverArgs.hasArg(options::OPT_nostdlibinc))
116 if (
const char *cl_include_dir = getenv(
"XCC_C_INCLUDE_PATH")) {
118 const char EnvPathSeparatorStr[] = {llvm::sys::EnvPathSeparator,
'\0'};
119 StringRef(cl_include_dir).split(Dirs, StringRef(EnvPathSeparatorStr));
126 ArgStringList &CC1Args,
128 CC1Args.push_back(
"-nostdsysteminc");
132 const ArgList &DriverArgs, ArgStringList &CC1Args)
const {
133 if (DriverArgs.hasArg(clang::driver::options::OPT_nostdinc) ||
134 DriverArgs.hasArg(options::OPT_nostdlibinc) ||
135 DriverArgs.hasArg(options::OPT_nostdincxx))
137 if (
const char *cl_include_dir = getenv(
"XCC_CPLUS_INCLUDE_PATH")) {
139 const char EnvPathSeparatorStr[] = {llvm::sys::EnvPathSeparator,
'\0'};
140 StringRef(cl_include_dir).split(Dirs, StringRef(EnvPathSeparatorStr));
147 ArgStringList &CmdArgs)
const {
Driver - Encapsulate logic for constructing compilation processes from a set of gcc-driver-like comma...
void addCommand(std::unique_ptr< Command > C)
Dataflow Directional Tag Classes.
Compilation - A set of tasks to perform for a single driver invocation.