#
# 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.08"

config BR2_PACKAGE_MIDORI
	bool "midori has been removed"
	select BR2_LEGACY
	help
	  The original WebKitGTK-based Midori is no longer maintained
	  and doesn't build since WebKitGTK moved to libsoup3 as of
	  commit 38a098df133aaa2ebf09742054b02db5a44f58e5.

config BR2_PACKAGE_FROTZ
	bool "frotz has been removed"
	select BR2_LEGACY
	help
	  This package was causing build breakage, and was no longer
	  maintained in Buildroot.

config BR2_PACKAGE_FAN_CTRL
	bool "fan-ctrl has been removed"
	select BR2_LEGACY
	help
	  This package was no longer available from SourceForge, the
	  upstream is completely dead.

config BR2_PACKAGE_FLUTTER_DYNAMIC_LAYOUTS_EXAMPLE
	bool "flutter-dynamic-layouts-example has been removed"
	select BR2_LEGACY
	help
	  flutter-dynamic-layouts was removed from flutter-packages
	  as of commit e35f29177495131f0f598fc7ae1ffd74d89edf15.

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

config BR2_x86_knightslanding
	bool "knightslanding x86 architecture support dropped"
	select BR2_LEGACY
	help
	  GCC 14.x has marked this architecture as obsolete, and emits
	  a warning causing build failures.

config BR2_x86_knightsmill
	bool "knightsmill x86 architecture support dropped"
	select BR2_LEGACY
	help
	  GCC 14.x has marked this architecture as obsolete, and emits
	  a warning causing build failures.

config BR2_PACKAGE_DVB_APPS
	bool "dvb-apps package removed"
	select BR2_LEGACY
	help
	  The dvb-apps package was removed as it is not maintained
	  anymore (no commit since 2014).

config BR2_PACKAGE_GAMIN
	bool "gamin package removed"
	select BR2_LEGACY
	help
	  The gamin package was removed as it is not maintained
	  anymore (no commit since 2016).

config BR2_PACKAGE_CAIRO_SVG
	bool "cairo svg support"
	select BR2_LEGACY
	select BR2_PACKAGE_CAIRO_PNG
	help
	  Cairo SVG is compiled together with PNG.

config BR2_PACKAGE_CAIRO_SCRIPT
	bool "cairo script support"
	select BR2_LEGACY
	select BR2_PACKAGE_CAIRO_ZLIB
	help
	  Cairo script got merged into cairo zlib.

config BR2_PACKAGE_CAIRO_PS
	bool "cairo postscript support"
	select BR2_LEGACY
	select BR2_PACKAGE_CAIRO_ZLIB
	help
	  Cairo PS got merged into cairo zlib.

config BR2_PACKAGE_CAIRO_PDF
	bool "cairo pdf support"
	select BR2_LEGACY
	select BR2_PACKAGE_CAIRO_ZLIB
	help
	  Cairo PDF got merged into cairo zlib.

config BR2_PACKAGE_CAIRO_XML
	bool "cairo xml support"
	select BR2_LEGACY
	select BR2_PACKAGE_CAIRO_ZLIB
	help
	  Cairo XML got merged into cairo zlib.

config BR2_GDB_VERSION_12
	bool "gdb 12.x has been removed"
	select BR2_LEGACY
	help
	  GDB 12.x has been removed. The new default version of GDB
	  14.x has been automatically selected instead.

config BR2_TARGET_BEAGLEV_DDRINIT
	bool "beaglev-ddrinit has been removed"
	select BR2_LEGACY
	help
	  The beaglev-secondboot package has been removed after
	  the beaglev_defconfig removal.

config BR2_TARGET_BEAGLEV_SECONDBOOT
	bool "beaglev-secondboot has been removed"
	select BR2_LEGACY
	help
	  The beaglev-secondboot package has been removed after
	  the beaglev_defconfig removal.

config BR2_PACKAGE_ONEVPL_INTEL_GPU
	bool "onevpl-intel-gpu has been renamed"
	select BR2_LEGACY
	select BR2_PACKAGE_INTEL_VPL_GPU_RT
	help
	  The onevpl-intel-gpu package has been renamed to
	  intel-vpl-gpu-rt.

config BR2_PACKAGE_CGIC
	bool "cgic has been removed"
	select BR2_LEGACY
	help
	  the cgic upstream no longer exists.

config BR2_PACKAGE_BEECRYPT
	bool "beecrypt package removed"
	select BR2_LEGACY
	help
	  The beecrypt package was removed as it is not maintained
	  anymore (no release since 2015).

config BR2_PACKAGE_VERSAL_FIRMWARE
	bool "versal-firmware has been replaced by xilinx-prebuilt"
	select BR2_TARGET_XILINX_PREBUILT
	select BR2_LEGACY
	help
	  The versal-firmware package has been replaced by the more
	  generic xilinx-prebuilt package.

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

config BR2_TARGET_AT91BOOTSTRAP
	bool "at91bootstrap removed"
	select BR2_LEGACY
	help
	  Upstream for at91bootstrap 1.x is no longer available and
	  has been replaced by at91bootstrap3.

config BR2_TARGET_AT91DATAFLASHBOOT
	bool "at91dataflashboot removed"
	select BR2_LEGACY
	help
	  at91dataflashboot has been replaced by at91bootstrap3.

config BR2_PACKAGE_ON2_8170_MODULES
	bool "on2-8170-modules removed"
	select BR2_LEGACY
	help
	  The corresponding library and gstreamer 0.10 plugin are no
	  longer available.

config BR2_PACKAGE_ON2_8170_LIBS
	bool "on2-8170-libs removed"
	select BR2_LEGACY
	help
	  Upstream for this binary only library is no longer available.

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

config BR2_BINFMT_FLAT_SHARED
	bool "FLAT shared binary format removed"
	select BR2_LEGACY
	help
	  Support for the FLAT shared binary format has been removed:
	  its support was removed from the Linux kernel, and also from
	  uClibc-ng, the only C library that supported it.

config BR2_PACKAGE_OMXPLAYER
	bool "omxplayer removed"
	select BR2_LEGACY
	help
	  Package was deprecated in 2020 and is broken with ffmpeg 6.x

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_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
