| 
									
										
										
										
											2016-04-25 18:00:01 +01:00
										 |  |  | require "extend/os/hardware" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-01-26 11:57:58 -05:00
										 |  |  | module ArchitectureListExtension | 
					
						
							|  |  |  |   # @private | 
					
						
							|  |  |  |   def fat? | 
					
						
							|  |  |  |     length > 1
 | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   # @private | 
					
						
							|  |  |  |   def intel_universal? | 
					
						
							|  |  |  |     intersects_all?(Hardware::CPU::INTEL_32BIT_ARCHS, Hardware::CPU::INTEL_64BIT_ARCHS) | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   # @private | 
					
						
							|  |  |  |   def ppc_universal? | 
					
						
							|  |  |  |     intersects_all?(Hardware::CPU::PPC_32BIT_ARCHS, Hardware::CPU::PPC_64BIT_ARCHS) | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   # Old-style 32-bit PPC/Intel universal, e.g. ppc7400 and i386 | 
					
						
							|  |  |  |   # @private | 
					
						
							|  |  |  |   def cross_universal? | 
					
						
							|  |  |  |     intersects_all?(Hardware::CPU::PPC_32BIT_ARCHS, Hardware::CPU::INTEL_32BIT_ARCHS) | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   # @private | 
					
						
							|  |  |  |   def universal? | 
					
						
							|  |  |  |     intel_universal? || ppc_universal? || cross_universal? | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def ppc? | 
					
						
							| 
									
										
										
										
											2016-09-11 17:49:27 +01:00
										 |  |  |     (Hardware::CPU::PPC_32BIT_ARCHS+Hardware::CPU::PPC_64BIT_ARCHS).any? { |a| include? a } | 
					
						
							| 
									
										
										
										
											2016-01-26 11:57:58 -05:00
										 |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   # @private | 
					
						
							|  |  |  |   def remove_ppc! | 
					
						
							|  |  |  |     (Hardware::CPU::PPC_32BIT_ARCHS+Hardware::CPU::PPC_64BIT_ARCHS).each { |a| delete a } | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def as_arch_flags | 
					
						
							|  |  |  |     collect { |a| "-arch #{a}" }.join(" ") | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def as_cmake_arch_flags | 
					
						
							|  |  |  |     join(";") | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   protected | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def intersects_all?(*set) | 
					
						
							|  |  |  |     set.all? do |archset| | 
					
						
							| 
									
										
										
										
											2016-09-11 17:49:27 +01:00
										 |  |  |       archset.any? { |a| include? a } | 
					
						
							| 
									
										
										
										
											2016-01-26 11:57:58 -05:00
										 |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | end |