menu "Linux Kernel Tools"

# No prompt, this is sourced by linux/Config.in as this
# is no real package and really belongs to the kernel.
config BR2_PACKAGE_LINUX_TOOLS
	bool

config BR2_PACKAGE_LINUX_TOOLS_CPUPOWER
	bool "cpupower"
	depends on !BR2_bfin # pciutils
	select BR2_PACKAGE_LINUX_TOOLS
	select BR2_PACKAGE_PCIUTILS
	help
	  cpupower is a collection of tools to examine and tune power
	  saving related features of your processor.

config BR2_PACKAGE_LINUX_TOOLS_GPIO
	bool "gpio"
	select BR2_PACKAGE_LINUX_TOOLS
	help
	  gpio is a collection of tools to get information about,
	  control and monitor gpios present on system.

	  These tools use new gpio ABI which will deprecate sysfs gpio
	  interface in the future.

	  These tools are available only from kernel version 4.8.

config BR2_PACKAGE_LINUX_TOOLS_IIO
	bool "iio"
	select BR2_PACKAGE_LINUX_TOOLS
	help
	  iio is a collection of tools to get information about,
	  control and monitor iio devices present on system.

	  These tools are available only from kernel version 4.7.

config BR2_PACKAGE_LINUX_TOOLS_PERF
	bool "perf"
	select BR2_PACKAGE_LINUX_TOOLS
	help
	  perf (sometimes "Perf Events" or perf tools, originally
	  "Performance Counters for Linux") - is a performance
	  analyzing tool in Linux, available from kernel version
	  2.6.31. User-space controlling utility, called 'perf' has
	  git-like interface with subcommands. It is capable of
	  statistical profiling of entire system (both kernel and user
	  code), single CPU or severals threads.

	  This will build and install the userspace 'perf'
	  command. It is up to the user to ensure that the kernel
	  configuration has all the suitable options enabled to allow a
	  proper operation of 'perf'.

	  https://perf.wiki.kernel.org/

config BR2_PACKAGE_LINUX_TOOLS_SELFTESTS
	bool"selftests"
	depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS # bash
	depends on BR2_USE_MMU  # bash
	select BR2_PACKAGE_LINUX_TOOLS
	select BR2_PACKAGE_BASH # runtime
	select BR2_PACKAGE_POPT
	select BR2_PACKAGE_LIBCAP_NG
	help
	  Build and install (to /usr/lib/kselftests) kernel selftests.

	  Use of this option implies you know the process of using and
	  compiling the kernel selftests. The Makefile to build and
	  install these is very noisy and may appear to cause your
	  build to fail for strange reasons.

	  This is very much a use at your risk option and may not work
	  for every setup or every architecture.

comment "selftests needs BR2_PACKAGE_BUSYBOX_SHOW_OTHERS"
	depends on BR2_USE_MMU
	depends on !BR2_PACKAGE_BUSYBOX_SHOW_OTHERS

config BR2_PACKAGE_LINUX_TOOLS_TMON
	bool "tmon"
	select BR2_PACKAGE_LINUX_TOOLS
	select BR2_PACKAGE_NCURSES
	help
	  tmon is a terminal-based tool (using curses) that allows the
	  user to access thermal information about the system.

endmenu
