[Lldb-commits] [PATCH] D79538: Add an XcodeSDK::GetSDKTypeForTriple function

2020-05-07 Thread Adrian Prantl via Phabricator via lldb-commits
This revision was automatically updated to reflect the committed changes.
Closed by commit rG6e95d51ecfab: Add an XcodeSDK::GetSDKTypeForTriple function 
(authored by aprantl).
Herald added a project: LLDB.

Changed prior to commit:
  https://reviews.llvm.org/D79538?vs=262519=262706#toc

Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D79538/new/

https://reviews.llvm.org/D79538

Files:
  lldb/include/lldb/Utility/XcodeSDK.h
  lldb/source/Utility/XcodeSDK.cpp
  lldb/unittests/Utility/XcodeSDKTest.cpp

Index: lldb/unittests/Utility/XcodeSDKTest.cpp
===
--- lldb/unittests/Utility/XcodeSDKTest.cpp
+++ lldb/unittests/Utility/XcodeSDKTest.cpp
@@ -12,6 +12,7 @@
 #include "lldb/Utility/XcodeSDK.h"
 
 #include "llvm/ADT/StringRef.h"
+#include "llvm/ADT/Triple.h"
 
 #include 
 
@@ -147,3 +148,33 @@
   info.version = llvm::VersionTuple(7, 0);
   EXPECT_EQ("iphoneos7.0.internal", XcodeSDK::GetCanonicalName(info));
 }
+
+TEST(XcodeSDKTest, GetSDKTypeForTriple) {
+  EXPECT_EQ(
+  XcodeSDK::GetSDKTypeForTriple(llvm::Triple("x86_64-apple-macosx10.14")),
+  XcodeSDK::Type::MacOSX);
+  EXPECT_EQ(XcodeSDK::GetSDKTypeForTriple(llvm::Triple("x86_64-apple-darwin")),
+XcodeSDK::Type::MacOSX);
+  EXPECT_EQ(XcodeSDK::GetSDKTypeForTriple(
+llvm::Triple("x86_64-apple-ios13.4-simulator")),
+XcodeSDK::Type::iPhoneSimulator);
+  EXPECT_EQ(XcodeSDK::GetSDKTypeForTriple(llvm::Triple("arm64-apple-ios13.4")),
+XcodeSDK::Type::iPhoneOS);
+  EXPECT_EQ(XcodeSDK::GetSDKTypeForTriple(
+llvm::Triple("x86_64-apple-ios13.4-macabi")),
+XcodeSDK::Type::MacOSX);
+  EXPECT_EQ(XcodeSDK::GetSDKTypeForTriple(
+llvm::Triple("x86_64-apple-tvos-simulator")),
+XcodeSDK::Type::AppleTVSimulator);
+  EXPECT_EQ(XcodeSDK::GetSDKTypeForTriple(llvm::Triple("arm64-apple-tvos")),
+XcodeSDK::Type::AppleTVOS);
+  EXPECT_EQ(XcodeSDK::GetSDKTypeForTriple(
+llvm::Triple("x86_64-apple-watchos-simulator")),
+XcodeSDK::Type::WatchSimulator);
+  EXPECT_EQ(XcodeSDK::GetSDKTypeForTriple(llvm::Triple("arm64-apple-watchos")),
+XcodeSDK::Type::watchOS);
+  EXPECT_EQ(XcodeSDK::GetSDKTypeForTriple(llvm::Triple("x86_64-unknown-linux")),
+XcodeSDK::Type::Linux);
+  EXPECT_EQ(XcodeSDK::GetSDKTypeForTriple(llvm::Triple("i386-unknown-netbsd")),
+XcodeSDK::Type::unknown);
+}
Index: lldb/source/Utility/XcodeSDK.cpp
===
--- lldb/source/Utility/XcodeSDK.cpp
+++ lldb/source/Utility/XcodeSDK.cpp
@@ -6,10 +6,13 @@
 //
 //===--===//
 
-#include "lldb/Utility/FileSpec.h"
 #include "lldb/Utility/XcodeSDK.h"
+#include "lldb/Utility/FileSpec.h"
 
 #include "lldb/lldb-types.h"
+
+#include "llvm/ADT/Triple.h"
+
 #include 
 
 using namespace lldb;
@@ -190,3 +193,33 @@
 return false;
   return SDKSupportsModules(sdk.GetType(), sdk.GetVersion());
 }
