1*480093f4SDimitry Andric //===--- AIX.h - AIX ToolChain Implementations ------------------*- C++ -*-===// 2*480093f4SDimitry Andric // 3*480093f4SDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4*480093f4SDimitry Andric // See https://llvm.org/LICENSE.txt for license information. 5*480093f4SDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6*480093f4SDimitry Andric // 7*480093f4SDimitry Andric //===----------------------------------------------------------------------===// 8*480093f4SDimitry Andric 9*480093f4SDimitry Andric #ifndef LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_AIX_H 10*480093f4SDimitry Andric #define LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_AIX_H 11*480093f4SDimitry Andric 12*480093f4SDimitry Andric #include "clang/Driver/Tool.h" 13*480093f4SDimitry Andric #include "clang/Driver/ToolChain.h" 14*480093f4SDimitry Andric 15*480093f4SDimitry Andric namespace clang { 16*480093f4SDimitry Andric namespace driver { 17*480093f4SDimitry Andric namespace tools { 18*480093f4SDimitry Andric 19*480093f4SDimitry Andric /// aix -- Directly call system default assembler and linker. 20*480093f4SDimitry Andric namespace aix { 21*480093f4SDimitry Andric 22*480093f4SDimitry Andric class LLVM_LIBRARY_VISIBILITY Assembler : public Tool { 23*480093f4SDimitry Andric public: 24*480093f4SDimitry Andric Assembler(const ToolChain &TC) : Tool("aix::Assembler", "assembler", TC) {} 25*480093f4SDimitry Andric 26*480093f4SDimitry Andric bool hasIntegratedCPP() const override { return false; } 27*480093f4SDimitry Andric 28*480093f4SDimitry Andric void ConstructJob(Compilation &C, const JobAction &JA, 29*480093f4SDimitry Andric const InputInfo &Output, const InputInfoList &Inputs, 30*480093f4SDimitry Andric const llvm::opt::ArgList &TCArgs, 31*480093f4SDimitry Andric const char *LinkingOutput) const override; 32*480093f4SDimitry Andric }; 33*480093f4SDimitry Andric 34*480093f4SDimitry Andric class LLVM_LIBRARY_VISIBILITY Linker : public Tool { 35*480093f4SDimitry Andric public: 36*480093f4SDimitry Andric Linker(const ToolChain &TC) : Tool("aix::Linker", "linker", TC) {} 37*480093f4SDimitry Andric 38*480093f4SDimitry Andric bool hasIntegratedCPP() const override { return false; } 39*480093f4SDimitry Andric bool isLinkJob() const override { return true; } 40*480093f4SDimitry Andric 41*480093f4SDimitry Andric void ConstructJob(Compilation &C, const JobAction &JA, 42*480093f4SDimitry Andric const InputInfo &Output, const InputInfoList &Inputs, 43*480093f4SDimitry Andric const llvm::opt::ArgList &TCArgs, 44*480093f4SDimitry Andric const char *LinkingOutput) const override; 45*480093f4SDimitry Andric }; 46*480093f4SDimitry Andric 47*480093f4SDimitry Andric } // end namespace aix 48*480093f4SDimitry Andric 49*480093f4SDimitry Andric } // end namespace tools 50*480093f4SDimitry Andric } // end namespace driver 51*480093f4SDimitry Andric } // end namespace clang 52*480093f4SDimitry Andric 53*480093f4SDimitry Andric namespace clang { 54*480093f4SDimitry Andric namespace driver { 55*480093f4SDimitry Andric namespace toolchains { 56*480093f4SDimitry Andric 57*480093f4SDimitry Andric class LLVM_LIBRARY_VISIBILITY AIX : public ToolChain { 58*480093f4SDimitry Andric public: 59*480093f4SDimitry Andric AIX(const Driver &D, const llvm::Triple &Triple, 60*480093f4SDimitry Andric const llvm::opt::ArgList &Args); 61*480093f4SDimitry Andric 62*480093f4SDimitry Andric bool isPICDefault() const override { return true; } 63*480093f4SDimitry Andric bool isPIEDefault() const override { return false; } 64*480093f4SDimitry Andric bool isPICDefaultForced() const override { return true; } 65*480093f4SDimitry Andric 66*480093f4SDimitry Andric protected: 67*480093f4SDimitry Andric Tool *buildAssembler() const override; 68*480093f4SDimitry Andric Tool *buildLinker() const override; 69*480093f4SDimitry Andric }; 70*480093f4SDimitry Andric 71*480093f4SDimitry Andric } // end namespace toolchains 72*480093f4SDimitry Andric } // end namespace driver 73*480093f4SDimitry Andric } // end namespace clang 74*480093f4SDimitry Andric 75*480093f4SDimitry Andric #endif // LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_AIX_H 76