AC_DEFUN([USRP_LIBUSB], [
libusbok=yes
-
+ have_libusb1=no
if test [x]$1 = xyes; then
- PKG_CHECK_MODULES(USB, libusb-1.0, [have_libusb1=yes], [libusbok=no])
+ PKG_CHECK_MODULES(USB, libusb-1.0, [have_libusb1=yes], [
+ AC_LANG_PUSH(C)
+
+ AC_CHECK_HEADERS([libusb-1.0/libusb.h], [have_libusb1=yes],
+ [libusbok=no; AC_MSG_RESULT([USRP requires libusb-1.0. libusb.h not found. See http://www.libusb.org])])
+
+ AC_SEARCH_LIBS(libusb_bulk_transfer, [usb], [USB_LIBS="$LIBS"],
+ [libusbok=no; AC_MSG_RESULT([USRP requires libusb-1.0. libusb_bulk_transfer not found. See http://www.libusb.org])])
+
+ AC_LANG_POP
+ ])
else
- PKG_CHECK_MODULES(USB, libusb, [have_libusb1=no], [libusbok=no])
+ PKG_CHECK_MODULES(USB, libusb, [], [
+ AC_LANG_PUSH(C)
+
+ AC_CHECK_HEADERS([usb.h], [],
+ [libusbok=no; AC_MSG_RESULT([USRP requires libusb. usb.h not found. See http://www.libusb.org])])
+
+ save_LIBS="$LIBS"
+ case "$host_os" in
+ darwin*)
+ LIBS="$LIBS -lIOKit"
+ ;;
+ *) ;;
+ esac
+
+ AC_SEARCH_LIBS(usb_bulk_write, [usb], [USB_LIBS="$LIBS"],
+ [libusbok=no; AC_MSG_RESULT([USRP requires libusb. usb_bulk_write not found. See http://www.libusb.org])])
+
+ LIBS="$save_LIBS"
+
+ AC_LANG_POP
+ ])
fi
if test x$libusbok = xyes; then
if test x$have_libusb1 = xno; then
echo 'struct usb_device;'>> $tmpfile
echo 'struct usb_dev_handle;'>> $tmpfile
- echo 'typedef struct usb_device libusb_device;' >> $tmpfile
- echo 'typedef struct usb_dev_handle libusb_device_handle;' >> $tmpfile
+ echo 'struct usb_device_descriptor;' >> $tmpfile
+ echo 'typedef usb_device libusb_device;' >> $tmpfile
+ echo 'typedef usb_dev_handle libusb_device_handle;' >> $tmpfile
+ echo 'typedef usb_device_descriptor libusb_device_descriptor;' >> $tmpfile
echo >> $tmpfile
fi