summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorWilliam Langford <wlangfor@gmail.com>2020-11-27 19:13:14 -0500
committerWilliam Langford <wlangfor@gmail.com>2020-12-19 15:18:29 -0500
commit77417c1335a12c4ceef469caf38c0cbfb6315b45 (patch)
tree38bf324098589c6e4fdf5b25dd4701d6f20ea7cf /src
parente660003abf9bdb9f9e6959d5ebe0a536862960e7 (diff)
Clean up compile warnings on macOS
Diffstat (limited to 'src')
-rw-r--r--src/builtin.c38
-rw-r--r--src/jv_dtoa_tsd.c4
-rw-r--r--src/libm.h6
3 files changed, 43 insertions, 5 deletions
diff --git a/src/builtin.c b/src/builtin.c
index bf80c7ba..1c6b08cd 100644
--- a/src/builtin.c
+++ b/src/builtin.c
@@ -106,6 +106,36 @@ static jv f_plus(jq_state *jq, jv input, jv a, jv b) {
}
}
+#ifdef __APPLE__
+// macOS has a bunch of libm deprecation warnings, so let's clean those up
+#ifdef HAVE_TGAMMA
+#define gamma tgamma
+#endif
+#ifdef HAVE___EXP10
+#define exp10 __exp10
+#endif
+#ifdef HAVE_REMAINDER
+#define drem remainder
+#endif
+
+// We replace significand with our own, since there's not a rename-replacement
+#ifdef HAVE_FREXP
+#define HAVE_CUSTOM_SIGNIFICAND
+static double __jq_significand(double x) {
+ int z;
+ return 2*frexp(x, &z);
+}
+#define significand __jq_significand
+#elif defined(HAVE_SCALBN) && defined(HAVE_ILOGB)
+#define HAVE_CUSTOM_SIGNIFICAND
+static double __jq_significand(double x) {
+ return scalbn(x, -ilogb(x));
+}
+#define significand __jq_significand
+#endif
+
+#endif // ifdef __APPLE__
+
#define LIBM_DD(name) \
static jv f_ ## name(jq_state *jq, jv input) { \
if (jv_get_kind(input) != JV_KIND_NUMBER) { \
@@ -168,6 +198,14 @@ static jv f_ ## name(jq_state *jq, jv input, jv a, jv b, jv c) { \
#undef LIBM_DDD
#undef LIBM_DD
+#ifdef __APPLE__ // Clean up after ourselves
+#undef HAVE_CUSTOM_SIGNIFICAND
+#undef gamma
+#undef drem
+#undef significand
+#undef exp10
+#endif
+
#ifdef HAVE_FREXP
static jv f_frexp(jq_state *jq, jv input) {
if (jv_get_kind(input) != JV_KIND_NUMBER) {
diff --git a/src/jv_dtoa_tsd.c b/src/jv_dtoa_tsd.c
index 0f95df4f..85d5beb4 100644
--- a/src/jv_dtoa_tsd.c
+++ b/src/jv_dtoa_tsd.c
@@ -10,9 +10,9 @@
static pthread_key_t dtoa_ctx_key;
static pthread_once_t dtoa_ctx_once = PTHREAD_ONCE_INIT;
-static void tsd_dtoa_ctx_dtor(struct dtoa_context *ctx) {
+static void tsd_dtoa_ctx_dtor(void *ctx) {
if (ctx) {
- jvp_dtoa_context_free(ctx);
+ jvp_dtoa_context_free((struct dtoa_context *)ctx);
jv_mem_free(ctx);
}
}
diff --git a/src/libm.h b/src/libm.h
index b1db7882..e1553487 100644
--- a/src/libm.h
+++ b/src/libm.h
@@ -174,7 +174,7 @@ LIBM_DD(erfc)
#else
LIBM_DD_NO(erfc)
#endif
-#if defined(HAVE_EXP10) && !defined(WIN32)
+#if (defined(HAVE_EXP10) && !defined(WIN32)) || (defined(__APPLE__) && defined(HAVE___EXP10))
LIBM_DD(exp10)
#else
LIBM_DD_NO(exp10)
@@ -214,7 +214,7 @@ LIBM_DDD(fmod)
#else
LIBM_DDD_NO(fmod)
#endif
-#ifdef HAVE_GAMMA
+#if defined(HAVE_GAMMA)
LIBM_DD(gamma)
#else
LIBM_DD_NO(gamma)
@@ -274,7 +274,7 @@ LIBM_DDD(scalbln)
#else
LIBM_DDD_NO(scalbln)
#endif
-#if defined(HAVE_SIGNIFICAND) && !defined(WIN32)
+#if defined(HAVE_CUSTOM_SIGNIFICAND) || (defined(HAVE_SIGNIFICAND) && !defined(WIN32))
LIBM_DD(significand)
#else
LIBM_DD_NO(significand)