boot: allow bootmeth-distro without CONFIG_NET
authorJohn Keeping <john@metanate.com>
Thu, 28 Jul 2022 10:19:15 +0000 (11:19 +0100)
committerSimon Glass <sjg@chromium.org>
Wed, 10 Aug 2022 19:42:56 +0000 (13:42 -0600)
Remove the dependency on CMD_PXE from BOOTMETH_DISTRO by introducing a
new hidden kconfig symbol to control whether pxe_utils is compiled,
allowing bootstd's distro method to be compiled without needing
networking support enabled.

Signed-off-by: John Keeping <john@metanate.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
Correct build errors when CMD_BOOTM is not enabled:
Signed-off-by: Simon Glass <sjg@chromium.org>
boot/Kconfig
boot/Makefile
boot/pxe_utils.c
cmd/Kconfig
include/command.h

index eddb0c6..a294ad7 100644 (file)
@@ -294,6 +294,12 @@ endif # SPL
 
 endif # FIT
 
+config PXE_UTILS
+       bool
+       select MENU
+       help
+         Utilities for parsing PXE file formats.
+
 config BOOTSTD
        bool "Standard boot support"
        default y
@@ -345,7 +351,7 @@ config BOOTSTD_BOOTCOMMAND
 
 config BOOTMETH_DISTRO
        bool "Bootdev support for distro boot"
-       depends on CMD_PXE
+       select PXE_UTILS
        default y
        help
          Enables support for distro boot using bootdevs. This makes the
index a706742..124065a 100644 (file)
@@ -10,8 +10,7 @@ obj-$(CONFIG_CMD_BOOTM) += bootm.o bootm_os.o
 obj-$(CONFIG_CMD_BOOTZ) += bootm.o bootm_os.o
 obj-$(CONFIG_CMD_BOOTI) += bootm.o bootm_os.o
 
-obj-$(CONFIG_CMD_PXE) += pxe_utils.o
-obj-$(CONFIG_CMD_SYSBOOT) += pxe_utils.o
+obj-$(CONFIG_PXE_UTILS) += pxe_utils.o
 
 endif
 
index defbe46..a364fa8 100644 (file)
@@ -736,7 +736,8 @@ static int label_boot(struct pxe_context *ctx, struct pxe_label *label)
        kernel_addr_r = genimg_get_kernel_addr(kernel_addr);
        buf = map_sysmem(kernel_addr_r, 0);
        /* Try bootm for legacy and FIT format image */
-       if (genimg_get_format(buf) != IMAGE_FORMAT_INVALID)
+       if (genimg_get_format(buf) != IMAGE_FORMAT_INVALID &&
+            IS_ENABLED(CONFIG_CMD_BOOTM))
                do_bootm(ctx->cmdtp, 0, bootm_argc, bootm_argv);
        /* Try booting an AArch64 Linux kernel image */
        else if (IS_ENABLED(CONFIG_CMD_BOOTI))
index 3625ff2..7d19706 100644 (file)
@@ -1825,7 +1825,7 @@ config CMD_ETHSW
 
 config CMD_PXE
        bool "pxe"
-       select MENU
+       select PXE_UTILS
        help
          Boot image via network using PXE protocol
 
@@ -2007,7 +2007,7 @@ config CMD_SOUND
 
 config CMD_SYSBOOT
        bool "sysboot"
-       select MENU
+       select PXE_UTILS
        help
          Boot image via local extlinux.conf file
 
index 44c91f6..7fac7e0 100644 (file)
@@ -148,9 +148,9 @@ int cmd_get_data_size(char *arg, int default_size);
 int do_bootd(struct cmd_tbl *cmdtp, int flag, int argc,
             char *const argv[]);
 #endif
-#ifdef CONFIG_CMD_BOOTM
 int do_bootm(struct cmd_tbl *cmdtp, int flag, int argc,
             char *const argv[]);
+#ifdef CONFIG_CMD_BOOTM
 int bootm_maybe_autostart(struct cmd_tbl *cmdtp, const char *cmd);
 #else
 static inline int bootm_maybe_autostart(struct cmd_tbl *cmdtp, const char *cmd)