AC_INIT(nettle.cmod) |
AC_CONFIG_HEADER(nettle_config.h) |
|
AC_SET_MAKE |
|
AC_MODULE_INIT() |
|
if test "$with_nettle" = "no"; then |
PIKE_FEATURE_WITHOUT(nettle) |
else |
AC_CHECK_LIB(gmp, mpz_init) |
AC_CHECK_LIB(gmp, __mpz_init) |
AC_CHECK_LIB(gmp, __gmpz_init) |
AC_MSG_CHECKING(CryptAcquireContext in -ladvapi32) |
AC_CACHE_VAL(pike_cv_nettle_advapi32_CryptAcquireContext, |
[ |
OLDLIBS="$LIBS" |
LIBS="-ladvapi32 $LIBS" |
AC_TRY_LINK([#ifndef _WIN32_WINNT |
#define _WIN32_WINNT 0x0400 |
#endif |
#include <windows.h> |
#include <wincrypt.h> |
],[CryptAcquireContext(0,0,0,0,0);], |
[pike_cv_nettle_advapi32_CryptAcquireContext=yes], |
[pike_cv_nettle_advapi32_CryptAcquireContext=no]) |
LIBS="$OLDLIBS" |
]) |
AC_MSG_RESULT($pike_cv_nettle_advapi32_CryptAcquireContext) |
if test x"$pike_cv_nettle_advapi32_CryptAcquireContext" = xyes; then |
LIBS="-ladvapi32 $LIBS" |
fi |
AC_CHECK_LIB(nettle, nettle_md5_init) |
AC_CHECK_LIB(nettle, md5_init) |
|
AC_SUBST(IDEA_OBJ) |
|
if test "x$ac_cv_lib_nettle_nettle_md5_init" = "xyes" -o \ |
"x$ac_cv_lib_nettle_md5_init" = "xyes"; then |
PIKE_FEATURE_OK(Nettle) |
|
# md4 is available in later versions of nettle |
AC_CHECK_HEADERS(nettle/md4.h) |
AC_CHECK_FUNCS(nettle_md4_init) |
|
AC_MSG_CHECKING([for idea.c]) |
# Have the patent-encumbered idea files been purged? |
if test -f "$srcdir/idea.c" ; then |
AC_MSG_RESULT([found]) |
AC_DEFINE([WITH_IDEA], 1, [idea.c available]) |
IDEA_OBJ=idea.o |
else |
AC_MSG_RESULT([no]) |
IDEA_OBJ="" |
fi |
|
# These might have been purged from the Nettle lib to avoid GPL |
# contamination. |
AC_CHECK_FUNCS(nettle_blowfish_decrypt nettle_serpent_decrypt) |
|
# This is the recomended interface in Nettle 2.0. |
AC_CHECK_FUNCS(nettle_yarrow256_slow_reseed) |
|
AC_MSG_CHECKING([for struct yarrow256_ctx.seed_file]) |
AC_CACHE_VAL(pike_cv_nettle_struct_yarrow256_ctx_seed_file, [ |
pike_cv_nettle_struct_yarrow256_ctx_seed_file=no |
AC_TRY_COMPILE([ |
#include <nettle/yarrow.h> |
], [ |
struct yarrow256_ctx ctx; |
return !sizeof(ctx.seed_file); |
], [ |
pike_cv_nettle_struct_yarrow256_ctx_seed_file=yes |
]) |
]) |
AC_MSG_RESULT($pike_cv_nettle_struct_yarrow256_ctx_seed_file); |
if test "x$pike_cv_nettle_struct_yarrow256_ctx_seed_file" = "xyes"; then |
AC_DEFINE(HAVE_STRUCT_YARROW256_CTX_SEED_FILE) |
fi |
|
AC_MSG_CHECKING([whether nettle_crypt_func is a pointer type]) |
AC_CACHE_VAL(pike_cv_nettle_crypt_func_is_pointer, [ |
pike_cv_nettle_crypt_func_is_pointer=no |
AC_TRY_COMPILE([ |
/* Note: Old Nettles had the nettle_crypt_func typedef directly |
* in <nettle/nettle-meta.h> while more modern have it in |
* <nettle/nettle-types.h>. Since <nettle/nettle-meta.h> |
* pulls in <nettle/nettle-types.h> it should be sufficient. |
*/ |
#include <nettle/nettle-meta.h> |
], [ |
nettle_crypt_func foo = (nettle_crypt_func)(void *)0; |
return (int)foo; |
], [ |
pike_cv_nettle_crypt_func_is_pointer=yes |
]) |
]) |
AC_MSG_RESULT($pike_cv_nettle_crypt_func_is_pointer); |
if test "x$pike_cv_nettle_crypt_func_is_pointer" = "xyes"; then |
AC_DEFINE(HAVE_NETTLE_CRYPT_FUNC_IS_POINTER) |
fi |
else |
if test "$ac_cv_lib_gmp_mpz_init:$ac_cv_lib_gmp___mpz_init:$ac_cv_lib_gmp___gmpz_init" = "no:no:no"; then |
# No gmp found; enable it if possible. |
PIKE_ENABLE_BUNDLE(gmp, [ |
ac_cv_lib_gmp_mpz_init |
ac_cv_lib_gmp___mpz_init |
ac_cv_lib_gmp___gmpz_init |
]) |
fi |
PIKE_ENABLE_BUNDLE(nettle, [ |
ac_cv_lib_nettle_nettle_md5_init |
ac_cv_lib_nettle_md5_init |
], [Cannot compile --with-nettle without the Nettle library. |
It is highly recommended that you install a working Nettle library on |
your system as that will add features to Pike required by many |
applications. These features include ciphers, hash algorithms and |
random generators. If you know that you do not need cryptographic |
functions, you can re-run configure with the option --without-nettle |
instead. Nettle is available at http://www.lysator.liu.se/~nisse/nettle/. |
]) |
PIKE_FEATURE_NODEP(Nettle) |
fi |
fi |
|
AC_OUTPUT(Makefile,echo FOO >stamp-h ) |
|