15ffd83dbSDimitry Andric //===--- VE.h - VE ToolChain Implementations --------------------*- C++ -*-===// 25ffd83dbSDimitry Andric // 35ffd83dbSDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 45ffd83dbSDimitry Andric // See https://llvm.org/LICENSE.txt for license information. 55ffd83dbSDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 65ffd83dbSDimitry Andric // 75ffd83dbSDimitry Andric //===----------------------------------------------------------------------===// 85ffd83dbSDimitry Andric 95ffd83dbSDimitry Andric #ifndef LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_VE_H 105ffd83dbSDimitry Andric #define LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_VE_H 115ffd83dbSDimitry Andric 125ffd83dbSDimitry Andric #include "Linux.h" 135ffd83dbSDimitry Andric #include "clang/Driver/ToolChain.h" 145ffd83dbSDimitry Andric 155ffd83dbSDimitry Andric namespace clang { 165ffd83dbSDimitry Andric namespace driver { 175ffd83dbSDimitry Andric namespace toolchains { 185ffd83dbSDimitry Andric 195ffd83dbSDimitry Andric class LLVM_LIBRARY_VISIBILITY VEToolChain : public Linux { 205ffd83dbSDimitry Andric public: 215ffd83dbSDimitry Andric VEToolChain(const Driver &D, const llvm::Triple &Triple, 225ffd83dbSDimitry Andric const llvm::opt::ArgList &Args); 235ffd83dbSDimitry Andric 245ffd83dbSDimitry Andric protected: 255ffd83dbSDimitry Andric Tool *buildAssembler() const override; 265ffd83dbSDimitry Andric Tool *buildLinker() const override; 275ffd83dbSDimitry Andric 285ffd83dbSDimitry Andric public: 295ffd83dbSDimitry Andric bool isPICDefault() const override; 30*349cc55cSDimitry Andric bool isPIEDefault(const llvm::opt::ArgList &Args) const override; 315ffd83dbSDimitry Andric bool isPICDefaultForced() const override; 325ffd83dbSDimitry Andric bool SupportsProfiling() const override; 335ffd83dbSDimitry Andric bool hasBlocksRuntime() const override; 345ffd83dbSDimitry Andric void 355ffd83dbSDimitry Andric AddClangSystemIncludeArgs(const llvm::opt::ArgList &DriverArgs, 365ffd83dbSDimitry Andric llvm::opt::ArgStringList &CC1Args) const override; 375ffd83dbSDimitry Andric void 385ffd83dbSDimitry Andric addClangTargetOptions(const llvm::opt::ArgList &DriverArgs, 395ffd83dbSDimitry Andric llvm::opt::ArgStringList &CC1Args, 405ffd83dbSDimitry Andric Action::OffloadKind DeviceOffloadKind) const override; 415ffd83dbSDimitry Andric void AddClangCXXStdlibIncludeArgs( 425ffd83dbSDimitry Andric const llvm::opt::ArgList &DriverArgs, 435ffd83dbSDimitry Andric llvm::opt::ArgStringList &CC1Args) const override; 445ffd83dbSDimitry Andric void AddCXXStdlibLibArgs(const llvm::opt::ArgList &Args, 455ffd83dbSDimitry Andric llvm::opt::ArgStringList &CmdArgs) const override; 465ffd83dbSDimitry Andric 475ffd83dbSDimitry Andric llvm::ExceptionHandling 485ffd83dbSDimitry Andric GetExceptionModel(const llvm::opt::ArgList &Args) const override; 495ffd83dbSDimitry Andric 505ffd83dbSDimitry Andric CXXStdlibType GetCXXStdlibType(const llvm::opt::ArgList & Args)515ffd83dbSDimitry Andric GetCXXStdlibType(const llvm::opt::ArgList &Args) const override { 525ffd83dbSDimitry Andric return ToolChain::CST_Libcxx; 535ffd83dbSDimitry Andric } 545ffd83dbSDimitry Andric GetDefaultRuntimeLibType()555ffd83dbSDimitry Andric RuntimeLibType GetDefaultRuntimeLibType() const override { 565ffd83dbSDimitry Andric return ToolChain::RLT_CompilerRT; 575ffd83dbSDimitry Andric } 585ffd83dbSDimitry Andric getDefaultLinker()595ffd83dbSDimitry Andric const char *getDefaultLinker() const override { return "nld"; } 605ffd83dbSDimitry Andric }; 615ffd83dbSDimitry Andric 625ffd83dbSDimitry Andric } // end namespace toolchains 635ffd83dbSDimitry Andric } // end namespace driver 645ffd83dbSDimitry Andric } // end namespace clang 655ffd83dbSDimitry Andric 665ffd83dbSDimitry Andric #endif // LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_VE_H 67