14#include "clang/Config/config.h"
19#include "llvm/ADT/StringExtras.h"
20#include "llvm/ADT/StringSwitch.h"
21#include "llvm/Option/Arg.h"
22#include "llvm/Option/ArgList.h"
23#include "llvm/Support/FileSystem.h"
24#include "llvm/Support/MemoryBuffer.h"
25#include "llvm/Support/VirtualFileSystem.h"
26#include "llvm/TargetParser/Host.h"
39 ArgStringList &CC1Args)
const {
40 if (DriverArgs.hasArg(options::OPT_nostdinc))
43 if (!DriverArgs.hasArg(options::OPT_nobuiltininc)) {
45 llvm::sys::path::append(Dir,
"include");
49 if (DriverArgs.hasArg(options::OPT_nostdlibinc))
60 const char *LinkingOutput)
const {
61 ArgStringList CmdArgs;
67 Args.MakeArgString(std::string(
"-out:") + Output.
getFilename()));
69 CmdArgs.push_back(
"-nologo");
73 CmdArgs.push_back(
"-subsystem:efi_application");
78 CmdArgs.push_back(
"-entry:EfiMain");
81 CmdArgs.push_back(
"-tsaware:no");
84 CmdArgs.push_back(
"-dll");
86 if (Args.hasArg(options::OPT_g_Group, options::OPT__SLASH_Z7))
87 CmdArgs.push_back(
"-debug");
89 Args.AddAllArgValues(CmdArgs, options::OPT__SLASH_link);
97 Args.getLastArgValue(options::OPT_fuse_ld_EQ, CLANG_DEFAULT_LINKER);
101 auto LinkerPath = TC.GetProgramPath(
Linker.str().c_str());
102 auto LinkCmd = std::make_unique<Command>(
104 Args.MakeArgString(LinkerPath), CmdArgs, Inputs, Output);
105 C.addCommand(std::move(LinkCmd));
Defines version macros and version-related utility functions for Clang.
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...
The JSON file list parser is used to communicate input to InstallAPI.
static constexpr ResponseFileSupport AtFileUTF16()