2020-10-10 14:16:11 +02:00
|
|
|
# typed: strict
|
2019-04-19 15:38:03 +09:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
2018-12-20 20:10:54 +00:00
|
|
|
module Hardware
|
2020-10-28 18:49:10 +11:00
|
|
|
sig { params(version: T.nilable(Version)).returns(Symbol) }
|
2021-09-29 17:43:47 -07:00
|
|
|
def self.oldest_cpu(version = nil)
|
|
|
|
version = if version
|
2023-05-09 02:15:28 +02:00
|
|
|
MacOSVersion.new(version.to_s)
|
2021-09-29 17:43:47 -07:00
|
|
|
else
|
|
|
|
MacOS.version
|
|
|
|
end
|
2020-07-08 20:53:10 +02:00
|
|
|
if CPU.arch == :arm64
|
|
|
|
:arm_vortex_tempest
|
2023-12-23 04:02:41 +00:00
|
|
|
# This cannot use a newer CPU e.g. haswell because Rosetta 2 does not
|
2023-09-02 21:36:26 -04:00
|
|
|
# support AVX instructions in bottles:
|
2020-12-28 09:09:08 +00:00
|
|
|
# https://github.com/Homebrew/homebrew-core/issues/67713
|
2023-12-23 04:02:41 +00:00
|
|
|
elsif version >= :ventura
|
|
|
|
:westmere
|
2020-07-08 20:53:10 +02:00
|
|
|
elsif version >= :mojave
|
2018-12-20 20:10:54 +00:00
|
|
|
:nehalem
|
|
|
|
else
|
|
|
|
generic_oldest_cpu
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|