xref: /openbsd-src/gnu/llvm/clang/lib/Driver/ToolChains/VEToolchain.h (revision 12c855180aad702bbcca06e0398d774beeafb155)
1ec727ea7Spatrick //===--- VE.h - VE ToolChain Implementations --------------------*- C++ -*-===//
2ec727ea7Spatrick //
3ec727ea7Spatrick // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4ec727ea7Spatrick // See https://llvm.org/LICENSE.txt for license information.
5ec727ea7Spatrick // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6ec727ea7Spatrick //
7ec727ea7Spatrick //===----------------------------------------------------------------------===//
8ec727ea7Spatrick 
9ec727ea7Spatrick #ifndef LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_VE_H
10ec727ea7Spatrick #define LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_VE_H
11ec727ea7Spatrick 
12ec727ea7Spatrick #include "Linux.h"
13ec727ea7Spatrick #include "clang/Driver/ToolChain.h"
14ec727ea7Spatrick 
15ec727ea7Spatrick namespace clang {
16ec727ea7Spatrick namespace driver {
17ec727ea7Spatrick namespace toolchains {
18ec727ea7Spatrick 
19ec727ea7Spatrick class LLVM_LIBRARY_VISIBILITY VEToolChain : public Linux {
20ec727ea7Spatrick public:
21ec727ea7Spatrick   VEToolChain(const Driver &D, const llvm::Triple &Triple,
22ec727ea7Spatrick               const llvm::opt::ArgList &Args);
23ec727ea7Spatrick 
24ec727ea7Spatrick protected:
25ec727ea7Spatrick   Tool *buildAssembler() const override;
26ec727ea7Spatrick   Tool *buildLinker() const override;
27ec727ea7Spatrick 
28ec727ea7Spatrick public:
29ec727ea7Spatrick   bool isPICDefault() const override;
30*12c85518Srobert   bool isPIEDefault(const llvm::opt::ArgList &Args) const override;
31ec727ea7Spatrick   bool isPICDefaultForced() const override;
32ec727ea7Spatrick   bool SupportsProfiling() const override;
33ec727ea7Spatrick   bool hasBlocksRuntime() const override;
34ec727ea7Spatrick   void
35ec727ea7Spatrick   AddClangSystemIncludeArgs(const llvm::opt::ArgList &DriverArgs,
36ec727ea7Spatrick                             llvm::opt::ArgStringList &CC1Args) const override;
37ec727ea7Spatrick   void
38ec727ea7Spatrick   addClangTargetOptions(const llvm::opt::ArgList &DriverArgs,
39ec727ea7Spatrick                         llvm::opt::ArgStringList &CC1Args,
40ec727ea7Spatrick                         Action::OffloadKind DeviceOffloadKind) const override;
41ec727ea7Spatrick   void AddClangCXXStdlibIncludeArgs(
42ec727ea7Spatrick       const llvm::opt::ArgList &DriverArgs,
43ec727ea7Spatrick       llvm::opt::ArgStringList &CC1Args) const override;
44ec727ea7Spatrick   void AddCXXStdlibLibArgs(const llvm::opt::ArgList &Args,
45ec727ea7Spatrick                            llvm::opt::ArgStringList &CmdArgs) const override;
46ec727ea7Spatrick 
47ec727ea7Spatrick   llvm::ExceptionHandling
48ec727ea7Spatrick   GetExceptionModel(const llvm::opt::ArgList &Args) const override;
49ec727ea7Spatrick 
50ec727ea7Spatrick   CXXStdlibType
GetCXXStdlibType(const llvm::opt::ArgList & Args)51ec727ea7Spatrick   GetCXXStdlibType(const llvm::opt::ArgList &Args) const override {
52ec727ea7Spatrick     return ToolChain::CST_Libcxx;
53ec727ea7Spatrick   }
54ec727ea7Spatrick 
GetDefaultRuntimeLibType()55ec727ea7Spatrick   RuntimeLibType GetDefaultRuntimeLibType() const override {
56ec727ea7Spatrick     return ToolChain::RLT_CompilerRT;
57ec727ea7Spatrick   }
58ec727ea7Spatrick 
getDefaultLinker()59ec727ea7Spatrick   const char *getDefaultLinker() const override { return "nld"; }
60ec727ea7Spatrick };
61ec727ea7Spatrick 
62ec727ea7Spatrick } // end namespace toolchains
63ec727ea7Spatrick } // end namespace driver
64ec727ea7Spatrick } // end namespace clang
65ec727ea7Spatrick 
66ec727ea7Spatrick #endif // LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_VE_H
67