xref: /freebsd/contrib/llvm-project/clang/lib/Driver/ToolChains/Hurd.h (revision fe6060f10f634930ff71b7c50291ddc610da2475)
10b57cec5SDimitry Andric //===--- Hurd.h - Hurd ToolChain Implementations ----------*- C++ -*-===//
20b57cec5SDimitry Andric //
30b57cec5SDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
40b57cec5SDimitry Andric // See https://llvm.org/LICENSE.txt for license information.
50b57cec5SDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
60b57cec5SDimitry Andric //
70b57cec5SDimitry Andric //===----------------------------------------------------------------------===//
80b57cec5SDimitry Andric 
90b57cec5SDimitry Andric #ifndef LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_Hurd_H
100b57cec5SDimitry Andric #define LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_Hurd_H
110b57cec5SDimitry Andric 
120b57cec5SDimitry Andric #include "Gnu.h"
130b57cec5SDimitry Andric #include "clang/Driver/ToolChain.h"
140b57cec5SDimitry Andric 
150b57cec5SDimitry Andric namespace clang {
160b57cec5SDimitry Andric namespace driver {
170b57cec5SDimitry Andric namespace toolchains {
180b57cec5SDimitry Andric 
190b57cec5SDimitry Andric class LLVM_LIBRARY_VISIBILITY Hurd : public Generic_ELF {
200b57cec5SDimitry Andric public:
210b57cec5SDimitry Andric   Hurd(const Driver &D, const llvm::Triple &Triple,
220b57cec5SDimitry Andric        const llvm::opt::ArgList &Args);
230b57cec5SDimitry Andric 
240b57cec5SDimitry Andric   bool HasNativeLLVMSupport() const override;
250b57cec5SDimitry Andric 
260b57cec5SDimitry Andric   void
270b57cec5SDimitry Andric   AddClangSystemIncludeArgs(const llvm::opt::ArgList &DriverArgs,
280b57cec5SDimitry Andric                             llvm::opt::ArgStringList &CC1Args) const override;
29*fe6060f1SDimitry Andric   void
30*fe6060f1SDimitry Andric   addLibStdCxxIncludePaths(const llvm::opt::ArgList &DriverArgs,
31*fe6060f1SDimitry Andric                            llvm::opt::ArgStringList &CC1Args) const override;
320b57cec5SDimitry Andric 
33d65cd7a5SDimitry Andric   std::string getDynamicLinker(const llvm::opt::ArgList &Args) const override;
34d65cd7a5SDimitry Andric 
35d65cd7a5SDimitry Andric   void addExtraOpts(llvm::opt::ArgStringList &CmdArgs) const override;
360b57cec5SDimitry Andric 
370b57cec5SDimitry Andric   std::vector<std::string> ExtraOpts;
380b57cec5SDimitry Andric 
390b57cec5SDimitry Andric protected:
400b57cec5SDimitry Andric   Tool *buildAssembler() const override;
410b57cec5SDimitry Andric   Tool *buildLinker() const override;
42480093f4SDimitry Andric 
43480093f4SDimitry Andric   std::string getMultiarchTriple(const Driver &D,
44480093f4SDimitry Andric                                  const llvm::Triple &TargetTriple,
45480093f4SDimitry Andric                                  StringRef SysRoot) const override;
460b57cec5SDimitry Andric };
470b57cec5SDimitry Andric 
480b57cec5SDimitry Andric } // end namespace toolchains
490b57cec5SDimitry Andric } // end namespace driver
500b57cec5SDimitry Andric } // end namespace clang
510b57cec5SDimitry Andric 
520b57cec5SDimitry Andric #endif // LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_Hurd_H
53