#
# 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 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_GNURADIO_QTGUI
	bool "gnuradio gr-qtgui option removed"
	select BR2_LEGACY
	help
	  The gr-qtgui option was removed.

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.

###############################################################################
comment "Legacy options removed in 2015.05"

config BR2_TARGET_ROOTFS_JFFS2_NANDFLASH_512_16K
	bool "jffs2 16kB erasesize NAND flash option renamed"
	select BR2_LEGACY
	select BR2_TARGET_ROOTFS_JFFS2_NANDFLASH_16K
	help
	  The JFFS2 NAND flash options now longer include the page
	  size.

config BR2_TARGET_ROOTFS_JFFS2_NANDFLASH_2K_128K
	bool "jffs2 128kB erasesize NAND flash option renamed"
	select BR2_LEGACY
	select BR2_TARGET_ROOTFS_JFFS2_NANDFLASH_128K
	help
	  The JFFS2 NAND flash options now longer include the page
	  size.

config BR2_PACKAGE_MONO_20
	bool "2.0/3.5 .Net Runtime"
	select BR2_LEGACY
	help
	  This option no longer exists, all versions of the .Net
	  runtime are now installed.

config BR2_PACKAGE_MONO_40
	bool "4.0 .Net Runtime"
	select BR2_LEGACY
	help
	  This option no longer exists, all versions of the .Net
	  runtime are now installed.

config BR2_PACKAGE_MONO_45
	bool "4.5 .Net Runtime"
	select BR2_LEGACY
	help
	  This option no longer exists, all versions of the .Net
	  runtime are now installed.

config BR2_CIVETWEB_WITH_LUA
	bool "civetweb lua option renamed"
	select BR2_LEGACY
	select BR2_PACKAGE_CIVETWEB_WITH_LUA
	help
	  civetweb's lua option has been renamed to
	  BR2_PACKAGE_CIVETWEB_WITH_LUA to be aligned with how other
	  packages name options.

config BR2_PACKAGE_TIFF_TIFF2PDF
	bool "tiff utility-specific option removed"
	select BR2_LEGACY
	select BR2_PACKAGE_TIFF_UTILITIES
	help
	  utility-specific options have been removed in favour of
	  the new option BR2_PACKAGE_TIFF_UTILITIES.

config BR2_PACKAGE_TIFF_TIFFCP
	bool "tiff utility-specific option removed"
	select BR2_LEGACY
	select BR2_PACKAGE_TIFF_UTILITIES
	help
	  utility-specific options have been removed in favour of
	  the new option BR2_PACKAGE_TIFF_UTILITIES.

config BR2_LINUX_KERNEL_EXT_RTAI_PATCH
	bool "RTAI patch file path has been removed"
	select BR2_LEGACY
	help
	  This option has never worked, so it has been removed.

config BR2_TARGET_GENERIC_PASSWD_DES
	bool "Encoding passwords with DES has been removed"
	select BR2_LEGACY
	help
	  Paswords can now only be encoded with either of md5, sha256 or
	  sha512. The default is md5, which is stronger that DES (but
	  still pretty weak).

config BR2_PACKAGE_GTK2_THEME_HICOLOR
	bool "hicolor (default theme) is a duplicate"
	select BR2_LEGACY
	select BR2_PACKAGE_HICOLOR_ICON_THEME
	help
	  The option was just a duplicate of hicolor icon theme.

config BR2_PACKAGE_VALGRIND_PTRCHECK
	bool "valgrind's PTRCheck was renamed to SGCheck"
	select BR2_LEGACY
	select BR2_PACKAGE_VALGRIND_SGCHECK
	help
	  PTRCheck was renamed to SGCheck in valgrind

###############################################################################
comment "Legacy options removed in 2015.02"

config BR2_PACKAGE_LIBGC
	bool "libgc package removed"
	select BR2_LEGACY
	select BR2_PACKAGE_BDWGC
	help
	  libgc has been removed because we have the same package under
	  a different name, bdwgc.

config BR2_PACKAGE_WDCTL
	bool "util-linux' wdctl option has been renamed"
	select BR2_LEGACY
	select BR2_PACKAGE_UTIL_LINUX_WDCTL
	help
	  util-linux' wdctl option has been renamed to
	  BR2_PACKAGE_UTIL_LINUX_WDCTL to be aligned with how the other
	  options are named.

config BR2_PACKAGE_UTIL_LINUX_ARCH
	bool "util-linux' arch option has been removed"
	select BR2_LEGACY
	help
	  util-linux' arch was dropped in util-linux 2.23, in favor of
	  the coreutils version.

config BR2_PACKAGE_UTIL_LINUX_DDATE
	bool "util-linux' ddate option has been removed"
	select BR2_LEGACY
	help
	  util-linux' ddate was dropped in util-linux 2.23.

