cobble a temporary changelog entry to keep this test build straight
[debian/gnuradio] / config / grc_usrp.m4
index 85e7f31feff97478961030367ae26e90998f8c46..999b9c5c331b7db74b87e217bc6d5859685b0aba 100644 (file)
@@ -1,10 +1,10 @@
-dnl Copyright 2001,2002,2003,2004,2005,2006 Free Software Foundation, Inc.
+dnl Copyright 2001,2002,2003,2004,2005,2006,2007,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 2, or (at your option)
+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,
@@ -14,71 +14,77 @@ 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., 59 Temple Place - Suite 330,
-dnl Boston, MA 02111-1307, USA.
+dnl the Free Software Foundation, Inc., 51 Franklin Street,
+dnl Boston, MA 02110-1301, USA.
 
 AC_DEFUN([GRC_USRP],[
-    AC_CONFIG_SRCDIR([usrp/host/lib/usrp_prims.h])
+    GRC_ENABLE(usrp)
 
-    AC_CONFIG_FILES([ \
-       usrp/Makefile                           \
-       usrp/usrp.pc                            \
-       usrp/usrp.iss                           \
-       usrp/doc/Doxyfile                       \
-       usrp/doc/Makefile                       \
-       usrp/doc/other/Makefile                 \
-       usrp/host/Makefile                      \
-       usrp/host/misc/Makefile                 \
-       usrp/host/lib/Makefile                  \
-       usrp/host/lib/std_paths.h               \
-       usrp/host/swig/Makefile                 \
-       usrp/host/apps/Makefile                 \
-       usrp/firmware/Makefile                  \
-       usrp/firmware/include/Makefile          \
-       usrp/firmware/lib/Makefile              \
-       usrp/firmware/src/Makefile              \
-       usrp/firmware/src/common/Makefile       \
-       usrp/firmware/src/usrp2/Makefile        \
-       usrp/fpga/Makefile                      \
-       usrp/fpga/rbf/Makefile                  \
-    ])
+    GRC_WITH(usrp)
 
-    AC_CHECK_PROG([XMLTO],[xmlto],[yes],[])
-    AM_CONDITIONAL(HAS_XMLTO, test x$XMLTO = xyes)
+    dnl Don't do usrp if gruel is skipped
+    GRC_CHECK_DEPENDENCY(usrp, gruel)
 
-    # gnulib.
-    # FIXME: this needs to fail gracefully and continue, not implemented yet
-    UTILS_FUNC_MKSTEMP
+    dnl Make sure the fast usb technique is set, OS dependent.
+    dnl This is always performed, since it puts out CLI flags.
+    USRP_SET_FUSB_TECHNIQUE(${enable_usrp})
 
-    succeeded=yes
-    dnl Checks for library functions.
-    USRP_LIBUSB([],[succeeded=no])
-    USRP_SET_FUSB_TECHNIQUE([],[succeeded=no])
+    dnl If execution gets to here, $passed will be:
+    dnl   with : if the --with code didn't error out
+    dnl   yes  : if the --enable code passed muster and all dependencies are met
+    dnl   no   : otherwise
+    if test $passed = yes; then
+        dnl gnulib.
+        dnl FIXME: this needs to fail gracefully and continue, not implemented yet
+        UTILS_FUNC_MKSTEMP
 
-    dnl check for firmware cross compilation tools
-    dnl check for SDCC 2.4.0
-    USRP_SDCC([2.4.0],[],[succeeded=no])
-    
-    AC_CHECK_FUNCS([getrusage sched_setscheduler],[],[succeeded=no])
-    AC_CHECK_FUNCS([sigaction snprintf],[],[succeeded=no])
+        dnl These checks don't fail
+        AC_C_BIGENDIAN
+        AC_CHECK_HEADERS([byteswap.h linux/compiler.h])
+        AC_CHECK_FUNCS([getrusage sched_setscheduler pthread_setschedparam])
+        AC_CHECK_FUNCS([sigaction snprintf])
 
-    dnl we use these to handle possible byteswapping to and from the USRP.
-    AC_CHECK_HEADERS([byteswap.h],[],[succeeeded=no])
-    AC_C_BIGENDIAN
+       dnl Make sure libusb version is installed; required for legacy USB
+        USRP_LIBUSB([$req_libusb1],[],[passed=no;AC_MSG_RESULT([Unable to find dependency libusb.])])
 
-    if test $succeeded = yes; then
-       dnl Define where to look for USRP includes
-       USRP_INCLUDES='-I$(top_srcdir)/host/lib -I$(top_srcdir)/firmware/include'
-       AC_SUBST(USRP_INCLUDES)
-
-        USRP_DEFINES=''
-        AC_SUBST(USRP_DEFINES)
+       dnl Make sure SDCC >= 2.4.0 is available.
+        USRP_SDCC([2.4.0],[],[passed=no;AC_MSG_RESULT([Unable to find firmware compiler SDCC.])])
+    fi
+    if test $passed != with; then
+       dnl how and where to find INCLUDES and LA
+       usrp_INCLUDES=" \
+               -I\${abs_top_srcdir}/usrp/host/include \
+               -I\${abs_top_builddir}/usrp/host/include \
+               -I\${abs_top_srcdir}/usrp/firmware/include"
+        usrp_LA="\${abs_top_builddir}/usrp/host/lib/libusrp.la"
+    fi
 
-        DEFINES="$USRP_DEFINES"
-        AC_SUBST(DEFINES)
+    AC_CONFIG_FILES([ \
+       usrp/Makefile \
+       usrp/usrp.pc \
+        usrp/usrp.iss \
+        usrp/doc/Doxyfile \
+        usrp/doc/Makefile \
+        usrp/doc/other/Makefile \
+        usrp/host/Makefile \
+       usrp/host/include/Makefile \
+       usrp/host/include/usrp/Makefile \
+        usrp/host/misc/Makefile \
+        usrp/host/lib/Makefile \
+        usrp/host/lib/std_paths.h \
+        usrp/host/swig/Makefile \
+        usrp/host/apps/Makefile \
+        usrp/firmware/Makefile \
+        usrp/firmware/include/Makefile \
+        usrp/firmware/lib/Makefile \
+        usrp/firmware/src/Makefile \
+        usrp/firmware/src/common/Makefile \
+        usrp/firmware/src/usrp2/Makefile \
+        usrp/fpga/Makefile \
+        usrp/fpga/rbf/Makefile \
+        usrp/fpga/rbf/rev2/Makefile \
+        usrp/fpga/rbf/rev4/Makefile \
+    ])
 
-       subdirs="$subdirs usrp"
-    else
-       failed="$failed usrp"
-    fi
+    GRC_BUILD_CONDITIONAL(usrp)
 ])