1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
|
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 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 but WITHOUT ANY WARRANTY; without even the implied warranty of
dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
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 the Free Software Foundation, Inc., 51 Franklin Street,
dnl Boston, MA 02110-1301, USA.
# $1 is $req_libusb1:
# yes : check libusb-1.0
# no : check libusb-0.12
# "" : check libusb-0.12
AC_DEFUN([USRP_LIBUSB], [
dnl Use PKGCONFIG to check for packages first, then check to
dnl make sure the USB_* variables work (whether from PKGCONFIG
dnl or overridden by the user)
libusbok=no
have_libusb1=no
if test x$1 = xyes; then
PKG_CHECK_MODULES(USB, libusb-1.0, [
libusbok=yes
have_libusb1=yes
usb_header='libusb-1.0/libusb.h'
usb_lib_func='libusb_bulk_transfer'
usb_lib_name='usb-1.0'
])
else
dnl not using libusb1 (for now); see if legacy version is found.
dnl it might be installed under the name either 'libusb' or
dnl 'libusb-legacy', or just available via the
dnl user's shell environment
dnl see if the pkgconfig module 'libusb' is available
PKG_CHECK_MODULES(USB, libusb, [libusbok=yes], [libusbok=no])
dnl PKG_CHECK_MODULES does not work correctly when embedded
if test $libusbok = no; then
dnl if not, see if the pkgconfig module 'libusb-legacy' is available
PKG_CHECK_MODULES(USB, [libusb-legacy], [libusbok=yes], [libusbok=no])
fi
dnl set variables for further testing
usb_header='usb.h'
usb_lib_func='usb_bulk_write'
usb_lib_name='usb'
fi
if test x$1 != xyes || test $have_libusb1 = yes; then
dnl Either (1) libusb1 was specified and found; or
dnl (2) libusb1 was not specified. Restart checking.
libusbok=yes
dnl Verify that $usb_header is a valid header, and if so,
dnl then verify that $usb_lib_func can be found in the
dnl library $usb_lib_name.
dnl If PKGCONFIG found variable USB_INCLUDEDIR, and it is
dnl not empty, use it for checking for $usb_header.
dnl Otherwise, maybe the user's shell environment is already
dnl configured to find this header.
AC_LANG_PUSH(C)
save_CPPFLAGS="$CPPFLAGS"
if test x$USB_INCLUDEDIR != x; then
USB_INCLUDES="-I$USB_INCLUDEDIR"
CPPFLAGS="$CPPFLAGS $USB_INCLUDES"
AC_SUBST(USB_INCLUDES)
fi
AC_CHECK_HEADERS([$usb_header], [], [libusbok=no])
CPPFLAGS="$save_CPPFLAGS"
AC_LANG_POP(C)
if test $libusbok = no; then
AC_MSG_RESULT([USRP requires libusb header '$usb_header' which was not found or was not usable. See http://www.libusb.org])
else
dnl found the header; now make sure the library is OK
dnl On Darwin, need to include the IOKit library.
AC_LANG_PUSH(C)
save_LIBS="$LIBS"
LIBS=""
case "$host_os" in
darwin*)
USB_LIBS="$USB_LIBS -lIOKit"
LIBS="$USB_LIBS"
;;
*) ;;
esac
AC_CHECK_LIB([$usb_lib_name], [$usb_lib_func], [], [
libusbok=no
AC_MSG_RESULT([USRP requires library '$usb_lib_name' with function '$usb_lib_func', which was either not found or was not usable. See http://www.libusb.org])
])
case "$host_os" in
cygwin* | mingw*)
USB_LIBS="$LIBS"
;;
*) ;;
esac
LIBS="$save_LIBS"
AC_LANG_POP(C)
fi
fi
if test $libusbok = yes; then
AC_SUBST(USB_LIBS)
ifelse([$2], , :, [$2])
else
USB_INCLUDES=
USB_LIBS=
ifelse([$3], , :, [$3])
fi
])
|