From 4860fe0ad0447f8545bdbc1b327e82cb1ba41a51 Mon Sep 17 00:00:00 2001 From: Daniel Dunbar Date: Tue, 19 Apr 2011 20:30:10 +0000 Subject: [PATCH] ADT/Triple: Add helper function for OS X version checks. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129801 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/ADT/Triple.h | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/include/llvm/ADT/Triple.h b/include/llvm/ADT/Triple.h index ea5a6225df6..480c9316bd0 100644 --- a/include/llvm/ADT/Triple.h +++ b/include/llvm/ADT/Triple.h @@ -249,7 +249,8 @@ public: return getOSMajorVersion(); } - bool isOSVersionLT(unsigned Major, unsigned B_Minor, unsigned Micro) { + bool isOSVersionLT(unsigned Major, unsigned Minor = 0, + unsigned Micro = 0) const { unsigned LHS[3]; getOSVersion(LHS[0], LHS[1], LHS[2]); @@ -263,6 +264,28 @@ public: return false; } + /// isOSX - Is this an OS X triple. For legacy reasons, we support both + /// "darwin" and "osx" as OS X triples. + bool isOSX() const { + return getOS() == Triple::Darwin || getOS() == Triple::OSX; + } + + /// isOSXVersionLT - Comparison function for checking OS X version + /// compatibility, which handles supporting skewed version numbering schemes + /// used by the "darwin" triples. + unsigned isOSXVersionLT(unsigned Major, unsigned Minor = 0, + unsigned Micro = 0) const { + assert(isOSX() && "Not an OS X triple!"); + + // If this is OS X, expect a sane version number. + if (getOS() == Triple::OSX) + return isOSVersionLT(Major, Minor, Micro); + + // Otherwise, compare to the "Darwin" number. + assert(Major == 10 && "Unexpected major version"); + return isOSVersionLT(Minor + 4, Micro, 0); + } + /// @} /// @name Mutators /// @{