clang  3.8.0
Enumerations | Functions
ToolChains.cpp File Reference
#include "ToolChains.h"
#include "clang/Basic/ObjCRuntime.h"
#include "clang/Basic/Version.h"
#include "clang/Basic/VirtualFileSystem.h"
#include "clang/Config/config.h"
#include "clang/Driver/Compilation.h"
#include "clang/Driver/Driver.h"
#include "clang/Driver/DriverDiagnostic.h"
#include "clang/Driver/Options.h"
#include "clang/Driver/SanitizerArgs.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/ADT/SmallString.h"
#include "llvm/ADT/StringExtras.h"
#include "llvm/ADT/StringSwitch.h"
#include "llvm/Option/Arg.h"
#include "llvm/Option/ArgList.h"
#include "llvm/Option/OptTable.h"
#include "llvm/Option/Option.h"
#include "llvm/ProfileData/InstrProf.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/FileSystem.h"
#include "llvm/Support/MemoryBuffer.h"
#include "llvm/Support/Path.h"
#include "llvm/Support/Program.h"
#include "llvm/Support/TargetParser.h"
#include "llvm/Support/raw_ostream.h"
#include <cstdlib>
#include <system_error>
Include dependency graph for ToolChains.cpp:

Go to the source code of this file.

Enumerations

enum  Distro {
  ArchLinux, DebianLenny, DebianSqueeze, DebianWheezy,
  DebianJessie, DebianStretch, Exherbo, RHEL4,
  RHEL5, RHEL6, RHEL7, Fedora,
  OpenSUSE, UbuntuHardy, UbuntuIntrepid, UbuntuJaunty,
  UbuntuKarmic, UbuntuLucid, UbuntuMaverick, UbuntuNatty,
  UbuntuOneiric, UbuntuPrecise, UbuntuQuantal, UbuntuRaring,
  UbuntuSaucy, UbuntuTrusty, UbuntuUtopic, UbuntuVivid,
  UbuntuWily, UbuntuXenial, UnknownDistro
}
 Distribution (very bare-bones at the moment). More...
 

Functions

static const char * ArmMachOArchName (StringRef Arch)
 
static const char * ArmMachOArchNameCPU (StringRef CPU)
 
static bool isSoftFloatABI (const ArgList &Args)
 
static bool isObjCAutoRefCount (const ArgList &Args)
 Determine whether Objective-C automated reference counting is enabled. More...
 
static llvm::StringRef getGCCToolchainDir (const ArgList &Args)
 
static void addMultilibFlag (bool Enabled, const char *const Flag, std::vector< std::string > &Flags)
 
static bool isMipsArch (llvm::Triple::ArchType Arch)
 
static bool isMips32 (llvm::Triple::ArchType Arch)
 
static bool isMips64 (llvm::Triple::ArchType Arch)
 
static bool isMipsEL (llvm::Triple::ArchType Arch)
 
static bool isMips16 (const ArgList &Args)
 
static bool isMicroMips (const ArgList &Args)
 
static Multilib makeMultilib (StringRef commonSuffix)
 
static bool findMIPSMultilibs (const Driver &D, const llvm::Triple &TargetTriple, StringRef Path, const ArgList &Args, DetectedMultilibs &Result)
 
static bool findBiarchMultilibs (const Driver &D, const llvm::Triple &TargetTriple, StringRef Path, const ArgList &Args, bool NeedsBiarchSuffix, DetectedMultilibs &Result)
 
static void addPathIfExists (const Driver &D, const Twine &Path, ToolChain::path_list &Paths)
 
static bool IsRedhat (enum Distro Distro)
 
static bool IsOpenSUSE (enum Distro Distro)
 
static bool IsDebian (enum Distro Distro)
 
static bool IsUbuntu (enum Distro Distro)
 
static Distro DetectDistro (const Driver &D, llvm::Triple::ArchType Arch)
 
static std::string getMultiarchTriple (const Driver &D, const llvm::Triple &TargetTriple, StringRef SysRoot)
 Get our best guess at the multiarch triple for a target. More...
 
static StringRef getOSLibDir (const llvm::Triple &Triple, const ArgList &Args)
 
static std::string DetectLibcxxIncludePath (StringRef base)
 

Enumeration Type Documentation

enum Distro

Distribution (very bare-bones at the moment).

Enumerator
ArchLinux 
DebianLenny 
DebianSqueeze 
DebianWheezy 
DebianJessie 
DebianStretch 
Exherbo 
RHEL4 
RHEL5 
RHEL6 
RHEL7 
Fedora 
OpenSUSE 
UbuntuHardy 
UbuntuIntrepid 
UbuntuJaunty 
UbuntuKarmic 
UbuntuLucid 
UbuntuMaverick 
UbuntuNatty 
UbuntuOneiric 
UbuntuPrecise 
UbuntuQuantal 
UbuntuRaring 
UbuntuSaucy 
UbuntuTrusty 
UbuntuUtopic 
UbuntuVivid 
UbuntuWily 
UbuntuXenial 
UnknownDistro 

