| 
									
										
										
										
											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
										 |  |  |   extend T::Sig | 
					
						
							|  |  |  |   sig { params(version: T.nilable(Version)).returns(Symbol) } | 
					
						
							| 
									
										
										
										
											2019-01-28 19:31:21 +00:00
										 |  |  |   def self.oldest_cpu(version = MacOS.version) | 
					
						
							| 
									
										
										
										
											2020-07-08 20:53:10 +02:00
										 |  |  |     if CPU.arch == :arm64 | 
					
						
							|  |  |  |       :arm_vortex_tempest | 
					
						
							| 
									
										
										
										
											2020-12-28 09:09:08 +00:00
										 |  |  |     # TODO: this cannot be re-enabled until either Rosetta 2 supports AVX | 
					
						
							|  |  |  |     # instructions in bottles or Homebrew refuses to run under Rosetta 2 (when | 
					
						
							|  |  |  |     # ARM support is sufficiently complete): | 
					
						
							|  |  |  |     #   https://github.com/Homebrew/homebrew-core/issues/67713 | 
					
						
							|  |  |  |     # | 
					
						
							|  |  |  |     # elsif version >= :big_sur | 
					
						
							|  |  |  |     #   :ivybridge | 
					
						
							| 
									
										
										
										
											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 |