15 #include "llvm/Option/ArgList.h" 20 using namespace clang;
30 const char *LinkingOutput)
const {
32 ArgStringList CmdArgs;
34 CmdArgs.push_back(
"-o");
37 CmdArgs.push_back(
"-c");
39 if (Args.hasArg(options::OPT_v))
40 CmdArgs.push_back(
"-v");
42 if (Arg *A = Args.getLastArg(options::OPT_g_Group))
43 if (!A->getOption().matches(options::OPT_g0))
44 CmdArgs.push_back(
"-g");
46 if (Args.hasFlag(options::OPT_fverbose_asm, options::OPT_fno_verbose_asm,
48 CmdArgs.push_back(
"-fverbose-asm");
50 Args.AddAllArgValues(CmdArgs, options::OPT_Wa_COMMA, options::OPT_Xassembler);
52 for (
const auto &II : Inputs)
53 CmdArgs.push_back(II.getFilename());
55 const char *Exec = Args.MakeArgString(getToolChain().GetProgramPath(
"xcc"));
56 C.
addCommand(llvm::make_unique<Command>(JA, *
this, Exec, CmdArgs, Inputs));
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"));
84 C.
addCommand(llvm::make_unique<Command>(JA, *
this, Exec, CmdArgs, Inputs));
113 ArgStringList &CC1Args)
const {
114 if (DriverArgs.hasArg(clang::driver::options::OPT_nostdinc) ||
115 DriverArgs.hasArg(options::OPT_nostdlibinc))
117 if (
const char *cl_include_dir = getenv(
"XCC_C_INCLUDE_PATH")) {
119 const char EnvPathSeparatorStr[] = {llvm::sys::EnvPathSeparator,
'\0'};
120 StringRef(cl_include_dir).split(Dirs, StringRef(EnvPathSeparatorStr));
127 ArgStringList &CC1Args,
129 CC1Args.push_back(
"-nostdsysteminc");
133 const ArgList &DriverArgs, ArgStringList &CC1Args)
const {
134 if (DriverArgs.hasArg(clang::driver::options::OPT_nostdinc) ||
135 DriverArgs.hasArg(options::OPT_nostdlibinc) ||
136 DriverArgs.hasArg(options::OPT_nostdincxx))
138 if (
const char *cl_include_dir = getenv(
"XCC_CPLUS_INCLUDE_PATH")) {
140 const char EnvPathSeparatorStr[] = {llvm::sys::EnvPathSeparator,
'\0'};
141 StringRef(cl_include_dir).split(Dirs, StringRef(EnvPathSeparatorStr));
148 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.