diff --git a/cmd/Kconfig b/cmd/Kconfig
index 7653c60027..bafba6f61c 100644
--- a/cmd/Kconfig
+++ b/cmd/Kconfig
@@ -203,6 +203,12 @@ config CMD_BOOTEFI_HELLO
 	  for testing that EFI is working at a basic level, and for bringing
 	  up EFI support on a new architecture.
 
+config CMD_BOOTMENU
+	bool "bootmenu"
+	select MENU
+	help
+	  Add an ANSI terminal boot menu command.
+
 config CMD_ELF
 	bool "bootelf, bootvx"
 	default y
diff --git a/common/Kconfig b/common/Kconfig
index 913d21a9ec..a04ee1084f 100644
--- a/common/Kconfig
+++ b/common/Kconfig
@@ -172,6 +172,12 @@ config BOOTDELAY
 
 menu "Console"
 
+config MENU
+	bool
+	help
+	  This is the library functionality to provide a text-based menu of
+	  choices for the user to make choices with.
+
 config CONSOLE_RECORD
 	bool "Console recording"
 	help
diff --git a/configs/nokia_rx51_defconfig b/configs/nokia_rx51_defconfig
index ef60fab6e7..210a9b18f4 100644
--- a/configs/nokia_rx51_defconfig
+++ b/configs/nokia_rx51_defconfig
@@ -8,6 +8,7 @@ CONFIG_SYS_CONSOLE_IS_IN_ENV=y
 CONFIG_HUSH_PARSER=y
 CONFIG_SYS_PROMPT="Nokia RX-51 # "
 CONFIG_AUTOBOOT_KEYED=y
+CONFIG_CMD_BOOTMENU=y
 # CONFIG_CMD_IMI is not set
 # CONFIG_CMD_IMLS is not set
 # CONFIG_CMD_SAVEENV is not set
diff --git a/include/config_distro_defaults.h b/include/config_distro_defaults.h
index b5efab5c3f..2e24b17b84 100644
--- a/include/config_distro_defaults.h
+++ b/include/config_distro_defaults.h
@@ -25,7 +25,6 @@
 #define CONFIG_CMDLINE_EDITING
 #define CONFIG_AUTO_COMPLETE
 #define CONFIG_SYS_LONGHELP
-#define CONFIG_MENU
 #define CONFIG_DOS_PARTITION
 #define CONFIG_EFI_PARTITION
 #define CONFIG_ISO_PARTITION
diff --git a/include/config_fallbacks.h b/include/config_fallbacks.h
index 2ad54b7bf6..380093218b 100644
--- a/include/config_fallbacks.h
+++ b/include/config_fallbacks.h
@@ -96,7 +96,6 @@
 #ifndef CONFIG_CMDLINE
 #undef CONFIG_CMDLINE_EDITING
 #undef CONFIG_SYS_LONGHELP
-#undef CONFIG_MENU
 #endif
 
 #endif	/* __CONFIG_FALLBACKS_H */
diff --git a/include/configs/hikey.h b/include/configs/hikey.h
index 39faf80580..7a03d0f30a 100644
--- a/include/configs/hikey.h
+++ b/include/configs/hikey.h
@@ -80,7 +80,6 @@
 #define CONFIG_FS_EXT4
 
 /* Command line configuration */
-#define CONFIG_MENU
 #define CONFIG_CMD_UNZIP
 #define CONFIG_CMD_ENV
 
diff --git a/include/configs/ls1043a_common.h b/include/configs/ls1043a_common.h
index 7a407aa70a..9b20c56d7b 100644
--- a/include/configs/ls1043a_common.h
+++ b/include/configs/ls1043a_common.h
@@ -145,7 +145,6 @@
 
 /* Command line configuration */
 #define CONFIG_CMD_ENV
-#define CONFIG_MENU
 #define CONFIG_CMD_PXE
 
 /*  MMC  */
diff --git a/include/configs/nokia_rx51.h b/include/configs/nokia_rx51.h
index 4d5265f540..ce74322954 100644
--- a/include/configs/nokia_rx51.h
+++ b/include/configs/nokia_rx51.h
@@ -118,7 +118,6 @@
 #define CONFIG_CMDLINE_EDITING		/* add command line history */
 #define CONFIG_AUTO_COMPLETE		/* add autocompletion support */
 
-#define CONFIG_CMD_BOOTMENU		/* ANSI terminal Boot Menu */
 #define CONFIG_CMD_CLEAR		/* ANSI terminal clear screen command */
 
 #ifdef ONENAND_SUPPORT
@@ -364,7 +363,6 @@ int rx51_kp_getc(struct stdio_dev *sdev);
 	"run attachboot;" \
 	"echo"
 
-#define CONFIG_MENU
 #define CONFIG_MENU_SHOW
 
 /*
diff --git a/include/configs/thunderx_88xx.h b/include/configs/thunderx_88xx.h
index 4387082b26..a546db2eb4 100644
--- a/include/configs/thunderx_88xx.h
+++ b/include/configs/thunderx_88xx.h
@@ -49,9 +49,6 @@
 
 #define CONFIG_BAUDRATE			115200
 
-/* Command line configuration */
-#define CONFIG_MENU
-
 /* BOOTP options */
 #define CONFIG_BOOTP_BOOTFILESIZE
 #define CONFIG_BOOTP_BOOTPATH
diff --git a/include/configs/vexpress_aemv8a.h b/include/configs/vexpress_aemv8a.h
index 48834c2fae..733f01170e 100644
--- a/include/configs/vexpress_aemv8a.h
+++ b/include/configs/vexpress_aemv8a.h
@@ -125,8 +125,6 @@
 #define CONFIG_PL011_CLOCK		24000000
 #endif
 
-/* Command line configuration */
-#define CONFIG_MENU
 /*#define CONFIG_MENU_SHOW*/
 #define CONFIG_CMD_UNZIP
 #define CONFIG_CMD_PXE
diff --git a/include/configs/xilinx_zynqmp.h b/include/configs/xilinx_zynqmp.h
index 7452e92ff8..d0b609549f 100644
--- a/include/configs/xilinx_zynqmp.h
+++ b/include/configs/xilinx_zynqmp.h
@@ -82,7 +82,6 @@
 
 /* PXE */
 #define CONFIG_CMD_PXE
-#define CONFIG_MENU
 
 #if defined(CONFIG_ZYNQ_SDHCI)
 # define CONFIG_MMC
diff --git a/scripts/config_whitelist.txt b/scripts/config_whitelist.txt
index 6a7712ce67..fb34274399 100644
--- a/scripts/config_whitelist.txt
+++ b/scripts/config_whitelist.txt
@@ -534,7 +534,6 @@ CONFIG_CMD_BLOB
 CONFIG_CMD_BMODE
 CONFIG_CMD_BMP
 CONFIG_CMD_BOOTLDR
-CONFIG_CMD_BOOTMENU
 CONFIG_CMD_BSP
 CONFIG_CMD_CBFS
 CONFIG_CMD_CHIP_CONFIG
@@ -3045,7 +3044,6 @@ CONFIG_MEM_HOLE_16M
 CONFIG_MEM_INIT_VALUE
 CONFIG_MEM_REMAP
 CONFIG_MEM_SIZE
-CONFIG_MENU
 CONFIG_MENUKEY
 CONFIG_MENUPROMPT
 CONFIG_MENU_SHOW