Add gbs.conf
[platform/upstream/gummiboot.git] / configure.ac
index f85fb61..38b3fb2 100644 (file)
@@ -17,8 +17,8 @@
 #  along with systemd; If not, see <http://www.gnu.org/licenses/>.
 
 AC_INIT([gummiboot],
-        [24],
-        [kay@vrfy.org],
+        [43],
+        [systemd-devel@lists.freedesktop.org],
         [gummiboot],
         [http://freedesktop.org/wiki/Software/gummiboot])
 
@@ -37,8 +37,8 @@ AC_SYS_LARGEFILE
 AC_PROG_CC
 
 dnl Don't try to use things like -std=c99 for efi compilation
-GNUEFI_CC=$CC
-AC_SUBST([GNUEFI_CC])
+EFI_CC=$CC
+AC_SUBST([EFI_CC])
 
 AC_PROG_CC_C99
 AM_PROG_CC_C_O
@@ -48,39 +48,65 @@ AC_PROG_MKDIR_P
 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-system-x86_64])
+        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 Compile EFI stuff is so tricky that it's probably better to check for the
-dnl include files that try to use AC_CHECK_HEADERS to compile any conftest.c
-AC_CHECK_FILES([/usr/include/efi/efi.h
-               /usr/include/efi/${ARCH}/efibind.h], [],
-       [AC_MSG_ERROR([*** GNU Efi headers not found])])
+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))
-GNUEFI_LIBS="-L $efiroot"
+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
-GNUEFI_LDS_DIR="$efiroot"
-if test -d "${efiroot}/gnuefi"; then
-       GNUEFI_LDS_DIR="${efiroot}/gnuefi"
-fi
-AC_SUBST([GNUEFI_LIBS])
-AC_SUBST([GNUEFI_LDS_DIR])
+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]))
@@ -94,7 +120,17 @@ fi
 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
 ])
@@ -103,14 +139,17 @@ AC_OUTPUT
 AC_MSG_RESULT([
         $PACKAGE_NAME $VERSION
 
+        prefix:                  ${prefix}
         arch:                    $ARCH
-        machine type:            $MACHINE_TYPE_NAME
+        EFI machine type:        $MACHINE_TYPE_NAME
 
-        prefix:                  ${prefix}
-        libexecdir:              ${libexecdir}
-        libdir:                  ${libdir}
+        EFI libdir:              ${EFI_LIB_DIR}
+        EFI ldsdir:              ${EFI_LDS_DIR}
+        EFI includedir:          ${EFI_INC_DIR}
+
+        blkid:                   ${have_blkid}
+        man pages:               ${have_manpages}
 
-       blkid:                   ${have_blkid}
-        efi libs:                ${GNUEFI_LIBS}
-        efi lds:                 ${GNUEFI_LDS_DIR}
+        QEMU:                    ${QEMU}
+        QEMU OVMF:               ${QEMU_BIOS}
 ])