forked from OSchip/llvm-project
Begin fleshing out more convenience predicates in llvm::Triple and
convert at least one client over to use them. Subsequent patches both to LLVM and Clang will try to convert more people over to a common set of predicates. This round of predicates is focused on OS-categorization predicates. llvm-svn: 149815
This commit is contained in:
parent
c4965bce14
commit
ebd90c58e6
|
@ -284,23 +284,6 @@ public:
|
|||
return false;
|
||||
}
|
||||
|
||||
/// isMacOSX - Is this a Mac OS X triple. For legacy reasons, we support both
|
||||
/// "darwin" and "osx" as OS X triples.
|
||||
bool isMacOSX() const {
|
||||
return getOS() == Triple::Darwin || getOS() == Triple::MacOSX;
|
||||
}
|
||||
|
||||
/// isOSDarwin - Is this a "Darwin" OS (OS X or iOS).
|
||||
bool isOSDarwin() const {
|
||||
return isMacOSX() || getOS() == Triple::IOS;
|
||||
}
|
||||
|
||||
/// isOSWindows - Is this a "Windows" OS.
|
||||
bool isOSWindows() const {
|
||||
return getOS() == Triple::Win32 || getOS() == Triple::Cygwin ||
|
||||
getOS() == Triple::MinGW32;
|
||||
}
|
||||
|
||||
/// isMacOSXVersionLT - Comparison function for checking OS X version
|
||||
/// compatibility, which handles supporting skewed version numbering schemes
|
||||
/// used by the "darwin" triples.
|
||||
|
@ -317,6 +300,43 @@ public:
|
|||
return isOSVersionLT(Minor + 4, Micro, 0);
|
||||
}
|
||||
|
||||
/// isMacOSX - Is this a Mac OS X triple. For legacy reasons, we support both
|
||||
/// "darwin" and "osx" as OS X triples.
|
||||
bool isMacOSX() const {
|
||||
return getOS() == Triple::Darwin || getOS() == Triple::MacOSX;
|
||||
}
|
||||
|
||||
/// isOSDarwin - Is this a "Darwin" OS (OS X or iOS).
|
||||
bool isOSDarwin() const {
|
||||
return isMacOSX() || getOS() == Triple::IOS;
|
||||
}
|
||||
|
||||
/// \brief Tests for either Cygwin or MinGW OS
|
||||
bool isOSCygMing() const {
|
||||
return getOS() == Triple::Cygwin || getOS() == Triple::MinGW32;
|
||||
}
|
||||
|
||||
/// isOSWindows - Is this a "Windows" OS.
|
||||
bool isOSWindows() const {
|
||||
return getOS() == Triple::Win32 || isOSCygMing();
|
||||
}
|
||||
|
||||
/// \brief Tests whether the OS uses the ELF binary format.
|
||||
bool isOSBinFormatELF() const {
|
||||
return !isOSDarwin() && !isOSWindows();
|
||||
}
|
||||
|
||||
/// \brief Tests whether the OS uses the COFF binary format.
|
||||
bool isOSBinFormatCOFF() const {
|
||||
return isOSWindows();
|
||||
}
|
||||
|
||||
/// \brief Tests whether the environment is MachO.
|
||||
// FIXME: Should this be an OSBinFormat predicate?
|
||||
bool isEnvironmentMachO() const {
|
||||
return getEnvironment() == Triple::MachO || isOSDarwin();
|
||||
}
|
||||
|
||||
/// @}
|
||||
/// @name Mutators
|
||||
/// @{
|
||||
|
|
|
@ -229,38 +229,28 @@ public:
|
|||
|
||||
// ELF is a reasonably sane default and the only other X86 targets we
|
||||
// support are Darwin and Windows. Just use "not those".
|
||||
bool isTargetELF() const {
|
||||
return !isTargetDarwin() && !isTargetWindows() && !isTargetCygMing();
|
||||
}
|
||||
bool isTargetELF() const { return TargetTriple.isOSBinFormatELF(); }
|
||||
bool isTargetLinux() const { return TargetTriple.getOS() == Triple::Linux; }
|
||||
bool isTargetNaCl() const {
|
||||
return TargetTriple.getOS() == Triple::NativeClient;
|
||||
}
|
||||
bool isTargetNaCl32() const { return isTargetNaCl() && !is64Bit(); }
|
||||
bool isTargetNaCl64() const { return isTargetNaCl() && is64Bit(); }
|
||||
|
||||
bool isTargetWindows() const { return TargetTriple.getOS() == Triple::Win32; }
|
||||
bool isTargetMingw() const { return TargetTriple.getOS() == Triple::MinGW32; }
|
||||
bool isTargetCygwin() const { return TargetTriple.getOS() == Triple::Cygwin; }
|
||||
bool isTargetCygMing() const {
|
||||
return isTargetMingw() || isTargetCygwin();
|
||||
}
|
||||
|
||||
/// isTargetCOFF - Return true if this is any COFF/Windows target variant.
|
||||
bool isTargetCOFF() const {
|
||||
return isTargetMingw() || isTargetCygwin() || isTargetWindows();
|
||||
}
|
||||
bool isTargetCygMing() const { return TargetTriple.isOSCygMing(); }
|
||||
bool isTargetCOFF() const { return TargetTriple.isOSBinFormatCOFF(); }
|
||||
bool isTargetEnvMacho() const { return TargetTriple.isEnvironmentMachO(); }
|
||||
|
||||
bool isTargetWin64() const {
|
||||
// FIXME: x86_64-cygwin has not been released yet.
|
||||
return In64BitMode && (isTargetCygMing() || isTargetWindows());
|
||||
}
|
||||
|
||||
bool isTargetEnvMacho() const {
|
||||
return isTargetDarwin() || (TargetTriple.getEnvironment() == Triple::MachO);
|
||||
return In64BitMode && TargetTriple.isOSWindows();
|
||||
}
|
||||
|
||||
bool isTargetWin32() const {
|
||||
// FIXME: Cygwin is included for isTargetWin64 -- should it be included
|
||||
// here too?
|
||||
return !In64BitMode && (isTargetMingw() || isTargetWindows());
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue