xref: /freebsd/contrib/llvm-project/clang/lib/Driver/ToolChains/Hurd.h (revision 480093f4440d54b30b3025afeac24b48f2ba7a2e)
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;
290b57cec5SDimitry Andric 
300b57cec5SDimitry Andric   virtual std::string computeSysRoot() const;
310b57cec5SDimitry Andric 
320b57cec5SDimitry Andric   virtual std::string getDynamicLinker(const llvm::opt::ArgList &Args) const;
330b57cec5SDimitry Andric 
340b57cec5SDimitry Andric   std::vector<std::string> ExtraOpts;
350b57cec5SDimitry Andric 
360b57cec5SDimitry Andric protected:
370b57cec5SDimitry Andric   Tool *buildAssembler() const override;
380b57cec5SDimitry Andric   Tool *buildLinker() const override;
39*480093f4SDimitry Andric 
40*480093f4SDimitry Andric   std::string getMultiarchTriple(const Driver &D,
41*480093f4SDimitry Andric                                  const llvm::Triple &TargetTriple,
42*480093f4SDimitry Andric                                  StringRef SysRoot) const override;
430b57cec5SDimitry Andric };
440b57cec5SDimitry Andric 
450b57cec5SDimitry Andric } // end namespace toolchains
460b57cec5SDimitry Andric } // end namespace driver
470b57cec5SDimitry Andric } // end namespace clang
480b57cec5SDimitry Andric 
490b57cec5SDimitry Andric #endif // LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_Hurd_H
50