return sectAligns;
}
+PlatformKind macho::removeSimulator(PlatformKind platform) {
+ switch (platform) {
+ case PlatformKind::iOSSimulator:
+ return PlatformKind::iOS;
+ case PlatformKind::tvOSSimulator:
+ return PlatformKind::tvOS;
+ case PlatformKind::watchOSSimulator:
+ return PlatformKind::watchOS;
+ default:
+ return platform;
+ }
+}
+
static bool dataConstDefault(const InputArgList &args) {
- static const std::map<PlatformKind, VersionTuple> minVersion = {
+ static const std::vector<std::pair<PlatformKind, VersionTuple>> minVersion = {
{PlatformKind::macOS, VersionTuple(10, 15)},
{PlatformKind::iOS, VersionTuple(13, 0)},
- {PlatformKind::iOSSimulator, VersionTuple(13, 0)},
{PlatformKind::tvOS, VersionTuple(13, 0)},
- {PlatformKind::tvOSSimulator, VersionTuple(13, 0)},
{PlatformKind::watchOS, VersionTuple(6, 0)},
- {PlatformKind::watchOSSimulator, VersionTuple(6, 0)},
{PlatformKind::bridgeOS, VersionTuple(4, 0)}};
- auto it = minVersion.find(config->platformInfo.target.Platform);
+ PlatformKind platform = removeSimulator(config->platformInfo.target.Platform);
+ auto it = llvm::find_if(minVersion,
+ [&](const auto &p) { return p.first == platform; });
if (it != minVersion.end())
if (config->platformInfo.minimum < it->second)
return false;
namespace llvm {
namespace MachO {
class InterfaceFile;
+enum class PlatformKind : unsigned;
} // namespace MachO
} // namespace llvm
void printArchiveMemberLoad(StringRef reason, const InputFile *);
+// Map simulator platforms to their underlying device platform.
+llvm::MachO::PlatformKind removeSimulator(llvm::MachO::PlatformKind platform);
+
// Helper class to export dependency info.
class DependencyTracker {
public:
return platformInfos;
}
-static PlatformKind removeSimulator(PlatformKind platform) {
- // Mapping of platform to simulator and vice-versa.
- static const std::map<PlatformKind, PlatformKind> platformMap = {
- {PlatformKind::iOSSimulator, PlatformKind::iOS},
- {PlatformKind::tvOSSimulator, PlatformKind::tvOS},
- {PlatformKind::watchOSSimulator, PlatformKind::watchOS}};
-
- auto iter = platformMap.find(platform);
- if (iter == platformMap.end())
- return platform;
- return iter->second;
-}
-
static bool checkCompatibility(const InputFile *input) {
std::vector<PlatformInfo> platformInfos = getPlatformInfos(input);
if (platformInfos.empty())
#include "llvm/Support/MemoryBuffer.h"
#include "llvm/TextAPI/TextAPIReader.h"
-#include <map>
#include <vector>
namespace llvm {
// TODO: ld64 enforces the old load commands in a few other cases.
static bool useLCBuildVersion(const PlatformInfo &platformInfo) {
- static const std::map<PlatformKind, llvm::VersionTuple> minVersion = {
- {PlatformKind::macOS, llvm::VersionTuple(10, 14)},
- {PlatformKind::iOS, llvm::VersionTuple(12, 0)},
- {PlatformKind::iOSSimulator, llvm::VersionTuple(13, 0)},
- {PlatformKind::tvOS, llvm::VersionTuple(12, 0)},
- {PlatformKind::tvOSSimulator, llvm::VersionTuple(13, 0)},
- {PlatformKind::watchOS, llvm::VersionTuple(5, 0)},
- {PlatformKind::watchOSSimulator, llvm::VersionTuple(6, 0)}};
- auto it = minVersion.find(platformInfo.target.Platform);
+ static const std::vector<std::pair<PlatformKind, llvm::VersionTuple>>
+ minVersion = {{PlatformKind::macOS, llvm::VersionTuple(10, 14)},
+ {PlatformKind::iOS, llvm::VersionTuple(12, 0)},
+ {PlatformKind::iOSSimulator, llvm::VersionTuple(13, 0)},
+ {PlatformKind::tvOS, llvm::VersionTuple(12, 0)},
+ {PlatformKind::tvOSSimulator, llvm::VersionTuple(13, 0)},
+ {PlatformKind::watchOS, llvm::VersionTuple(5, 0)},
+ {PlatformKind::watchOSSimulator, llvm::VersionTuple(6, 0)}};
+ auto it = llvm::find_if(minVersion, [&](const auto &p) {
+ return p.first == platformInfo.target.Platform;
+ });
return it == minVersion.end() ? true : platformInfo.minimum >= it->second;
}