From 50addb39c876c57918cbd27f0dd70a519ef5abf5 Mon Sep 17 00:00:00 2001
From: Edric Milaret <edric.ladent-milaret@savoirfairelinux.com>
Date: Wed, 17 Aug 2016 13:40:39 -0400
Subject: [PATCH] contrib: deactivate clock_gettime for iOS and macOS

clock_gettime function as been added to MacOS 10.12 and iOS 10
so launching the Ring App would result in symbol not found on OS
before 10

Change-Id: Ifcd841379483ef9b8d17f54ee5b99f0a2526f94a
Tuleap: #911
---
 contrib/src/ffmpeg/clock_gettime.patch | 11 +++++++++++
 contrib/src/ffmpeg/rules.mak           |  6 ++++++
 contrib/src/gmp/clock_gettime.patch    | 20 ++++++++++++++++++++
 contrib/src/gmp/rules.mak              | 14 +++++++++++++-
 contrib/src/gnutls/rules.mak           |  8 ++++++++
 contrib/src/sndfile/rules.mak          |  3 +++
 6 files changed, 61 insertions(+), 1 deletion(-)
 create mode 100644 contrib/src/ffmpeg/clock_gettime.patch
 create mode 100644 contrib/src/gmp/clock_gettime.patch

diff --git a/contrib/src/ffmpeg/clock_gettime.patch b/contrib/src/ffmpeg/clock_gettime.patch
new file mode 100644
index 0000000000..26df8f2918
--- /dev/null
+++ b/contrib/src/ffmpeg/clock_gettime.patch
@@ -0,0 +1,11 @@
+--- a/configure	2016-08-17 10:38:51.000000000 -0400
++++ b/configure	2016-08-17 10:38:53.000000000 -0400
+@@ -5293,7 +5293,7 @@
+
+ check_func  access
+ check_func  arc4random
+-check_func_headers time.h clock_gettime || { check_func_headers time.h clock_gettime -lrt && add_extralibs -lrt && LIBRT="-lrt"; }
++#check_func_headers time.h clock_gettime || { check_func_headers time.h clock_gettime -lrt && add_extralibs -lrt && LIBRT="-lrt"; }
+ check_func  fcntl
+ check_func  fork
+ check_func  gethrtime
diff --git a/contrib/src/ffmpeg/rules.mak b/contrib/src/ffmpeg/rules.mak
index c1e7cd50d0..3ff65c545a 100644
--- a/contrib/src/ffmpeg/rules.mak
+++ b/contrib/src/ffmpeg/rules.mak
@@ -187,6 +187,12 @@ ffmpeg: ffmpeg-$(FFMPEG_HASH).tar.xz .sum-ffmpeg
 	(cd $@-$(FFMPEG_HASH) && tar x $(if ${BATCH_MODE},,-v) --strip-components=1 -f ../$<)
 	$(UPDATE_AUTOCONFIG)
 	$(APPLY) $(SRC)/ffmpeg/0004-avformat-fix-find_stream_info-not-considering-extradata.patch
+ifdef HAVE_IOS
+	$(APPLY) $(SRC)/ffmpeg/clock_gettime.patch
+endif
+ifdef HAVE_MACOSX
+	$(APPLY) $(SRC)/ffmpeg/clock_gettime.patch
+endif
 	$(MOVE)
 
 .ffmpeg: ffmpeg
