clang
3.9.0
|
#include "ToolChains.h"
#include "clang/Basic/Cuda.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>
Go to the source code of this file.
Enumerations | |
enum | Distro { ArchLinux, DebianLenny, DebianSqueeze, DebianWheezy, DebianJessie, DebianStretch, Exherbo, 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 CudaVersion | ParseCudaVersionFile (llvm::StringRef V) |
static void | addMultilibFlag (bool Enabled, const char *const Flag, std::vector< std::string > &Flags) |
static bool | isArmOrThumbArch (llvm::Triple::ArchType Arch) |
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 | findMipsCsMultilibs (const Multilib::flags_list &Flags, FilterNonExistent &NonExistent, DetectedMultilibs &Result) |
static bool | findMipsAndroidMultilibs (const Multilib::flags_list &Flags, FilterNonExistent &NonExistent, DetectedMultilibs &Result) |
static bool | findMipsMuslMultilibs (const Multilib::flags_list &Flags, FilterNonExistent &NonExistent, DetectedMultilibs &Result) |
static bool | findMipsMtiMultilibs (const Multilib::flags_list &Flags, FilterNonExistent &NonExistent, DetectedMultilibs &Result) |
static bool | findMipsImgMultilibs (const Multilib::flags_list &Flags, FilterNonExistent &NonExistent, DetectedMultilibs &Result) |
static bool | findMIPSMultilibs (const Driver &D, const llvm::Triple &TargetTriple, StringRef Path, const ArgList &Args, DetectedMultilibs &Result) |
static void | findAndroidArmMultilibs (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 void | addMultilibsFilePaths (const Driver &D, const MultilibSet &Multilibs, const Multilib &Multilib, StringRef InstallPath, ToolChain::path_list &Paths) |
static std::string | DetectLibcxxIncludePath (StringRef base) |
enum Distro |
Distribution (very bare-bones at the moment).
Definition at line 3714 of file ToolChains.cpp.
|
static |
Definition at line 1840 of file ToolChains.cpp.
Referenced by findAndroidArmMultilibs(), findBiarchMultilibs(), and findMIPSMultilibs().
|
static |
Definition at line 3983 of file ToolChains.cpp.
References addPathIfExists(), and clang::driver::MultilibSet::filePathsCallback().
Referenced by clang::driver::toolchains::Linux::Linux().
|
static |
Definition at line 3639 of file ToolChains.cpp.
References clang::vfs::FileSystem::exists(), and clang::driver::Driver::getVFS().
Referenced by addMultilibsFilePaths(), clang::driver::toolchains::Linux::Linux(), clang::driver::toolchains::MyriadToolChain::MyriadToolChain(), and clang::driver::toolchains::Solaris::Solaris().
|
static |
Definition at line 106 of file ToolChains.cpp.
Referenced by clang::driver::toolchains::MachO::getMachOArchName().
|
static |
Definition at line 123 of file ToolChains.cpp.
Referenced by clang::driver::toolchains::MachO::getMachOArchName().
Definition at line 3764 of file ToolChains.cpp.
References ArchLinux, DebianJessie, DebianLenny, DebianSqueeze, DebianStretch, DebianWheezy, Exherbo, clang::vfs::FileSystem::exists(), Fedora, clang::driver::Driver::getVFS(), Line, OpenSUSE, RHEL5, RHEL6, RHEL7, UbuntuHardy, UbuntuIntrepid, UbuntuJaunty, UbuntuKarmic, UbuntuLucid, UbuntuMaverick, UbuntuNatty, UbuntuOneiric, UbuntuPrecise, UbuntuQuantal, UbuntuRaring, UbuntuSaucy, UbuntuTrusty, UbuntuUtopic, UbuntuVivid, UbuntuWily, UbuntuXenial, and UnknownDistro.
Referenced by clang::driver::toolchains::Linux::getDynamicLinker(), and clang::driver::toolchains::Linux::Linux().
|
static |
Definition at line 4501 of file ToolChains.cpp.
Referenced by clang::driver::toolchains::Linux::AddClangCXXStdlibIncludeArgs().
|
static |
Definition at line 2371 of file ToolChains.cpp.
References addMultilibFlag(), clang::driver::MultilibSet::Either(), clang::driver::MultilibSet::FilterOut(), clang::driver::Multilib::flag(), clang::driver::Driver::getVFS(), makeMultilib(), and clang::driver::MultilibSet::select().
|
static |
Definition at line 2413 of file ToolChains.cpp.
References addMultilibFlag(), clang::driver::Multilib::flag(), clang::driver::Multilib::gccSuffix(), clang::driver::Driver::getVFS(), and clang::UNKNOWN.
|
static |
Definition at line 1988 of file ToolChains.cpp.
References clang::driver::MultilibSet::FilterOut(), clang::driver::MultilibSet::Maybe(), and clang::driver::MultilibSet::select().
Referenced by findMIPSMultilibs().
|
static |
Definition at line 1897 of file ToolChains.cpp.
References clang::driver::MultilibSet::Either(), clang::driver::MultilibSet::FilterOut(), clang::driver::Multilib::flag(), clang::driver::Multilib::gccSuffix(), clang::driver::Multilib::includeSuffix(), makeMultilib(), clang::driver::MultilibSet::Maybe(), clang::driver::tools::mips::Nan2008, clang::driver::MultilibSet::setIncludeDirsCallback(), and clang::driver::MultilibSet::size().
Referenced by findMIPSMultilibs().
|
static |
Definition at line 2209 of file ToolChains.cpp.
References clang::driver::MultilibSet::Either(), clang::driver::MultilibSet::FilterOut(), clang::driver::Multilib::flag(), clang::driver::Multilib::gccSuffix(), clang::driver::Multilib::includeSuffix(), makeMultilib(), clang::driver::MultilibSet::Maybe(), clang::driver::Multilib::osSuffix(), and clang::driver::MultilibSet::setIncludeDirsCallback().
Referenced by findMIPSMultilibs().
|
static |
Definition at line 2037 of file ToolChains.cpp.
References clang::driver::MultilibSet::Either(), clang::driver::MultilibSet::FilterOut(), clang::driver::Multilib::flag(), clang::driver::Multilib::gccSuffix(), clang::driver::Multilib::includeSuffix(), makeMultilib(), clang::driver::MultilibSet::Maybe(), clang::driver::tools::mips::Nan2008, clang::driver::Multilib::osSuffix(), and clang::driver::MultilibSet::setIncludeDirsCallback().
Referenced by findMIPSMultilibs().
|
static |
Definition at line 2302 of file ToolChains.cpp.
References addMultilibFlag(), findMipsAndroidMultilibs(), findMipsCsMultilibs(), findMipsImgMultilibs(), findMipsMtiMultilibs(), findMipsMuslMultilibs(), clang::driver::tools::mips::getMipsCPUAndABI(), clang::driver::Driver::getVFS(), isMicroMips(), isMips16(), isMips32(), isMips64(), isMipsEL(), clang::driver::tools::mips::isNaN2008(), isSoftFloatABI(), and clang::driver::tools::mips::isUCLibc().
Referenced by clang::driver::toolchains::MipsLLVMToolChain::MipsLLVMToolChain().
|
static |
Definition at line 2005 of file ToolChains.cpp.
References clang::driver::MultilibSet::Either(), clang::driver::Multilib::flag(), makeMultilib(), clang::driver::Multilib::osSuffix(), clang::driver::MultilibSet::select(), and clang::driver::MultilibSet::setIncludeDirsCallback().
Referenced by findMIPSMultilibs().
|
static |
Definition at line 1359 of file ToolChains.cpp.
Referenced by clang::driver::toolchains::Generic_GCC::GCCInstallationDetector::init().
|
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 3849 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 |
Definition at line 3953 of file ToolChains.cpp.
References clang::driver::tools::mips::hasMipsAbiArg(), and isMipsArch().
Referenced by clang::driver::toolchains::Linux::Linux().
|
static |
Definition at line 1848 of file ToolChains.cpp.
Definition at line 3756 of file ToolChains.cpp.
References DebianLenny, and DebianStretch.
Referenced by clang::driver::toolchains::Linux::Linux().
|
static |
Definition at line 1874 of file ToolChains.cpp.
Referenced by findMIPSMultilibs().
|
static |
Definition at line 1869 of file ToolChains.cpp.
Referenced by findMIPSMultilibs().
|
static |
Definition at line 1857 of file ToolChains.cpp.
Referenced by findMIPSMultilibs().
|
static |
Definition at line 1861 of file ToolChains.cpp.
Referenced by findMIPSMultilibs().
|
static |
Definition at line 1852 of file ToolChains.cpp.
Referenced by clang::driver::toolchains::Linux::computeSysRoot(), getOSLibDir(), and clang::driver::toolchains::Linux::Linux().
|
static |
Definition at line 1865 of file ToolChains.cpp.
Referenced by findMIPSMultilibs().
|
static |
Determine whether Objective-C automated reference counting is enabled.
Definition at line 258 of file ToolChains.cpp.
Referenced by clang::driver::toolchains::DarwinClang::AddLinkARCArgs().
Definition at line 3754 of file ToolChains.cpp.
References OpenSUSE.
Referenced by clang::driver::toolchains::Linux::Linux().
Definition at line 3750 of file ToolChains.cpp.
References Fedora, RHEL5, and RHEL7.
Referenced by clang::driver::toolchains::Linux::Linux().
|
static |
Definition at line 142 of file ToolChains.cpp.
Referenced by findMIPSMultilibs().
Definition at line 3760 of file ToolChains.cpp.
References UbuntuHardy, and UbuntuXenial.
Referenced by clang::driver::toolchains::Linux::Linux().
|
static |
Definition at line 1893 of file ToolChains.cpp.
Referenced by findAndroidArmMultilibs(), findMipsCsMultilibs(), findMipsImgMultilibs(), findMipsMtiMultilibs(), and findMipsMuslMultilibs().
|
static |
Definition at line 1702 of file ToolChains.cpp.
References clang::CUDA_70, clang::CUDA_75, clang::CUDA_80, and clang::UNKNOWN.
Referenced by clang::driver::toolchains::Generic_GCC::CudaInstallationDetector::init().