Added autotools header generation and build time version checking
[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 AC_DEFUN([USRP_LIBUSB], [
21     libusbok=yes
22     PKG_CHECK_MODULES(USB, libusb-1.0, [have_libusb1=yes; libusbok=yes], [
23         PKG_CHECK_MODULES(USB, libusb, [have_libusb1=no; libusbok=yes], [libusbok=no])
24     ]) 
25
26     if test x$libusbok = xyes; then
27       if test x$have_libusb1 = xyes; then
28         AC_DEFINE(HAVE_LIBUSB_1, [1], [Define if libusb-1.0 found])
29       fi
30       AC_OUTPUT_COMMANDS([
31         case "$CONFIG_OTHER" in
32         usrp*)
33           outfile=usrp/host/include/usrp/$CONFIG_OTHER
34           tmpfile=${outfile}T
35           dirname="sed s,^.*/,,g"
36
37           echo creating $outfile
38           cat > $tmpfile << _EOF_
39 /*  -*- Mode: C++ -*-
40 * --------------------------------------------------------------------
41 * DO NOT EDIT THIS FILE!  It has been automatically generated
42 * from:    configure.in and `echo $outfile|$dirname`.in
43 * on host: `(hostname || uname -n) 2>/dev/null | sed 1q`
44 * --------------------------------------------------------------------
45 */
46
47 _EOF_
48           echo "#ifndef _`echo $outfile | $dirname | tr a-z. A-Z_`_" >> $tmpfile
49           echo "#define _`echo $outfile | $dirname | tr a-z. A-Z_`_" >> $tmpfile
50           echo >> $tmpfile
51
52           case "$CONFIG_OTHER" in
53           usrp_prims*)
54             echo '#include <usrp/usrp_slots.h>' >> $tmpfile
55             echo '#include <string>' >> $tmpfile
56             echo >> $tmpfile
57             ;;
58           usrp_basic*)
59             echo '#include <usrp/db_base.h>' >> $tmpfile
60             echo '#include <usrp/usrp_slots.h>' >> $tmpfile
61             echo '#include <string>' >> $tmpfile
62             echo '#include <vector>' >> $tmpfile
63             echo '#include <boost/utility.hpp>' >> $tmpfile
64             echo '#include <usrp/usrp_subdev_spec.h>' >> $tmpfile
65             echo >> $tmpfile
66             ;;
67           esac
68
69           if test x$have_libusb1 = xno; then
70             echo 'struct usb_device;'>> $tmpfile
71             echo 'struct usb_dev_handle;'>> $tmpfile
72             echo 'typedef struct usb_device libusb_device;' >> $tmpfile
73             echo 'typedef struct usb_dev_handle libusb_device_handle;' >> $tmpfile
74             echo >> $tmpfile
75           fi
76
77           if test x$have_libusb1 = xyes; then
78             echo 'struct libusb_device;' >> $tmpfile
79             echo 'struct libusb_device_handle;' >> $tmpfile
80             echo >> $tmpfile
81           fi
82
83           # The ugly but portable cpp stuff comes from here
84           infile=usrp/host/include/usrp/`echo $outfile | sed 's,.*/,,g;s,\..*$,,g'`.h.in
85           sed '/^##.*$/d' $infile >> $tmpfile 
86           mv ${tmpfile} ${outfile}
87           ;;
88         esac
89
90         ],[
91         have_libusb1=$have_libusb1
92       ])
93
94         AC_SUBST(USB_LIBS)
95         ifelse([$1], , :, [$1])
96     else
97         ifelse([$2], , :, [$2])
98     fi
99 ])