9 #ifndef LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_GNU_H 10 #define LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_GNU_H 33 StringRef Path,
const llvm::opt::ArgList &Args,
41 virtual void anchor();
45 :
Tool(Name, ShortName, TC, RF_Full,
llvm::sys::WEM_CurrentCodePage) {}
58 const llvm::opt::ArgList &TCArgs,
59 const char *LinkingOutput)
const override;
71 const llvm::opt::ArgList &TCArgs,
72 const char *LinkingOutput)
const override;
81 :
GnuTool(Name, ShortName, TC) {}
89 const llvm::opt::ArgList &TCArgs,
90 const char *LinkingOutput)
const override;
94 virtual void RenderExtraToolArgs(
const JobAction &JA,
95 llvm::opt::ArgStringList &CmdArgs)
const = 0;
101 :
Common(
"gcc::Preprocessor",
"gcc preprocessor", TC) {}
106 void RenderExtraToolArgs(
const JobAction &JA,
107 llvm::opt::ArgStringList &CmdArgs)
const override;
117 void RenderExtraToolArgs(
const JobAction &JA,
118 llvm::opt::ArgStringList &CmdArgs)
const override;
128 void RenderExtraToolArgs(
const JobAction &JA,
129 llvm::opt::ArgStringList &CmdArgs)
const override;
134 namespace toolchains {
169 static GCCVersion Parse(StringRef VersionText);
170 bool isOlderThan(
int RHSMajor,
int RHSMinor,
int RHSPatch,
171 StringRef RHSPatchSuffix = StringRef())
const;
188 llvm::Triple GCCTriple;
192 std::string GCCInstallPath;
193 std::string GCCParentLibPath;
205 std::set<std::string> CandidateGCCInstallPaths;
212 void init(
const llvm::Triple &TargetTriple,
const llvm::opt::ArgList &Args,
219 const llvm::Triple &
getTriple()
const {
return GCCTriple; }
235 bool getBiarchSibling(
Multilib &M)
const;
241 void print(raw_ostream &OS)
const;
245 CollectLibDirsAndTriples(
const llvm::Triple &TargetTriple,
246 const llvm::Triple &BiarchTriple,
252 void AddDefaultGCCPrefixes(
const llvm::Triple &TargetTriple,
256 bool ScanGCCForMultilibs(
const llvm::Triple &TargetTriple,
257 const llvm::opt::ArgList &Args,
259 bool NeedsBiarchSuffix =
false);
261 void ScanLibDirForGCCTriple(
const llvm::Triple &TargetArch,
262 const llvm::opt::ArgList &Args,
263 const std::string &LibDir,
264 StringRef CandidateTriple,
265 bool NeedsBiarchSuffix =
false);
267 bool ScanGentooConfigs(
const llvm::Triple &TargetTriple,
268 const llvm::opt::ArgList &Args,
272 bool ScanGentooGccConfig(
const llvm::Triple &TargetTriple,
273 const llvm::opt::ArgList &Args,
274 StringRef CandidateTriple,
275 bool NeedsBiarchSuffix =
false);
284 const llvm::opt::ArgList &Args);
287 void printVerboseInfo(raw_ostream &OS)
const override;
289 bool IsUnwindTablesDefault(
const llvm::opt::ArgList &Args)
const override;
290 bool isPICDefault()
const override;
291 bool isPIEDefault()
const override;
292 bool isPICDefaultForced()
const override;
293 bool IsIntegratedAssemblerDefault()
const override;
294 llvm::opt::DerivedArgList *
295 TranslateArgs(
const llvm::opt::DerivedArgList &Args, StringRef BoundArch,
300 Tool *buildAssembler()
const override;
301 Tool *buildLinker()
const override;
314 void AddClangCXXStdlibIncludeArgs(
315 const llvm::opt::ArgList &DriverArgs,
316 llvm::opt::ArgStringList &CC1Args)
const override;
319 addLibCxxIncludePaths(
const llvm::opt::ArgList &DriverArgs,
320 llvm::opt::ArgStringList &CC1Args)
const;
322 addLibStdCxxIncludePaths(
const llvm::opt::ArgList &DriverArgs,
323 llvm::opt::ArgStringList &CC1Args)
const;
325 bool addLibStdCXXIncludePaths(Twine
Base, Twine Suffix, StringRef GCCTriple,
326 StringRef GCCMultiarchTriple,
327 StringRef TargetMultiarchTriple,
329 const llvm::opt::ArgList &DriverArgs,
330 llvm::opt::ArgStringList &CC1Args)
const;
335 mutable std::unique_ptr<tools::gcc::Preprocessor>
Preprocess;
336 mutable std::unique_ptr<tools::gcc::Compiler>
Compile;
340 virtual void anchor();
344 const llvm::opt::ArgList &Args)
347 void addClangTargetOptions(
const llvm::opt::ArgList &DriverArgs,
348 llvm::opt::ArgStringList &CC1Args,
356 #endif // LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_GNU_H
DominatorTree GraphTraits specialization so the DominatorTree can be iterable by generic graph iterat...
llvm::Optional< Multilib > BiarchSibling
On Biarch systems, this corresponds to the default multilib when targeting the non-default multilib...
A class to find a viable CUDA installation.
Driver - Encapsulate logic for constructing compilation processes from a set of gcc-driver-like comma...
This corresponds to a single GCC Multilib, or a segment of one controlled by a command line flag...
Dataflow Directional Tag Classes.
Compilation - A set of tasks to perform for a single driver invocation.
bool findMIPSMultilibs(const Driver &D, const llvm::Triple &TargetTriple, StringRef Path, const llvm::opt::ArgList &Args, DetectedMultilibs &Result)
MultilibSet Multilibs
The set of multilibs that the detected installation supports.
Multilib SelectedMultilib
The primary multilib appropriate for the given flags.