compat: add sincos() and sincosf() replacements
authorRémi Denis-Courmont <remi@remlab.net>
Sun, 13 Nov 2016 11:27:40 +0000 (13:27 +0200)
committerRémi Denis-Courmont <remi@remlab.net>
Sun, 13 Nov 2016 11:58:56 +0000 (13:58 +0200)
compat/sincos.c [new file with mode: 0644]
configure.ac
include/vlc_fixups.h

diff --git a/compat/sincos.c b/compat/sincos.c
new file mode 100644 (file)
index 0000000..e01698d
--- /dev/null
@@ -0,0 +1,37 @@
+/*****************************************************************************
+ * sincos.c: GNU sincos() & sincosf() replacements
+ *****************************************************************************
+ * Copyright © 2016 Rémi Denis-Courmont
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation; either version 2.1 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+ *****************************************************************************/
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#include <math.h>
+
+void sincos(double r, double *restrict sr, double *restrict cr)
+{
+    *sr = sin(r);
+    *cr = cos(r);
+}
+
+void sincosf(float r, float *restrict sr, float *restrict cr)
+{
+    *sr = sinf(r);
+    *cr = cosf(r);
+}
index c8900d2..0f5994e 100644 (file)
@@ -751,6 +751,11 @@ AC_CHECK_LIB(m,lrintf, [
 AC_CHECK_LIB(m,nanf,
   AC_DEFINE(HAVE_NANF, 1, [Define to 1 if you have the NANF function])
 )
+AC_CHECK_LIB(m,sincos, [
+  AC_DEFINE(HAVE_SINCOS, 1, [Define to 1 if you have the sincos function.])
+], [
+  AC_LIBOBJ([sincos])
+])
 
 dnl Check for dynamic plugins
 LIBDL=""
index 7b7e619..a3fc6f3 100644 (file)
@@ -481,6 +481,11 @@ void freeaddrinfo (struct addrinfo *res);
 #define nanf(tagp) NAN
 #endif
 
+#ifndef HAVE_SINCOS
+void sincos(double, double *, double *);
+void sincosf(float, float *, float *);
+#endif
+
 #ifndef HAVE_REALPATH
 char *realpath(const char * restrict pathname, char * restrict resolved_path);
 #endif