1config BR2_PACKAGE_BCC
2	bool "bcc"
3	depends on BR2_PACKAGE_LLVM_ARCH_SUPPORTS
4	depends on BR2_USE_MMU # python3
5	depends on BR2_TOOLCHAIN_USES_GLIBC # hardcode GNU tuple (x86_64-unknown-linux-gnu)
6	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_7 # clang
7	depends on BR2_INSTALL_LIBSTDCPP # clang
8	depends on BR2_HOST_GCC_AT_LEAST_7 # clang
9	depends on BR2_USE_WCHAR # clang, python3
10	depends on BR2_TOOLCHAIN_HAS_THREADS # clang, python3
11	depends on !BR2_STATIC_LIBS # clang, python3
12	select BR2_PACKAGE_CLANG
13	select BR2_PACKAGE_ELFUTILS
14	select BR2_PACKAGE_FLEX # needs FlexLexer.h
15	select BR2_PACKAGE_HOST_ZIP
16	select BR2_PACKAGE_LLVM
17	select BR2_PACKAGE_LLVM_BPF
18	select BR2_PACKAGE_PYTHON3
19	help
20	  BPF Compiler Collection (BCC)
21
22	  BCC is a toolkit for creating efficient kernel tracing and
23	  manipulation programs, and includes several useful tools and
24	  examples. It makes use of extended BPF (Berkeley Packet
25	  Filters), formally known as eBPF, a new feature that was
26	  first added to Linux 3.15. Much of what BCC uses requires
27	  Linux 4.1 and above.
28
29	  Note: Before using bcc, you need either need to :
30	  - For kernel_ver = [4.1, 5.2) : Copy kernel source code
31	  to target folder /lib/module/<kernel_ver>/build.
32	  - Or kernel_ver >= 5.2 : Compile kernel with CONFIG_IKHEADERS
33	  and use generated headers under /sys/kernel/kheaders.tar.xz
34	  to populate /lib/module/<kernel_ver>/build.
35
36	  That's because the clang frontend build eBPF code at runtime.
37
38	  https://github.com/iovisor/bcc
39	  http://www.ebpf.io
40
41comment "bcc needs a glibc toolchain, C++, gcc >= 7, host gcc >= 7"
42	depends on BR2_PACKAGE_LLVM_ARCH_SUPPORTS
43	depends on BR2_USE_MMU
44	depends on !BR2_TOOLCHAIN_USES_GLIBC || !BR2_INSTALL_LIBSTDCPP \
45		|| !BR2_TOOLCHAIN_GCC_AT_LEAST_7 || !BR2_HOST_GCC_AT_LEAST_7
46