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:
		
							parent
							
								
									7b2d1a5b08
								
							
						
					
					
						commit
						375efe0945
					
				@ -80,7 +80,7 @@ module OS
 | 
			
		||||
    alias_method :gcc_build_version, :gcc_42_build_version
 | 
			
		||||
 | 
			
		||||
    def llvm_build_version
 | 
			
		||||
      DevelopmentTools.llvm_build_version
 | 
			
		||||
      # no-op. DSL supported, compiler is not.
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    def clang_version
 | 
			
		||||
 | 
			
		||||
@ -5,7 +5,6 @@ module CompilerConstants
 | 
			
		||||
  COMPILER_SYMBOL_MAP = {
 | 
			
		||||
    "gcc-4.0"  => :gcc_4_0,
 | 
			
		||||
    "gcc-4.2"  => :gcc,
 | 
			
		||||
    "llvm-gcc" => :llvm,
 | 
			
		||||
    "clang"    => :clang,
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
@ -62,7 +61,6 @@ class CompilerFailure
 | 
			
		||||
    :cxx11 => [
 | 
			
		||||
      create(:gcc_4_0),
 | 
			
		||||
      create(:gcc),
 | 
			
		||||
      create(:llvm),
 | 
			
		||||
      create(:clang) { build 425 },
 | 
			
		||||
      create(:gcc => "4.3"),
 | 
			
		||||
      create(:gcc => "4.4"),
 | 
			
		||||
@ -71,7 +69,6 @@ class CompilerFailure
 | 
			
		||||
    ],
 | 
			
		||||
    :openmp => [
 | 
			
		||||
      create(:clang),
 | 
			
		||||
      create(:llvm),
 | 
			
		||||
    ],
 | 
			
		||||
  }
 | 
			
		||||
end
 | 
			
		||||
