1 //===--- Managarm.h - Managarm 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_MANAGARM_H 11 #define LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_MANAGARM_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 Managarm : public Generic_ELF { 21 public: 22 Managarm(const Driver &D, const llvm::Triple &Triple, 23 const llvm::opt::ArgList &Args); 24 25 bool HasNativeLLVMSupport() const override; 26 27 std::string getMultiarchTriple(const Driver &D, 28 const llvm::Triple &TargetTriple, 29 StringRef SysRoot) const override; 30 31 void 32 AddClangSystemIncludeArgs(const llvm::opt::ArgList &DriverArgs, 33 llvm::opt::ArgStringList &CC1Args) const override; 34 void 35 addLibStdCxxIncludePaths(const llvm::opt::ArgList &DriverArgs, 36 llvm::opt::ArgStringList &CC1Args) const override; 37 SanitizerMask getSupportedSanitizers() const override; 38 std::string computeSysRoot() const override; 39 40 std::string getDynamicLinker(const llvm::opt::ArgList &Args) const override; 41 42 void addExtraOpts(llvm::opt::ArgStringList &CmdArgs) const override; 43 44 std::vector<std::string> ExtraOpts; 45 46 protected: 47 Tool *buildAssembler() const override; 48 Tool *buildLinker() const override; 49 }; 50 51 } // end namespace toolchains 52 } // end namespace driver 53 } // end namespace clang 54 55 #endif // LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_MANAGARM_H 56