Path: blob/main/contrib/llvm-project/clang/lib/Driver/ToolChains/AIX.h
35267 views
//===--- AIX.h - AIX ToolChain Implementations ------------------*- C++ -*-===//1//2// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.3// See https://llvm.org/LICENSE.txt for license information.4// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception5//6//===----------------------------------------------------------------------===//78#ifndef LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_AIX_H9#define LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_AIX_H1011#include "clang/Driver/Tool.h"12#include "clang/Driver/ToolChain.h"1314namespace clang {15namespace driver {16namespace tools {1718/// Directly call system default assembler and linker.19namespace aix {2021class LLVM_LIBRARY_VISIBILITY Assembler final : public Tool {22public:23Assembler(const ToolChain &TC) : Tool("aix::Assembler", "assembler", TC) {}2425bool hasIntegratedCPP() const override { return false; }2627void ConstructJob(Compilation &C, const JobAction &JA,28const InputInfo &Output, const InputInfoList &Inputs,29const llvm::opt::ArgList &TCArgs,30const char *LinkingOutput) const override;31};3233class LLVM_LIBRARY_VISIBILITY Linker final : public Tool {34public:35Linker(const ToolChain &TC) : Tool("aix::Linker", "linker", TC) {}3637bool hasIntegratedCPP() const override { return false; }38bool isLinkJob() const override { return true; }3940void ConstructJob(Compilation &C, const JobAction &JA,41const InputInfo &Output, const InputInfoList &Inputs,42const llvm::opt::ArgList &TCArgs,43const char *LinkingOutput) const override;44};4546} // end namespace aix4748} // end namespace tools49} // end namespace driver50} // end namespace clang5152namespace clang {53namespace driver {54namespace toolchains {5556class LLVM_LIBRARY_VISIBILITY AIX : public ToolChain {57public:58AIX(const Driver &D, const llvm::Triple &Triple,59const llvm::opt::ArgList &Args);6061bool parseInlineAsmUsingAsmParser() const override {62return ParseInlineAsmUsingAsmParser;63}64bool isPICDefault() const override { return true; }65bool isPIEDefault(const llvm::opt::ArgList &Args) const override {66return false;67}68bool isPICDefaultForced() const override { return true; }69bool HasNativeLLVMSupport() const override { return true; }7071void72AddClangSystemIncludeArgs(const llvm::opt::ArgList &DriverArgs,73llvm::opt::ArgStringList &CC1Args) const override;7475void AddClangCXXStdlibIncludeArgs(76const llvm::opt::ArgList &DriverArgs,77llvm::opt::ArgStringList &CC1Args) const override;7879void AddCXXStdlibLibArgs(const llvm::opt::ArgList &Args,80llvm::opt::ArgStringList &CmdArgs) const override;8182void addClangTargetOptions(83const llvm::opt::ArgList &Args, llvm::opt::ArgStringList &CC1Args,84Action::OffloadKind DeviceOffloadingKind) const override;8586void addProfileRTLibs(const llvm::opt::ArgList &Args,87llvm::opt::ArgStringList &CmdArgs) const override;8889CXXStdlibType GetDefaultCXXStdlibType() const override;9091RuntimeLibType GetDefaultRuntimeLibType() const override;9293// Set default DWARF version to 3 for now as latest AIX OS supports version 3.94unsigned GetDefaultDwarfVersion() const override { return 3; }9596llvm::DebuggerKind getDefaultDebuggerTuning() const override {97return llvm::DebuggerKind::DBX;98}99100protected:101Tool *buildAssembler() const override;102Tool *buildLinker() const override;103104private:105llvm::StringRef GetHeaderSysroot(const llvm::opt::ArgList &DriverArgs) const;106bool ParseInlineAsmUsingAsmParser;107void AddOpenMPIncludeArgs(const llvm::opt::ArgList &DriverArgs,108llvm::opt::ArgStringList &CC1Args) const;109};110111} // end namespace toolchains112} // end namespace driver113} // end namespace clang114115#endif // LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_AIX_H116117118