aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew/extend
diff options
context:
space:
mode:
authormsbit2016-06-16 22:15:28 +1000
committerMartin Afanasjew2016-06-16 14:15:28 +0200
commit01e8e180a89a761ba6ce9bacf0a54a478b9dcf65 (patch)
tree28022105a2a1d455dbb90b82d9288da366a2a92d /Library/Homebrew/extend
parent62dd4b14ba98519e72d804f904a7017c9b88d0d7 (diff)
downloadbrew-01e8e180a89a761ba6ce9bacf0a54a478b9dcf65.tar.bz2
ENV: mark gcc-6 as supporting C++11 (#349)
Add SharedEnvExtension#gcc_with_cxx11_support? to centralise the logic for checking whether a compiler is known to support C++11. Update logic to accept GCC 4.8 and above (including 6). Thereby also address oversight in #163 where support for GCC 6 was added without updating the C++11 compiler whitelist. Add tests for Superenv#cxx11. Closes #346.
Diffstat (limited to 'Library/Homebrew/extend')
-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
3 files changed, 8 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}"