mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-15 22:01:27 +00:00
build: Fix clock_gettime check with XCode 8
With XCode 8, clock_gettime will be incorrectly detected as being available regardless of what OS X version we're targetting because the symbol is available in the .tbd library as a weak symbol. See: https://github.com/Homebrew/homebrew-core/issues/3727#issue-170086273 It's only starting from macOS 10.12 that clock_gettime is actually available, so we can unconditionally disable it when targetting older versions. We cannot simply do AC_CHECK_FUNCS with -Wl,-no_weak_imports because the autoconf check does its own prototype declaration that doesn't trigger that compiler flag. https://bugzilla.gnome.org/show_bug.cgi?id=772451
This commit is contained in:
parent
565368f6a0
commit
32ae9c6127
2 changed files with 36 additions and 4 deletions
38
configure.ac
38
configure.ac
|
@ -675,18 +675,50 @@ AC_CHECK_FUNCS([posix_memalign])
|
|||
AC_CHECK_FUNCS([getpagesize])
|
||||
|
||||
dnl Check for POSIX timers
|
||||
AC_CHECK_FUNCS(clock_gettime, [], [
|
||||
CLOCK_GETTIME_FOUND="no"
|
||||
AC_CHECK_FUNC(clock_gettime, [CLOCK_GETTIME_FOUND="yes"], [
|
||||
AC_CHECK_LIB(rt, clock_gettime, [
|
||||
AC_DEFINE(HAVE_CLOCK_GETTIME, 1)
|
||||
CLOCK_GETTIME_FOUND="yes"
|
||||
LIBS="$LIBS -lrt"
|
||||
], [
|
||||
AC_CHECK_LIB(pthread, clock_gettime, [
|
||||
AC_DEFINE(HAVE_CLOCK_GETTIME, 1)
|
||||
CLOCK_GETTIME_FOUND="yes"
|
||||
LIBS="$LIBS -lpthread"
|
||||
])
|
||||
])
|
||||
])
|
||||
|
||||
# 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 AC_CHECK_FUNCS with -Wl,-no_weak_imports because the
|
||||
# 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.
|
||||
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"
|
||||
#endif
|
||||
]])], [], [
|
||||
if test "$CLOCK_GETTIME_FOUND" = "yes"; then
|
||||
AC_MSG_NOTICE([Disabling incorrectly detected clock_gettime on OS X])
|
||||
fi
|
||||
CLOCK_GETTIME_FOUND="no"
|
||||
])
|
||||
;;
|
||||
esac
|
||||
|
||||
if test "$CLOCK_GETTIME_FOUND" = "yes"; then
|
||||
AC_DEFINE(HAVE_CLOCK_GETTIME, 1, [Have clock_gettime])
|
||||
fi
|
||||
|
||||
AC_CACHE_CHECK(for posix timers, gst_cv_posix_timers,
|
||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
|
||||
#include <time.h>
|
||||
|
|
|
@ -95,7 +95,7 @@ AC_CHECK_LIB([rt], [timer_create, timer_settime, timer_delete])
|
|||
AM_CONDITIONAL(HAVE_TIMER_CREATE_SETTIME_DELETE, test "x$ac_cv_lib_rt_timer_create__timer_settime__timer_delete" = "xyes")
|
||||
|
||||
dnl Allow for checking HAVE_CLOCK_GETTIME in automake files
|
||||
AM_CONDITIONAL(HAVE_CLOCK_GETTIME, test "x$ac_cv_func_clock_gettime" = "xyes")
|
||||
AM_CONDITIONAL(HAVE_CLOCK_GETTIME, test "x$HAVE_CLOCK_GETTIME" = "xyes")
|
||||
|
||||
dnl Create _stdint.h in the top-level directory
|
||||
AX_CREATE_STDINT_H
|
||||
|
|
Loading…
Reference in a new issue