config BR2_PACKAGE_LINUX_TOOLS
bool
+config BR2_PACKAGE_LINUX_TOOLS_BPFTOOL
+ bool "bpftool"
+ depends on !BR2_nios2 # binutils
+ depends on BR2_USE_WCHAR # binutils, elfutils
+ depends on !BR2_STATIC_LIBS # elfutils
+ depends on BR2_TOOLCHAIN_HAS_THREADS # elfutils
+ depends on BR2_TOOLCHAIN_USES_UCLIBC || BR2_TOOLCHAIN_USES_GLIBC # elfutils
+ select BR2_PACKAGE_LINUX_TOOLS
+ select BR2_PACKAGE_BINUTILS
+ select BR2_PACKAGE_ELFUTILS
+ help
+ bpftool is a tool for for inspection and simple manipulation
+ of eBPF programs and maps.
+
+ These tools are available only from kernel version 4.15.
+
+comment "bpftool needs a uClibc or glibc toolchain w/ wchar, dynamic library, threads"
+ depends on !BR2_nios2
+ depends on !BR2_USE_WCHAR || BR2_STATIC_LIBS \
+ || !BR2_TOOLCHAIN_HAS_THREADS \
+ || !(BR2_TOOLCHAIN_USES_UCLIBC || BR2_TOOLCHAIN_USES_GLIBC)
+
config BR2_PACKAGE_LINUX_TOOLS_CPUPOWER
bool "cpupower"
select BR2_PACKAGE_LINUX_TOOLS
--- /dev/null
+################################################################################
+#
+# bpftool
+#
+################################################################################
+
+LINUX_TOOLS += bpftool
+
+BPFTOOL_DEPENDENCIES = binutils elfutils
+
+ifeq ($(BR2_PACKAGE_LIBCAP),y)
+BPFTOOL_DEPENDENCIES += libcap
+endif
+
+ifeq ($(BR2_PACKAGE_ZLIB),y)
+BPFTOOL_DEPENDENCIES += zlib
+endif
+
+BPFTOOL_MAKE_OPTS = $(LINUX_MAKE_FLAGS)
+
+define BPFTOOL_BUILD_CMDS
+ $(Q)if ! grep install $(LINUX_DIR)/tools/bpf/bpftool/Makefile >/dev/null 2>&1 ; then \
+ echo "Your kernel version is too old and does not have install section in the bpf tools." ; \
+ echo "At least kernel 4.15 must be used." ; \
+ exit 1 ; \
+ fi
+
+ $(TARGET_MAKE_ENV) $(MAKE1) -C $(LINUX_DIR)/tools/bpf/bpftool \
+ $(BPFTOOL_MAKE_OPTS)
+endef
+
+define BPFTOOL_INSTALL_TARGET_CMDS
+ $(TARGET_MAKE_ENV) $(MAKE1) -C $(LINUX_DIR)/tools/bpf/bpftool \
+ $(BPFTOOL_MAKE_OPTS) \
+ DESTDIR=$(TARGET_DIR) \
+ install
+endef