Skip to contentSkip to conversation

libusb: add an option to compile examples

PATCH Superseded Gaël PORTAY 2 participants 4 messages Jun 11, 2018 – Jun 17, 2018

lore
Share & tools
lore
#0 lore raw

PATCH v3 1/1 libusb: add an option to compile examples

---
Changes since v1:
- remove presence check.

Changes since v2:
- fix typo in list of examples

 package/libusb/Config.in |  7 +++++++
 package/libusb/libusb.mk | 10 ++++++++++
 2 files changed, 17 insertions(+)
package/libusb/Config.in +7 -0
index 5238588aa8..d31a717fdf 100644
@@ -6,5 +6,12 @@ config BR2_PACKAGE_LIBUSB
 
 	  http://libusb.info/
 
+if BR2_PACKAGE_LIBUSB
+
+config BR2_PACKAGE_LIBUSB_EXAMPLES
+	bool "build libusb examples"
+
+endif
+
 comment "libusb needs a toolchain w/ threads"
 	depends on !BR2_TOOLCHAIN_HAS_THREADS
package/libusb/libusb.mk +10 -0
index aee3622f8d..32f15c9612 100644
@@ -25,5 +25,15 @@ else
 LIBUSB_CONF_OPTS += --disable-udev
 endif
 
+ifeq ($(BR2_PACKAGE_LIBUSB_EXAMPLES),y)
+LIBUSB_CONF_OPTS += --enable-examples-build
+define LIBUSB_INSTALL_TARGET_EXAMPLES
+	for example in listdevs xusb fxload hotplugtest testlibusb dpfp dpfp_threaded sam3u_benchmark ; do \
+		cp -dpfr $(@D)/examples/$${example} $(TARGET_DIR)/usr/bin; \
+	done
+endef
+LIBUSB_POST_INSTALL_TARGET_HOOKS += LIBUSB_INSTALL_TARGET_EXAMPLES
+endif
+
 $(eval $(autotools-package))
 $(eval $(host-autotools-package))
Signature · 1 line
2.11.0
#1 lore raw

PATCH v3 1/1 libusb: add an option to compile examples

Hello,

package/libusb/libusb.mk else · line 31

Quoted 4 lines · Ga?l PORTAY
package/libusb/libusb.mk +4 -0
+ifeq ($(BR2_PACKAGE_LIBUSB_EXAMPLES),y)
+LIBUSB_CONF_OPTS += --enable-examples-build
+define LIBUSB_INSTALL_TARGET_EXAMPLES
+	for example in listdevs xusb fxload hotplugtest testlibusb dpfp dpfp_threaded sam3u_benchmark ; do \

As I said in a review of an earlier version, you should use a make loop instead of a shell loop. One benefit of make loops is that they bail out if one iteration of the loop fails. A shell loop doesn't, and continues with the next iterations.

package/libusb/libusb.mk else · line 32

Quoted 1 line
package/libusb/libusb.mk +1 -0
+		cp -dpfr $(@D)/examples/$${example} $(TARGET_DIR)/usr/bin; \

This should have use $(INSTALL) -D -m 0755 and a full destination path.

I've fixed both issues and applied.

Thanks!

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Bootlin (formerly Free Electrons)
Embedded Linux and Kernel engineering
https://bootlin.com
#2 lore raw

PATCH v3 1/1 libusb: add an option to compile examples

Thomas,

Quoted 4 lines · Thomas Petazzoni

Hello,

On Mon, 11 Jun 2018 09:47:50 -0400, Ga?l PORTAY wrote:

Quoted 10 lines

package/libusb/libusb.mk else · line 31

Quoted 4 lines
package/libusb/libusb.mk +4 -0
+ifeq ($(BR2_PACKAGE_LIBUSB_EXAMPLES),y)
+LIBUSB_CONF_OPTS += --enable-examples-build
+define LIBUSB_INSTALL_TARGET_EXAMPLES
+	for example in listdevs xusb fxload hotplugtest testlibusb dpfp dpfp_threaded sam3u_benchmark ; do \

As I said in a review of an earlier version, you should use a make loop instead of a shell loop. One benefit of make loops is that they bail out if one iteration of the loop fails. A shell loop doesn't, and continues with the next iterations.

Sorry to have missed your review.

Hum... the shell's for loop exits in error too when an iteration fails; which causes make failure for TARGET_INSTALL (unless set +e is specified)... or maybe I missed something :/

Whatever, I really do prefer your solution.

Quoted 6 lines

package/libusb/libusb.mk else · line 32

Quoted 1 line
package/libusb/libusb.mk +1 -0
+		cp -dpfr $(@D)/examples/$${example} $(TARGET_DIR)/usr/bin; \

This should have use $(INSTALL) -D -m 0755 and a full destination path.

I've fixed both issues and applied.

I pretty sure I picked up this part of code from another package in buildroot. I can apply the same changes to keep package consistent.

Quoted 11 lines

Thanks!

Thomas

Signature · 7 lines
Thomas Petazzoni, CTO, Bootlin (formerly Free Electrons)
Embedded Linux and Kernel engineering
https://bootlin.com
_______________________________________________
buildroot mailing list
buildroot at busybox.net
http://lists.busybox.net/mailman/listinfo/buildroot
#3 lore raw

PATCH v3 1/1 libusb: add an option to compile examples

Hello,

Quoted 11 lines · Ga?l PORTAY
Quoted 5 lines

As I said in a review of an earlier version, you should use a make loop instead of a shell loop. One benefit of make loops is that they bail out if one iteration of the loop fails. A shell loop doesn't, and continues with the next iterations.

Sorry to have missed your review.

Hum... the shell's for loop exits in error too when an iteration fails; which causes make failure for TARGET_INSTALL (unless set +e is specified)... or maybe I missed something :/

I don't think shell snippets executed by make are executed with set -e.

Quoted 9 lines
Quoted 6 lines

package/libusb/libusb.mk else · line 32

Quoted 1 line
package/libusb/libusb.mk +1 -0
+		cp -dpfr $(@D)/examples/$${example} $(TARGET_DIR)/usr/bin; \  

This should have use $(INSTALL) -D -m 0755 and a full destination path.

I've fixed both issues and applied.

I pretty sure I picked up this part of code from another package in buildroot. I can apply the same changes to keep package consistent.

We do use "cp -dpfr" to copy entire directories. But for individual files, we prefer $(INSTALL).

Best regards,

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Bootlin (formerly Free Electrons)
Embedded Linux and Kernel engineering
https://bootlin.com