config BR2_PACKAGE_RPM_BZIP2_PAYLOADS
	bool "rpm's bzip2 payloads option has been removed"
	select BR2_LEGACY
	select BR2_PACKAGE_BZIP2
	help
	  The bzip2 payloads option rely entirely on the dependant
	  package bzip2. So, you need to select it to enable this
	  feature.

config BR2_PACKAGE_RPM_XZ_PAYLOADS
	bool "rpm's xz payloads option has been removed"
	select BR2_LEGACY
	select BR2_PACKAGE_XZ
	help
	  The xz payloads option rely entirely on the dependant package
	  xz. So, you need to select it to enable this feature.

config BR2_PACKAGE_M4
	bool "m4 target package removed"
	select BR2_LEGACY
	help
	  The m4 target package has been removed, it's been
	  deprecated for some time now.

config BR2_PACKAGE_FLEX_BINARY
	bool "flex binary in target option removed"
	select BR2_LEGACY
	help
	  The flex binary in the target option has been removed.
	  It's been deprecated for some time now and is essentially a
	  development tool which isn't very useful in the target.

config BR2_PACKAGE_BISON
	bool "bison target package removed"
	select BR2_LEGACY
	help
	  The bison target package has been removed, it's been
	  deprecated for some time now and is essentially a development
	  tool which isn't very useful in the target.

config BR2_PACKAGE_GOB2
	bool "gob2 target package removed"
	select BR2_LEGACY
	help
	  The gob2 target package has been removed, it's been
	  deprecated for some time now and was essentially useless
	  without a target toolchain.

config BR2_PACKAGE_DISTCC
	bool "distcc target package removed"
	select BR2_LEGACY
	help
	  The distcc target package has been removed, it's been
	  deprecated for some time now and was essentially useless
	  without a target toolchain.

config BR2_PACKAGE_HASERL_VERSION_0_8_X
	bool "haserl 0.8.x version removed"
	select BR2_LEGACY
	help
	  The 0.8.x version option for haserl has been removed since it
	  has been deprecated for some time now.
	  You should be able to use the 0.9.x version without issues.

config BR2_PACKAGE_STRONGSWAN_TOOLS
	bool "strongswan option has been removed"
	select BR2_LEGACY
	select BR2_PACKAGE_STRONGSWAN_PKI
	select BR2_PACKAGE_STRONGSWAN_SCEP
	help
	  The tools option has been removed upstream and the different
	  tools have been split between the pki and scep options, with
	  others deprecated.

config BR2_PACKAGE_XBMC_ADDON_XVDR
	bool "xbmc-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_XBMC_PVR_ADDONS
	bool "xbmc options have been renamed"
	select BR2_LEGACY
	select BR2_PACKAGE_KODI_PVR_ADDONS
	help
	  The XBMC media center project was renamed to Kodi
	  entertainment center

config BR2_PACKAGE_XBMC
	bool "xbmc options have been renamed"
	select BR2_LEGACY
	select BR2_PACKAGE_KODI
	help
	  The XBMC media center project was renamed to Kodi
	  entertainment center

config BR2_PACKAGE_XBMC_ALSA_LIB
	bool "xbmc options have been renamed"
	select BR2_LEGACY
	select BR2_PACKAGE_KODI_ALSA_LIB
	help
	  The XBMC media center project was renamed to Kodi
	  entertainment center

config BR2_PACKAGE_XBMC_AVAHI
	bool "xbmc options have been renamed"
	select BR2_LEGACY
	select BR2_PACKAGE_KODI_AVAHI
	help
	  The XBMC media center project was renamed to Kodi
	  entertainment center

config BR2_PACKAGE_XBMC_DBUS
	bool "xbmc options have been renamed"
	select BR2_LEGACY
	select BR2_PACKAGE_KODI_DBUS
	help
	  The XBMC media center project was renamed to Kodi
	  entertainment center

config BR2_PACKAGE_XBMC_LIBBLURAY
	bool "xbmc options have been renamed"
	select BR2_LEGACY
	select BR2_PACKAGE_KODI_LIBBLURAY
	help
	  The XBMC media center project was renamed to Kodi
	  entertainment center

config BR2_PACKAGE_XBMC_GOOM
	bool "xbmc options have been renamed"
	select BR2_LEGACY
	select BR2_PACKAGE_KODI_GOOM
	help
	  The XBMC media center project was renamed to Kodi
	  entertainment center

config BR2_PACKAGE_XBMC_RSXS
	bool "xbmc options have been renamed"
	select BR2_LEGACY
	select BR2_PACKAGE_KODI_RSXS
	help
	  The XBMC media center project was renamed to Kodi
	  entertainment center

config BR2_PACKAGE_XBMC_LIBCEC
	bool "xbmc options have been renamed"
	select BR2_LEGACY
	select BR2_PACKAGE_KODI_LIBCEC
	help
	  The XBMC media center project was renamed to Kodi
	  entertainment center

config BR2_PACKAGE_XBMC_LIBMICROHTTPD
	bool "xbmc options have been renamed"
	select BR2_LEGACY
	select BR2_PACKAGE_KODI_LIBMICROHTTPD
	help
	  The XBMC media center project was renamed to Kodi
	  entertainment center

config BR2_PACKAGE_XBMC_LIBNFS
	bool "xbmc options have been renamed"
	select BR2_LEGACY
	select BR2_PACKAGE_KODI_LIBNFS
	help
	  The XBMC media center project was renamed to Kodi
	  entertainment center

config BR2_PACKAGE_XBMC_RTMPDUMP
	bool "xbmc options have been renamed"
	select BR2_LEGACY
	select BR2_PACKAGE_KODI_RTMPDUMP
	help
	  The XBMC media center project was renamed to Kodi
	  entertainment center

config BR2_PACKAGE_XBMC_LIBSHAIRPLAY
	bool "xbmc options have been renamed"
	select BR2_LEGACY
	select BR2_PACKAGE_KODI_LIBSHAIRPLAY
	help
	  The XBMC media center project was renamed to Kodi
	  entertainment center

config BR2_PACKAGE_XBMC_LIBSMBCLIENT
	bool "xbmc options have been renamed"
	select BR2_LEGACY
	select BR2_PACKAGE_KODI_LIBSMBCLIENT
	help
	  The XBMC media center project was renamed to Kodi
	  entertainment center

config BR2_PACKAGE_XBMC_LIBTHEORA
	bool "xbmc options have been renamed"
	select BR2_LEGACY
	select BR2_PACKAGE_KODI_LIBTHEORA
	help
	  The XBMC media center project was renamed to Kodi
	  entertainment center

config BR2_PACKAGE_XBMC_LIBUSB
	bool "xbmc options have been renamed"
	select BR2_LEGACY
	select BR2_PACKAGE_KODI_LIBUSB
	help
	  The XBMC media center project was renamed to Kodi
	  entertainment center

config BR2_PACKAGE_XBMC_LIBVA
	bool "xbmc options have been renamed"
	select BR2_LEGACY
	select BR2_PACKAGE_KODI_LIBVA
	help
	  The XBMC media center project was renamed to Kodi
	  entertainment center

config BR2_PACKAGE_XBMC_WAVPACK
	bool "xbmc options have been renamed"
	select BR2_LEGACY
	select BR2_PACKAGE_KODI_WAVPACK
	help
	  The XBMC media center project was renamed to Kodi
	  entertainment center

config BR2_PREFER_STATIC_LIB
	bool "static library option renamed"
	select BR2_LEGACY
	help
	  The BR2_PREFER_STATIC_LIB was renamed to BR2_STATIC_LIBS. It
	  highlights the fact that the option no longer "prefers"
	  static libraries, but "enforces" static libraries (i.e
	  shared libraries are completely unused).

	  Take care of updating the type of libraries you want under the
	  "Build options" menu.

###############################################################################
comment "Legacy options removed in 2014.11"

config BR2_x86_generic
	bool "x86 generic variant has been removed"
	select BR2_LEGACY
	help
	  The generic x86 CPU variant has been removed. Use another
	  CPU variant instead.

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

config BR2_sparc_sparchfleon
	bool "sparchfleon CPU has been removed"
	select BR2_LEGACY
	help
	  The sparchfleon CPU was only supported in a patched gcc 4.4
	  version. Its support has been removed in favor of the leon3
	  CPU starting from gcc 4.8.x.

config BR2_sparc_sparchfleonv8
	bool "sparchfleonv8 CPU has been removed"
	select BR2_LEGACY
	help
	  The sparchfleonv8 CPU was only supported in a patched gcc
	  4.4 version. Its support has been removed in favor of the
	  leon3 CPU starting from gcc 4.8.x.

config BR2_sparc_sparcsfleon
	bool "sparcsfleon CPU has been removed"
	select BR2_LEGACY
	help
	  The sparcsfleon CPU was only supported in a patched gcc 4.4
	  version. Its support has been removed in favor of the leon3
	  CPU starting from gcc 4.8.x.

config BR2_sparc_sparcsfleonv8
	bool "sparcsfleonv8 CPU has been removed"
	select BR2_LEGACY
	help
	  The sparcsfleonv8 CPU was only supported in a patched gcc
	  4.4 version. Its support has been removed in favor of the
	  leon3 CPU starting from gcc 4.8.x.

config BR2_PACKAGE_XLIB_LIBPCIACCESS
	bool "xlib-libpciaccess option has been renamed"
	depends on BR2_PACKAGE_XORG7
	select BR2_LEGACY
	select BR2_PACKAGE_LIBPCIACCESS
	help
	  libpciaccess neither depends on X11 nor Xlib. Thus the
	  package has been renamed BR2_PACKAGE_LIBPCIACCESS

