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 | ab633864d5db641d27fdce49c7c66074b931b19d (patch) | |
| tree | 8abcd3ea4c98baf41c56f10dfd73868af4e98468 /Library | |
| parent | fa03fd91b405c581fb57b8dc3b207b6226582ac3 (diff) | |
| download | brew-ab633864d5db641d27fdce49c7c66074b931b19d.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.
Diffstat (limited to 'Library')
| -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 |
