Zbigniew Jędrzejewski-Szmek 522730
From e2f169f816809ad4db9ebca080c73b36810f7bdc Mon Sep 17 00:00:00 2001
Zbigniew Jędrzejewski-Szmek ddd4dc
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
Zbigniew Jędrzejewski-Szmek ddd4dc
Date: Fri, 3 Mar 2023 16:08:41 +0100
Zbigniew Jędrzejewski-Szmek ddd4dc
Subject: [PATCH] meson: adjust for removal of gnu-efi compat
Zbigniew Jędrzejewski-Szmek ddd4dc
Zbigniew Jędrzejewski-Szmek ddd4dc
gnu-efi-3.0.11-13.fc39 in Fedora dropped the old include paths.
Zbigniew Jędrzejewski-Szmek 522730
Zbigniew Jędrzejewski-Szmek 522730
/usr/include/efi/efi.h uses 'include "efibind.h"', so we cannot use -isystem.
Zbigniew Jędrzejewski-Szmek ddd4dc
---
Zbigniew Jędrzejewski-Szmek 522730
 src/boot/efi/meson.build | 26 +++++++++++++++-----------
Zbigniew Jędrzejewski-Szmek 522730
 1 file changed, 15 insertions(+), 11 deletions(-)
Zbigniew Jędrzejewski-Szmek ddd4dc
Zbigniew Jędrzejewski-Szmek ddd4dc
diff --git a/src/boot/efi/meson.build b/src/boot/efi/meson.build
Zbigniew Jędrzejewski-Szmek 522730
index 6c1934d9f1..68c5dd15dc 100644
Zbigniew Jędrzejewski-Szmek ddd4dc
--- a/src/boot/efi/meson.build
Zbigniew Jędrzejewski-Szmek ddd4dc
+++ b/src/boot/efi/meson.build
Zbigniew Jędrzejewski-Szmek ddd4dc
@@ -19,7 +19,7 @@ elif efi_arch == 'x86_64' and '-m32' in get_option('efi-cflags')
Zbigniew Jędrzejewski-Szmek ddd4dc
         efi_arch = 'x86'
Zbigniew Jędrzejewski-Szmek ddd4dc
 endif
