Issue#114: check for the presence of isnan and isinf, and provide compat macros on MSCV where _isnan and _finite exist instead.
This commit is contained in:
16
config.h.in
16
config.h.in
@@ -3,6 +3,22 @@
|
|||||||
/* Define if .gnu.warning accepts long strings. */
|
/* Define if .gnu.warning accepts long strings. */
|
||||||
#undef HAS_GNU_WARNING_LONG
|
#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 <dlfcn.h> header file. */
|
/* Define to 1 if you have the <dlfcn.h> header file. */
|
||||||
#undef HAVE_DLFCN_H
|
#undef HAVE_DLFCN_H
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ AC_PREREQ(2.52)
|
|||||||
# Process this file with autoconf to produce a configure script.
|
# Process this file with autoconf to produce a configure script.
|
||||||
AC_INIT([json-c], 0.11.99, [json-c@googlegroups.com])
|
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
|
AC_PROG_MAKE_SET
|
||||||
|
|
||||||
@@ -29,6 +29,10 @@ AC_FUNC_MEMCMP
|
|||||||
AC_FUNC_MALLOC
|
AC_FUNC_MALLOC
|
||||||
AC_FUNC_REALLOC
|
AC_FUNC_REALLOC
|
||||||
AC_CHECK_FUNCS(strcasecmp strdup strerror snprintf vsnprintf vasprintf open vsyslog strncasecmp setlocale)
|
AC_CHECK_FUNCS(strcasecmp strdup strerror snprintf vsnprintf vasprintf open vsyslog strncasecmp setlocale)
|
||||||
|
AC_CHECK_DECLS([isnan], [], [], [[#include <math.h>]])
|
||||||
|
AC_CHECK_DECLS([isinf], [], [], [[#include <math.h>]])
|
||||||
|
AC_CHECK_DECLS([_isnan], [], [], [[#include <float.h>]])
|
||||||
|
AC_CHECK_DECLS([_finite], [], [], [[#include <float.h>]])
|
||||||
|
|
||||||
#check if .section.gnu.warning accepts long strings (for __warn_references)
|
#check if .section.gnu.warning accepts long strings (for __warn_references)
|
||||||
AC_LANG_PUSH([C])
|
AC_LANG_PUSH([C])
|
||||||
|
|||||||
@@ -27,6 +27,7 @@
|
|||||||
#include "json_object.h"
|
#include "json_object.h"
|
||||||
#include "json_object_private.h"
|
#include "json_object_private.h"
|
||||||
#include "json_util.h"
|
#include "json_util.h"
|
||||||
|
#include "math_compat.h"
|
||||||
|
|
||||||
#if !defined(HAVE_STRDUP) && defined(_MSC_VER)
|
#if !defined(HAVE_STRDUP) && defined(_MSC_VER)
|
||||||
/* MSC has the version as _strdup */
|
/* MSC has the version as _strdup */
|
||||||
|
|||||||
20
math_compat.h
Normal file
20
math_compat.h
Normal file
@@ -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 <float.h>
|
||||||
|
#define isnan(x) _isnan(x)
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef HAVE_DECL_ISINF
|
||||||
|
# ifdef HAVE_DECL__FINITE
|
||||||
|
#include <float.h>
|
||||||
|
#define isinf(x) (!_finite(x))
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
Reference in New Issue
Block a user