diff --git a/contrib/src/gmp/clock_gettime.patch b/contrib/src/gmp/clock_gettime.patch
new file mode 100644
index 0000000000..f9a1e9e3ad
--- /dev/null
+++ b/contrib/src/gmp/clock_gettime.patch
@@ -0,0 +1,20 @@
+--- a/configure.ac	2016-08-17 11:04:37.000000000 -0400
++++ b/configure.ac	2016-08-17 11:04:33.000000000 -0400
+@@ -2798,8 +2798,16 @@
+ # clock_getres said only 1 millisecond.
+
+ old_LIBS="$LIBS"
+-AC_SEARCH_LIBS(clock_gettime, rt, [
+-  AC_DEFINE([HAVE_CLOCK_GETTIME],1,[Define to 1 if you have the `clock_gettime' function])])
++
++AC_ARG_WITH([clock_gettime],
++            AS_HELP_STRING([--without-clock-gettime],
++                           [Ignore presence of clock_gettime and disable it]), [], [with_clock_gettime=yes])
++
++AS_IF([test "x$with_clock_gettime" = "xyes"],
++      [AC_SEARCH_LIBS(clock_gettime, rt, [
++        AC_DEFINE([HAVE_CLOCK_GETTIME],1,[Define to 1 if you have the `clock_gettime' function])])],
++      [HAVE_CLOCK_GETTIME=0])
++
+ TUNE_LIBS="$LIBS"
+ LIBS="$old_LIBS"
diff --git a/contrib/src/gmp/rules.mak b/contrib/src/gmp/rules.mak
index 96c7980c73..45939cb212 100644
--- a/contrib/src/gmp/rules.mak
+++ b/contrib/src/gmp/rules.mak
@@ -10,13 +10,25 @@ $(TARBALLS)/gmp-$(GMP_VERSION).tar.bz2:
 
 gmp: gmp-$(GMP_VERSION).tar.bz2 .sum-gmp
 	$(UNPACK)
+ifdef HAVE_IOS
+	$(APPLY) $(SRC)/gmp/clock_gettime.patch
+endif
+ifdef HAVE_MACOSX
+	$(APPLY) $(SRC)/gmp/clock_gettime.patch
+endif
 	$(MOVE)
 
 .gmp: gmp
 ifdef HAVE_IOS
-	cd $< && $(HOSTVARS) CFLAGS="$(CFLAGS) -O3" ./configure --disable-assembly $(HOSTCONF)
+	$(RECONF)
+	cd $< && $(HOSTVARS) CFLAGS="$(CFLAGS) -O3" ./configure --disable-assembly --without-clock-gettime $(HOSTCONF)
+else
+ifdef HAVE_MACOSX
+	$(RECONF)
+	cd $< && $(HOSTVARS) ./configure --without-clock-gettime $(HOSTCONF)
 else
 	cd $< && $(HOSTVARS) ./configure $(HOSTCONF)
+endif
 endif
 	cd $< && $(MAKE) install
 	touch $@
diff --git a/contrib/src/gnutls/rules.mak b/contrib/src/gnutls/rules.mak
index e7c2280069..547084f05a 100644
--- a/contrib/src/gnutls/rules.mak
+++ b/contrib/src/gnutls/rules.mak
@@ -68,8 +68,16 @@ endif
 	$(RECONF)
 ifdef HAVE_ANDROID
 	cd $< && $(HOSTVARS) gl_cv_header_working_stdint_h=yes ./configure $(GNUTLS_CONF)
+else
+ifdef HAVE_IOS
+	cd $< && $(HOSTVARS) ac_cv_func_clock_gettime=no CFLAGS="$(CFLAGS)" ./configure $(GNUTLS_CONF)
+else
+ifdef HAVE_MACOSX
+	cd $< && $(HOSTVARS) ac_cv_func_clock_gettime=no CFLAGS="$(CFLAGS)" ./configure $(GNUTLS_CONF)
 else
 	cd $< && $(HOSTVARS) CFLAGS="$(CFLAGS)" ./configure $(GNUTLS_CONF)
+endif
+endif
 endif
 	cd $</gl && $(MAKE) install
 	cd $</lib && $(MAKE) install
diff --git a/contrib/src/sndfile/rules.mak b/contrib/src/sndfile/rules.mak
index 51a7a37b62..c92e8a079f 100644
--- a/contrib/src/sndfile/rules.mak
+++ b/contrib/src/sndfile/rules.mak
@@ -21,6 +21,9 @@ sndfile: libsndfile-$(SNDFILE_VERSION).tar.gz .sum-sndfile
 	$(APPLY) $(SRC)/sndfile/autotools.patch
 	$(APPLY) $(SRC)/sndfile/disable_programs.patch
 	$(UPDATE_AUTOCONFIG) && cd $(UNPACK_DIR) && mv config.guess config.sub Cfg && autoreconf -fi
+ifdef HAVE_IOS
+	rm -Rf examples
+endif
 	$(MOVE)
 
 .sndfile: sndfile
-- 
GitLab