1 //===--- Linux.h - Linux ToolChain Implementations --------------*- C++ -*-===// 2 // 3 // The LLVM Compiler Infrastructure 4 // 5 // This file is distributed under the University of Illinois Open Source 6 // License. See LICENSE.TXT for details. 7 // 8 //===----------------------------------------------------------------------===// 9 10 #ifndef LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_LINUX_H 11 #define LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_LINUX_H 12 13 #include "Gnu.h" 14 #include "clang/Driver/ToolChain.h" 15 16 namespace clang { 17 namespace driver { 18 namespace toolchains { 19 20 class LLVM_LIBRARY_VISIBILITY Linux : public Generic_ELF { 21 public: 22 Linux(const Driver &D, const llvm::Triple &Triple, 23 const llvm::opt::ArgList &Args); 24 25 bool HasNativeLLVMSupport() const override; 26 27 void 28 AddClangSystemIncludeArgs(const llvm::opt::ArgList &DriverArgs, 29 llvm::opt::ArgStringList &CC1Args) const override; 30 std::string findLibCxxIncludePath() const override; 31 void addLibStdCxxIncludePaths( 32 const llvm::opt::ArgList &DriverArgs, 33 llvm::opt::ArgStringList &CC1Args) const override; 34 void AddCudaIncludeArgs(const llvm::opt::ArgList &DriverArgs, 35 llvm::opt::ArgStringList &CC1Args) const override; 36 void AddIAMCUIncludeArgs(const llvm::opt::ArgList &DriverArgs, 37 llvm::opt::ArgStringList &CC1Args) const override; 38 bool isPIEDefault() const override; 39 SanitizerMask getSupportedSanitizers() const override; 40 void addProfileRTLibs(const llvm::opt::ArgList &Args, 41 llvm::opt::ArgStringList &CmdArgs) const override; 42 virtual std::string computeSysRoot() const; 43 44 virtual std::string getDynamicLinker(const llvm::opt::ArgList &Args) const; 45 46 std::vector<std::string> ExtraOpts; 47 48 protected: 49 Tool *buildAssembler() const override; 50 Tool *buildLinker() const override; 51 }; 52 53 } // end namespace toolchains 54 } // end namespace driver 55 } // end namespace clang 56 57 #endif // LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_LINUX_H 58