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");
80 if (!Args.hasFlag(options::OPT_mincremental_linker_compatible,
81 options::OPT_mno_incremental_linker_compatible,
83 CmdArgs.push_back(
"/Brepro");
85 Args.AddAllArgValues(CmdArgs, options::OPT__SLASH_link);
90 bool NoLibc = Args.hasArg(options::OPT_nolibc);
91 if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nodefaultlibs,
97 TC.addProfileRTLibs(Args, CmdArgs);
110 StringRef
Linker = Args.getLastArgValue(options::OPT_fuse_ld_EQ,
111 TC.getDriver().getPreferredLinker());
115 auto LinkerPath = TC.GetProgramPath(
Linker.str().c_str());
116 auto LinkCmd = std::make_unique<Command>(
118 Args.MakeArgString(LinkerPath), CmdArgs, Inputs, Output);
119 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()