config BR2_PACKAGE_LINUX_FIRMWARE_XC5000
	bool "Xceive xc5000 option has been renamed"
	select BR2_LEGACY
	select BR2_PACKAGE_LINUX_FIRMWARE_XCx000
	help
	  The Xceive xc5000 option now also handles older firmwares from
	  Xceive (the xc4000 series), as well as new firmwares (the
	  xc5000c) from Cresta, who bought Xceive.

config BR2_PACKAGE_LINUX_FIRMWARE_CXGB4
	bool "Chelsio T4 option has been renamed"
	select BR2_LEGACY
	select BR2_PACKAGE_LINUX_FIRMWARE_CXGB4_T4
	help
	  The Chelsio T4 option BR2_PACKAGE_LINUX_FIRMWARE_CXGB4
	  has been renamed to BR2_PACKAGE_LINUX_FIRMWARE_CXGB4_T4
	  to better account for the fact that a T5 variant exists.

config BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3160_7260_7
	bool "BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3160_7260_7 has been renamed"
	select BR2_LEGACY
	help
	  The option BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3160_7260_7 was
	  renamed to BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_REV_7. You must
	  select it in:
	      Target packages -> Hardware handling ->
	      Firmware -> linux-firmware -> WiFi firmware ->
	      iwlwifi 3160/726x revision to use (revision 7)

config BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3160_7260_8
	bool "BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3160_7260_8 has been renamed"
	select BR2_LEGACY
	help
	  The option BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3160_7260_8 was
	  renamed to BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_REV_8. You must
	  select it in:
	      Target packages -> Hardware handling ->
	      Firmware -> linux-firmware -> WiFi firmware ->
	      iwlwifi 3160/726x revision to use (revision 8)

###############################################################################
comment "Legacy options removed in 2014.08"

config BR2_PACKAGE_LIBELF
	bool "libelf has been removed"
	select BR2_PACKAGE_ELFUTILS
	select BR2_LEGACY
	help
	  The libelf package provided an old version of the libelf
	  library and is deprecated. The libelf library is now provided
	  by the elfutils package.

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

config BR2_PACKAGE_GETTEXT_TOOLS
	bool "support for gettext-tools on target has been removed"
	select BR2_LEGACY
	help
	  The option to install the gettext utilities on the target
	  has been removed. This is not necessary as Buildroot is not
	  designed to provide a full development environment on the
	  target. gettext tools should be used on the build machine
	  instead.

config BR2_PACKAGE_PROCPS
	bool "procps has been replaced by procps-ng"
	select BR2_PACKAGE_PROCPS_NG
	select BR2_LEGACY
	help
	  The procps package has been replaced by the equivalent
	  procps-ng.

config BR2_BINUTILS_VERSION_2_20_1
	bool "binutils 2.20.1 has been removed"
	select BR2_LEGACY
	help
	  The 2.20.1 version of binutils has been removed. Use a newer
	  version instead.

config BR2_BINUTILS_VERSION_2_21
	bool "binutils 2.21 has been removed"
	select BR2_LEGACY
	help
	  The 2.21 version of binutils has been removed. Use a newer
	  version instead.

config BR2_BINUTILS_VERSION_2_23_1
	bool "binutils 2.23.1 has been removed"
	select BR2_LEGACY
	help
	  The 2.23.1 version of binutils has been removed. Use a newer
	  version instead.

config BR2_UCLIBC_VERSION_0_9_32
	bool "uclibc 0.9.32 has been removed"
	select BR2_LEGACY
	help
	  The 0.9.32 version of uClibc has been removed. Use a newer
	  version instead.

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

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

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

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

config BR2_BUSYBOX_VERSION_1_19_X
	bool "busybox version selection has been removed"
	select BR2_LEGACY
	help
	  The possibility of selecting the Busybox version has been
	  removed. Use the latest version provided by the Busybox
	  package instead.

config BR2_BUSYBOX_VERSION_1_20_X
	bool "busybox version selection has been removed"
	select BR2_LEGACY
	help
	  The possibility of selecting the Busybox version has been
	  removed. Use the latest version provided by the Busybox
	  package instead.

config BR2_BUSYBOX_VERSION_1_21_X
	bool "busybox version selection has been removed"
	select BR2_LEGACY
	help
	  The possibility of selecting the Busybox version has been
	  removed. Use the latest version provided by the Busybox
	  package instead.

config BR2_PACKAGE_LIBV4L_DECODE_TM6000
	bool "decode_tm6000"
	select BR2_PACKAGE_LIBV4L_UTILS
	select BR2_LEGACY
	help
	  This libv4l option has been deprecated and replaced by a
	  single option to build all the libv4l utilities.

config BR2_PACKAGE_LIBV4L_IR_KEYTABLE
	bool "ir-keytable"
	select BR2_PACKAGE_LIBV4L_UTILS
	select BR2_LEGACY
	help
	  This libv4l option has been deprecated and replaced by a
	  single option to build all the libv4l utilities.

