aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCharles Karney <charles@karney.com>2018-03-23 06:34:48 -0400
committerCharles Karney <charles@karney.com>2018-03-23 06:34:48 -0400
commitb04abee685f38db9d1be15f8406ca79dabde7ee1 (patch)
treeb180f45a7922ef8cbb25ecc08f5753889b83c2d7
parent3cd307366ab86c3351d77ba5fd19d5a56e76d239 (diff)
downloadPROJ-b04abee685f38db9d1be15f8406ca79dabde7ee1.tar.gz
PROJ-b04abee685f38db9d1be15f8406ca79dabde7ee1.zip
If HAVE_C99_MATH, define pj_is_nan as isnan.
Extend HAVE_C99_MATH checks in CMakeLists.txt and configure.ac to include test for C99 function isnan.
-rw-r--r--CMakeLists.txt3
-rw-r--r--configure.ac3
-rw-r--r--src/pj_internal.c4
-rw-r--r--src/proj_internal.h8
4 files changed, 16 insertions, 2 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 02de6a81..e6f56788 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -100,7 +100,8 @@ int main() {
int q;
return (int)(hypot(3.0, 4.0) + atanh(0.8) + cbrt(8.0) +
remquo(100.0, 90.0, &q) +
- remainder(100.0, 90.0) + copysign(1.0, -0.0));
+ remainder(100.0, 90.0) + copysign(1.0, -0.0)) +
+ isnan(0.0);
}\n" C99_MATH)
if (C99_MATH)
add_definitions (-DHAVE_C99_MATH=1)
diff --git a/configure.ac b/configure.ac
index 66da9d13..99a764db 100644
--- a/configure.ac
+++ b/configure.ac
@@ -44,7 +44,8 @@ AC_LINK_IFELSE([AC_LANG_PROGRAM(
[int q;
return (int)(hypot(3.0, 4.0) + atanh(0.8) + cbrt(8.0) +
remquo(100.0, 90.0, &q) +
- remainder(100.0, 90.0) + copysign(1.0, -0.0));])],
+ remainder(100.0, 90.0) + copysign(1.0, -0.0)) +
+ isnan(0.0);])],
[AC_MSG_RESULT([yes]);C99_MATH="-DHAVE_C99_MATH=1"],
[AC_MSG_RESULT([no]);C99_MATH="-DHAVE_C99_MATH=0"])
CFLAGS="$save_CFLAGS $C99_MATH"
diff --git a/src/pj_internal.c b/src/pj_internal.c
index 9cbbf20a..4da47051 100644
--- a/src/pj_internal.c
+++ b/src/pj_internal.c
@@ -445,6 +445,9 @@ void proj_log_func (PJ_CONTEXT *ctx, void *app_data, PJ_LOG_FUNCTION logf) {
}
+#if HAVE_C99_MATH
+/* proj_internal.h defines pj_is_nan as isnan */
+#else
/*****************************************************************************/
int pj_is_nan (double val) {
/******************************************************************************
@@ -455,3 +458,4 @@ int pj_is_nan (double val) {
/* cppcheck-suppress duplicateExpression */
return val != val;
}
+#endif
diff --git a/src/proj_internal.h b/src/proj_internal.h
index b3843a59..3f6ccde0 100644
--- a/src/proj_internal.h
+++ b/src/proj_internal.h
@@ -50,6 +50,10 @@ extern "C" {
#define STATIC_ASSERT(COND) ((void)sizeof(char[(COND) ? 1 : -1]))
+#if !defined(HAVE_C99_MATH)
+#define HAVE_C99_MATH 0
+#endif
+
#ifndef PJ_TODEG
#define PJ_TODEG(rad) ((rad)*180.0/M_PI)
#endif
@@ -130,7 +134,11 @@ void proj_fileapi_set (PJ *P, void *fileapi);
const char * const *proj_get_searchpath(void);
int proj_get_path_count(void);
+#if HAVE_C99_MATH
+#define pj_is_nan isnan
+#else
int pj_is_nan (double val);
+#endif
#ifdef __cplusplus
}