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