diff options
| author | Misty De Meo | 2013-04-13 21:11:14 -0500 |
|---|---|---|
| committer | Misty De Meo | 2013-06-08 19:10:38 -0500 |
| commit | 30c79ab65b7bf121cf80f8be051facf4e542c8b5 (patch) | |
| tree | c1ed4367b2247775dbf98239a21dd7700444d080 | |
| parent | aa866da68bab78a28081c67a42bf6dc14194d14e (diff) | |
| download | homebrew-30c79ab65b7bf121cf80f8be051facf4e542c8b5.tar.bz2 | |
Add :ld64 dependency
This allows formulae which won't build with Tiger's ld to conditionally
request a dependency on the ld64 formula. This modifies the build
environment appropriately, and will only be active on Tiger.
| -rw-r--r-- | Library/Homebrew/dependency_collector.rb | 3 | ||||
| -rw-r--r-- | Library/Homebrew/extend/ENV.rb | 7 | ||||
| -rw-r--r-- | Library/Homebrew/requirements/ld64_dependency.rb | 11 | ||||
| -rw-r--r-- | Library/Homebrew/test/test_dependency_collector.rb | 10 |
4 files changed, 31 insertions, 0 deletions
diff --git a/Library/Homebrew/dependency_collector.rb b/Library/Homebrew/dependency_collector.rb index 74f94dc63..539cd2f73 100644 --- a/Library/Homebrew/dependency_collector.rb +++ b/Library/Homebrew/dependency_collector.rb @@ -2,6 +2,7 @@ require 'dependency' require 'dependencies' require 'requirement' require 'requirements' +require 'requirements/ld64_dependency' require 'set' ## A dependency is a formula that another formula needs to install. @@ -95,6 +96,8 @@ class DependencyCollector when :python then PythonInstalled.new(tags) when :python2 then PythonInstalled.new("2", tags) when :python3 then PythonInstalled.new("3", tags) + # Tiger's ld is too old to properly link some software + when :ld64 then LD64Dependency.new if MacOS.version < :leopard else raise "Unsupported special dependency #{spec}" end diff --git a/Library/Homebrew/extend/ENV.rb b/Library/Homebrew/extend/ENV.rb index 35f14bf0d..db17f2255 100644 --- a/Library/Homebrew/extend/ENV.rb +++ b/Library/Homebrew/extend/ENV.rb @@ -375,6 +375,13 @@ module HomebrewEnvExtension Hardware.processor_count end end + + # ld64 is a newer linker provided for Xcode 2.5 + def ld64 + ld64 = Formula.factory('ld64') + self['LD'] = ld64.bin/'ld' + append "LDFLAGS", "-B#{ld64.bin.to_s+"/"}" + end end class << ENV diff --git a/Library/Homebrew/requirements/ld64_dependency.rb b/Library/Homebrew/requirements/ld64_dependency.rb new file mode 100644 index 000000000..28440321d --- /dev/null +++ b/Library/Homebrew/requirements/ld64_dependency.rb @@ -0,0 +1,11 @@ +require 'dependency' + +# This special dependency ensures that the Tigerbrew ld64 +# formula is used as gcc's ld in place of the old version +# that comes with the OS. +class LD64Dependency < Dependency + def initialize(name='ld64', tags=[:build]) + @env_proc = proc { ENV.ld64 } + super + end +end diff --git a/Library/Homebrew/test/test_dependency_collector.rb b/Library/Homebrew/test/test_dependency_collector.rb index e780ed5a3..0b4c19ebf 100644 --- a/Library/Homebrew/test/test_dependency_collector.rb +++ b/Library/Homebrew/test/test_dependency_collector.rb @@ -111,6 +111,16 @@ class DependencyCollectorTests < Test::Unit::TestCase assert_equal X11Dependency::Proxy.new(:libpng), @d.build(:libpng) end + def test_ld64_dep_pre_leopard + MacOS.stubs(:version).returns(MacOS::Version.new(10.4)) + assert_equal LD64Dependency.new, @d.build(:ld64) + end + + def test_ld64_dep_leopard_or_newer + MacOS.stubs(:version).returns(MacOS::Version.new(10.5)) + assert_nil @d.build(:ld64) + end + def test_raises_typeerror_for_unknown_classes assert_raises(TypeError) { @d.add(Class.new) } end |
