summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChun-wei Fan <fanchunwei@src.gnome.org>2020-12-23 11:28:10 +0800
committerChun-wei Fan <fanchunwei@src.gnome.org>2020-12-23 12:52:19 +0800
commit91343251b98f752e1b4e6cef1e4305e085cbc289 (patch)
tree33bc5ded3071aee4d6d3c28e9d46a1f65f4c6e79
parentecd6b0b9a494a33a402cdddf16448727172f7f71 (diff)
downloadgtk+-324.c89.tar.gz
gtk/fallback-c89.c: Add fallback for fmin()324.c89
fmin() is a function that is introduced with C99/C++11, so check for the presence of it and provide a simple implementation for it if it does not exist. Also update the config.h.win32.in template accordingly, since this function is provided on Visual Studio 2013 or later.
-rw-r--r--config.h.meson3
-rw-r--r--config.h.win32.in5
-rw-r--r--configure.ac2
-rw-r--r--gtk/fallback-c89.c8
-rw-r--r--gtk/gtkscrolledwindow.c2
-rw-r--r--meson.build1
6 files changed, 19 insertions, 2 deletions
diff --git a/config.h.meson b/config.h.meson
index 2af55473fc..eb347ae538 100644
--- a/config.h.meson
+++ b/config.h.meson
@@ -44,6 +44,9 @@
/* Define to 1 if you have the `flockfile' function. */
#mesondefine HAVE_FLOCKFILE
+/* Define to 1 if you have the `fmin' function. */
+#mesondefine HAVE_FMIN
+
/* Define to 1 if you have the <ftw.h> header file. */
#mesondefine HAVE_FTW_H
diff --git a/config.h.win32.in b/config.h.win32.in
index 62fe46149c..d0546db297 100644
--- a/config.h.win32.in
+++ b/config.h.win32.in
@@ -52,6 +52,11 @@
/* Define to 1 if you have the `flockfile' function. */
#undef HAVE_FLOCKFILE
+/* Define to 1 if you have the `fmin' function. */
+#if !defined (_MSC_VER) || (_MSC_VER >= 1800)
+# define HAVE_FMIN 1
+#endif
+
/* Define to 1 if you have the <ftw.h> header file. */
/* #undef HAVE_FTW_H */
diff --git a/configure.ac b/configure.ac
index 51467bb6cc..acafa2f603 100644
--- a/configure.ac
+++ b/configure.ac
@@ -843,7 +843,7 @@ AC_TYPE_UID_T
# Check for round(), rint(), isnan() and isinf()
# Check for log2(), exp2(), nearbyint() and trunc()
AC_CHECK_LIB(m,round,,)
-AC_CHECK_FUNCS(round rint nearbyint sincos exp2 log2 trunc)
+AC_CHECK_FUNCS(round rint nearbyint sincos exp2 log2 trunc fmin)
AC_CHECK_DECLS([isnan, isinf], [], [], [[#include <math.h>]])
AC_MSG_CHECKING(whether to build dynamic modules)
diff --git a/gtk/fallback-c89.c b/gtk/fallback-c89.c
index 737983c049..1bfa3fb3b3 100644
--- a/gtk/fallback-c89.c
+++ b/gtk/fallback-c89.c
@@ -126,3 +126,11 @@ isnan (double x)
return _isnan (x);
}
#endif
+
+#ifndef HAVE_FMIN
+static inline double
+fmin (double x, double y)
+{
+ return x < y ? x : y;
+}
+#endif
diff --git a/gtk/gtkscrolledwindow.c b/gtk/gtkscrolledwindow.c
index 408c09265d..bea7339f39 100644
--- a/gtk/gtkscrolledwindow.c
+++ b/gtk/gtkscrolledwindow.c
@@ -48,7 +48,7 @@
#include "gtkprogresstrackerprivate.h"
#include "gtksettingsprivate.h"
-#include <math.h>
+#include "fallback-c89.c"
/**
* SECTION:gtkscrolledwindow
diff --git a/meson.build b/meson.build
index b2eaa33a88..405c5a511c 100644
--- a/meson.build
+++ b/meson.build
@@ -252,6 +252,7 @@ check_functions = [
'sincos',
'trunc',
'localtime_r',
+ 'fmin',
]
foreach func : check_functions