config BR2_PACKAGE_BCC
	bool "bcc"
	depends on BR2_PACKAGE_LLVM_ARCH_SUPPORTS
	depends on BR2_USE_MMU # python3
	depends on BR2_TOOLCHAIN_USES_GLIBC # hardcode GNU tuple (x86_64-unknown-linux-gnu)
	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_7 # clang
	depends on BR2_INSTALL_LIBSTDCPP # clang
	depends on BR2_HOST_GCC_AT_LEAST_7 # clang
	depends on BR2_USE_WCHAR # clang, python3
	depends on BR2_TOOLCHAIN_HAS_THREADS # clang, python3
	depends on !BR2_STATIC_LIBS # clang, python3
	select BR2_PACKAGE_CLANG
	select BR2_PACKAGE_ELFUTILS
	select BR2_PACKAGE_FLEX # needs FlexLexer.h
	select BR2_PACKAGE_HOST_ZIP
	select BR2_PACKAGE_LLVM
	select BR2_PACKAGE_LLVM_BPF
	select BR2_PACKAGE_PYTHON3
	help
	  BPF Compiler Collection (BCC)

	  BCC is a toolkit for creating efficient kernel tracing and
	  manipulation programs, and includes several useful tools and
	  examples. It makes use of extended BPF (Berkeley Packet
	  Filters), formally known as eBPF, a new feature that was
	  first added to Linux 3.15. Much of what BCC uses requires
	  Linux 4.1 and above.

	  Note: Before using bcc, you need either need to :
	  - For kernel_ver = [4.1, 5.2) : Copy kernel source code
	  to target folder /lib/module/<kernel_ver>/build.
	  - Or kernel_ver >= 5.2 : Compile kernel with CONFIG_IKHEADERS
	  and use generated headers under /sys/kernel/kheaders.tar.xz
	  to populate /lib/module/<kernel_ver>/build.

	  That's because the clang frontend build eBPF code at runtime.

	  https://github.com/iovisor/bcc
	  http://www.ebpf.io

comment "bcc needs a glibc toolchain, C++, wchar, threads, dynamic libs, gcc >= 7, host gcc >= 7"
	depends on BR2_PACKAGE_LLVM_ARCH_SUPPORTS
	depends on BR2_USE_MMU
	depends on !BR2_TOOLCHAIN_USES_GLIBC \
		|| !BR2_TOOLCHAIN_GCC_AT_LEAST_7 \
		|| !BR2_INSTALL_LIBSTDCPP \
		|| !BR2_HOST_GCC_AT_LEAST_7 \
		|| !BR2_USE_WCHAR \
		|| !BR2_TOOLCHAIN_HAS_THREADS \
		|| BR2_STATIC_LIBS
