Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 20 Feb 2013 18:04:09 +0100
From:      Hans Petter Selasky <hselasky@c2i.net>
To:        freebsd-usb@freebsd.org
Subject:   Re: argyllcms and usb (0.1 and 1.0)
Message-ID:  <201302201804.09100.hselasky@c2i.net>
In-Reply-To: <5124932E.5080205@passap.ru>
References:  <5124932E.5080205@passap.ru>

next in thread | previous in thread | raw e-mail | index | archive | help
On Wednesday 20 February 2013 10:11:10 Boris Samorodov wrote:
> Hello, All!
> 
> I try to build argyllcms (http://www.argyllcms.com/) at FreeBSD:
> -----
> % uname -a
> FreeBSD bsam.wart.ru 10.0-CURRENT FreeBSD 10.0-CURRENT #8 r246714: Tue
> Feb 12 22:26:27 SAMT 2013
> bsam@bsam.wart.ru:/usr/obj/usr/src/sys/BB64X  amd64
> -----
> 
> The program uses USB-0.1 and USB-1.0. There is a remark at sources
> that since libusb1 does not support FreeBSD, usb-0.1 is used.
> 
> When compiling I get the following error:
> -----
> spectro/usbio.c:741:17: error: use of undeclared identifier 'dev'; did
> you mean 'div'?
>                         descriptor = dev->descriptor;   /* Copy */
>                                      ^~~
>                                      div
> /usr/include/stdlib.h:91:8: note: 'div' declared here
> div_t    div(int, int) __pure2;
>          ^
> spectro/usbio.c:741:20: error: member reference base type 'div_t (int,
> int)' is not a structure or union
>                         descriptor = dev->descriptor;   /* Copy */
>                                      ~~~^ ~~~~~~~~~~
> 5 warnings and 2 errors generated.
> 
>         cc -c -o spectro/usbio.o -DUNIX -D_THREAD_SAFE -pipe -O2
> -DARGYLLCMS -Ispectro -Ih -Inumlib -Iicc -Icgats -Irspl -Ixicc -Igamut
> -Ispectro -Iplot -Ilibusb -Iucmm -I/usr/local/include spectro/usbio.c
> -----
> 
> Relevant (imho) parts from the source file:
> -----
> [...]
> #ifdef USE_LIBUSB1
> # include "libusb.h"
> #else
> # include "usb.h"
> #endif
> [...]
>                         /* Get a copy of the device descriptor so we can
> see device params */
> #ifdef USE_LIBUSB1
>                         if (libusb_get_device_descriptor(p->ppath->dev,
> &descriptor) != LIBUSB_SUCCESS)
>                                 error("Get device descriptor on USB port
> '%s' failed with %d (%s)",p->ppath->path,rv,libusb_strerror(rv));
> #else
>                         descriptor = dev->descriptor;   /* Copy */
> #endif
> -----
> 
> GCC version of the error message:
> -----
> spectro/usbio.c: In function 'usb_open_port':
> spectro/usbio.c:741: error: 'dev' undeclared (first use in this function)
> spectro/usbio.c:741: error: (Each undeclared identifier is reported only
> once
> spectro/usbio.c:741: error: for each function it appears in.)
> -----
> 
> Seems (from my very inexperienced in USB POV) that the program
> wants libusb-0.1 but gets libusb-2.0... So I'm stuck here.
> 
> Questons.
> 1. Should I use some additional flags to build sources using libusb-0.1?
> 2. Is a note about FreeBSD about libusb1 is stale and lubusb1 is
> supported? Sould I use some flags to use libusb1?
> 
> Any help is appreciated. Thanks!

Hi,

USE_LIBUSB1 should be set, and -lusb must be used as linker flag, not -
lusb-1.0 like under linux.

In FreeBSD -lusb is a multi-API library, including v0.1, v1.0 and v2.0. Header 
files are in /usr/include

-HPS



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201302201804.09100.hselasky>