diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2015-01-18 16:23:48 +0000 | 
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2015-01-18 16:23:48 +0000 | 
| commit | 06d4ba388873e6d1cfa9cd715a8935ecc8cd2097 (patch) | |
| tree | 3eb853da77d46cc77c4b017525a422f9ddb1385b /lib/Driver/ToolChains.h | |
| parent | 30d791273d07fac9c0c1641a0731191bca6e8606 (diff) | |
Diffstat (limited to 'lib/Driver/ToolChains.h')
| -rw-r--r-- | lib/Driver/ToolChains.h | 93 | 
1 files changed, 53 insertions, 40 deletions
diff --git a/lib/Driver/ToolChains.h b/lib/Driver/ToolChains.h index b5df8668d69e..47fb10d3f6c5 100644 --- a/lib/Driver/ToolChains.h +++ b/lib/Driver/ToolChains.h @@ -7,8 +7,8 @@  //  //===----------------------------------------------------------------------===// -#ifndef CLANG_LIB_DRIVER_TOOLCHAINS_H_ -#define CLANG_LIB_DRIVER_TOOLCHAINS_H_ +#ifndef LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_H +#define LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_H  #include "Tools.h"  #include "clang/Basic/VersionTuple.h" @@ -234,9 +234,10 @@ public:    void AddLinkRuntimeLib(const llvm::opt::ArgList &Args,                           llvm::opt::ArgStringList &CmdArgs, -                         StringRef DarwinStaticLib, +                         StringRef DarwinLibName,                           bool AlwaysLink = false, -                         bool IsEmbedded = false) const; +                         bool IsEmbedded = false, +                         bool AddRPath = false) const;    /// }    /// @name ToolChain Implementation @@ -255,7 +256,7 @@ public:    bool IsBlocksDefault() const override {      // Always allow blocks on Apple; users interested in versioning are -    // expected to use /usr/include/Blocks.h. +    // expected to use /usr/include/Block.h.      return true;    }    bool IsIntegratedAssemblerDefault() const override { @@ -362,7 +363,7 @@ public:    bool isKernelStatic() const override {      return !isTargetIPhoneOS() || isIPhoneOSVersionLT(6, 0) || -           getTriple().getArch() == llvm::Triple::arm64; +           getTriple().getArch() == llvm::Triple::aarch64;    }  protected: @@ -487,7 +488,8 @@ public:    AddCCKextLibArgs(const llvm::opt::ArgList &Args,                     llvm::opt::ArgStringList &CmdArgs) const override; -  virtual void addClangWarningOptions(llvm::opt::ArgStringList &CC1Args) const; +  virtual void addClangWarningOptions(llvm::opt::ArgStringList &CC1Args) +                                                      const override;    void    AddLinkARCArgs(const llvm::opt::ArgList &Args, @@ -506,16 +508,6 @@ public:                               llvm::opt::ArgStringList &CC1Args) const override;  }; -class LLVM_LIBRARY_VISIBILITY AuroraUX : public Generic_GCC { -public: -  AuroraUX(const Driver &D, const llvm::Triple &Triple, -           const llvm::opt::ArgList &Args); - -protected: -  Tool *buildAssembler() const override; -  Tool *buildLinker() const override; -}; -  class LLVM_LIBRARY_VISIBILITY Solaris : public Generic_GCC {  public:    Solaris(const Driver &D, const llvm::Triple &Triple, @@ -542,14 +534,6 @@ public:      return 2;    } -  virtual bool IsIntegratedAssemblerDefault() const override { -    if (getTriple().getArch() == llvm::Triple::ppc || -        getTriple().getArch() == llvm::Triple::sparc || -        getTriple().getArch() == llvm::Triple::sparcv9) -      return true; -    return Generic_ELF::IsIntegratedAssemblerDefault(); -  } -  protected:    Tool *buildAssembler() const override;    Tool *buildLinker() const override; @@ -591,12 +575,6 @@ public:    void    AddClangCXXStdlibIncludeArgs(const llvm::opt::ArgList &DriverArgs,                                 llvm::opt::ArgStringList &CC1Args) const override; -  bool IsIntegratedAssemblerDefault() const override { -    if (getTriple().getArch() == llvm::Triple::ppc || -        getTriple().getArch() == llvm::Triple::ppc64) -      return true; -    return Generic_ELF::IsIntegratedAssemblerDefault(); -  }    bool UseSjLjExceptions() const override;    bool isPIEDefault() const override; @@ -621,11 +599,6 @@ public:    bool IsUnwindTablesDefault() const override {      return true;    } -  bool IsIntegratedAssemblerDefault() const override { -    if (getTriple().getArch() == llvm::Triple::ppc) -      return true; -    return Generic_ELF::IsIntegratedAssemblerDefault(); -  }  protected:    Tool *buildAssembler() const override; @@ -709,7 +682,8 @@ public:    StringRef GetGCCLibAndIncVersion() const { return GCCLibAndIncVersion.Text; } -  static std::string GetGnuDir(const std::string &InstalledDir); +  static std::string GetGnuDir(const std::string &InstalledDir, +                               const llvm::opt::ArgList &Args);    static StringRef GetTargetCPU(const llvm::opt::ArgList &Args);  }; @@ -728,10 +702,10 @@ public:    bool isPICDefaultForced() const override;  }; -class LLVM_LIBRARY_VISIBILITY Windows : public ToolChain { +class LLVM_LIBRARY_VISIBILITY MSVCToolChain : public ToolChain {  public: -  Windows(const Driver &D, const llvm::Triple &Triple, -          const llvm::opt::ArgList &Args); +  MSVCToolChain(const Driver &D, const llvm::Triple &Triple, +                const llvm::opt::ArgList &Args);    bool IsIntegratedAssemblerDefault() const override;    bool IsUnwindTablesDefault() const override; @@ -746,11 +720,50 @@ public:    AddClangCXXStdlibIncludeArgs(const llvm::opt::ArgList &DriverArgs,                                 llvm::opt::ArgStringList &CC1Args) const override; +  bool getWindowsSDKDir(std::string &path, int &major, int &minor) const; +  bool getWindowsSDKLibraryPath(std::string &path) const; +  bool getVisualStudioInstallDir(std::string &path) const; +  bool getVisualStudioBinariesFolder(const char *clangProgramPath, +                                     std::string &path) const; +  protected: +  void AddSystemIncludeWithSubfolder(const llvm::opt::ArgList &DriverArgs, +                                     llvm::opt::ArgStringList &CC1Args, +                                     const std::string &folder, +                                     const char *subfolder) const; +    Tool *buildLinker() const override;    Tool *buildAssembler() const override;  }; +class LLVM_LIBRARY_VISIBILITY CrossWindowsToolChain : public Generic_GCC { +public: +  CrossWindowsToolChain(const Driver &D, const llvm::Triple &T, +                        const llvm::opt::ArgList &Args); + +  bool IsIntegratedAssemblerDefault() const override { return true; } +  bool IsUnwindTablesDefault() const override; +  bool isPICDefault() const override; +  bool isPIEDefault() const override; +  bool isPICDefaultForced() const override; + +  unsigned int GetDefaultStackProtectorLevel(bool KernelOrKext) const override { +    return 0; +  } + +  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; + +protected: +  Tool *buildLinker() const override; +  Tool *buildAssembler() const override; +};  class LLVM_LIBRARY_VISIBILITY XCore : public ToolChain {  public:  | 
