Autoconf support for checking the required version of libusb based on fusb-tech
[debian/gnuradio] / config / usrp_libusb.m4
1 dnl Copyright 2003,2008 Free Software Foundation, Inc.
2 dnl 
3 dnl This file is part of GNU Radio
4 dnl 
5 dnl GNU Radio is free software; you can redistribute it and/or modify
6 dnl it under the terms of the GNU General Public License as published by
7 dnl the Free Software Foundation; either version 3, or (at your option)
8 dnl any later version.
9 dnl 
10 dnl GNU Radio is distributed in the hope that it will be useful,
11 dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
12 dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 dnl GNU General Public License for more details.
14 dnl 
15 dnl You should have received a copy of the GNU General Public License
16 dnl along with GNU Radio; see the file COPYING.  If not, write to
17 dnl the Free Software Foundation, Inc., 51 Franklin Street,
18 dnl Boston, MA 02110-1301, USA.
19
20 # $1 is $req_libusb1:
21 #   yes : check libusb-1.0 
22 #   no  : check libusb-0.12 
23 #   ""  : check libusb-0.12 
24
25
26 AC_DEFUN([USRP_LIBUSB], [
27   libusbok=yes
28
29   if test [x]$1 = xyes; then
30     PKG_CHECK_MODULES(USB, libusb-1.0, [have_libusb1=yes], [libusbok=no])
31   else
32     PKG_CHECK_MODULES(USB, libusb, [have_libusb1=no], [libusbok=no])
33   fi
34
35   if test x$libusbok = xyes; then
36     if test x$have_libusb1 = xyes; then
37       AC_DEFINE(HAVE_LIBUSB_1, [1], [Define if libusb-1.0 found])
38     fi
39     AC_OUTPUT_COMMANDS([
40       case "$CONFIG_OTHER" in
41       usrp*)
42         outfile=usrp/host/include/usrp/$CONFIG_OTHER
43         tmpfile=${outfile}T
44         dirname="sed s,^.*/,,g"
45
46         echo creating $outfile
47         cat > $tmpfile << _EOF_
48 /*  -*- Mode: C++ -*-
49 * --------------------------------------------------------------------
50 * DO NOT EDIT THIS FILE!  It has been automatically generated
51 * from:    configure.in and `echo $outfile|$dirname`.in
52 * on host: `(hostname || uname -n) 2>/dev/null | sed 1q`
53 * --------------------------------------------------------------------
54 */
55
56 _EOF_
57         echo "#ifndef _`echo $outfile | $dirname | tr a-z. A-Z_`_" >> $tmpfile
58         echo "#define _`echo $outfile | $dirname | tr a-z. A-Z_`_" >> $tmpfile
59         echo >> $tmpfile
60
61         case "$CONFIG_OTHER" in
62         usrp_prims*)
63           echo '#include <usrp/usrp_slots.h>' >> $tmpfile
64           echo '#include <string>' >> $tmpfile
65           echo >> $tmpfile
66           ;;
67         usrp_basic*)
68           echo '#include <usrp/db_base.h>' >> $tmpfile
69           echo '#include <usrp/usrp_slots.h>' >> $tmpfile
70           echo '#include <string>' >> $tmpfile
71           echo '#include <vector>' >> $tmpfile
72           echo '#include <boost/utility.hpp>' >> $tmpfile
73           echo '#include <usrp/usrp_subdev_spec.h>' >> $tmpfile
74           echo >> $tmpfile
75           ;;
76         esac
77
78         if test x$have_libusb1 = xno; then
79           echo 'struct usb_device;'>> $tmpfile
80           echo 'struct usb_dev_handle;'>> $tmpfile
81           echo 'typedef struct usb_device libusb_device;' >> $tmpfile
82           echo 'typedef struct usb_dev_handle libusb_device_handle;' >> $tmpfile
83           echo >> $tmpfile
84         fi
85
86         if test x$have_libusb1 = xyes; then
87           echo 'struct libusb_device;' >> $tmpfile
88           echo 'struct libusb_device_handle;' >> $tmpfile
89           echo >> $tmpfile
90         fi
91
92         # The ugly but portable cpp stuff comes from here
93         infile=usrp/host/include/usrp/`echo $outfile | sed 's,.*/,,g;s,\..*$,,g'`.h.in
94         sed '/^##.*$/d' $infile >> $tmpfile 
95         mv ${tmpfile} ${outfile}
96         ;;
97       esac
98
99       ],[
100       have_libusb1=$have_libusb1
101     ])
102
103       AC_SUBST(USB_LIBS)
104       ifelse([$1], , :, [$1])
105   else
106       ifelse([$2], , :, [$2])
107   fi
108 ])