diff options
| author | msbit | 2016-06-16 22:15:28 +1000 |
|---|---|---|
| committer | Martin Afanasjew | 2016-06-16 14:15:28 +0200 |
| commit | 01e8e180a89a761ba6ce9bacf0a54a478b9dcf65 (patch) | |
| tree | 28022105a2a1d455dbb90b82d9288da366a2a92d /Library/Homebrew/extend | |
| parent | 62dd4b14ba98519e72d804f904a7017c9b88d0d7 (diff) | |
| download | brew-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.rb | 5 | ||||
| -rw-r--r-- | Library/Homebrew/extend/ENV/std.rb | 2 | ||||
| -rw-r--r-- | Library/Homebrew/extend/ENV/super.rb | 5 |
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}" |
