#
# Config.in.legacy - support for backward compatibility
#
# When an existing Config.in symbol is removed, it should be added again in
# this file, and take appropriate action to approximate backward compatibility.
# This will make the transition for the user more convenient.
#
# When adding legacy symbols to this file, add them to the front. The oldest
# symbols will be removed again after about two years.
#
# The symbol should be copied as-is from the place where it was previously
# defined, but the help text should be removed or replaced with something that
# explains how to fix it.
#
# For bool options, the old symbol should select BR2_LEGACY, so that the user
# is informed at build-time about selected legacy options.
# If there is an equivalent (set of) new symbols, these should be select'ed by
# the old symbol for backwards compatibility.
# It is not possible to select an option that is part of a choice. In that
# case, the new option should use the old symbol as default. This requires a
# change outside of Config.in.legacy, and this should be clearly marked as such
# in a comment, so that removal of legacy options also include the removal of
# these external references.
#
# [Example: renaming a bool option that is part of a choice from FOO to BAR]
# original choice:
# 	choice
# 		prompt "Choose foobar"
# 	config BR2_FOO_1
#		bool "foobar 1"
# 	config BR2_FOO_2
# 		bool "foobar 2"
# 	endchoice
#
# becomes:
#   choice
#   	prompt "Choose foobar"
#   	default BR2_BAR_1 if BR2_FOO_1 # legacy
#   	default BR2_BAR_2 if BR2_FOO_2 # legacy
#   config BR2_BAR_1
#		bool "foobar 1"
#   config BR2_BAR_2
#   	bool "foobar 2"
#   endchoice
#
# and in Config.in.legacy:
#   config BR2_FOO_1
#   	bool "foobar 1 has been renamed"
#   	help
#   	  <suitable help text>
#   # Note: BR2_FOO_1 is still referenced from package/foo/Config.in
#   config BR2_FOO_2
#   	bool "foobar 2 has been renamed"
#   	help
#   	  <suitable help text>
#   # Note: BR2_FOO_2 is still referenced from package/foo/Config.in
#
# [End of example]
#
# For string options, it is not possible to directly select another symbol. In
# this case, a hidden wrap bool option has to be added, that defaults to y if
# the old string is not set at its default value. The wrap symbol should select
# BR2_LEGACY.
# If the original symbol has been renamed, the new symbol should use the value
# of the old symbol as default. Like for choice options, a comment should be
# added to flag that the symbol is still used in another file.
#
# [Example: renaming a string option from FOO to BAR]
# original symbol:
#   config BR2_FOO_STRING
#   	string "Some foo string"
#
# becomes:
#   config BR2_BAR_STRING
#   	string "Some bar string"
#   	default BR2_FOO_STRING if BR2_FOO_STRING != ""  # legacy
#
# and in Config.in.legacy:
#   config BR2_FOO_STRING
#   	string "The foo string has been renamed"
#   	help
#   	  <suitable help text>
#
#   config BR2_FOO_STRING_WRAP
#   	bool
#   	default y if BR2_FOO_STRING != ""
#   	select BR2_LEGACY
#
#   # Note: BR2_FOO_STRING is still referenced from package/foo/Config.in
#
# [End of example]

config BR2_SKIP_LEGACY
	bool
	option env="SKIP_LEGACY"

if !BR2_SKIP_LEGACY

config BR2_LEGACY
	bool
	help
	  This option is selected automatically when your old .config
	  uses an option that no longer exists in current buildroot. In
	  that case, the build will fail. Look for config options which
	  are selected in the menu below: they no longer exist and
	  should be replaced by something else.

# This comment fits exactly in a 80-column display
comment "Legacy detected: check the content of the menu below"
	depends on BR2_LEGACY

menu "Legacy config options"

if BR2_LEGACY
comment "----------------------------------------------------"
comment "Your old configuration uses legacy options that no  "
comment "longer exist in buildroot, as indicated in the menu "
comment "below. As long as these options stay selected, or in"
comment "case of string options are non-empty, the build     "
comment "will fail.                                          "
comment "*                                                   "
comment "Where possible, an automatic conversion from old to "
comment "new symbols has been performed. Before making any   "
comment "change in this legacy menu, make sure to exit the   "
comment "configuration editor a first time and save the      "
comment "configuration. Otherwise, the automatic conversion  "
comment "of symbols will be lost.                            "
comment "*                                                   "
comment "After this initial save, reopen the configuration   "
comment "editor, inspect the options selected below, read    "
comment "their help texts, and verify/update the new         "
comment "configuration in the corresponding configuration    "
comment "menus. When everything is ok, you can disable the   "
comment "legacy options in the menu below. Once you have     "
comment "disabled all legacy options, this text will         "
comment "disappear and you will be able to start the build.  "
comment "*                                                   "
comment "Note: legacy options older than 5 years have been   "
comment "removed, and configuration files that still have    "
comment "those options set, will fail to build, or run in    "
comment "unpredictable ways.                                 "
comment "----------------------------------------------------"
endif

###############################################################################

comment "Legacy options removed in 2024.05"

config BR2_KERNEL_HEADERS_6_7
	bool "kernel headers version 6.7.x are no longer supported"
	select BR2_LEGACY
	help
	  Version 6.7.x of the Linux kernel headers are no longer
	  maintained upstream and are now removed.

config BR2_TARGET_TI_K3_IMAGE_GEN
	bool "ti-k3-image-gen removed"
	select BR2_LEGACY
	help
	  ti-k3-image-gen tool  has been removed and replaced by
	  U-Boot binman tool (requires U-boot >= 2023.10).

config BR2_TARGET_UBOOT_NEEDS_TI_K3_DM
	bool "u-boot TI K3 DM option has been removed."
	select BR2_LEGACY
	help
	  The TI K3 Device Manager is already included in
	  ti-k3-boot-firmware.

config BR2_PACKAGE_FLUTTER_GALLERY
	bool "flutter-gallery removed"
	select BR2_LEGACY
	help
	  flutter-gallery has been removed due to being abandoned
	  and no longer working with flutter 3.19+. It is replaced by
	  flutter-packages, where individual sub-packages (examples)
	  must be selected for the build.

config BR2_TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS
	bool "Codescape IMG GNU Linux Toolchain 2018.09 has been removed"
	select BR2_LEGACY
	help
	  The Codescape IMG GNU Linux toolchain has been removed, use a
	  Bootlin toolchain instead.

config BR2_TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS
	bool "Codescape MTI GNU Linux Toolchain 2018.09 has been removed"
	select BR2_LEGACY
	help
	  The Codescape MTI GNU Linux toolchain has been removed, use a
	  Bootlin toolchain instead.

config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_AARCH64
	bool "CodeSourcery AArch64 2014.11 has been removed"
	select BR2_LEGACY
	help
	  The Sourcery CodeBench AArch64 toolchain has been removed,
	  use an ARM/Bootlin/Linaro toolchain instead.

config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM
	bool "Sourcery CodeBench ARM 2014.05 has been removed"
	select BR2_LEGACY
	help
	  The Sourcery CodeBench ARM toolchain has been removed, use
	  an ARM/Bootlin/Linaro toolchain instead.

config BR2_BINUTILS_VERSION_2_39_X
	bool "binutils 2.39 has been removed"
	select BR2_LEGACY
	help
	  binutils 2.39 has been removed, use a newer version.

comment "Legacy options removed in 2024.02"

config BR2_PACKAGE_MYSQL
	bool "mysql virtual package removed"
	select BR2_LEGACY
	help
	  The mysql virtual package has been removed as mariadb is the
	  only supported mysql variant. Use the mariadb package
	  instead.

config BR2_PACKAGE_ORACLE_MYSQL
	bool "oracle mysql removed"
	select BR2_LEGACY
	help
	  Oracle mysql has been removed as the package was
	  unmaintained. Consider using mariadb instead.

config BR2_PACKAGE_STRONGSWAN_SCEP
	bool "strongswan SCEP client tool removed"
	select BR2_LEGACY
	help
	  "ipsec scepclient" tool has been removed and replaced by the
	  pki subcommands "pki --scep" and "pki --scepca" which
	  implement the new SCEP RFC 8894 standard that was released in
	  September 2020 and which supports trusted "certificate
	  renewal" based on the existing client certificate.

config BR2_PACKAGE_SHADOW_UTMPX
	bool "shadow utmpx removed"
	select BR2_LEGACY
	help
	  UTMPX has been dropped by upstream.

config BR2_PACKAGE_TINYMEMBENCH
	bool "tinymembench removed"
	select BR2_LEGACY
	help
	  tinymembench has been removed due to being abandoned.

config BR2_PACKAGE_DAVINCI_BOOTCOUNT
	bool "davinci-bootcount has been renamed"
	select BR2_LEGACY
	select BR2_PACKAGE_UBOOT_BOOTCOUNT
	help
	  The davinci-bootcount package has been renamed to
	  uboot-bootcount.

config BR2_PACKAGE_PYTHON_CROSSBAR
	bool "python-crossbar removed"
	select BR2_LEGACY
	help
	  python-crossbar has been removed. The current package has
	  not received an update since Sat Oct 9 13:55:06 2021 commit:
	  33ece2446e25e20929d1c7eefa9f3244a3b79a92 and is not python
	  3.12.0 compatible.

	  Furthermore, the current version requires at least 42 new
	  packages worth of depedencies of which several require
	  patches to be python 3.12.0 compatible. As nobody has
	  stepped up to maintain the package and its ever-growing list
	  of dependencies, along with the other problems, it was time
	  to drop the package.

config BR2_PACKAGE_PYTHON_PYGAME
	bool "python-pygame removed"
	select BR2_LEGACY
	help
	  python-pygame has been removed due to being abandoned and
	  the old version no longer building with python 3.12.0.

config BR2_KERNEL_HEADERS_4_14
	bool "kernel headers version 4.14.x are no longer supported"
	select BR2_LEGACY
	help
	  Version 4.14.x of the Linux kernel headers are no longer
	  maintained upstream and are now removed.

config BR2_PACKAGE_LIBCAMERA_PIPELINE_RASPBERRYPI
	bool "libcamera pipeline 'raspberrypi' was renamed to 'rpi/vc4'"
	depends on BR2_arm || BR2_aarch64
	depends on BR2_USE_WCHAR
	select BR2_LEGACY
	select BR2_PACKAGE_LIBCAMERA_PIPELINE_RPI_VC4
	help
	  Since version 0.1.0, the pipeline option 'raspberrypi' was
	  renamed to 'rpi/vc4'.

config BR2_GDB_VERSION_11
	bool "gdb 11.x removed"
	select BR2_LEGACY
	help
	  GDB 11.x has been removed, use a newer version.

config BR2_PACKAGE_LIBMPD
	bool "libmpd package was removed"
	select BR2_LEGACY
	help
	  The libmpd package was only used by gmpc, both of which are
	  no longer maintained upstream.

config BR2_PACKAGE_GMPC
	bool "gmpc package was removed"
	select BR2_LEGACY
	help
	  The gmpc package was removed because it was unmaintained,
	  and still using the old libsoup2 library.

config BR2_PACKAGE_FLICKCURL
	bool "flickcurl package was removed"
	select BR2_LEGACY
	help
	  The flickcurl package was removed because it was
	  unmaintained upstream and causing build failures.

config BR2_PACKAGE_ONEVPL
	bool "onevpl package was renamed"
	select BR2_LEGACY
	select BR2_PACKAGE_LIBVPL

config BR2_KERNEL_HEADERS_6_5
	bool "kernel headers version 6.5.x are no longer supported"
	select BR2_LEGACY
	help
	  Version 6.5.x of the Linux kernel headers are no longer
	  maintained upstream and are now removed.

config BR2_PACKAGE_WATCHDOGD_GENERIC_POLL
	int "watchdogd generic poll has been replaced"
	default 0
	help
	  The generic script poll interval has been replaced upstream
	  with a boolean on/off.  Your configuration has been migrated.

	  Set this legacy option to 0 here to remove the warning.

# Note: BR2_PACKAGE_WATCHDOGD_*_POLL_WRAP referenced in package/watchdogd/Config.in
config BR2_PACKAGE_WATCHDOGD_GENERIC_POLL_WRAP
	bool
	default y if BR2_PACKAGE_WATCHDOGD_GENERIC_POLL != 0
	select BR2_LEGACY

config BR2_PACKAGE_WATCHDOGD_LOADAVG_POLL
	int "watchdogd loadavg poll has been replaced"
	default 0
	help
	  The CPU load average poll interval has been replaced upstream
	  with a boolean on/off.  Your configuration has been migrated.

	  Set this legacy option to 0 here to remove the warning.

# Note: BR2_PACKAGE_WATCHDOGD_*_POLL_WRAP referenced in package/watchdogd/Config.in
config BR2_PACKAGE_WATCHDOGD_LOADAVG_POLL_WRAP
	bool
	default y if BR2_PACKAGE_WATCHDOGD_LOADAVG_POLL != 0
	select BR2_LEGACY

config BR2_PACKAGE_WATCHDOGD_FILENR_POLL
	int "watchdogd filenr poll has been replaced"
	default 0
	help
	  The file descriptor leak poll has been replaced upstream with
	  a boolean on/off.  Your configuration has been migrated.

	  Set this legacy option to 0 here to remove the warning.

# Note: BR2_PACKAGE_WATCHDOGD_*_POLL_WRAP referenced in package/watchdogd/Config.in
config BR2_PACKAGE_WATCHDOGD_FILENR_POLL_WRAP
	bool
	default y if BR2_PACKAGE_WATCHDOGD_FILENR_POLL != 0
	select BR2_LEGACY

config BR2_PACKAGE_WATCHDOGD_MEMINFO_POLL
	int "watchdogd meminfo poll has been replaced"
	default 0
	help
	  The memleak detector poll interval has been replaced upstream
	  with a boolean on/off.  Your configuration has been migrated.

	  Set this legacy option to 0 here to remove the warning.

# Note: BR2_PACKAGE_WATCHDOGD_*_POLL_WRAP referenced in package/watchdogd/Config.in
config BR2_PACKAGE_WATCHDOGD_MEMINFO_POLL_WRAP
	bool
	default y if BR2_PACKAGE_WATCHDOGD_MEMINFO_POLL != 0
	select BR2_LEGACY

comment "Legacy options removed in 2023.11"

config BR2_PACKAGE_PYTHON_PYXB
	bool "python-pyxb removed"
	select BR2_LEGACY
	help
	  python-pyxb has been removed due to being abandoned and
	  distutils no longer being supported in python 3.12.0.

config BR2_PACKAGE_OPENJDK_VERSION_11
	bool "openjdk 11 has been removed"
	select BR2_LEGACY
	help
	  Version 11 of OpenJDK is no longer supported, version 17
	  should now be used as the new LTS release.

config BR2_KERNEL_HEADERS_6_4
	bool "kernel headers version 6.4.x are no longer supported"
	select BR2_LEGACY
	help
	  Version 6.4.x of the Linux kernel headers are no longer
	  maintained upstream and are now removed.

config BR2_PACKAGE_GOOGLE_MATERIAL_DESIGN_ICONS
	bool "google-material-design-icons removed"
	select BR2_LEGACY
	help
	  The google-material-design-icons package has been removed.

config BR2_GDB_VERSION_10
	bool "gdb 10.x removed"
	select BR2_LEGACY
	help
	  gdb 10.x has been removed, use a newer version.

comment "Legacy options removed in 2023.08"

config BR2_TARGET_LPC32XXCDL
	bool "lpc32xxcdl has been removed"
	select BR2_LEGACY
	help
	  lpc32xxcdl has been removed, due to licensing concerns.

config BR2_BINUTILS_VERSION_2_38_X
	bool "binutils 2.38.x has been removed"
	select BR2_LEGACY
	help
	  binutils 2.38 has been removed, use a newer version.

config BR2_GCC_VERSION_10_X
	bool "gcc 10.x support removed"
	select BR2_LEGACY
	help
	  Support for gcc version 10.x has been removed. The current
	  default version (12.x or later) has been selected instead.

config BR2_KERNEL_HEADERS_6_3
	bool "kernel headers version 6.3.x are no longer supported"
	select BR2_LEGACY
	help
	  Version 6.3.x of the Linux kernel headers are no longer
	  maintained upstream and are now removed.

config BR2_PACKAGE_TOVID
	bool "tovid removed"
	select BR2_LEGACY
	help
	  tovid was removed

config BR2_PACKAGE_LIBASPLIB
	bool "libasplib removed"
	select BR2_LEGACY
	help
	  libasplib is no longer needed.

config BR2_PACKAGE_OCF_LINUX
	bool "ocf-linux has been removed"
	select BR2_LEGACY
	help
	  ocf-linux is incompatible with newer kernels.

config BR2_BINUTILS_VERSION_2_37_X
	bool "binutils 2.37.x has been removed"
	select BR2_LEGACY
	help
	  binutils 2.37 has been removed, use a newer version.

comment "Legacy options removed in 2023.05"

config BR2_KERNEL_HEADERS_6_2
	bool "kernel headers version 6.2.x are no longer supported"
	select BR2_LEGACY
	help
	  Version 6.2.x of the Linux kernel headers are no longer
	  maintained upstream and are now removed.

config BR2_PACKAGE_ATK
	bool "atk removed"
	select BR2_LEGACY
	help
	  atk is now part of at-spi2-core.

config BR2_PACKAGE_AT_SPI2_ATK
	bool "at-spi2-atk removed"
	select BR2_LEGACY
	help
	  at-spi2-atk is now part of at-spi2-core.

config BR2_PACKAGE_OPTEE_BENCHMARK
	bool "optee-benchmark has been removed"
	select BR2_LEGACY
	help
	  optee-benchmark is no longer maintained upstream.

config BR2_PACAKGE_OPENFPGALOADER_CMSIS
	bool "openfpgaloader cmsis option name fixed"
	select BR2_LEGACY
	help
	  A typo on BR2_PACAKGE_OPENFPGALOADER_CMSIS was fixed by
	  renaming the option to BR2_PACKAGE_OPENFPGALOADER_CMSIS.

comment "Legacy options removed in 2023.02"

config BR2_PACKAGE_PUGIXML_HEADER_ONLY
	bool "pugixml header-only removed"
	select BR2_LEGACY
	help
	  The header-only version raises a build failure with gerbera.

config BR2_PACKAGE_UCCP420WLAN
	bool "uccp420wlan removed"
	select BR2_LEGACY
	help
	  The uccp420wlan package is unmaintained and doesn't build
	  with any "recent" kernel (e.g. >= 4.7).

config BR2_PACKAGE_IMX_GPU_G2D_EXAMPLES
	bool "imx-gpu-g2d examples removed"
	select BR2_LEGACY
	help
	  The examples are not provided by NXP anymore.

config BR2_KERNEL_HEADERS_6_0
	bool "kernel headers version 6.0.x are no longer supported"
	select BR2_LEGACY
	help
	  Version 6.0.x of the Linux kernel headers are no longer
	  maintained upstream and are now removed.

config BR2_KERNEL_HEADERS_4_9
	bool "kernel headers version 4.9.x are no longer supported"
	select BR2_LEGACY
	help
	  Version 4.9.x of the Linux kernel headers are no longer
	  maintained upstream and are now removed.

config BR2_PACKAGE_DOCKER_PROXY
	bool "docker-proxy removed"
	select BR2_LEGACY
	select BR2_PACKAGE_DOCKER_ENGINE
	help
	  docker-proxy has been dropped by upstream since version
	  563fe8. it has been merged into docker-engine (moby).

config BR2_PACKAGE_PYTHON_BUNCH
	bool "python-bunch removed"
	select BR2_LEGACY
	help
	  The python-bunch package is unmaintained and is replaced
	  by the python-munch package.

config BR2_TARGET_GUMMIBOOT
	bool "gummiboot removed"
	select BR2_LEGACY
	help
	  gummiboot has been deprecated since 2015, with no further
	  updates. It became integrated into the systemd project as
	  systemd-boot.

config BR2_PACKAGE_IPUTILS_NINFOD
	bool "iputils 20221126 removed ninfod"
	select BR2_LEGACY
	help
	  iputils 20221126 removed ninfod.

config BR2_PACKAGE_IPUTILS_RARPD
	bool "iputils 20221126 removed rarpd"
	select BR2_LEGACY
	help
	  iputils 20221126 removed rarpd.

config BR2_PACKAGE_IPUTILS_RDISC
	bool "iputils 20221126 removed rdisc"
	select BR2_LEGACY
	help
	  iputils 20221126 removed rdisc.

config BR2_PACKAGE_IPUTILS_RDISC_SERVER
	bool "iputils 20221126 removed rdisc"
	select BR2_LEGACY
	help
	  iputils 20221126 removed rdisc.

config BR2_PACKAGE_GST1_PLUGINS_UGLY_PLUGIN_XINGMUX
	bool "xingmux moved"
	select BR2_LEGACY
	select BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_XINGMUX
	help
	  The xingmux option has been moved to gst1-plugins-good.

config BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VIDEOSCALE
	bool "videoscale removed"
	select BR2_LEGACY
	select BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VIDEOCONVERTSCALE
	help
	  The videoscale option has been combined with videoconvert.

config BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VIDEOCONVERT
	bool "videoconvert removed"
	select BR2_LEGACY
	select BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VIDEOCONVERTSCALE
	help
	  The videoconvert option has been combined with videoscale.

config BR2_PACKAGE_IMX_GPU_VIV_OUTPUT_X11
	bool "imx-gpu-viv X11 output has been removed"
	select BR2_LEGACY
	help
	  The X11 output was dropped by NXP.

config BR2_PACKAGE_XDRIVER_XF86_VIDEO_IMX_VIV
	bool "xf86-video-imx-viv has been removed"
	select BR2_LEGACY
	help
	  The X11 output was dropped by NXP.

config BR2_PACKAGE_QEMU_CUSTOM_TARGETS
	string "the QEMU specific targets option has been removed"
	help
	  This option has been replaced by a list of individual targets
	  for the many architectures supported by QEMU.

config BR2_PACKAGE_QEMU_CUSTOM_TARGETS_WRAP
	bool
	default y if BR2_PACKAGE_QEMU_CUSTOM_TARGETS != ""
	select BR2_LEGACY

config BR2_PACKAGE_XDRIVER_XF86_INPUT_KEYBOARD
	bool "xf86-input-keyboard removed"
	select BR2_LEGACY
	help
	  The X.org keyboard input driver no longer support Linux.

config BR2_TARGET_SUN20I_D1_SPL
	bool "sun20-d1-spl removed"
	select BR2_LEGACY
	help
	  U-Boot has gained SPL support for D1, so this temporary
	  bootloader is no longer supported.

config BR2_PACKAGE_PYTHON_M2R
	bool "python-m2r removed"
	select BR2_LEGACY
	help
	  The python-m2r package is unmaintained.

config BR2_PACKAGE_MESA3D_XVMC
	bool "mesa Gallium XvMC state tracker removed"
	select BR2_LEGACY
	help
	  The Gallium XvMC state tracker was removed upstream.

config BR2_KERNEL_HEADERS_5_19
	bool "kernel headers version 5.19.x are no longer supported"
	select BR2_LEGACY
	help
	  Version 5.19.x of the Linux kernel headers are no longer
	  maintained upstream and are now removed.

config BR2_PACKAGE_XDRIVER_XF86_VIDEO_TGA
	bool "xf86-video-tga removed"
	select BR2_LEGACY
	help
	  The X.org xf86-video-tga package was removed.

config BR2_PACKAGE_XDRIVER_XF86_VIDEO_GLINT
	bool "xf86-video-glint removed"
	select BR2_LEGACY
	help
	  The X.org xf86-video-glint package no longer builds with
	  Xserver 21 and is unmaintained.

config BR2_PACKAGE_USBREDIR_SERVER
	bool "usbredirserver removed"
	select BR2_LEGACY
	help
	  usbredirserver has been dropped by upstream since version
	  0.13.0. usbredir tools (which include usbredirect binary) can
	  be used as a replacement.

comment "Legacy options removed in 2022.11"

config BR2_BINUTILS_VERSION_2_36_X
	bool "binutils 2.36.x has been removed"
	select BR2_LEGACY
	help
	  binutils 2.36 has been removed, use a newer version.

config BR2_PACKAGE_RABBITMQ_SERVER
	bool "rabbitmq-server removed"
	select BR2_LEGACY
	help
	  Package was removed because it was unmaintained and had
	  known security issues.

config BR2_PACKAGE_LIBOPENSSL_ENABLE_RC5
	bool "libopenssl rc5 was never enabled"
	select BR2_LEGACY
	help
	  The libopenssl option for rc5 never actually enabled rc5,
	  which had always been disabled in Buildroot.

config BR2_PACKAGE_LIBDCADEC
	bool "package was deprecated upstream, use ffmpeg instead"
	select BR2_LEGACY
	help
	  This decoder has been fully integrated into FFmpeg master
	  branch and further development will continue there. Using
	  FFmpeg for DTS decoding is now recommended.

config BR2_KERNEL_HEADERS_5_17
	bool "kernel headers version 5.17.x are no longer supported"
	select BR2_LEGACY
	help
	  Version 5.17.x of the Linux kernel headers are no longer
	  maintained upstream and are now removed.

