Remove LLVM-GCC support. (#252)

At this point it's never a good compiler to use so let's just remove it.
This commit is contained in:
Mike McQuaid 2016-05-22 09:40:08 +01:00
parent 7b2d1a5b08
commit 375efe0945
13 changed files with 35 additions and 84 deletions

View File

@ -80,7 +80,7 @@ module OS
alias_method :gcc_build_version, :gcc_42_build_version alias_method :gcc_build_version, :gcc_42_build_version
def llvm_build_version def llvm_build_version
DevelopmentTools.llvm_build_version # no-op. DSL supported, compiler is not.
end end
def clang_version def clang_version

View File

@ -5,7 +5,6 @@ module CompilerConstants
COMPILER_SYMBOL_MAP = { COMPILER_SYMBOL_MAP = {
"gcc-4.0" => :gcc_4_0, "gcc-4.0" => :gcc_4_0,
"gcc-4.2" => :gcc, "gcc-4.2" => :gcc,
"llvm-gcc" => :llvm,
"clang" => :clang, "clang" => :clang,
} }
@ -62,7 +61,6 @@ class CompilerFailure
:cxx11 => [ :cxx11 => [
create(:gcc_4_0), create(:gcc_4_0),
create(:gcc), create(:gcc),
create(:llvm),
create(:clang) { build 425 }, create(:clang) { build 425 },
create(:gcc => "4.3"), create(:gcc => "4.3"),
create(:gcc => "4.4"), create(:gcc => "4.4"),
@ -71,7 +69,6 @@ class CompilerFailure
], ],
:openmp => [ :openmp => [
create(:clang), create(:clang),
create(:llvm),
], ],
} }
end end
@ -82,10 +79,9 @@ class CompilerSelector
Compiler = Struct.new(:name, :version) Compiler = Struct.new(:name, :version)
COMPILER_PRIORITY = { COMPILER_PRIORITY = {
:clang => [:clang, :gcc, :llvm, :gnu, :gcc_4_0], :clang => [:clang, :gcc, :gnu, :gcc_4_0],
:gcc => [:gcc, :llvm, :gnu, :clang, :gcc_4_0], :gcc => [:gcc, :gnu, :clang, :gcc_4_0],
:llvm => [:llvm, :gcc, :gnu, :clang, :gcc_4_0], :gcc_4_0 => [:gcc_4_0, :gcc, :gnu, :clang],
:gcc_4_0 => [:gcc_4_0, :gcc, :llvm, :gnu, :clang],
} }
def self.select_for(formula, compilers = self.compilers) def self.select_for(formula, compilers = self.compilers)
@ -121,6 +117,8 @@ class CompilerSelector
version = compiler_version(name) version = compiler_version(name)
yield Compiler.new(name, version) if version yield Compiler.new(name, version) if version
end end
when :llvm
# no-op. DSL supported, compiler is not.
else else
version = compiler_version(compiler) version = compiler_version(compiler)
yield Compiler.new(compiler, version) if version yield Compiler.new(compiler, version) if version

View File

@ -30,7 +30,6 @@ class DevelopmentTools
# over the system's GCC 4.0 # over the system's GCC 4.0
when /^gcc-4.0/ then gcc_42_build_version ? :gcc : :gcc_4_0 when /^gcc-4.0/ then gcc_42_build_version ? :gcc : :gcc_4_0
when /^gcc/ then :gcc when /^gcc/ then :gcc
when /^llvm/ then :llvm
else :clang else :clang
end end
end end
@ -54,13 +53,6 @@ class DevelopmentTools
end end
alias_method :gcc_build_version, :gcc_42_build_version alias_method :gcc_build_version, :gcc_42_build_version
def llvm_build_version
@llvm_build_version ||=
if (path = locate("llvm-gcc")) && !path.realpath.basename.to_s.start_with?("clang")
`#{path} --version`[/LLVM build (\d{4,})/, 1].to_i
end
end
def clang_version def clang_version
@clang_version ||= @clang_version ||=
if (path = locate("clang")) if (path = locate("clang"))
@ -85,7 +77,7 @@ class DevelopmentTools
end end
def clear_version_cache def clear_version_cache
@gcc_40_build_version = @gcc_42_build_version = @llvm_build_version = nil @gcc_40_build_version = @gcc_42_build_version = nil
@clang_version = @clang_build_version = nil @clang_version = @clang_build_version = nil
@non_apple_gcc_version = {} @non_apple_gcc_version = {}
end end

View File

