Path: blob/main/contrib/llvm-project/clang/lib/Driver/ToolChains/Haiku.h
35269 views
//===--- Haiku.h - Haiku 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_HAIKU_H9#define LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_HAIKU_H1011#include "Gnu.h"12#include "clang/Driver/Driver.h"13#include "clang/Driver/ToolChain.h"1415namespace clang {16namespace driver {17namespace tools {1819/// Directly call GNU Binutils assembler and linker20namespace haiku {21class LLVM_LIBRARY_VISIBILITY Linker final : public Tool {22public:23Linker(const ToolChain &TC) : Tool("haiku::Linker", "linker", TC) {}2425bool hasIntegratedCPP() const override { return false; }26bool isLinkJob() const override { return true; }2728void ConstructJob(Compilation &C, const JobAction &JA,29const InputInfo &Output, const InputInfoList &Inputs,30const llvm::opt::ArgList &TCArgs,31const char *LinkingOutput) const override;32};33} // end namespace haiku34} // end namespace tools3536namespace toolchains {3738class LLVM_LIBRARY_VISIBILITY Haiku : public Generic_ELF {39public:40Haiku(const Driver &D, const llvm::Triple &Triple,41const llvm::opt::ArgList &Args);4243bool HasNativeLLVMSupport() const override;4445bool IsMathErrnoDefault() const override { return false; }46bool IsObjCNonFragileABIDefault() const override { return true; }47bool isPICDefault() const override { return true; }4849const char *getDefaultLinker() const override { return "ld.lld"; }5051void AddClangSystemIncludeArgs(52const llvm::opt::ArgList &DriverArgs,53llvm::opt::ArgStringList &CC1Args) const override;54void addLibCxxIncludePaths(55const llvm::opt::ArgList &DriverArgs,56llvm::opt::ArgStringList &CC1Args) const override;5758unsigned GetDefaultDwarfVersion() const override { return 4; }5960bool GetDefaultStandaloneDebug() const override { return true; }6162protected:63Tool *buildLinker() const override;64};6566} // end namespace toolchains67} // end namespace driver68} // end namespace clang6970#endif // LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_HAIKU_H717273