diff --git a/llvm/include/llvm/TextAPI/Platform.h b/llvm/include/llvm/TextAPI/Platform.h index 7a81b496cf842..0879039f994d0 100644 --- a/llvm/include/llvm/TextAPI/Platform.h +++ b/llvm/include/llvm/TextAPI/Platform.h @@ -39,6 +39,7 @@ PlatformKind mapToPlatformKind(PlatformKind Platform, bool WantSim); PlatformKind mapToPlatformKind(const Triple &Target); PlatformSet mapToPlatformSet(ArrayRef Targets); StringRef getPlatformName(PlatformKind Platform); +PlatformKind getPlatformFromName(StringRef Name); } // end namespace MachO. } // end namespace llvm. diff --git a/llvm/lib/TextAPI/Platform.cpp b/llvm/lib/TextAPI/Platform.cpp index d68a0dd483eff..2e6b8852cd6fc 100644 --- a/llvm/lib/TextAPI/Platform.cpp +++ b/llvm/lib/TextAPI/Platform.cpp @@ -12,6 +12,7 @@ #include "llvm/TextAPI/Platform.h" #include "llvm/ADT/ArrayRef.h" +#include "llvm/ADT/StringSwitch.h" #include "llvm/ADT/Triple.h" namespace llvm { @@ -89,5 +90,20 @@ StringRef getPlatformName(PlatformKind Platform) { llvm_unreachable("Unknown llvm.MachO.PlatformKind enum"); } +PlatformKind getPlatformFromName(StringRef Name) { + return StringSwitch(Name) + .Case("macos", PlatformKind::macOS) + .Case("ios", PlatformKind::iOS) + .Case("tvos", PlatformKind::tvOS) + .Case("watchos", PlatformKind::watchOS) + .Case("bridgeos", PlatformKind::macOS) + .Case("ios-macabi", PlatformKind::macCatalyst) + .Case("ios-simulator", PlatformKind::iOSSimulator) + .Case("tvos-simulator", PlatformKind::tvOSSimulator) + .Case("watchos-simulator", PlatformKind::watchOSSimulator) + .Case("driverkit", PlatformKind::driverKit) + .Default(PlatformKind::unknown); +} + } // end namespace MachO. } // end namespace llvm. diff --git a/llvm/unittests/TextAPI/TextStubV4Tests.cpp b/llvm/unittests/TextAPI/TextStubV4Tests.cpp index 620363cae8193..1fe5081894fa9 100644 --- a/llvm/unittests/TextAPI/TextStubV4Tests.cpp +++ b/llvm/unittests/TextAPI/TextStubV4Tests.cpp @@ -82,8 +82,8 @@ TEST(TBDv4, ReadFile) { TBDFile File = std::move(Result.get()); EXPECT_EQ(FileType::TBD_V4, File->getFileType()); PlatformSet Platforms; - Platforms.insert(PlatformKind::macOS); - Platforms.insert(PlatformKind::iOS); + Platforms.insert(getPlatformFromName("macos")); + Platforms.insert(getPlatformFromName("ios")); auto Archs = AK_i386 | AK_x86_64; TargetList Targets = { Target(AK_i386, PlatformKind::macOS),