mirror of
https://github.com/XcodesOrg/XcodesApp.git
synced 2026-02-06 20:28:39 +01:00
29 lines
946 B
Swift
29 lines
946 B
Swift
import Foundation
|
|
|
|
|
|
struct Hardware {
|
|
|
|
///
|
|
/// Determines the architecture of the Mac on which we're running. Returns `arm64` for Apple Silicon
|
|
/// and `x86_64` for Intel-based Macs or `nil` if the system call fails.
|
|
static func getMachineHardwareName() -> String?
|
|
{
|
|
var sysInfo = utsname()
|
|
let retVal = uname(&sysInfo)
|
|
var finalString: String? = nil
|
|
|
|
if retVal == EXIT_SUCCESS
|
|
{
|
|
let bytes = Data(bytes: &sysInfo.machine, count: Int(_SYS_NAMELEN))
|
|
finalString = String(data: bytes, encoding: .utf8)
|
|
}
|
|
|
|
// _SYS_NAMELEN will include a billion null-terminators. Clear those out so string comparisons work as you expect.
|
|
return finalString?.trimmingCharacters(in: CharacterSet(charactersIn: "\0"))
|
|
}
|
|
|
|
static func isAppleSilicon() -> Bool {
|
|
return Hardware.getMachineHardwareName() == "arm64"
|
|
}
|
|
}
|