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
124
125
126
127
128
129
130
131
132
|
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
LIBUSB_PKG_CONFIG_NAME=''
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'
LIBUSB_PKG_CONFIG_NAME='libusb-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
LIBUSB_PKG_CONFIG_NAME='libusb'
], [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
LIBUSB_PKG_CONFIG_NAME='libusb-legacy'
], [libusbok=no])
fi
dnl set variables for further testing
usb_header='usb.h'
usb_lib_func='usb_bulk_write'
usb_lib_name='usb'
fi
AC_SUBST(LIBUSB_PKG_CONFIG_NAME)
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
])
|