14#include "llvm/Option/ArgList.h"
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"));
56 Exec, CmdArgs, Inputs, Output));
63 const char *LinkingOutput)
const {
64 ArgStringList CmdArgs;
67 CmdArgs.push_back(
"-o");
70 assert(Output.
isNothing() &&
"Invalid output.");
73 if (Args.hasArg(options::OPT_v))
74 CmdArgs.push_back(
"-v");
77 if (Args.hasFlag(options::OPT_fexceptions, options::OPT_fno_exceptions,
79 CmdArgs.push_back(
"-fexceptions");
83 const char *Exec = Args.MakeArgString(getToolChain().GetProgramPath(
"xcc"));
85 Exec, CmdArgs, Inputs, Output));
116 ArgStringList &CC1Args)
const {
117 if (DriverArgs.hasArg(clang::driver::options::OPT_nostdinc) ||
118 DriverArgs.hasArg(options::OPT_nostdlibinc))
120 if (
const char *cl_include_dir = getenv(
"XCC_C_INCLUDE_PATH")) {
122 const char EnvPathSeparatorStr[] = {llvm::sys::EnvPathSeparator,
'\0'};
123 StringRef(cl_include_dir).split(Dirs, StringRef(EnvPathSeparatorStr));
130 ArgStringList &CC1Args,
132 CC1Args.push_back(
"-nostdsysteminc");
134 if (!DriverArgs.hasFlag(options::OPT_fuse_cxa_atexit,
135 options::OPT_fno_use_cxa_atexit,
false))
136 CC1Args.push_back(
"-fno-use-cxa-atexit");
140 const ArgList &DriverArgs, ArgStringList &CC1Args)
const {
141 if (DriverArgs.hasArg(clang::driver::options::OPT_nostdinc) ||
142 DriverArgs.hasArg(options::OPT_nostdlibinc) ||
143 DriverArgs.hasArg(options::OPT_nostdincxx))
145 if (
const char *cl_include_dir = getenv(
"XCC_CPLUS_INCLUDE_PATH")) {
147 const char EnvPathSeparatorStr[] = {llvm::sys::EnvPathSeparator,
'\0'};
148 StringRef(cl_include_dir).split(Dirs, StringRef(EnvPathSeparatorStr));
155 ArgStringList &CmdArgs)
const {
Compilation - A set of tasks to perform for a single driver invocation.
Driver - Encapsulate logic for constructing compilation processes from a set of gcc-driver-like comma...
@ C
Languages that the frontend can parse and compile.
static constexpr ResponseFileSupport None()
Returns a ResponseFileSupport indicating that response files are not supported.