14#include "llvm/Option/ArgList.h"
15#include "llvm/Support/FileSystem.h"
16#include "llvm/Support/Path.h"
26 StringRef InstallPath,
29 for (
const auto &Path : PathsCallback(
Multilib))
39 Multilibs = GCCInstallation.getMultilibs();
40 SelectedMultilibs.assign({GCCInstallation.getMultilib()});
53 PPaths.push_back((
GCCInstallation.getParentLibPath() +
"/../bin").str());
57 getProgramPaths().push_back(D.Dir);
58 getFilePaths().push_back(computeSysRoot() +
"/lib");
77 llvm::opt::ArgStringList &CC1Args,
79 CC1Args.push_back(
"-nostdsysteminc");
83 ArgStringList &CC1Args)
const {
84 if (DriverArgs.hasArg(options::OPT_nostdinc))
87 if (!DriverArgs.hasArg(options::OPT_nostdlibinc)) {
89 llvm::sys::path::append(Dir,
"include");
92 llvm::sys::path::append(Dir2,
"sys-include");
98 const llvm::opt::ArgList &DriverArgs,
99 llvm::opt::ArgStringList &CC1Args)
const {
116 llvm::sys::path::append(SysRootDir, LibDir,
"..", TripleStr);
120 llvm::sys::path::append(SysRootDir,
getDriver().Dir,
"..",
124 if (!llvm::sys::fs::exists(SysRootDir))
125 return std::string();
127 return std::string(SysRootDir);
134 const char *LinkingOutput)
const {
137 ArgStringList CmdArgs;
140 CmdArgs.push_back(Args.MakeArgString(
"--sysroot=" + D.
SysRoot));
142 CmdArgs.push_back(
"-m");
143 CmdArgs.push_back(
"cskyelf");
148 !Args.hasArg(options::OPT_nostdlib, options::OPT_nostartfiles);
150 const char *crtbegin, *crtend;
153 crtbegin =
"crtbegin.o";
169 Args.AddAllArgs(CmdArgs, options::OPT_L);
171 Args.addAllArgs(CmdArgs, {options::OPT_T_Group, options::OPT_s,
172 options::OPT_t, options::OPT_r});
178 if (!Args.hasArg(options::OPT_nostdlib) &&
179 !Args.hasArg(options::OPT_nodefaultlibs)) {
182 CmdArgs.push_back(
"--start-group");
183 CmdArgs.push_back(
"-lc");
184 if (Args.hasArg(options::OPT_msim))
185 CmdArgs.push_back(
"-lsemi");
187 CmdArgs.push_back(
"-lnosys");
188 CmdArgs.push_back(
"--end-group");
197 CmdArgs.push_back(
"-o");
199 C.addCommand(std::make_unique<Command>(
201 CmdArgs, Inputs, Output));
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...
std::string SysRoot
sysroot, if present
See also MultilibSetBuilder for combining multilibs into a set.
const IncludeDirsFunc & filePathsCallback() const
This corresponds to a single GCC Multilib, or a segment of one controlled by a command line flag.
const std::string & includeSuffix() const
Get the include directory suffix.
SmallVector< InputInfo, 4 > InputInfoList
The JSON file list parser is used to communicate input to InstallAPI.
static constexpr ResponseFileSupport AtFileCurCP()