config BR2_PACKAGE_LIBV4L_V4L2_COMPLIANCE
	bool "v4l2-compliance"
	select BR2_PACKAGE_LIBV4L_UTILS
	select BR2_LEGACY
	help
	  This libv4l option has been deprecated and replaced by a
	  single option to build all the libv4l utilities.

config BR2_PACKAGE_LIBV4L_V4L2_CTL
	bool "v4l2-ctl"
	select BR2_PACKAGE_LIBV4L_UTILS
	select BR2_LEGACY
	help
	  This libv4l option has been deprecated and replaced by a
	  single option to build all the libv4l utilities.

config BR2_PACKAGE_LIBV4L_V4L2_DBG
	bool "v4l2-dbg"
	select BR2_PACKAGE_LIBV4L_UTILS
	select BR2_LEGACY
	help
	  This libv4l option has been deprecated and replaced by a
	  single option to build all the libv4l utilities.

###############################################################################
comment "Legacy options removed in 2014.05"

config BR2_PACKAGE_EVTEST_CAPTURE
	bool "evtest-capture support removed (dropped since evtest 1.31)"
	select BR2_LEGACY
	help
	  Support for evtest-capture has been removed (dropped from
	  evtest package since version 1.31), use evemu package
	  instead.

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

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

config BR2_PACKAGE_VALA
	bool "vala target package has been removed"
	select BR2_LEGACY
	help
	  The 'vala' target package has been removed since it has been
	  deprecated for more than four buildroot releases.
	  Note: the host vala package still exists.

config BR2_TARGET_TZ_ZONELIST
	default BR2_PACKAGE_TZDATA_ZONELIST if BR2_PACKAGE_TZDATA_ZONELIST != ""

config BR2_PACKAGE_TZDATA_ZONELIST
	string "tzdata: the timezone list option has been renamed"
	help
	  The option BR2_PACKAGE_TZDATA_ZONELIST has been renamed to
	  BR2_TARGET_TZ_ZONELIST, and moved to the "System
	  configuration" menu. You'll need to select BR2_TARGET_TZ_INFO.

config BR2_PACKAGE_TZDATA_ZONELIST_WRAP
	bool
	default y if BR2_PACKAGE_TZDATA_ZONELIST != ""
	select BR2_LEGACY

config BR2_PACKAGE_LUA_INTERPRETER_EDITING_NONE
	bool "Lua command-line editing none has been renamed"
	select BR2_LEGACY
	help
	  The BR2_PACKAGE_LUA_INTERPRETER_EDITING_NONE option has been
	  renamed to BR2_PACKAGE_LUA_EDITING_NONE. You will have to
	  select it in the corresponding choice.

config BR2_PACKAGE_LUA_INTERPRETER_READLINE
	bool "Lua command-line editing using readline has been renamed"
	select BR2_LEGACY
	help
	  The BR2_PACKAGE_LUA_INTERPRETER_READLINE option has been
	  renamed to BR2_PACKAGE_LUA_READLINE. You will have to select
	  it in the corresponding choice.

config BR2_PACKAGE_LUA_INTERPRETER_LINENOISE
	bool "Lua command-line editing using linenoise has been renamed"
	select BR2_LEGACY
	help
	  The BR2_PACKAGE_LUA_INTERPRETER_LINENOISE option has been
	  renamed to BR2_PACKAGE_LUA_LINENOISE. You will have to select
	  it in the corresponding choice.

config BR2_PACKAGE_DVB_APPS_UTILS
	bool "dvb-apps utilities now built by default"
	select BR2_LEGACY
	help
	  The dvb-apps utilities are now always built when the dvb-apps
	  package is selected.

config BR2_KERNEL_HEADERS_SNAP
	bool "Local Linux snapshot support removed"
	select BR2_LEGACY
	help
	  Support for using a custom snapshot to install the Linux
	  kernel headers has been removed.

config BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_UDEV
	bool "/dev management by udev removed"
	select BR2_LEGACY
	help
	  The 'udev' package has been converted to a virtual package.
	  The providers for this feature are: 'eudev', 'systemd'.

	  Therefore, if you are not using 'systemd' as init system, you
	  must choose 'Dynamic using eudev' in the '/dev management'
	  menu to get the same behaviour as in your old configuration.

	  If you are using 'systemd', its internal implementation of
	  'udev' will be used automatically.

	  You must also check the packages depending on 'udev' are still
	  selected.

config BR2_PACKAGE_UDEV
	bool "udev is now a virtual package"
	select BR2_LEGACY
	select BR2_PACKAGE_HAS_UDEV
	help
	  The 'udev' package has been converted to a virtual package.
	  The providers for this feature are: 'eudev', 'systemd'.

	  Your old configuration refers to packages depending on 'udev',
	  either for build or at runtime.

	  Check that a 'udev' provider is selected. If you are not using
	  'systemd' as init system, 'eudev' should be selected, which is
	  the case if '/dev management' is set to 'Dynamic using eudev'.

	  If you are using 'systemd', its internal implementation of
	  'udev' is used.

