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 void AddDefaultGCCPrefixes(
const llvm::Triple &TargetTriple,
257 bool ScanGCCForMultilibs(
const llvm::Triple &TargetTriple,
258 const llvm::opt::ArgList &Args,
260 bool NeedsBiarchSuffix =
false);
262 void ScanLibDirForGCCTriple(
const llvm::Triple &TargetArch,
263 const llvm::opt::ArgList &Args,
264 const std::string &LibDir,
265 StringRef CandidateTriple,
266 bool NeedsBiarchSuffix =
false);
268 bool ScanGentooConfigs(
const llvm::Triple &TargetTriple,
269 const llvm::opt::ArgList &Args,
273 bool ScanGentooGccConfig(
const llvm::Triple &TargetTriple,
274 const llvm::opt::ArgList &Args,
275 StringRef CandidateTriple,
276 bool NeedsBiarchSuffix =
false);
285 const llvm::opt::ArgList &Args);
288 void printVerboseInfo(raw_ostream &OS)
const override;
290 bool IsUnwindTablesDefault(
const llvm::opt::ArgList &Args)
const override;
291 bool isPICDefault()
const override;
292 bool isPIEDefault()
const override;
293 bool isPICDefaultForced()
const override;
294 bool IsIntegratedAssemblerDefault()
const override;
295 llvm::opt::DerivedArgList *
296 TranslateArgs(
const llvm::opt::DerivedArgList &Args, StringRef BoundArch,
301 Tool *buildAssembler()
const override;
302 Tool *buildLinker()
const override;
315 void AddClangCXXStdlibIncludeArgs(
316 const llvm::opt::ArgList &DriverArgs,
317 llvm::opt::ArgStringList &CC1Args)
const override;
320 addLibCxxIncludePaths(
const llvm::opt::ArgList &DriverArgs,
321 llvm::opt::ArgStringList &CC1Args)
const;
323 addLibStdCxxIncludePaths(
const llvm::opt::ArgList &DriverArgs,
324 llvm::opt::ArgStringList &CC1Args)
const;
326 bool addLibStdCXXIncludePaths(Twine
Base, Twine Suffix, StringRef GCCTriple,
327 StringRef GCCMultiarchTriple,
328 StringRef TargetMultiarchTriple,
330 const llvm::opt::ArgList &DriverArgs,
331 llvm::opt::ArgStringList &CC1Args)
const;
336 mutable std::unique_ptr<tools::gcc::Preprocessor>
Preprocess;
337 mutable std::unique_ptr<tools::gcc::Compiler>
Compile;
341 virtual void anchor();
345 const llvm::opt::ArgList &Args)
348 void addClangTargetOptions(
const llvm::opt::ArgList &DriverArgs,
349 llvm::opt::ArgStringList &CC1Args,
357 #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.