diff options
Diffstat (limited to 'include/clang/Driver/ToolChain.h')
-rw-r--r-- | include/clang/Driver/ToolChain.h | 37 |
1 files changed, 33 insertions, 4 deletions
diff --git a/include/clang/Driver/ToolChain.h b/include/clang/Driver/ToolChain.h index 2e6218a..c35cf67 100644 --- a/include/clang/Driver/ToolChain.h +++ b/include/clang/Driver/ToolChain.h @@ -23,7 +23,6 @@ namespace driver { class Compilation; class DerivedArgList; class Driver; - class HostInfo; class InputArgList; class JobAction; class ObjCRuntime; @@ -39,8 +38,13 @@ public: CST_Libstdcxx }; + enum RuntimeLibType { + RLT_CompilerRT, + RLT_Libgcc + }; + private: - const HostInfo &Host; + const Driver &D; const llvm::Triple Triple; /// The list of toolchain specific path prefixes to search for @@ -52,7 +56,20 @@ private: path_list ProgramPaths; protected: - ToolChain(const HostInfo &Host, const llvm::Triple &_Triple); + ToolChain(const Driver &D, const llvm::Triple &T); + + /// \name Utilities for implementing subclasses. + ///@{ + static void addSystemInclude(const ArgList &DriverArgs, + ArgStringList &CC1Args, + const Twine &Path); + static void addExternCSystemInclude(const ArgList &DriverArgs, + ArgStringList &CC1Args, + const Twine &Path); + static void addSystemIncludes(const ArgList &DriverArgs, + ArgStringList &CC1Args, + ArrayRef<StringRef> Paths); + ///@} public: virtual ~ToolChain(); @@ -131,7 +148,7 @@ public: /// IsObjCLegacyDispatchDefault - Does this tool chain set /// -fobjc-legacy-dispatch by default (this is only used with the non-fragile /// ABI). - virtual bool IsObjCLegacyDispatchDefault() const { return false; } + virtual bool IsObjCLegacyDispatchDefault() const { return true; } /// UseObjCMixedDispatchDefault - When using non-legacy dispatch, should the /// mixed dispatch method be used? @@ -143,6 +160,11 @@ public: return 0; } + /// GetDefaultRuntimeLibType - Get the default runtime library variant to use. + virtual RuntimeLibType GetDefaultRuntimeLibType() const { + return ToolChain::RLT_Libgcc; + } + /// IsUnwindTablesDefault - Does this tool chain use -funwind-tables /// by default. virtual bool IsUnwindTablesDefault() const = 0; @@ -162,6 +184,9 @@ public: /// Does this tool chain support Objective-C garbage collection. virtual bool SupportsObjCGC() const { return true; } + /// Does this tool chain support Objective-C ARC. + virtual bool SupportsObjCARC() const { return true; } + /// UseDwarfDebugFlags - Embed the compile options to clang into the Dwarf /// compile unit information. virtual bool UseDwarfDebugFlags() const { return false; } @@ -202,6 +227,10 @@ public: virtual void AddClangSystemIncludeArgs(const ArgList &DriverArgs, ArgStringList &CC1Args) const; + // GetRuntimeLibType - Determine the runtime library type to use with the + // given compilation arguments. + virtual RuntimeLibType GetRuntimeLibType(const ArgList &Args) const; + // GetCXXStdlibType - Determine the C++ standard library type to use with the // given compilation arguments. virtual CXXStdlibType GetCXXStdlibType(const ArgList &Args) const; |