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;