configure: Check for -no_weak_imports in ldflags on macOS

Message ID 20170307075358.6FB205DB0C@aruru.libav.org
State New
Headers show

Commit Message

Janne Grunau March 7, 2017, 7:53 a.m.
Module: libav
Branch: master
Commit: 81bffae368f331b6cd386a814f225a58e3f32f40

Author:    Luca Barbato <lu_zero@gentoo.org>
Committer: Martin Storsjö <martin@martin.st>
Date:      Mon Mar  6 20:21:19 2017 +0100

configure: Check for -no_weak_imports in ldflags on macOS

Recent versions of macOS provide more POSIX API (in particular,
clock_gettime) than previous versions and recent Apple toolchains
provide all that API, even when targeting older releases without
said API. Disallow linking to functions which might not be available
at runtime.

To actually have an effect, either add
--extra-cflags="-mmacosx-version-min=10.11" (or any other version
prior to 10.12) or set MACOSX_DEPLOYMENT_TARGET=10.11 when running
configure.

As a workaround for libav versions without this fix, one can
also add --extra-cflags="-mmacosx-version-min=10.11
-Werror=partial-availability" while running configure.

The -no_weak_imports flag is new in Xcode 8; in Xcode 7 it is not
supported. This is not an issue since Xcode 7 only ships with the
10.11 macOS SDK, which lacks clock_gettime.

Bug-Id: 1033

CC: libav-stable@libav.org
Signed-off-by: Martin Storsjö <martin@martin.st>

---

 configure | 1 +
 1 file changed, 1 insertion(+)

Patch

diff --git a/configure b/configure
index 587b218..f915871 100755
--- a/configure
+++ b/configure
@@ -3948,6 +3948,7 @@  case $target_os in
         SHFLAGS='-dynamiclib -Wl,-single_module -Wl,-install_name,$(SHLIBDIR)/$(SLIBNAME_WITH_MAJOR),-current_version,$(LIBVERSION),-compatibility_version,$(LIBMAJOR)'
         enabled x86_32 && append SHFLAGS -Wl,-read_only_relocs,suppress
         add_ldflags -Wl,-dynamic,-search_paths_first
+        check_ldflags -Wl,-no_weak_imports
         SLIBSUF=".dylib"
         SLIBNAME_WITH_VERSION='$(SLIBPREF)$(NAME).$(LIBVERSION)$(SLIBSUF)'
         SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(NAME).$(LIBMAJOR)$(SLIBSUF)'