config BR2_PACKAGE_UDEV_RULES_GEN
	bool "udev rules generation handled by provider"
	select BR2_LEGACY
	select BR2_PACKAGE_EUDEV if !BR2_INIT_SYSTEMD
	select BR2_PACKAGE_EUDEV_RULES_GEN if !BR2_INIT_SYSTEMD
	help
	  The 'udev' package has been converted to a virtual package.
	  The providers for this feature are: 'eudev', 'systemd'.

	  If you are not using 'systemd' as init system, udev rules
	  generation will be handled by 'eudev'. Check that
	  '/dev management' is set to 'Dynamic using eudev' to get
	  the same behaviour as in your old configuration.

	  If you are using 'systemd', it internal implementation of
	  'udev' will generate the rules.

config BR2_PACKAGE_UDEV_ALL_EXTRAS
	bool "udev extras removed"
	select BR2_LEGACY
	help
	  The 'udev' package has been converted to a virtual package.
	  The providers for this feature are: 'eudev', 'systemd'.

	  The option to enable the extra features of 'udev' (gudev, ...)
	  has been removed. These features are automatically enabled in
	  the 'udev' providers if the dependencies are selected. For
	  example, selecting 'libglib2' will trigger the build of gudev.

config BR2_PACKAGE_XLIB_LIBPTHREAD_STUBS
	bool "xlib-libpthread-stubs option has been renamed"
	depends on BR2_PACKAGE_XORG7
	select BR2_LEGACY
	select BR2_PACKAGE_LIBPTHREAD_STUBS
	help
	  The pthread stubs neither depend on X11 nor Xlib. Thus the
	  package has been renamed BR2_PACKAGE_LIBPTHREAD_STUBS

###############################################################################
comment "Legacy options removed in 2014.02"

config BR2_sh2
	bool "sh2 support removed"
	select BR2_LEGACY
	help
	  Due to an inexistent user base and generally poor Linux
	  support, the support for the SH2 architecture was removed.

config BR2_sh3
	bool "sh3 support removed"
	select BR2_LEGACY
	help
	  Due to an inexistent user base and generally poor Linux
	  support, the support for the SH3 architecture was removed.

config BR2_sh3eb
	bool "sh3eb support removed"
	select BR2_LEGACY
	help
	  Due to an inexistent user base and generally poor Linux
	  support, the support for the SH3eb architecture was removed.

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

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

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

config BR2_GDB_VERSION_7_2
	bool "gdb 7.2.x is no longer supported"
	select BR2_GDB_VERSION_7_6
	select BR2_LEGACY
	help
	  Version 7.2.x of gdb has been deprecated for more than four
	  buildroot releases and is now removed. As an alternative, gdb
	  7.5.x has been automatically selected in your configuration.

config BR2_GDB_VERSION_7_3
	bool "gdb 7.3.x is no longer supported"
	select BR2_GDB_VERSION_7_6
	select BR2_LEGACY
	help
	  Version 7.3.x of gdb has been deprecated for more than four
	  buildroot releases and is now removed. As an alternative, gdb
	  7.5.x has been automatically selected in your configuration.

config BR2_PACKAGE_CCACHE
	bool "ccache target package has been removed"
	select BR2_LEGACY
	help
	  The 'ccache' target package has been removed since it has been
	  deprecated for more than four buildroot releases.
	  Note: using ccache for speeding up builds is still supported.

config BR2_HAVE_DOCUMENTATION
	bool "support for documentation on target has been removed"
	select BR2_LEGACY
	help
	  Support for documentation on target has been removed since it
	  has been deprecated for more than four buildroot releases.

config BR2_PACKAGE_AUTOMAKE
	bool "automake target package has been removed"
	select BR2_LEGACY
	help
	  The 'automake' target package has been removed since it has
	  been deprecated for more than four buildroot releases.
	  Note: the host automake still exists.

config BR2_PACKAGE_AUTOCONF
	bool "autoconf target package has been removed"
	select BR2_LEGACY
	help
	  The 'autoconf' target package has been removed since it has
	  been deprecated for more than four buildroot releases.
	  Note: the host autoconf still exists.

config BR2_PACKAGE_XSTROKE
	bool "xstroke has been removed"
	select BR2_LEGACY
	help
	  The 'xstroke' package has been removed since it has been
	  deprecated for more than four buildroot releases.

config BR2_PACKAGE_LZMA
	bool "lzma target package has been removed"
	select BR2_LEGACY
	help
	  The 'lzma' target package has been removed since it has been
	  deprecated for more than four buildroot releases.
	  Note: generating lzma-compressed rootfs images is still
	  supported.

