mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-29 19:50:40 +00:00
build: Apply XCode 8 workaround for iOS too
clock_gettime was also added for iOS 10.0, so don't use it if we're targetting an older version. That would've caused the symbol to not be found at runtime on older devices.
This commit is contained in:
parent
df5ac34dec
commit
c57cb35ae6
2 changed files with 28 additions and 13 deletions
15
configure.ac
15
configure.ac
|
@ -693,14 +693,21 @@ AC_CHECK_FUNC(clock_gettime, [CLOCK_GETTIME_FOUND="yes"], [
|
|||
# autoconf check does its own prototype declaration that doesn't trigger that
|
||||
# compiler flag.
|
||||
#
|
||||
# It's only starting from macOS 10.12, that clock_gettime is actually available,
|
||||
# so we can unconditionally disable it when targetting older versions.
|
||||
# It's only starting from macOS 10.12 and iOS 10.0 that clock_gettime is
|
||||
# actually available, so we can unconditionally disable it for older versions.
|
||||
case "$host_os" in
|
||||
darwin*)
|
||||
AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
|
||||
#include <AvailabilityMacros.h>
|
||||
#if MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_12
|
||||
#error "Not compiling for OS X 10.12 or later"
|
||||
#include <TargetConditionals.h>
|
||||
#if defined(TARGET_OS_MAC)
|
||||
# if MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_12
|
||||
# error "Not compiling for OS X 10.12 or later"
|
||||
# endif
|
||||
#else
|
||||
# if __IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_10_0
|
||||
# error "Not compiling for iOS 10.0 or later"
|
||||
# endif
|
||||
#endif
|
||||
]])], [], [
|
||||
if test "$CLOCK_GETTIME_FOUND" = "yes"; then
|
||||
|
|
26
meson.build
26
meson.build
|
@ -185,24 +185,32 @@ if cc.has_function('getpagesize', prefix : '#include<unistd.h>')
|
|||
cdata.set('HAVE_GETPAGESIZE', 1)
|
||||
endif
|
||||
|
||||
# With OS X 10.11.6 and XCode 8, clock_gettime will be incorrectly detected as
|
||||
# being available because the symbol is available in the .tbd file as a weak
|
||||
# symbol. See: https://github.com/Homebrew/homebrew-core/issues/3727#issue-170086273
|
||||
# With XCode 8, clock_gettime will be incorrectly detected as being available
|
||||
# regardless of what version of OS X you target because the symbol is available
|
||||
# in the .tbd file as a weak symbol.
|
||||
# See: https://bugzilla.gnome.org/show_bug.cgi?id=772451
|
||||
#
|
||||
# We cannot simply do cc.has_function with -Wl,-no_weak_imports because the
|
||||
# check does its own prototype decl that doesn't trigger that compiler flag.
|
||||
#
|
||||
# It's only starting from macOS 10.12, that clock_gettime is actually available,
|
||||
# so we can unconditionally disable it for older versions.
|
||||
for_osx_10_12_src = '''#include <AvailabilityMacros.h>
|
||||
#if MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_12
|
||||
#error "Not compiling for OS X 10.12 or later"
|
||||
# It's only starting from macOS 10.12 and iOS 10.0 that clock_gettime is
|
||||
# actually available, so we can unconditionally disable it for older versions.
|
||||
disable_clock_gettime_src = '''#include <AvailabilityMacros.h>
|
||||
#include <TargetConditionals.h>
|
||||
#if defined(TARGET_OS_MAC)
|
||||
# if MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_12
|
||||
# error "Not compiling for OS X 10.12 or later"
|
||||
# endif
|
||||
#else
|
||||
# if __IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_10_0
|
||||
# error "Not compiling for iOS 10.0 or later"
|
||||
# endif
|
||||
#endif
|
||||
'''
|
||||
|
||||
if cc.has_function('clock_gettime', prefix : '#include <time.h>')
|
||||
if host_machine.system() == 'darwin'
|
||||
if cc.compiles(for_osx_10_12_src, name : 'minimum OS X version required >= 10.12')
|
||||
if cc.compiles(disable_clock_gettime_src, name : 'target darwin/ios version has clock_gettime')
|
||||
cdata.set('HAVE_CLOCK_GETTIME', 1)
|
||||
endif
|
||||
else
|
||||
|
|
Loading…
Reference in a new issue