| 
									
										
										
										
											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 |