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 AddSparcTargetArgs(
const llvm::opt::ArgList &Args,
64 llvm::opt::ArgStringList &CmdArgs)
const;
65 void AddSystemZTargetArgs(
const llvm::opt::ArgList &Args,
66 llvm::opt::ArgStringList &CmdArgs)
const;
67 void AddX86TargetArgs(
const llvm::opt::ArgList &Args,
68 llvm::opt::ArgStringList &CmdArgs)
const;
69 void AddHexagonTargetArgs(
const llvm::opt::ArgList &Args,
70 llvm::opt::ArgStringList &CmdArgs)
const;
71 void AddLanaiTargetArgs(
const llvm::opt::ArgList &Args,
72 llvm::opt::ArgStringList &CmdArgs)
const;
73 void AddWebAssemblyTargetArgs(
const llvm::opt::ArgList &Args,
74 llvm::opt::ArgStringList &CmdArgs)
const;
76 enum RewriteKind { RK_None, RK_Fragile, RK_NonFragile };
78 ObjCRuntime AddObjCRuntimeArgs(
const llvm::opt::ArgList &args,
79 llvm::opt::ArgStringList &cmdArgs,
80 RewriteKind rewrite)
const;
82 void AddClangCLArgs(
const llvm::opt::ArgList &Args,
types::ID InputType,
83 llvm::opt::ArgStringList &CmdArgs,
85 bool *EmitCodeView)
const;
89 mutable std::unique_ptr<visualstudio::Compiler> CLFallback;
91 mutable std::unique_ptr<llvm::raw_fd_ostream> CompilationDatabase =
nullptr;
95 const llvm::opt::ArgList &Args)
const;
108 const llvm::opt::ArgList &TCArgs,
109 const char *LinkingOutput)
const override;
116 :
Tool(
"clang::as",
"clang integrated assembler", TC, RF_Full) {}
117 void AddMIPSTargetArgs(
const llvm::opt::ArgList &Args,
118 llvm::opt::ArgStringList &CmdArgs)
const;
119 void AddX86TargetArgs(
const llvm::opt::ArgList &Args,
120 llvm::opt::ArgStringList &CmdArgs)
const;
127 const llvm::opt::ArgList &TCArgs,
128 const char *LinkingOutput)
const override;
135 :
Tool(
"offload bundler",
"clang-offload-bundler", TC) {}
140 const llvm::opt::ArgList &TCArgs,
141 const char *LinkingOutput)
const override;
145 const llvm::opt::ArgList &TCArgs,
146 const char *LinkingOutput)
const override;
153 #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.