From 74d4479246778ff73756fce2208ef04f2c45aafb Mon Sep 17 00:00:00 2001 From: Mike McQuaid Date: Tue, 16 Aug 2016 13:47:22 +0100 Subject: Add OS X-specific SharedEnvExtension. --- Library/Homebrew/extend/ENV/shared.rb | 2 ++ Library/Homebrew/extend/os/extend/ENV/shared.rb | 5 +++++ Library/Homebrew/extend/os/mac/extend/ENV/shared.rb | 2 ++ 3 files changed, 9 insertions(+) create mode 100644 Library/Homebrew/extend/os/extend/ENV/shared.rb create mode 100644 Library/Homebrew/extend/os/mac/extend/ENV/shared.rb (limited to 'Library') diff --git a/Library/Homebrew/extend/ENV/shared.rb b/Library/Homebrew/extend/ENV/shared.rb index 3566a5c50..c253942ac 100644 --- a/Library/Homebrew/extend/ENV/shared.rb +++ b/Library/Homebrew/extend/ENV/shared.rb @@ -329,3 +329,5 @@ module SharedEnvExtension version && Version.create(version) >= Version.create("4.8") end end + +require "extend/os/extend/ENV/shared" diff --git a/Library/Homebrew/extend/os/extend/ENV/shared.rb b/Library/Homebrew/extend/os/extend/ENV/shared.rb new file mode 100644 index 000000000..676159b37 --- /dev/null +++ b/Library/Homebrew/extend/os/extend/ENV/shared.rb @@ -0,0 +1,5 @@ +require "extend/ENV/shared" + +if OS.mac? + require "extend/os/mac/extend/ENV/shared" +end diff --git a/Library/Homebrew/extend/os/mac/extend/ENV/shared.rb b/Library/Homebrew/extend/os/mac/extend/ENV/shared.rb new file mode 100644 index 000000000..7f81ffeb7 --- /dev/null +++ b/Library/Homebrew/extend/os/mac/extend/ENV/shared.rb @@ -0,0 +1,2 @@ +module SharedEnvExtension +end -- cgit v1.2.3 From b33fe79478992da827317111370ab15d280e72c5 Mon Sep 17 00:00:00 2001 From: Mike McQuaid Date: Tue, 16 Aug 2016 13:47:46 +0100 Subject: mac/ENV/shared: add check for disabling weak imports. --- Library/Homebrew/extend/os/mac/extend/ENV/shared.rb | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'Library') diff --git a/Library/Homebrew/extend/os/mac/extend/ENV/shared.rb b/Library/Homebrew/extend/os/mac/extend/ENV/shared.rb index 7f81ffeb7..a33747203 100644 --- a/Library/Homebrew/extend/os/mac/extend/ENV/shared.rb +++ b/Library/Homebrew/extend/os/mac/extend/ENV/shared.rb @@ -1,2 +1,6 @@ module SharedEnvExtension + def no_weak_imports? + return false unless compiler == :clang + MacOS::Xcode.version >= "8.0" || MacOS::CLT.version >= "8.0" + end end -- cgit v1.2.3 From 53d1000739bc29913ab956cff2748428b66f969d Mon Sep 17 00:00:00 2001 From: Mike McQuaid Date: Tue, 16 Aug 2016 13:48:08 +0100 Subject: ENV/std: add LDFLAGS if disabling weak imports. --- Library/Homebrew/extend/os/mac/extend/ENV/std.rb | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'Library') diff --git a/Library/Homebrew/extend/os/mac/extend/ENV/std.rb b/Library/Homebrew/extend/os/mac/extend/ENV/std.rb index 817b4a0ff..d9cabc50e 100644 --- a/Library/Homebrew/extend/os/mac/extend/ENV/std.rb +++ b/Library/Homebrew/extend/os/mac/extend/ENV/std.rb @@ -28,6 +28,11 @@ module Stdenv # depend on it already being installed to build itself. ld64 if Formula["ld64"].installed? end + + # Xcode 8 should be told to fail to link against weak links + # Issue from Apple engineer: + # https://github.com/Homebrew/homebrew-core/issues/3727 + append "LDFLAGS", "-Wl,-no_weak_imports" if no_weak_imports? end def homebrew_extra_pkg_config_paths -- cgit v1.2.3 From 560918356738ee71aa7e7110d0e8aa6c8b3dbe4f Mon Sep 17 00:00:00 2001 From: Mike McQuaid Date: Tue, 16 Aug 2016 13:48:21 +0100 Subject: superenv: add LDFLAGS if disabling weak imports. --- Library/Homebrew/extend/os/mac/extend/ENV/super.rb | 4 ++++ Library/Homebrew/shims/super/cc | 6 ++++++ 2 files changed, 10 insertions(+) (limited to 'Library') diff --git a/Library/Homebrew/extend/os/mac/extend/ENV/super.rb b/Library/Homebrew/extend/os/mac/extend/ENV/super.rb index 1976f5312..e482020e8 100644 --- a/Library/Homebrew/extend/os/mac/extend/ENV/super.rb +++ b/Library/Homebrew/extend/os/mac/extend/ENV/super.rb @@ -81,6 +81,10 @@ module Superenv s << "s" if MacOS.version >= :mountain_lion # Fix issue with >= 10.8 apr-1-config having broken paths s << "a" if MacOS.version >= :mountain_lion + # Xcode 8 should be told to fail to link against weak links + # Issue from Apple engineer: + # https://github.com/Homebrew/homebrew-core/issues/3727 + s << "w" if no_weak_imports? s end diff --git a/Library/Homebrew/shims/super/cc b/Library/Homebrew/shims/super/cc index e7ab6500f..8404e29f2 100755 --- a/Library/Homebrew/shims/super/cc +++ b/Library/Homebrew/shims/super/cc @@ -258,8 +258,10 @@ class Cmd case mode when :ld args << "-headerpad_max_install_names" + args << "-no_weak_imports" if no_weak_imports? when :ccld, :cxxld args << "-Wl,-headerpad_max_install_names" + args << "-Wl,-no_weak_imports" if no_weak_imports? end args end @@ -305,6 +307,10 @@ class Cmd config.include?("K") end + def no_weak_imports? + config.include?("w") + end + def canonical_path(path) path = Pathname.new(path) path = path.realpath if path.exist? -- cgit v1.2.3