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 (llvm::opt::ArgStringList &CmdArgs) const override; |
43 | |
44 | std::vector<std::string> ; |
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 | |