Download M4 Source Macro History Category Index

ax_lib_nettle

Synopsis

AX_LIB_NETTLE([yes|no|auto])

Description

Searches for the 'nettle' library with the --with... option.

If found, define HAVE_NETTLE and macro NETTLE_LIBS. Also defines NETTLE_WITH_<algo> for the algorithms found available. Possible algorithms: AES ARCTWO BLOWFISH CAST128 DES DES3 SERPENT TWOFISH MD2 MD4 MD5 SHA1 SHA256.

The argument is used if no --with...-nettle option is set. Value "yes" requires the configuration by default. Value "no" does not require it by default. Value "auto" configures the library only if available.

See also AX_LIB_BEECRYPT, AX_LIB_CRYPTO, and AX_LIB_GCRYPT.

Author

Fabien Coelho <autoconf.archive@coelho.net>

Last Modified

2008-08-20

Cross References

group30-xrefs.png

M4 Source Code

# AX_CHECK_NETTLE_ALGO([name],[function])
AC_DEFUN([AX_CHECK_NETTLE_ALGO],[
  AC_CHECK_LIB([nettle], [nettle_$2],
    AC_DEFINE([NETTLE_WITH_$1],[1],[Algorithm $1 in nettle library]))
])

# AX_LIB_NETTLE([yes|no|auto])
AC_DEFUN([AX_LIB_NETTLE],[
  AC_MSG_CHECKING([whether nettle is enabled])
  AC_ARG_WITH([nettle],[  --with-nettle         require nettle library
  --without-nettle      disable nettle library],[
    AC_MSG_RESULT([$withval])
    ax_with_nettle=$withval
  ],[
    AC_MSG_RESULT([$1])
    ax_with_nettle=$1
  ])
  if test "$ax_with_nettle" = "yes" -o "$ax_with_nettle" = "auto" ; then
    AC_CHECK_HEADERS([nettle/nettle-meta.h],[
      AC_CHECK_LIB([nettle],[nettle_base64_encode_final],[
        AC_DEFINE([HAVE_NETTLE],[1],[Nettle library is available])
        HAVE_NETTLE=1
        AC_SUBST([NETTLE_LIBS],[-lnettle])
        # ciphers
        AX_CHECK_NETTLE_ALGO([AES],[aes_encrypt])
        AX_CHECK_NETTLE_ALGO([ARCTWO],[arctwo_encrypt])
        AX_CHECK_NETTLE_ALGO([BLOWFISH],[blowfish_encrypt])
        AX_CHECK_NETTLE_ALGO([CAST128],[cast128_encrypt])
        AX_CHECK_NETTLE_ALGO([DES],[des_encrypt])
        AX_CHECK_NETTLE_ALGO([DES3],[des3_encrypt])
        AX_CHECK_NETTLE_ALGO([SERPENT],[serpent_encrypt])
        AX_CHECK_NETTLE_ALGO([TWOFISH],[twofish_encrypt])
        # digests
        AX_CHECK_NETTLE_ALGO([MD2],[md2_digest])
        AX_CHECK_NETTLE_ALGO([MD4],[md4_digest])
        AX_CHECK_NETTLE_ALGO([MD5],[md5_digest])
        AX_CHECK_NETTLE_ALGO([SHA1],[sha1_digest])
        AX_CHECK_NETTLE_ALGO([SHA256],[sha256_digest])
      ])
    ])
    # complain only if explicitely required
    if test "$ax_with_nettle" = "yes" -a "x$HAVE_NETTLE" = "x" ; then
        AC_MSG_ERROR([cannot configure required nettle library])
    fi
  fi
])

License

Copyright © 2008 Fabien Coelho <autoconf.archive@coelho.net>

Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved.