switch source package format to 3.0 quilt
[debian/gnuradio] / gr-howto-write-a-block / config / usrp_fusb_tech.m4
index 8ebbd7c8af02a86db1cb809226bfaa7bca011f98..b99cf243207c43ba9210732e7346172d0c994a93 100644 (file)
@@ -1,11 +1,11 @@
 dnl
 dnl
-dnl Copyright 2003 Free Software Foundation, Inc.
+dnl Copyright 2003,2008,2009 Free Software Foundation, Inc.
 dnl 
 dnl This file is part of GNU Radio
 dnl 
 dnl GNU Radio is free software; you can redistribute it and/or modify
 dnl it under the terms of the GNU General Public License as published by
 dnl 
 dnl This file is part of GNU Radio
 dnl 
 dnl GNU Radio is free software; you can redistribute it and/or modify
 dnl it under the terms of the GNU General Public License as published by
-dnl the Free Software Foundation; either version 2, or (at your option)
+dnl the Free Software Foundation; either version 3, or (at your option)
 dnl any later version.
 dnl 
 dnl GNU Radio is distributed in the hope that it will be useful,
 dnl any later version.
 dnl 
 dnl GNU Radio is distributed in the hope that it will be useful,
@@ -15,42 +15,73 @@ dnl GNU General Public License for more details.
 dnl 
 dnl You should have received a copy of the GNU General Public License
 dnl along with GNU Radio; see the file COPYING.  If not, write to
 dnl 
 dnl You should have received a copy of the GNU General Public License
 dnl along with GNU Radio; see the file COPYING.  If not, write to
-dnl the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-dnl Boston, MA 02111-1307, USA.
+dnl the Free Software Foundation, Inc., 51 Franklin Street,
+dnl Boston, MA 02110-1301, USA.
 dnl 
 
 dnl 
 
-AC_DEFUN([USRP_SET_FUSB_TECHNIQUE],[
-  AC_REQUIRE([AC_CANONICAL_HOST])
-  AC_ARG_WITH(fusb-tech,
-       [  --with-fusb-tech=OS     set fast usb technique (auto)],
-               [cf_with_fusb_tech="$withval"],
-               [cf_with_fusb_tech="$host_os"])
-       
-
-  AC_CHECK_HEADER([linux/usbdevice_fs.h],
-       [x_have_usbdevice_fs_h=yes],
-       [x_have_usbdevice_fs_h=no])
+# $1 is $enable_usrp:
+#   yes : do these tests
+#   no  : do not do these tests
+#   ""  : do these tests
 
 
-  AC_MSG_CHECKING([for fast usb technique to use])
-  case "$cf_with_fusb_tech" in
-    linux*)    if test x${x_have_usbdevice_fs_h} = xyes;
-               then
-                 FUSB_TECH=linux
-                else
-                 FUSB_TECH=generic
-               fi                      ;;
+AC_DEFUN([USRP_SET_FUSB_TECHNIQUE],[
+  req_libusb1=no
+  USE_LIBUSB1=0
+  AC_ARG_WITH([fusb-tech],
+              AC_HELP_STRING([--with-fusb-tech=OS],
+                            [Set fast USB technique (default=auto)]),
+             [cf_with_fusb_tech="$withval"],
+             [cf_with_fusb_tech="$host_os"])
+  if test [x]$1 != xno; then
+      case "$cf_with_fusb_tech" in
+        libusb1*)
+          FUSB_TECH=libusb1
+          req_libusb1=yes
+         USE_LIBUSB1=1
+          ;;
+        linux*)
+          AC_CHECK_HEADER([linux/usbdevice_fs.h],
+                         [x_have_usbdevice_fs_h=yes],
+                          [x_have_usbdevice_fs_h=no])
+          if test x${x_have_usbdevice_fs_h} = xyes; then
+              FUSB_TECH=linux
+          else
+              FUSB_TECH=generic
+          fi
+          ;;
+        darwin*)
+          FUSB_TECH=darwin
+          ;;
+        cygwin*|win*|mingw*)
+          FUSB_TECH=win32
+          ;;
+        *bsd*)
+          AC_MSG_CHECKING([for RA/WB])
+          AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <dev/usb/usb.h>]],
+                                            [[struct usb_bulk_ra_wb_opt o;
+                                              ioctl(0, USB_SET_BULK_RA, &o);]])],
+                           [FUSB_TECH=ra_wb],
+                           [FUSB_TECH=generic])
+          ;;
+        *)
+          FUSB_TECH=generic
+          ;;
+      esac
 
 
-    darwin*)   FUSB_TECH=darwin        ;;
-    cygwin*|win*|mingw*)       FUSB_TECH=win32         ;;
-    *)         FUSB_TECH=generic       ;;
-  esac 
+      AC_MSG_CHECKING([for fast usb technique to use])
+      AC_MSG_RESULT($FUSB_TECH)
+      AC_SUBST(FUSB_TECH)
+  fi
 
 
-  AC_MSG_RESULT($FUSB_TECH)
-  AC_SUBST(FUSB_TECH)
+  AM_CONDITIONAL(FUSB_TECH_darwin,   test x$FUSB_TECH = xdarwin)
+  AM_CONDITIONAL(FUSB_TECH_win32,    test x$FUSB_TECH = xwin32)
+  AM_CONDITIONAL(FUSB_TECH_generic,  test x$FUSB_TECH = xgeneric)
+  AM_CONDITIONAL(FUSB_TECH_linux,    test x$FUSB_TECH = xlinux)
+  AM_CONDITIONAL(FUSB_TECH_libusb1,  test x$FUSB_TECH = xlibusb1)
+  AM_CONDITIONAL(FUSB_TECH_ra_wb,    test x$FUSB_TECH = xra_wb)
 
 
-  AM_CONDITIONAL(FUSB_TECH_darwin,   test $FUSB_TECH = darwin)
-  AM_CONDITIONAL(FUSB_TECH_win32,    test $FUSB_TECH = win32)
-  AM_CONDITIONAL(FUSB_TECH_generic,  test $FUSB_TECH = generic)
-  AM_CONDITIONAL(FUSB_TECH_linux,    test $FUSB_TECH = linux)
+  AC_SUBST(USE_LIBUSB1)
+  AC_CONFIG_FILES([\
+       usrp/host/include/usrp/libusb_types.h \
+  ])
 ])
 ])
-