diff options
| author | Misty De Meo | 2013-08-11 19:11:58 -0700 |
|---|---|---|
| committer | Misty De Meo | 2013-08-15 22:46:56 -0700 |
| commit | 1470fd3f0f992ad2dd14d173710b630cf64a9b80 (patch) | |
| tree | 2f4f1459709baa45add4f19b262f866c74aef332 | |
| parent | 7583729b2055bdea7c44541e3d1851f447090b5e (diff) | |
| download | homebrew-1470fd3f0f992ad2dd14d173710b630cf64a9b80.tar.bz2 | |
Mach: improve PPC arch detection
Also adds some reusable constants into the global Hardware::CPU
namespace, available on both OS X and Linux.
| -rw-r--r-- | Library/Homebrew/hardware.rb | 5 | ||||
| -rw-r--r-- | Library/Homebrew/mach.rb | 32 |
2 files changed, 33 insertions, 4 deletions
diff --git a/Library/Homebrew/hardware.rb b/Library/Homebrew/hardware.rb index 815f4dbc0..44642d44f 100644 --- a/Library/Homebrew/hardware.rb +++ b/Library/Homebrew/hardware.rb @@ -1,5 +1,10 @@ class Hardware module CPU extend self + INTEL_32BIT_ARCHS = [:i386].freeze + INTEL_64BIT_ARCHS = [:x86_64].freeze + PPC_32BIT_ARCHS = [:ppc, :ppc7400, :ppc7450, :ppc970].freeze + PPC_64BIT_ARCHS = [:ppc64].freeze + def type @type || :dunno end diff --git a/Library/Homebrew/mach.rb b/Library/Homebrew/mach.rb index 44726ac5f..a2a87db46 100644 --- a/Library/Homebrew/mach.rb +++ b/Library/Homebrew/mach.rb @@ -1,20 +1,44 @@ module ArchitectureListExtension + def fat? + length > 1 + end + + def intel_universal? + intersects_all?(Hardware::CPU::INTEL_32BIT_ARCHS, Hardware::CPU::INTEL_64BIT_ARCHS) + end + + 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 + def cross_universal? + intersects_all?(Hardware::CPU::PPC_32BIT_ARCHS, Hardware::CPU::INTEL_32BIT_ARCHS) + end + def universal? - self.include? :i386 and self.include? :x86_64 + intel_universal? || ppc_universal? || cross_universal? end def ppc? - self.include? :ppc7400 or self.include? :ppc64 + (PPC_32BIT_ARCHS+PPC_64BIT_ARCHS).any? {|a| self.include? a} end def remove_ppc! - self.delete :ppc7400 - self.delete :ppc64 + (Hardware::CPU::PPC_32BIT_ARCHS+Hardware::CPU::PPC_64BIT_ARCHS).each {|a| self.delete a} end def as_arch_flags self.collect{ |a| "-arch #{a}" }.join(' ') end + + protected + + def intersects_all?(*set) + set.all? do |archset| + archset.any? {|a| self.include? a} + end + end end module MachO |
