boot: allow bootmeth-distro without CONFIG_NET
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>
diff --git a/boot/Kconfig b/boot/Kconfig
index eddb0c6..a294ad7 100644
--- a/boot/Kconfig
+++ b/boot/Kconfig
@@ -294,6 +294,12 @@
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 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
diff --git a/boot/Makefile b/boot/Makefile
index a706742..124065a 100644
--- a/boot/Makefile
+++ b/boot/Makefile
@@ -10,8 +10,7 @@
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
diff --git a/boot/pxe_utils.c b/boot/pxe_utils.c
index defbe46..a364fa8 100644
--- a/boot/pxe_utils.c
+++ b/boot/pxe_utils.c
@@ -736,7 +736,8 @@
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))
diff --git a/cmd/Kconfig b/cmd/Kconfig
index 3625ff2..7d19706 100644
--- a/cmd/Kconfig
+++ b/cmd/Kconfig
@@ -1825,7 +1825,7 @@
config CMD_PXE
bool "pxe"
- select MENU
+ select PXE_UTILS
help
Boot image via network using PXE protocol
@@ -2007,7 +2007,7 @@
config CMD_SYSBOOT
bool "sysboot"
- select MENU
+ select PXE_UTILS
help
Boot image via local extlinux.conf file
diff --git a/include/command.h b/include/command.h
index 44c91f6..7fac7e0 100644
--- a/include/command.h
+++ b/include/command.h
@@ -148,9 +148,9 @@
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)