blob: f83301d9ad4c2828cd2ebea40b66ea57309f88e2 [file]
AC_INIT([sbsigntool], [0.9.5], [James.Bottomley@HansenPartnership.com])
AM_INIT_AUTOMAKE()
AC_PREREQ(2.60)
AC_CONFIG_HEADERS(config.h)
AC_CONFIG_SRCDIR(src/sbsign.c)
AM_PROG_AS
AC_PROG_CC
AM_PROG_CC_C_O
AC_PROG_CPP
AC_PROG_RANLIB
AC_PROG_MKDIR_P
AC_CHECK_TOOL(OBJCOPY, [objcopy])
AC_CHECK_TOOL(STRIP, [strip])
AC_CHECK_HEADER([bfd.h], [],
AC_MSG_ERROR([bfd.h not found.]
[bfd.h is usually distributed in a binutils development package.]))
if test $cross_compiling = no; then
AM_MISSING_PROG(HELP2MAN, help2man)
else
HELP2MAN=:
fi
AC_MSG_CHECKING([build system endianness])
AC_PREPROC_IFELSE(
[AC_LANG_PROGRAM([[#include <endian.h>]],
[[#if __BYTE_ORDER != __LITTLE_ENDIAN]]
[[#error]]
[[#endif]])],
endian=little
little_endian=1
big_endian=0)
AC_PREPROC_IFELSE(
[AC_LANG_PROGRAM([[#include <endian.h>]],
[[#if __BYTE_ORDER != __BIG_ENDIAN]]
[[#error]]
[[#endif]])],
endian=big
little_endian=0
big_endian=1)
if test x"$endian" != "xbig" -a x"$endian" != "xlittle"; then
AC_MSG_ERROR([Can't determine endianness; is endian.h present?])
fi
AC_MSG_RESULT($endian)
AC_DEFINE_UNQUOTED(HAVE_LITTLE_ENDIAN, $little_endian, [Little-endian system])
AC_DEFINE_UNQUOTED(HAVE_BIG_ENDIAN, $big_endian, [Big-endian system])
PKG_PROG_PKG_CONFIG()
PKG_CHECK_MODULES(libcrypto, [libcrypto >= 3.0.0],
[ac_have_openssl3=1],
[PKG_CHECK_MODULES(libcrypto, libcrypto,
[],
AC_MSG_ERROR([libcrypto (from the OpenSSL package) is required]))])
AM_CONDITIONAL(HAVE_OPENSSL3, test "$ac_have_openssl3" = "1")
##
# first one found is the one we use.
##
PREFERRED_PROVIDERS="libpkcs11 pkcs11prov"
PROVIDER=
HAVE_P11_EXPORTER=
if test "$ac_have_openssl3" = "1"; then
AC_MSG_CHECKING([pkcs11 provider])
PKG_CHECK_VAR(provider_dir, [libcrypto], [modulesdir])
if test -n "$provider_dir"; then
for p in ${PREFERRED_PROVIDERS}; do
if test -e ${provider_dir}/${p}.so; then
PROVIDER=${p}
break;
fi
done
fi
AC_MSG_RESULT([${PROVIDER}])
AC_MSG_CHECKING([pkcs11 export module for testing])
PKG_CHECK_VAR([moddir], [p11-kit-1], [p11_module_path])
if test -e "${moddir}/openssl-pkcs11-export.so"; then
AC_MSG_RESULT([found])
HAVE_P11_EXPORTER=1
else
AC_MSG_RESULT([missing, skipping pkcs11 tests])
fi
fi
PKG_CHECK_MODULES(uuid, uuid,
[],
AC_MSG_ERROR([libuuid (from the uuid package) is required]))
dnl gnu-efi headers require extra include dirs
EFI_ARCH=$(uname -m | sed 's/i.86/ia32/;s/arm.*/arm/')
AM_CONDITIONAL(TEST_BINARY_FORMAT, [ test "$EFI_ARCH" = "arm" -o "$EFI_ARCH" = "aarch64" -o "$EFI_ARCH" = riscv64 ])
##
# no consistent view of where gnu-efi should dump the efi stuff, so find it
##
for path in /lib /lib64 /usr/lib /usr/lib64 /usr/lib32 /lib/efi /lib64/efi /usr/lib/efi /usr/lib64/efi /usr/lib/gnuefi /usr/lib64/gnuefi ; do
if test -e $path/crt0-efi-$EFI_ARCH.o; then
CRTPATH=$path
fi
done
if test -z "$CRTPATH"; then
AC_MSG_ERROR([cannot find the gnu-efi crt path])
fi
EFI_CPPFLAGS="-I/usr/include/efi -I/usr/include/efi/$EFI_ARCH \
-DEFI_FUNCTION_WRAPPER"
CPPFLAGS_save="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS $EFI_CPPFLAGS"
AC_CHECK_HEADERS([efi.h], [], [], $EFI_INCLUDES)
CPPFLAGS="$CPPFLAGS_save"
AC_SUBST(EFI_CPPFLAGS, $EFI_CPPFLAGS)
AC_SUBST(EFI_ARCH, $EFI_ARCH)
AC_SUBST(CRTPATH, $CRTPATH)
AC_SUBST(PROVIDER, $PROVIDER)
AC_SUBST(HAVE_P11_EXPORTER, $HAVE_P11_EXPORTER)
AC_CONFIG_FILES([Makefile src/Makefile lib/ccan/Makefile]
[docs/Makefile tests/Makefile])
AC_OUTPUT