config BR2_iwmmxt
	bool "ARM iwmmxt variant removed"
	select BR2_LEGACY
	help
	  Support for the ARM iwmmxt architecture variant in GCC has
	  bitroten and is no longer maintained. GCC maintainers
	  recommend to no longer use it, and suggest to use "xscale"
	  as a replacement architecture variant. See
	  https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106972

config BR2_PACKAGE_UHD_N230
	bool "uhd N230 support removed"
	select BR2_LEGACY
	help
	  uhd N230 support has been dropped by upstream since version
	  4.0.0.0.

config BR2_PACKAGE_UHD_RFNOC
	bool "uhd RFNoC support removed"
	select BR2_LEGACY
	help
	  uhd RFNoC support has been dropped by upstream since version
	  4.0.0.0.

config BR2_PACKAGE_GPSD_OLDSTYLE
	bool "gpsd oldstyle removed"
	select BR2_LEGACY
	help
	  gpsd oldstyle option has been removed by upstream in 2015.

config BR2_GDB_VERSION_9_2
	bool "gdb 9.2 removed"
	select BR2_LEGACY
	help
	  Support for GDB 9.2 has been removed. A new version has
	  automatically been selected.

comment "Legacy options removed in 2022.08"

config BR2_ECLIPSE_REGISTER
	bool "Eclipse integration removed"
	select BR2_LEGACY
	help
	  The Buildroot integration with the Eclipse IDE has been
	  removed, as the corresponding Eclipse plugin is no longer
	  maintained, and is no longer usable with current versions of
	  Eclipse.

config BR2_csky
	bool "csky architecture removed"
	select BR2_LEGACY
	help
	  The csky architecture was removed, by lack of toolchain
	  support.

config BR2_PACKAGE_MESA3D_DRI_DRIVER_I915
	bool "mesa DRI i915 driver removed"
	select BR2_LEGACY
	help
	  The DRI i915 driver was removed upstream.

config BR2_PACKAGE_MESA3D_DRI_DRIVER_I965
	bool "mesa DRI i965 driver removed"
	select BR2_LEGACY
	help
	  The DRI i965 driver was removed upstream.

config BR2_PACKAGE_MESA3D_DRI_DRIVER_NOUVEAU
	bool "mesa DRI nouveau driver removed"
	select BR2_LEGACY
	help
	  The DRI radeon nouveau was removed upstream.

config BR2_PACKAGE_MESA3D_DRI_DRIVER_RADEON
	bool "mesa DRI radeon r100 driver removed"
	select BR2_LEGACY
	help
	  The DRI radeon r100 driver was removed upstream.

config BR2_GCC_VERSION_9_X
	bool "gcc 9.x support removed"
	select BR2_LEGACY
	help
	  Support for gcc version 9.x has been removed. The current
	  default version (11.x or later) has been selected instead.

config BR2_PACKAGE_PHP_EXT_WDDX
	bool "php wddx removed"
	select BR2_LEGACY
	help
	  The WDDX extension was removed from php.

config BR2_nds32
	bool "nds32 architecture removed"
	select BR2_LEGACY
	help
	  Support for the nds32 architecture has been removed, due to
	  its support being removed from the upstream Linux kernel,
	  and its lack of maintenance in Buildroot.

config BR2_PACKAGE_RTL8723BS
	bool "rtl8723bs removed"
	select BR2_LEGACY
	help
	  Package was removed because it is not compatible with latest
	  kernels and is not maintained anymore: code has been removed
	  in 2017 as driver is available in the linux-next tree.

comment "Legacy options removed in 2022.05"

config BR2_PACKAGE_KTAP
	bool "ktap removed"
	select BR2_LEGACY
	help
	  Package was removed because it is not compatible with latest
	  kernels and is not maintained anymore (no release since 2013).

config BR2_KERNEL_HEADERS_5_16
	bool "kernel headers version 5.16.x are no longer supported"
	select BR2_LEGACY
	help
	  Version 5.16.x of the Linux kernel headers are no longer
	  maintained upstream and are now removed.

config BR2_KERNEL_HEADERS_4_4
	bool "kernel headers version 4.4.x are no longer supported"
	select BR2_LEGACY
	help
	  Version 4.4.x of the Linux kernel headers are no longer
	  maintained upstream and are now removed.

config BR2_BINUTILS_VERSION_2_32_X
	bool "binutils 2.32.x has been removed"
	select BR2_LEGACY
	help
	  binutils 2.32 has been removed, use a newer version.

config BR2_sh2a
	bool "sh2a architecture support removed"
	select BR2_LEGACY
	help
	  The SuperH 2A (SH2A) architecture was not maintained, and
	  broken, so its support was dropped.

config BR2_BINUTILS_VERSION_2_35_X
	bool "binutils 2.35.x has been removed"
	select BR2_LEGACY
	help
	  binutils 2.35 has been removed, use a newer version.

config BR2_PACKAGE_BOOST_LAYOUT_TAGGED
	bool "boost tagged layout removed"
	select BR2_LEGACY
	help
	  Boost tagged layout isn't handled by some packages (e.g. botan
	  or libcpprestsdk).

config BR2_PACKAGE_BOOST_LAYOUT_VERSIONED
	bool "boost versioned layout removed"
	select BR2_LEGACY
	help
	  Boost versioned layout isn't handled by a number of autotools
	  and cmake packages (e.g. azmq, cc-tool, i2pd).

comment "Legacy options removed in 2022.02"

config BR2_TARGET_ROOTFS_OCI_ENTRYPOINT_ARGS
	string "entrypoint argumetns has been changed as command"
	help
	  The OCI image BR2_TARGET_ROOTFS_OCI_ENTRYPOINT_ARGS option
	  has been renamed to BR2_TARGET_ROOTFS_OCI_CMD to better
	  reflect its relation to the actual 'command' of the OCI
	  image.

	  The new semantic for BR2_TARGET_ROOTFS_OCI_CMD is slightly
	  differnt in relation to how it is interpreted, so be sure to
	  review the help entry for it.

	  Due to this breaking change, the old value here could not be
	  set to the new variable.

config BR2_TARGET_ROOTFS_OCI_ENTRYPOINT_ARGS_WRAP
	bool
	default y if BR2_TARGET_ROOTFS_OCI_ENTRYPOINT_ARGS != ""
	select BR2_LEGACY

config BR2_PACKAGE_LIBCURL_LIBNSS
	bool "libcurl NSS removed"
	select BR2_LEGACY
	help
	  NSS was deprecated in libcurl 7.82.0.

config BR2_PACKAGE_WESTON_DEFAULT_FBDEV
	bool "weston fbdev removed"
	select BR2_LEGACY
	help
	  fbdev was deprecated in weston 10.0.0.

config BR2_PACKAGE_WESTON_FBDEV
	bool "weston fbdev compositor removed"
	select BR2_LEGACY
	help
	  fbdev compositor was deprecated in weston 10.0.0.

config BR2_PACKAGE_PYTHON_PYCLI
	bool "python-pycli removed"
	select BR2_LEGACY
	help
	  Package was removed because it is not compatible with python
	  3.10 and is not maintained anymore (no release since 2012).

config BR2_PACKAGE_LINUX_TOOLS_BPFTOOL
	bool "bpftool was moved"
	select BR2_LEGACY
	select BR2_PACKAGE_BPFTOOL
	help
	  The linux-tools bpftool build has been moved out
	  of the linux-tools package.

config BR2_TARGET_UBOOT_NEEDS_PYTHON2
	bool "host-python 2.7 support for U-Boot was removed"
	select BR2_LEGACY
	help
	  Option was removed together with python 2.7 support.

config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_LIBMMS
	bool "gst1-plugins-bad plugin libmms was removed"
	depends on BR2_USE_WCHAR
	depends on BR2_TOOLCHAIN_HAS_THREADS
	select BR2_LEGACY
	help
	  This plugin was removed with gst1-plugins-bad-1.20.0.

config BR2_PACKAGE_PYTHON_FUNCTOOLS32
	bool "python-functools32 removed"
	select BR2_LEGACY
	help
	  Package was removed together with python 2.7 support.

config BR2_PACKAGE_PYTHON_ENUM34
	bool "python-enum34 removed"
	select BR2_LEGACY
	help
	  Package was removed together with python 2.7 support.

config BR2_PACKAGE_PYTHON_ENUM
	bool "python-enum removed"
	select BR2_LEGACY
	help
	  Package was removed together with python 2.7 support.

config BR2_PACKAGE_PYTHON_DIALOG
	bool "python-dialog removed"
	select BR2_LEGACY
	help
	  Package was removed together with python 2.7 support.

config BR2_PACKAGE_PYTHON_CONFIGOBJ
	bool "python-configobj removed"
	select BR2_LEGACY
	help
	  Package was removed together with python 2.7 support.

config BR2_PACKAGE_PYTHON_YIELDFROM
	bool "python-yieldfrom removed"
	select BR2_LEGACY
	help
	  Package was removed together with python 2.7 support.

config BR2_PACKAGE_PYTHON_TYPING
	bool "python-typing removed"
	select BR2_LEGACY
	help
	  Package was removed together with python 2.7 support.

config BR2_PACKAGE_PYTHON_SUBPROCESS32
	bool "python-subprocess32 removed"
	select BR2_LEGACY
	help
	  Package was removed together with python 2.7 support.

config BR2_PACKAGE_PYTHON_SINGLEDISPATCH
	bool "python-singledispatch removed"
	select BR2_LEGACY
	help
	  Package was removed together with python 2.7 support.

config BR2_PACKAGE_PYTHON_PYRO
	bool "python-pyro removed"
	select BR2_LEGACY
	help
	  Package was removed together with python 2.7 support.

config BR2_PACKAGE_PYTHON_PYPCAP
	bool "python-pypcap removed"
	select BR2_LEGACY
	help
	  Package was removed together with python 2.7 support.

config BR2_PACKAGE_PYTHON_PATHLIB2
	bool "python-pathlib2 removed"
	select BR2_LEGACY
	help
	  Package was removed together with python 2.7 support.

config BR2_PACKAGE_PYTHON_PAM
	bool "python-pam removed"
	select BR2_LEGACY
	help
	  Package was removed together with python 2.7 support.

config BR2_PACKAGE_PYTHON_NFC
	bool "python-nfc removed"
	select BR2_LEGACY
	help
	  Package was removed together with python 2.7 support.

config BR2_PACKAGE_PYTHON_MAD
	bool "python-mad removed"
	select BR2_LEGACY
	help
	  Package was removed together with python 2.7 support.

config BR2_PACKAGE_PYTHON_IPADDRESS
	bool "python-ipaddress removed"
	select BR2_LEGACY
	help
	  Package was removed together with python 2.7 support.

config BR2_PACKAGE_PYTHON_IPADDR
	bool "python-ipaddr removed"
	select BR2_LEGACY
	help
	  Package was removed together with python 2.7 support.

config BR2_PACKAGE_PYTHON_ID3
	bool "python-id3 removed"
	select BR2_LEGACY
	help
	  Package was removed together with python 2.7 support.

config BR2_PACKAGE_PYTHON_FUTURES
	bool "python-futures removed"
	select BR2_LEGACY
	help
	  Package was removed together with python 2.7 support.

config BR2_PACKAGE_PYTHON_BACKPORTS_SSL_MATCH_HOSTNAME
	bool "python-backports-ssl-match-hostname removed"
	select BR2_LEGACY
	help
	  Package was removed together with python 2.7 support.

config BR2_PACKAGE_PYTHON_BACKPORTS_SHUTIL_GET_TERMINAL_SIZE
	bool "python-backports-shutil-get-terminal-size removed"
	select BR2_LEGACY
	help
	  Package was removed together with python 2.7 support.

config BR2_PACKAGE_PYTHON_BACKPORTS_ABC
	bool "python-backports-abc removed"
	select BR2_LEGACY
	help
	  Package was removed together with python 2.7 support.

config BR2_PACKAGE_PYTHON
	bool "python2.7 package removed"
	select BR2_LEGACY
	help
	  Python 2.7 is EOL since April 2020 and has been removed.

	  https://www.python.org/dev/peps/pep-0373/

config BR2_TARGET_UBOOT_ZYNQ_IMAGE
	bool "Generate image for Xilinx Zynq"
	select BR2_LEGACY
	help
	  Since 2016.1, U-Boot can natively generate the Zynq boot
	  image, and so the Xilinx-specific format and tools have been
	  removed. Should you still have an older U-Boot that needs
	  this, a python3 version of the zynq-boot-bin.py script can be
	  downloaded from the URL below and called from a post-build
	  script.

	  https://gist.githubusercontent.com/jameshilliard/e09235dfc6f96c11418a134e6ebf7890/raw/135b7480c405ae8a77a9db615e495f9a9f2d3242/zynq-boot-bin.py

config BR2_PACKAGE_RPI_BT_FIRMWARE
	bool "rpi-bt-firmware package was renamed"
	depends on BR2_arm || BR2_aarch64
	select BR2_LEGACY
	select BR2_PACKAGE_BRCMFMAC_SDIO_FIRMWARE_RPI
	select BR2_PACKAGE_BRCMFMAC_SDIO_FIRMWARE_RPI_BT
	help
	  Package rpi-bt-firmware was moved as option to
	  package brcmfmac_sdio-firmware-rpi.

config BR2_PACKAGE_RPI_WIFI_FIRMWARE
	bool "rpi-wifi-firmware package was renamed"
	depends on BR2_arm || BR2_aarch64
	select BR2_LEGACY
	select BR2_PACKAGE_BRCMFMAC_SDIO_FIRMWARE_RPI
	select BR2_PACKAGE_BRCMFMAC_SDIO_FIRMWARE_RPI_WIFI
	help
	  Package rpi-wifi-firmware was moved as option to
	  package brcmfmac_sdio-firmware-rpi.

config BR2_PACKAGE_HOST_GDB_PYTHON
	bool "GDB Python2 support removed"
	select BR2_LEGACY
	help
	  Python2 is deprecated and no longer supported.
	  Please migrate to Python3.

config BR2_PACKAGE_GSTREAMER1_MM
	bool "gstreamer1-mm package removed"
	select BR2_LEGACY
	help
	  This package has been removed as it is not actively
	  maintained anymore and does not support glibmm-2.68 API.

config BR2_KERNEL_HEADERS_5_14
	bool "kernel headers version 5.14.x are no longer supported"
	select BR2_LEGACY
	help
	  Version 5.14.x of the Linux kernel headers are no longer
	  maintained upstream and are now removed.

config BR2_PACKAGE_PYTHON_BACKPORTS_FUNCTOOLS_LRU_CACHE
	bool "python-backports-functools-lru-cache package removed"
	select BR2_LEGACY
	help
	  This package has been removed as python-setuptools-scm
	  dropped support of python 2 since version 6.0.0.

config BR2_PACKAGE_CIVETWEB_WITH_LUA
	bool "civetweb lua support option removed"
	select BR2_LEGACY
	help
	  Lua support does not depend on a version of Lua bundled
	  within the Civetweb sources anymore. Lua support is
	  automatically enabled if an Lua interpreter (lua or luajit)
	  is enabled in Buildroot.

config BR2_PACKAGE_SUNXI_MALI_MAINLINE_DRIVER
	bool "sunxi-mali-mainline-driver package was renamed"
	select BR2_LEGACY
	select BR2_PACKAGE_SUNXI_MALI_UTGARD_DRIVER
	help
	  Since the removal of the sunxi-mali-driver package, the
	  sunxi-mali-mainline-driver package that coexisted became the
	  only package to provide the Sunxi Mali driver. The "-mainline"
	  suffix being undescriptive nowadays and before adding new
	  packages bringing Mali support for other SoCs/GPU flavors, it
	  is clearer to rename it SUNXI_MALI_UTGARD_DRIVER.

config BR2_PACKAGE_SUNXI_MALI_MAINLINE
	bool "sunxi-mali-mainline package was renamed"
	select BR2_LEGACY
	select BR2_PACKAGE_SUNXI_MALI_UTGARD
	help
	  Since the removal of the sunxi-mali package, the
	  sunxi-mali-mainline package that coexisted became the only
	  package to provide Mali blobs. The "-mainline" suffix being
	  undescriptive nowadays and before adding new packages bringing
	  Mali support for other SoCs/GPU flavors, it is clearer to
	  rename it SUNXI_MALI_UTGARD.

config BR2_PACKAGE_SUNXI_MALI_MAINLINE_R6P2
	bool "sunxi-mali-mainline-r6p2 was renamed"
	select BR2_LEGACY
	help
	  The sunxi-mali-mainline package has been renamed
	  sunxi-mali-utgard, the suboptions of this package have also
	  been renamed accordingly.
# Note: BR2_PACKAGE_SUNXI_MALI_MAINLINE_R6P2 is still referenced from
# package/sunxi-mali-utgard/Config.in

config BR2_PACKAGE_SUNXI_MALI_MAINLINE_R8P1
	bool "sunxi-mali-mainline-r8p1 was renamed"
	select BR2_LEGACY
	help
	  The sunxi-mali-mainline package has been renamed
	  sunxi-mali-utgard, the suboptions of this package have also
	  been renamed accordingly.
# Note: BR2_PACKAGE_SUNXI_MALI_MAINLINE_R8P1 is still referenced from
# package/sunxi-mali-utgard/Config.in

config BR2_PACKAGE_QT5WEBKIT_EXAMPLES
	bool "qt5webkit-examples removed"
	select BR2_LEGACY
	help
	  The qt5webkit-examples package is unmaintained and has been
	  removed.

config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_RISCV64_GLIBC_BLEEDING_EDGE
	bool "Bootlin riscv64 glibc bleeding-edge toolchain removed"
	select BR2_LEGACY
	help
	  The RISC-V 64-bit LP64 Bootlin toolchains have been removed,
	  in favor of RISC-V 64-bit LP64D toolchains.

config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_RISCV64_MUSL_BLEEDING_EDGE
	bool "Bootlin riscv64 musl bleeding-edge toolchain removed"
	select BR2_LEGACY
	help
	  The RISC-V 64-bit LP64 Bootlin toolchains have been removed,
	  in favor of RISC-V 64-bit LP64D toolchains.

config BR2_PACKAGE_IPUTILS_TFTPD
	bool "iputils tftpd option removed"
	select BR2_LEGACY
	help
	  tftpd has been removed from iputils since version 20211215.

config BR2_PACKAGE_IPUTILS_TRACEROUTE6
	bool "iputils traceroute6 option removed"
	select BR2_LEGACY
	help
	  traceroute6 has been removed from iputils since version
	  20211215.

config BR2_PACKAGE_LIBMEDIAART_BACKEND_NONE
	bool "libmediaart 'none' backend removed"
	select BR2_LEGACY
	help
	  'none' backend has been removed from libmediaart since version
	  1.9.5.

config BR2_PACKAGE_MPD_UPNP
	bool "MPD UPnP configuration changed"
	select BR2_LEGACY
	help
	  From version 0.23, MPD supports npupnp in addition to pupnp to
	  provide database access to a UPnP media server. To preserve
	  the existing functionality, the pupnp option has been selected
	  in the MPD UPnP configuration.
# Note: BR2_PACKAGE_MPD_UPNP is still referenced from package/mpd/Config.in

comment "Legacy options removed in 2021.11"

config BR2_OPENJDK_VERSION_LTS
	bool "OpenJDK LTS version was renamed to OpenJDK 11"
	select BR2_LEGACY
	help
	  The LTS version option was renamed to OpenJDK 11 to make it
	  clear what LTS version is.
# Note: BR2_OPENJDK_VERSION_LTS is still referenced from
# package/openjdk/Config.in

config BR2_OPENJDK_VERSION_LATEST
	bool "OpenJDK latest version (16.x) was removed"
	select BR2_LEGACY
	help
	  OpenJDK 16.x is no longer mainted, so the option has been
	  removed. Use OpenJDK 17.x instead.
# Note: BR2_OPENJDK_VERSION_LATEST is still referenced from
# package/openjdk/Config.in

config BR2_PACKAGE_MPD_TIDAL
	bool "mpd tidal option removed"
	select BR2_LEGACY
	help
	  tidal has been removed from mpd since version 0.22.10.

config BR2_PACKAGE_MROUTED_RSRR
	bool "RSRR for RSVP removed in mrouted v4.4"
	select BR2_LEGACY
	help
	  The RSRR configure option and feature was dropped in upstream
	  mrouted as of v4.4.  This feature was marked as experimental
	  since its inception well before v4.0 and was never deployed
	  in the field outside of academia.

config BR2_BINUTILS_VERSION_CSKY
	bool "binutils csky version removed"
	select BR2_LEGACY
	help
	  Support for binutils csky version has been removed.

config BR2_GCC_VERSION_CSKY
	bool "gcc csky version removed"
	select BR2_LEGACY
	help
	  Support for gcc csky version has been removed.

config BR2_PACKAGE_CANFESTIVAL
	bool "canfestival package removed"
	select BR2_LEGACY
	help
	  This package has been removed as it is unmaintained since
	  November 2017.

config BR2_PACKAGE_NMAP_NDIFF
	bool "The ndiff utility has been removed"
	select BR2_LEGACY
	select BR2_PACKAGE_PYTHON_PYNDIFF
	help
	  The ndiff utility provided by nmap requires python2 which is
	  deprecated. The same functionality is provided by the python
	  package pyndiff.

config BR2_GDB_VERSION_8_3
	bool "gdb version 8.3.x removed"
	select BR2_LEGACY
	help
	  gdb 8.3.x has been removed, use a newer version instead.

config BR2_PACKAGE_PYTHON_MELD3
	bool "python-meld3 package removed"
	select BR2_LEGACY
	help
	  This package has been removed as it is unmaintained since
	  April 2020.

config BR2_PACKAGE_STRONGSWAN_EAP
	bool "strongswan EAP plugins now individually selectable"
	select BR2_LEGACY
	help
	  The various EAP plugins are now individually selectable.

config BR2_PACKAGE_GNURADIO_PAGER
	bool "gnuradio gr-flex support removed"
	select BR2_LEGACY
	help
	  gr-flex has been removed from gnuradio since version 3.8.0.0.

config BR2_KERNEL_HEADERS_5_11
	bool "kernel headers version 5.11.x are no longer supported"
	select BR2_LEGACY
	help
	  Version 5.11.x of the Linux kernel headers are no longer
	  maintained upstream and are now removed.

config BR2_KERNEL_HEADERS_5_12
	bool "kernel headers version 5.12.x are no longer supported"
	select BR2_LEGACY
	help
	  Version 5.12.x of the Linux kernel headers are no longer
	  maintained upstream and are now removed.

config BR2_KERNEL_HEADERS_5_13
	bool "kernel headers version 5.13.x are no longer supported"
	select BR2_LEGACY
	help
	  Version 5.13.x of the Linux kernel headers are no longer
	  maintained upstream and are now removed.

comment "Legacy options removed in 2021.08"

config BR2_TARGET_GRUB2_BUILTIN_MODULES
	string "the grub2 builtin modules has been renamed"
	help
	  This option has been split to separate the builtin modules
	  between BR2_TARGET_GRUB2_BUILTIN_MODULES_PC and
	  BR2_TARGET_GRUB2_BUILTIN_MODULES_EFI.

config BR2_TARGET_GRUB2_BUILTIN_MODULES_WRAP
	bool
	default y if BR2_TARGET_GRUB2_BUILTIN_MODULES != ""
	select BR2_LEGACY

config BR2_TARGET_GRUB2_BUILTIN_CONFIG
	string "the grub2 builtin configuration has been renamed"
	help
	  This option has been split to separate the builtin
	  configuration between BR2_TARGET_GRUB2_BUILTIN_CONFIG_PC and
	  BR2_TARGET_GRUB2_BUILTIN_CONFIG_EFI.

config BR2_TARGET_GRUB2_BUILTIN_CONFIG_WRAP
	bool
	default y if BR2_TARGET_GRUB2_BUILTIN_CONFIG != ""
	select BR2_LEGACY

config BR2_PACKAGE_LIBMCRYPT
	bool "libmcrypt package was removed"
	select BR2_LEGACY
	help
	  This package has been removed as "the last update to libmcrypt
	  was in 2007, despite years of unmerged patches. These facts
	  have led security experts to declare mcrypt abandonware and
	  discourage its use in new development" (extract from
	  https://en.wikipedia.org/wiki/Mcrypt).

config BR2_PACKAGE_MCRYPT
	bool "mcrypt package was removed"
	select BR2_LEGACY
	help
	  This package has been removed as "the last update to libmcrypt
	  was in 2007, despite years of unmerged patches. These facts
	  have led security experts to declare mcrypt abandonware and
	  discourage its use in new development" (extract from
	  https://en.wikipedia.org/wiki/Mcrypt).

config BR2_PACKAGE_PHP_EXT_MCRYPT
	bool "PHP mcrypt extension removed"
	select BR2_LEGACY
	help
	  mcrypt has been removed from php since version 7.2.0.

config BR2_BINUTILS_VERSION_2_34_X
	bool "binutils 2.34 has been removed"
	select BR2_LEGACY
	help
	  binutils 2.34 has been removed, use a newer version.

