xref: /freebsd/contrib/llvm-project/clang/lib/Driver/ToolChains/CSKYToolChain.h (revision 5f757f3ff9144b609b3c433dfd370cc6bdc191ad)
181ad6265SDimitry Andric //===--- CSKYToolchain.h - CSKY ToolChain Implementations -----*- C++ -*-===//
281ad6265SDimitry Andric //
381ad6265SDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
481ad6265SDimitry Andric // See https://llvm.org/LICENSE.txt for license information.
581ad6265SDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
681ad6265SDimitry Andric //
781ad6265SDimitry Andric //===----------------------------------------------------------------------===//
881ad6265SDimitry Andric 
981ad6265SDimitry Andric #ifndef LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_CSKYTOOLCHAIN_H
1081ad6265SDimitry Andric #define LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_CSKYTOOLCHAIN_H
1181ad6265SDimitry Andric 
1281ad6265SDimitry Andric #include "Gnu.h"
1381ad6265SDimitry Andric #include "clang/Driver/ToolChain.h"
1481ad6265SDimitry Andric 
1581ad6265SDimitry Andric namespace clang {
1681ad6265SDimitry Andric namespace driver {
1781ad6265SDimitry Andric namespace toolchains {
1881ad6265SDimitry Andric 
1981ad6265SDimitry Andric class LLVM_LIBRARY_VISIBILITY CSKYToolChain : public Generic_ELF {
2081ad6265SDimitry Andric public:
2181ad6265SDimitry Andric   CSKYToolChain(const Driver &D, const llvm::Triple &Triple,
2281ad6265SDimitry Andric                 const llvm::opt::ArgList &Args);
2381ad6265SDimitry Andric 
2481ad6265SDimitry Andric   void addClangTargetOptions(const llvm::opt::ArgList &DriverArgs,
2581ad6265SDimitry Andric                              llvm::opt::ArgStringList &CC1Args,
2681ad6265SDimitry Andric                              Action::OffloadKind) const override;
2781ad6265SDimitry Andric   RuntimeLibType GetDefaultRuntimeLibType() const override;
2881ad6265SDimitry Andric   UnwindLibType GetUnwindLibType(const llvm::opt::ArgList &Args) const override;
2981ad6265SDimitry Andric   void
3081ad6265SDimitry Andric   AddClangSystemIncludeArgs(const llvm::opt::ArgList &DriverArgs,
3181ad6265SDimitry Andric                             llvm::opt::ArgStringList &CC1Args) const override;
3281ad6265SDimitry Andric   void
3381ad6265SDimitry Andric   addLibStdCxxIncludePaths(const llvm::opt::ArgList &DriverArgs,
3481ad6265SDimitry Andric                            llvm::opt::ArgStringList &CC1Args) const override;
3581ad6265SDimitry Andric 
3681ad6265SDimitry Andric protected:
3781ad6265SDimitry Andric   Tool *buildLinker() const override;
3881ad6265SDimitry Andric 
3981ad6265SDimitry Andric private:
4081ad6265SDimitry Andric   std::string computeSysRoot() const override;
4181ad6265SDimitry Andric };
4281ad6265SDimitry Andric 
4381ad6265SDimitry Andric } // end namespace toolchains
4481ad6265SDimitry Andric 
4581ad6265SDimitry Andric namespace tools {
4681ad6265SDimitry Andric namespace CSKY {
47*5f757f3fSDimitry Andric class LLVM_LIBRARY_VISIBILITY Linker final : public Tool {
4881ad6265SDimitry Andric public:
4981ad6265SDimitry Andric   Linker(const ToolChain &TC) : Tool("CSKY::Linker", "ld", TC) {}
5081ad6265SDimitry Andric   bool hasIntegratedCPP() const override { return false; }
5181ad6265SDimitry Andric   bool isLinkJob() const override { return true; }
5281ad6265SDimitry Andric   void ConstructJob(Compilation &C, const JobAction &JA,
5381ad6265SDimitry Andric                     const InputInfo &Output, const InputInfoList &Inputs,
5481ad6265SDimitry Andric                     const llvm::opt::ArgList &TCArgs,
5581ad6265SDimitry Andric                     const char *LinkingOutput) const override;
5681ad6265SDimitry Andric };
5781ad6265SDimitry Andric } // end namespace CSKY
5881ad6265SDimitry Andric } // end namespace tools
5981ad6265SDimitry Andric 
6081ad6265SDimitry Andric } // end namespace driver
6181ad6265SDimitry Andric } // end namespace clang
6281ad6265SDimitry Andric 
6381ad6265SDimitry Andric #endif // LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_CSKYTOOLCHAIN_H
64