10 #ifndef LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_Clang_H
11 #define LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_Clang_H
18 #include "llvm/ADT/Triple.h"
19 #include "llvm/Option/Option.h"
20 #include "llvm/Support/raw_ostream.h"
31 static const char *getBaseInputName(
const llvm::opt::ArgList &Args,
33 static const char *getBaseInputStem(
const llvm::opt::ArgList &Args,
35 static const char *getDependencyFileName(
const llvm::opt::ArgList &Args,
40 const Driver &D,
const llvm::opt::ArgList &Args,
41 llvm::opt::ArgStringList &CmdArgs,
45 void AddAArch64TargetArgs(
const llvm::opt::ArgList &Args,
46 llvm::opt::ArgStringList &CmdArgs)
const;
47 void AddARMTargetArgs(
const llvm::Triple &Triple,
48 const llvm::opt::ArgList &Args,
49 llvm::opt::ArgStringList &CmdArgs,
50 bool KernelOrKext)
const;
51 void AddARM64TargetArgs(
const llvm::opt::ArgList &Args,
52 llvm::opt::ArgStringList &CmdArgs)
const;
53 void AddMIPSTargetArgs(
const llvm::opt::ArgList &Args,
54 llvm::opt::ArgStringList &CmdArgs)
const;
55 void AddPPCTargetArgs(
const llvm::opt::ArgList &Args,
56 llvm::opt::ArgStringList &CmdArgs)
const;
57 void AddR600TargetArgs(
const llvm::opt::ArgList &Args,
58 llvm::opt::ArgStringList &CmdArgs)
const;
59 void AddSparcTargetArgs(
const llvm::opt::ArgList &Args,
60 llvm::opt::ArgStringList &CmdArgs)
const;
61 void AddSystemZTargetArgs(
const llvm::opt::ArgList &Args,
62 llvm::opt::ArgStringList &CmdArgs)
const;
63 void AddX86TargetArgs(
const llvm::opt::ArgList &Args,
64 llvm::opt::ArgStringList &CmdArgs)
const;
65 void AddHexagonTargetArgs(
const llvm::opt::ArgList &Args,
66 llvm::opt::ArgStringList &CmdArgs)
const;
67 void AddLanaiTargetArgs(
const llvm::opt::ArgList &Args,
68 llvm::opt::ArgStringList &CmdArgs)
const;
69 void AddWebAssemblyTargetArgs(
const llvm::opt::ArgList &Args,
70 llvm::opt::ArgStringList &CmdArgs)
const;
72 enum RewriteKind { RK_None, RK_Fragile, RK_NonFragile };
74 ObjCRuntime AddObjCRuntimeArgs(
const llvm::opt::ArgList &args,
75 llvm::opt::ArgStringList &cmdArgs,
76 RewriteKind rewrite)
const;
78 void AddClangCLArgs(
const llvm::opt::ArgList &Args,
types::ID InputType,
79 llvm::opt::ArgStringList &CmdArgs,
81 bool *EmitCodeView)
const;
85 mutable std::unique_ptr<visualstudio::Compiler> CLFallback;
87 mutable std::unique_ptr<llvm::raw_fd_ostream> CompilationDatabase =
nullptr;
91 const llvm::opt::ArgList &Args)
const;
104 const llvm::opt::ArgList &TCArgs,
105 const char *LinkingOutput)
const override;
112 :
Tool(
"clang::as",
"clang integrated assembler", TC, RF_Full) {}
113 void AddMIPSTargetArgs(
const llvm::opt::ArgList &Args,
114 llvm::opt::ArgStringList &CmdArgs)
const;
115 void AddX86TargetArgs(
const llvm::opt::ArgList &Args,
116 llvm::opt::ArgStringList &CmdArgs)
const;
123 const llvm::opt::ArgList &TCArgs,
124 const char *LinkingOutput)
const override;
131 :
Tool(
"offload bundler",
"clang-offload-bundler", TC) {}
136 const llvm::opt::ArgList &TCArgs,
137 const char *LinkingOutput)
const override;
141 const llvm::opt::ArgList &TCArgs,
142 const char *LinkingOutput)
const override;
149 #endif // LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_CLANG_H
Driver - Encapsulate logic for constructing compilation processes from a set of gcc-driver-like comma...
The basic abstraction for the target Objective-C runtime.
Compilation - A set of tasks to perform for a single driver invocation.