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

config BR2_SKIP_LEGACY
	bool
	option env="SKIP_LEGACY"

if !BR2_SKIP_LEGACY

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

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

menu "Legacy config options"

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

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

comment "Legacy options removed in 2020.11"

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

comment "Legacy options removed in 2020.08"

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

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

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

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

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

comment "Legacy options removed in 2020.05"

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

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

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

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

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

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

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

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

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

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

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

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

comment "Legacy options removed in 2020.02"

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

comment "Legacy options removed in 2019.11"

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

comment "Legacy options removed in 2019.08"

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

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

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

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

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

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

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

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

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

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

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

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

comment "Legacy options removed in 2019.05"

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

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

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

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

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

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

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

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

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

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

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

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

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

comment "Legacy options removed in 2019.02"

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

config BR2_PACKAGE_LUA_5_2
	bool "Lua 5.2.x version removed"
	select BR2_LEGACY
	select BR2_PACKAGE_LUA_5_3
	help
	  The Lua 5.2.x version was removed.

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

comment "Legacy options removed in 2018.11"

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	  Use grub2 or syslinux instead.

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

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

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

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

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

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

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

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

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

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

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

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

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

config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_CDXAPARSE
	bool "cdxaparse removed"
	select BR2_LEGACY

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

config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_DCCP
	bool "dccp removed"
	select BR2_LEGACY

config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_HDVPARSE
	bool "hdvparse removed"
	select BR2_LEGACY

config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_MVE
	bool "mve removed"
	select BR2_LEGACY

config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_NUVDEMUX
	bool "nuvdemux removed"
	select BR2_LEGACY

config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_PATCHDETECT
	bool "patchdetect removed"
	select BR2_LEGACY

config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SDI
	bool "sdi removed"
	select BR2_LEGACY

config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_TTA
	bool "tta removed"
	select BR2_LEGACY

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

config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_APEXSINK
	bool "apexsink removed"
	select BR2_LEGACY

config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SDL
	bool "sdl removed"
	select BR2_LEGACY

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

config BR2_GCC_VERSION_4_8_ARC
	bool "gcc arc option renamed"
	select BR2_LEGACY
	select BR2_GCC_VERSION_ARC
	help
	  The option that selects the gcc version for the ARC
	  architecture has been renamed to BR2_GCC_VERSION_ARC.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

config BR2_PACKAGE_OPENPOWERLINK_KERNEL_MODULE
	bool "openpowerlink package has been updated"
	select BR2_LEGACY
	select BR2_PACKAGE_OPENPOWERLINK_STACK_KERNEL_STACK_LIB
	help
	  openpowerlink kernel modules are built if the
	  kernel stack library is selected.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

endmenu

endif # !SKIP_LEGACY
