# along with systemd; If not, see <http://www.gnu.org/licenses/>.
AC_INIT([gummiboot],
- [24],
- [kay@vrfy.org],
+ [39],
+ [systemd-devel@lists.freedesktop.org],
[gummiboot],
[http://freedesktop.org/wiki/Software/gummiboot])
AC_SYS_LARGEFILE
AC_PROG_CC
+
+dnl Don't try to use things like -std=c99 for efi compilation
+EFI_CC=$CC
+AC_SUBST([EFI_CC])
+
AC_PROG_CC_C99
AM_PROG_CC_C_O
AC_PROG_GCC_TRADITIONAL
AC_PATH_PROG([XSLTPROC], [xsltproc])
dnl Define ARCH_<NAME> conditionals
-SET_ARCH(I686, i686*)
+SET_ARCH(IA32, i*86*)
SET_ARCH(X86_64, x86_64*)
SET_ARCH(IA64, ia64*)
ARCH=`echo $host | sed "s/\(-\).*$//"`
-AM_COND_IF(ARCH_I686, [
- ARCH=ia32
- MACHINE_TYPE_NAME=ia32])
+AM_COND_IF(ARCH_IA32, [
+ ARCH=ia32
+ MACHINE_TYPE_NAME=ia32])
AM_COND_IF(ARCH_X86_64, [
- MACHINE_TYPE_NAME=x64])
+ MACHINE_TYPE_NAME=x64])
AC_SUBST([ARCH])
AC_SUBST([MACHINE_TYPE_NAME])
+# QEMU and OVMF UEFI firmware
+AS_IF([test x"$cross_compiling" = "xyes"], [], [
+ AC_PATH_PROG([QEMU], [qemu-kvm])
+ AC_CHECK_FILE([/usr/share/qemu/bios-ovmf.bin], [QEMU_BIOS=/usr/share/qemu/bios-ovmf.bin])
+ AC_CHECK_FILE([/usr/share/qemu-ovmf/bios], [QEMU_BIOS=/usr/share/qemu-ovmf/bios/bios.bin])
+ AC_SUBST([QEMU_BIOS])
+])
+
+# ------------------------------------------------------------------------------
+dnl GNU EFI doesn't use relative paths: efi.h includes efibind.h which is in
+dnl ${ARCH} relative to efi.h. I can't find a way to get AC_CHECK_HEADERS to
+dnl add -I/usr/include/efi/${ARCH} to the conftest.c build. So, just test for
+dnl efibind.h as the chances of efi.h not existing if it does are very low.
+AC_CHECK_HEADER(efi/${ARCH}/efibind.h, [],
+ [AC_MSG_ERROR([*** GNU EFI header efibind.h not found])])
+
+efiroot=$(echo $(cd /usr/lib/$(gcc -print-multi-os-directory); pwd))
+EFI_LIB_DIR="$efiroot"
+AC_ARG_WITH(efi-libdir,
+ AS_HELP_STRING([--with-efi-libdir=PATH], [Path to efi lib directory]),
+ [EFI_LIB_DIR="$withval"], [EFI_LIB_DIR="$efiroot"]
+)
+AC_SUBST([EFI_LIB_DIR])
+
+dnl extra objects and linker scripts
+AC_ARG_WITH(efi-ldsdir,
+ AS_HELP_STRING([--with-efi-ldsdir=PATH], [Path to efi lds directory]),
+ [EFI_LDS_DIR="$withval"],
+ [
+ for EFI_LDS_DIR in "${efiroot}/gnuefi" "${efiroot}"; do
+ for lds in ${EFI_LDS_DIR}/elf_${ARCH}_efi.lds; do
+ test -f ${lds} && break 2
+ done
+ done
+ ]
+)
+AC_SUBST([EFI_LDS_DIR])
+
+AC_ARG_WITH(efi-includedir,
+ AS_HELP_STRING([--with-efi-includedir=PATH], [Path to efi include directory]),
+ [EFI_INC_DIR="$withval"], [EFI_INC_DIR="/usr/include"]
+)
+AC_SUBST([EFI_INC_DIR])
+
# ------------------------------------------------------------------------------
AC_ARG_ENABLE(blkid, AS_HELP_STRING([--disable-blkid], [disable blkid support]))
if test "x$enable_blkid" != "xno"; then
AM_CONDITIONAL(HAVE_BLKID, [test "$have_blkid" = "yes"])
# ------------------------------------------------------------------------------
+have_manpages=no
+AC_ARG_ENABLE(manpages, AS_HELP_STRING([--disable-manpages], [disable manpages]))
+AS_IF([test "x$enable_manpages" != xno], [
+ AS_IF([test "x$enable_manpages" = xyes -a "x$XSLTPROC" = x], [
+ AC_MSG_ERROR([*** Manpages requested but xsltproc not found])
+ ])
+ AS_IF([test "x$XSLTPROC" != x], [have_manpages=yes])
+])
+AM_CONDITIONAL(ENABLE_MANPAGES, [test "x$have_manpages" = "xyes"])
+# ------------------------------------------------------------------------------
AC_CONFIG_FILES([
Makefile
])
AC_MSG_RESULT([
$PACKAGE_NAME $VERSION
+ prefix: ${prefix}
arch: $ARCH
- machine type: $MACHINE_TYPE_NAME
+ EFI machine type: $MACHINE_TYPE_NAME
- prefix: ${prefix}
- libdir: ${libdir}
+ EFI libdir: ${EFI_LIB_DIR}
+ EFI ldsdir: ${EFI_LDS_DIR}
+ EFI includedir: ${EFI_INC_DIR}
blkid: ${have_blkid}
+ man pages: ${have_manpages}
+
+ QEMU: ${QEMU}
+ QEMU OVMF: ${QEMU_BIOS}
])