@ -149,11 +149,6 @@ module Stdenv
end end
end end
def llvm
super
set_cpu_cflags
end
def clang def clang
super super
replace_in_cflags(/-Xarch_#{Hardware::CPU.arch_32_bit} (-march=\S*)/, '\1') replace_in_cflags(/-Xarch_#{Hardware::CPU.arch_32_bit} (-march=\S*)/, '\1')

View File

@ -19,14 +19,11 @@ class DevelopmentTools
# over the system's GCC 4.0 # over the system's GCC 4.0
when /^gcc-4.0/ then gcc_42_build_version ? :gcc : :gcc_4_0 when /^gcc-4.0/ then gcc_42_build_version ? :gcc : :gcc_4_0
when /^gcc/ then :gcc when /^gcc/ then :gcc
when /^llvm/ then :llvm
when "clang" then :clang when "clang" then :clang
else else
# guess :( # guess :(
if Xcode.version >= "4.3" if Xcode.version >= "4.3"
:clang :clang
elsif Xcode.version >= "4.2"
:llvm
else else
:gcc :gcc
end end

View File

@ -1988,12 +1988,7 @@ class Formula
# Marks the {Formula} as failing with a particular compiler so it will fall back to others. # Marks the {Formula} as failing with a particular compiler so it will fall back to others.
# For Apple compilers, this should be in the format: # For Apple compilers, this should be in the format:
# <pre>fails_with :llvm do # :llvm is really llvm-gcc # <pre>fails_with :clang do
# build 2334
# cause "Segmentation fault during linking."
# end
#
# fails_with :clang do
# build 600 # build 600
# cause "multiple configure and compile errors" # cause "multiple configure and compile errors"
# end</pre> # end</pre>

View File

@ -162,24 +162,24 @@ module OS
"2.0" => { :gcc_40_build => 4061 }, "2.0" => { :gcc_40_build => 4061 },
"2.5" => { :gcc_40_build => 5370 }, "2.5" => { :gcc_40_build => 5370 },
"3.1.4" => { :gcc_40_build => 5493, :gcc_42_build => 5577 }, "3.1.4" => { :gcc_40_build => 5493, :gcc_42_build => 5577 },
"3.2.6" => { :gcc_40_build => 5494, :gcc_42_build => 5666, :llvm_build => 2335, :clang => "1.7", :clang_build => 77 }, "3.2.6" => { :gcc_40_build => 5494, :gcc_42_build => 5666, :clang => "1.7", :clang_build => 77 },
"4.0" => { :gcc_40_build => 5494, :gcc_42_build => 5666, :llvm_build => 2335, :clang => "2.0", :clang_build => 137 }, "4.0" => { :gcc_40_build => 5494, :gcc_42_build => 5666, :clang => "2.0", :clang_build => 137 },
"4.0.1" => { :gcc_40_build => 5494, :gcc_42_build => 5666, :llvm_build => 2335, :clang => "2.0", :clang_build => 137 }, "4.0.1" => { :gcc_40_build => 5494, :gcc_42_build => 5666, :clang => "2.0", :clang_build => 137 },
"4.0.2" => { :gcc_40_build => 5494, :gcc_42_build => 5666, :llvm_build => 2335, :clang => "2.0", :clang_build => 137 }, "4.0.2" => { :gcc_40_build => 5494, :gcc_42_build => 5666, :clang => "2.0", :clang_build => 137 },
"4.2" => { :llvm_build => 2336, :clang => "3.0", :clang_build => 211 }, "4.2" => { :clang => "3.0", :clang_build => 211 },
"4.3" => { :llvm_build => 2336, :clang => "3.1", :clang_build => 318 }, "4.3" => { :clang => "3.1", :clang_build => 318 },
"4.3.1" => { :llvm_build => 2336, :clang => "3.1", :clang_build => 318 }, "4.3.1" => { :clang => "3.1", :clang_build => 318 },
"4.3.2" => { :llvm_build => 2336, :clang => "3.1", :clang_build => 318 }, "4.3.2" => { :clang => "3.1", :clang_build => 318 },
"4.3.3" => { :llvm_build => 2336, :clang => "3.1", :clang_build => 318 }, "4.3.3" => { :clang => "3.1", :clang_build => 318 },
"4.4" => { :llvm_build => 2336, :clang => "4.0", :clang_build => 421 }, "4.4" => { :clang => "4.0", :clang_build => 421 },
"4.4.1" => { :llvm_build => 2336, :clang => "4.0", :clang_build => 421 }, "4.4.1" => { :clang => "4.0", :clang_build => 421 },
"4.5" => { :llvm_build => 2336, :clang => "4.1", :clang_build => 421 }, "4.5" => { :clang => "4.1", :clang_build => 421 },
"4.5.1" => { :llvm_build => 2336, :clang => "4.1", :clang_build => 421 }, "4.5.1" => { :clang => "4.1", :clang_build => 421 },
"4.5.2" => { :llvm_build => 2336, :clang => "4.1", :clang_build => 421 }, "4.5.2" => { :clang => "4.1", :clang_build => 421 },
"4.6" => { :llvm_build => 2336, :clang => "4.2", :clang_build => 425 }, "4.6" => { :clang => "4.2", :clang_build => 425 },
"4.6.1" => { :llvm_build => 2336, :clang => "4.2", :clang_build => 425 }, "4.6.1" => { :clang => "4.2", :clang_build => 425 },
"4.6.2" => { :llvm_build => 2336, :clang => "4.2", :clang_build => 425 }, "4.6.2" => { :clang => "4.2", :clang_build => 425 },
"4.6.3" => { :llvm_build => 2336, :clang => "4.2", :clang_build => 425 }, "4.6.3" => { :clang => "4.2", :clang_build => 425 },
"5.0" => { :clang => "5.0", :clang_build => 500 }, "5.0" => { :clang => "5.0", :clang_build => 500 },
"5.0.1" => { :clang => "5.0", :clang_build => 500 }, "5.0.1" => { :clang => "5.0", :clang_build => 500 },
"5.0.2" => { :clang => "5.0", :clang_build => 500 }, "5.0.2" => { :clang => "5.0", :clang_build => 500 },

View File

@ -105,21 +105,6 @@ module OS
# Xcode.version would always be non-nil. This is deprecated, and will # Xcode.version would always be non-nil. This is deprecated, and will
# be removed in a future version. To remain compatible, guard usage of # be removed in a future version. To remain compatible, guard usage of
# Xcode.version with an Xcode.installed? check. # Xcode.version with an Xcode.installed? check.
case DevelopmentTools.llvm_build_version.to_i
when 1..2063 then "3.1.0"
when 2064..2065 then "3.1.4"
when 2066..2325
# we have no data for this range so we are guessing
"3.2.0"
when 2326
# also applies to "3.2.3"
"3.2.4"
when 2327..2333 then "3.2.5"
when 2335
# this build number applies to 3.2.6, 4.0 and 4.1
# https://github.com/Homebrew/brew/blob/master/share/doc/homebrew/Xcode.md
"4.0"
else
case (DevelopmentTools.clang_version.to_f * 10).to_i case (DevelopmentTools.clang_version.to_f * 10).to_i
when 0 then "dunno" when 0 then "dunno"
when 1..14 then "3.2.2" when 1..14 then "3.2.2"
@ -141,7 +126,6 @@ module OS
else "7.3" else "7.3"
end end
end end
end
def provides_gcc? def provides_gcc?
version < "4.3" version < "4.3"

View File

@ -6,10 +6,6 @@ require "development_tools"
class SystemConfig class SystemConfig
class << self class << self
def llvm
@llvm ||= DevelopmentTools.llvm_build_version if DevelopmentTools.installed?
end
def gcc_42 def gcc_42
@gcc_42 ||= DevelopmentTools.gcc_42_build_version if DevelopmentTools.installed? @gcc_42 ||= DevelopmentTools.gcc_42_build_version if DevelopmentTools.installed?
end end
@ -130,7 +126,6 @@ class SystemConfig
f.puts hardware if hardware f.puts hardware if hardware
f.puts "GCC-4.0: build #{gcc_40}" if gcc_40 f.puts "GCC-4.0: build #{gcc_40}" if gcc_40
f.puts "GCC-4.2: build #{gcc_42}" if gcc_42 f.puts "GCC-4.2: build #{gcc_42}" if gcc_42
f.puts "LLVM-GCC: build #{llvm}" if llvm
f.puts "Clang: #{clang ? "#{clang} build #{clang_build}" : "N/A"}" f.puts "Clang: #{clang ? "#{clang} build #{clang_build}" : "N/A"}"
f.puts "Perl: #{describe_perl}" f.puts "Perl: #{describe_perl}"
f.puts "Python: #{describe_python}" f.puts "Python: #{describe_python}"

View File

@ -7,7 +7,6 @@ module SharedEnvTests
end end
def test_switching_compilers def test_switching_compilers
@env.llvm
@env.clang @env.clang
assert_nil @env["LD"] assert_nil @env["LD"]
assert_equal @env["OBJC"], @env["CC"] assert_equal @env["OBJC"], @env["CC"]
@ -106,7 +105,7 @@ module SharedEnvTests
end end
def test_switching_compilers_updates_compiler def test_switching_compilers_updates_compiler
[:clang, :llvm, :gcc, :gcc_4_0].each do |compiler| [:clang, :gcc, :gcc_4_0].each do |compiler|
@env.send(compiler) @env.send(compiler)
assert_equal compiler, @env.compiler assert_equal compiler, @env.compiler
end end

View File

@ -12,12 +12,11 @@ class CompilerSelectorTests < Homebrew::TestCase
class CompilerVersions class CompilerVersions
attr_accessor :gcc_4_0_build_version, :gcc_build_version, attr_accessor :gcc_4_0_build_version, :gcc_build_version,
:llvm_build_version, :clang_build_version :clang_build_version
def initialize def initialize
@gcc_4_0_build_version = nil @gcc_4_0_build_version = nil
@gcc_build_version = 5666 @gcc_build_version = 5666
@llvm_build_version = 2336
@clang_build_version = 425 @clang_build_version = 425
end end
@ -73,7 +72,7 @@ class CompilerSelectorTests < Homebrew::TestCase
def test_mixed_failures_1 def test_mixed_failures_1
@f << :clang << :gcc @f << :clang << :gcc
assert_equal :llvm, actual_cc assert_equal "gcc-4.8", actual_cc
end end
def test_mixed_failures_2 def test_mixed_failures_2
@ -96,9 +95,9 @@ class CompilerSelectorTests < Homebrew::TestCase
assert_equal "gcc-4.7", actual_cc assert_equal "gcc-4.7", actual_cc
end end
def test_llvm_precedence def test_gcc_precedence
@f << :clang << :gcc @f << :clang << :gcc
assert_equal :llvm, actual_cc assert_equal "gcc-4.8", actual_cc
end end
def test_missing_gcc def test_missing_gcc
@ -108,7 +107,7 @@ class CompilerSelectorTests < Homebrew::TestCase
end end
def test_missing_llvm_and_gcc def test_missing_llvm_and_gcc
@versions.gcc_build_version = @versions.llvm_build_version = nil @versions.gcc_build_version = nil
@f << :clang << { :gcc => "4.8" } << { :gcc => "4.7" } @f << :clang << { :gcc => "4.8" } << { :gcc => "4.7" }
assert_raises(CompilerSelectionError) { actual_cc } assert_raises(CompilerSelectionError) { actual_cc }
end end

View File

@ -81,12 +81,12 @@ class InstallTests < Homebrew::TestCase
def test_not_poured_from_bottle_when_compiler_specified def test_not_poured_from_bottle_when_compiler_specified
assert_nil ARGV.cc assert_nil ARGV.cc
cc_arg = "--cc=llvm-gcc" cc_arg = "--cc=clang"
ARGV << cc_arg ARGV << cc_arg
begin begin
temporary_install(TestballBottle.new) do |f| temporary_install(TestballBottle.new) do |f|
tab = Tab.for_formula(f) tab = Tab.for_formula(f)
assert_equal "llvm", tab.compiler assert_equal "clang", tab.compiler
end end
ensure ensure
ARGV.delete_if { |x| x == cc_arg } ARGV.delete_if { |x| x == cc_arg }

View File

@ -6,7 +6,6 @@ class CxxStdlibTests < Homebrew::TestCase
def setup def setup
@clang = CxxStdlib.create(:libstdcxx, :clang) @clang = CxxStdlib.create(:libstdcxx, :clang)
@gcc = CxxStdlib.create(:libstdcxx, :gcc) @gcc = CxxStdlib.create(:libstdcxx, :gcc)
@llvm = CxxStdlib.create(:libstdcxx, :llvm)
@gcc4 = CxxStdlib.create(:libstdcxx, :gcc_4_0) @gcc4 = CxxStdlib.create(:libstdcxx, :gcc_4_0)
@gcc48 = CxxStdlib.create(:libstdcxx, "gcc-4.8") @gcc48 = CxxStdlib.create(:libstdcxx, "gcc-4.8")
@gcc49 = CxxStdlib.create(:libstdcxx, "gcc-4.9") @gcc49 = CxxStdlib.create(:libstdcxx, "gcc-4.9")
@ -16,7 +15,6 @@ class CxxStdlibTests < Homebrew::TestCase
def test_apple_libstdcxx_intercompatibility def test_apple_libstdcxx_intercompatibility
assert @clang.compatible_with?(@gcc) assert @clang.compatible_with?(@gcc)
assert @clang.compatible_with?(@llvm)
assert @clang.compatible_with?(@gcc4) assert @clang.compatible_with?(@gcc4)
end end
@ -44,7 +42,6 @@ class CxxStdlibTests < Homebrew::TestCase
def test_apple_compiler_reporting def test_apple_compiler_reporting
assert_predicate @clang, :apple_compiler? assert_predicate @clang, :apple_compiler?
assert_predicate @gcc, :apple_compiler? assert_predicate @gcc, :apple_compiler?
assert_predicate @llvm, :apple_compiler?
assert_predicate @gcc4, :apple_compiler? assert_predicate @gcc4, :apple_compiler?
refute_predicate @gcc48, :apple_compiler? refute_predicate @gcc48, :apple_compiler?
end end