From 8e3ef115506f40b43f9b2f05755d74eeda67adb2 Mon Sep 17 00:00:00 2001 From: Chad Rosier Date: Sat, 15 Oct 2011 02:10:06 +0000 Subject: Fix for llvm::sys::getHostTriple on Windows. Instead of relying on the triple from config.h, it discovers the triple based on the execution environment. Patch by Aaron Ballman git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142046 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Support/Windows/Host.inc | 40 ++++++++++++++++++++++++++++++++++++---- 1 file changed, 36 insertions(+), 4 deletions(-) (limited to 'lib') diff --git a/lib/Support/Windows/Host.inc b/lib/Support/Windows/Host.inc index 733830e..6d4803f 100644 --- a/lib/Support/Windows/Host.inc +++ b/lib/Support/Windows/Host.inc @@ -12,12 +12,44 @@ //===----------------------------------------------------------------------===// #include "Windows.h" -#include -#include +#include "llvm/ADT/Twine.h" using namespace llvm; std::string sys::getHostTriple() { - // FIXME: Adapt to running version. - return LLVM_HOSTTRIPLE; + // Get the execution environment, not the native environment. + SYSTEM_INFO info; + ::GetSystemInfo(&info); + + Twine ret; + switch (info.wProcessorArchitecture) { + // If we don't know what the processor architecture is, or it is not one + // we currently support, then we should fall back on something reasonable. + case PROCESSOR_ARCHITECTURE_IA64: + default: return LLVM_HOSTTRIPLE; + + case PROCESSOR_ARCHITECTURE_INTEL: + // We need to figure out what kind of x86 it is (possible values are + // i386 through i986). + ret = Twine("i").concat(Twine(info.wProcessorLevel)).concat("86"); + break; + case PROCESSOR_ARCHITECTURE_AMD64: + ret = "amd64"; + break; + case PROCESSOR_ARCHITECTURE_MIPS: + ret = "mips"; + break; + case PROCESSOR_ARCHITECTURE_ARM: + ret = "arm"; + break; + case PROCESSOR_ARCHITECTURE_PPC: + ret = "ppc"; + break; + case PROCESSOR_ARCHITECTURE_ALPHA: + ret = "alpha"; + break; + } + + // Since we're on Windows, we're always on pc-win32. + return ret.concat("-pc-win32").str(); } -- cgit v1.1