Index: lib/Driver/ToolChains.h |
diff --git a/lib/Driver/ToolChains.h b/lib/Driver/ToolChains.h |
index c3918d81a79716dd176f2f96ecb4b1e8eed9502d..75db294d090b5987dd408269746675518c952b42 100644 |
--- a/lib/Driver/ToolChains.h |
+++ b/lib/Driver/ToolChains.h |
@@ -774,6 +774,66 @@ private: |
std::string NaClArmMacrosPath; |
}; |
+class LLVM_LIBRARY_VISIBILITY Generic_BC : public ToolChain { |
+ virtual void anchor(); |
Derek Schuff
2016/02/24 18:22:29
I don't think we need the anchor since we have an
Petr Hosek
2016/02/26 00:43:39
Done.
|
+public: |
+ Generic_BC(const Driver &D, const llvm::Triple &Triple, |
+ const llvm::opt::ArgList &Args); |
+ |
+ bool HasNativeLLVMSupport() const override { return true; } |
+ |
+ bool IsIntegratedAssemblerDefault() const override { return true; } |
+ |
+ bool isPICDefault() const override { return false; } |
+ bool isPIEDefault() const override { return false; } |
+ bool isPICDefaultForced() const override { return false; } |
+ |
+ bool isBitcodeOnlyTarget() const override { return true; } |
+}; |
+ |
+class LLVM_LIBRARY_VISIBILITY PNaClToolChain : public Generic_BC { |
+public: |
+ PNaClToolChain(const Driver &D, const llvm::Triple &Triple, |
+ const llvm::opt::ArgList &Args); |
+ |
+ /// Add the linker arguments to link the compiler runtime library. |
+ virtual void AddLinkRuntimeLibArgs(const llvm::opt::ArgList &Args, |
+ llvm::opt::ArgStringList &CmdArgs) const; |
+ |
+ CXXStdlibType GetCXXStdlibType(const llvm::opt::ArgList &Args) const override; |
+ |
+ void |
+ AddClangSystemIncludeArgs(const llvm::opt::ArgList &DriverArgs, |
+ llvm::opt::ArgStringList &CC1Args) const override; |
+ void AddClangCXXStdlibIncludeArgs( |
+ const llvm::opt::ArgList &DriverArgs, |
+ llvm::opt::ArgStringList &CC1Args) const override; |
+ void AddCXXStdlibLibArgs(const llvm::opt::ArgList &Args, |
+ llvm::opt::ArgStringList &CmdArgs) const override; |
+ |
+ RuntimeLibType GetDefaultRuntimeLibType() const override { |
+ return ToolChain::RLT_CompilerRT; |
+ } |
+ |
+ void addClangTargetOptions(const llvm::opt::ArgList &DriverArgs, |
+ llvm::opt::ArgStringList &CC1Args) const override; |
+ |
+protected: |
+ Tool *buildLinker() const override; |
+ Tool *buildAssembler() const override; |
+ |
+private: |
+ static bool addLibStdCXXIncludePaths(Twine Base, Twine Suffix, |
+ StringRef GCCTriple, |
+ StringRef GCCMultiarchTriple, |
+ StringRef TargetMultiarchTriple, |
+ Twine IncludeSuffix, |
+ const llvm::opt::ArgList &DriverArgs, |
+ llvm::opt::ArgStringList &CC1Args); |
+ |
+ std::string computeSysRoot() const; |
+}; |
+ |
/// TCEToolChain - A tool chain using the llvm bitcode tools to perform |
/// all subcommands. See http://tce.cs.tut.fi for our peculiar target. |
class LLVM_LIBRARY_VISIBILITY TCEToolChain : public ToolChain { |