diff --git a/Library/ENV/4.3/cc b/Library/ENV/4.3/cc index 85f57817df..3d6241c1fd 100755 --- a/Library/ENV/4.3/cc +++ b/Library/ENV/4.3/cc @@ -148,17 +148,22 @@ class Cmd args end def cflags - if cccfg? 'Ob' - %w{-mtune=generic -Oz} - elsif cccfg? 'O' - args = %w{-pipe -w -Os} - args << '-march=native' if tool =~ /clang/ - args += %w{-arch i386 -arch x86_64} if cccfg? 'u' - args << "-std=#{@arg0}" if @arg0 =~ /c[89]9/ - args + return [] unless cccfg? 'O' + + args = %w{-pipe -w -Os} + + # When bottling use the oldest supported CPU type. + if cccfg? 'bi6' + args << '-march=core2' + elsif cccfg? 'bi' + args << '-march=prescott' else - [] + args << '-march=native' if tool =~ /clang/ end + + args += %w{-arch i386 -arch x86_64} if cccfg? 'u' + args << "-std=#{@arg0}" if @arg0 =~ /c[89]9/ + args end def syslibpath # We reject brew's lib as we explicitly add this as a -L flag, thus it diff --git a/Library/Homebrew/extend/ENV.rb b/Library/Homebrew/extend/ENV.rb index 097f002d2d..8b36a5b3d7 100644 --- a/Library/Homebrew/extend/ENV.rb +++ b/Library/Homebrew/extend/ENV.rb @@ -326,7 +326,7 @@ module HomebrewEnvExtension append flags, xarch unless xarch.empty? if ARGV.build_bottle? - append flags, '-mtune=generic' + append flags, Hardware::CPU.optimization_flags[MacOS.oldest_cpu] else # Don't set -msse3 and older flags because -march does that for us append flags, map.fetch(Hardware::CPU.family, default) diff --git a/Library/Homebrew/macos.rb b/Library/Homebrew/macos.rb index 802da0de62..bae263f37e 100644 --- a/Library/Homebrew/macos.rb +++ b/Library/Homebrew/macos.rb @@ -34,6 +34,18 @@ module MacOS extend self cat.to_s.gsub('_', '').to_sym end + def oldest_cpu + if Hardware::CPU.type == :intel + if Hardware::CPU.is_64_bit? + :core2 + else + :core + end + else + Hardware::CPU.family + end + end + def locate tool # Don't call tools (cc, make, strip, etc.) directly! # Give the name of the binary you look for as a string to this method diff --git a/Library/Homebrew/superenv.rb b/Library/Homebrew/superenv.rb index 8c2d522b8e..b8dfa7f25d 100644 --- a/Library/Homebrew/superenv.rb +++ b/Library/Homebrew/superenv.rb @@ -182,7 +182,17 @@ class << ENV def determine_cccfg s = "" - s << 'b' if ARGV.build_bottle? + if ARGV.build_bottle? + s << if Hardware::CPU.type == :intel + if Hardware::CPU.is_64_bit? + 'bi6' + else + 'bi' + end + else + 'b' + end + end # Fix issue with sed barfing on unicode characters on Mountain Lion s << 's' if MacOS.version >= :mountain_lion # Fix issue with 10.8 apr-1-config having broken paths