#
# 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 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_XSERVER_XORG_SERVER_V_1_19
	bool "Modular X.org server was updated to version 1.20.0"
	select BR2_LEGACY
	select BR2_PACKAGE_XSERVER_XORG_SERVER_V_1_20
	help
	  Modular X.org server was updated to version 1.20.0

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
