9 #ifndef LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_Clang_H 10 #define LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_Clang_H 17 #include "llvm/ADT/Triple.h" 18 #include "llvm/Option/Option.h" 19 #include "llvm/Support/raw_ostream.h" 30 static const char *getBaseInputName(
const llvm::opt::ArgList &Args,
32 static const char *getBaseInputStem(
const llvm::opt::ArgList &Args,
34 static const char *getDependencyFileName(
const llvm::opt::ArgList &Args,
39 const Driver &D,
const llvm::opt::ArgList &Args,
40 llvm::opt::ArgStringList &CmdArgs,
44 void RenderTargetOptions(
const llvm::Triple &EffectiveTriple,
45 const llvm::opt::ArgList &Args,
bool KernelOrKext,
46 llvm::opt::ArgStringList &CmdArgs)
const;
48 void AddAArch64TargetArgs(
const llvm::opt::ArgList &Args,
49 llvm::opt::ArgStringList &CmdArgs)
const;
50 void AddARMTargetArgs(
const llvm::Triple &Triple,
51 const llvm::opt::ArgList &Args,
52 llvm::opt::ArgStringList &CmdArgs,
53 bool KernelOrKext)
const;
54 void AddARM64TargetArgs(
const llvm::opt::ArgList &Args,
55 llvm::opt::ArgStringList &CmdArgs)
const;
56 void AddMIPSTargetArgs(
const llvm::opt::ArgList &Args,
57 llvm::opt::ArgStringList &CmdArgs)
const;
58 void AddPPCTargetArgs(
const llvm::opt::ArgList &Args,
59 llvm::opt::ArgStringList &CmdArgs)
const;
60 void AddR600TargetArgs(
const llvm::opt::ArgList &Args,
61 llvm::opt::ArgStringList &CmdArgs)
const;
62 void AddRISCVTargetArgs(
const llvm::opt::ArgList &Args,
63 llvm::opt::ArgStringList &CmdArgs)
const;
64 void AddSparcTargetArgs(
const llvm::opt::ArgList &Args,
65 llvm::opt::ArgStringList &CmdArgs)
const;
66 void AddSystemZTargetArgs(
const llvm::opt::ArgList &Args,
67 llvm::opt::ArgStringList &CmdArgs)
const;
68 void AddX86TargetArgs(
const llvm::opt::ArgList &Args,
69 llvm::opt::ArgStringList &CmdArgs)
const;
70 void AddHexagonTargetArgs(
const llvm::opt::ArgList &Args,
71 llvm::opt::ArgStringList &CmdArgs)
const;
72 void AddLanaiTargetArgs(
const llvm::opt::ArgList &Args,
73 llvm::opt::ArgStringList &CmdArgs)
const;
74 void AddWebAssemblyTargetArgs(
const llvm::opt::ArgList &Args,
75 llvm::opt::ArgStringList &CmdArgs)
const;
77 enum RewriteKind { RK_None, RK_Fragile, RK_NonFragile };
79 ObjCRuntime AddObjCRuntimeArgs(
const llvm::opt::ArgList &args,
80 llvm::opt::ArgStringList &cmdArgs,
81 RewriteKind rewrite)
const;
83 void AddClangCLArgs(
const llvm::opt::ArgList &Args,
types::ID InputType,
84 llvm::opt::ArgStringList &CmdArgs,
86 bool *EmitCodeView)
const;
90 mutable std::unique_ptr<visualstudio::Compiler> CLFallback;
92 mutable std::unique_ptr<llvm::raw_fd_ostream> CompilationDatabase =
nullptr;
96 const llvm::opt::ArgList &Args)
const;
109 const llvm::opt::ArgList &TCArgs,
110 const char *LinkingOutput)
const override;
117 :
Tool(
"clang::as",
"clang integrated assembler", TC, RF_Full) {}
118 void AddMIPSTargetArgs(
const llvm::opt::ArgList &Args,
119 llvm::opt::ArgStringList &CmdArgs)
const;
120 void AddX86TargetArgs(
const llvm::opt::ArgList &Args,
121 llvm::opt::ArgStringList &CmdArgs)
const;
122 void AddRISCVTargetArgs(
const llvm::opt::ArgList &Args,
123 llvm::opt::ArgStringList &CmdArgs)
const;
130 const llvm::opt::ArgList &TCArgs,
131 const char *LinkingOutput)
const override;
138 :
Tool(
"offload bundler",
"clang-offload-bundler", TC) {}
143 const llvm::opt::ArgList &TCArgs,
144 const char *LinkingOutput)
const override;
148 const llvm::opt::ArgList &TCArgs,
149 const char *LinkingOutput)
const override;
156 #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.