blob: 418d69029f8da35f662bdecd76ed2ca9d9692dea [file] [log] [blame]
# af_alg.m4 serial 4
dnl Copyright 2018-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
dnl From Matteo Croce.
AC_DEFUN_ONCE([gl_AF_ALG],
[
AC_REQUIRE([gl_HEADER_SYS_SOCKET])
AC_REQUIRE([AC_C_INLINE])
dnl Check whether linux/if_alg.h has needed features.
AC_CACHE_CHECK([whether linux/if_alg.h has struct sockaddr_alg.],
[gl_cv_header_linux_if_alg_salg],
[AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM([[#include <sys/socket.h>
#include <linux/if_alg.h>
struct sockaddr_alg salg = {
.salg_family = AF_ALG,
.salg_type = "hash",
.salg_name = "sha1",
};]])],
[gl_cv_header_linux_if_alg_salg=yes],
[gl_cv_header_linux_if_alg_salg=no])])
if test "$gl_cv_header_linux_if_alg_salg" = yes; then
AC_DEFINE([HAVE_LINUX_IF_ALG_H], [1],
[Define to 1 if you have 'struct sockaddr_alg' defined.])
fi
dnl The default is to not use AF_ALG if available,
dnl as it's system dependent as to whether the kernel
dnl routines are faster than libcrypto for example.
use_af_alg=no
AC_ARG_WITH([linux-crypto],
[AS_HELP_STRING([[--with-linux-crypto]],
[use Linux kernel cryptographic API (if available)])],
[use_af_alg=$withval],
[use_af_alg=no])
dnl We cannot use it if it is not available.
if test "$gl_cv_header_linux_if_alg_salg" != yes; then
if test "$use_af_alg" != no; then
AC_MSG_WARN([Linux kernel cryptographic API not found])
fi
use_af_alg=no
fi
if test "$use_af_alg" != no; then
USE_AF_ALG=1
else
USE_AF_ALG=0
fi
AC_DEFINE_UNQUOTED([USE_LINUX_CRYPTO_API], [$USE_AF_ALG],
[Define to 1 if you want to use the Linux kernel cryptographic API.])
])