aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJack Nagel2013-11-27 17:25:17 -0600
committerJack Nagel2013-11-27 17:25:27 -0600
commit14b19ba3c4478c8f19068f192d64cb1426bf48d3 (patch)
treea2debc429dfad7f68646c3db025c231cc9655b17
parent8ba503ebb612b6e5c276d8f3adf9ec5ce02db161 (diff)
downloadbrew-14b19ba3c4478c8f19068f192d64cb1426bf48d3.tar.bz2
Adjust optimization flags if the CPU does not support SSE4
Tentatively fixes Homebrew/homebrew#21778, Homebrew/homebrew#24363.
-rw-r--r--Library/Homebrew/extend/ENV/std.rb6
-rw-r--r--Library/Homebrew/extend/ENV/super.rb6
2 files changed, 9 insertions, 3 deletions
diff --git a/Library/Homebrew/extend/ENV/std.rb b/Library/Homebrew/extend/ENV/std.rb
index 1002749d2..b9cbfbc68 100644
--- a/Library/Homebrew/extend/ENV/std.rb
+++ b/Library/Homebrew/extend/ENV/std.rb
@@ -344,8 +344,12 @@ module Stdenv
if ARGV.build_bottle?
arch = ARGV.bottle_arch || Hardware.oldest_cpu
append flags, Hardware::CPU.optimization_flags.fetch(arch)
+ elsif Hardware::CPU.intel? && !Hardware::CPU.sse4?
+ # If the CPU doesn't support SSE4, we cannot trust -march=native or
+ # -march=<cpu family> to do the right thing because we might be running
+ # in a VM or on a Hackintosh.
+ append flags, Hardware::CPU.optimization_flags.fetch(Hardware.oldest_cpu)
else
- # Don't set -msse3 and older flags because -march does that for us
append flags, map.fetch(Hardware::CPU.family, default)
end
diff --git a/Library/Homebrew/extend/ENV/super.rb b/Library/Homebrew/extend/ENV/super.rb
index 013b262de..f89b89b36 100644
--- a/Library/Homebrew/extend/ENV/super.rb
+++ b/Library/Homebrew/extend/ENV/super.rb
@@ -206,8 +206,10 @@ module Superenv
if ARGV.build_bottle?
arch = ARGV.bottle_arch || Hardware.oldest_cpu
Hardware::CPU.optimization_flags.fetch(arch)
- elsif compiler == :clang
- "-march=native"
+ elsif Hardware::CPU.intel? && !Hardware::CPU.sse4?
+ Hardware::CPU.optimization_flags.fetch(Hardware.oldest_cpu)
+ else
+ "-march=native" if compiler == :clang
end
end