### 3.14 Autoconf

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 https://gmplib.org/])])

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 https://gmplib.org/])])

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.

In general it’s recommended 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>])