9 #ifndef LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_MSVC_H
10 #define LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_MSVC_H
18 #include "llvm/WindowsDriver/MSVCPaths.h"
25 namespace visualstudio {
35 const llvm::opt::ArgList &TCArgs,
36 const char *LinkingOutput)
const override;
42 namespace toolchains {
47 const llvm::opt::ArgList &Args);
49 llvm::opt::DerivedArgList *
50 TranslateArgs(
const llvm::opt::DerivedArgList &Args, StringRef BoundArch,
53 bool IsIntegratedAssemblerDefault()
const override;
54 bool IsUnwindTablesDefault(
const llvm::opt::ArgList &Args)
const override;
55 bool isPICDefault()
const override;
56 bool isPIEDefault(
const llvm::opt::ArgList &Args)
const override;
57 bool isPICDefaultForced()
const override;
70 return llvm::DebuggerKind::Default;
78 llvm::StringRef SubdirParent =
"")
const;
80 llvm::Triple::ArchType TargetArch)
const;
83 return VSLayout == llvm::ToolsetLayout::VS2017OrNewer;
87 AddClangSystemIncludeArgs(
const llvm::opt::ArgList &DriverArgs,
88 llvm::opt::ArgStringList &CC1Args)
const override;
89 void AddClangCXXStdlibIncludeArgs(
90 const llvm::opt::ArgList &DriverArgs,
91 llvm::opt::ArgStringList &CC1Args)
const override;
93 void AddCudaIncludeArgs(
const llvm::opt::ArgList &DriverArgs,
94 llvm::opt::ArgStringList &CC1Args)
const override;
96 void AddHIPIncludeArgs(
const llvm::opt::ArgList &DriverArgs,
97 llvm::opt::ArgStringList &CC1Args)
const override;
99 void AddHIPRuntimeLibArgs(
const llvm::opt::ArgList &Args,
100 llvm::opt::ArgStringList &CmdArgs)
const override;
102 bool getWindowsSDKLibraryPath(
103 const llvm::opt::ArgList &Args,
std::string &path)
const;
104 bool getUniversalCRTLibraryPath(
const llvm::opt::ArgList &Args,
106 bool useUniversalCRT()
const;
108 computeMSVCVersion(
const Driver *D,
109 const llvm::opt::ArgList &Args)
const override;
111 std::string ComputeEffectiveClangTriple(
const llvm::opt::ArgList &Args,
115 void printVerboseInfo(raw_ostream &OS)
const override;
120 addClangTargetOptions(
const llvm::opt::ArgList &DriverArgs,
121 llvm::opt::ArgStringList &CC1Args,
125 void AddSystemIncludeWithSubfolder(
const llvm::opt::ArgList &DriverArgs,
126 llvm::opt::ArgStringList &CC1Args,
128 const Twine &subfolder1,
129 const Twine &subfolder2 =
"",
130 const Twine &subfolder3 =
"")
const;
132 Tool *buildLinker()
const override;
133 Tool *buildAssembler()
const override;
137 llvm::ToolsetLayout VSLayout = llvm::ToolsetLayout::OlderVS;
146 #endif // LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_MSVC_H