mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-24 03:33:20 +01:00
Add llvm::sys::getHostTriple and remove
llvm::sys::getOS{Name,Version}. Right now the implementation just derives from LLVM_HOSTTRIPLE (which is wrong, but it doesn't look like we have a define for the target triple). Ideally this routine would actually be able to compute the triple for targets we care about. llvm-svn: 68118
This commit is contained in:
parent
5f64e10d8d
commit
aec3d9857f
@ -32,13 +32,15 @@ namespace sys {
|
||||
return !isLittleEndianHost();
|
||||
}
|
||||
|
||||
/// getOSName() - Return the name of the host operating system or "" if
|
||||
/// unknown.
|
||||
std::string getOSName();
|
||||
/// getHostTriple() - Return the target triple of the running
|
||||
/// system.
|
||||
///
|
||||
/// The target triple is a string in the format of:
|
||||
/// CPU_TYPE-VENDOR-OPERATING_SYSTEM
|
||||
/// or
|
||||
/// CPU_TYPE-VENDOR-KERNEL-OPERATING_SYSTEM
|
||||
std::string getHostTriple();
|
||||
|
||||
/// getOSVersion() - Return the operating system version as a string or
|
||||
/// "" if unknown.
|
||||
std::string getOSVersion();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -23,16 +23,7 @@
|
||||
|
||||
using namespace llvm;
|
||||
|
||||
std::string llvm::sys::getOSName() {
|
||||
struct utsname info;
|
||||
|
||||
if (uname(&info))
|
||||
return "";
|
||||
|
||||
return info.sysname;
|
||||
}
|
||||
|
||||
std::string llvm::sys::getOSVersion() {
|
||||
static std::string getOSVersion() {
|
||||
struct utsname info;
|
||||
|
||||
if (uname(&info))
|
||||
@ -40,3 +31,28 @@ std::string llvm::sys::getOSVersion() {
|
||||
|
||||
return info.release;
|
||||
}
|
||||
|
||||
std::string sys::getHostTriple() {
|
||||
// FIXME: Derive more directly instead of relying on the autoconf
|
||||
// generated variable.
|
||||
|
||||
std::string Triple = LLVM_HOSTTRIPLE;
|
||||
|
||||
// Force i<N>86 to i386.
|
||||
if (Triple[0] == 'i' && isdigit(Triple[1]) &&
|
||||
Triple[2] == '8' && Triple[3] == '6')
|
||||
Triple[1] = '3';
|
||||
|
||||
// On darwin, we want to update the version to match that of the
|
||||
// host.
|
||||
std::string::size_type DarwinDashIdx = Triple.find("-darwin");
|
||||
if (DarwinDashIdx != std::string::npos) {
|
||||
Triple.resize(DarwinDashIdx + strlen("-darwin"));
|
||||
|
||||
// Only add the major part of the os version.
|
||||
std::string Version = getOSVersion();
|
||||
Triple += Version.substr(0, Version.find('.'));
|
||||
}
|
||||
|
||||
return Triple;
|
||||
}
|
||||
|
@ -17,21 +17,7 @@
|
||||
|
||||
using namespace llvm;
|
||||
|
||||
std::string sys::getOSName() {
|
||||
return "Windows";
|
||||
}
|
||||
|
||||
std::string sys::getOSVersion() {
|
||||
OSVERSIONINFO osvi;
|
||||
|
||||
memset(&osvi, 0, sizeof(osvi));
|
||||
osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
|
||||
|
||||
if (!GetVersionEx(&osvi))
|
||||
return "";
|
||||
|
||||
char buf[64];
|
||||
sprintf(buf, "%d.%d", (int)osvi.dwMajorVersion, (int)osvi.dwMinorVersion);
|
||||
|
||||
return buf;
|
||||
std::string sys::getHostTriple() {
|
||||
// FIXME: Adapt to running version.
|
||||
return LLVM_HOSTTRIPLE;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user