From: Eric Haszlakiewicz Date: Sun, 2 Mar 2014 17:16:37 +0000 (-0500) Subject: Issue#114: check for the presence of isnan and isinf, and provide compat macros on... X-Git-Tag: json-c-0.12-20140410~13 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=e6f1322b5e0fbbd5b8767b60c5fe34ff4468ec42;p=thirdparty%2Fjson-c.git Issue#114: check for the presence of isnan and isinf, and provide compat macros on MSCV where _isnan and _finite exist instead. --- diff --git a/config.h.in b/config.h.in index e59a5a38..d612636f 100644 --- a/config.h.in +++ b/config.h.in @@ -3,6 +3,22 @@ /* Define if .gnu.warning accepts long strings. */ #undef HAS_GNU_WARNING_LONG +/* Define to 1 if you have the declaration of `isinf', and to 0 if you don't. + */ +#undef HAVE_DECL_ISINF + +/* Define to 1 if you have the declaration of `isnan', and to 0 if you don't. + */ +#undef HAVE_DECL_ISNAN + +/* Define to 1 if you have the declaration of `_finite', and to 0 if you + don't. */ +#undef HAVE_DECL__FINITE + +/* Define to 1 if you have the declaration of `_isnan', and to 0 if you don't. + */ +#undef HAVE_DECL__ISNAN + /* Define to 1 if you have the header file. */ #undef HAVE_DLFCN_H diff --git a/configure.ac b/configure.ac index 5c0a0e8e..a7d2d7b3 100644 --- a/configure.ac +++ b/configure.ac @@ -3,7 +3,7 @@ AC_PREREQ(2.52) # Process this file with autoconf to produce a configure script. AC_INIT([json-c], 0.11.99, [json-c@googlegroups.com]) -AM_INIT_AUTOMAKE(AC_PACKAGE_NAME, AC_PACKAGE_VERSION) +AM_INIT_AUTOMAKE AC_PROG_MAKE_SET @@ -29,6 +29,10 @@ AC_FUNC_MEMCMP AC_FUNC_MALLOC AC_FUNC_REALLOC AC_CHECK_FUNCS(strcasecmp strdup strerror snprintf vsnprintf vasprintf open vsyslog strncasecmp setlocale) +AC_CHECK_DECLS([isnan], [], [], [[#include ]]) +AC_CHECK_DECLS([isinf], [], [], [[#include ]]) +AC_CHECK_DECLS([_isnan], [], [], [[#include ]]) +AC_CHECK_DECLS([_finite], [], [], [[#include ]]) #check if .section.gnu.warning accepts long strings (for __warn_references) AC_LANG_PUSH([C]) diff --git a/json_object.c b/json_object.c index 377ab596..6cc73bce 100644 --- a/json_object.c +++ b/json_object.c @@ -27,6 +27,7 @@ #include "json_object.h" #include "json_object_private.h" #include "json_util.h" +#include "math_compat.h" #if !defined(HAVE_STRDUP) && defined(_MSC_VER) /* MSC has the version as _strdup */ diff --git a/math_compat.h b/math_compat.h new file mode 100644 index 00000000..4a2721e1 --- /dev/null +++ b/math_compat.h @@ -0,0 +1,20 @@ +#ifndef __math_compat_h +#define __math_compat_h + +/* Define isnan and isinf on Windows/MSVC */ + +#ifndef HAVE_DECL_ISNAN +# ifdef HAVE_DECL__ISNAN +#include +#define isnan(x) _isnan(x) +# endif +#endif + +#ifndef HAVE_DECL_ISINF +# ifdef HAVE_DECL__FINITE +#include +#define isinf(x) (!_finite(x)) +# endif +#endif + +#endif