62 lines · c
1//===--- Managarm.h - Managarm ToolChain Implementations --------*- C++ -*-===//2//3// The LLVM Compiler Infrastructure4//5// This file is distributed under the University of Illinois Open Source6// License. See LICENSE.TXT for details.7//8//===----------------------------------------------------------------------===//9 10#ifndef LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_MANAGARM_H11#define LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_MANAGARM_H12 13#include "Gnu.h"14#include "clang/Driver/ToolChain.h"15 16namespace clang {17namespace driver {18namespace toolchains {19 20class LLVM_LIBRARY_VISIBILITY Managarm : public Generic_ELF {21public: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 void32 AddClangSystemIncludeArgs(const llvm::opt::ArgList &DriverArgs,33 llvm::opt::ArgStringList &CC1Args) const override;34 void35 addLibStdCxxIncludePaths(const llvm::opt::ArgList &DriverArgs,36 llvm::opt::ArgStringList &CC1Args) const override;37 38 bool IsAArch64OutlineAtomicsDefault(39 const llvm::opt::ArgList &Args) const override {40 return true;41 }42 43 SanitizerMask getSupportedSanitizers() const override;44 std::string computeSysRoot() const override;45 46 std::string getDynamicLinker(const llvm::opt::ArgList &Args) const override;47 48 void addExtraOpts(llvm::opt::ArgStringList &CmdArgs) const override;49 50 std::vector<std::string> ExtraOpts;51 52protected:53 Tool *buildAssembler() const override;54 Tool *buildLinker() const override;55};56 57} // end namespace toolchains58} // end namespace driver59} // end namespace clang60 61#endif // LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_MANAGARM_H62