mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-08-30 21:29:28 +00:00
This was only needed to locate llvm-gcc's installation directory when clang falls back to run llvm-gcc for i386 kexts. As of clang svn r140187, we're now just searching paths with several different Darwin versions on either side of the current version, so this is no longer needed. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140188 91177308-0d34-0410-b5e6-96231b3b80d8
67 lines
1.9 KiB
C++
67 lines
1.9 KiB
C++
//===- llvm/Support/Unix/Host.inc -------------------------------*- C++ -*-===//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
//
|
|
// This file implements the UNIX Host support.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
//===----------------------------------------------------------------------===//
|
|
//=== WARNING: Implementation here must contain only generic UNIX code that
|
|
//=== is guaranteed to work on *all* UNIX variants.
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#include "llvm/Config/config.h"
|
|
#include "llvm/ADT/StringRef.h"
|
|
#include "Unix.h"
|
|
#include <sys/utsname.h>
|
|
#include <cctype>
|
|
#include <string>
|
|
#include <cstdlib> // ::getenv
|
|
|
|
using namespace llvm;
|
|
|
|
static std::string getOSVersion() {
|
|
struct utsname info;
|
|
|
|
if (uname(&info))
|
|
return "";
|
|
|
|
return info.release;
|
|
}
|
|
|
|
std::string sys::getHostTriple() {
|
|
// FIXME: Derive directly instead of relying on the autoconf generated
|
|
// variable.
|
|
|
|
StringRef HostTripleString(LLVM_HOSTTRIPLE);
|
|
std::pair<StringRef, StringRef> ArchSplit = HostTripleString.split('-');
|
|
|
|
// Normalize the arch, since the host triple may not actually match the host.
|
|
std::string Arch = ArchSplit.first;
|
|
|
|
std::string Triple(Arch);
|
|
Triple += '-';
|
|
Triple += ArchSplit.second;
|
|
|
|
// 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"));
|
|
Triple += getOSVersion();
|
|
}
|
|
|
|
return Triple;
|
|
}
|