aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew
diff options
context:
space:
mode:
Diffstat (limited to 'Library/Homebrew')
-rw-r--r--Library/Homebrew/extend/ENV/shared.rb5
-rw-r--r--Library/Homebrew/extend/ENV/std.rb2
-rw-r--r--Library/Homebrew/extend/ENV/super.rb5
-rw-r--r--Library/Homebrew/test/test_ENV.rb29
4 files changed, 37 insertions, 4 deletions
diff --git a/Library/Homebrew/extend/ENV/shared.rb b/Library/Homebrew/extend/ENV/shared.rb
index eeba5bbf9..2debbae58 100644
--- a/Library/Homebrew/extend/ENV/shared.rb
+++ b/Library/Homebrew/extend/ENV/shared.rb
@@ -322,4 +322,9 @@ module SharedEnvExtension
raise "Non-Apple GCC can't build universal binaries"
end
end
+
+ def gcc_with_cxx11_support?(cc)
+ version = cc[/^gcc-(\d+(?:\.\d+)?)$/, 1]
+ version && Version.new(version) >= Version.new("4.8")
+ end
end
diff --git a/Library/Homebrew/extend/ENV/std.rb b/Library/Homebrew/extend/ENV/std.rb
index 87eebb753..8be0b48ce 100644
--- a/Library/Homebrew/extend/ENV/std.rb
+++ b/Library/Homebrew/extend/ENV/std.rb
@@ -287,7 +287,7 @@ module Stdenv
if compiler == :clang
append "CXX", "-std=c++11"
append "CXX", "-stdlib=libc++"
- elsif compiler =~ /gcc-(4\.(8|9)|5)/
+ elsif gcc_with_cxx11_support?(compiler)
append "CXX", "-std=c++11"
else
raise "The selected compiler doesn't support C++11: #{compiler}"
diff --git a/Library/Homebrew/extend/ENV/super.rb b/Library/Homebrew/extend/ENV/super.rb
index 7f335acb2..1ef5c465d 100644
--- a/Library/Homebrew/extend/ENV/super.rb
+++ b/Library/Homebrew/extend/ENV/super.rb
@@ -303,11 +303,10 @@ module Superenv
end
def cxx11
- case homebrew_cc
- when "clang"
+ if homebrew_cc == "clang"
append "HOMEBREW_CCCFG", "x", ""
append "HOMEBREW_CCCFG", "g", ""
- when /gcc-(4\.(8|9)|5)/
+ elsif gcc_with_cxx11_support?(homebrew_cc)
append "HOMEBREW_CCCFG", "x", ""
else
raise "The selected compiler doesn't support C++11: #{homebrew_cc}"
diff --git a/Library/Homebrew/test/test_ENV.rb b/Library/Homebrew/test/test_ENV.rb
index 74d1cff79..665e344e6 100644
--- a/Library/Homebrew/test/test_ENV.rb
+++ b/Library/Homebrew/test/test_ENV.rb
@@ -141,4 +141,33 @@ class SuperenvTests < Homebrew::TestCase
assert_equal [], @env.deps
assert_equal [], @env.keg_only_deps
end
+
+ def test_unsupported_cxx11
+ %w[gcc gcc-4.7].each do |compiler|
+ @env["HOMEBREW_CC"] = compiler
+ assert_raises do
+ @env.cxx11
+ end
+ refute_match "x", @env["HOMEBREW_CCCFG"]
+ end
+ end
+
+ def test_supported_cxx11_gcc_5
+ @env["HOMEBREW_CC"] = "gcc-5"
+ @env.cxx11
+ assert_match "x", @env["HOMEBREW_CCCFG"]
+ end
+
+ def test_supported_cxx11_gcc_6
+ @env["HOMEBREW_CC"] = "gcc-6"
+ @env.cxx11
+ assert_match "x", @env["HOMEBREW_CCCFG"]
+ end
+
+ def test_supported_cxx11_clang
+ @env["HOMEBREW_CC"] = "clang"
+ @env.cxx11
+ assert_match "x", @env["HOMEBREW_CCCFG"]
+ assert_match "g", @env["HOMEBREW_CCCFG"]
+ end
end