[systemd-devel] [PATCH 2/5] configure.ac: Use AC_CHECK_HEADER to detect the efi includes

Darren Hart dvhart at linux.intel.com
Wed Aug 21 11:13:40 PDT 2013


While cross-compiling, AC_CHECK_FILE will abort the configure.

The gnu-efi sources don't use relative paths and require the user to
explicitly include -I/usr/include/efi/${ARCH}. I haven't found a way to
do this with AC_CHECK_HEADER. However, since the existing test was not
testing for usability (conftest.c compilation), we don't lose much by
just not looking for efi.h and assume it exists if we can find and use
efibind.h.

Signed-off-by: Darren Hart <dvhart at linux.intel.com>
---
 configure.ac | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/configure.ac b/configure.ac
index 6ee4520..d8dca1e 100644
--- a/configure.ac
+++ b/configure.ac
@@ -75,11 +75,12 @@ fi
 AM_CONDITIONAL(ENABLE_BIOSTEST, [test "x$enable_biostest" = "xyes"])
 
 # ------------------------------------------------------------------------------
-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"
-- 
1.8.3.1



More information about the systemd-devel mailing list