config BR2_PACKAGE_TTCP
	bool "ttcp has been removed"
	select BR2_LEGACY
	help
	  The 'ttcp' package has been removed since it has been
	  deprecated for more than four buildroot releases.

config BR2_PACKAGE_LIBNFC_LLCP
	bool "libnfc-llcp has been replaced by libllcp"
	select BR2_LEGACY
	select BR2_PACKAGE_LIBLLCP
	help
	  The 'libnfc-llcp' package has been removed since upstream
	  renamed to 'libllcp'. We have added a new package for
	  'libllcp' and bumped the version at the same time.

config BR2_PACKAGE_MYSQL_CLIENT
	bool "MySQL client renamed to MySQL"
	select BR2_LEGACY
	select BR2_PACKAGE_MYSQL
	help
	  The option has been renamed BR2_PACKAGE_MYSQL

config BR2_PACKAGE_SQUASHFS3
	bool "squashfs3 has been removed"
	select BR2_LEGACY
	select BR2_PACKAGE_SQUASHFS
	help
	  The 'squashfs3' package has been removed since it has been
	  deprecated for more than four buildroot releases. Package
	  'squashfs' (4) has been selected automatically as replacement.

config BR2_TARGET_ROOTFS_SQUASHFS3
	bool "squashfs3 rootfs support has been removed"
	select BR2_LEGACY
	help
	  Together with the removal of the squashfs3 package, support
	  for squashfs3 root filesystems has been removed too. Squashfs
	  root filesystems will automatically use squashfs4 now.

config BR2_PACKAGE_NETKITBASE
	bool "netkitbase has been removed"
	select BR2_LEGACY
	help
	  The 'netkitbase' package has been removed since it has been
	  deprecated since 2012.11. This package provided 'inetd'
	  which is replaced by 'xinet' and 'ping' which is replaced by
	  'busybox' or 'fping'.

config BR2_PACKAGE_NETKITTELNET
	bool "netkittelnet has been removed"
	select BR2_LEGACY
	help
	  The 'netkittelnet' package has been removed since it has
	  been deprecated since 2012.11. 'busybox' provides a telnet
	  client and should be used instead.

config BR2_PACKAGE_LUASQL
	bool "luasql has been replaced by luasql-sqlite3"
	select BR2_PACKAGE_LUASQL_SQLITE3
	select BR2_LEGACY
	help
	  The option has been renamed BR2_PACKAGE_LUASQL_SQLITE3.

config BR2_PACKAGE_LUACJSON
	bool "luacjson has been replaced by lua-cjson"
	select BR2_PACKAGE_LUA_CJSON
	select BR2_LEGACY
	help
	  The option has been renamed BR2_PACKAGE_LUA_CJSON.

###############################################################################
comment "Legacy options removed in 2013.11"

config BR2_PACKAGE_LVM2_DMSETUP_ONLY
	bool "lvm2's 'dmsetup only' option removed"
	select BR2_LEGACY
	help
	  The BR2_PACKAGE_LVM2_DMSETUP_ONLY was a negative option, which
	  led to problems with other packages that need the full lvm2
	  suite. Therefore, the option has been replaced with the
	  positive BR2_PACKAGE_LVM2_STANDARD_INSTALL option.

# Note: BR2_PACKAGE_LVM2_DMSETUP_ONLY is still referenced in package/lvm2/Config.in
# in order to automatically propagate old configs

config BR2_PACKAGE_QT_JAVASCRIPTCORE
	bool "qt javascriptcore option removed"
	select BR2_LEGACY
	help
	  The BR2_PACKAGE_QT_JAVASCRIPTCORE option was available to
	  force the activation or disabling of the JIT compiler in the
	  Qt Javascript interpreter. However, the JIT compiler is not
	  available for all architectures, so forcing its activation
	  does not always work. Moreover, Qt knows by itself for which
	  architectures JIT support is possible, and will
	  automatically enable it if possible.

	  Therefore, this option was in fact useless, and causing
	  build problems when enabled on architectures for which the
	  JIT support was not available. It has been removed, and
	  there is no replacement: Qt will enable JIT at compile time
	  when possible.

config BR2_PACKAGE_MODULE_INIT_TOOLS
	bool "module-init-tools replaced by kmod"
	select BR2_PACKAGE_KMOD
	select BR2_PACKAGE_KMOD_TOOLS
	select BR2_LEGACY
	help
	  The 'module-init-tools' package has been removed, since it
	  has been depracated upstream and replaced by 'kmod'.

config BR2_TARGET_UBOOT_CUSTOM_GIT_REPO_URL
	string "u-boot: the git repository URL option has been renamed"
	help
	  The option BR2_TARGET_UBOOT_CUSTOM_GIT_REPO_URL has
	  been renamed to BR2_TARGET_UBOOT_CUSTOM_REPO_URL.

