Hi Markus!

On 23/07/13 16:08, Markus Koschany wrote:
> [...] on kFreeBSD-amd64 libusb-1.0 is not autodetected and libgphoto2
> fails with another error.

It tries to autodetect, but then fails in a later step:

> checking for libusb-1.0 to use... autodetect
> checking for LIBUSB1... yes
> checking libusb.h usability... no
> checking libusb.h presence... yes

This is explained in libgphoto2_port/config.log:

> configure:15332: checking libusb.h usability
> configure:15332: gcc -c -g -O2 -fstack-protector --param=ssp-buffer-size=4 
> -Wformat -Werror=format-security   conftest.c >&5
> In file included from conftest.c:102:0:
> /usr/include/libusb.h:254:43: error: expected '=', ',', ';', 'asm' or 
> '__attribute__' before '__aligned'
>  } libusb_ss_endpoint_companion_descriptor __aligned(sizeof(void *));

There seems to be some GNU/kFreeBSD portability issue in libusb.h - the
same issue that causes a build failure in libghoto2 later.

The attached patch may help with this.  (I applied it directly to my
system libusb.h).  After this I got a successful build on kfreebsd-amd64

Regards,
-- 
Steven Chamberlain
ste...@pyro.eu.org
--- /usr/include/libusb.h.orig	2013-07-22 18:12:54.000000000 +0000
+++ /usr/include/libusb.h	2013-07-23 16:04:05.712464237 +0000
@@ -251,7 +251,7 @@
 	uint8_t bMaxBurst;
 	uint8_t bmAttributes;
 	uint16_t wBytesPerInterval;
-}	libusb_ss_endpoint_companion_descriptor __aligned(sizeof(void *));
+}	libusb_ss_endpoint_companion_descriptor __attribute__((__aligned__(sizeof(void *))));
 
 typedef struct libusb_interface_descriptor {
 	uint8_t	bLength;
@@ -293,7 +293,7 @@
 	uint8_t bDevCapabilityType;
 	uint32_t bmAttributes;
 #define LIBUSB_USB_2_0_CAPABILITY_LPM_SUPPORT  (1 << 1)
-}	libusb_usb_2_0_device_capability_descriptor __aligned(sizeof(void *));
+}	libusb_usb_2_0_device_capability_descriptor __attribute__((__aligned(sizeof(void *))));
 
 typedef struct libusb_ss_usb_device_capability_descriptor {
 	uint8_t bLength;
@@ -309,7 +309,7 @@
 	uint8_t bFunctionalitySupport;
 	uint8_t bU1DevExitLat;
 	uint16_t wU2DevExitLat;
-}	libusb_ss_usb_device_capability_descriptor __aligned(sizeof(void *));
+}	libusb_ss_usb_device_capability_descriptor __attribute__((__aligned(sizeof(void *))));
 
 typedef struct libusb_bos_descriptor {
 	uint8_t bLength;
@@ -318,7 +318,7 @@
 	uint8_t bNumDeviceCapabilities;
 	struct libusb_usb_2_0_device_capability_descriptor *usb_2_0_ext_cap;
 	struct libusb_ss_usb_device_capability_descriptor *ss_usb_cap;
-}	libusb_bos_descriptor __aligned(sizeof(void *));
+}	libusb_bos_descriptor __attribute__((aligned(sizeof(void *))));
 
 typedef struct libusb_control_setup {
 	uint8_t	bmRequestType;

Reply via email to