xref: /openbsd/gnu/llvm/clang/lib/Driver/ToolChains/Hurd.h (revision a9ac8606)
1e5dd7070Spatrick //===--- Hurd.h - Hurd ToolChain Implementations ----------*- C++ -*-===//
2e5dd7070Spatrick //
3e5dd7070Spatrick // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4e5dd7070Spatrick // See https://llvm.org/LICENSE.txt for license information.
5e5dd7070Spatrick // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6e5dd7070Spatrick //
7e5dd7070Spatrick //===----------------------------------------------------------------------===//
8e5dd7070Spatrick 
9e5dd7070Spatrick #ifndef LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_Hurd_H
10e5dd7070Spatrick #define LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_Hurd_H
11e5dd7070Spatrick 
12e5dd7070Spatrick #include "Gnu.h"
13e5dd7070Spatrick #include "clang/Driver/ToolChain.h"
14e5dd7070Spatrick 
15e5dd7070Spatrick namespace clang {
16e5dd7070Spatrick namespace driver {
17e5dd7070Spatrick namespace toolchains {
18e5dd7070Spatrick 
19e5dd7070Spatrick class LLVM_LIBRARY_VISIBILITY Hurd : public Generic_ELF {
20e5dd7070Spatrick public:
21e5dd7070Spatrick   Hurd(const Driver &D, const llvm::Triple &Triple,
22e5dd7070Spatrick        const llvm::opt::ArgList &Args);
23e5dd7070Spatrick 
24e5dd7070Spatrick   bool HasNativeLLVMSupport() const override;
25e5dd7070Spatrick 
26e5dd7070Spatrick   void
27e5dd7070Spatrick   AddClangSystemIncludeArgs(const llvm::opt::ArgList &DriverArgs,
28e5dd7070Spatrick                             llvm::opt::ArgStringList &CC1Args) const override;
29*a9ac8606Spatrick   void
30*a9ac8606Spatrick   addLibStdCxxIncludePaths(const llvm::opt::ArgList &DriverArgs,
31*a9ac8606Spatrick                            llvm::opt::ArgStringList &CC1Args) const override;
32e5dd7070Spatrick 
33389bb291Spatrick   std::string getDynamicLinker(const llvm::opt::ArgList &Args) const override;
34389bb291Spatrick 
35389bb291Spatrick   void addExtraOpts(llvm::opt::ArgStringList &CmdArgs) const override;
36e5dd7070Spatrick 
37e5dd7070Spatrick   std::vector<std::string> ExtraOpts;
38e5dd7070Spatrick 
39e5dd7070Spatrick protected:
40e5dd7070Spatrick   Tool *buildAssembler() const override;
41e5dd7070Spatrick   Tool *buildLinker() const override;
42e5dd7070Spatrick 
43e5dd7070Spatrick   std::string getMultiarchTriple(const Driver &D,
44e5dd7070Spatrick                                  const llvm::Triple &TargetTriple,
45e5dd7070Spatrick                                  StringRef SysRoot) const override;
46e5dd7070Spatrick };
47e5dd7070Spatrick 
48e5dd7070Spatrick } // end namespace toolchains
49e5dd7070Spatrick } // end namespace driver
50e5dd7070Spatrick } // end namespace clang
51e5dd7070Spatrick 
52e5dd7070Spatrick #endif // LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_Hurd_H
53