config BR2_TARGET_UBOOT_CUSTOM_GIT_REPO_URL_WRAP
	bool
	default y if BR2_TARGET_UBOOT_CUSTOM_GIT_REPO_URL != ""
	select BR2_LEGACY

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

config BR2_TARGET_UBOOT_CUSTOM_GIT_VERSION
	string "u-boot: the git repository version option has been renamed"
	help
	  The option BR2_TARGET_UBOOT_CUSTOM_GIT_VERSION has
	  been renamed to BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION.

config BR2_TARGET_UBOOT_CUSTOM_GIT_VERSION_WRAP
	bool
	default y if BR2_TARGET_UBOOT_CUSTOM_GIT_VERSION != ""
	select BR2_LEGACY

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

config BR2_LINUX_KERNEL_CUSTOM_GIT_REPO_URL
	string "linux: the git repository URL option has been renamed"
	help
	  The option BR2_LINUX_KERNEL_CUSTOM_GIT_REPO_URL has
	  been renamed to
	  BR2_LINUX_KERNEL_CUSTOM_REPO_URL.

config BR2_LINUX_KERNEL_CUSTOM_GIT_REPO_URL_WRAP
	bool
	default y if BR2_LINUX_KERNEL_CUSTOM_GIT_REPO_URL != ""
	select BR2_LEGACY

# Note: BR2_LINUX_KERNEL_CUSTOM_GIT_REPO_URL is still referenced from
# linux/Config.in

config BR2_LINUX_KERNEL_CUSTOM_GIT_VERSION
	string "linux: the git repository version option has been renamed"
	help
	  The option BR2_LINUX_KERNEL_CUSTOM_GIT_VERSION has
	  been renamed to
	  BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION.

config BR2_LINUX_KERNEL_CUSTOM_GIT_VERSION_WRAP
	bool
	default y if BR2_LINUX_KERNEL_CUSTOM_GIT_VERSION != ""
	select BR2_LEGACY

# Note: BR2_LINUX_KERNEL_CUSTOM_GIT_VERSION is still referenced from
# linux/Config.in

###############################################################################
comment "Legacy options removed in 2013.08"

config BR2_ARM_OABI
	bool "ARM OABI support has been removed"
	select BR2_LEGACY
	help
	  The support for the ARM OABI was deprecated since a while,
	  and has been removed completely from Buildroot. It is also
	  deprecated in upstream gcc, since gcc 4.7. People should
	  switch to EABI instead, which should not be a problem as
	  long as you don't have pre-built OABI binaries in your
	  system that you can't recompile.

config BR2_PACKAGE_DOSFSTOOLS_DOSFSCK
	bool "dosfstools dosfsck renamed to fsck.fat"
	select BR2_LEGACY
	select BR2_PACKAGE_DOSFSTOOLS_FSCK_FAT
	help
	  dosfsck was renamed upstream to fsck.fat for consistency.

config BR2_PACKAGE_DOSFSTOOLS_DOSFSLABEL
	bool "dosfstools dosfslabel renamed to fatlabel"
	select BR2_LEGACY
	select BR2_PACKAGE_DOSFSTOOLS_FATLABEL
	help
	  doslabel was renamed upstream to fatlabel for consistency.

config BR2_PACKAGE_DOSFSTOOLS_MKDOSFS
	bool "dosfstools mkdosfs renamed to mkfs.fat"
	select BR2_LEGACY
	select BR2_PACKAGE_DOSFSTOOLS_MKFS_FAT
	help
	  mkdosfs was renamed upstream to mkfs.fat for consistency.

config BR2_ELF2FLT
	bool "the elf2flt option has been renamed"
	select BR2_LEGACY
	help
	  The BR2_ELF2FLT option has been renamed to
	  BR2_PACKAGE_HOST_ELF2FLT due to the conversion of elf2flt to
	  the package infrastructure.

config BR2_VFP_FLOAT
	bool "the ARM VFP floating point option has been renamed"
	select BR2_LEGACY
	help
	  Due to a major refactoring of the floating-point handling of
	  the ARM architecture support, the BR2_VFP_FLOAT option has
	  been replaced with a choice of options that allows to select
	  between various VFP versions/capabilities.

config BR2_PACKAGE_GCC_TARGET
	bool "gcc on the target filesystem has been removed"
	select BR2_LEGACY
	help
	  The support for gcc in the target filesystem was deprecated
	  since a while, and has been removed completely from Buildroot.
	  See Buildroot's documentation for more explanations.

config BR2_HAVE_DEVFILES
	bool "development files in target filesystem has been removed"
	select BR2_LEGACY
	help
	  The installation of the development files in the target
	  filesystem was deprecated since a while, and has been removed
	  completely from Buildroot.
	  See Buildroot's documentation for more explanations.

endmenu

endif # !SKIP_LEGACY
