package/linux-tools: add USB tools (testusb and ffs-test)

Extend the linux-tools package to also build the userspace USB tools,
which currently include testusb and ffs-test.

These tools are in the kernel tree since a long time, and althogh a
Makefile had been present since kernel 2.6.39, it has been entirely
rewritten (with an install rule) back with kernel 5.9, to allow building
the same way as other tools provided with the kernel.

We make use of the Makefile install rule, thus version >= 5.9 is
required. Support for older kernels may be added later if needed, and
is left as an exercise for the motivated party.

Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
Reviewed-by: Herve Codina <herve.codina@bootlin.com>
[yann.morin.1998@free.fr: fix history of Makefile]
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
This commit is contained in:
Luca Ceresoli 2023-03-27 15:59:48 +02:00 committed by Yann E. MORIN
parent 9a3d4e3818
commit fb515a4b28
3 changed files with 61 additions and 0 deletions

View File

@ -1874,6 +1874,7 @@ F: configs/zynqmp_zcu106_defconfig
F: package/agentpp/
F: package/exim/
F: package/libpjsip/
F: package/linux-tools/linux-tool-usbtools.mk.in
F: package/qpid-proton/
F: package/rtl8188eu/
F: package/snmppp/

View File

@ -135,6 +135,32 @@ comment "selftests needs BR2_PACKAGE_BUSYBOX_SHOW_OTHERS and a toolchain w/ dyna
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

View File

@ -0,0 +1,34 @@
################################################################################
#
# usbtools
#
################################################################################
LINUX_TOOLS += usbtools
USBTOOLS_MAKE_OPTS = $(LINUX_MAKE_FLAGS) LDFLAGS="$(TARGET_LDFLAGS)"
LINUX_TOOLS_USBTOOLS_LIST = \
$(if $(BR2_PACKAGE_LINUX_TOOLS_USBTOOLS_TESTUSB),testusb) \
$(if $(BR2_PACKAGE_LINUX_TOOLS_USBTOOLS_FFSTEST),ffs-test)
define USBTOOLS_BUILD_CMDS
$(Q)if ! grep install $(LINUX_DIR)/tools/usb/Makefile >/dev/null 2>&1 ; then \
echo "Your kernel version is too old to build the USB tools." ; \
echo "At least kernel 5.9 must be used." ; \
exit 1 ; \
fi
$(TARGET_MAKE_ENV) $(MAKE) -C $(LINUX_DIR)/tools/usb \
ALL_TARGETS="$(LINUX_TOOLS_USBTOOLS_LIST)" \
$(USBTOOLS_MAKE_OPTS) \
all
endef
define USBTOOLS_INSTALL_TARGET_CMDS
$(TARGET_MAKE_ENV) $(MAKE) -C $(LINUX_DIR)/tools/usb \
ALL_TARGETS="$(LINUX_TOOLS_USBTOOLS_LIST)" \
$(USBTOOLS_MAKE_OPTS) \
DESTDIR=$(TARGET_DIR) \
install
endef