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_STATIC_LIBS
	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.

comment "cpupower needs a toolchain w/ dynamic library"
	depends on BR2_STATIC_LIBS

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_PCI
	bool "pci"
	select BR2_PACKAGE_LINUX_TOOLS
	help
	  pcitest is a tool for testing capabilities related to a
	  PCI Endpoint (only works with specific Endpoints).

	  These tools are available only from kernel version 4.20.

comment "perf needs a toolchain w/ dynamic library, threads"
	depends on BR2_TOOLCHAIN_HAS_SYNC_4
	depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS

config BR2_PACKAGE_LINUX_TOOLS_PERF
	bool "perf"
	depends on BR2_TOOLCHAIN_HAS_SYNC_4
	depends on !BR2_STATIC_LIBS # dlfcn.h
	depends on BR2_TOOLCHAIN_HAS_THREADS
	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.

	  Your kernel must have CONFIG_PERF_EVENTS enabled to use perf
	  profiling. Buildroot automatically enables this in the kernel
	  configuration.

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

if BR2_PACKAGE_LINUX_TOOLS_PERF

config BR2_PACKAGE_LINUX_TOOLS_PERF_STATIC
	bool "Enable static"
	default y if BR2_STATIC_LIBS
	depends on BR2_PACKAGE_BZIP2
	depends on BR2_PACKAGE_ELFUTILS
	depends on BR2_PACKAGE_LIBUNWIND_STATIC
	depends on BR2_PACKAGE_XZ_STATIC
	depends on BR2_PACKAGE_ZLIB

config BR2_PACKAGE_LINUX_TOOLS_PERF_SCRIPTS
	bool "enable installation of perf scripts"
	help
	  Enable the installation of the perf scripts under
	  /usr/libexec/perf-core/ which is necessary for running "perf
	  tests"

config BR2_PACKAGE_LINUX_TOOLS_PERF_TUI
	bool "enable perf TUI"
	depends on BR2_USE_MMU # slang
	select BR2_PACKAGE_SLANG
	help
	  Enable the TUI interface for perf which requires a TTY and
	  enables zooming into DSOs and threads as well as other
	  features.

config BR2_PACKAGE_LINUX_TOOLS_PERF_NEEDS_HOST_PYTHON3
	bool "perf need python3 to build"
	select BR2_PACKAGE_HOST_PYTHON3
	help
	  Starting with linux 6.0, parts of the perf source code
	  is generated by running a python3 script.

endif

config BR2_PACKAGE_LINUX_TOOLS_SELFTESTS
	bool"selftests"
	depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS # bash
	depends on BR2_USE_MMU  # bash
	depends on !BR2_STATIC_LIBS
	depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14 # util-linux schedutils
	select BR2_PACKAGE_LINUX_TOOLS
	select BR2_PACKAGE_BASH # runtime
	select BR2_PACKAGE_NCURSES
	select BR2_PACKAGE_NCURSES_TARGET_PROGS # runtime (tput)
	select BR2_PACKAGE_KMOD
	select BR2_PACKAGE_KMOD_TOOLS # runtime (modprobe -n)
	select BR2_PACKAGE_POPT
	select BR2_PACKAGE_LIBCAP_NG
	select BR2_PACKAGE_UTIL_LINUX
	select BR2_PACKAGE_UTIL_LINUX_SCHEDUTILS # runtime (taskset)
	select BR2_PACKAGE_OPENSSL if BR2_x86_64
	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 and a toolchain w/ dynamic library and headers >= 3.14"
	depends on BR2_USE_MMU
	depends on !BR2_PACKAGE_BUSYBOX_SHOW_OTHERS || \
		BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14

config BR2_PACKAGE_LINUX_TOOLS_USBTOOLS
	bool "USB test programs"
	select BR2_PACKAGE_LINUX_TOOLS
	help
	  Build and install the USB test tools.

	  These tools exist since Linux 2.6.35, but Buildroot can build
	  them only with kernel versions 5.9 and later.

if BR2_PACKAGE_LINUX_TOOLS_USBTOOLS

config BR2_PACKAGE_LINUX_TOOLS_USBTOOLS_TESTUSB
	bool "testusb"
	help
	  testusb issues ioctls to perform the tests implemented by the
	  kernel driver.  It can generate a variety of transfer
	  patterns.

	  See http://www.linux-usb.org/usbtest/

config BR2_PACKAGE_LINUX_TOOLS_USBTOOLS_FFSTEST
	bool "ffs-test"
	help
	  User mode filesystem api for usb composite function
endif

config BR2_PACKAGE_LINUX_TOOLS_TMON
	bool "tmon"
	depends on BR2_TOOLCHAIN_HAS_THREADS
	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.

comment "tmon needs a toolchain w/ threads"
	depends on !BR2_TOOLCHAIN_HAS_THREADS

config BR2_PACKAGE_LINUX_TOOLS_HV
	bool "hv"
	depends on BR2_i386 || BR2_x86_64
	select BR2_PACKAGE_LINUX_TOOLS
	select BR2_PACKAGE_LINUX_TOOLS_HV_KVP_DAEMON if !BR2_PACKAGE_LINUX_TOOLS_HV_HAS_ONE
	help
	  Microsoft HyperV integration services

	  Relevant kernel configuration options: CONFIG_HYPERV,
	  CONFIG_HYPERV_UTILS.

if BR2_PACKAGE_LINUX_TOOLS_HV

config BR2_PACKAGE_LINUX_TOOLS_HV_HAS_ONE
	bool

config BR2_PACKAGE_LINUX_TOOLS_HV_KVP_DAEMON
	bool "hypervkvpd (hv_kvp_daemon)"
	help
	  HyperV uses hypervkvpd (Key/Value Pair daemon) to retrieve
	  status information from your virtualized guest OS

config BR2_PACKAGE_LINUX_TOOLS_HV_FCOPY_DAEMON
	bool "hypervfcopyd (hv_fcopy_daemon)"
	select BR2_PACKAGE_LINUX_TOOLS_HV_HAS_ONE
	help
	  HyperV uses hypervfcopyd (File Copy daemon) to easily transfer
	  files to and from your virtualized guest OS

config BR2_PACKAGE_LINUX_TOOLS_HV_VSS_DAEMON
	bool "hypervvssd (hv_vss_daemon)"
	select BR2_PACKAGE_LINUX_TOOLS_HV_HAS_ONE
	help
	  HyperV uses hypervvssd (Volume Snapshot Service daemon) to
	  freeze your filesystems during snapshots and backups

endif # BR2_PACKAGE_LINUX_TOOLS_HV

endmenu