@ -82,10 +79,9 @@ class CompilerSelector
 | 
			
		||||
  Compiler = Struct.new(:name, :version)
 | 
			
		||||
 | 
			
		||||
  COMPILER_PRIORITY = {
 | 
			
		||||
    :clang   => [:clang, :gcc, :llvm, :gnu, :gcc_4_0],
 | 
			
		||||
    :gcc     => [:gcc, :llvm, :gnu, :clang, :gcc_4_0],
 | 
			
		||||
    :llvm    => [:llvm, :gcc, :gnu, :clang, :gcc_4_0],
 | 
			
		||||
    :gcc_4_0 => [:gcc_4_0, :gcc, :llvm, :gnu, :clang],
 | 
			
		||||
    :clang   => [:clang, :gcc, :gnu, :gcc_4_0],
 | 
			
		||||
    :gcc     => [:gcc, :gnu, :clang, :gcc_4_0],
 | 
			
		||||
    :gcc_4_0 => [:gcc_4_0, :gcc, :gnu, :clang],
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  def self.select_for(formula, compilers = self.compilers)
 | 
			
		||||
@ -121,6 +117,8 @@ class CompilerSelector
 | 
			
		||||
          version = compiler_version(name)
 | 
			
		||||
          yield Compiler.new(name, version) if version
 | 
			
		||||
        end
 | 
			
		||||
      when :llvm
 | 
			
		||||
        # no-op. DSL supported, compiler is not.
 | 
			
		||||
      else
 | 
			
		||||
        version = compiler_version(compiler)
 | 
			
		||||
        yield Compiler.new(compiler, version) if version
 | 
			
		||||
 | 
			
		||||
@ -30,7 +30,6 @@ class DevelopmentTools
 | 
			
		||||
      # over the system's GCC 4.0
 | 
			
		||||
      when /^gcc-4.0/ then gcc_42_build_version ? :gcc : :gcc_4_0
 | 
			
		||||
      when /^gcc/ then :gcc
 | 
			
		||||
      when /^llvm/ then :llvm
 | 
			
		||||
      else :clang
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
@ -54,13 +53,6 @@ class DevelopmentTools
 | 
			
		||||
    end
 | 
			
		||||
    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
 | 
			
		||||
      @clang_version ||=
 | 
			
		||||
        if (path = locate("clang"))
 | 
			
		||||
@ -85,7 +77,7 @@ class DevelopmentTools
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    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
 | 
			
		||||
      @non_apple_gcc_version = {}
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
@ -149,11 +149,6 @@ module Stdenv
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def llvm
 | 
			
		||||
    super
 | 
			
		||||
    set_cpu_cflags
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def clang
 | 
			
		||||
    super
 | 
			
		||||
    replace_in_cflags(/-Xarch_#{Hardware::CPU.arch_32_bit} (-march=\S*)/, '\1')
 | 
			
		||||
 | 
			
		||||
@ -19,14 +19,11 @@ class DevelopmentTools
 | 
			
		||||
      # over the system's GCC 4.0
 | 
			
		||||
      when /^gcc-4.0/ then gcc_42_build_version ? :gcc : :gcc_4_0
 | 
			
		||||
      when /^gcc/ then :gcc
 | 
			
		||||
      when /^llvm/ then :llvm
 | 
			
		||||
      when "clang" then :clang
 | 
			
		||||
      else
 | 
			
		||||
        # guess :(
 | 
			
		||||
        if Xcode.version >= "4.3"
 | 
			
		||||
          :clang
 | 
			
		||||
        elsif Xcode.version >= "4.2"
 | 
			
		||||
          :llvm
 | 
			
		||||
        else
 | 
			
		||||
          :gcc
 | 
			
		||||
        end
 | 
			
		||||
 | 
			
		||||
@ -1988,12 +1988,7 @@ class Formula
 | 
			
		||||
 | 
			
		||||
    # 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:
 | 
			
		||||
    # <pre>fails_with :llvm do # :llvm is really llvm-gcc
 | 
			
		||||
    #   build 2334
 | 
			
		||||
    #   cause "Segmentation fault during linking."
 | 
			
		||||
    # end
 | 
			
		||||
    #
 | 
			
		||||
    # fails_with :clang do
 | 
			
		||||
    # <pre>fails_with :clang do
 | 
			
		||||
    #   build 600
 | 
			
		||||
    #   cause "multiple configure and compile errors"
 | 
			
		||||
    # end</pre>
 | 
			
		||||
 | 
			
		||||
@ -162,24 +162,24 @@ module OS
 | 
			
		||||
      "2.0"   => { :gcc_40_build => 4061 },
 | 
			
		||||
      "2.5"   => { :gcc_40_build => 5370 },
 | 
			
		||||
      "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 },
 | 
			
		||||
      "4.0"   => { :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, :llvm_build => 2335, :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.2"   => { :llvm_build => 2336, :clang => "3.0", :clang_build => 211 },
 | 
			
		||||
      "4.3"   => { :llvm_build => 2336, :clang => "3.1", :clang_build => 318 },
 | 
			
		||||
      "4.3.1" => { :llvm_build => 2336, :clang => "3.1", :clang_build => 318 },
 | 
			
		||||
      "4.3.2" => { :llvm_build => 2336, :clang => "3.1", :clang_build => 318 },
 | 
			
		||||
      "4.3.3" => { :llvm_build => 2336, :clang => "3.1", :clang_build => 318 },
 | 
			
		||||
      "4.4"   => { :llvm_build => 2336, :clang => "4.0", :clang_build => 421 },
 | 
			
		||||
      "4.4.1" => { :llvm_build => 2336, :clang => "4.0", :clang_build => 421 },
 | 
			
		||||
      "4.5"   => { :llvm_build => 2336, :clang => "4.1", :clang_build => 421 },
 | 
			
		||||
      "4.5.1" => { :llvm_build => 2336, :clang => "4.1", :clang_build => 421 },
 | 
			
		||||
      "4.5.2" => { :llvm_build => 2336, :clang => "4.1", :clang_build => 421 },
 | 
			
		||||
      "4.6"   => { :llvm_build => 2336, :clang => "4.2", :clang_build => 425 },
 | 
			
		||||
      "4.6.1" => { :llvm_build => 2336, :clang => "4.2", :clang_build => 425 },
 | 
			
		||||
      "4.6.2" => { :llvm_build => 2336, :clang => "4.2", :clang_build => 425 },
 | 
			
		||||
      "4.6.3" => { :llvm_build => 2336, :clang => "4.2", :clang_build => 425 },
 | 
			
		||||
      "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, :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, :clang => "2.0", :clang_build => 137 },
 | 
			
		||||
      "4.2"   => { :clang => "3.0", :clang_build => 211 },
 | 
			
		||||
      "4.3"   => { :clang => "3.1", :clang_build => 318 },
 | 
			
		||||
      "4.3.1" => { :clang => "3.1", :clang_build => 318 },
 | 
			
		||||
      "4.3.2" => { :clang => "3.1", :clang_build => 318 },
 | 
			
		||||
      "4.3.3" => { :clang => "3.1", :clang_build => 318 },
 | 
			
		||||
      "4.4"   => { :clang => "4.0", :clang_build => 421 },
 | 
			
		||||
      "4.4.1" => { :clang => "4.0", :clang_build => 421 },
 | 
			
		||||
      "4.5"   => { :clang => "4.1", :clang_build => 421 },
 | 
			
		||||
      "4.5.1" => { :clang => "4.1", :clang_build => 421 },
 | 
			
		||||
      "4.5.2" => { :clang => "4.1", :clang_build => 421 },
 | 
			
		||||
      "4.6"   => { :clang => "4.2", :clang_build => 425 },
 | 
			
		||||
      "4.6.1" => { :clang => "4.2", :clang_build => 425 },
 | 
			
		||||
      "4.6.2" => { :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.1" => { :clang => "5.0", :clang_build => 500 },
 | 
			
		||||
      "5.0.2" => { :clang => "5.0", :clang_build => 500 },
 | 
			
		||||
 | 
			
		||||
@ -105,22 +105,7 @@ module OS
 | 
			
		||||
        # Xcode.version would always be non-nil. This is deprecated, and will
 | 
			
		||||
        # be removed in a future version. To remain compatible, guard usage of
 | 
			
		||||
        # 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 1..14   then "3.2.2"
 | 
			
		||||
          when 15      then "3.2.4"
 | 
			
		||||
@ -139,7 +124,6 @@ module OS
 | 
			
		||||
          when 70      then "7.0"
 | 
			
		||||
          when 73      then "7.3"
 | 
			
		||||
          else "7.3"
 | 
			
		||||
          end
 | 
			
		||||
        end
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -6,10 +6,6 @@ require "development_tools"
 | 
			
		||||
 | 
			
		||||
class SystemConfig
 | 
			
		||||
  class << self
 | 
			
		||||
    def llvm
 | 
			
		||||
      @llvm ||= DevelopmentTools.llvm_build_version if DevelopmentTools.installed?
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    def gcc_42
 | 
			
		||||
      @gcc_42 ||= DevelopmentTools.gcc_42_build_version if DevelopmentTools.installed?
 | 
			
		||||
    end
 | 
			
		||||
@ -130,7 +126,6 @@ class SystemConfig
 | 
			
		||||
      f.puts hardware if hardware
 | 
			
		||||
      f.puts "GCC-4.0: build #{gcc_40}" if gcc_40
 | 
			
		||||
      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 "Perl: #{describe_perl}"
 | 
			
		||||
      f.puts "Python: #{describe_python}"
 | 
			
		||||
 | 
			
		||||
@ -7,7 +7,6 @@ module SharedEnvTests
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def test_switching_compilers
 | 
			
		||||
    @env.llvm
 | 
			
		||||
    @env.clang
 | 
			
		||||
    assert_nil @env["LD"]
 | 
			
		||||
    assert_equal @env["OBJC"], @env["CC"]
 | 
			
		||||
@ -106,7 +105,7 @@ module SharedEnvTests
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  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)
 | 
			
		||||
      assert_equal compiler, @env.compiler
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
@ -12,12 +12,11 @@ class CompilerSelectorTests < Homebrew::TestCase
 | 
			
		||||
 | 
			
		||||
  class CompilerVersions
 | 
			
		||||
    attr_accessor :gcc_4_0_build_version, :gcc_build_version,
 | 
			
		||||
      :llvm_build_version, :clang_build_version
 | 
			
		||||
      :clang_build_version
 | 
			
		||||
 | 
			
		||||
    def initialize
 | 
			
		||||
      @gcc_4_0_build_version = nil
 | 
			
		||||
      @gcc_build_version = 5666
 | 
			
		||||
      @llvm_build_version = 2336
 | 
			
		||||
      @clang_build_version = 425
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
@ -73,7 +72,7 @@ class CompilerSelectorTests < Homebrew::TestCase
 | 
			
		||||
 | 
			
		||||
  def test_mixed_failures_1
 | 
			
		||||
    @f << :clang << :gcc
 | 
			
		||||
    assert_equal :llvm, actual_cc
 | 
			
		||||
    assert_equal "gcc-4.8", actual_cc
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def test_mixed_failures_2
 | 
			
		||||
@ -96,9 +95,9 @@ class CompilerSelectorTests < Homebrew::TestCase
 | 
			
		||||
    assert_equal "gcc-4.7", actual_cc
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def test_llvm_precedence
 | 
			
		||||
  def test_gcc_precedence
 | 
			
		||||
    @f << :clang << :gcc
 | 
			
		||||
    assert_equal :llvm, actual_cc
 | 
			
		||||
    assert_equal "gcc-4.8", actual_cc
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def test_missing_gcc
 | 
			
		||||
@ -108,7 +107,7 @@ class CompilerSelectorTests < Homebrew::TestCase
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  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" }
 | 
			
		||||
    assert_raises(CompilerSelectionError) { actual_cc }
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
@ -81,12 +81,12 @@ class InstallTests < Homebrew::TestCase
 | 
			
		||||
  def test_not_poured_from_bottle_when_compiler_specified
 | 
			
		||||
    assert_nil ARGV.cc
 | 
			
		||||
 | 
			
		||||
    cc_arg = "--cc=llvm-gcc"
 | 
			
		||||
    cc_arg = "--cc=clang"
 | 
			
		||||
    ARGV << cc_arg
 | 
			
		||||
    begin
 | 
			
		||||
      temporary_install(TestballBottle.new) do |f|
 | 
			
		||||
        tab = Tab.for_formula(f)
 | 
			
		||||
        assert_equal "llvm", tab.compiler
 | 
			
		||||
        assert_equal "clang", tab.compiler
 | 
			
		||||
      end
 | 
			
		||||
    ensure
 | 
			
		||||
      ARGV.delete_if { |x| x == cc_arg }
 | 
			
		||||
 | 
			
		||||
@ -6,7 +6,6 @@ class CxxStdlibTests < Homebrew::TestCase
 | 
			
		||||
  def setup
 | 
			
		||||
    @clang = CxxStdlib.create(:libstdcxx, :clang)
 | 
			
		||||
    @gcc   = CxxStdlib.create(:libstdcxx, :gcc)
 | 
			
		||||
    @llvm  = CxxStdlib.create(:libstdcxx, :llvm)
 | 
			
		||||
    @gcc4  = CxxStdlib.create(:libstdcxx, :gcc_4_0)
 | 
			
		||||
    @gcc48 = CxxStdlib.create(:libstdcxx, "gcc-4.8")
 | 
			
		||||
    @gcc49 = CxxStdlib.create(:libstdcxx, "gcc-4.9")
 | 
			
		||||
@ -16,7 +15,6 @@ class CxxStdlibTests < Homebrew::TestCase
 | 
			
		||||
 | 
			
		||||
  def test_apple_libstdcxx_intercompatibility
 | 
			
		||||
    assert @clang.compatible_with?(@gcc)
 | 
			
		||||
    assert @clang.compatible_with?(@llvm)
 | 
			
		||||
    assert @clang.compatible_with?(@gcc4)
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
@ -44,7 +42,6 @@ class CxxStdlibTests < Homebrew::TestCase
 | 
			
		||||
  def test_apple_compiler_reporting
 | 
			
		||||
    assert_predicate @clang, :apple_compiler?
 | 
			
		||||
    assert_predicate @gcc, :apple_compiler?
 | 
			
		||||
    assert_predicate @llvm, :apple_compiler?
 | 
			
		||||
    assert_predicate @gcc4, :apple_compiler?
 | 
			
		||||
    refute_predicate @gcc48, :apple_compiler?
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user