10 #ifndef LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_GNU_H 11 #define LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_GNU_H 34 StringRef Path,
const llvm::opt::ArgList &Args,
42 virtual void anchor();
46 :
Tool(Name, ShortName, TC, RF_Full,
llvm::sys::WEM_CurrentCodePage) {}
59 const llvm::opt::ArgList &TCArgs,
60 const char *LinkingOutput)
const override;
72 const llvm::opt::ArgList &TCArgs,
73 const char *LinkingOutput)
const override;
82 :
GnuTool(Name, ShortName, TC) {}
90 const llvm::opt::ArgList &TCArgs,
91 const char *LinkingOutput)
const override;
95 virtual void RenderExtraToolArgs(
const JobAction &JA,
96 llvm::opt::ArgStringList &CmdArgs)
const = 0;
102 :
Common(
"gcc::Preprocessor",
"gcc preprocessor", TC) {}
107 void RenderExtraToolArgs(
const JobAction &JA,
108 llvm::opt::ArgStringList &CmdArgs)
const override;
118 void RenderExtraToolArgs(
const JobAction &JA,
119 llvm::opt::ArgStringList &CmdArgs)
const override;
129 void RenderExtraToolArgs(
const JobAction &JA,
130 llvm::opt::ArgStringList &CmdArgs)
const override;
135 namespace toolchains {
170 static GCCVersion Parse(StringRef VersionText);
171 bool isOlderThan(
int RHSMajor,
int RHSMinor,
int RHSPatch,
172 StringRef RHSPatchSuffix = StringRef())
const;
189 llvm::Triple GCCTriple;
193 std::string GCCInstallPath;
194 std::string GCCParentLibPath;
206 std::set<std::string> CandidateGCCInstallPaths;
213 void init(
const llvm::Triple &TargetTriple,
const llvm::opt::ArgList &Args,
220 const llvm::Triple &
getTriple()
const {
return GCCTriple; }
236 bool getBiarchSibling(
Multilib &M)
const;
242 void print(raw_ostream &OS)
const;
246 CollectLibDirsAndTriples(
const llvm::Triple &TargetTriple,
247 const llvm::Triple &BiarchTriple,
253 bool ScanGCCForMultilibs(
const llvm::Triple &TargetTriple,
254 const llvm::opt::ArgList &Args,
256 bool NeedsBiarchSuffix =
false);
258 void ScanLibDirForGCCTriple(
const llvm::Triple &TargetArch,
259 const llvm::opt::ArgList &Args,
260 const std::string &LibDir,
261 StringRef CandidateTriple,
262 bool NeedsBiarchSuffix =
false);
264 void scanLibDirForGCCTripleSolaris(
const llvm::Triple &TargetArch,
265 const llvm::opt::ArgList &Args,
266 const std::string &LibDir,
267 StringRef CandidateTriple,
268 bool NeedsBiarchSuffix =
false);
270 bool ScanGentooGccConfig(
const llvm::Triple &TargetTriple,
271 const llvm::opt::ArgList &Args,
272 StringRef CandidateTriple,
273 bool NeedsBiarchSuffix =
false);
282 const llvm::opt::ArgList &Args);
285 void printVerboseInfo(raw_ostream &OS)
const override;
287 bool IsUnwindTablesDefault(
const llvm::opt::ArgList &Args)
const override;
288 bool isPICDefault()
const override;
289 bool isPIEDefault()
const override;
290 bool isPICDefaultForced()
const override;
291 bool IsIntegratedAssemblerDefault()
const override;
292 llvm::opt::DerivedArgList *
293 TranslateArgs(
const llvm::opt::DerivedArgList &Args, StringRef BoundArch,
298 Tool *buildAssembler()
const override;
299 Tool *buildLinker()
const override;
312 void AddClangCXXStdlibIncludeArgs(
313 const llvm::opt::ArgList &DriverArgs,
314 llvm::opt::ArgStringList &CC1Args)
const override;
316 virtual std::string findLibCxxIncludePath()
const;
318 addLibStdCxxIncludePaths(
const llvm::opt::ArgList &DriverArgs,
319 llvm::opt::ArgStringList &CC1Args)
const;
321 bool addLibStdCXXIncludePaths(Twine
Base, Twine Suffix, StringRef GCCTriple,
322 StringRef GCCMultiarchTriple,
323 StringRef TargetMultiarchTriple,
325 const llvm::opt::ArgList &DriverArgs,
326 llvm::opt::ArgStringList &CC1Args)
const;
331 mutable std::unique_ptr<tools::gcc::Preprocessor>
Preprocess;
332 mutable std::unique_ptr<tools::gcc::Compiler>
Compile;
336 virtual void anchor();
340 const llvm::opt::ArgList &Args)
343 void addClangTargetOptions(
const llvm::opt::ArgList &DriverArgs,
344 llvm::opt::ArgStringList &CC1Args,
352 #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.