Definition at line 3373 of file ToolChains.cpp.

Function Documentation

static void addMultilibFlag ( bool  Enabled,
const char *const  Flag,
std::vector< std::string > &  Flags 
)
static

Definition at line 1715 of file ToolChains.cpp.

Referenced by findBiarchMultilibs(), and findMIPSMultilibs().

static void addPathIfExists ( const Driver D,
const Twine &  Path,
ToolChain::path_list Paths 
)
static
static const char* ArmMachOArchName ( StringRef  Arch)
static

Definition at line 95 of file ToolChains.cpp.

Referenced by clang::driver::toolchains::MachO::getMachOArchName().

static const char* ArmMachOArchNameCPU ( StringRef  CPU)
static

Definition at line 112 of file ToolChains.cpp.

Referenced by clang::driver::toolchains::MachO::getMachOArchName().

static Distro DetectDistro ( const Driver D,
llvm::Triple::ArchType  Arch 
)
static
static std::string DetectLibcxxIncludePath ( StringRef  base)
static
static bool findBiarchMultilibs ( const Driver D,
const llvm::Triple &  TargetTriple,
StringRef  Path,
const ArgList &  Args,
bool  NeedsBiarchSuffix,
DetectedMultilibs &  Result 
)
static
static bool findMIPSMultilibs ( const Driver D,
const llvm::Triple &  TargetTriple,
StringRef  Path,
const ArgList &  Args,
DetectedMultilibs &  Result 
)
static
static llvm::StringRef getGCCToolchainDir ( const ArgList &  Args)
static
static std::string getMultiarchTriple ( const Driver D,
const llvm::Triple &  TargetTriple,
StringRef  SysRoot 
)
static

Get our best guess at the multiarch triple for a target.

Debian-based systems are starting to use a multiarch setup where they use a target-triple directory in the library and header search paths. Unfortunately, this triple does not align with the vanilla target triple, so we provide a rough mapping here.

Definition at line 3509 of file ToolChains.cpp.

References clang::vfs::FileSystem::exists(), and clang::driver::Driver::getVFS().

Referenced by clang::driver::toolchains::Linux::AddClangCXXStdlibIncludeArgs(), and clang::driver::toolchains::Linux::Linux().

static StringRef getOSLibDir ( const llvm::Triple &  Triple,
const ArgList &  Args 
)
static
static bool IsDebian ( enum Distro  Distro)
static

Definition at line 3416 of file ToolChains.cpp.

References DebianLenny, and DebianStretch.

Referenced by clang::driver::toolchains::Linux::Linux().

static bool isMicroMips ( const ArgList &  Args)
static

Definition at line 1745 of file ToolChains.cpp.

Referenced by findMIPSMultilibs().

static bool isMips16 ( const ArgList &  Args)
static

Definition at line 1740 of file ToolChains.cpp.

Referenced by findMIPSMultilibs().

static bool isMips32 ( llvm::Triple::ArchType  Arch)
static

Definition at line 1728 of file ToolChains.cpp.

Referenced by findMIPSMultilibs().

static bool isMips64 ( llvm::Triple::ArchType  Arch)
static

Definition at line 1732 of file ToolChains.cpp.

Referenced by findMIPSMultilibs().

static bool isMipsArch ( llvm::Triple::ArchType  Arch)
static
static bool isMipsEL ( llvm::Triple::ArchType  Arch)
static

Definition at line 1736 of file ToolChains.cpp.

Referenced by findMIPSMultilibs().

static bool isObjCAutoRefCount ( const ArgList &  Args)
static

Determine whether Objective-C automated reference counting is enabled.

Definition at line 247 of file ToolChains.cpp.

Referenced by clang::driver::toolchains::DarwinClang::AddLinkARCArgs().

static bool IsOpenSUSE ( enum Distro  Distro)
static

Definition at line 3414 of file ToolChains.cpp.

References OpenSUSE.

Referenced by clang::driver::toolchains::Linux::Linux().

static bool IsRedhat ( enum Distro  Distro)
static

Definition at line 3410 of file ToolChains.cpp.

References Fedora, RHEL4, and RHEL7.

Referenced by clang::driver::toolchains::Linux::Linux().

static bool isSoftFloatABI ( const ArgList &  Args)
static

Definition at line 131 of file ToolChains.cpp.

Referenced by findMIPSMultilibs().

static bool IsUbuntu ( enum Distro  Distro)
static

Definition at line 3420 of file ToolChains.cpp.

References UbuntuHardy, and UbuntuXenial.

Referenced by clang::driver::toolchains::Linux::Linux().

static Multilib makeMultilib ( StringRef  commonSuffix)
static

Definition at line 1764 of file ToolChains.cpp.

Referenced by findMIPSMultilibs().