config BR2_PACKAGE_LIBSOIL
	bool "libsoil package removed"
	select BR2_LEGACY
	help
	  The libsoil package was removed. All packages needing
	  libsoil removed the dependency.

config BR2_PACKAGE_CLAPACK
	bool "cblas/clapack package removed"
	select BR2_LEGACY
	select BR2_PACKAGE_LAPACK if BR2_PACKAGE_LAPACK_ARCH_SUPPORTS && BR2_TOOLCHAIN_HAS_FORTRAN
	help
	  The clapack package was removed. LAPACK no longer generates a
	  C version. Use lapack instead. This does require a Fortran
	  compiler however.

config BR2_PACKAGE_SPIDERMONKEY
	bool "spidermonkey package removed"
	select BR2_LEGACY
	help
	  The spidermonkey package was removed. The only package that
	  depended on spidermonkey was polkit. The spidermonkey
	  dependency is replaced with duktape.

config BR2_PACKAGE_KODI_LIBVA
	bool "kodi option to add libva support removed"
	select BR2_LEGACY
	help
	  Kodi still has support for libva if the package is enabled but
	  the kodi-specific dependencies limiting libva support to non-
	  OPENGLES platforms were removed including this option.

config BR2_PACKAGE_PYTHON_COHERENCE
	bool "python-coherence package removed"
	select BR2_LEGACY
	help
	  This package has been removed as it can't be built anymore due
	  to python-twisted being now incompatible with python 2.

config BR2_PACKAGE_PHP_EXT_XMLRPC
	bool "PHP XMLRPC extension removed"
	select BR2_LEGACY
	help
	  The XMLRPC php extension was removed.
	  See: https://wiki.php.net/rfc/unbundle_xmlprc

config BR2_GCC_VERSION_8_X
	bool "gcc 8.x support removed"
	select BR2_LEGACY
	help
	  Support for gcc version 8.x has been removed. The current
	  default version (10.x or later) has been selected instead.

comment "Legacy options removed in 2021.05"

config BR2_PACKAGE_UDISKS_LVM2
	bool "udisks lvm2 support removed"
	select BR2_LEGACY
	help
	  The lvm2 support was removed because udisks < 2.7.0 still
	  depends on lvm2 application library, which was removed
	  in lvm2.

config BR2_PACKAGE_LVM2_APP_LIBRARY
	bool "lvm2 application library removed"
	select BR2_LEGACY
	help
	  The lvm2 application library was removed upstream.

config BR2_PACKAGE_LVM2_LVMETAD
	bool "lvm2 lvmetad removed"
	select BR2_LEGACY
	help
	  The lvm2 lvmetad was removed upstream.

config BR2_PACKAGE_MONKEY
	bool "monkey package removed"
	select BR2_LEGACY
	help
	  This package has been removed as it has not seen any release
	  since 2016 and because TLS is broken on master.

config BR2_PACKAGE_DOCKER_CONTAINERD
	bool "docker-containerd package was renamed to containerd"
	select BR2_LEGACY
	select BR2_PACKAGE_CONTAINERD
	help
	  The containerd project is now independent from Docker.
	  The package was renamed to containerd accordingly.

config BR2_PACKAGE_IOSTAT
	bool "iostat package removed"
	select BR2_LEGACY
	help
	  This package has been removed, use sysstat instead.

config BR2_PACKAGE_SCONESERVER_HTTP_SCONESITE_IMAGE
	bool "sconeserver http::sconesite::image removed"
	select BR2_LEGACY
	help
	  Sconeserver cannot be built with ImageMagick - it uses the
	  "transofrm" function which is removed from public API.

config BR2_PACKAGE_XSERVER_XORG_SERVER_KDRIVE_EVDEV
	bool "KDrive/TinyX evdev input driver removed"
	select BR2_LEGACY
	help
	  The evdev input driver in KDrive was removed.

config BR2_PACKAGE_XSERVER_XORG_SERVER_KDRIVE_KBD
	bool "KDrive/TinyX kbd input driver removed"
	select BR2_LEGACY
	help
	  The kbd input driver in KDrive was removed.

config BR2_PACKAGE_XSERVER_XORG_SERVER_KDRIVE_MOUSE
	bool "KDrive/TinyX mouse input driver removed"
	select BR2_LEGACY
	help
	  The mouse input driver in KDrive was removed.

config BR2_PACKAGE_MESA3D_OSMESA_CLASSIC
	bool "mesa OSMesa (classic) option removed"
	select BR2_LEGACY
	select BR2_PACKAGE_MESA3D_OSMESA_GALLIUM
	help
	  The OSMesa "classic" library option was removed upstream.
	  Only the Gallium-based implementation remains.

config BR2_PACKAGE_MESA3D_DRI_DRIVER_SWRAST
	bool "mesa DRI swrast driver removed"
	select BR2_LEGACY
	select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_SWRAST
	help
	  The DRI swrast driver was removed upstream.
	  Only the Gallium-based implementation remains.

config BR2_PACKAGE_KODI_SCREENSAVER_CRYSTALMORPH
	bool "kodi-screensaver-crystalmorph removed"
	select BR2_LEGACY
	help
	  The package received its last updates in 2017, is not part
	  of the official Kodi github repo and its build is broken
	  with Kodi 19.x, so it was removed.

comment "Legacy options removed in 2021.02"

config BR2_PACKAGE_MPD_AUDIOFILE
	bool "mpd audiofile support removed"
	select BR2_LEGACY
	help
	  The audiofile support was removed from mpd as audiofile is
	  affected by multiple CVEs and is not maintained anymore (no
	  release since 2013).

config BR2_PACKAGE_AUDIOFILE
	bool "audiofile package removed"
	select BR2_LEGACY
	help
	  The audiofile package was removed as it is affected by
	  multiple CVEs and is not maintained anymore (no release since
	  2013).

config BR2_BINUTILS_VERSION_2_33_X
	bool "binutils 2.33.x has been removed"
	select BR2_LEGACY
	help
	  binutils 2.33.x has been removed, use a newer version.

config BR2_PACKAGE_LIBUPNP18
	bool "libupnp18 package removed"
	select BR2_LEGACY
	select BR2_PACKAGE_LIBUPNP
	help
	  Version 1.8.x of libupnp (i.e. libupnp18) has been removed
	  because it will never be fixed against CallStranger a.k.a.
	  CVE-2020-12695. The libupnp package (which has been updated to
	  version 1.14.x) has been selected instead.

config BR2_PACKAGE_BOA
	bool "boa package removed"
	select BR2_LEGACY
	help
	  The boa package was removed as it is affected by multiple
	  CVEs and is not maintained anymore (no release since 2005).

config BR2_PACKAGE_LINUX_FIRMWARE_IMX_SDMA
	bool "imx sdma firmware is provided by firmware-imx"
	select BR2_LEGACY
	select BR2_PACKAGE_FREESCALE_IMX
	select BR2_PACKAGE_FIRMWARE_IMX
	help
	  linux-firmware provide the same firmware as firmware-imx.
	  We prefer using firmware-imx as the only provider.

config BR2_GDB_VERSION_8_2
	bool "gdb 8.2.x has been removed"
	select BR2_LEGACY
	help
	  gdb 8.2 support has been removed, you can use a newer
	  version such as 8.3 or more recent.

config BR2_PACKAGE_HOST_RCW
	bool "rcw package was renamed to qoriq-rcw"
	select BR2_PACKAGE_HOST_QORIQ_RCW
	select BR2_LEGACY
	help
	  The rcw package was specific to the QorIQ platform, so it has
	  been renamed to qoriq-rcw, to leave room for other *-rcw
	  packages for other platforms.

config BR2_KERNEL_HEADERS_5_9
	bool "kernel headers version 5.9.x are no longer supported"
	select BR2_LEGACY
	help
	  Version 5.9.x of the Linux kernel headers are no longer
	  maintained upstream and are now removed.

config BR2_KERNEL_HEADERS_5_8
	bool "kernel headers version 5.8.x are no longer supported"
	select BR2_LEGACY
	help
	  Version 5.8.x of the Linux kernel headers are no longer
	  maintained upstream and are now removed.

config BR2_powerpc_601
	bool "PowerPC 601 support removed"
	select BR2_LEGACY
	help
	  The support for the PowerPC 601 processors has been removed.

config BR2_PACKAGE_TI_SGX_LIBGBM
	bool "ti-sgx-libgbm support removed"
	select BR2_LEGACY
	help
	  TI has merged the ti-sgx-libgbm package with the ti-sgx-um
	  package

config BR2_PACKAGE_IPSEC_TOOLS
	bool "ipsec-tools package was removed"
	select BR2_LEGACY
	help
	  This package has been removed as it has security issues and
	  has been abandoned since 2014.

comment "Legacy options removed in 2020.11"

config BR2_PACKAGE_GPSD_FIXED_PORT_SPEED
	bool "compile with fixed serial port speed"
	select BR2_LEGACY
	help
	  Since gpsd 3.20, GPSD_FIXED_PORT_SPEED is replaced
	  by runtime option --speed.

config BR2_PACKAGE_GPSD_RECONFIGURE
	bool "allow gpsd to change device settings"
	select BR2_LEGACY
	help
	  Since gpsd 3.21, GPSD_RECONFIGURE is replaced
	  by runtime option --passive.

config BR2_PACKAGE_GPSD_CONTROLSEND
	bool "allow gpsctl/gpsmon to change device settings"
	select BR2_LEGACY
	help
	  Option removed in gpsd 3.21

config BR2_PACKAGE_OPENCV
	bool "opencv package was removed"
	select BR2_LEGACY
	help
	  This package has been removed, use opencv3 instead.

config BR2_PACKAGE_LIBCROCO
	bool "libcroco package was removed"
	select BR2_LEGACY
	help
	  This package has been removed as it is affected by several
	  security issues such as CVE-2020-12825 which will never be
	  fixed as libcroco has been archived.

config BR2_PACKAGE_BELLAGIO
	bool "bellagio package was removed"
	select BR2_LEGACY
	help
	  This package has been removed as it is not maintained anymore
	  (no release since 2011).

config BR2_PACKAGE_SYSTEMD_JOURNAL_GATEWAY
	bool "systemd-journal-gatewayd now in systemd-journal-remote"
	select BR2_LEGACY
	select BR2_PACKAGE_SYSTEMD_JOURNAL_REMOTE
	help
	  All system journal remote programs are now enabled using
	  BR2_PACKAGE_SYSTEMD_JOURNAL_REMOTE.

config BR2_TARGET_UBOOT_BOOT_SCRIPT
	bool "u-boot script generation was moved"
	select BR2_LEGACY
	select BR2_PACKAGE_HOST_UBOOT_TOOLS
	select BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT
	help
	  Migrated U-Boot script generation to uboot-tools

# Note: BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE is still referenced from
# package/uboot-tools/Config.in
config BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE
	string "The uboot script source string has been renamed"
	depends on BR2_TARGET_UBOOT_BOOT_SCRIPT
	help
	  Migrated U-Boot script generation to uboot-tools.
	  New option is named
	  BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT_SOURCE

config BR2_TARGET_UBOOT_ENVIMAGE
	bool "u-boot env generation was moved"
	select BR2_LEGACY
	select BR2_PACKAGE_HOST_UBOOT_TOOLS
	select BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE
	help
	  Migrated U-Boot env generation to uboot-tools

# Note: BR2_TARGET_UBOOT_ENVIMAGE_SOURCE is still referenced from
# package/uboot-tools/Config.in
config BR2_TARGET_UBOOT_ENVIMAGE_SOURCE
	string "The uboot env image source string has been renamed"
	depends on BR2_TARGET_UBOOT_ENVIMAGE
	help
	  Migrated U-Boot env generation to uboot-tools.
	  New option is named
	  BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE_SOURCE

# Note: BR2_TARGET_UBOOT_ENVIMAGE_SIZE is still referenced from
# package/uboot-tools/Config.in
config BR2_TARGET_UBOOT_ENVIMAGE_SIZE
	string "The uboot env image size string has been renamed"
	depends on BR2_TARGET_UBOOT_ENVIMAGE
	help
	  Migrated U-Boot env generation to uboot-tools.
	  New option is named BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE_SIZE

config BR2_TARGET_UBOOT_ENVIMAGE_REDUNDANT
	bool "u-boot env generation was moved"
	depends on BR2_TARGET_UBOOT_ENVIMAGE
	select BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE_REDUNDANT
	help
	  Migrated U-Boot env generation to uboot-tools

config BR2_PACKAGE_KISMET_CLIENT
	bool "kismet client support was removed"
	select BR2_LEGACY
	help
	  Kismet client support was removed since version 2019-04-R1.

config BR2_PACKAGE_KISMET_DRONE
	bool "kismet drone support was removed"
	select BR2_LEGACY
	help
	  Kismet drone support was removed since version 2019-04-R1.

config BR2_GCC_VERSION_7_X
	bool "gcc 7.x support removed"
	select BR2_LEGACY
	help
	  Support for gcc version 7.x has been removed. The current
	  default version (9.x or later) has been selected instead.

config BR2_PACKAGE_GST1_VALIDATE
	bool "gst1-validate was moved to gst1-devtools"
	select BR2_PACKAGE_GST1_DEVTOOLS
	select BR2_LEGACY
	help
	  This package has been removed, use gst1-devtools instead.

config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_YADIF
	bool "gst1-plugins-bad yadif plugin was removed"
	select BR2_LEGACY
	select BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_DEINTERLACE
	help
	  This plugin was removed with gst1-plugins-bad-1.18.0, the
	  same functionality has moved to gst1-plugins-good
	  deinterlace plugin (method=yadif).

config BR2_PACKAGE_GQVIEW
	bool "gqview package was removed"
	select BR2_LEGACY
	help
	  This package has been removed as it is not maintained anymore
	  (no release since 2006).

config BR2_PACKAGE_WESTON_IMX
	bool "weston-imx package was removed"
	select BR2_LEGACY
	help
	  This package has been removed, use weston instead.

config BR2_KERNEL_HEADERS_5_7
	bool "kernel headers version 5.7.x are no longer supported"
	select BR2_LEGACY
	help
	  Version 5.7.x of the Linux kernel headers are no longer
	  maintained upstream and are now removed.

config BR2_PACKAGE_TINYHTTPD
	bool "tinyhttpd package removed"
	select BR2_LEGACY
	help
	  The tinyhttpd package was removed as it is affected by
	  CVE-2002-1819 and is not maintained anymore (no release since
	  2001).

config BR2_PACKAGE_XSERVER_XORG_SERVER_AIGLX
	bool "X.org Enable AIGLX Extension"
	select BR2_LEGACY
	help
	  AIGLX Extension was removed in X.org X server version 1.19.0

config BR2_PACKAGE_AMD_CATALYST
	bool "amd-catalyst"
	select BR2_LEGACY
	help
	  Current X.org server is incompatible with this driver.

config BR2_PACKAGE_NVIDIA_TEGRA23
	bool "nvidia-tegra23 package removed"
	select BR2_LEGACY
	help
	  Current X.org server is incompatible with this driver.

config BR2_GDB_VERSION_8_1
	bool "gdb 8.1.x has been removed"
	select BR2_LEGACY
	help
	  The 8.1.x version of gdb has been removed. Use a newer
	  version instead.

comment "Legacy options removed in 2020.08"

config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_AMD64
	bool "toolchain-external-codesourcery-amd64 removed"
	select BR2_LEGACY
	help
	  The CodeSourcery toolchain for AMD64, in version 2016.11 was
	  dropped, due to it using a too old gcc 6.2.0 compiler which
	  caused issues compiling a number of recent packages
	  (e.g. Boost). CodeSourcery has stopped making newer versions
	  of this toolchain publicly available, so it was not possible
	  to update it.

config BR2_KERNEL_HEADERS_5_6
	bool "kernel headers version 5.6.x are no longer supported"
	select BR2_LEGACY
	help
	  Version 5.6.x of the Linux kernel headers are no longer
	  maintained upstream and are now removed.

config BR2_KERNEL_HEADERS_5_5
	bool "kernel headers version 5.5.x are no longer supported"
	select BR2_LEGACY
	help
	  Version 5.5.x of the Linux kernel headers are no longer
	  maintained upstream and are now removed.

config BR2_BINUTILS_VERSION_2_31_X
	bool "binutils version 2.31.1 support removed"
	select BR2_LEGACY
	help
	  Support for binutils version 2.31.1 has been removed. The
	  current default version (2.33.1 or later) has been selected
	  instead.

config BR2_PACKAGE_KODI_PERIPHERAL_STEAMCONTROLLER
	bool "kodi-peripheral-steamcontroller package was removed"
	select BR2_LEGACY
	help
	  This package is broken.

comment "Legacy options removed in 2020.05"

config BR2_PACKAGE_WIRINGPI
	bool "wiringpi package removed"
	select BR2_LEGACY
	help
	  The author of wiringpi has deprecated the package, and
	  completely removed the git tree that was serving the
	  sources, with this message:
	  Please look for alternatives for wiringPi

config BR2_PACKAGE_PYTHON_PYCRYPTO
	bool "python-pycrypto package removed"
	select BR2_LEGACY
	help
	  This package has been removed, use python-pycryptodomex
	  instead.

config BR2_PACKAGE_MTDEV2TUIO
	bool "mtdev2tuio package removed"
	select BR2_LEGACY
	help
	  The mtdev2tuio package was removed as it breaks the builds
	  every now and then and is not maintained upstream.

config BR2_PACKAGE_EZXML
	bool "ezxml package removed"
	select BR2_LEGACY
	help
	  The ezXML package was removed as it is affected by several
	  CVEs and is not maintained anymore (no release since 2006).

config BR2_PACKAGE_COLLECTD_LVM
	bool "lvm support in collectd was removed"
	select BR2_LEGACY
	help
	  collectd removed LVM plugin, liblvm2app has been deprecated

config BR2_PACKAGE_PYTHON_PYASN
	bool "duplicate python-pyasn1 package removed"
	select BR2_LEGACY
	select BR2_PACKAGE_PYTHON_PYASN1
	help
	  This package was a duplicate of python-pyasn1.

config BR2_PACKAGE_PYTHON_PYASN_MODULES
	bool "duplicate python-pyasn1-modules package removed"
	select BR2_LEGACY
	select BR2_PACKAGE_PYTHON_PYASN1_MODULES
	help
	  This package was a duplicate of python-pyasn1-modules.

config BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_10K_QCA6174
	bool "duplicate QCA6174 firmware symbol removed"
	select BR2_LEGACY
	select BR2_PACKAGE_LINUX_FIRMWARE_QUALCOMM_6174
	help
	  This config symbol duplicates existing symbol for QCA6174
	  firmware.

config BR2_PACKAGE_QT5CANVAS3D
	bool "qt5canvas3d was removed"
	select BR2_LEGACY
	help
	  This Qt5 module was removed by the upstream Qt project since
	  Qt 5.13, so the corresponding Buildroot package was removed
	  as well.

config BR2_PACKAGE_KODI_LIBTHEORA
	bool "libtheora support in Kodi was removed"
	select BR2_LEGACY
	help
	  Kodi does not need libtheora

config BR2_PACKAGE_CEGUI06
	bool "BR2_PACKAGE_CEGUI06 was renamed"
	select BR2_PACKAGE_CEGUI
	select BR2_LEGACY
	help
	  The BR2_PACKAGE_CEGUI06 config symbol was renamed to
	  BR2_PACKAGE_CEGUI.

config BR2_GCC_VERSION_5_X
	bool "gcc 5.x support removed"
	select BR2_LEGACY
	help
	  Support for gcc version 5.x has been removed. The current
	  default version (8.x or later) has been selected instead.

comment "Legacy options removed in 2020.02"

config BR2_PACKAGE_JAMVM
	bool "jamvm removed"
	select BR2_LEGACY
	help
	  JamVM has not had a release since 2014 and is unmaintained.

config BR2_PACKAGE_CLASSPATH
	bool "classpath removed"
	select BR2_LEGACY
	help
	  GNU Classpath package was removed. The last upstream
	  release was in 2012 and there hasn't been a commit
	  since 2016.

config BR2_PACKAGE_QT5_VERSION_5_6
	bool "qt 5.6 support removed"
	select BR2_LEGACY
	help
	  Support for Qt 5.6 is EOL and has been removed. The current
	  version (5.12 or later) has been selected instead.

config BR2_PACKAGE_CURL
	bool "BR2_PACKAGE_CURL was renamed"
	select BR2_PACKAGE_LIBCURL_CURL
	select BR2_LEGACY
	help
	  The BR2_PACKAGE_CURL config symbol was renamed to
	  BR2_PACKAGE_LIBCURL_CURL.

config BR2_PACKAGE_GSTREAMER
	bool "gstreamer-0.10 removed"
	select BR2_LEGACY
	help
	  Gstreamer-0.10 package was removed. It has been deprecated
	  upstream since 2012, and is missing a lot of features and
	  fixes compared to gstreamer-1.x.

config BR2_PACKAGE_NVIDIA_TEGRA23_BINARIES_GSTREAMER_PLUGINS
	bool "nvidia-tegra23 binaries gstreamer 0.10.x support removed"
	select BR2_LEGACY
	help
	  Gstreamer 0.10.x is no longer available in Buildroot, so
	  neither is the support in nvidia-tegra23 binaries.

config BR2_PACKAGE_NVIDIA_TEGRA23_BINARIES_NV_SAMPLE_APPS
	bool "nvidia-tegra23 binaries sample apps removed"
	select BR2_LEGACY
	help
	  Gstreamer 0.10.x is no longer available in Buildroot, so
	  neither is the support in nvidia-tegra23 binaries.

config BR2_PACKAGE_FREERDP_GSTREAMER
	bool "freerdp gstreamer 0.10.x support removed"
	select BR2_LEGACY
	help
	  Gstreamer 0.10.x is no longer available in Buildroot, so
	  neither is the support in freerdp.

config BR2_PACKAGE_OPENCV3_WITH_GSTREAMER
	bool "opencv3 gstreamer 0.10.x support removed"
	select BR2_LEGACY
	help
	  Gstreamer 0.10.x is no longer available in Buildroot, so
	  neither is the support in opencv3.

config BR2_PACKAGE_OPENCV_WITH_GSTREAMER
	bool "opencv gstreamer 0.10.x support removed"
	select BR2_LEGACY
	help
	  Gstreamer 0.10.x is no longer available in Buildroot, so
	  neither is the support in opencv.

config BR2_PACKAGE_LIBPLAYER
	bool "libplayer package was removed"
	select BR2_LEGACY
	help
	  The libplayer package was removed. The latest release is
	  from 2010 and none of the backends are available in
	  Buildroot any more.

config BR2_GCC_VERSION_OR1K
	bool "gcc 5.x fork for or1k has been removed"
	select BR2_LEGACY
	help
	  Support for gcc 5.x for or1k has been removed. The current
	  default version (9.x or later) has been selected instead.

config BR2_PACKAGE_BLUEZ_UTILS
	bool "bluez-utils was removed"
	select BR2_LEGACY
	select BR2_PACKAGE_BLUEZ5_UTILS if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4 \
		&& BR2_TOOLCHAIN_HAS_SYNC_4
	help
	  The bluez-utils (BlueZ 4.x) package was removed as it is
	  deprecated since a long time. As an alternative, the
	  bluez5-utils (BlueZ 5.x) has been automatically selected in
	  your configuration.

config BR2_PACKAGE_GADGETFS_TEST
	bool "gadgetfs-test was removed"
	select BR2_LEGACY
	help
	  The gadgetfs-test package was removed. Gadgetfs has been
	  deprecated in favour of functionfs. Consider using
	  gadget-tool (gt) instead.

config BR2_PACKAGE_FIS
	bool "fis was removed"
	select BR2_LEGACY
	help
	  The fis package was removed.

config BR2_PACKAGE_REFPOLICY_POLICY_VERSION
	string "refpolicy policy version"
	help
	  The refpolicy policy version option has been moved to the
	  libsepol package.

config BR2_PACKAGE_REFPOLICY_POLICY_VERSION_WRAP
	bool
	default y if BR2_PACKAGE_REFPOLICY_POLICY_VERSION != ""
	select BR2_LEGACY

config BR2_PACKAGE_CELT051
	bool "celt051 package was removed"
	select BR2_LEGACY
	select BR2_PACKAGE_OPUS
	help
	  The celt051 package was removed as it is now obsolete since
	  the CELT codec has been merged into the IETF Opus codec. As
	  a result, the opus package has been automatically selected
	  in your configuration.

config BR2_PACKAGE_WIREGUARD
	bool "wireguard package renamed"
	depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10
	select BR2_LEGACY
	select BR2_PACKAGE_WIREGUARD_LINUX_COMPAT if BR2_LINUX_KERNEL
	select BR2_PACKAGE_WIREGUARD_TOOLS
	help
	  The wireguard package has been renamed to wireguard-tools
	  for the userspace tooling and wireguard-linux-compat for the
	  kernel side for legacy (<5.6) kernels to match upstream.

