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 RenderTargetOptions(
const llvm::Triple &EffectiveTriple,
46 const llvm::opt::ArgList &Args,
bool KernelOrKext,
47 llvm::opt::ArgStringList &CmdArgs)
const;
49 void AddAArch64TargetArgs(
const llvm::opt::ArgList &Args,
50 llvm::opt::ArgStringList &CmdArgs)
const;
51 void AddARMTargetArgs(
const llvm::Triple &Triple,
52 const llvm::opt::ArgList &Args,
53 llvm::opt::ArgStringList &CmdArgs,
54 bool KernelOrKext)
const;
55 void AddARM64TargetArgs(
const llvm::opt::ArgList &Args,
56 llvm::opt::ArgStringList &CmdArgs)
const;
57 void AddMIPSTargetArgs(
const llvm::opt::ArgList &Args,
58 llvm::opt::ArgStringList &CmdArgs)
const;
59 void AddPPCTargetArgs(
const llvm::opt::ArgList &Args,
60 llvm::opt::ArgStringList &CmdArgs)
const;
61 void AddR600TargetArgs(
const llvm::opt::ArgList &Args,
62 llvm::opt::ArgStringList &CmdArgs)
const;
63 void AddRISCVTargetArgs(
const llvm::opt::ArgList &Args,
64 llvm::opt::ArgStringList &CmdArgs)
const;
65 void AddSparcTargetArgs(
const llvm::opt::ArgList &Args,
66 llvm::opt::ArgStringList &CmdArgs)
const;
67 void AddSystemZTargetArgs(
const llvm::opt::ArgList &Args,
68 llvm::opt::ArgStringList &CmdArgs)
const;
69 void AddX86TargetArgs(
const llvm::opt::ArgList &Args,
70 llvm::opt::ArgStringList &CmdArgs)
const;
71 void AddHexagonTargetArgs(
const llvm::opt::ArgList &Args,
72 llvm::opt::ArgStringList &CmdArgs)
const;
73 void AddLanaiTargetArgs(
const llvm::opt::ArgList &Args,
74 llvm::opt::ArgStringList &CmdArgs)
const;
75 void AddWebAssemblyTargetArgs(
const llvm::opt::ArgList &Args,
76 llvm::opt::ArgStringList &CmdArgs)
const;
78 enum RewriteKind { RK_None, RK_Fragile, RK_NonFragile };
80 ObjCRuntime AddObjCRuntimeArgs(
const llvm::opt::ArgList &args,
81 llvm::opt::ArgStringList &cmdArgs,
82 RewriteKind rewrite)
const;
84 void AddClangCLArgs(
const llvm::opt::ArgList &Args,
types::ID InputType,
85 llvm::opt::ArgStringList &CmdArgs,
87 bool *EmitCodeView)
const;
91 mutable std::unique_ptr<visualstudio::Compiler> CLFallback;
93 mutable std::unique_ptr<llvm::raw_fd_ostream> CompilationDatabase =
nullptr;
97 const llvm::opt::ArgList &Args)
const;
110 const llvm::opt::ArgList &TCArgs,
111 const char *LinkingOutput)
const override;
118 :
Tool(
"clang::as",
"clang integrated assembler", TC, RF_Full) {}
119 void AddMIPSTargetArgs(
const llvm::opt::ArgList &Args,
120 llvm::opt::ArgStringList &CmdArgs)
const;
121 void AddX86TargetArgs(
const llvm::opt::ArgList &Args,
122 llvm::opt::ArgStringList &CmdArgs)
const;
129 const llvm::opt::ArgList &TCArgs,
130 const char *LinkingOutput)
const override;
137 :
Tool(
"offload bundler",
"clang-offload-bundler", TC) {}
142 const llvm::opt::ArgList &TCArgs,
143 const char *LinkingOutput)
const override;
147 const llvm::opt::ArgList &TCArgs,
148 const char *LinkingOutput)
const override;
155 #endif // LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_CLANG_H
Driver - Encapsulate logic for constructing compilation processes from a set of gcc-driver-like comma...
Dataflow Directional Tag Classes.
The basic abstraction for the target Objective-C runtime.
Compilation - A set of tasks to perform for a single driver invocation.