Go to the documentation of this file.
14 #include "llvm/Option/ArgList.h"
15 #include "llvm/Support/FileSystem.h"
16 #include "llvm/Support/Path.h"
17 #include "llvm/Support/raw_ostream.h"
22 using namespace clang;
27 StringRef InstallPath,
30 for (
const auto &Path : PathsCallback(
Multilib))
39 const llvm::opt::ArgList &Args) {
40 if (Args.getLastArg(options::OPT_gcc_toolchain))
46 return llvm::sys::fs::exists(GCCDir);
90 const llvm::opt::ArgList &DriverArgs,
91 llvm::opt::ArgStringList &CC1Args,
93 CC1Args.push_back(
"-nostdsysteminc");
97 ArgStringList &CC1Args)
const {
98 if (DriverArgs.hasArg(options::OPT_nostdinc))
101 if (!DriverArgs.hasArg(options::OPT_nostdlibinc)) {
103 llvm::sys::path::append(Dir,
"include");
109 const llvm::opt::ArgList &DriverArgs,
110 llvm::opt::ArgStringList &CC1Args)
const {
119 std::string RISCVToolChain::computeSysRoot()
const {
127 llvm::sys::path::append(SysRootDir, LibDir,
"..", TripleStr);
131 llvm::sys::path::append(SysRootDir,
getDriver().Dir,
"..",
135 if (!llvm::sys::fs::exists(SysRootDir))
145 const char *LinkingOutput)
const {
148 ArgStringList CmdArgs;
151 CmdArgs.push_back(Args.MakeArgString(
"--sysroot=" + D.
SysRoot));
154 CmdArgs.push_back(
"-m");
156 CmdArgs.push_back(
"elf64lriscv");
158 CmdArgs.push_back(
"elf32lriscv");
164 !Args.hasArg(options::OPT_nostdlib, options::OPT_nostartfiles);
166 const char *crtbegin, *crtend;
169 crtbegin =
"crtbegin.o";
184 Args.AddAllArgs(CmdArgs, options::OPT_L);
186 Args.AddAllArgs(CmdArgs,
187 {options::OPT_T_Group, options::OPT_e, options::OPT_s,
188 options::OPT_t, options::OPT_Z_Flag, options::OPT_r});
194 if (!Args.hasArg(options::OPT_nostdlib) &&
195 !Args.hasArg(options::OPT_nodefaultlibs)) {
198 CmdArgs.push_back(
"--start-group");
199 CmdArgs.push_back(
"-lc");
200 CmdArgs.push_back(
"-lgloss");
201 CmdArgs.push_back(
"--end-group");
208 CmdArgs.push_back(
"-o");
210 C.addCommand(std::make_unique<Command>(
212 CmdArgs, Inputs, Output));
std::string Dir
The path the driver executable was in, as invoked from the command line.
static constexpr ResponseFileSupport AtFileCurCP()
std::string SysRoot
sysroot, if present
This corresponds to a single GCC Multilib, or a segment of one controlled by a command line flag.
const IncludeDirsFunc & filePathsCallback() const
Compilation - A set of tasks to perform for a single driver invocation.
Dataflow Directional Tag Classes.
Driver - Encapsulate logic for constructing compilation processes from a set of gcc-driver-like comma...
std::string getTargetTriple() const
const std::string & includeSuffix() const
Get the include directory suffix.