config BR2_PACKAGE_PERL_NET_PING
	bool "perl-net-ping was removed"
	select BR2_LEGACY
	help
	  Net::Ping is a Perl core module (ie. bundled with perl).

config BR2_PACKAGE_PERL_MIME_BASE64
	bool "perl-mime-base64 was removed"
	select BR2_LEGACY
	help
	  MIME::Base64 is a Perl core module (ie. bundled with perl).

config BR2_PACKAGE_PERL_DIGEST_MD5
	bool "perl-digest-md5 was removed"
	select BR2_LEGACY
	help
	  Digest::MD5 is a Perl core module (ie. bundled with perl).

config BR2_PACKAGE_ERLANG_P1_ICONV
	bool "erlang-p1-iconv has been removed"
	select BR2_LEGACY
	help
	  The erlang-p1-iconv package was no longer used by ejabberd,
	  and was no longer maintained upstream, so it was removed.

config BR2_KERNEL_HEADERS_5_3
	bool "kernel headers version 5.3.x are no longer supported"
	select BR2_LEGACY
	help
	  Version 5.3.x of the Linux kernel headers are no longer
	  maintained upstream and are now removed.

config BR2_PACKAGE_PYTHON_SCAPY3K
	bool "python-scapy3k is replaced by python-scapy"
	select BR2_LEGACY
	select BR2_PACKAGE_PYTHON_SCAPY
	help
	  python-scapy3k has been deprecated, since python-scapy has
	  gained Python 3 support. Use BR2_PACKAGE_PYTHON_SCAPY
	  instead.

config BR2_BINUTILS_VERSION_2_30_X
	bool "binutils version 2.30 support removed"
	select BR2_LEGACY
	help
	  Support for binutils version 2.30 has been removed. The
	  current default version (2.31 or later) has been selected
	  instead.

config BR2_PACKAGE_RPI_USERLAND_START_VCFILED
	bool "rpi-userland start vcfiled was removed"
	select BR2_LEGACY
	help
	  The vcfiled support was removed upstream.

config BR2_PACKAGE_TI_SGX_KM_AM335X
	bool "ti-sgx-km AM335X option removed"
	select BR2_LEGACY
	select BR2_PACKAGE_TI_SGX_KM
	help
	  Starting from buildroot release 2020.02, the buildroot package
	  only supports the target am335x.

config BR2_PACKAGE_TI_SGX_KM_AM437X
	bool "ti-sgx-km AM437X option removed"
	select BR2_LEGACY
	help
	  Starting from buildroot release 2020.02, the buildroot package
	  only supports the target am335x.

config BR2_PACKAGE_TI_SGX_KM_AM4430
	bool "ti-sgx-km AM4430 option removed"
	select BR2_LEGACY
	help
	  Starting from buildroot release 2020.02, the buildroot package
	  only supports the target am335x.

config BR2_PACKAGE_TI_SGX_KM_AM5430
	bool "ti-sgx-km AM5430 option removed"
	select BR2_LEGACY
	help
	  Starting from buildroot release 2020.02, the buildroot package
	  only supports the target am335x.

comment "Legacy options removed in 2019.11"

config BR2_PACKAGE_OPENVMTOOLS_PROCPS
	bool "openvmtools' procps support was removed"
	select BR2_LEGACY
	help
	  Upstream stopped supporting this option a while ago.

config BR2_PACKAGE_ALLJOYN
	bool "alljoyn was removed"
	select BR2_LEGACY
	help
	  The alljoyn framework is dead

config BR2_PACKAGE_ALLJOYN_BASE
	bool "alljoyn-base was removed"
	select BR2_LEGACY
	help
	  The alljoyn framework is dead

config BR2_PACKAGE_ALLJOYN_BASE_CONTROLPANEL
	bool "alljoyn-base control panel was removed"
	select BR2_LEGACY
	help
	  The alljoyn framework is dead

config BR2_PACKAGE_ALLJOYN_BASE_NOTIFICATION
	bool "alljoyn-base notification was removed"
	select BR2_LEGACY
	help
	  The alljoyn framework is dead

config BR2_PACKAGE_ALLJOYN_BASE_ONBOARDING
	bool "alljoyn-base onboarding was removed"
	select BR2_LEGACY
	help
	  The alljoyn framework is dead

config BR2_PACKAGE_ALLJOYN_TCL_BASE
	bool "alljoyn-tcl-base was removed"
	select BR2_LEGACY
	help
	  The alljoyn framework is dead

config BR2_PACKAGE_ALLJOYN_TCL
	bool "alljoyn-tcl was removed"
	select BR2_LEGACY
	help
	  The alljoyn framework is dead

config BR2_TOOLCHAIN_EXTRA_EXTERNAL_LIBS
	string "toolchain-external extra libs option has been renamed"
	help
	  The option BR2_TOOLCHAIN_EXTRA_EXTERNAL_LIBS has
	  been renamed to BR2_TOOLCHAIN_EXTRA_LIBS.

config BR2_TOOLCHAIN_EXTRA_EXTERNAL_LIBS_WRAP
	bool
	default y if BR2_TOOLCHAIN_EXTRA_EXTERNAL_LIBS != ""
	select BR2_LEGACY

config BR2_PACKAGE_PYTHON_PYSNMP_APPS
	bool "python-pysnmp-apps was removed"
	select BR2_LEGACY
	select BR2_PACKAGE_SNMPCLITOOLS
	help
	  Following upstream changes, the python-pysnmp-apps package
	  has been removed, and snmpclitools should be used as a
	  replacement.

config BR2_KERNEL_HEADERS_5_2
	bool "kernel headers version 5.2.x are no longer supported"
	select BR2_LEGACY
	help
	  Version 5.2.x of the Linux kernel headers are no longer
	  maintained upstream and are now removed.

config BR2_TARGET_RISCV_PK
	bool "riscv-pk was removed"
	select BR2_LEGACY
	help
	  The RISC-V Proxy Kernel (pk) and Berkley Boot Loader (BBL)
	  have been replaced with OpenSBI.

config BR2_PACKAGE_SQLITE_STAT3
	bool "sqlite stat3 support was removed"
	select BR2_LEGACY
	help
	  Upstream removed the support for stat3.

config BR2_KERNEL_HEADERS_5_1
	bool "kernel headers version 5.1.x are no longer supported"
	select BR2_LEGACY
	help
	  Version 5.1.x of the Linux kernel headers are no longer
	  maintained upstream and are now removed.

config BR2_PACKAGE_DEVMEM2
	bool "devmem2 package was removed"
	select BR2_LEGACY
	help
	  Use the the Busybox devmem utility, instead, which provides
	  the same functionality.

config BR2_PACKAGE_USTR
	bool "ustr package removed"
	select BR2_LEGACY
	help
	  The 'ustr' package was only used by SELinux libsemanage, but
	  since SELinux 2.7, ustr is no longer used. Therefore, we
	  removed this package from Buildroot.

config BR2_PACKAGE_KODI_SCREENSAVER_PLANESTATE
	bool "kodi-screensaver-planestate package was removed"
	select BR2_LEGACY
	help
	  This package is incompatible with Kodi 18.x.

config BR2_PACKAGE_KODI_VISUALISATION_WAVEFORHUE
	bool "kodi-visualisation-waveforhue package was removed"
	select BR2_LEGACY
	help
	  This package is incompatible with Kodi 18.x.

config BR2_PACKAGE_KODI_AUDIODECODER_OPUS
	bool "kodi-audiodecoder-opus package was removed"
	select BR2_LEGACY
	help
	  This package is incompatible with Kodi 18.x.

config BR2_PACKAGE_MESA3D_OSMESA
	bool "mesa OSMesa option renamed"
	select BR2_PACKAGE_MESA3D_OSMESA_CLASSIC if BR2_PACKAGE_MESA3D_DRI_DRIVER_SWRAST
	select BR2_LEGACY
	help
	  The option was renamed in order to match the naming used
	  by the meson buildsystem.

config BR2_PACKAGE_HOSTAPD_DRIVER_RTW
	bool "hostapd rtl871xdrv driver removed"
	select BR2_LEGACY
	help
	  Since the update of hostapd to 2.9, the patch provided for
	  the rtl871xdrv no longer works, although it
	  applies. Moreover, AP support for Realtek chips is broken
	  anyway in kernels > 4.9. Therefore, this option has been
	  removed.

config BR2_PACKAGE_WPA_SUPPLICANT_DBUS_NEW
	bool "new dbus support option in wpa_supplicant was renamed"
	select BR2_PACKAGE_WPA_SUPPLICANT_DBUS if BR2_TOOLCHAIN_HAS_THREADS
	select BR2_LEGACY
	help
	  The new dbus support option was renamed.

config BR2_PACKAGE_WPA_SUPPLICANT_DBUS_OLD
	bool "old dbus support in wpa_supplicant was removed"
	select BR2_LEGACY
	help
	  The old dbus support was removed.

comment "Legacy options removed in 2019.08"

config BR2_TARGET_TS4800_MBRBOOT
	bool "ts4800-mbrboot package was removed"
	select BR2_LEGACY
	help
	  The defconfig for the TS4800 platform has been removed, so
	  the ts4800-mbrboot package, containing the boot code for
	  this specific platform has been removed as welL.

config BR2_PACKAGE_LIBAMCODEC
	bool "liamcodec package was removed"
	select BR2_LEGACY
	help
	  Support for odroidc2 based systems was removed, making the
	  libamcodec package useless.

config BR2_PACKAGE_ODROID_SCRIPTS
	bool "odroid-scripts package was removed"
	select BR2_LEGACY
	help
	  Support for odroidc2 based systems was removed, making the
	  odroid-scripts package useless.

config BR2_PACKAGE_ODROID_MALI
	bool "odroid-mali package was removed"
	select BR2_LEGACY
	help
	  Support for odroidc2 based systems was removed, making the
	  odroid-mali package useless.

config BR2_PACKAGE_KODI_PLATFORM_AML
	bool "Kodi AMLogic support was removed"
	select BR2_LEGACY
	help
	  Support for AMLogic was removed due to the removal of the
	  odroidc2 defconfig.

config BR2_GCC_VERSION_6_X
	bool "gcc 6.x support removed"
	select BR2_LEGACY
	help
	  Support for gcc version 6.x has been removed. The current
	  default version (8.x or later) has been selected instead.

config BR2_GCC_VERSION_4_9_X
	bool "gcc 4.9.x support removed"
	select BR2_LEGACY
	help
	  Support for gcc version 4.9.x has been removed. The current
	  default version (8.x or later) has been selected instead.

config BR2_GDB_VERSION_7_12
	bool "gdb 7.12.x has been removed"
	select BR2_LEGACY
	help
	  The 7.12.x version of gdb has been removed. Use a newer
	  version instead.

config BR2_PACKAGE_XAPP_MKFONTDIR
	bool "mkfontdir is now included in xapp_mkfontscale"
	select BR2_PACKAGE_XAPP_MKFONTSCALE
	select BR2_LEGACY
	help
	  xapp_mkfontscale now includes the mkfontdir script previously
	  distributed separately for compatibility with older X11
	  versions.

config BR2_GDB_VERSION_8_0
	bool "gdb 8.0.x has been removed"
	select BR2_LEGACY
	help
	  The 8.0.x version of gdb has been removed. Use a newer
	  version instead.

config BR2_KERNEL_HEADERS_4_20
	bool "kernel headers version 4.20.x are no longer supported"
	select BR2_LEGACY
	help
	  Version 4.20.x of the Linux kernel headers are no longer
	  maintained upstream and are now removed.

config BR2_KERNEL_HEADERS_5_0
	bool "kernel headers version 5.0.x are no longer supported"
	select BR2_LEGACY
	help
	  Version 5.0.x of the Linux kernel headers are no longer
	  maintained upstream and are now removed.

comment "Legacy options removed in 2019.05"

config BR2_CSKY_DSP
	bool "C-SKY DSP support removed"
	select BR2_LEGACY
	help
	  C-SKY DSP instruction support for ck810 / ck807 was removed,
	  as it was no longer supported in C-SKY gcc. Perhaps the VDSP
	  instructions should be used instead, using the BR2_CSKY_VDSP
	  option.

config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_COMPOSITOR
	bool "compositor moved to gst1-plugins-base"
	select BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_COMPOSITOR
	select BR2_LEGACY
	help
	  The gst1-plugins-bad compositor plugin has moved
	  to gst1-plugins-base.

config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_IQA
	bool "gst-plugins-bad IQA option was removed"
	select BR2_LEGACY
	help
	  The gst1-plugins-bad IQA option was removed.

config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_OPENCV
	bool "gst-plugins-bad opencv option was removed"
	select BR2_LEGACY
	help
	  The gst1-plugins-bad opencv option was removed because
	  buildroot does not have the opencv_contrib package which
	  is required for the bgsegm module which gst1-plugins-bad
	  now requires along with opencv3.

config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_STEREO
	bool "stereo was merged into audiofx in gst1-plugins-good"
	select BR2_LEGACY
	select BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_AUDIOFX
	help
	  The gst1-plugins-bad stereo plugin has merged with the
	  gst1-plugins-base audiofx plugin.

config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_VCD
	bool "gst-plugins-bad vcd plugin was removed."
	select BR2_LEGACY
	help
	  The gst1-plugins-bad vcd plugin was removed.

config BR2_PACKAGE_LUNIT
	bool "lunit package removed"
	select BR2_LEGACY
	select BR2_PACKAGE_LUA_LUNITX
	help
	  The lunit package was removed in favor of its fork lunitx,
	  which supports all versions of Lua.

config BR2_PACKAGE_FFMPEG_FFSERVER
	bool "ffmpeg ffserver removed"
	select BR2_LEGACY
	help
	  On July 10th, 2016, ffserver program has been dropped.

config BR2_PACKAGE_LIBUMP
	bool "libump package removed"
	select BR2_LEGACY
	help
	  The libump package was removed, it was only used as a
	  dependency of sunxi-mali, which itself was removed.

config BR2_PACKAGE_SUNXI_MALI
	bool "sunxi-mali package removed"
	select BR2_LEGACY
	select BR2_PACKAGE_SUNXI_MALI_UTGARD
	help
	  The sunxi-mali package was removed, as the
	  sunxi-mali-mainline package replaces it for mainline
	  kernels on Allwinner platforms.

config BR2_BINUTILS_VERSION_2_29_X
	bool "binutils version 2.29 support removed"
	select BR2_LEGACY
	help
	  Support for binutils version 2.29 has been removed. The
	  current default version (2.31 or later) has been selected
	  instead.

config BR2_BINUTILS_VERSION_2_28_X
	bool "binutils version 2.28 support removed"
	select BR2_LEGACY
	help
	  Support for binutils version 2.28 has been removed. The
	  current default version (2.31 or later) has been selected
	  instead.

config BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_APEXSINK
	bool "gst-plugins-bad apexsink option removed"
	select BR2_LEGACY
	help
	  The gst-plugins-bad apexsink option was removed.

comment "Legacy options removed in 2019.02"

config BR2_PACKAGE_QT
	bool "qt package removed"
	select BR2_LEGACY
	help
	  The qt package was removed.

config BR2_PACKAGE_QTUIO
	bool "qtuio package removed"
	select BR2_LEGACY
	help
	  The qtuio package was removed.

config BR2_PACKAGE_PINENTRY_QT4
	bool "pinentry-qt4 option removed"
	select BR2_LEGACY
	help
	  The pinentry-qt4 option was removed.

config BR2_PACKAGE_POPPLER_QT
	bool "poppler qt option removed"
	select BR2_LEGACY
	help
	  The poppler qt option was removed.

config BR2_PACKAGE_OPENCV3_WITH_QT
	bool "opencv3 qt backend option removed"
	select BR2_LEGACY
	help
	  The opencv3 qt backend option was removed.

config BR2_PACKAGE_OPENCV_WITH_QT
	bool "opencv qt backend option removed"
	select BR2_LEGACY
	help
	  The opencv qt backend option was removed.

config BR2_PACKAGE_AMD_CATALYST_CCCLE
	bool "catalyst control center option removed"
	select BR2_LEGACY
	help
	  The AMD Catalyst Control Center option was removed.

config BR2_PACKAGE_SDL_QTOPIA
	bool "sdl qtopia video driver option removed"
	select BR2_LEGACY
	help
	  The SDL QTopia video driver option was removed.

config BR2_PACKAGE_PYTHON_PYQT
	bool "python-pyqt package removed"
	select BR2_LEGACY
	help
	  The python-pyqt package was removed. Consider python-pyqt5
	  instead.

config BR2_PACKAGE_LUACRYPTO
	bool "luacrypto package removed"
	select BR2_LEGACY
	help
	  The luacrypto package was removed. Consider luaossl instead.

config BR2_PACKAGE_TN5250
	bool "tn5250 package removed"
	select BR2_LEGACY
	help
	  The tn5250 package was removed.

config BR2_PACKAGE_BOOST_SIGNALS
	bool "Boost signals removed"
	select BR2_LEGACY
	help
	  Its removal was announced in boost 1.68 and its deprecation
	  was announced in 1.54. Users are encouraged to use Signals2
	  instead.

config BR2_PACKAGE_FFTW_PRECISION_SINGLE
	bool "single"
	select BR2_LEGACY
	select BR2_PACKAGE_FFTW_SINGLE
	help
	  This option has been removed in favor of
	  BR2_PACKAGE_FFTW_SINGLE.

config BR2_PACKAGE_FFTW_PRECISION_DOUBLE
	bool "double"
	select BR2_LEGACY
	select BR2_PACKAGE_FFTW_DOUBLE
	help
	  This option has been removed in favor of
	  BR2_PACKAGE_FFTW_DOUBLE.

config BR2_PACKAGE_FFTW_PRECISION_LONG_DOUBLE
	bool "long double"
	depends on !(BR2_TOOLCHAIN_BUILDROOT_UCLIBC && \
		(BR2_arm || BR2_mips || BR2_mipsel))
	select BR2_LEGACY
	select BR2_PACKAGE_FFTW_LONG_DOUBLE
	help
	  This option has been removed in favor of
	  BR2_PACKAGE_FFTW_LONG_DOUBLE.

config BR2_PACKAGE_FFTW_PRECISION_QUAD
	bool "quad"
	depends on (BR2_i386 || BR2_x86_64) && BR2_USE_WCHAR
	select BR2_LEGACY
	select BR2_PACKAGE_FFTW_QUAD
	help
	  This option has been removed in favor of
	  BR2_PACKAGE_FFTW_QUAD.

config BR2_PACKAGE_LUA_5_2
	bool "Lua 5.2.x version removed"
	select BR2_LEGACY
	help
	  The Lua 5.2.x version was removed.
# Note: BR2_PACKAGE_LUA_5_2 is still referenced from package/lua/Config.in

config BR2_TARGET_GENERIC_PASSWD_MD5
	bool "target passwd md5 format support has been removed"
	select BR2_LEGACY
	help
	  The default has been moved to SHA256 and all C libraries
	  now support that method by default

comment "Legacy options removed in 2018.11"

config BR2_TARGET_XLOADER
	bool "xloader has been removed"
	select BR2_LEGACY
	help
	  The package has been removed as u-boot SPL provides
	  similar functionality

config BR2_PACKAGE_TIDSP_BINARIES
	bool "tidsp-binaries package removed"
	select BR2_LEGACY
	help
	  The tidsp-binaries package was removed.

config BR2_PACKAGE_DSP_TOOLS
	bool "dsp-tools package removed"
	select BR2_LEGACY
	help
	  The dsp-tools package was removed.

config BR2_PACKAGE_GST_DSP
	bool "gst-dsp package removed"
	select BR2_LEGACY
	help
	  The gst-dsp package was removed.

config BR2_PACKAGE_BOOTUTILS
	bool "bootutils package removed"
	select BR2_LEGACY
	help
	  The bootutils package was removed.

config BR2_PACKAGE_EXPEDITE
	bool "expedite package has been removed"
	select BR2_LEGACY
	help
	  expedite is not actively maintained anymore.
	  https://sourceforge.net/p/enlightenment/mailman/message/36428571

config BR2_PACKAGE_MESA3D_OPENGL_TEXTURE_FLOAT
	bool "mesa3d opengl texture float option removed"
	select BR2_LEGACY
	help
	  mesa3d now unconditionally enables floating-point textures,
	  as the corresponding patent has expired.

config BR2_KERNEL_HEADERS_4_10
	bool "kernel headers version 4.10.x are no longer supported"
	select BR2_LEGACY
	help
	  Version 4.10.x of the Linux kernel headers are no longer
	  maintained upstream and are now removed.

config BR2_KERNEL_HEADERS_4_11
	bool "kernel headers version 4.11.x are no longer supported"
	select BR2_LEGACY
	help
	  Version 4.11.x of the Linux kernel headers are no longer
	  maintained upstream and are now removed.

config BR2_KERNEL_HEADERS_4_12
	bool "kernel headers version 4.12.x are no longer supported"
	select BR2_LEGACY
	help
	  Version 4.12.x of the Linux kernel headers are no longer
	  maintained upstream and are now removed.

config BR2_KERNEL_HEADERS_4_13
	bool "kernel headers version 4.13.x are no longer supported"
	select BR2_LEGACY
	help
	  Version 4.13.x of the Linux kernel headers are no longer
	  maintained upstream and are now removed.

config BR2_KERNEL_HEADERS_4_15
	bool "kernel headers version 4.15.x are no longer supported"
	select BR2_LEGACY
	help
	  Version 4.15.x of the Linux kernel headers are no longer
	  maintained upstream and are now removed.

config BR2_KERNEL_HEADERS_4_17
	bool "kernel headers version 4.17.x are no longer supported"
	select BR2_LEGACY
	help
	  Version 4.17.x of the Linux kernel headers are no longer
	  maintained upstream and are now removed.

config BR2_PACKAGE_LIBNFTNL_XML
	bool "libnftl no longer supports XML output"
	select BR2_LEGACY
	help
	  libnftnl removed integration with libmxml.

config BR2_KERNEL_HEADERS_3_2
	bool "kernel headers version 3.2.x are no longer supported"
	select BR2_LEGACY
	help
	  Version 3.2.x of the Linux kernel headers are no longer
	  maintained upstream and are now removed.

config BR2_KERNEL_HEADERS_4_1
	bool "kernel headers version 4.1.x are no longer supported"
	select BR2_LEGACY
	help
	  Version 4.1.x of the Linux kernel headers are no longer
	  maintained upstream and are now removed.

config BR2_KERNEL_HEADERS_4_16
	bool "kernel headers version 4.16.x are no longer supported"
	select BR2_LEGACY
	help
	  Version 4.16.x of the Linux kernel headers are no longer
	  maintained upstream and are now removed.

config BR2_KERNEL_HEADERS_4_18
	bool "kernel headers version 4.18.x are no longer supported"
	select BR2_LEGACY
	help
	  Version 4.18.x of the Linux kernel headers are no longer
	  maintained upstream and are now removed.

###############################################################################
comment "Legacy options removed in 2018.08"

config BR2_PACKAGE_DOCKER_ENGINE_STATIC_CLIENT
	bool "docker-engine static client option renamed"
	select BR2_LEGACY
	select BR2_PACKAGE_DOCKER_CLI_STATIC
	help
	  BR2_PACKAGE_DOCKER_ENGINE_STATIC_CLIENT has been renamed to
	  BR2_PACKAGE_DOCKER_CLI_STATIC, following the package split of
	  docker-engine and docker-cli.

config BR2_PACKAGE_XPROTO_APPLEWMPROTO
	bool "xproto-applewmproto package replaced by xorgproto"
	select BR2_LEGACY
	select BR2_PACKAGE_XORGPROTO
	help
	  The xproto-applewmproto package has been replaced by the
	  xorgproto package, which combines all xproto_* packages.

config BR2_PACKAGE_XPROTO_BIGREQSPROTO
	bool "xproto-bigreqsproto package replaced by xorgproto"
	select BR2_LEGACY
	select BR2_PACKAGE_XORGPROTO
	help
	  The xproto-bigreqsproto package has been replaced by the
	  xorgproto package, which combines all xproto_* packages.

config BR2_PACKAGE_XPROTO_COMPOSITEPROTO
	bool "xproto-compositeproto package replaced by xorgproto"
	select BR2_LEGACY
	select BR2_PACKAGE_XORGPROTO
	help
	  The xproto-compositeproto package has been replaced by the
	  xorgproto package, which combines all xproto_* packages.

config BR2_PACKAGE_XPROTO_DAMAGEPROTO
	bool "xproto-dameproto package replaced by xorgproto"
	select BR2_LEGACY
	select BR2_PACKAGE_XORGPROTO
	help
	  The xproto-dameproto package has been replaced by the
	  xorgproto package, which combines all xproto_* packages.

config BR2_PACKAGE_XPROTO_DMXPROTO
	bool "xproto-dmxproto package replaced by xorgproto"
	select BR2_LEGACY
	select BR2_PACKAGE_XORGPROTO
	help
	  The xproto-dmxproto package has been replaced by the
	  xorgproto package, which combines all xproto_* packages.

config BR2_PACKAGE_XPROTO_DRI2PROTO
	bool "xproto-dri2proto package replaced by xorgproto"
	select BR2_LEGACY
	select BR2_PACKAGE_XORGPROTO
	help
	  The xproto-dri2proto package has been replaced by the
	  xorgproto package, which combines all xproto_* packages.

config BR2_PACKAGE_XPROTO_DRI3PROTO
	bool "xproto-dri3proto package replaced by xorgproto"
	select BR2_LEGACY
	select BR2_PACKAGE_XORGPROTO
	help
	  The xproto-dri3proto package has been replaced by the
	  xorgproto package, which combines all xproto_* packages.

config BR2_PACKAGE_XPROTO_FIXESPROTO
	bool "xproto-fixesproto package replaced by xorgproto"
	select BR2_LEGACY
	select BR2_PACKAGE_XORGPROTO
	help
	  The xproto-fixesproto package has been replaced by the
	  xorgproto package, which combines all xproto_* packages.

config BR2_PACKAGE_XPROTO_FONTCACHEPROTO
	bool "xproto-fontcacheproto package replaced by xorgproto"
	select BR2_LEGACY
	select BR2_PACKAGE_XORGPROTO
	help
	  The xproto-fontcacheproto package has been replaced by the
	  xorgproto package, which combines all xproto_* packages.

config BR2_PACKAGE_XPROTO_FONTSPROTO
	bool "xproto-fontsproto package replaced by xorgproto"
	select BR2_LEGACY
	select BR2_PACKAGE_XORGPROTO
	help
	  The xproto-fontsproto package has been replaced by the
	  xorgproto package, which combines all xproto_* packages.

config BR2_PACKAGE_XPROTO_GLPROTO
	bool "xproto-glproto package replaced by xorgproto"
	select BR2_LEGACY
	select BR2_PACKAGE_XORGPROTO
	help
	  The xproto-glproto package has been replaced by the
	  xorgproto package, which combines all xproto_* packages.

config BR2_PACKAGE_XPROTO_INPUTPROTO
	bool "xproto-inputproto package replaced by xorgproto"
	select BR2_LEGACY
	select BR2_PACKAGE_XORGPROTO
	help
	  The xproto-inputproto package has been replaced by the
	  xorgproto package, which combines all xproto_* packages.

config BR2_PACKAGE_XPROTO_KBPROTO
	bool "xproto-kbproto package replaced by xorgproto"
	select BR2_LEGACY
	select BR2_PACKAGE_XORGPROTO
	help
	  The xproto-kbproto package has been replaced by the
	  xorgproto package, which combines all xproto_* packages.

config BR2_PACKAGE_XPROTO_PRESENTPROTO
	bool "xproto-presentproto package replaced by xorgproto"
	select BR2_LEGACY
	select BR2_PACKAGE_XORGPROTO
	help
	  The xproto-presentproto package has been replaced by the
	  xorgproto package, which combines all xproto_* packages.

config BR2_PACKAGE_XPROTO_RANDRPROTO
	bool "xproto-randrproto package replaced by xorgproto"
	select BR2_LEGACY
	select BR2_PACKAGE_XORGPROTO
	help
	  The xproto-randrproto package has been replaced by the
	  xorgproto package, which combines all xproto_* packages.

config BR2_PACKAGE_XPROTO_RECORDPROTO
	bool "xproto-recordproto package replaced by xorgproto"
	select BR2_LEGACY
	select BR2_PACKAGE_XORGPROTO
	help
	  The xproto-recordproto package has been replaced by the
	  xorgproto package, which combines all xproto_* packages.

config BR2_PACKAGE_XPROTO_RENDERPROTO
	bool "xproto-renderproto package replaced by xorgproto"
	select BR2_LEGACY
	select BR2_PACKAGE_XORGPROTO
	help
	  The xproto-renderproto package has been replaced by the
	  xorgproto package, which combines all xproto_* packages.

config BR2_PACKAGE_XPROTO_RESOURCEPROTO
	bool "xproto-resourceproto package replaced by xorgproto"
	select BR2_LEGACY
	select BR2_PACKAGE_XORGPROTO
	help
	  The xproto-resourceproto package has been replaced by the
	  xorgproto package, which combines all xproto_* packages.

config BR2_PACKAGE_XPROTO_SCRNSAVERPROTO
	bool "xproto-scrnsaverprot package replaced by xorgproto"
	select BR2_LEGACY
	select BR2_PACKAGE_XORGPROTO
	help
	  The xproto-scrnsaverprot package has been replaced by the
	  xorgproto package, which combines all xproto_* packages.

config BR2_PACKAGE_XPROTO_VIDEOPROTO
	bool "xproto-videoproto package replaced by xorgproto"
	select BR2_LEGACY
	select BR2_PACKAGE_XORGPROTO
	help
	  The xproto-videoproto package has been replaced by the
	  xorgproto package, which combines all xproto_* packages.

config BR2_PACKAGE_XPROTO_WINDOWSWMPROTO
	bool "xproto-windowswmproto package replaced by xorgproto"
	select BR2_LEGACY
	select BR2_PACKAGE_XORGPROTO
	help
	  The xproto-windowswmproto package has been replaced by the
	  xorgproto package, which combines all xproto_* packages.

config BR2_PACKAGE_XPROTO_XCMISCPROTO
	bool "xproto-xcmiscproto package replaced by xorgproto"
	select BR2_LEGACY
	select BR2_PACKAGE_XORGPROTO
	help
	  The xproto-xcmiscproto package has been replaced by the
	  xorgproto package, which combines all xproto_* packages.

config BR2_PACKAGE_XPROTO_XEXTPROTO
	bool "xproto-xextproto package replaced by xorgproto"
	select BR2_LEGACY
	select BR2_PACKAGE_XORGPROTO
	help
	  The xproto-xextproto package has been replaced by the
	  xorgproto package, which combines all xproto_* packages.

config BR2_PACKAGE_XPROTO_XF86BIGFONTPROTO
	bool "xproto-xf86bigfontproto package replaced by xorgproto"
	select BR2_LEGACY
	select BR2_PACKAGE_XORGPROTO
	help
	  The xproto-xf86bigfontproto package has been replaced by the
	  xorgproto package, which combines all xproto_* packages.

config BR2_PACKAGE_XPROTO_XF86DGAPROTO
	bool "xproto-xf86dgaproto package replaced by xorgproto"
	select BR2_LEGACY
	select BR2_PACKAGE_XORGPROTO
	help
	  The xproto-xf86dgaproto package has been replaced by the
	  xorgproto package, which combines all xproto_* packages.

config BR2_PACKAGE_XPROTO_XF86DRIPROTO
	bool "xproto-xf86driproto package replaced by xorgproto"
	select BR2_LEGACY
	select BR2_PACKAGE_XORGPROTO
	help
	  The xproto-xf86driproto package has been replaced by the
	  xorgproto package, which combines all xproto_* packages.

config BR2_PACKAGE_XPROTO_XF86VIDMODEPROTO
	bool "xproto-xf86vidmodeproto package replaced by xorgproto"
	select BR2_LEGACY
	select BR2_PACKAGE_XORGPROTO
	help
	  The xproto-xf86vidmodeproto package has been replaced by the
	  xorgproto package, which combines all xproto_* packages.

config BR2_PACKAGE_XPROTO_XINERAMAPROTO
	bool "xproto-xineramaproto package replaced by xorgproto"
	select BR2_LEGACY
	select BR2_PACKAGE_XORGPROTO
	help
	  The xproto-xineramaproto package has been replaced by the
	  xorgproto package, which combines all xproto_* packages.

config BR2_PACKAGE_XPROTO_XPROTO
	bool "xproto-xproto package replaced by xorgproto"
	select BR2_LEGACY
	select BR2_PACKAGE_XORGPROTO
	help
	  The xproto-xproto package has been replaced by the
	  xorgproto package, which combines all xproto_* packages.

config BR2_PACKAGE_XPROTO_XPROXYMANAGEMENTPROTOCOL
	bool "xproto-xproxymanagementprotocol package replaced by xorgproto"
	select BR2_LEGACY
	select BR2_PACKAGE_XORGPROTO
	help
	  The xproto-xproxymanagementprotocol package has been
	  replaced by the xorgproto package, which combines all
	  xproto_* packages.

config BR2_PACKAGE_GST1_PLUGINS_BAD_LIB_OPENGL_OPENGL
	bool "gst1-plugins-bad opengl option moved to gst1-plugins-base"
	select BR2_LEGACY
	select BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_OPENGL
	help
	  The opengl option has been moved from gst1-plugins-bad to
	  gst1-plugins-base.

config BR2_PACKAGE_GST1_PLUGINS_BAD_LIB_OPENGL_GLES2
	bool "gst1-plugins-bad gles2 option moved to gst1-plugins-base"
	select BR2_LEGACY
	select BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_GLES2
	help
	  The gles2 option has been moved from gst1-plugins-bad to
	  gst1-plugins-base.

config BR2_PACKAGE_GST1_PLUGINS_BAD_LIB_OPENGL_GLX
	bool "gst1-plugins-bad glx option moved to gst1-plugins-base"
	select BR2_LEGACY
	select BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_GLX
	help
	  The glx option has been moved from gst1-plugins-bad to
	  gst1-plugins-base.

config BR2_PACKAGE_GST1_PLUGINS_BAD_LIB_OPENGL_EGL
	bool "gst1-plugins-bad egl option moved to gst1-plugins-base"
	select BR2_LEGACY
	select BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_EGL
	help
	  The egl option has been moved from gst1-plugins-bad to
	  gst1-plugins-base.

config BR2_PACKAGE_GST1_PLUGINS_BAD_LIB_OPENGL_X11
	bool "gst1-plugins-bad x11 option moved to gst1-plugins-base"
	select BR2_LEGACY
	select BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_X11
	help
	  The x11 option has been moved from gst1-plugins-bad to
	  gst1-plugins-base.

config BR2_PACKAGE_GST1_PLUGINS_BAD_LIB_OPENGL_WAYLAND
	bool "gst1-plugins-bad wayland option moved to gst1-plugins-base"
	select BR2_LEGACY
	select BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_WAYLAND
	help
	  The wayland option has been moved from gst1-plugins-bad to
	  gst1-plugins-base.

config BR2_PACKAGE_GST1_PLUGINS_BAD_LIB_OPENGL_DISPMANX
	bool "gst1-plugins-bad dispmanx option moved to gst1-plugins-base"
	select BR2_LEGACY
	select BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_DISPMANX
	help
	  The dispmanx option has been moved from gst1-plugins-mad to
	  gst1-plugins-base.

config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_AUDIOMIXER
	bool "gst1-plugins-bad audiomixer option moved to gst1-plugins-base"
	select BR2_LEGACY
	select BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_AUDIOMIXER
	help
	  The audiomixer option has been moved from gst1-plugins-bad to
	  gst1-plugins-base.

config BR2_PACKAGE_GST1_PLUGINS_UGLY_PLUGIN_LAME
	bool "gst1-plugins-ugly lame option moved to gst1-plugins-good"
	select BR2_LEGACY
	select BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_LAME
	help
	  The lame option has been moved from gst1-plugins-ugly to
	  gst1-plugins-good.

config BR2_PACKAGE_GST1_PLUGINS_UGLY_PLUGIN_MPG123
	bool "gst1-plugins-ugly mpg123 option moved to gst1-plugins-good"
	select BR2_LEGACY
	select BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_MPG123
	help
	  The mpg123 option has been moved from gst1-plugins-ugly to
	  gst1-plugins-good.

config BR2_GDB_VERSION_7_11
	bool "gdb 7.11 has been removed"
	select BR2_LEGACY
	help
	  The 7.11 version of gdb has been removed. Use a newer version
	  instead.

config BR2_GDB_VERSION_7_10
	bool "gdb 7.10 has been removed"
	select BR2_LEGACY
	help
	  The 7.10 version of gdb has been removed. Use a newer version
	  instead.

###############################################################################
comment "Legacy options removed in 2018.05"

config BR2_PACKAGE_MEDIAART_BACKEND_NONE
	bool "libmediaart none backend option renamed"
	select BR2_LEGACY
	help
	  For consistency reasons, the option
	  BR2_PACKAGE_MEDIAART_BACKEND_NONE has been renamed to
	  BR2_PACKAGE_LIBMEDIAART_BACKEND_NONE

config BR2_PACKAGE_MEDIAART_BACKEND_GDK_PIXBUF
	bool "libmediaart gdk-pixbuf backend option renamed"
	select BR2_LEGACY
	help
	  For consistency reasons, the option
	  BR2_PACKAGE_MEDIAART_BACKEND_GDK_PIXBUF has been renamed to
	  BR2_PACKAGE_LIBMEDIAART_BACKEND_GDK_PIXBUF

config BR2_PACKAGE_MEDIAART_BACKEND_QT
	bool "libmediaart qt backend option renamed"
	select BR2_LEGACY
	help
	  For consistency reasons, the option
	  BR2_PACKAGE_MEDIAART_BACKEND_QT has been renamed to
	  BR2_PACKAGE_LIBMEDIAART_BACKEND_QT

config BR2_PACKAGE_TI_SGX_AM335X
	bool "ti-sgx-km AM335X option removed"
	select BR2_LEGACY
	select BR2_PACKAGE_TI_SGX_KM
	help
	  Starting from buildroot release 2020.02, the buildroot package
	  only supports the target am335x.

config BR2_PACKAGE_TI_SGX_AM437X
	bool "ti-sgx-km AM437X option removed"
	select BR2_LEGACY
	help
	  Starting from buildroot release 2020.02, the buildroot package
	  only supports the target am335x.

config BR2_PACKAGE_TI_SGX_AM4430
	bool "ti-sgx-km AM4430 option removed"
	select BR2_LEGACY
	help
	  Starting from buildroot release 2020.02, the buildroot package
	  only supports the target am335x.

config BR2_PACKAGE_TI_SGX_AM5430
	bool "ti-sgx-km AM5430 option removed"
	select BR2_LEGACY
	help
	  Starting from buildroot release 2020.02, the buildroot package
	  only supports the target am335x.

config BR2_PACKAGE_JANUS_AUDIO_BRIDGE
	bool "janus-gateway audio-bridge option renamed"
	select BR2_LEGACY
	select BR2_PACKAGE_JANUS_GATEWAY_AUDIO_BRIDGE
	help
	  For consistency reasons, the janus-gateway option
	  BR2_PACKAGE_JANUS_AUDIO_BRIDGE has been renamed to
	  BR2_PACKAGE_JANUS_GATEWAY_AUDIO_BRIDGE.

config BR2_PACKAGE_JANUS_ECHO_TEST
	bool "janus-gateway echo-test option renamed"
	select BR2_LEGACY
	select BR2_PACKAGE_JANUS_GATEWAY_ECHO_TEST
	help
	  For consistency reasons, the janus-gateway option
	  BR2_PACKAGE_JANUS_ECHO_TEST has been renamed to
	  BR2_PACKAGE_JANUS_GATEWAY_ECHO_TEST.

config BR2_PACKAGE_JANUS_RECORDPLAY
	bool "janus-gateway recordplay option renamed"
	select BR2_LEGACY
	select BR2_PACKAGE_JANUS_GATEWAY_RECORDPLAY
	help
	  For consistency reasons, the janus-gateway option
	  BR2_PACKAGE_JANUS_RECORDPLAY has been renamed to
	  BR2_PACKAGE_JANUS_GATEWAY_RECORDPLAY.

config BR2_PACKAGE_JANUS_SIP_GATEWAY
	bool "janus-gateway sip-gateway option renamed"
	select BR2_LEGACY
	select BR2_PACKAGE_JANUS_GATEWAY_SIP_GATEWAY
	help
	  For consistency reasons, the janus-gateway option
	  BR2_PACKAGE_JANUS_SIP_GATEWAY has been renamed to
	  BR2_PACKAGE_JANUS_GATEWAY_SIP_GATEWAY.

config BR2_PACKAGE_JANUS_STREAMING
	bool "janus-gateway streaming option renamed"
	select BR2_LEGACY
	select BR2_PACKAGE_JANUS_GATEWAY_STREAMING
	help
	  For consistency reasons, the janus-gateway option
	  BR2_PACKAGE_JANUS_STREAMING has been renamed to
	  BR2_PACKAGE_JANUS_GATEWAY_STREAMING.

config BR2_PACKAGE_JANUS_TEXT_ROOM
	bool "janus-gateway text-room option renamed"
	select BR2_LEGACY
	select BR2_PACKAGE_JANUS_GATEWAY_TEXT_ROOM
	help
	  For consistency reasons, the janus-gateway option
	  BR2_PACKAGE_JANUS_TEXT_ROOM has been renamed to
	  BR2_PACKAGE_JANUS_GATEWAY_TEXT_ROOM.

config BR2_PACKAGE_JANUS_VIDEO_CALL
	bool "janus-gateway video-call option renamed"
	select BR2_LEGACY
	select BR2_PACKAGE_JANUS_GATEWAY_VIDEO_CALL
	help
	  For consistency reasons, the janus-gateway option
	  BR2_PACKAGE_JANUS_VIDEO_CALL has been renamed to
	  BR2_PACKAGE_JANUS_GATEWAY_VIDEO_CALL.

config BR2_PACKAGE_JANUS_VIDEO_ROOM
	bool "janus-gateway video-room option renamed"
	select BR2_LEGACY
	select BR2_PACKAGE_JANUS_GATEWAY_VIDEO_ROOM
	help
	  For consistency reasons, the janus-gateway option
	  BR2_PACKAGE_JANUS_VIDEO_ROOM has been renamed to
	  BR2_PACKAGE_JANUS_GATEWAY_VIDEO_ROOM.

config BR2_PACKAGE_JANUS_MQTT
	bool "janus-gateway mqtt option renamed"
	select BR2_LEGACY
	select BR2_PACKAGE_JANUS_GATEWAY_MQTT
	help
	  For consistency reasons, the janus-gateway option
	  BR2_PACKAGE_JANUS_MQTT has been renamed to
	  BR2_PACKAGE_JANUS_GATEWAY_MQTT.

config BR2_PACKAGE_JANUS_RABBITMQ
	bool "janus-gateway rabbitmq option renamed"
	select BR2_LEGACY
	select BR2_PACKAGE_JANUS_GATEWAY_RABBITMQ
	help
	  For consistency reasons, the janus-gateway option
	  BR2_PACKAGE_JANUS_RABBITMQ has been renamed to
	  BR2_PACKAGE_JANUS_GATEWAY_RABBITMQ.

config BR2_PACKAGE_JANUS_REST
	bool "janus-gateway rest option renamed"
	select BR2_LEGACY
	select BR2_PACKAGE_JANUS_GATEWAY_REST
	help
	  For consistency reasons, the janus-gateway option
	  BR2_PACKAGE_JANUS_REST has been renamed to
	  BR2_PACKAGE_JANUS_GATEWAY_REST.

config BR2_PACKAGE_JANUS_UNIX_SOCKETS
	bool "janus-gateway unix-sockets option renamed"
	select BR2_LEGACY
	select BR2_PACKAGE_JANUS_GATEWAY_UNIX_SOCKETS
	help
	  For consistency reasons, the janus-gateway option
	  BR2_PACKAGE_JANUS_UNIX_SOCKETS has been renamed to
	  BR2_PACKAGE_JANUS_GATEWAY_UNIX_SOCKETS.

config BR2_PACKAGE_JANUS_WEBSOCKETS
	bool "janus-gateway websockets option renamed"
	select BR2_LEGACY
	select BR2_PACKAGE_JANUS_GATEWAY_WEBSOCKETS
	help
	  For consistency reasons, the janus-gateway option
	  BR2_PACKAGE_JANUS_WEBSOCKETS has been renamed to
	  BR2_PACKAGE_JANUS_GATEWAY_WEBSOCKETS.

config BR2_PACKAGE_IPSEC_SECCTX_DISABLE
	bool "ipsec-tools security context disable option renamed"
	select BR2_LEGACY
	help
	  For consistency reasons, the option
	  BR2_PACKAGE_IPSEC_SECCTX_DISABLE was renamed to
	  BR2_PACKAGE_IPSEC_TOOLS_SECCTX_DISABLE.

config BR2_PACKAGE_IPSEC_SECCTX_ENABLE
	bool "ipsec-tools SELinux security context enable option renamed"
	select BR2_LEGACY
	help
	  For consistency reasons, the option
	  BR2_PACKAGE_IPSEC_SECCTX_ENABLE was renamed to
	  BR2_PACKAGE_IPSEC_TOOLS_SECCTX_ENABLE.

config BR2_PACKAGE_IPSEC_SECCTX_KERNEL
	bool "ipsec-tools kernel security context enable option renamed"
	select BR2_LEGACY
	help
	  For consistency reasons, the option
	  BR2_PACKAGE_IPSEC_SECCTX_KERNEL was renamed to
	  BR2_PACKAGE_IPSEC_TOOLS_SECCTX_KERNEL.

config BR2_PACKAGE_LIBTFDI_CPP
	bool "libftdi C++ bindings option renamed"
	select BR2_LEGACY
	select BR2_PACKAGE_LIBFTDI_CPP
	help
	  The option BR2_PACKAGE_LIBTFDI_CPP was renamed to
	  BR2_PACKAGE_LIBFTDI_CPP in order to fix a typo in the option
	  name.

config BR2_PACKAGE_JQUERY_UI_THEME_BLACK_TIE
	bool "jquery-ui-themes option black-tie renamed"
	select BR2_LEGACY
	help
	  For consistency reasons, the jquery-ui-themes option for the
	  black-tie theme has been renamed from
	  BR2_PACKAGE_JQUERY_UI_THEME_BLACK_TIE to
	  BR2_PACKAGE_JQUERY_UI_THEMES_BLACK_TIE.

config BR2_PACKAGE_JQUERY_UI_THEME_BLITZER
	bool "jquery-ui-themes option blitzer renamed"
	select BR2_LEGACY
	help
	  For consistency reasons, the jquery-ui-themes option for the
	  blitzer theme has been renamed from
	  BR2_PACKAGE_JQUERY_UI_THEME_BLITZER to
	  BR2_PACKAGE_JQUERY_UI_THEMES_BLITZER.

config BR2_PACKAGE_JQUERY_UI_THEME_CUPERTINO
	bool "jquery-ui-themes option cupertino renamed"
	select BR2_LEGACY
	help
	  For consistency reasons, the jquery-ui-themes option for the
	  cupertino theme has been renamed from
	  BR2_PACKAGE_JQUERY_UI_THEME_CUPERTINO to
	  BR2_PACKAGE_JQUERY_UI_THEMES_CUPERTINO.

config BR2_PACKAGE_JQUERY_UI_THEME_DARK_HIVE
	bool "jquery-ui-themes option dark-hive renamed"
	select BR2_LEGACY
	help
	  For consistency reasons, the jquery-ui-themes option for the
	  dark-hive theme has been renamed from
	  BR2_PACKAGE_JQUERY_UI_THEME_DARK_HIVE to
	  BR2_PACKAGE_JQUERY_UI_THEMES_DARK_HIVE.

config BR2_PACKAGE_JQUERY_UI_THEME_DOT_LUV
	bool "jquery-ui-themes option dot-luv renamed"
	select BR2_LEGACY
	help
	  For consistency reasons, the jquery-ui-themes option for the
	  dot-luv theme has been renamed from
	  BR2_PACKAGE_JQUERY_UI_THEME_DOT_LUV to
	  BR2_PACKAGE_JQUERY_UI_THEMES_DOT_LUV.

config BR2_PACKAGE_JQUERY_UI_THEME_EGGPLANT
	bool "jquery-ui-themes option eggplant renamed"
	select BR2_LEGACY
	help
	  For consistency reasons, the jquery-ui-themes option for the
	  eggplant theme has been renamed from
	  BR2_PACKAGE_JQUERY_UI_THEME_EGGPLANT to
	  BR2_PACKAGE_JQUERY_UI_THEMES_EGGPLANT.

config BR2_PACKAGE_JQUERY_UI_THEME_EXCITE_BIKE
	bool "jquery-ui-themes option excite-bike renamed"
	select BR2_LEGACY
	help
	  For consistency reasons, the jquery-ui-themes option for the
	  excite-bike theme has been renamed from
	  BR2_PACKAGE_JQUERY_UI_THEME_EXCITE_BIKE to
	  BR2_PACKAGE_JQUERY_UI_THEMES_EXCITE_BIKE.

config BR2_PACKAGE_JQUERY_UI_THEME_FLICK
	bool "jquery-ui-themes option flick renamed"
	select BR2_LEGACY
	help
	  For consistency reasons, the jquery-ui-themes option for the
	  flick theme has been renamed from
	  BR2_PACKAGE_JQUERY_UI_THEME_FLICK to
	  BR2_PACKAGE_JQUERY_UI_THEMES_FLICK.

config BR2_PACKAGE_JQUERY_UI_THEME_HOT_SNEAKS
	bool "jquery-ui-themes option hot-sneaks renamed"
	select BR2_LEGACY
	help
	  For consistency reasons, the jquery-ui-themes option for the
	  hot-sneaks theme has been renamed from
	  BR2_PACKAGE_JQUERY_UI_THEME_HOT_SNEAKS to
	  BR2_PACKAGE_JQUERY_UI_THEMES_HOT_SNEAKS.

config BR2_PACKAGE_JQUERY_UI_THEME_HUMANITY
	bool "jquery-ui-themes option humanity renamed"
	select BR2_LEGACY
	help
	  For consistency reasons, the jquery-ui-themes option for the
	  humanity theme has been renamed from
	  BR2_PACKAGE_JQUERY_UI_THEME_HUMANITY to
	  BR2_PACKAGE_JQUERY_UI_THEMES_HUMANITY.

config BR2_PACKAGE_JQUERY_UI_THEME_LE_FROG
	bool "jquery-ui-themes option le-frog renamed"
	select BR2_LEGACY
	help
	  For consistency reasons, the jquery-ui-themes option for the
	  le-frog theme has been renamed from
	  BR2_PACKAGE_JQUERY_UI_THEME_LE_FROG to
	  BR2_PACKAGE_JQUERY_UI_THEMES_LE_FROG.

config BR2_PACKAGE_JQUERY_UI_THEME_MINT_CHOC
	bool "jquery-ui-themes option mint-choc renamed"
	select BR2_LEGACY
	help
	  For consistency reasons, the jquery-ui-themes option for the
	  mint-choc theme has been renamed from
	  BR2_PACKAGE_JQUERY_UI_THEME_MINT_CHOC to
	  BR2_PACKAGE_JQUERY_UI_THEMES_MINT_CHOC.

config BR2_PACKAGE_JQUERY_UI_THEME_OVERCAST
	bool "jquery-ui-themes option overcast renamed"
	select BR2_LEGACY
	help
	  For consistency reasons, the jquery-ui-themes option for the
	  overcast theme has been renamed from
	  BR2_PACKAGE_JQUERY_UI_THEME_OVERCAST to
	  BR2_PACKAGE_JQUERY_UI_THEMES_OVERCAST.

config BR2_PACKAGE_JQUERY_UI_THEME_PEPPER_GRINDER
	bool "jquery-ui-themes option pepper-grinder renamed"
	select BR2_LEGACY
	help
	  For consistency reasons, the jquery-ui-themes option for the
	  pepper-grinder theme has been renamed from
	  BR2_PACKAGE_JQUERY_UI_THEME_PEPPER_GRINDER to
	  BR2_PACKAGE_JQUERY_UI_THEMES_PEPPER_GRINDER.

config BR2_PACKAGE_JQUERY_UI_THEME_REDMOND
	bool "jquery-ui-themes option redmond renamed"
	select BR2_LEGACY
	help
	  For consistency reasons, the jquery-ui-themes option for the
	  redmond theme has been renamed from
	  BR2_PACKAGE_JQUERY_UI_THEME_REDMOND to
	  BR2_PACKAGE_JQUERY_UI_THEMES_REDMOND.

config BR2_PACKAGE_JQUERY_UI_THEME_SMOOTHNESS
	bool "jquery-ui-themes option smoothness renamed"
	select BR2_LEGACY
	help
	  For consistency reasons, the jquery-ui-themes option for the
	  smoothness theme has been renamed from
	  BR2_PACKAGE_JQUERY_UI_THEME_SMOOTHNESS to
	  BR2_PACKAGE_JQUERY_UI_THEMES_SMOOTHNESS.

config BR2_PACKAGE_JQUERY_UI_THEME_SOUTH_STREET
	bool "jquery-ui-themes option south-street renamed"
	select BR2_LEGACY
	help
	  For consistency reasons, the jquery-ui-themes option for the
	  south-street theme has been renamed from
	  BR2_PACKAGE_JQUERY_UI_THEME_SOUTH_STREET to
	  BR2_PACKAGE_JQUERY_UI_THEMES_SOUTH_STREET.

config BR2_PACKAGE_JQUERY_UI_THEME_START
	bool "jquery-ui-themes option start renamed"
	select BR2_LEGACY
	help
	  For consistency reasons, the jquery-ui-themes option for the
	  start theme has been renamed from
	  BR2_PACKAGE_JQUERY_UI_THEME_START to
	  BR2_PACKAGE_JQUERY_UI_THEMES_START.

config BR2_PACKAGE_JQUERY_UI_THEME_SUNNY
	bool "jquery-ui-themes option sunny renamed"
	select BR2_LEGACY
	help
	  For consistency reasons, the jquery-ui-themes option for the
	  sunny theme has been renamed from
	  BR2_PACKAGE_JQUERY_UI_THEME_SUNNY to
	  BR2_PACKAGE_JQUERY_UI_THEMES_SUNNY.

config BR2_PACKAGE_JQUERY_UI_THEME_SWANKY_PURSE
	bool "jquery-ui-themes option swanky-purse renamed"
	select BR2_LEGACY
	help
	  For consistency reasons, the jquery-ui-themes option for the
	  swanky-purse theme has been renamed from
	  BR2_PACKAGE_JQUERY_UI_THEME_SWANKY_PURSE to
	  BR2_PACKAGE_JQUERY_UI_THEMES_SWANKY_PURSE.

config BR2_PACKAGE_JQUERY_UI_THEME_TRONTASTIC
	bool "jquery-ui-themes option trontastic renamed"
	select BR2_LEGACY
	help
	  For consistency reasons, the jquery-ui-themes option for the
	  trontastic theme has been renamed from
	  BR2_PACKAGE_JQUERY_UI_THEME_TRONTASTIC to
	  BR2_PACKAGE_JQUERY_UI_THEMES_TRONTASTIC.

config BR2_PACKAGE_JQUERY_UI_THEME_UI_DARKNESS
	bool "jquery-ui-themes option ui-darkness renamed"
	select BR2_LEGACY
	help
	  For consistency reasons, the jquery-ui-themes option for the
	  ui-darkness theme has been renamed from
	  BR2_PACKAGE_JQUERY_UI_THEME_UI_DARKNESS to
	  BR2_PACKAGE_JQUERY_UI_THEMES_UI_DARKNESS.

config BR2_PACKAGE_JQUERY_UI_THEME_UI_LIGHTNESS
	bool "jquery-ui-themes option ui-lightness renamed"
	select BR2_LEGACY
	help
	  For consistency reasons, the jquery-ui-themes option for the
	  ui-lightness theme has been renamed from
	  BR2_PACKAGE_JQUERY_UI_THEME_UI_LIGHTNESS to
	  BR2_PACKAGE_JQUERY_UI_THEMES_UI_LIGHTNESS.

config BR2_PACKAGE_JQUERY_UI_THEME_VADER
	bool "jquery-ui-themes option vader renamed"
	select BR2_LEGACY
	help
	  For consistency reasons, the jquery-ui-themes option for the
	  vader theme has been renamed from
	  BR2_PACKAGE_JQUERY_UI_THEME_VADER to
	  BR2_PACKAGE_JQUERY_UI_THEMES_VADER.

config BR2_PACKAGE_BLUEZ5_PLUGINS_HEALTH
	bool "bluez5-utils health plugin option renamed"
	select BR2_LEGACY
	select BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_HEALTH
	help
	  For consistency reasons, the option
	  BR2_PACKAGE_BLUEZ5_PLUGINS_HEALTH has been renamed to
	  BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_HEALTH.

config BR2_PACKAGE_BLUEZ5_PLUGINS_MIDI
	bool "bluez5-utils midi plugin option renamed"
	select BR2_LEGACY
	select BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_MIDI
	help
	  For consistency reasons, the option
	  BR2_PACKAGE_BLUEZ5_PLUGINS_MIDI has been renamed to
	  BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_MIDI.

config BR2_PACKAGE_BLUEZ5_PLUGINS_NFC
	bool "bluez5-utils nfc plugin option renamed"
	select BR2_LEGACY
	select BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_NFC
	help
	  For consistency reasons, the option
	  BR2_PACKAGE_BLUEZ5_PLUGINS_NFC has been renamed to
	  BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_NFC.

config BR2_PACKAGE_BLUEZ5_PLUGINS_SAP
	bool "bluez5-utils sap plugin option renamed"
	select BR2_LEGACY
	select BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_SAP
	help
	  For consistency reasons, the option
	  BR2_PACKAGE_BLUEZ5_PLUGINS_SAP has been renamed to
	  BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_SAP.

config BR2_PACKAGE_BLUEZ5_PLUGINS_SIXAXIS
	bool "bluez5-utils sixaxis plugin option renamed"
	select BR2_LEGACY
	select BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_SIXAXIS
	help
	  For consistency reasons, the option
	  BR2_PACKAGE_BLUEZ5_PLUGINS_SIXAXIS has been renamed to
	  BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_SIXAXIS.

config BR2_PACKAGE_TRANSMISSION_REMOTE
	bool "transmission remote tool option removed"
	select BR2_LEGACY
	select BR2_PACKAGE_TRANSMISSION_DAEMON
	help
	  Upstream does not provide a separate configure option for
	  the tool transmission-remote, it is built when the
	  transmission daemon has been enabled. Therefore, Buildroot
	  has automatically enabled BR2_PACKAGE_TRANSMISSION_DAEMON
	  for you.

config BR2_PACKAGE_LIBKCAPI_APPS
	bool "libkcapi test applications removed"
	select BR2_LEGACY
	select BR2_PACKAGE_LIBKCAPI_HASHER if !BR2_STATIC_LIBS
	select BR2_PACKAGE_LIBKCAPI_RNGAPP
	select BR2_PACKAGE_LIBKCAPI_SPEED
	select BR2_PACKAGE_LIBKCAPI_TEST
	help
	  Test applications (hasher, rng read, speed-test, test) now
	  have their own configuration options in the libkcapi menu.

config BR2_PACKAGE_MPLAYER
	bool "mplayer package removed"
	select BR2_LEGACY
	help
	  The mplayer package was removed.

config BR2_PACKAGE_MPLAYER_MPLAYER
	bool "mplayer package removed"
	select BR2_LEGACY
	help
	  The mplayer package was removed.

config BR2_PACKAGE_MPLAYER_MENCODER
	bool "mplayer package removed"
	select BR2_LEGACY
	help
	  The mplayer package was removed.

config BR2_PACKAGE_LIBPLAYER_MPLAYER
	bool "mplayer support in libplayer removed"
	select BR2_LEGACY
	help
	  The mplayer package was removed.

config BR2_PACKAGE_IQVLINUX
	bool "iqvlinux package removed"
	select BR2_LEGACY
	help
	  This package contained a kernel module from Intel, which
	  could only be used together with Intel userspace tools
	  provided under NDA, which also come with the same kernel
	  module. The copy of the kernel module available on
	  SourceForge is provided only to comply with the GPLv2
	  requirement. Intel engineers were even surprised it even
	  built and were not willing to make any effort to fix their
	  tarball naming to contain a version number. Therefore, it
	  does not make sense for Buildroot to provide such a package.

	  See https://sourceforge.net/p/e1000/bugs/589/ for the
	  discussion.

config BR2_BINFMT_FLAT_SEP_DATA
	bool "binfmt FLAT with separate code and data removed"
	select BR2_LEGACY
	help
	  This FLAT binary format was only used on Blackfin, which has
	  been removed.

config BR2_bfin
	bool "Blackfin architecture support removed"
	select BR2_LEGACY
	help
	  Following the removal of Blackfin support for the upstream
	  Linux kernel, Buildroot has removed support for this CPU
	  architecture.

config BR2_PACKAGE_KODI_ADSP_BASIC
	bool "kodi-adsp-basic package removed"
	select BR2_LEGACY
	help
	  kodi-adsp-basic is unmaintained

config BR2_PACKAGE_KODI_ADSP_FREESURROUND
	bool "kodi-adsp-freesurround package removed"
	select BR2_LEGACY
	help
	  kodi-adsp-freesurround is unmaintained

###############################################################################
comment "Legacy options removed in 2018.02"

config BR2_KERNEL_HEADERS_3_4
	bool "kernel headers version 3.4.x are no longer supported"
	select BR2_LEGACY
	help
	  Version 3.4.x of the Linux kernel headers are no longer
	  maintained upstream and are now removed.

config BR2_KERNEL_HEADERS_3_10
	bool "kernel headers version 3.10.x are no longer supported"
	select BR2_LEGACY
	help
	  Version 3.10.x of the Linux kernel headers are no longer
	  maintained upstream and are now removed.

config BR2_KERNEL_HEADERS_3_12
	bool "kernel headers version 3.12.x are no longer supported"
	select BR2_LEGACY
	help
	  Version 3.12.x of the Linux kernel headers are no longer
	  maintained upstream and are now removed.

config BR2_BINUTILS_VERSION_2_27_X
	bool "binutils version 2.27 support removed"
	select BR2_LEGACY
	help
	  Support for binutils version 2.27 has been removed. The
	  current default version (2.29 or later) has been selected
	  instead.

config BR2_PACKAGE_EEPROG
	bool "eeprog package removed"
	select BR2_LEGACY
	select BR2_PACKAGE_I2C_TOOLS
	select BR2_PACKAGE_BUSYBOX_SHOW_OTHERS
	help
	  The eeprog program is now provided by the i2c-tools package.

config BR2_PACKAGE_GNUPG2_GPGV2
	bool "gnupg2 gpgv2 option removed"
	select BR2_LEGACY
	select BR2_PACKAGE_GNUPG2_GPGV
	help
	  The gpgv2 executable is now named gpgv. The config option
	  has been renamed accordingly.

config BR2_PACKAGE_IMX_GPU_VIV_APITRACE
	bool "Vivante apitrace tool option removed"
	select BR2_LEGACY
	help
	  The apitrace tool for Vivante is not provided by the
	  imx-gpu-viv package any longer.

config BR2_PACKAGE_IMX_GPU_VIV_G2D
	bool "Vivante G2D libraries from imx-gpu-viv removed"
	select BR2_LEGACY
	select BR2_PACKAGE_IMX_GPU_G2D
	help
	  The G2D libraries are now provided by the imx-gpu-g2d package.

###############################################################################
comment "Legacy options removed in 2017.11"

config BR2_PACKAGE_RFKILL
	bool "rfkill package removed"
	select BR2_LEGACY
	select BR2_PACKAGE_UTIL_LINUX
	select BR2_PACKAGE_UTIL_LINUX_RFKILL
	help
	  The rfkill program is now provided by the util-linux package.

config BR2_PACKAGE_UTIL_LINUX_RESET
	bool "util-linux reset option removed"
	select BR2_LEGACY
	help
	  The util-linux package no longer offers a "reset" command. Use
	  either the reset command provided by BusyBox or select ncurses
	  programs, which will install a symlink from "tset" to reset.

config BR2_PACKAGE_POLICYCOREUTILS_AUDIT2ALLOW
	bool "policycoreutils audit2allow option removed"
	select BR2_LEGACY
	select BR2_PACKAGE_SELINUX_PYTHON
	select BR2_PACKAGE_SELINUX_PYTHON_AUDIT2ALLOW
	help
	  The policycoreutils package no longer offers audit2allow
	  as a option. This package has been moved into the
	  selinux-python package by the SELinux maintainers.

config BR2_PACKAGE_POLICYCOREUTILS_RESTORECOND
	bool "policycoreutils restorecond option removed"
	select BR2_LEGACY
	select BR2_PACKAGE_RESTORECOND
	help
	  The policycoreutils package no longer offers restorecond
	  as a option.  This package has been moved into a separate
	  package maintained by the SELinux maintainers.

config BR2_PACKAGE_SEPOLGEN
	bool "sepolgen package has been removed"
	select BR2_LEGACY
	select BR2_PACKAGE_SELINUX_PYTHON
	select BR2_PACKAGE_SELINUX_PYTHON_SEPOLGEN
	help
	  Sepolgen is no longer a individual package, but instead has
	  been moved into the selinux-python package by the SELinux
	  maintainers.

config BR2_PACKAGE_OPENOBEX_BLUEZ
	bool "openobex bluez option removed"
	select BR2_LEGACY
	select BR2_PACKAGE_BLUEZ_UTILS
	help
	  The OpenOBEX package no longer offers an option to enable or
	  disable BlueZ support. Instead, BlueZ support is always
	  included when the bluez5_utils or bluez_utils package is
	  selected.

config BR2_PACKAGE_OPENOBEX_LIBUSB
	bool "openobex libusb option removed"
	select BR2_LEGACY
	select BR2_PACKAGE_LIBUSB
	help
	  The OpenOBEX package no longer offers an option to enable or
	  disable libusb support. Instead, USB support is always
	  included when the libusb package is selected.

config BR2_PACKAGE_OPENOBEX_APPS
	bool "openobex apps option removed"
	select BR2_LEGACY
	help
	  The OpenOBEX package no longer offers an option to enable or
	  disable apps support.

config BR2_PACKAGE_OPENOBEX_SYSLOG
	bool "openobex syslog option removed"
	select BR2_LEGACY
	help
	  The OpenOBEX package no longer offers an option to enable or
	  disable syslog support.

config BR2_PACKAGE_OPENOBEX_DUMP
	bool "openobex dump option removed"
	select BR2_LEGACY
	help
	  The OpenOBEX package no longer offers an option to enable or
	  disable dump support.

config BR2_PACKAGE_AICCU
	bool "aiccu utility removed"
	select BR2_LEGACY
	help
	  As the SixXS project has ceased its operation on 2017-06-06,
	  the AICCU utility has no use anymore and has been removed.

	  https://www.sixxs.net/sunset/

config BR2_PACKAGE_UTIL_LINUX_LOGIN_UTILS
	bool "util-linux login utilities option removed"
	select BR2_LEGACY
	select BR2_PACKAGE_UTIL_LINUX_LAST
	select BR2_PACKAGE_UTIL_LINUX_LOGIN
	select BR2_PACKAGE_UTIL_LINUX_RUNUSER
	select BR2_PACKAGE_UTIL_LINUX_SU
	select BR2_PACKAGE_UTIL_LINUX_SULOGIN
	help
	  Login utilities (last, login, runuser, su, sulogin) now have
	  their own configuration options in the util-linux menu.

###############################################################################
comment "Legacy options removed in 2017.08"

config BR2_TARGET_GRUB
	bool "grub (aka grub-legacy) has been removed"
	select BR2_LEGACY
	help
	  grub-legacy is no longer maintained, and no longer builds with
	  recent binutils versions.

	  Use grub2 or syslinux instead.

config BR2_PACKAGE_SIMICSFS
	bool "simicsfs support removed"
	select BR2_LEGACY
	help
	  Support for simicsfs kernel driver that provides access to a
	  host computer's local filesystem when the target is
	  executing within a SIMICS simulation has been removed.

	  Simics is now moving away from the simicsfs kernel module,
	  as the kernel module has required too much maintenance
	  work. Users should move to the user mode Simics agent
	  instead.

config BR2_BINUTILS_VERSION_2_26_X
	bool "binutils version 2.26 support removed"
	select BR2_LEGACY
	help
	  Support for binutils version 2.26 has been removed. The
	  current default version (2.28 or later) has been selected
	  instead.

config BR2_XTENSA_OVERLAY_DIR
	string "The BR2_XTENSA_OVERLAY_DIR option has been removed"
	help
	  The BR2_XTENSA_OVERLAY_DIR has been removed in favour of
	  BR2_XTENSA_OVERLAY_FILE. You must now pass the complete
	  path to the overlay file, not to the directory containing
	  it.

config BR2_XTENSA_OVERLAY_DIR_WRAP
	bool
	default y if BR2_XTENSA_OVERLAY_DIR != ""
	select BR2_LEGACY

config BR2_XTENSA_CUSTOM_NAME
	string "The BR2_XTENSA_CUSTOM_NAME option has been removed"
	help
	  The BR2_XTENSA_CUSTOM_NAME option has been removed.

config BR2_XTENSA_CUSTOM_NAME_WRAP
	bool
	default y if BR2_XTENSA_CUSTOM_NAME != ""
	select BR2_LEGACY

config BR2_PACKAGE_HOST_MKE2IMG
	bool "host mke2img has been removed"
	select BR2_LEGACY
	help
	  We now call mkfs directly to generate ext2/3/4 filesystem
	  image, so mke2img is no longer necessary.

config BR2_TARGET_ROOTFS_EXT2_BLOCKS
	int "exact size in blocks has been removed"
	default 0
	help
	  This option has been removed in favor of
	  BR2_TARGET_ROOTFS_EXT2_SIZE. It has been set automatically
	  to the value you had before. Set to 0 here to remove the
	  warning.

config BR2_TARGET_ROOTFS_EXT2_BLOCKS_WRAP
	bool
	default y if BR2_TARGET_ROOTFS_EXT2_BLOCKS != 0 && \
		BR2_TARGET_ROOTFS_EXT2_BLOCKS != 61440 # deprecated default value
	select BR2_LEGACY

# Note: BR2_TARGET_ROOTFS_EXT2_BLOCKS_WRAP still referenced in fs/ext2/Config.in

config BR2_TARGET_ROOTFS_EXT2_EXTRA_INODES
	int "ext2 extra inodes has been removed" if BR2_TARGET_ROOTFS_EXT2_INODES = 0
	default 0
	help
	  Buildroot now uses mkfs.ext2/3/4 to generate ext2/3/4
	  images. It now automatically selects the number of inodes
	  based on the image size. The extra number of inodes can no
	  longer be provided; instead, provide the total number of
	  inodes needed in BR2_TARGET_ROOTFS_EXT2_INODES.

config BR2_TARGET_ROOTFS_EXT2_EXTRA_INODES_WRAP
	bool
	default y if BR2_TARGET_ROOTFS_EXT2_EXTRA_INODES != 0
	select BR2_LEGACY

config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_CDXAPARSE
	bool "cdxaparse removed"
	select BR2_LEGACY

config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_DATAURISRC
	bool "dataurisrc moved to gstreamer1"
	select BR2_LEGACY
	help
	  Dataurisrc has moved to gstreamer core and is always built.

config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_DCCP
	bool "dccp removed"
	select BR2_LEGACY

config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_HDVPARSE
	bool "hdvparse removed"
	select BR2_LEGACY

config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_MVE
	bool "mve removed"
	select BR2_LEGACY

config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_NUVDEMUX
	bool "nuvdemux removed"
	select BR2_LEGACY

config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_PATCHDETECT
	bool "patchdetect removed"
	select BR2_LEGACY

config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SDI
	bool "sdi removed"
	select BR2_LEGACY

config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_TTA
	bool "tta removed"
	select BR2_LEGACY

config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_VIDEOMEASURE
	bool "videomeasure removed"
	select BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_IQA
	select BR2_LEGACY
	help
	  videomeasure plugin has been removed and has been replaced by
	  iqa, which has automatically been enabled.

config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_APEXSINK
	bool "apexsink removed"
	select BR2_LEGACY

config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SDL
	bool "sdl removed"
	select BR2_LEGACY

config BR2_PACKAGE_GST1_PLUGINS_UGLY_PLUGIN_MAD
	bool "mad (*.mp3 audio) removed"
	select BR2_LEGACY

config BR2_STRIP_none
	bool "Strip command 'none' has been removed"
	select BR2_LEGACY
	help
	  The strip command choice has been changed into a single
	  boolean option. Please check that the new setting is
	  correct (in the "Build options" sub-menu)

config BR2_PACKAGE_BEECRYPT_CPP
	bool "C++ support removed in beecrypt"
	select BR2_LEGACY
	help
	  Support for C++ depends on icu. The beecrypt package is
	  incompatible with icu 59+.

config BR2_PACKAGE_SPICE_CLIENT
	bool "spice client support removed"
	select BR2_LEGACY
	help
	  Spice client support has been removed upstream. The
	  functionality now lives in the spice-gtk widget and
	  virt-viewer.

config BR2_PACKAGE_SPICE_GUI
	bool "spice gui support removed"
	select BR2_LEGACY
	help
	  Spice gui support has been removed upstream. The
	  functionality now lives in the spice-gtk widget and
	  virt-viewer.

config BR2_PACKAGE_SPICE_TUNNEL
	bool "spice network redirection removed"
	select BR2_LEGACY
	help
	  Spice network redirection, aka tunnelling has been removed
	  upstream.

config BR2_PACKAGE_INPUT_TOOLS
	bool "input-tools removed"
	select BR2_LEGACY
	select BR2_PACKAGE_LINUXCONSOLETOOLS
	help
	  input-tools has been removed, it is replaced by
	  linuxconsoletools, which has automatically been enabled.

config BR2_PACKAGE_INPUT_TOOLS_INPUTATTACH
	bool "inputattach moved to linuxconsoletools"
	select BR2_LEGACY
	select BR2_PACKAGE_LINUXCONSOLETOOLS
	select BR2_PACKAGE_LINUXCONSOLETOOLS_INPUTATTACH
	help
	  input-tools has been removed, inputattach is now part
	  of linuxconsoletools, which has automatically been
	  enabled.

config BR2_PACKAGE_INPUT_TOOLS_JSCAL
	bool "jscal moved to linuxconsoletools"
	select BR2_LEGACY
	select BR2_PACKAGE_LINUXCONSOLETOOLS
	select BR2_PACKAGE_LINUXCONSOLETOOLS_JOYSTICK
	help
	  input-tools has been removed, jscal is now part
	  of linuxconsoletools, which has automatically been
	  enabled.

config BR2_PACKAGE_INPUT_TOOLS_JSTEST
	bool "jstest moved to linuxconsoletools"
	select BR2_LEGACY
	select BR2_PACKAGE_LINUXCONSOLETOOLS
	select BR2_PACKAGE_LINUXCONSOLETOOLS_JOYSTICK
	help
	  input-tools has been removed, jstest is now part
	  of linuxconsoletools, which has automatically been
	  enabled.

config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_SH
	bool "SH Sourcery toolchain has been removed"
	select BR2_LEGACY
	help
	  The Sourcery CodeBench toolchain for the sh architecture has
	  been removed, since it uses glibc older than 2.17 that
	  requires -lrt to link executables using clock_* system calls.
	  This makes this toolchain difficult to maintain over time.

config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_X86
	bool "x86 Sourcery toolchain has been removed"
	select BR2_LEGACY
	help
	  The Sourcery CodeBench toolchain for the x86 architecture has
	  been removed, since it uses glibc older than 2.17 that
	  requires -lrt to link executables using clock_* system calls.
	  This makes this toolchain difficult to maintain over time.

config BR2_GCC_VERSION_4_8_X
	bool "gcc 4.8.x support removed"
	select BR2_LEGACY
	help
	  Support for gcc version 4.8.x has been removed. The current
	  default version (5.x or later) has been selected instead.

###############################################################################
comment "Legacy options removed in 2017.05"

config BR2_PACKAGE_SUNXI_MALI_R2P4
	bool "sunxi-mali r2p4 removed"
	select BR2_LEGACY
	help
	  sunxi-mali libMali for r2p4 Mali kernel module has been
	  removed since the libump package only provides libUMP.so.3.
	  libMali for r2p4 Mali kernel module requires libUMP.so.2.

config BR2_PACKAGE_NODEJS_MODULES_COFFEESCRIPT
	bool "CoffeeScript option has been removed"
	select BR2_LEGACY
	help
	  The option to enable NodeJS CoffeeScript has been removed.
	  To continue using it, add "coffee-script" to
	  BR2_PACKAGE_NODEJS_MODULES_ADDITIONAL.

config BR2_PACKAGE_NODEJS_MODULES_EXPRESS
	bool "Express web application framework option has been removed"
	select BR2_LEGACY
	help
	  The option to enable the NodeJS Express web application
	  framework has been removed. To continue using it, add
	  "express" to BR2_PACKAGE_NODEJS_MODULES_ADDITIONAL.

config BR2_PACKAGE_BLUEZ5_UTILS_GATTTOOL
	bool "bluez5_utils gatttool install option removed"
	select BR2_PACKAGE_BLUEZ5_UTILS_DEPRECATED
	help
	  The option to install gatttool specifically has been removed.
	  Since version 5.44 gatttool is in the list of deprecated
	  tools. The option to build and install deprecated tools has
	  been automatically enabled.

config BR2_PACKAGE_OPENOCD_FT2XXX
	bool "openocd ft2232 support has been removed"
	select BR2_PACKAGE_OPENOCD_FTDI
	select BR2_LEGACY
	help
	  FT2232 support in OpenOCD has been removed, it's replaced by
	  FDTI support, which has automatically been enabled.

config BR2_PACKAGE_KODI_RTMPDUMP
	bool "kodi rtmp has been removed"
	select BR2_LEGACY
	select BR2_PACKAGE_KODI_INPUTSTREAM_RTMP
	help
	  Internal rtmp support was removed from Kodi.

config BR2_PACKAGE_KODI_VISUALISATION_FOUNTAIN
	bool "kodi-visualisation-fountain has been removed"
	select BR2_LEGACY
	help
	  According to upstream 'the visualization is not currently
	  in a working shape.'

config BR2_PACKAGE_PORTMAP
	bool "portmap has been removed"
	select BR2_LEGACY
	select BR2_PACKAGE_RPCBIND
	help
	  The portmap upstream tarball is removed, no releases since
	  ten years and latest change in upstream git in 2014.
	  You should better use rpcbind as a RPC portmapper.

config BR2_BINUTILS_VERSION_2_25_X
	bool "binutils version 2.25 support removed"
	select BR2_LEGACY
	help
	  Support for binutils version 2.25 has been removed. The
	  current default version (2.27 or later) has been selected
	  instead.

config BR2_TOOLCHAIN_BUILDROOT_INET_RPC
	bool "uclibc RPC support has been removed"
	select BR2_LEGACY
	help
	  uClibc-ng removed internal RPC implementation in 1.0.23. You
	  should use libtirpc instead.

config BR2_TARGET_ROOTFS_EXT2_EXTRA_BLOCKS
	int "extra size in blocks has been removed"
	default 0
	help
	  Since the support for auto calculation of the filesystem size
	  has been removed, this option is now useless and must be 0.
	  You may want to check that BR2_TARGET_ROOTFS_EXT2_BLOCKS
	  matchs your needs.

config BR2_TARGET_ROOTFS_EXT2_EXTRA_BLOCKS_WRAP
	bool
	default y if BR2_TARGET_ROOTFS_EXT2_EXTRA_BLOCKS != 0
	select BR2_LEGACY

config BR2_PACKAGE_SYSTEMD_KDBUS
	bool "systemd-kdbus has been removed"
	select BR2_LEGACY
	help
	  --enable/disable-kdbus configure option has been removed since
	  systemd-231.

config BR2_PACKAGE_POLARSSL
	bool "polarssl has been removed"
	select BR2_LEGACY
	help
	  The polarssl crypto library has been removed since the 1.2.x
	  release branch is no longer maintained. Newer upstream
	  branches/releases (mbedtls) have API changes so they're not
	  drop-in replacements.

config BR2_NBD_CLIENT
	bool "nbd client option was renamed"
	select BR2_LEGACY
	select BR2_PACKAGE_NBD_CLIENT
	help
	  The nbd client option has been renamed to
	  BR2_PACKAGE_NBD_CLIENT.

config BR2_NBD_SERVER
	bool "nbd server option was renamed"
	select BR2_LEGACY
	select BR2_PACKAGE_NBD_SERVER
	help
	  The nbd server option has been renamed to
	  BR2_PACKAGE_NBD_SERVER.

config BR2_PACKAGE_GMOCK
	bool "gmock merged into gtest package"
	select BR2_LEGACY
	select BR2_PACKAGE_GTEST
	select BR2_PACKAGE_GTEST_GMOCK
	help
	  GMock is now a suboption of the GTest package.

config BR2_KERNEL_HEADERS_4_8
	bool "kernel headers version 4.8.x are no longer supported"
	select BR2_LEGACY
	help
	  Version 4.8.x of the Linux kernel headers are no longer
	  maintained upstream and are now removed.

config BR2_KERNEL_HEADERS_3_18
	bool "kernel headers version 3.18.x are no longer supported"
	select BR2_LEGACY
	help
	  Version 3.18.x of the Linux kernel headers are no longer
	  maintained upstream and are now removed.

config BR2_GLIBC_VERSION_2_22
	bool "glibc 2.22 removed"
	select BR2_LEGACY
	help
	  Support for glibc version 2.22 has been removed. The current
	  default version has been selected instead.

###############################################################################
comment "Legacy options removed in 2017.02"

config BR2_PACKAGE_PERL_DB_FILE
	bool "perl-db-file removed"
	select BR2_LEGACY
	select BR2_PACKAGE_BERKELEYDB
	select BR2_PACKAGE_PERL
	help
	  DB_File can be built as a core Perl module, so the separate
	  perl-db-file package has been removed.

config BR2_KERNEL_HEADERS_4_7
	bool "kernel headers version 4.7.x are no longer supported"
	select BR2_LEGACY
	help
	  Version 4.7.x of the Linux kernel headers are no longer
	  maintained upstream and are now removed.

config BR2_KERNEL_HEADERS_4_6
	bool "kernel headers version 4.6.x are no longer supported"
	select BR2_LEGACY
	help
	  Version 4.6.x of the Linux kernel headers are no longer
	  maintained upstream and are now removed.

config BR2_KERNEL_HEADERS_4_5
	bool "kernel headers version 4.5.x are no longer supported"
	select BR2_LEGACY
	help
	  Version 4.5.x of the Linux kernel headers are no longer
	   maintained upstream and are now removed.

config BR2_KERNEL_HEADERS_3_14
	bool "kernel headers version 3.14.x are no longer supported"
	select BR2_LEGACY
	  help
	  Version 3.14.x of the Linux kernel headers are no longer
	  maintained upstream and are now removed.

config BR2_TOOLCHAIN_EXTERNAL_MUSL_CROSS
	bool "musl-cross 1.1.12 toolchain removed"
	select BR2_LEGACY
	help
	  The support for the prebuilt toolchain based on the Musl C
	  library provided by the musl-cross project has been removed.
	  Upstream doesn't provide any prebuilt toolchain anymore, use
	  the Buildroot toolchain instead.

config BR2_UCLIBC_INSTALL_TEST_SUITE
	bool "uClibc tests now in uclibc-ng-test"
	select BR2_LEGACY
	select BR2_PACKAGE_UCLIBC_NG_TEST
	help
	  The test suite of the uClibc C library has been moved into a
	  separate package, uclibc-ng-test.

config BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX
	bool "Blackfin.uclinux.org 2014R1 toolchain removed"
	select BR2_LEGACY
	help
	  The ADI Blackfin toolchain has many bugs which are fixed in
	  more recent gcc and uClibc-ng releases. Use the Buildroot
	  toolchain instead.

config BR2_PACKAGE_MAKEDEVS
	bool "makedevs removed"
	select BR2_LEGACY
	help
	  The makedevs tool is part of busybox. The Buildroot fork
	  should not be used outside of the Buildroot infrastructure.

config BR2_TOOLCHAIN_EXTERNAL_ARAGO_ARMV7A
	bool "Arago ARMv7 2011.09 removed"
	select BR2_LEGACY
	help
	  The Arago toolchains are every old and not updated anymore.

config BR2_TOOLCHAIN_EXTERNAL_ARAGO_ARMV5TE
	bool "Arago ARMv5 2011.09 removed"
	select BR2_LEGACY
	help
	  The Arago toolchains are every old and not updated anymore.

config BR2_PACKAGE_SNOWBALL_HDMISERVICE
	bool "snowball-hdmiservice removed"
	select BR2_LEGACY
	help
	  We no longer have support for the Snowball platform in
	  Buildroot, so this package was no longer useful.

config BR2_PACKAGE_SNOWBALL_INIT
	bool "snowball-init removed"
	select BR2_LEGACY
	help
	  We no longer have support for the Snowball platform in
	  Buildroot, so this package was no longer useful.

config BR2_GDB_VERSION_7_9
	bool "gdb 7.9 has been removed"
	select BR2_LEGACY
	help
	  The 7.9 version of gdb has been removed. Use a newer version
	  instead.

###############################################################################
comment "Legacy options removed in 2016.11"

config BR2_PACKAGE_PHP_SAPI_CLI_CGI
	bool "PHP CGI and CLI options are now separate"
	select BR2_PACKAGE_PHP_SAPI_CLI
	select BR2_PACKAGE_PHP_SAPI_CGI
	select BR2_LEGACY
	help
	  The PHP Interface options have been split up into a
	  separate option for each interface.

config BR2_PACKAGE_PHP_SAPI_CLI_FPM
	bool "PHP CLI and FPM options are now separate"
	select BR2_PACKAGE_PHP_SAPI_CLI
	select BR2_PACKAGE_PHP_SAPI_FPM
	select BR2_LEGACY
	help
	  The PHP Interface options have been split up into a
	  separate option for each interface.

config BR2_PACKAGE_WVSTREAMS
	bool "wvstreams removed"
	select BR2_LEGACY
	help
	  wvstreams is not maintained anymore since about 2009. It also
	  doesn't build anymore with recent compilers (GCC 5+).

config BR2_PACKAGE_WVDIAL
	bool "wvdial removed"
	select BR2_LEGACY
	help
	  wvdial is not maintained anymore since about 2009. It also
	  doesn't build anymore with recent compilers (GCC 5+).

config BR2_PACKAGE_WEBKITGTK24
	bool "webkitgtk 2.4.x removed"
	select BR2_LEGACY
	help
	  This legacy package only existed because some other packages
	  depended on that specific version of webkitgtk. However, the
	  other packages have been fixed. webkitgtk 2.4 is full of
	  security issues so it needs to be removed.

config BR2_PACKAGE_TORSMO
	bool "torsmo removed"
	select BR2_LEGACY
	help
	  torsmo has been unmaintained for a long time, and nobody
	  seems to be interested in it.

config BR2_PACKAGE_SSTRIP
	bool "sstrip removed"
	select BR2_LEGACY
	help
	  sstrip is unmaintained and potentially harmful. It doesn't
	  save so much compared to normal binutils strip, and there is
	  a big risk of binaries that don't work. Use normal strip
	  instead.

config BR2_KERNEL_HEADERS_4_3
	bool "kernel headers version 4.3.x are no longer supported"
	select BR2_LEGACY
	help
	  Version 4.3.x of the Linux kernel headers are no longer
	  maintained upstream and are now removed.

config BR2_KERNEL_HEADERS_4_2
	bool "kernel headers version 4.2.x are no longer supported"
	select BR2_LEGACY
	help
	  Version 4.2.x of the Linux kernel headers are no longer
	  maintained upstream and are now removed.

config BR2_PACKAGE_KODI_ADDON_XVDR
	bool "kodi-addon-xvdr removed"
	select BR2_LEGACY
	help
	  According to the github project page:
	  https://github.com/pipelka/xbmc-addon-xvdr
	  this package is discontinued.

config BR2_PACKAGE_IPKG
	bool "ipkg removed"
	select BR2_LEGACY
	help
	  ipkg dates back to the early 2000s when Compaq started the
	  handhelds.org project and it hasn't seen development since
	  2006. Use opkg as a replacement.

config BR2_GCC_VERSION_4_7_X
	bool "gcc 4.7.x support removed"
	select BR2_LEGACY
	help
	  Support for gcc version 4.7.x has been removed. The current
	  default version (4.9.x or later) has been selected instead.

config BR2_BINUTILS_VERSION_2_24_X
	bool "binutils version 2.24 support removed"
	select BR2_LEGACY
	help
	  Support for binutils version 2.24 has been removed. The
	  current default version (2.26 or later) has been selected
	  instead.

config BR2_PACKAGE_WESTON_RPI
	bool "Weston propietary RPI support is gone"
	select BR2_LEGACY
	help
	  Upstream decided the propietary (rpi-userland) weston composer
	  support wasn't worth the effort so it was removed. Switch to
	  the open VC4 support.

config BR2_LINUX_KERNEL_TOOL_CPUPOWER
	bool "linux-tool cpupower"
	depends on BR2_LINUX_KERNEL
	select BR2_LEGACY
	select BR2_PACKAGE_LINUX_TOOLS_CPUPOWER
	help
	  Linux tool cpupower option was renamed.

config BR2_LINUX_KERNEL_TOOL_PERF
	bool "linux-tool perf"
	depends on BR2_LINUX_KERNEL
	select BR2_LEGACY
	select BR2_PACKAGE_LINUX_TOOLS_PERF
	help
	  Linux tool perf option was renamed.

config BR2_LINUX_KERNEL_TOOL_SELFTESTS
	bool "linux-tool selftests"
	depends on BR2_LINUX_KERNEL
	select BR2_LEGACY
	select BR2_PACKAGE_LINUX_TOOLS_SELFTESTS
	help
	  Linux tool selftests option was renamed.

config BR2_GCC_VERSION_4_8_ARC
	bool "gcc arc option renamed"
	select BR2_LEGACY
	help
	  The option that selects the gcc version for the ARC
	  architecture has been renamed to BR2_GCC_VERSION_ARC.
# Note: BR2_GCC_VERSION_4_8_ARC is still referenced from
# package/gcc/Config.in.host

config BR2_KERNEL_HEADERS_4_0
	bool "kernel headers version 4.0.x are no longer supported"
	select BR2_LEGACY
	help
	  Version 4.0.x of the Linux kernel headers have been deprecated
	  for more than four buildroot releases and are now removed.

config BR2_KERNEL_HEADERS_3_19
	bool "kernel headers version 3.19.x are no longer supported"
	select BR2_LEGACY
	help
	  Version 3.19.x of the Linux kernel headers have been
	  deprecated for more than four buildroot releases and are now
	  removed.

config BR2_PACKAGE_LIBEVAS_GENERIC_LOADERS
	bool "libevas-generic-loaders package removed"
	select BR2_LEGACY
	select BR2_PACKAGE_EFL
	help
	  With EFL 1.18, libevas-generic-loaders is now provided by the
	  efl package.

config BR2_PACKAGE_ELEMENTARY
	bool "elementary package removed"
	select BR2_LEGACY
	select BR2_PACKAGE_EFL
	help
	  With EFL 1.18, elementary is now provided by the efl package.

config BR2_LINUX_KERNEL_CUSTOM_LOCAL
	bool "Linux kernel local directory option removed"
	select BR2_LEGACY
	help
	  The option to select a local directory as the source of the
	  Linux kernel has been removed. It hurts reproducibility of
	  builds.

	  In case you were using this option during development of your
	  Linux kernel, use the override mechanism instead.

###############################################################################
comment "Legacy options removed in 2016.08"

config BR2_PACKAGE_EFL_JP2K
	bool "libevas jp2k loader has been removed"
	select BR2_LEGACY
	help
	  JP2K support in EFL requires openjpeg 1.x (libopenjpeg1.pc)
	  while Buildroot only packages openjpeg 2.x. Therefore, the
	  JP2K loader has been removed from EFL.

config BR2_PACKAGE_SYSTEMD_COMPAT
	bool "systemd compatibility libraries have been removed"
	select BR2_LEGACY
	help
	  The systemd option to enable the compatibility libraries has
	  been removed. Theses libraries have been useless since a few
	  version, and have been fully dropped from the source since
	  v230.

config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_LIVEADDER
	bool "gst1-plugins-bad liveadder plugin removed"
	select BR2_LEGACY
	select BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_AUDIOMIXER
	help
	  The functionality of the liveadder plugin of the
	  gst1-plugins-bad package has been merged into audiomixer.

config BR2_PACKAGE_LIBFSLVPUWRAP
	bool "libfslvpuwrap has been renamed to imx-vpuwrap"
	select BR2_LEGACY
	select BR2_PACKAGE_IMX_VPUWRAP
	help
	  The libfslvpuwrap has been renamed to match the renamed
	  package.

config BR2_PACKAGE_LIBFSLPARSER
	bool "libfslparser has been renamed to imx-parser"
	select BR2_LEGACY
	select BR2_PACKAGE_IMX_PARSER
	help
	  The libfslparser has been renamed to match the renamed
	  package.

config BR2_PACKAGE_LIBFSLCODEC
	bool "libfslcodec has been renamed to imx-codec"
	select BR2_LEGACY
	select BR2_PACKAGE_IMX_CODEC
	help
	  The libfslcodec has been renamed to match the renamed package.

config BR2_PACKAGE_UBOOT_TOOLS_MKIMAGE_FIT_SIGNATURE_SUPPORT
	bool "FIT support in uboot-tools has been refactored"
	select BR2_LEGACY
	select BR2_PACKAGE_DTC
	select BR2_PACKAGE_DTC_PROGRAMS
	select BR2_PACKAGE_UBOOT_TOOLS_FIT_SUPPORT
	select BR2_PACKAGE_UBOOT_TOOLS_FIT_SIGNATURE_SUPPORT
	select BR2_PACKAGE_UBOOT_TOOLS_MKIMAGE
	help
	  This option has been removed in favor of a more fine-grained
	  configuration, which is recommended. Selecting this option
	  enables FIT and FIT signature support for the target packages.
	  It will also select the dtc and openssl packages.

config BR2_PTHREADS_OLD
	bool "linuxthreads (stable/old)"
	select BR2_LEGACY
	help
	  Linuxthreads have been reworked, BR2_PTHREADS_OLD is now
	  BR2_PTHREADS and the old BR2_PTHREADS - LT.new got removed.

config BR2_BINUTILS_VERSION_2_23_X
	bool "binutils 2.23 removed"
	select BR2_LEGACY
	help
	  Binutils 2.23 has been removed, using a newer version is
	  recommended.

config BR2_TOOLCHAIN_BUILDROOT_EGLIBC
	bool "eglibc support has been removed"
	select BR2_LEGACY
	help
	  The eglibc project no longer exists, as it has been merged
	  back into the glibc project. Therefore, support for eglibc
	  has been removed, and glibc should be used instead.

config BR2_GDB_VERSION_7_8
	bool "gdb 7.8 has been removed"
	select BR2_LEGACY
	help
	  The 7.8 version of gdb has been removed. Use a newer version
	  instead.

###############################################################################
comment "Legacy options removed in 2016.05"

config BR2_PACKAGE_OPENVPN_CRYPTO_POLARSSL
	bool "openvpn polarssl crypto backend removed"
	select BR2_LEGACY
	help
	  The OpenVPN polarssl crypto backend option has been removed.
	  Version from 2.3.10 onwards need polarssl >= 1.3.8 but aren't
	  compatible with mbedtls (polarssl) series 2.x which is the
	  version provided in buildroot. And both can't coexist.
	  It now uses OpenSSL as the only option.

config BR2_PACKAGE_NGINX_HTTP_SPDY_MODULE
	bool "nginx http spdy module removed"
	select BR2_LEGACY
	select BR2_PACKAGE_NGINX_HTTP_V2_MODULE
	help
	  The ngx_http_spdy_module has been superseded by the
	  ngx_http_v2_module since nginx v1.9.5.  The
	  ngx_http_v2_module modules has been automatically selected
	  in your configuration.

config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_RTP
	bool "gst1-plugins-bad rtp plugin moved to good"
	select BR2_LEGACY
	help
	  The rtp plugin has been moved from gst1-plugins-base to
	  gst1-plugins-good.

config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_MPG123
	bool "gst1-plugins-bad mpg123 plugin moved to ugly"
	select BR2_LEGACY
	help
	  The mpg123 plugin has been moved from gst1-plugins-bad to
	  gst1-plugins-ugly.

config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_POWERPC
	bool "PowerPC Sourcery toolchain has been removed"
	select BR2_LEGACY
	help
	  The Sourcery CodeBench toolchain for the PowerPC
	  architecture has been removed, as it was very old, not
	  maintained, and causing numerous build failures with modern
	  userspace packages.

config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_POWERPC_E500V2
	bool "PowerPC Sourcery E500v2 toolchain has been removed"
	select BR2_LEGACY
	help
	  The Sourcery CodeBench toolchain for the PowerPC E500v2
	  architecture has been removed, as it was very old, not
	  maintained, and causing numerous build failures with modern
	  userspace packages.

config BR2_x86_i386
	bool "x86 i386 support removed"
	select BR2_LEGACY
	help
	  The support for the i386 processors of the x86 architecture
	  has been removed.

config BR2_PACKAGE_QT5QUICK1
	bool "qt5quick1 package removed"
	select BR2_LEGACY
	help
	  The qt5quick1 package has been removed, since it was removed
	  from upstream starting from Qt 5.6.

config BR2_TARGET_UBOOT_CUSTOM_PATCH_DIR
	string "uboot custom patch dir has been removed"
	help
	  The uboot custom patch directory option has been removed. Use
	  the improved BR2_TARGET_UBOOT_PATCH option instead.

config BR2_TARGET_UBOOT_CUSTOM_PATCH_DIR_WRAP
	bool
	default y if BR2_TARGET_UBOOT_CUSTOM_PATCH_DIR != ""
	select BR2_LEGACY

# Note: BR2_TARGET_UBOOT_CUSTOM_PATCH_DIR is still referenced from
# boot/uboot/Config.in

config BR2_PACKAGE_XDRIVER_XF86_INPUT_VOID
	bool "xf86-input-void removed"
	select BR2_LEGACY
	help
	  The xf86-input-void package has been removed, there's no need
	  for it in any modern (post-2007) xorg server.

config BR2_KERNEL_HEADERS_3_17
	bool "kernel headers version 3.17.x are no longer supported"
	select BR2_LEGACY
	help
	  Version 3.17.x of the Linux kernel headers have been
	  deprecated for more than four buildroot releases and are now
	  removed.

config BR2_GDB_VERSION_7_7
	bool "gdb 7.7 has been removed"
	select BR2_LEGACY
	help
	  The 7.7 version of gdb has been removed. Use a newer version
	  instead.

config BR2_PACKAGE_FOOMATIC_FILTERS
	bool "foomatic-filters"
	select BR2_LEGACY
	help
	  The foomatic-filters package was removed.

config BR2_PACKAGE_SAMBA
	bool "samba"
	select BR2_LEGACY
	help
	  The samba package was removed in favour of samba4 since the
	  3.x series isn't supported by upstream any longer.

config BR2_PACKAGE_KODI_WAVPACK
	bool "wavpack"
	select BR2_LEGACY
	help
	  wavpack support was removed in favour of ffmpeg:
	  https://github.com/xbmc/xbmc/commit/7916902c9e6f7a523265594f3ad7f921f93f1cd4

