When this variable is set, "uname -r" will return its value instead of the
real OS version. Make this affect LLVM's triple for consistency.
<rdar://problem/
9919167>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137111
91177308-0d34-0410-b5e6-
96231b3b80d8
#include <sys/utsname.h>
#include <cctype>
#include <string>
+#include <cstdlib> // ::getenv
using namespace llvm;
static std::string getOSVersion() {
struct utsname info;
+ // Recognize UNAME_RELEASE environment variable to match Darwin uname.
+ const char *UnameOverride = ::getenv("UNAME_RELEASE");
+ if (UnameOverride && UnameOverride[0] != '\0')
+ return UnameOverride;
+
if (uname(&info))
return "";