brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.9 KiB · 23c93aa Raw
119 lines · c
1//===--- AIX.h - AIX ToolChain Implementations ------------------*- C++ -*-===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9#ifndef LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_AIX_H10#define LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_AIX_H11 12#include "clang/Driver/Tool.h"13#include "clang/Driver/ToolChain.h"14 15namespace clang {16namespace driver {17namespace tools {18 19/// Directly call system default assembler and linker.20namespace aix {21 22class LLVM_LIBRARY_VISIBILITY Assembler final : public Tool {23public:24  Assembler(const ToolChain &TC) : Tool("aix::Assembler", "assembler", TC) {}25 26  bool hasIntegratedCPP() const override { return false; }27 28  void ConstructJob(Compilation &C, const JobAction &JA,29                    const InputInfo &Output, const InputInfoList &Inputs,30                    const llvm::opt::ArgList &TCArgs,31                    const char *LinkingOutput) const override;32};33 34class LLVM_LIBRARY_VISIBILITY Linker final : public Tool {35public:36  Linker(const ToolChain &TC) : Tool("aix::Linker", "linker", TC) {}37 38  bool hasIntegratedCPP() const override { return false; }39  bool isLinkJob() const override { return true; }40 41  void ConstructJob(Compilation &C, const JobAction &JA,42                    const InputInfo &Output, const InputInfoList &Inputs,43                    const llvm::opt::ArgList &TCArgs,44                    const char *LinkingOutput) const override;45};46 47} // end namespace aix48 49} // end namespace tools50} // end namespace driver51} // end namespace clang52 53namespace clang {54namespace driver {55namespace toolchains {56 57class LLVM_LIBRARY_VISIBILITY AIX : public ToolChain {58public:59  AIX(const Driver &D, const llvm::Triple &Triple,60      const llvm::opt::ArgList &Args);61 62  bool parseInlineAsmUsingAsmParser() const override {63    return ParseInlineAsmUsingAsmParser;64  }65  bool isPICDefault() const override { return true; }66  bool isPIEDefault(const llvm::opt::ArgList &Args) const override {67    return false;68  }69  bool isPICDefaultForced() const override { return true; }70  bool HasNativeLLVMSupport() const override { return true; }71 72  void73  AddClangSystemIncludeArgs(const llvm::opt::ArgList &DriverArgs,74                            llvm::opt::ArgStringList &CC1Args) const override;75 76  void AddClangCXXStdlibIncludeArgs(77      const llvm::opt::ArgList &DriverArgs,78      llvm::opt::ArgStringList &CC1Args) const override;79 80  void AddCXXStdlibLibArgs(const llvm::opt::ArgList &Args,81                           llvm::opt::ArgStringList &CmdArgs) const override;82 83  void addClangTargetOptions(84      const llvm::opt::ArgList &Args, llvm::opt::ArgStringList &CC1Args,85      Action::OffloadKind DeviceOffloadingKind) const override;86 87  void addProfileRTLibs(const llvm::opt::ArgList &Args,88                        llvm::opt::ArgStringList &CmdArgs) const override;89 90  CXXStdlibType GetDefaultCXXStdlibType() const override;91 92  RuntimeLibType GetDefaultRuntimeLibType() const override;93 94  // Set default DWARF version to 3 for now as latest AIX OS supports version 3.95  unsigned GetDefaultDwarfVersion() const override { return 3; }96 97  llvm::DebuggerKind getDefaultDebuggerTuning() const override {98    return llvm::DebuggerKind::DBX;99  }100 101  path_list getArchSpecificLibPaths() const override { return path_list(); };102 103protected:104  Tool *buildAssembler() const override;105  Tool *buildLinker() const override;106 107private:108  llvm::StringRef GetHeaderSysroot(const llvm::opt::ArgList &DriverArgs) const;109  bool ParseInlineAsmUsingAsmParser;110  void AddOpenMPIncludeArgs(const llvm::opt::ArgList &DriverArgs,111                            llvm::opt::ArgStringList &CC1Args) const;112};113 114} // end namespace toolchains115} // end namespace driver116} // end namespace clang117 118#endif // LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_AIX_H119