Re: libgphoto2 and sane-backends FTBFS with libusb2-dev
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
steven@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 to: