#
# 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 2021.02"

config BR2_PACKAGE_LINUX_FIRMWARE_IMX_SDMA
	bool "imx sdma firmware is provided by firmware-imx"
	select BR2_LEGACY
	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 oriq-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_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.

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_MAINLINE
	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
	select BR2_PACKAGE_LUA_5_3
	help
	  The Lua 5.2.x version was removed.

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

# Note: BR2_PACKAGE_TI_SGX_AM335X is still referenced from
# package/ti-sgx-km/Config.in
config BR2_PACKAGE_TI_SGX_AM335X
	bool "ti-sgx-km AM335X option renamed"
	select BR2_LEGACY
	help
	  For consistency reasons, the option
	  BR2_PACKAGE_TI_SGX_AM335X has been renamed to
	  BR2_PACKAGE_TI_SGX_KM_AM335X.

# Note: BR2_PACKAGE_TI_SGX_AM437X is still referenced from
# package/ti-sgx-km/Config.in
config BR2_PACKAGE_TI_SGX_AM437X
	bool "ti-sgx-km AM437X option renamed"
	select BR2_LEGACY
	help
	  For consistency reasons, the option
	  BR2_PACKAGE_TI_SGX_AM437X has been renamed to
	  BR2_PACKAGE_TI_SGX_KM_AM437X.

# Note: BR2_PACKAGE_TI_SGX_AM4430 is still referenced from
# package/ti-sgx-km/Config.in
config BR2_PACKAGE_TI_SGX_AM4430
	bool "ti-sgx-km AM4430 option renamed"
	select BR2_LEGACY
	help
	  For consistency reasons, the option
	  BR2_PACKAGE_TI_SGX_AM4430 has been renamed to
	  BR2_PACKAGE_TI_SGX_KM_AM4430.

# Note: BR2_PACKAGE_TI_SGX_AM5430 is still referenced from
# package/ti-sgx-km/Config.in
config BR2_PACKAGE_TI_SGX_AM5430
	bool "ti-sgx-km AM5430 option renamed"
	select BR2_LEGACY
	help
	  For consistency reasons, the option
	  BR2_PACKAGE_TI_SGX_AM5430 has been renamed to
	  BR2_PACKAGE_TI_SGX_KM_AM5430.

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 seperate
	  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 seperate"
	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
	select BR2_GCC_VERSION_ARC
	help
	  The option that selects the gcc version for the ARC
	  architecture has been renamed to BR2_GCC_VERSION_ARC.

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"
	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
	select BR2_PACKAGE_OPENPOWERLINK_STACK_KERNEL_STACK_LIB
	help
	  openpowerlink kernel modules are built if the
	  kernel stack library is selected.

config BR2_PACKAGE_OPENPOWERLINK_LIBPCAP
	bool "openpowerlink package has been updated"
	select BR2_LEGACY
	select BR2_PACKAGE_OPENPOWERLINK_STACK_USERSPACE_DAEMON_LIB
	help
	  The user space support has been split in two part:
	  - a monolitic user space library
	  - a user spae deamon driver

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