Copyright (C) 2000-2012 |
GNU Info (gmp.info)AutoconfAutoconf ======== Autoconf based applications can easily check whether GMP is installed. The only thing to be noted is that GMP library symbols from version 3 onwards have prefixes like `__gmpz'. The following therefore would be a simple test, AC_CHECK_LIB(gmp, __gmpz_init) This just uses the default `AC_CHECK_LIB' actions for found or not found, but an application that must have GMP would want to generate an error if not found. For example, AC_CHECK_LIB(gmp, __gmpz_init, , [AC_MSG_ERROR( [GNU MP not found, see http://swox.com/gmp])]) If functions added in some particular version of GMP are required, then one of those can be used when checking. For example `mpz_mul_si' was added in GMP 3.1, AC_CHECK_LIB(gmp, __gmpz_mul_si, , [AC_MSG_ERROR( [GNU MP not found, or not 3.1 or up, see http://swox.com/gmp])]) An alternative would be to test the version number in `gmp.h' using say `AC_EGREP_CPP'. That would make it possible to test the exact version, if some particular sub-minor release is known to be necessary. An application that can use either GMP 2 or 3 will need to test for `__gmpz_init' (GMP 3 and up) or `mpz_init' (GMP 2), and it's also worth checking for `libgmp2' since Debian GNU/Linux systems used that name in the past. For example, AC_CHECK_LIB(gmp, __gmpz_init, , [AC_CHECK_LIB(gmp, mpz_init, , [AC_CHECK_LIB(gmp2, mpz_init)])]) In general it's suggested that applications should simply demand a new enough GMP rather than trying to provide supplements for features not available in past versions. Occasionally an application will need or want to know the size of a type at configuration or preprocessing time, not just with `sizeof' in the code. This can be done in the normal way with `mp_limb_t' etc, but GMP 4.0 or up is best for this, since prior versions needed certain `-D' defines on systems using a `long long' limb. The following would suit Autoconf 2.50 or up, AC_CHECK_SIZEOF(mp_limb_t, , [#include <gmp.h>]) The optional `mpfr' functions are provided in a separate `libmpfr.a', and this might be from GMP with `--enable-mpfr' or from MPFR installed separately. Either way `libmpfr' depends on `libgmp', it doesn't stand alone. Currently only a static `libmpfr.a' will be available, not a shared library, since upward binary compatibility is not guaranteed. AC_CHECK_LIB(mpfr, mpfr_add, , [AC_MSG_ERROR( [Need MPFR either from GNU MP 4 or separate MPFR package. See http://www.mpfr.org or http://swox.com/gmp]) automatically generated by info2www version 1.2.2.9 |