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"
42 const char *LinkingOutput)
const {
43 ArgStringList CmdArgs;
49 Args.MakeArgString(std::string(
"-out:") + Output.
getFilename()));
51 CmdArgs.push_back(
"-nologo");
55 CmdArgs.push_back(
"-subsystem:efi_application");
60 CmdArgs.push_back(
"-entry:EfiMain");
63 CmdArgs.push_back(
"-tsaware:no");
66 CmdArgs.push_back(
"-dll");
68 if (Args.hasArg(options::OPT_g_Group, options::OPT__SLASH_Z7))
69 CmdArgs.push_back(
"-debug");
71 Args.AddAllArgValues(CmdArgs, options::OPT__SLASH_link);
79 Args.getLastArgValue(options::OPT_fuse_ld_EQ, CLANG_DEFAULT_LINKER);
83 auto LinkerPath = TC.GetProgramPath(
Linker.str().c_str());
84 auto LinkCmd = std::make_unique<Command>(
86 Args.MakeArgString(LinkerPath), CmdArgs, Inputs, Output);
87 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()