
The PlatformKind/PlatformType enums contain the same information, which requires them to be kept in-sync. This commit changes over to PlatformType as the sole source of truth, which allows the removal of the redundant PlatformKind. The majority of the changes were in LLD and TextAPI. Reviewed By: cishida Differential Revision: https://reviews.llvm.org/D117163
135 lines
4.0 KiB
C++
135 lines
4.0 KiB
C++
//===- llvm/TextAPI/Platform.cpp - Platform ---------------------*- C++ -*-===//
|
|
//
|
|
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
// See https://llvm.org/LICENSE.txt for license information.
|
|
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
//
|
|
// Implementations of Platform Helper functions.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#include "llvm/TextAPI/Platform.h"
|
|
#include "llvm/ADT/ArrayRef.h"
|
|
#include "llvm/ADT/StringSwitch.h"
|
|
#include "llvm/ADT/Triple.h"
|
|
|
|
namespace llvm {
|
|
namespace MachO {
|
|
|
|
PlatformType mapToPlatformType(PlatformType Platform, bool WantSim) {
|
|
switch (Platform) {
|
|
default:
|
|
return Platform;
|
|
case PLATFORM_IOS:
|
|
return WantSim ? PLATFORM_IOSSIMULATOR : PLATFORM_IOS;
|
|
case PLATFORM_TVOS:
|
|
return WantSim ? PLATFORM_TVOSSIMULATOR : PLATFORM_TVOS;
|
|
case PLATFORM_WATCHOS:
|
|
return WantSim ? PLATFORM_WATCHOSSIMULATOR : PLATFORM_WATCHOS;
|
|
}
|
|
}
|
|
|
|
PlatformType mapToPlatformType(const Triple &Target) {
|
|
switch (Target.getOS()) {
|
|
default:
|
|
return PLATFORM_UNKNOWN;
|
|
case Triple::MacOSX:
|
|
return PLATFORM_MACOS;
|
|
case Triple::IOS:
|
|
if (Target.isSimulatorEnvironment())
|
|
return PLATFORM_IOSSIMULATOR;
|
|
if (Target.getEnvironment() == Triple::MacABI)
|
|
return PLATFORM_MACCATALYST;
|
|
return PLATFORM_IOS;
|
|
case Triple::TvOS:
|
|
return Target.isSimulatorEnvironment() ? PLATFORM_TVOSSIMULATOR
|
|
: PLATFORM_TVOS;
|
|
case Triple::WatchOS:
|
|
return Target.isSimulatorEnvironment() ? PLATFORM_WATCHOSSIMULATOR
|
|
: PLATFORM_WATCHOS;
|
|
// TODO: add bridgeOS & driverKit once in llvm::Triple
|
|
}
|
|
}
|
|
|
|
PlatformSet mapToPlatformSet(ArrayRef<Triple> Targets) {
|
|
PlatformSet Result;
|
|
for (const auto &Target : Targets)
|
|
Result.insert(mapToPlatformType(Target));
|
|
return Result;
|
|
}
|
|
|
|
StringRef getPlatformName(PlatformType Platform) {
|
|
switch (Platform) {
|
|
case PLATFORM_UNKNOWN:
|
|
return "unknown";
|
|
case PLATFORM_MACOS:
|
|
return "macOS";
|
|
case PLATFORM_IOS:
|
|
return "iOS";
|
|
case PLATFORM_TVOS:
|
|
return "tvOS";
|
|
case PLATFORM_WATCHOS:
|
|
return "watchOS";
|
|
case PLATFORM_BRIDGEOS:
|
|
return "bridgeOS";
|
|
case PLATFORM_MACCATALYST:
|
|
return "macCatalyst";
|
|
case PLATFORM_IOSSIMULATOR:
|
|
return "iOS Simulator";
|
|
case PLATFORM_TVOSSIMULATOR:
|
|
return "tvOS Simulator";
|
|
case PLATFORM_WATCHOSSIMULATOR:
|
|
return "watchOS Simulator";
|
|
case PLATFORM_DRIVERKIT:
|
|
return "DriverKit";
|
|
}
|
|
}
|
|
|
|
PlatformType getPlatformFromName(StringRef Name) {
|
|
return StringSwitch<PlatformType>(Name)
|
|
.Case("macos", PLATFORM_MACOS)
|
|
.Case("ios", PLATFORM_IOS)
|
|
.Case("tvos", PLATFORM_TVOS)
|
|
.Case("watchos", PLATFORM_WATCHOS)
|
|
.Case("bridgeos", PLATFORM_BRIDGEOS)
|
|
.Case("ios-macabi", PLATFORM_MACCATALYST)
|
|
.Case("ios-simulator", PLATFORM_IOSSIMULATOR)
|
|
.Case("tvos-simulator", PLATFORM_TVOSSIMULATOR)
|
|
.Case("watchos-simulator", PLATFORM_WATCHOSSIMULATOR)
|
|
.Case("driverkit", PLATFORM_DRIVERKIT)
|
|
.Default(PLATFORM_UNKNOWN);
|
|
}
|
|
|
|
std::string getOSAndEnvironmentName(PlatformType Platform,
|
|
std::string Version) {
|
|
switch (Platform) {
|
|
case PLATFORM_UNKNOWN:
|
|
return "darwin" + Version;
|
|
case PLATFORM_MACOS:
|
|
return "macos" + Version;
|
|
case PLATFORM_IOS:
|
|
return "ios" + Version;
|
|
case PLATFORM_TVOS:
|
|
return "tvos" + Version;
|
|
case PLATFORM_WATCHOS:
|
|
return "watchos" + Version;
|
|
case PLATFORM_BRIDGEOS:
|
|
return "bridgeos" + Version;
|
|
case PLATFORM_MACCATALYST:
|
|
return "ios" + Version + "-macabi";
|
|
case PLATFORM_IOSSIMULATOR:
|
|
return "ios" + Version + "-simulator";
|
|
case PLATFORM_TVOSSIMULATOR:
|
|
return "tvos" + Version + "-simulator";
|
|
case PLATFORM_WATCHOSSIMULATOR:
|
|
return "watchos" + Version + "-simulator";
|
|
case PLATFORM_DRIVERKIT:
|
|
return "driverkit" + Version;
|
|
}
|
|
}
|
|
|
|
} // end namespace MachO.
|
|
} // end namespace llvm.
|