Merged r10501:10505 from michaelld/omnithread into trunk. Moves omnithread header...
[debian/gnuradio] / config / grc_usrp.m4
index 8c1b118bc2c1ca1cf51feaca81c7331136900341..3708dcad0d28eeceb6c1fdb27ffab51652393c48 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 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 
 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,
 dnl any later version.
 dnl 
 dnl GNU Radio is distributed in the hope that it will be useful,
@@ -18,11 +18,74 @@ dnl the Free Software Foundation, Inc., 51 Franklin Street,
 dnl Boston, MA 02110-1301, USA.
 
 AC_DEFUN([GRC_USRP],[
 dnl Boston, MA 02110-1301, USA.
 
 AC_DEFUN([GRC_USRP],[
-    GRC_ENABLE([usrp])
+    GRC_ENABLE(usrp)
+
+    GRC_WITH(usrp, [GRC_WITH_PKG_CONFIG_CHECK(usrp-inband)])
+
+    dnl Don't do usrp if omnithread, mblock, or pmt skipped
+    GRC_CHECK_DEPENDENCY(usrp, omnithread)
+    GRC_CHECK_DEPENDENCY(usrp, mblock)
+    GRC_CHECK_DEPENDENCY(usrp, pmt)
+
+    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})
+
+    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 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 Don't do usrp if guile not available (inband requires it)
+       GRC_CHECK_GUILE(usrp)
+
+       dnl Make sure libusb is installed; required for legacy USB
+        USRP_LIBUSB([],[passed=no;AC_MSG_RESULT([Unable to find dependency libusb.])])
+
+       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/lib/legacy \
+               -I\${abs_top_srcdir}/usrp/firmware/include \
+               -I\${abs_top_builddir}/usrp/host/lib/legacy"
+        usrp_LA="\${abs_top_builddir}/usrp/host/lib/legacy/libusrp.la"
+       usrp_inband_INCLUDES="-I\${abs_top_srcdir}/usrp/host/lib/inband"
+       usrp_inband_LA="\${abs_top_builddir}/usrp/host/lib/inband/libusrp-inband.la"
+    fi
+
+    dnl Include the usrp-inband INCLUDES and LA
+    AC_SUBST(usrp_inband_INCLUDES)
+    AC_SUBST(usrp_inband_LA)
+
+    dnl There are 2 pkg-config files (usrp, and usrp-inband); the one
+    dnl for usrp requires omnithread for Darwin only.  Create a variable
+    dnl for just the usrp.pc.in case.
+    case "$host_os" in
+      darwin*)
+        usrp_darwin_omnithread_pc_requires="gnuradio-omnithread"
+        ;;
+      *) dnl (blanks)
+        usrp_darwin_omnithread_pc_requires=""
+        ;;
+    esac
+    AC_SUBST(usrp_darwin_omnithread_pc_requires)
 
     AC_CONFIG_FILES([ \
        usrp/Makefile \
        usrp/usrp.pc \
 
     AC_CONFIG_FILES([ \
        usrp/Makefile \
        usrp/usrp.pc \
+       usrp/usrp-inband.pc \
         usrp/usrp.iss \
         usrp/doc/Doxyfile \
         usrp/doc/Makefile \
         usrp/usrp.iss \
         usrp/doc/Doxyfile \
         usrp/doc/Makefile \
@@ -30,9 +93,12 @@ AC_DEFUN([GRC_USRP],[
         usrp/host/Makefile \
         usrp/host/misc/Makefile \
         usrp/host/lib/Makefile \
         usrp/host/Makefile \
         usrp/host/misc/Makefile \
         usrp/host/lib/Makefile \
-        usrp/host/lib/std_paths.h \
+        usrp/host/lib/inband/Makefile \
+        usrp/host/lib/legacy/Makefile \
+        usrp/host/lib/legacy/std_paths.h \
         usrp/host/swig/Makefile \
         usrp/host/apps/Makefile \
         usrp/host/swig/Makefile \
         usrp/host/apps/Makefile \
+        usrp/host/apps-inband/Makefile \
         usrp/firmware/Makefile \
         usrp/firmware/include/Makefile \
         usrp/firmware/lib/Makefile \
         usrp/firmware/Makefile \
         usrp/firmware/include/Makefile \
         usrp/firmware/lib/Makefile \
@@ -43,20 +109,5 @@ AC_DEFUN([GRC_USRP],[
         usrp/fpga/rbf/Makefile \
     ])
 
         usrp/fpga/rbf/Makefile \
     ])
 
-    # gnulib.
-    # FIXME: this needs to fail gracefully and continue, not implemented yet
-    UTILS_FUNC_MKSTEMP
-
-    # These checks don't fail
-    AC_C_BIGENDIAN
-    AC_CHECK_HEADERS([byteswap.h])
-    AC_CHECK_FUNCS([getrusage sched_setscheduler])
-    AC_CHECK_FUNCS([sigaction snprintf])
-
-    passed=yes
-    USRP_LIBUSB([],[passed=no;AC_MSG_RESULT([Unable to configure USB dependency.])])
-    USRP_SET_FUSB_TECHNIQUE([],[passed=no;AC_MSG_RESULT([Unable to set fast USB technique.])])
-    USRP_SDCC([2.4.0],[],[passed=no;AC_MSG_RESULT([Unable to find firmware compiler.])])
-
-    GRC_BUILD_CONDITIONAL([usrp])
+    GRC_BUILD_CONDITIONAL(usrp)
 ])
 ])