+
+XcodeSDK::Type XcodeSDK::GetSDKTypeForTriple(const llvm::Triple ) {
+  using namespace llvm;
+  switch (triple.getOS()) {
+  case Triple::MacOSX:
+  case Triple::Darwin:
+return XcodeSDK::MacOSX;
+  case Triple::IOS:
+switch (triple.getEnvironment()) {
+case Triple::MacABI:
+  return XcodeSDK::MacOSX;
+case Triple::Simulator:
+  return XcodeSDK::iPhoneSimulator;
+default:
+  return XcodeSDK::iPhoneOS;
+}
+  case Triple::TvOS:
+if (triple.getEnvironment() == Triple::Simulator)
+  return XcodeSDK::AppleTVSimulator;
+return XcodeSDK::AppleTVOS;
+  case Triple::WatchOS:
+if (triple.getEnvironment() == Triple::Simulator)
+  return XcodeSDK::WatchSimulator;
+return XcodeSDK::watchOS;
+  case Triple::Linux:
+return XcodeSDK::Linux;
+  default:
+return XcodeSDK::unknown;
+  }
+}
Index: lldb/include/lldb/Utility/XcodeSDK.h
===
--- lldb/include/lldb/Utility/XcodeSDK.h
+++ lldb/include/lldb/Utility/XcodeSDK.h
@@ -14,6 +14,10 @@
 #include "llvm/Support/VersionTuple.h"
 #include 
 
+namespace llvm {
+class Triple;
+}
+
 namespace lldb_private {
 
 /// An abstraction for Xcode-style SDKs that works like \ref ArchSpec.
@@ -72,6 +76,8 @@
   static bool SDKSupportsModules(Type desired_type, const FileSpec _path);
   /// Return the canonical SDK name, such as "macosx" for the macOS SDK.
   static std::string GetCanonicalName(Info info);
+  /// Return the best-matching SDK type for a specific triple.
+  static XcodeSDK::Type GetSDKTypeForTriple(const llvm::Triple );
 };
 
 } // namespace lldb_private
___
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits


[Lldb-commits] [PATCH] D79538: Add an XcodeSDK::GetSDKTypeForTriple function

2020-05-07 Thread Vedant Kumar via Phabricator via lldb-commits
vsk accepted this revision.
vsk added a comment.

lgtm as well


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D79538/new/

https://reviews.llvm.org/D79538



___
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits


[Lldb-commits] [PATCH] D79538: Add an XcodeSDK::GetSDKTypeForTriple function

2020-05-06 Thread Adrian Prantl via Phabricator via lldb-commits
aprantl created this revision.
aprantl added reviewers: JDevlieghere, friss.

This is something used in swift-lldb, but of general usefulness.


https://reviews.llvm.org/D79538

Files:
  lldb/include/lldb/Utility/XcodeSDK.h
  lldb/source/Utility/XcodeSDK.cpp
  lldb/unittests/Utility/XcodeSDKTest.cpp

Index: lldb/unittests/Utility/XcodeSDKTest.cpp
===
--- lldb/unittests/Utility/XcodeSDKTest.cpp
+++ lldb/unittests/Utility/XcodeSDKTest.cpp
@@ -12,6 +12,7 @@
 #include "lldb/Utility/XcodeSDK.h"
 
 #include "llvm/ADT/StringRef.h"
+#include "llvm/ADT/Triple.h"
 
 #include 
 
@@ -158,3 +159,33 @@
   info.version = llvm::VersionTuple(7, 0);
   EXPECT_EQ("iphoneos7.0.internal", XcodeSDK::GetCanonicalName(info));
 }