config BR2_PACKAGE_KODI_RSXS
	bool "rsxs support in Kodi was moved to an addon"
	select BR2_LEGACY
	select BR2_PACKAGE_KODI_SCREENSAVER_RSXS
	help
	  rsxs support in Kodi was moved to an addon

config BR2_PACKAGE_KODI_GOOM
	bool "Goom support in Kodi was moved to an addon"
	select BR2_LEGACY
	select BR2_PACKAGE_KODI_VISUALISATION_GOOM
	help
	  Goom support in Kodi was moved to an addon

config BR2_PACKAGE_SYSTEMD_ALL_EXTRAS
	bool "systemd all extras option has been removed"
	select BR2_LEGACY
	select BR2_PACKAGE_XZ
	select BR2_PACKAGE_LIBGCRYPT
	help
	  The systemd option to enable "all extras" has been
	  removed. To get the same features, the libgcrypt and xz
	  package should now be enabled.

config BR2_GCC_VERSION_4_5_X
	bool "gcc 4.5.x has been removed"
	select BR2_LEGACY
	help
	  The 4.5.x version of gcc has been removed. Use a newer
	  version instead.

config BR2_PACKAGE_SQLITE_READLINE
	bool "sqlite command-line editing support was updated"
	select BR2_PACKAGE_NCURSES
	select BR2_PACKAGE_READLINE
	select BR2_LEGACY
	help
	  This option was removed in favour of the sqlite package
	  deciding itself depending on the enabled packages whether
	  command-line editing should be enabled, it also also takes
	  libedit into account.

###############################################################################
comment "Legacy options removed in 2016.02"

config BR2_PACKAGE_DOVECOT_BZIP2
	bool "bzip2 support option has been removed"
	select BR2_LEGACY
	select BR2_PACKAGE_BZIP2
	help
	  Bzip2 support is built if the bzip2 package is selected.

config BR2_PACKAGE_DOVECOT_ZLIB
	bool "zlib support option has been removed"
	select BR2_LEGACY
	select BR2_PACKAGE_ZLIB
	help
	  Zlib support is built if the zlib package is selected.

config BR2_PACKAGE_E2FSPROGS_FINDFS
	bool "e2fsprogs findfs option has been removed"
	select BR2_LEGACY
	help
	  This option attempted to enable findfs capabilities from
	  e2fsprogs but has not worked since July 2015 (due to
	  packaging changes). One can use BusyBox's findfs support or
	  enable the BR2_PACKAGE_UTIL_LINUX_BINARIES option.

config BR2_PACKAGE_OPENPOWERLINK_DEBUG_LEVEL
	bool "openpowerlink debug option has been removed"
	select BR2_LEGACY
	help
	  This option depends on BR2_ENABLE_DEBUG which should not be
	  used by packages anymore.

config BR2_PACKAGE_OPENPOWERLINK_KERNEL_MODULE
	bool "openpowerlink package has been updated"
	select BR2_LEGACY
	help
	  openpowerlink kernel modules are built if the
	  kernel stack library is selected.
# Note: BR2_PACKAGE_OPENPOWERLINK_KERNEL_MODULE is still referenced from
# package/openpowerlink/Config.in

config BR2_PACKAGE_OPENPOWERLINK_LIBPCAP
	bool "openpowerlink package has been updated"
	select BR2_LEGACY
	help
	  The user space support has been split in two part:
	  - a monolithic user space library
	  - a user space daemon driver
# Note: BR2_PACKAGE_OPENPOWERLINK_LIBPCAP is still referenced from
# package/openpowerlink/Config.in

config BR2_LINUX_KERNEL_SAME_AS_HEADERS
	bool "using the linux headers version for the kernel has been removed"
	select BR2_LEGACY
	help
	  The option to use the version of the kernel headers for the
	  kernel to build has been removed.

	  There is now the converse, better-suited and more versatile
	  option to use the kernel version for the linux headers.

config BR2_PACKAGE_CUPS_PDFTOPS
	bool "Pdftops support has been removed from Cups"
	select BR2_PACKAGE_CUPS_FILTERS
	select BR2_LEGACY
	help
	  Pdftops support has been removed from the cups package
	  It is now part of the cups-filters package.

config BR2_KERNEL_HEADERS_3_16
	bool "kernel headers version 3.16.x are no longer supported"
	select BR2_LEGACY
	help
	  Version 3.16.x of the Linux kernel headers have been
	  deprecated for more than four buildroot releases and are now
	  removed.

config BR2_PACKAGE_PYTHON_PYXML
	bool "python-pyxml package has been removed"
	select BR2_LEGACY
	help
	  PyXML is obsolete and its functionality is covered either via
	  native Python XML support or python-lxml package.

# BR2_ENABLE_SSP is still referenced in Config.in (default in choice)
config BR2_ENABLE_SSP
	bool "Stack Smashing protection now has different levels"
	help
	  The protection offered by SSP can now be selected from
	  different protection levels. Be sure to review the SSP level
	  in the build options menu.

config BR2_PACKAGE_DIRECTFB_CLE266
	bool "cle266 driver for directfb removed"
	select BR2_LEGACY
	help
	  The cle266 directfb driver support has been removed.
	  It doesn't build in the latest version and it's unlikely
	  anyone has any use for it.

config BR2_PACKAGE_DIRECTFB_UNICHROME
	bool "unichrome driver for directfb removed"
	select BR2_LEGACY
	help
	  The unichrome directfb driver support has been removed.
	  It doesn't build in the latest version and it's unlikely
	  anyone has any use for it.

config BR2_PACKAGE_LIBELEMENTARY
	bool "libelementary has been renamed to elementary"
	select BR2_LEGACY
	select BR2_PACKAGE_ELEMENTARY
	help
	  The libelementary package has been renamed to match the
	  upstream name.

config BR2_PACKAGE_LIBEINA
	bool "libeina package has been removed"
	select BR2_LEGACY
	select BR2_PACKAGE_EFL
	help
	  With EFL 1.15, libeina is now provided by the efl package.

config BR2_PACKAGE_LIBEET
	bool "libeet package has been removed"
	select BR2_LEGACY
	select BR2_PACKAGE_EFL
	help
	  With EFL 1.15, libeet is now provided by the efl package.

config BR2_PACKAGE_LIBEVAS
	bool "libevas package has been removed"
	select BR2_LEGACY
	select BR2_PACKAGE_EFL
	help
	  With EFL 1.15, libevas is now provided by the efl package.

config BR2_PACKAGE_LIBECORE
	bool "libecore package has been removed"
	select BR2_LEGACY
	select BR2_PACKAGE_EFL
	help
	  With EFL 1.15, libecore is now provided by the efl package.

config BR2_PACKAGE_LIBEDBUS
	bool "libedbus package has been removed"
	select BR2_LEGACY
	select BR2_PACKAGE_EFL
	help
	  With EFL 1.15, libedbus is now provided by the efl package.

config BR2_PACKAGE_LIBEFREET
	bool "libefreet package has been removed"
	select BR2_LEGACY
	select BR2_PACKAGE_EFL
	help
	  With EFL 1.15, libefreet is now provided by the efl package.

config BR2_PACKAGE_LIBEIO
	bool "libeio package has been removed"
	select BR2_LEGACY
	select BR2_PACKAGE_EFL
	help
	  With EFL 1.15, libeio is now provided by the efl package.

config BR2_PACKAGE_LIBEMBRYO
	bool "libembryo package has been removed"
	select BR2_LEGACY
	select BR2_PACKAGE_EFL
	help
	  With EFL 1.15, libembryo is now provided by the efl package.

config BR2_PACKAGE_LIBEDJE
	bool "libedje package has been removed"
	select BR2_LEGACY
	select BR2_PACKAGE_EFL
	help
	  With EFL 1.15, libedje is now provided by the efl package.

config BR2_PACKAGE_LIBETHUMB
	bool "libethumb package has been removed"
	select BR2_LEGACY
	select BR2_PACKAGE_EFL
	help
	  With EFL 1.15, libethumb is now provided by the efl package.

config BR2_PACKAGE_INFOZIP
	bool "infozip option has been renamed to zip"
	select BR2_LEGACY
	select BR2_PACKAGE_ZIP
	help
	  Info-Zip's Zip package has been renamed from infozip to zip,
	  to avoid ambiguities with Info-Zip's UnZip which has been
	  added in the unzip package.

config BR2_BR2_PACKAGE_NODEJS_0_10_X
	bool "nodejs 0.10.x option removed"
	select BR2_LEGACY
	select BR2_PACKAGE_NODEJS
	help
	  nodejs 0.10.x option has been removed.  0.10.x is now
	  automatically chosen for ARMv5 architectures only and the
	  latest nodejs for all other supported architectures. The
	  correct nodejs version has been automatically selected in your
	  configuration.

config BR2_BR2_PACKAGE_NODEJS_0_12_X
	bool "nodejs version 0.12.x has been removed"
	select BR2_LEGACY
	select BR2_PACKAGE_NODEJS
	help
	  nodejs version 0.12.x has been removed.  As an alternative,
	  the latest nodejs version has been automatically selected in
	  your configuration.

config BR2_BR2_PACKAGE_NODEJS_4_X
	bool "nodejs version 4.x has been removed"
	select BR2_LEGACY
	select BR2_PACKAGE_NODEJS
	help
	  nodejs version 4.x has been removed.  As an alternative,
	  the latest nodejs version has been automatically selected in
	  your configuration.

###############################################################################
comment "Legacy options removed in 2015.11"

config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_REAL
	bool "gst1-plugins-bad real plugin has been removed"
	select BR2_LEGACY
	help
	  The real plugin from GStreamer 1 bad plugins has been
	  removed.

config BR2_PACKAGE_MEDIA_CTL
	bool "media-ctl package has been removed"
	select BR2_LEGACY
	select BR2_PACKAGE_LIBV4L
	select BR2_PACKAGE_LIBV4L_UTILS
	help
	  media-ctl source and developement have been moved to v4l-utils
	  since June 2014. For an up-to-date media-ctl version select
	  BR2_PACKAGE_LIBV4L and BR2_PACKAGE_LIBV4L_UTILS.

config BR2_PACKAGE_SCHIFRA
	bool "schifra package has been removed"
	select BR2_LEGACY
	help
	  Schifra package has been maked broken since 2014.11 release
	  and haven't been fixed since then.

config BR2_PACKAGE_ZXING
	bool "zxing option has been renamed"
	select BR2_LEGACY
	select BR2_PACKAGE_ZXING_CPP
	help
	  ZXing no longer provides the cpp bindings, it has been renamed
	  to BR2_PACKAGE_ZXING_CPP which uses a new upstream.

# Since FreeRDP has new dependencies, protect this legacy to avoid the
# infamous "unmet direct dependencies" kconfig error.
config BR2_PACKAGE_FREERDP_CLIENT
	bool "freerdp client option renamed"
	depends on BR2_PACKAGE_FREERDP
	select BR2_LEGACY
	select BR2_PACKAGE_FREERDP_CLIENT_X11

config BR2_PACKAGE_BLACKBOX
	bool "blackbox package has been removed"
	select BR2_LEGACY
	help
	  Upstream is dead and the package has been deprecated for
	  some time. There are other alternative maintained WMs.

config BR2_KERNEL_HEADERS_3_0
	bool "kernel headers version 3.0.x are no longer supported"
	select BR2_LEGACY
	help
	  Version 3.0.x of the Linux kernel headers have been deprecated
	  for more than four buildroot releases and are now removed.

config BR2_KERNEL_HEADERS_3_11
	bool "kernel headers version 3.11.x are no longer supported"
	select BR2_LEGACY
	help
	  Version 3.11.x of the Linux kernel headers have been
	  deprecated for more than four buildroot releases and are now
	  removed.

config BR2_KERNEL_HEADERS_3_13
	bool "kernel headers version 3.13.x are no longer supported"
	select BR2_LEGACY
	help
	  Version 3.13.x of the Linux kernel headers have been
	  deprecated for more than four buildroot releases and are now
	  removed.

config BR2_KERNEL_HEADERS_3_15
	bool "kernel headers version 3.15.x are no longer supported"
	select BR2_LEGACY
	help
	  Version 3.15.x of the Linux kernel headers have been
	  deprecated for more than four buildroot releases and are now
	  removed.

config BR2_PACKAGE_DIRECTFB_EXAMPLES_ANDI
	bool "DirectFB example df_andi has been removed"
	select BR2_LEGACY
	select BR2_PACKAGE_DIRECTFB_EXAMPLES
	help
	  The per-DirectFB example options have been removed. The
	  BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all
	  examples.

config BR2_PACKAGE_DIRECTFB_EXAMPLES_BLTLOAD
	bool "DirectFB example df_bltload has been removed"
	select BR2_LEGACY
	select BR2_PACKAGE_DIRECTFB_EXAMPLES
	help
	  The per-DirectFB example options have been removed. The
	  BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all
	  examples.

config BR2_PACKAGE_DIRECTFB_EXAMPLES_CPULOAD
	bool "DirectFB example df_cpuload has been removed"
	select BR2_LEGACY
	select BR2_PACKAGE_DIRECTFB_EXAMPLES
	help
	  The per-DirectFB example options have been removed. The
	  BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all
	  examples.

config BR2_PACKAGE_DIRECTFB_EXAMPLES_DATABUFFER
	bool "DirectFB example df_databuffer has been removed"
	select BR2_LEGACY
	select BR2_PACKAGE_DIRECTFB_EXAMPLES
	help
	  The per-DirectFB example options have been removed. The
	  BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all
	  examples.

config BR2_PACKAGE_DIRECTFB_EXAMPLES_DIOLOAD
	bool "DirectFB example df_dioload has been removed"
	select BR2_LEGACY
	select BR2_PACKAGE_DIRECTFB_EXAMPLES
	help
	  The per-DirectFB example options have been removed. The
	  BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all
	  examples.

config BR2_PACKAGE_DIRECTFB_EXAMPLES_DOK
	bool "DirectFB example df_dok has been removed"
	select BR2_LEGACY
	select BR2_PACKAGE_DIRECTFB_EXAMPLES
	help
	  The per-DirectFB example options have been removed. The
	  BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all
	  examples.

config BR2_PACKAGE_DIRECTFB_EXAMPLES_DRIVERTEST
	bool "DirectFB example df_drivertest has been removed"
	select BR2_LEGACY
	select BR2_PACKAGE_DIRECTFB_EXAMPLES
	help
	  The per-DirectFB example options have been removed. The
	  BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all
	  examples.

config BR2_PACKAGE_DIRECTFB_EXAMPLES_FIRE
	bool "DirectFB example df_fire has been removed"
	select BR2_LEGACY
	select BR2_PACKAGE_DIRECTFB_EXAMPLES
	help
	  The per-DirectFB example options have been removed. The
	  BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all
	  examples.

config BR2_PACKAGE_DIRECTFB_EXAMPLES_FLIP
	bool "DirectFB example df_flip has been removed"
	select BR2_LEGACY
	select BR2_PACKAGE_DIRECTFB_EXAMPLES
	help
	  The per-DirectFB example options have been removed. The
	  BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all
	  examples.

config BR2_PACKAGE_DIRECTFB_EXAMPLES_FONTS
	bool "DirectFB example df_fonts has been removed"
	select BR2_LEGACY
	select BR2_PACKAGE_DIRECTFB_EXAMPLES
	help
	  The per-DirectFB example options have been removed. The
	  BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all
	  examples.

config BR2_PACKAGE_DIRECTFB_EXAMPLES_INPUT
	bool "DirectFB example df_input has been removed"
	select BR2_LEGACY
	select BR2_PACKAGE_DIRECTFB_EXAMPLES
	help
	  The per-DirectFB example options have been removed. The
	  BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all
	  examples.

config BR2_PACKAGE_DIRECTFB_EXAMPLES_JOYSTICK
	bool "DirectFB example df_joystick has been removed"
	select BR2_LEGACY
	select BR2_PACKAGE_DIRECTFB_EXAMPLES
	help
	  The per-DirectFB example options have been removed. The
	  BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all
	  examples.

config BR2_PACKAGE_DIRECTFB_EXAMPLES_KNUCKLES
	bool "DirectFB example df_knuckles has been removed"
	select BR2_LEGACY
	select BR2_PACKAGE_DIRECTFB_EXAMPLES
	help
	  The per-DirectFB example options have been removed. The
	  BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all
	  examples.

config BR2_PACKAGE_DIRECTFB_EXAMPLES_LAYER
	bool "DirectFB example df_layer has been removed"
	select BR2_LEGACY
	select BR2_PACKAGE_DIRECTFB_EXAMPLES
	help
	  The per-DirectFB example options have been removed. The
	  BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all
	  examples.

config BR2_PACKAGE_DIRECTFB_EXAMPLES_MATRIX
	bool "DirectFB example df_matrix has been removed"
	select BR2_LEGACY
	select BR2_PACKAGE_DIRECTFB_EXAMPLES
	help
	  The per-DirectFB example options have been removed. The
	  BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all
	  examples.

config BR2_PACKAGE_DIRECTFB_EXAMPLES_MATRIX_WATER
	bool "DirectFB example df_matrix_water has been removed"
	select BR2_LEGACY
	select BR2_PACKAGE_DIRECTFB_EXAMPLES
	help
	  The per-DirectFB example options have been removed. The
	  BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all
	  examples.

config BR2_PACKAGE_DIRECTFB_EXAMPLES_NEO
	bool "DirectFB example df_neo has been removed"
	select BR2_LEGACY
	select BR2_PACKAGE_DIRECTFB_EXAMPLES
	help
	  The per-DirectFB example options have been removed. The
	  BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all
	  examples.

config BR2_PACKAGE_DIRECTFB_EXAMPLES_NETLOAD
	bool "DirectFB example df_netload has been removed"
	select BR2_LEGACY
	select BR2_PACKAGE_DIRECTFB_EXAMPLES
	help
	  The per-DirectFB example options have been removed. The
	  BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all
	  examples.

config BR2_PACKAGE_DIRECTFB_EXAMPLES_PALETTE
	bool "DirectFB example df_palette has been removed"
	select BR2_PACKAGE_DIRECTFB_EXAMPLES
	help
	  The per-DirectFB example options have been removed. The
	  BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all
	  examples.

config BR2_PACKAGE_DIRECTFB_EXAMPLES_PARTICLE
	bool "DirectFB example df_particle has been removed"
	select BR2_LEGACY
	select BR2_PACKAGE_DIRECTFB_EXAMPLES
	help
	  The per-DirectFB example options have been removed. The
	  BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all
	  examples.

config BR2_PACKAGE_DIRECTFB_EXAMPLES_PORTER
	bool "DirectFB example df_porter has been removed"
	select BR2_LEGACY
	select BR2_PACKAGE_DIRECTFB_EXAMPLES
	help
	  The per-DirectFB example options have been removed. The
	  BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all
	  examples.

config BR2_PACKAGE_DIRECTFB_EXAMPLES_STRESS
	bool "DirectFB example df_stress has been removed"
	select BR2_PACKAGE_DIRECTFB_EXAMPLES
	help
	  The per-DirectFB example options have been removed. The
	  BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all
	  examples.

config BR2_PACKAGE_DIRECTFB_EXAMPLES_TEXTURE
	bool "DirectFB example df_texture has been removed"
	select BR2_LEGACY
	select BR2_PACKAGE_DIRECTFB_EXAMPLES
	help
	  The per-DirectFB example options have been removed. The
	  BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all
	  examples.

config BR2_PACKAGE_DIRECTFB_EXAMPLES_VIDEO
	bool "DirectFB example df_video has been removed"
	select BR2_LEGACY
	select BR2_PACKAGE_DIRECTFB_EXAMPLES
	help
	  The per-DirectFB example options have been removed. The
	  BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all
	  examples.

config BR2_PACKAGE_DIRECTFB_EXAMPLES_VIDEO_PARTICLE
	bool "DirectFB example df_video_particle has been removed"
	select BR2_LEGACY
	select BR2_PACKAGE_DIRECTFB_EXAMPLES
	help
	  The per-DirectFB example options have been removed. The
	  BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all
	  examples.

config BR2_PACKAGE_DIRECTFB_EXAMPLES_WINDOW
	bool "DirectFB example df_window has been removed"
	select BR2_LEGACY
	select BR2_PACKAGE_DIRECTFB_EXAMPLES
	help
	  The per-DirectFB example options have been removed. The
	  BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all
	  examples.

config BR2_PACKAGE_KOBS_NG
	bool "kobs-ng was replaced by imx-kobs"
	select BR2_LEGACY
	select BR2_PACKAGE_IMX_KOBS
	help
	  The outdated kobs-ng has been replaced by the Freescale-
	  maintained imx-kobs package.

config BR2_PACKAGE_SAWMAN
	bool "sawman package removed"
	select BR2_LEGACY
	select BR2_PACKAGE_DIRECTFB_SAWMAN
	help
	  This option has been removed because the sawman package no
	  longer exists: it was merged inside DirectFB itself. This
	  feature can now be enabled using the
	  BR2_PACKAGE_DIRECTFB_SAWMAN option.

config BR2_PACKAGE_DIVINE
	bool "divine package removed"
	select BR2_LEGACY
	select BR2_PACKAGE_DIRECTFB_DIVINE
	help
	  This option has been removed because the divine package no
	  longer exists: it was merged inside DirectFB itself. This
	  feature can now be enabled using the
	  BR2_PACKAGE_DIRECTFB_DIVINE option.

###############################################################################
comment "Legacy options removed in 2015.08"

config BR2_PACKAGE_KODI_PVR_ADDONS
	bool "Kodi PVR addon was split"
	select BR2_LEGACY
	select BR2_PACKAGE_KODI_PVR_ARGUSTV
	select BR2_PACKAGE_KODI_PVR_DVBLINK
	select BR2_PACKAGE_KODI_PVR_DVBVIEWER
	select BR2_PACKAGE_KODI_PVR_FILMON
	select BR2_PACKAGE_KODI_PVR_HTS
	select BR2_PACKAGE_KODI_PVR_IPTVSIMPLE
	select BR2_PACKAGE_KODI_PVR_MEDIAPORTAL_TVSERVER
	select BR2_PACKAGE_KODI_PVR_MYTHTV
	select BR2_PACKAGE_KODI_PVR_NEXTPVR
	select BR2_PACKAGE_KODI_PVR_NJOY
	select BR2_PACKAGE_KODI_PVR_PCTV
	select BR2_PACKAGE_KODI_PVR_STALKER
	select BR2_PACKAGE_KODI_PVR_VBOX
	select BR2_PACKAGE_KODI_PVR_VDR_VNSI
	select BR2_PACKAGE_KODI_PVR_VUPLUS
	select BR2_PACKAGE_KODI_PVR_WMC
	help
	  Kodi PVR addon was split into separate modules

config BR2_BINUTILS_VERSION_2_23_2
	bool "binutils 2.23 option renamed"
	select BR2_LEGACY
	help
	  Binutils 2.23.2 has been removed, using a newer version is
	  recommended.

config BR2_BINUTILS_VERSION_2_24
	bool "binutils 2.24 option renamed"
	select BR2_LEGACY
	select BR2_BINUTILS_VERSION_2_24_X
	help
	  The binutils version option has been renamed to match the
	  same patchlevel logic used by gcc. The new option is now
	  BR2_BINUTILS_VERSION_2_24_X.

config BR2_BINUTILS_VERSION_2_25
	bool "binutils 2.25 option renamed"
	select BR2_LEGACY
	select BR2_BINUTILS_VERSION_2_25_X
	help
	  The binutils version option has been renamed to match the
	  same patchlevel logic used by gcc. The new option is now
	  BR2_BINUTILS_VERSION_2_25_X.

config BR2_PACKAGE_PERF
	bool "perf option has been renamed"
	select BR2_LEGACY
	select BR2_LINUX_KERNEL_TOOL_PERF
	help
	  The perf package has been moved as a Linux tools package,
	  and the option to enable it is now
	  BR2_LINUX_KERNEL_TOOL_PERF.

config BR2_BINUTILS_VERSION_2_22
	bool "binutils 2.22 removed"
	select BR2_LEGACY
	help
	  Binutils 2.22 has been removed, using a newer version is
	  recommended.

config BR2_PACKAGE_GPU_VIV_BIN_MX6Q
	bool "gpu-viv-bin-mx6q"
	select BR2_LEGACY
	select BR2_PACKAGE_IMX_GPU_VIV
	help
	  Vivante graphics libraries have been renamed to
	  BR2_PACKAGE_IMX_GPU_VIV to be aligned with upstream package
	  name.

config BR2_PACKAGE_LIBSEMANAGE_PYTHON_BINDINGS
	bool "libsemanage python bindings removed"
	depends on BR2_PACKAGE_PYTHON
	select BR2_LEGACY
	help
	  This option has been removed, since the libsemanage Python
	  bindings on the target were not useful.

config BR2_TARGET_UBOOT_NETWORK
	bool "U-Boot custom network settings removed"
	select BR2_LEGACY
	help
	  U-Boot's custom network settings options have been removed.

endmenu

endif # !SKIP_LEGACY