Zbigniew Jędrzejewski-Szmek ddd4dc
 efi_arch = {
Zbigniew Jędrzejewski-Szmek ddd4dc
-        # host_cc_arch: [efi_arch (see Table 3-2 in UEFI spec), gnu_efi_inc_arch]
Zbigniew Jędrzejewski-Szmek ddd4dc
+        # host_cc_arch: [efi_arch (see Table 3-2 in UEFI spec), obsolete gnu_efi_inc_arch]
Zbigniew Jędrzejewski-Szmek ddd4dc
         'x86':     ['ia32', 'ia32'],
Zbigniew Jędrzejewski-Szmek ddd4dc
         'x86_64':  ['x64', 'x86_64'],
Zbigniew Jędrzejewski-Szmek ddd4dc
         'arm':     ['arm', 'arm'],
Zbigniew Jędrzejewski-Szmek ddd4dc
@@ -28,14 +28,17 @@ efi_arch = {
Zbigniew Jędrzejewski-Szmek ddd4dc
 }.get(efi_arch, [])
Zbigniew Jędrzejewski-Szmek ddd4dc
 
Zbigniew Jędrzejewski-Szmek ddd4dc
 efi_incdir = get_option('efi-includedir')
Zbigniew Jędrzejewski-Szmek ddd4dc
-if efi_arch.length() > 0 and not cc.has_header(
Zbigniew Jędrzejewski-Szmek ddd4dc
-                '@0@/@1@/efibind.h'.format(efi_incdir, efi_arch[1]),
Zbigniew Jędrzejewski-Szmek ddd4dc
-                args: get_option('efi-cflags'))
Zbigniew Jędrzejewski-Szmek ddd4dc
-
Zbigniew Jędrzejewski-Szmek ddd4dc
-        efi_arch = []
Zbigniew Jędrzejewski-Szmek ddd4dc
-endif
Zbigniew Jędrzejewski-Szmek ddd4dc
+found = false
Zbigniew Jędrzejewski-Szmek ddd4dc
+foreach efi_arch_candidate : efi_arch
Zbigniew Jędrzejewski-Szmek ddd4dc
+        efi_archdir = efi_incdir / efi_arch_candidate
Zbigniew Jędrzejewski-Szmek ddd4dc
+        if cc.has_header(efi_archdir / 'efibind.h',
Zbigniew Jędrzejewski-Szmek ddd4dc
+                         args: get_option('efi-cflags'))
Zbigniew Jędrzejewski-Szmek ddd4dc
+                found = true
Zbigniew Jędrzejewski-Szmek ddd4dc
+                break
Zbigniew Jędrzejewski-Szmek ddd4dc
+        endif
Zbigniew Jędrzejewski-Szmek ddd4dc
+endforeach
Zbigniew Jędrzejewski-Szmek ddd4dc
 
Zbigniew Jędrzejewski-Szmek ddd4dc
-if efi_arch.length() == 0
Zbigniew Jędrzejewski-Szmek ddd4dc
+if not found
Zbigniew Jędrzejewski-Szmek ddd4dc
         if get_option('gnu-efi') == 'true'
Zbigniew Jędrzejewski-Szmek ddd4dc
                 error('gnu-efi support requested, but headers not found or efi arch is unknown')
Zbigniew Jędrzejewski-Szmek ddd4dc
         endif
Zbigniew Jędrzejewski-Szmek ddd4dc
@@ -45,7 +48,8 @@ endif
Zbigniew Jędrzejewski-Szmek ddd4dc
 
Zbigniew Jędrzejewski-Szmek ddd4dc
 if not cc.has_header_symbol('efi.h', 'EFI_IMAGE_MACHINE_X64',
Zbigniew Jędrzejewski-Szmek ddd4dc
                 args: ['-nostdlib', '-ffreestanding', '-fshort-wchar'] + get_option('efi-cflags'),
Zbigniew Jędrzejewski-Szmek ddd4dc
-                include_directories: include_directories(efi_incdir, efi_incdir / efi_arch[1]))
Zbigniew Jędrzejewski-Szmek ddd4dc
+                include_directories: include_directories(efi_incdir,
Zbigniew Jędrzejewski-Szmek ddd4dc
+                                                         efi_archdir))
Zbigniew Jędrzejewski-Szmek ddd4dc
 
Zbigniew Jędrzejewski-Szmek ddd4dc
         if get_option('gnu-efi') == 'true'
Zbigniew Jędrzejewski-Szmek ddd4dc
                 error('gnu-efi support requested, but found headers are too old (3.0.5+ required)')
Zbigniew Jędrzejewski-Szmek 522730
@@ -184,7 +188,7 @@ efi_cflags = [
Zbigniew Jędrzejewski-Szmek 522730
         '-I', meson.current_source_dir(),
Zbigniew Jędrzejewski-Szmek 522730
         '-include', efi_config_h,
Zbigniew Jędrzejewski-Szmek 522730
         '-include', version_h,
Zbigniew Jędrzejewski-Szmek 522730
-        '-isystem', efi_incdir / efi_arch[1],
Zbigniew Jędrzejewski-Szmek 522730
+        '-I', efi_archdir,
Zbigniew Jędrzejewski-Szmek 522730
         '-isystem', efi_incdir,
Zbigniew Jędrzejewski-Szmek 522730
         '-std=gnu11',
Zbigniew Jędrzejewski-Szmek 522730
         '-Wall',
Zbigniew Jędrzejewski-Szmek 522730
@@ -315,7 +319,7 @@ summary({
Zbigniew Jędrzejewski-Szmek ddd4dc
         'EFI LD' :                          efi_ld,
Zbigniew Jędrzejewski-Szmek ddd4dc
         'EFI lds' :                         efi_lds,
Zbigniew Jędrzejewski-Szmek ddd4dc
         'EFI crt0' :                        efi_crt0,
Zbigniew Jędrzejewski-Szmek ddd4dc
-        'EFI include directory' :           efi_incdir},
Zbigniew Jędrzejewski-Szmek ddd4dc
+        'EFI include directory' :           efi_archdir},
Zbigniew Jędrzejewski-Szmek ddd4dc
         section : 'Extensible Firmware Interface')
Zbigniew Jędrzejewski-Szmek ddd4dc
 
Zbigniew Jędrzejewski-Szmek ddd4dc
 if efi_conf.get('SBAT_DISTRO', '') != ''