+
+TEST(XcodeSDKTest, GetSDKTypeForTriple) {
+  EXPECT_EQ(
+  XcodeSDK::GetSDKTypeForTriple(llvm::Triple("x86_64-apple-macosx10.14")),
+  XcodeSDK::Type::MacOSX);
+  EXPECT_EQ(XcodeSDK::GetSDKTypeForTriple(llvm::Triple("x86_64-apple-darwin")),
+XcodeSDK::Type::MacOSX);
+  EXPECT_EQ(XcodeSDK::GetSDKTypeForTriple(
+llvm::Triple("x86_64-apple-ios13.4-simulator")),
+XcodeSDK::Type::iPhoneSimulator);
+  EXPECT_EQ(XcodeSDK::GetSDKTypeForTriple(llvm::Triple("arm64-apple-ios13.4")),
+XcodeSDK::Type::iPhoneOS);
+  EXPECT_EQ(XcodeSDK::GetSDKTypeForTriple(
+llvm::Triple("x86_64-apple-ios13.4-macabi")),
+XcodeSDK::Type::MacOSX);
+  EXPECT_EQ(XcodeSDK::GetSDKTypeForTriple(
+llvm::Triple("x86_64-apple-tvos-simulator")),
+XcodeSDK::Type::AppleTVSimulator);
+  EXPECT_EQ(XcodeSDK::GetSDKTypeForTriple(llvm::Triple("arm64-apple-tvos")),
+XcodeSDK::Type::AppleTVOS);
+  EXPECT_EQ(XcodeSDK::GetSDKTypeForTriple(
+llvm::Triple("x86_64-apple-watchos-simulator")),
+XcodeSDK::Type::WatchSimulator);
+  EXPECT_EQ(XcodeSDK::GetSDKTypeForTriple(llvm::Triple("arm64-apple-watchos")),
+XcodeSDK::Type::watchOS);
+  EXPECT_EQ(XcodeSDK::GetSDKTypeForTriple(llvm::Triple("x86_64-unknown-linux")),
+XcodeSDK::Type::Linux);
+  EXPECT_EQ(XcodeSDK::GetSDKTypeForTriple(llvm::Triple("i386-unknown-netbsd")),
+XcodeSDK::Type::unknown);
+}
Index: lldb/source/Utility/XcodeSDK.cpp
===
--- lldb/source/Utility/XcodeSDK.cpp
+++ lldb/source/Utility/XcodeSDK.cpp
@@ -6,10 +6,13 @@
 //
 //===--===//
 
-#include "lldb/Utility/FileSpec.h"
 #include "lldb/Utility/XcodeSDK.h"
+#include "lldb/Utility/FileSpec.h"
 
 #include "lldb/lldb-types.h"
+
+#include "llvm/ADT/Triple.h"
+
 #include 
 
 using namespace lldb;
@@ -211,3 +214,32 @@
 return false;
   return SDKSupportsModules(sdk.GetType(), sdk.GetVersion());
 }
+
+XcodeSDK::Type XcodeSDK::GetSDKTypeForTriple(const llvm::Triple ) {
+  switch (triple.getOS()) {
+  case llvm::Triple::OSType::MacOSX:
+  case llvm::Triple::OSType::Darwin:
+return Type::MacOSX;
+  case llvm::Triple::OSType::IOS:
+switch (triple.getEnvironment()) {
+case llvm::Triple::MacABI:
+  return Type::MacOSX;
+case llvm::Triple::Simulator:
+  return Type::iPhoneSimulator;
+default:
+  return Type::iPhoneOS;
+}
+  case llvm::Triple::OSType::TvOS:
+if (triple.getEnvironment() == llvm::Triple::Simulator)
+  return Type::AppleTVSimulator;
+return Type::AppleTVOS;
+  case llvm::Triple::OSType::WatchOS:
+if (triple.getEnvironment() == llvm::Triple::Simulator)
+  return Type::WatchSimulator;
+return Type::watchOS;
+  case llvm::Triple::OSType::Linux:
+return Type::Linux;
+  default:
+return Type::unknown;
+  }
+}
Index: lldb/include/lldb/Utility/XcodeSDK.h
===
--- lldb/include/lldb/Utility/XcodeSDK.h
+++ lldb/include/lldb/Utility/XcodeSDK.h
@@ -14,6 +14,10 @@
 #include "llvm/Support/VersionTuple.h"
 #include 
 
+namespace llvm {
+class Triple;
+}
+
 namespace lldb_private {
 
 /// An abstraction for Xcode-style SDKs that works like \ref ArchSpec.
@@ -76,6 +80,8 @@
   static bool SDKSupportsModules(Type desired_type, const FileSpec _path);
   /// Return the canonical SDK name, such as "macosx" for the macOS SDK.
   static std::string GetCanonicalName(Info info);
+  /// Return the best-matching SDK type for a specific triple.
+  static XcodeSDK::Type GetSDKTypeForTriple(const llvm::Triple );
 };
 
 } // namespace lldb_private
___
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits