text: //===--- Platform.cpp - Implement platform-related helpers ----------------===//
  //
  // This source file is part of the Swift.org open source project
  //
  // Copyright (c) 2014 - 2016 Apple Inc. and the Swift project authors
  // Licensed under Apache License v2.0 with Runtime Library Exception
  //
  // See http://swift.org/LICENSE.txt for license information
  // See http://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
  //
  //===----------------------------------------------------------------------===//
  
  #include "swift/Basic/Platform.h"
  #include "llvm/ADT/Triple.h"
  
  using namespace swift;
  
  bool swift::tripleIsiOSSimulator(const llvm::Triple &triple) {
    llvm::Triple::ArchType arch = triple.getArch();
    return (triple.isiOS() &&
            (arch == llvm::Triple::x86 || arch == llvm::Triple::x86_64));
  }
  
  bool swift::tripleIsAppleTVSimulator(const llvm::Triple &triple) {
    llvm::Triple::ArchType arch = triple.getArch();
    return (triple.isTvOS() &&
           (arch == llvm::Triple::x86 || arch == llvm::Triple::x86_64));
  }
  
  bool swift::tripleIsWatchSimulator(const llvm::Triple &triple) {
    llvm::Triple::ArchType arch = triple.getArch();
    return (triple.isWatchOS() &&
           (arch == llvm::Triple::x86 || arch == llvm::Triple::x86_64));
  }
  
  bool swift::tripleIsAnySimulator(const llvm::Triple &triple) {
    return tripleIsiOSSimulator(triple) ||
        tripleIsWatchSimulator(triple) ||
        tripleIsAppleTVSimulator(triple);
  }
  
  StringRef swift::getPlatformNameForTriple(const llvm::Triple &triple) {
    if (triple.isiOS()) {
      if (triple.isTvOS()) {
        if (tripleIsAppleTVSimulator(triple))
          return "appletvsimulator";
        return "appletvos";
      }
  
      if (tripleIsiOSSimulator(triple))
        return "iphonesimulator";
      return "iphoneos";
    }
  
    if (triple.isWatchOS()) {
      if (tripleIsWatchSimulator(triple))
          return "watchsimulator";
      return "watchos";
    }
  
    if (triple.isMacOSX())
      return "macosx";
  
    if (triple.isOSLinux())
      return "linux";
  
    if (triple.isOSFreeBSD())
      return "freebsd";
  
    return "";
  }
  