diff options
author | Michael Gran <spk121@yahoo.com> | 2021-03-03 10:54:04 -0800 |
---|---|---|
committer | Michael Gran <spk121@yahoo.com> | 2021-03-03 14:06:29 -0800 |
commit | 6ca3ab621cd9e5054a47b5946dacd98df756a879 (patch) | |
tree | 97969af83e91252885862b0d627ad1f283042aea | |
parent | eb5ffda6cedef823afc4a5b2fdddcee58e46df19 (diff) | |
download | guile-6ca3ab621cd9e5054a47b5946dacd98df756a879.tar.gz |
don't presume availability of gmp.pc
This suggests moving the conditional that determines if mini-gmp is used
into scmconfig.h.
* configure.ac: replace PKG_CHECK_MODULES for gmp with AC_LIB_HAVE_LINKFLAGS
Remove ENABLE_MINI_GMP define. Also don't run mpz_inits test for
--enable-mini-gmp.
* libguile/gen-scmconfig.c (main) [ENABLE_MINI_GMP]: replace ENABLE_MINI_GMP
with SCM_I_GSC_ENABLE_MINI_GMP
* libguile/bytevectors.c [ENABLE_MINI_GMP]: replace ENABLE_MINI_GMP
with SCM_ENABLE_MINI_GMP
* libguile/init.c [ENABLE_MINI_GMP]: replace ENABLE_MINI_GMP
with SCM_ENABLE_MINI_GMP
* libguile/numbers.c: include scm.h
[SCM_ENABLE_MINI_GMP]: provide mpz_inits and mpz_clears
[ENABLE_MINI_GMP]: prefer SCM_ENABLE_MINI_GMP to ENABLE_MINI_GMP
* libguile/numbers.h: include scm.h
* libguile/random.c [ENABLE_MINI_GMP]: replace ENABLE_MINI_GMP
with SCM_ENABLE_MINI_GMP
* libguile/socket.c [ENABLE_MINI_GMP]: replace ENABLE_MINI_GMP
with SCM_ENABLE_MINI_GMP
-rw-r--r-- | configure.ac | 25 | ||||
-rw-r--r-- | libguile/bytevectors.c | 4 | ||||
-rw-r--r-- | libguile/gen-scmconfig.c | 2 | ||||
-rw-r--r-- | libguile/init.c | 4 | ||||
-rw-r--r-- | libguile/numbers.c | 7 | ||||
-rw-r--r-- | libguile/numbers.h | 9 | ||||
-rw-r--r-- | libguile/random.c | 12 | ||||
-rw-r--r-- | libguile/socket.c | 3 |
8 files changed, 34 insertions, 32 deletions
diff --git a/configure.ac b/configure.ac index 559f0ed50..a3cdaff78 100644 --- a/configure.ac +++ b/configure.ac @@ -647,33 +647,26 @@ AC_CACHE_SAVE dnl GMP tests -PKG_CHECK_MODULES([GMP],[gmp], - [], - [$enable_mini_gmp=yes]) - SCM_I_GSC_ENABLE_MINI_GMP=0 AC_ARG_ENABLE(mini-gmp, [AS_HELP_STRING([--enable-mini-gmp], [use mini-gmp instead of the full GMP library])]) -if test "$enable_mini_gmp" = yes || test "$enable_mini_gmp" = y; then +if test "x$enable_mini_gmp" = xyes || test "x$enable_mini_gmp" = xy; then SCM_I_GSC_ENABLE_MINI_GMP=1 - AC_DEFINE([ENABLE_MINI_GMP], 1, - [Define this if you want to use mini-gmp.]) else - LIBS="$GMP_LIBS $LIBS" - CFLAGS="$GMP_CFLAGS $CFLAGS" + AC_LIB_HAVE_LINKFLAGS([gmp],[],[#include <gmp.h>], [mpz_import (0,0,0,0,0,0,0);]) + if test "x$HAVE_LIBGMP" != "xyes"; then + AC_MSG_ERROR([GNU MP 4.1 or greater not found]) + fi + if test "x$LIBGMP_PREFIX" != "x"; then + CPPFLAGS="-I$LIBGMP_PREFIX $CPPFLAGS" + fi + AC_CHECK_DECLS([mpz_inits], [], [], [[#include <gmp.h>]]) fi AC_SUBST([SCM_I_GSC_ENABLE_MINI_GMP]) AM_CONDITIONAL([USE_MINI_GMP], [test "x$enable_mini_gmp" = "xyes"]) -AC_CHECK_DECLS([mpz_inits], [], [], - [[#if ENABLE_MINI_GMP - #include "libguile/mini-gmp.h" - #else - #include <gmp.h> - #endif]]) - dnl GNU libunistring is checked for by Gnulib's `libunistring' module. if test "x$LTLIBUNISTRING" = "x"; then AC_MSG_ERROR([GNU libunistring is required, please install it.]) diff --git a/libguile/bytevectors.c b/libguile/bytevectors.c index 2671eeeea..2d6cbdb3e 100644 --- a/libguile/bytevectors.c +++ b/libguile/bytevectors.c @@ -35,7 +35,9 @@ #include <alloca.h> #include <assert.h> -#if ENABLE_MINI_GMP +#include "scm.h" + +#if SCM_ENABLE_MINI_GMP #include "mini-gmp.h" #else #include <gmp.h> diff --git a/libguile/gen-scmconfig.c b/libguile/gen-scmconfig.c index 667789e3b..44b401fbc 100644 --- a/libguile/gen-scmconfig.c +++ b/libguile/gen-scmconfig.c @@ -379,7 +379,7 @@ main (int argc, char *argv[]) pf ("\n"); pf ("/* Define to 1 to use mini GMP. */\n"); -#ifdef ENABLE_MINI_GMP +#if SCM_I_GSC_ENABLE_MINI_GMP == 1 pf ("#define SCM_ENABLE_MINI_GMP 1\n"); #else pf ("#undef SCM_ENABLE_MINI_GMP\n"); diff --git a/libguile/init.c b/libguile/init.c index 68077d1d5..beffc2c7a 100644 --- a/libguile/init.c +++ b/libguile/init.c @@ -31,7 +31,9 @@ #include <sys/stat.h> #include <unistd.h> -#if ENABLE_MINI_GMP +#include "scm.h" + +#if SCM_ENABLE_MINI_GMP #include "mini-gmp.h" #else #include <gmp.h> diff --git a/libguile/numbers.c b/libguile/numbers.c index 670c9ec69..107a05a9b 100644 --- a/libguile/numbers.c +++ b/libguile/numbers.c @@ -110,9 +110,10 @@ verify (SCM_MOST_POSITIVE_FIXNUM <= (mp_limb_t) -1); (SCM_I_FIXNUM_BIT-1 <= DBL_MANT_DIG \ || ((n) ^ ((n) >> (SCM_I_FIXNUM_BIT-1))) < (1L << DBL_MANT_DIG)) -#if ! HAVE_DECL_MPZ_INITS +#if (! HAVE_DECL_MPZ_INITS) || SCM_ENABLE_MINI_GMP -/* GMP < 5.0.0 lacks `mpz_inits' and `mpz_clears'. Provide them. */ +/* GMP < 5.0.0 and mini-gmp lack `mpz_inits' and `mpz_clears'. Provide + them. */ #define VARARG_MPZ_ITERATOR(func) \ static void \ @@ -399,7 +400,7 @@ scm_i_big2dbl_2exp (SCM b, long *expon_p) { long expon; double signif; -#if ENABLE_MINI_GMP +#if SCM_ENABLE_MINI_GMP int iexpon; signif = mpz_get_d (SCM_I_BIG_MPZ (b)); signif = frexp (signif, &iexpon); diff --git a/libguile/numbers.h b/libguile/numbers.h index 58010cdf5..7fe807111 100644 --- a/libguile/numbers.h +++ b/libguile/numbers.h @@ -22,16 +22,17 @@ -#include "libguile/scmconfig.h" -#include "libguile/error.h" -#include "libguile/gc.h" -#include "libguile/print.h" +#include "libguile/scm.h" #if SCM_ENABLE_MINI_GMP #include "libguile/mini-gmp.h" #else #include <gmp.h> #endif +#include "libguile/error.h" +#include "libguile/gc.h" +#include "libguile/print.h" + /* Immediate Numbers, also known as fixnums diff --git a/libguile/random.c b/libguile/random.c index b955c2c45..63da7f5d6 100644 --- a/libguile/random.c +++ b/libguile/random.c @@ -30,17 +30,19 @@ #include <sys/types.h> #include <unistd.h> +#include "scm.h" +#if SCM_ENABLE_MINI_GMP +#include "mini-gmp.h" +#else +#include <gmp.h> +#endif + #include "arrays.h" #include "feature.h" #include "generalized-arrays.h" #include "generalized-vectors.h" #include "gsubr.h" #include "list.h" -#if ENABLE_MINI_GMP -#include "mini-gmp.h" -#else -#include <gmp.h> -#endif #include "modules.h" #include "numbers.h" #include "numbers.h" diff --git a/libguile/socket.c b/libguile/socket.c index 1bd56a0c7..f463ec901 100644 --- a/libguile/socket.c +++ b/libguile/socket.c @@ -44,7 +44,8 @@ #include <netdb.h> #include <arpa/inet.h> -#if ENABLE_MINI_GMP +#include "scm.h" +#if SCM_ENABLE_MINI_GMP #include "mini-gmp.h" #else #include <gmp.h> |