15 #include "llvm/Option/ArgList.h" 16 #include "llvm/Support/VirtualFileSystem.h" 19 using namespace clang;
26 const char *LinkingOutput)
const {
28 ArgStringList CmdArgs;
30 Args.AddAllArgValues(CmdArgs, options::OPT_Wa_COMMA, options::OPT_Xassembler);
32 CmdArgs.push_back(
"-o");
35 for (
const auto &II : Inputs)
36 CmdArgs.push_back(II.getFilename());
38 const char *Exec = Args.MakeArgString(getToolChain().GetProgramPath(
"as"));
39 C.addCommand(std::make_unique<Command>(JA, *
this,
41 Exec, CmdArgs, Inputs, Output));
48 const char *LinkingOutput)
const {
49 const Driver &D = getToolChain().getDriver();
50 ArgStringList CmdArgs;
53 CmdArgs.push_back(
"-o");
56 assert(Output.
isNothing() &&
"Invalid output.");
59 if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nostartfiles)) {
60 CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath(
"crt1.o")));
61 CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath(
"crti.o")));
63 Args.MakeArgString(getToolChain().GetFilePath(
"crtbegin.o")));
64 CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath(
"crtn.o")));
67 Args.AddAllArgs(CmdArgs,
68 {options::OPT_L, options::OPT_T_Group, options::OPT_e});
72 getToolChain().addProfileRTLibs(Args, CmdArgs);
74 if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nodefaultlibs)) {
76 if (getToolChain().ShouldLinkCXXStdlib(Args))
77 getToolChain().AddCXXStdlibLibArgs(Args, CmdArgs);
78 CmdArgs.push_back(
"-lm");
82 if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nostartfiles)) {
83 if (Args.hasArg(options::OPT_pthread))
84 CmdArgs.push_back(
"-lpthread");
85 CmdArgs.push_back(
"-lc");
86 CmdArgs.push_back(
"-lCompilerRT-Generic");
87 CmdArgs.push_back(
"-L/usr/pkg/compiler-rt/lib");
89 Args.MakeArgString(getToolChain().GetFilePath(
"crtend.o")));
92 const char *Exec = Args.MakeArgString(getToolChain().GetLinkerPath());
93 C.addCommand(std::make_unique<Command>(JA, *
this,
95 Exec, CmdArgs, Inputs, Output));
Driver - Encapsulate logic for constructing compilation processes from a set of gcc-driver-like comma...
bool CCCIsCXX() const
Whether the driver should follow g++ like behavior.
Dataflow Directional Tag Classes.
Compilation - A set of tasks to perform for a single driver invocation.
static constexpr ResponseFileSupport AtFileCurCP()