10#include "clang/Config/config.h"
16#include "llvm/Option/Arg.h"
17#include "llvm/Option/ArgList.h"
18#include "llvm/Support/VirtualFileSystem.h"
19#include "llvm/TargetParser/Host.h"
34 ArgStringList &CC1Args)
const {
35 if (DriverArgs.hasArg(options::OPT_nostdinc))
38 if (!DriverArgs.hasArg(options::OPT_nobuiltininc)) {
40 llvm::sys::path::append(Dir,
"include");
44 if (DriverArgs.hasArg(options::OPT_nostdlibinc))
55 const char *LinkingOutput)
const {
56 ArgStringList CmdArgs;
62 Args.MakeArgString(std::string(
"/out:") + Output.
getFilename()));
64 CmdArgs.push_back(
"/nologo");
69 CmdArgs.push_back(
"/subsystem:efi_application");
70 CmdArgs.push_back(
"/entry:EfiMain");
73 CmdArgs.push_back(
"/tsaware:no");
75 if (Args.hasArg(options::OPT_g_Group, options::OPT__SLASH_Z7))
76 CmdArgs.push_back(
"/debug");
78 Args.AddAllArgValues(CmdArgs, options::OPT__SLASH_link);
83 bool NoLibc = Args.hasArg(options::OPT_nolibc);
84 if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nodefaultlibs,
90 TC.addProfileRTLibs(Args, CmdArgs);
103 StringRef
Linker = Args.getLastArgValue(options::OPT_fuse_ld_EQ,
104 TC.getDriver().getPreferredLinker());
108 auto LinkerPath = TC.GetProgramPath(
Linker.str().c_str());
109 auto LinkCmd = std::make_unique<Command>(
111 Args.MakeArgString(LinkerPath), CmdArgs, Inputs, Output);
112 C.addCommand(std::move(LinkCmd));
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...
SmallVector< InputInfo, 4 > InputInfoList
The JSON file list parser is used to communicate input to InstallAPI.
static constexpr ResponseFileSupport AtFileUTF16()