class Generic_GCC::GCCInstallationDetector
Declaration
class Generic_GCC::GCCInstallationDetector { /* full declaration omitted */ };
Description
This is a class to find a viable GCC installation for Clang to use. This class tries to find a GCC installation on the system, and report information about it. It starts from the host information provided to the Driver, and has logic for fuzzing that where appropriate.
Declared at: clang/lib/Driver/ToolChains/Gnu.h:191
Member Variables
- private bool IsValid
- private llvm::Triple GCCTriple
- private const clang::driver::Driver& D
- private std::string GCCInstallPath
- private std::string GCCParentLibPath
- private clang::driver::Multilib SelectedMultilib
- The primary multilib appropriate for the given flags.
- private llvm::Optional<Multilib> BiarchSibling
- On Biarch systems, this corresponds to the default multilib when targeting the non-default multilib. Otherwise, it is empty.
- private clang::driver::toolchains::Generic_GCC::GCCVersion Version
- private std::set<std::string> CandidateGCCInstallPaths
- private clang::driver::MultilibSet Multilibs
- The set of multilibs that the detected installation supports.
- private const std::string GentooConfigDir = "/etc/env.d/gcc"
Method Overview
- private void AddDefaultGCCPrefixes(const llvm::Triple & TargetTriple, SmallVectorImpl<std::string> & Prefixes, llvm::StringRef SysRoot)
- private static void CollectLibDirsAndTriples(const llvm::Triple & TargetTriple, const llvm::Triple & BiarchTriple, SmallVectorImpl<llvm::StringRef> & LibDirs, SmallVectorImpl<llvm::StringRef> & TripleAliases, SmallVectorImpl<llvm::StringRef> & BiarchLibDirs, SmallVectorImpl<llvm::StringRef> & BiarchTripleAliases)
- public GCCInstallationDetector(const clang::driver::Driver & D)
- private bool ScanGCCForMultilibs(const llvm::Triple & TargetTriple, const llvm::opt::ArgList & Args, llvm::StringRef Path, bool NeedsBiarchSuffix = false)
- private bool ScanGentooConfigs(const llvm::Triple & TargetTriple, const llvm::opt::ArgList & Args, const SmallVectorImpl<llvm::StringRef> & CandidateTriples, const SmallVectorImpl<llvm::StringRef> & BiarchTriples)
- private bool ScanGentooGccConfig(const llvm::Triple & TargetTriple, const llvm::opt::ArgList & Args, llvm::StringRef CandidateTriple, bool NeedsBiarchSuffix = false)
- private void ScanLibDirForGCCTriple(const llvm::Triple & TargetArch, const llvm::opt::ArgList & Args, const std::string & LibDir, llvm::StringRef CandidateTriple, bool NeedsBiarchSuffix, bool GCCDirExists, bool GCCCrossDirExists)
- public bool getBiarchSibling(clang::driver::Multilib & M) const
- public llvm::StringRef getInstallPath() const
- public const clang::driver::Multilib & getMultilib() const
- public const clang::driver::MultilibSet & getMultilibs() const
- public llvm::StringRef getParentLibPath() const
- public const llvm::Triple & getTriple() const
- public const clang::driver::toolchains::Generic_GCC::GCCVersion & getVersion() const
- public void init(const llvm::Triple & TargetTriple, const llvm::opt::ArgList & Args, ArrayRef<std::string> ExtraTripleAliases = None)
- public bool isValid() const
- public void print(llvm::raw_ostream & OS) const
Methods
¶void AddDefaultGCCPrefixes(
const llvm::Triple& TargetTriple,
SmallVectorImpl<std::string>& Prefixes,
llvm::StringRef SysRoot)
void AddDefaultGCCPrefixes(
const llvm::Triple& TargetTriple,
SmallVectorImpl<std::string>& Prefixes,
llvm::StringRef SysRoot)
Declared at: clang/lib/Driver/ToolChains/Gnu.h:260
Parameters
- const llvm::Triple& TargetTriple
- SmallVectorImpl<std::string>& Prefixes
- llvm::StringRef SysRoot
¶static void CollectLibDirsAndTriples(
const llvm::Triple& TargetTriple,
const llvm::Triple& BiarchTriple,
SmallVectorImpl<llvm::StringRef>& LibDirs,
SmallVectorImpl<llvm::StringRef>&
TripleAliases,
SmallVectorImpl<llvm::StringRef>&
BiarchLibDirs,
SmallVectorImpl<llvm::StringRef>&
BiarchTripleAliases)
static void CollectLibDirsAndTriples(
const llvm::Triple& TargetTriple,
const llvm::Triple& BiarchTriple,
SmallVectorImpl<llvm::StringRef>& LibDirs,
SmallVectorImpl<llvm::StringRef>&
TripleAliases,
SmallVectorImpl<llvm::StringRef>&
BiarchLibDirs,
SmallVectorImpl<llvm::StringRef>&
BiarchTripleAliases)
Declared at: clang/lib/Driver/ToolChains/Gnu.h:253
Parameters
- const llvm::Triple& TargetTriple
- const llvm::Triple& BiarchTriple
- SmallVectorImpl<llvm::StringRef>& LibDirs
- SmallVectorImpl<llvm::StringRef>& TripleAliases
- SmallVectorImpl<llvm::StringRef>& BiarchLibDirs
- SmallVectorImpl<llvm::StringRef>& BiarchTripleAliases
¶GCCInstallationDetector(
const clang::driver::Driver& D)
GCCInstallationDetector(
const clang::driver::Driver& D)
Declared at: clang/lib/Driver/ToolChains/Gnu.h:219
Parameters
- const clang::driver::Driver& D
¶bool ScanGCCForMultilibs(
const llvm::Triple& TargetTriple,
const llvm::opt::ArgList& Args,
llvm::StringRef Path,
bool NeedsBiarchSuffix = false)
bool ScanGCCForMultilibs(
const llvm::Triple& TargetTriple,
const llvm::opt::ArgList& Args,
llvm::StringRef Path,
bool NeedsBiarchSuffix = false)
Declared at: clang/lib/Driver/ToolChains/Gnu.h:264
Parameters
- const llvm::Triple& TargetTriple
- const llvm::opt::ArgList& Args
- llvm::StringRef Path
- bool NeedsBiarchSuffix = false
¶bool ScanGentooConfigs(
const llvm::Triple& TargetTriple,
const llvm::opt::ArgList& Args,
const SmallVectorImpl<llvm::StringRef>&
CandidateTriples,
const SmallVectorImpl<llvm::StringRef>&
BiarchTriples)
bool ScanGentooConfigs(
const llvm::Triple& TargetTriple,
const llvm::opt::ArgList& Args,
const SmallVectorImpl<llvm::StringRef>&
CandidateTriples,
const SmallVectorImpl<llvm::StringRef>&
BiarchTriples)
Declared at: clang/lib/Driver/ToolChains/Gnu.h:276
Parameters
- const llvm::Triple& TargetTriple
- const llvm::opt::ArgList& Args
- const SmallVectorImpl<llvm::StringRef>& CandidateTriples
- const SmallVectorImpl<llvm::StringRef>& BiarchTriples
¶bool ScanGentooGccConfig(
const llvm::Triple& TargetTriple,
const llvm::opt::ArgList& Args,
llvm::StringRef CandidateTriple,
bool NeedsBiarchSuffix = false)
bool ScanGentooGccConfig(
const llvm::Triple& TargetTriple,
const llvm::opt::ArgList& Args,
llvm::StringRef CandidateTriple,
bool NeedsBiarchSuffix = false)
Declared at: clang/lib/Driver/ToolChains/Gnu.h:281
Parameters
- const llvm::Triple& TargetTriple
- const llvm::opt::ArgList& Args
- llvm::StringRef CandidateTriple
- bool NeedsBiarchSuffix = false
¶void ScanLibDirForGCCTriple(
const llvm::Triple& TargetArch,
const llvm::opt::ArgList& Args,
const std::string& LibDir,
llvm::StringRef CandidateTriple,
bool NeedsBiarchSuffix,
bool GCCDirExists,
bool GCCCrossDirExists)
void ScanLibDirForGCCTriple(
const llvm::Triple& TargetArch,
const llvm::opt::ArgList& Args,
const std::string& LibDir,
llvm::StringRef CandidateTriple,
bool NeedsBiarchSuffix,
bool GCCDirExists,
bool GCCCrossDirExists)
Declared at: clang/lib/Driver/ToolChains/Gnu.h:269
Parameters
- const llvm::Triple& TargetArch
- const llvm::opt::ArgList& Args
- const std::string& LibDir
- llvm::StringRef CandidateTriple
- bool NeedsBiarchSuffix
- bool GCCDirExists
- bool GCCCrossDirExists
¶bool getBiarchSibling(
clang::driver::Multilib& M) const
bool getBiarchSibling(
clang::driver::Multilib& M) const
Description
Get the biarch sibling multilib (if it exists).
Declared at: clang/lib/Driver/ToolChains/Gnu.h:243
Parameters
Returns
true iff such a sibling exists
¶llvm::StringRef getInstallPath() const
llvm::StringRef getInstallPath() const
Description
Get the detected GCC installation path.
Declared at: clang/lib/Driver/ToolChains/Gnu.h:230
¶const clang::driver::Multilib& getMultilib() const
const clang::driver::Multilib& getMultilib() const
Description
Get the detected Multilib
Declared at: clang/lib/Driver/ToolChains/Gnu.h:236
¶const clang::driver::MultilibSet& getMultilibs()
const
const clang::driver::MultilibSet& getMultilibs()
const
Description
Get the whole MultilibSet
Declared at: clang/lib/Driver/ToolChains/Gnu.h:239
¶llvm::StringRef getParentLibPath() const
llvm::StringRef getParentLibPath() const
Description
Get the detected GCC parent lib path.
Declared at: clang/lib/Driver/ToolChains/Gnu.h:233
¶const llvm::Triple& getTriple() const
const llvm::Triple& getTriple() const
Description
Get the GCC triple for the detected install.
Declared at: clang/lib/Driver/ToolChains/Gnu.h:227
¶const clang::driver::toolchains::Generic_GCC::
GCCVersion&
getVersion() const
const clang::driver::toolchains::Generic_GCC::
GCCVersion&
getVersion() const
Description
Get the detected GCC version string.
Declared at: clang/lib/Driver/ToolChains/Gnu.h:246
¶void init(const llvm::Triple& TargetTriple,
const llvm::opt::ArgList& Args,
ArrayRef<std::string>
ExtraTripleAliases = None)
void init(const llvm::Triple& TargetTriple,
const llvm::opt::ArgList& Args,
ArrayRef<std::string>
ExtraTripleAliases = None)
Declared at: clang/lib/Driver/ToolChains/Gnu.h:220
Parameters
- const llvm::Triple& TargetTriple
- const llvm::opt::ArgList& Args
- ArrayRef<std::string> ExtraTripleAliases = None
¶bool isValid() const
bool isValid() const
Description
Check whether we detected a valid GCC install.
Declared at: clang/lib/Driver/ToolChains/Gnu.h:224
¶void print(llvm::raw_ostream& OS) const
void print(llvm::raw_ostream& OS) const
Description
Print information about the detected GCC installation.
Declared at: clang/lib/Driver/ToolChains/Gnu.h:249