Moved to single generated fusb.h, headers now generated out of lib directory
[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   have_libusb1=no
29   if test [x]$1 = xyes; then
30     PKG_CHECK_MODULES(USB, libusb-1.0, [have_libusb1=yes], [
31       AC_LANG_PUSH(C)
32
33       AC_CHECK_HEADERS([libusb-1.0/libusb.h], [have_libusb1=yes],
34                        [libusbok=no; AC_MSG_RESULT([USRP requires libusb-1.0. libusb.h not found. See http://www.libusb.org])])
35
36       AC_SEARCH_LIBS(libusb_bulk_transfer, [usb], [USB_LIBS="$LIBS"],
37                      [libusbok=no; AC_MSG_RESULT([USRP requires libusb-1.0. libusb_bulk_transfer not found. See http://www.libusb.org])])
38
39       AC_LANG_POP
40     ])
41   else
42     PKG_CHECK_MODULES(USB, libusb, [], [
43       AC_LANG_PUSH(C)
44
45       AC_CHECK_HEADERS([usb.h], [],
46                        [libusbok=no; AC_MSG_RESULT([USRP requires libusb. usb.h not found. See http://www.libusb.org])])
47
48       save_LIBS="$LIBS"
49       case "$host_os" in
50         darwin*)
51           LIBS="$LIBS -lIOKit"
52           ;;
53         *) ;;
54       esac
55
56       AC_SEARCH_LIBS(usb_bulk_write, [usb], [USB_LIBS="$LIBS"],
57                      [libusbok=no; AC_MSG_RESULT([USRP requires libusb. usb_bulk_write not found. See http://www.libusb.org])])
58
59       LIBS="$save_LIBS"
60
61       AC_LANG_POP
62     ])
63   fi
64
65   if test x$libusbok = xyes; then
66     if test x$have_libusb1 = xyes; then
67       AC_DEFINE(HAVE_LIBUSB_1, [1], [Define if libusb-1.0 found])
68     fi
69     AC_OUTPUT_COMMANDS([
70       case "$CONFIG_OTHER" in
71       fusb*)
72         outfile=usrp/host/lib/$CONFIG_OTHER
73         ;;
74       usrp*)
75         outfile=usrp/host/include/usrp/$CONFIG_OTHER
76         ;;
77       esac
78
79       case "$CONFIG_OTHER" in
80       fusb*|usrp*)
81         tmpfile=${outfile}T
82         dirname="sed s,^.*/,,g"
83      
84         echo creating $outfile
85         cat > $tmpfile << _EOF_
86  /*  -*- Mode: C++ -*-
87  * --------------------------------------------------------------------
88  * DO NOT EDIT THIS FILE!  It has been automatically generated
89  * from:    configure.in and `echo $outfile|$dirname`.in
90  * on host: `(hostname || uname -n) 2>/dev/null | sed 1q`
91  * --------------------------------------------------------------------
92  *
93  * Copyright 2005 Free Software Foundation, Inc.
94  * 
95  * This file is part of GNU Radio
96  * 
97  * GNU Radio is free software; you can redistribute it and/or modify
98  * it under the terms of the GNU General Public License as published by
99  * the Free Software Foundation; either version 3, or (at your option)
100  * any later version.
101  * 
102  * GNU Radio is distributed in the hope that it will be useful,
103  * but WITHOUT ANY WARRANTY; without even the implied warranty of
104  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
105  * GNU General Public License for more details.
106  * 
107  * You should have received a copy of the GNU General Public License
108  * along with GNU Radio; see the file COPYING.  If not, write to
109  * the Free Software Foundation, Inc., 51 Franklin Street,
110  * Boston, MA 02110-1301, USA.
111  */
112
113 _EOF_
114         echo "#ifndef _`echo $outfile | $dirname | tr a-z. A-Z_`_" >> $tmpfile
115         echo "#define _`echo $outfile | $dirname | tr a-z. A-Z_`_" >> $tmpfile
116         echo >> $tmpfile
117
118         case "$CONFIG_OTHER" in
119         usrp_prims*)
120           echo '#include <usrp/usrp_slots.h>' >> $tmpfile
121           echo '#include <string>' >> $tmpfile
122           echo >> $tmpfile
123           ;;
124         usrp_basic*)
125           echo '#include <usrp/db_base.h>' >> $tmpfile
126           echo '#include <usrp/usrp_slots.h>' >> $tmpfile
127           echo '#include <string>' >> $tmpfile
128           echo '#include <vector>' >> $tmpfile
129           echo '#include <boost/utility.hpp>' >> $tmpfile
130           echo '#include <usrp/usrp_subdev_spec.h>' >> $tmpfile
131           echo >> $tmpfile
132           ;;
133         esac
134
135         if test x$have_libusb1 = xno; then
136           echo 'struct usb_device;'>> $tmpfile
137           echo 'struct usb_dev_handle;'>> $tmpfile
138           echo 'struct usb_device_descriptor;' >> $tmpfile
139           echo >> $tmpfile
140           echo 'typedef struct usb_device libusb_device;' >> $tmpfile
141           echo 'typedef struct usb_dev_handle libusb_device_handle;' >> $tmpfile
142           echo 'typedef struct usb_device_descriptor libusb_device_descriptor;' >> $tmpfile
143           echo >> $tmpfile
144         fi
145
146         if test x$have_libusb1 = xyes; then
147           echo 'struct libusb_device;' >> $tmpfile
148           echo 'struct libusb_device_handle;' >> $tmpfile
149           echo 'struct libusb_device_descriptor;' >> $tmpfile
150           echo >> $tmpfile
151         fi
152
153         # The ugly but portable cpp stuff comes from here
154         infile=usrp/host/lib/`echo $outfile | sed 's,.*/,,g;s,\..*$,,g'`.h.in
155         sed '/^##.*$/d' $infile >> $tmpfile 
156         mv -f ${tmpfile} ${outfile}
157         ;;
158       esac
159
160       ],[
161       have_libusb1=$have_libusb1
162     ])
163
164     AC_SUBST(USB_LIBS)
165     ifelse([$2], , :, [$2])
166   else
167     ifelse([$3], , :, [$3])
168   fi
169 ])