You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
79 lines
2.5 KiB
79 lines
2.5 KiB
From 2d3b47dcd5a4b356c481f89c483db3eb308fcab9 Mon Sep 17 00:00:00 2001 |
|
From: Jan Janssen <medhefgo@web.de> |
|
Date: Tue, 28 Dec 2021 13:10:39 +0100 |
|
Subject: [PATCH] boot: Build BCD parser only on arches supported by Windows |
|
|
|
(cherry picked from commit 77fcf28cb88b302453b4c991a6571cb37f10634d) |
|
|
|
Related: #2017035 |
|
--- |
|
src/boot/efi/boot.c | 2 ++ |
|
src/boot/efi/meson.build | 21 ++++++++++++--------- |
|
2 files changed, 14 insertions(+), 9 deletions(-) |
|
|
|
diff --git a/src/boot/efi/boot.c b/src/boot/efi/boot.c |
|
index 0286914b8b..83358406f2 100644 |
|
--- a/src/boot/efi/boot.c |
|
+++ b/src/boot/efi/boot.c |
|
@@ -1941,6 +1941,7 @@ static void config_entry_add_osx(Config *config) { |
|
} |
|
|
|
static void config_entry_add_windows(Config *config, EFI_HANDLE *device, EFI_FILE *root_dir) { |
|
+#if defined(__i386__) || defined(__x86_64__) || defined(__arm__) || defined(__aarch64__) |
|
_cleanup_freepool_ CHAR8 *bcd = NULL; |
|
CHAR16 *title = NULL; |
|
EFI_STATUS err; |
|
@@ -1961,6 +1962,7 @@ static void config_entry_add_windows(Config *config, EFI_HANDLE *device, EFI_FIL |
|
config_entry_add_loader_auto(config, device, root_dir, NULL, |
|
L"auto-windows", 'w', title ?: L"Windows Boot Manager", |
|
L"\\EFI\\Microsoft\\Boot\\bootmgfw.efi"); |
|
+#endif |
|
} |
|
|
|
static void config_entry_add_linux( |
|
diff --git a/src/boot/efi/meson.build b/src/boot/efi/meson.build |
|
index e628068596..6a0c8da9ba 100644 |
|
--- a/src/boot/efi/meson.build |
|
+++ b/src/boot/efi/meson.build |
|
@@ -331,7 +331,6 @@ common_sources = [ |
|
'util.c'] |
|
|
|
systemd_boot_sources = [ |
|
- 'bcd.c', |
|
'boot.c', |
|
'console.c', |
|
'drivers.c', |
|
@@ -351,6 +350,18 @@ else |
|
stub_sources += 'linux.c' |
|
endif |
|
|
|
+# BCD parser only makes sense on arches that Windows supports. |
|
+if efi_arch[1] in ['ia32', 'x86_64', 'arm', 'aarch64'] |
|
+ systemd_boot_sources += 'bcd.c' |
|
+ tests += [ |
|
+ [['src/boot/efi/test-bcd.c'], |
|
+ [], |
|
+ [libzstd], |
|
+ [], |
|
+ 'HAVE_ZSTD'], |
|
+ ] |
|
+endif |
|
+ |
|
systemd_boot_objects = [] |
|
stub_objects = [] |
|
foreach file : fundamental_source_paths + common_sources + systemd_boot_sources + stub_sources |
|
@@ -408,14 +419,6 @@ endforeach |
|
|
|
############################################################ |
|
|
|
-tests += [ |
|
- [['src/boot/efi/test-bcd.c'], |
|
- [], |
|
- [libzstd], |
|
- [], |
|
- 'HAVE_ZSTD'], |
|
-] |
|
- |
|
test_efi_disk_img = custom_target( |
|
'test-efi-disk.img', |
|
input : [efi_stubs[0][0], efi_stubs[1][1]],
|
|
|