diff -Nru gnuradio-3.6.1/.gitignore gnuradio-3.7.1/.gitignore --- gnuradio-3.6.1/.gitignore 2012-06-11 15:36:37.000000000 +0000 +++ gnuradio-3.7.1/.gitignore 2013-06-30 00:05:51.000000000 +0000 @@ -1,3 +1,4 @@ *~ *.pyc *.pyo +build/ diff -Nru gnuradio-3.6.1/AUTHORS gnuradio-3.7.1/AUTHORS --- gnuradio-3.6.1/AUTHORS 2012-06-11 15:36:37.000000000 +0000 +++ gnuradio-3.7.1/AUTHORS 1970-01-01 00:00:00.000000000 +0000 @@ -1,17 +0,0 @@ -Eric Blossom Most of the guts -Matt Ettus ongoing code, ideas, bugfixes, the USRP -John Gilmore ideas, bug fixes, financial support -Stephane Fillod SIMD speed ups, lots of other good stuff -Chuck Swiger hf stuff, enthusiasm ;) -Ramakrishnan Muthukrishnan Debian packages, Misc. stuff -Martin Dudok van Heel lots of stuff -Bob McGwier N4HY wisdom, code, bugfixes. -Krzysztof Kamieniecki bugfixes -Andrew Thomas Beck bugfixes -Joshua Lackey Original GMSK implementation. -Johnathan Corgan Build system, ongoing stuff, release manager -Bdale Garbee Debian release packages -Tom Rondeau Mostly digital waveforms and a little bit of trouble -Nate Goergen (UMD Student) -Josh Blum OpenGL versions of graphical sinks, - The GNU Radio Companion (grc) diff -Nru gnuradio-3.6.1/CMakeLists.txt gnuradio-3.7.1/CMakeLists.txt --- gnuradio-3.6.1/CMakeLists.txt 2012-06-11 15:36:37.000000000 +0000 +++ gnuradio-3.7.1/CMakeLists.txt 2013-08-29 17:17:16.000000000 +0000 @@ -1,4 +1,4 @@ -# Copyright 2010-2011 Free Software Foundation, Inc. +# Copyright 2010-2012 Free Software Foundation, Inc. # # This file is part of GNU Radio # @@ -40,7 +40,7 @@ # Set the version information here set(VERSION_INFO_MAJOR_VERSION 3) -set(VERSION_INFO_API_COMPAT 6) +set(VERSION_INFO_API_COMPAT 7) set(VERSION_INFO_MINOR_VERSION 1) set(VERSION_INFO_MAINT_VERSION 0) include(GrVersion) #setup version info @@ -50,6 +50,17 @@ SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -O2") ######################################################################## +# Environment setup +######################################################################## +IF(NOT DEFINED BOOST_ROOT) + SET(BOOST_ROOT ${CMAKE_INSTALL_PREFIX}) +ENDIF() + +if(ENABLE_GR_CTRLPORT) + set(GR_CTRLPORT True) +endif(ENABLE_GR_CTRLPORT) + +######################################################################## # Import executables from a native build (for cross compiling) # http://www.vtk.org/Wiki/CMake_Cross_Compiling#Using_executables_in_the_build_created_during_the_build ######################################################################## @@ -89,6 +100,7 @@ ) add_definitions(-DHAVE_CONFIG_H) add_definitions(/MP) #build with multiple processors + add_definitions(/bigobj) #allow for larger object files endif(MSVC) ######################################################################## @@ -108,6 +120,26 @@ set(GR_PKG_LIBEXEC_DIR ${GR_LIBEXEC_DIR}/${CMAKE_PROJECT_NAME}) set(GRC_BLOCKS_DIR ${GR_PKG_DATA_DIR}/grc/blocks) +# Special exception if prefix is /usr so we don't make a /usr/etc. +string(COMPARE EQUAL ${CMAKE_INSTALL_PREFIX} "/usr" isusr) +if(isusr) + set(SYSCONFDIR "/${GR_CONF_DIR}" CACHE PATH "System configuration directory") +else(isusr) + set(SYSCONFDIR "${CMAKE_INSTALL_PREFIX}/${GR_CONF_DIR}" CACHE PATH "System configuration directory" FORCE) +endif(isusr) + +set(GR_PREFSDIR ${SYSCONFDIR}/${CMAKE_PROJECT_NAME}/conf.d) + +OPTION(ENABLE_PERFORMANCE_COUNTERS "Enable block performance counters" OFF) +if(ENABLE_PERFORMANCE_COUNTERS) + message(STATUS "ADDING PERF COUNTERS") + SET(GR_PERFORMANCE_COUNTERS True) + add_definitions(-DGR_PERFORMANCE_COUNTERS) +else(ENABLE_PERFORMANCE_COUNTERS) + SET(GR_PERFORMANCE_COUNTERS False) + message(STATUS "NO PERF COUNTERS") +endif(ENABLE_PERFORMANCE_COUNTERS) + ######################################################################## # Variables replaced when configuring the package config files ######################################################################## @@ -115,6 +147,8 @@ file(TO_NATIVE_PATH "\${prefix}" exec_prefix) file(TO_NATIVE_PATH "\${exec_prefix}/${GR_LIBRARY_DIR}" libdir) file(TO_NATIVE_PATH "\${prefix}/${GR_INCLUDE_DIR}" includedir) +file(TO_NATIVE_PATH "${SYSCONFDIR}" SYSCONFDIR) +file(TO_NATIVE_PATH "${GR_PREFSDIR}" GR_PREFSDIR) ######################################################################## # Create uninstall target @@ -131,7 +165,7 @@ ######################################################################## # Enable python component ######################################################################## -find_package(PythonLibs) +find_package(PythonLibs 2) find_package(SWIG) if(SWIG_FOUND) @@ -207,8 +241,8 @@ add_subdirectory(volk) endif(ENABLE_VOLK) - -GR_VMCIRCBUF() +# Handle gr_log enable/disable +GR_LOGGING() ######################################################################## # Distribute the README file @@ -219,26 +253,43 @@ COMPONENT "docs" ) +######################################################################## +# The following dependency libraries are needed by all gr modules: +######################################################################## +list(APPEND GR_TEST_TARGET_DEPS volk gnuradio-runtime) +list(APPEND GR_TEST_PYTHON_DIRS + ${CMAKE_BINARY_DIR}/gnuradio-runtime/python + ${CMAKE_SOURCE_DIR}/gnuradio-runtime/python + ${CMAKE_BINARY_DIR}/gnuradio-runtime/swig +) + +# Note that above we put the binary gnuradio-runtime/python directory +# before the source directory. This is due to a quirk with ControlPort +# and how slice generates files and names. We want the QA and +# installed code to import the same names, so we have to grab from the +# binary directory first. ######################################################################## # Add subdirectories (in order of deps) ######################################################################## add_subdirectory(docs) -add_subdirectory(gruel) -add_subdirectory(gnuradio-core) +add_subdirectory(gnuradio-runtime) +add_subdirectory(gr-blocks) add_subdirectory(grc) - +add_subdirectory(gr-fec) add_subdirectory(gr-fft) +add_subdirectory(gr-filter) +add_subdirectory(gr-analog) +add_subdirectory(gr-digital) add_subdirectory(gr-atsc) add_subdirectory(gr-audio) add_subdirectory(gr-comedi) -add_subdirectory(gr-digital) +add_subdirectory(gr-channels) add_subdirectory(gr-noaa) add_subdirectory(gr-pager) add_subdirectory(gr-qtgui) add_subdirectory(gr-trellis) add_subdirectory(gr-uhd) -add_subdirectory(gr-shd) add_subdirectory(gr-utils) add_subdirectory(gr-video-sdl) add_subdirectory(gr-vocoder) @@ -246,6 +297,33 @@ add_subdirectory(gr-wavelet) add_subdirectory(gr-wxgui) +# Install our Cmake modules into $prefix/lib/cmake/gnuradio +# See "Package Configuration Files" on page: +# http://www.cmake.org/Wiki/CMake/Tutorials/Packaging + +configure_file( + ${CMAKE_SOURCE_DIR}/cmake/Modules/GnuradioConfigVersion.cmake.in + ${CMAKE_BINARY_DIR}/cmake/Modules/GnuradioConfigVersion.cmake +@ONLY) + +SET(cmake_configs + ${CMAKE_SOURCE_DIR}/cmake/Modules/GnuradioConfig.cmake + ${CMAKE_BINARY_DIR}/cmake/Modules/GnuradioConfigVersion.cmake +) + +if(NOT CMAKE_MODULES_DIR) + set(CMAKE_MODULES_DIR lib/cmake/gnuradio) +endif(NOT CMAKE_MODULES_DIR) + +# Install all other cmake files into same directory +file(GLOB cmake_others "cmake/Modules/*.cmake") + +install( + FILES ${cmake_configs} ${cmake_others} + DESTINATION ${CMAKE_MODULES_DIR} + COMPONENT "runtime_devel" +) + #finalize cpack after subdirs processed include(GrPackage) CPACK_FINALIZE() @@ -256,3 +334,17 @@ GR_PRINT_COMPONENT_SUMMARY() message(STATUS "Using install prefix: ${CMAKE_INSTALL_PREFIX}") message(STATUS "Building for version: ${VERSION} / ${LIBVER}") + +# Create a config.h with some definitions to export to other projects. +CONFIGURE_FILE( + ${CMAKE_CURRENT_SOURCE_DIR}/config.h.in + ${CMAKE_CURRENT_BINARY_DIR}/config.h +) + +# Install config.h in include/gnuradio +install( + FILES + ${CMAKE_CURRENT_BINARY_DIR}/config.h + DESTINATION ${GR_INCLUDE_DIR}/gnuradio + COMPONENT "runtime_devel" +) diff -Nru gnuradio-3.6.1/README gnuradio-3.7.1/README --- gnuradio-3.6.1/README 2012-06-11 15:36:37.000000000 +0000 +++ gnuradio-3.7.1/README 2013-06-30 00:12:58.000000000 +0000 @@ -38,7 +38,7 @@ http://gnuradio.org/git/gnuradio.git/. To checkout the latest, use this command: - $ git clone git://gnuradio.org/gnuradio + $ git clone git://git.gnuradio.org/gnuradio For information about using Git, please see: http://gnuradio.org/redmine/projects/gnuradio/wiki/DevelopingWithGit @@ -56,12 +56,6 @@ dependencies are listed in the manual's build page and are not presented here to reduce duplication errors. - On systems using pkgsrc (e.g. NetBSD and Dragonfly), build - meta-packages/gnuradio, which will build a previous release and - force installation of the dependencies. Then pkg_delete the - gnuradio package, which will leave the dependencies. (This - should also work on OSX.) - See the wiki at http://gnuradio.org for details. diff -Nru gnuradio-3.6.1/README-win32-mingw-short.txt gnuradio-3.7.1/README-win32-mingw-short.txt --- gnuradio-3.6.1/README-win32-mingw-short.txt 2012-06-11 15:36:37.000000000 +0000 +++ gnuradio-3.7.1/README-win32-mingw-short.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,92 +0,0 @@ -Building and using gnuradio on windows (win32) using mingw - -Required tools and libraries - -MingW and Msys -Download the latest stable version from the mingw site oand follow their installation instructions) - -Python for windows version 2.4 (or higher) -You do not need to build this yourself. -You can just install the windows executable which you can find on the python site. -I am not sure if it will work if you have speces in your python pathname. -I recommend installing it in C:\Python24 or D:\Python24 - -Libtool -If you are building from cvs you need a recent libtool -msys comes with libtool, but the version distributed with current mingw doesn't work with gnuradio. -download, build and install a recent libtool - -cppunit -Build and install cppunit - -boost -build and install boost (maybe you can get away with only unpacking the source, we only use the boost header files) -If you build boost, you first have to download jam (boost jam) for win32. (Do not use build and use the cygwin version) - -build environment: -You need to have the following files on your PATH: -python.exe python24.dll libcppunit-1-10-2.dll libfftw3f-3.dll fftwf-wisdom.exe cppunit-config -If you have cygwin installed Make sure that NO cygwin executables are on your path. - -needed on PATH: -/usr/local/bin -/mingw/bin -/bin -/c/Python24/ python.exe -/c/Python24/libs python24.dll -/c/Python24/DLLs -/usr/local/bin or /mingw/bin or /my/special/installed/lib/folder/bin - libcppunit-1-10-2.dll - libfftw3f-3.dll - fftw-wisdom-to-conf - fftwf-wisdom.exe - cppunit-config -/c/WINNT/system32 -/c/WINNT - - -I made a little script set_clean_path.sh to set my path for building gnuradio where I just discard the original PATH (to get rid of the cygwin executables on my default path) and just include what is needed: - -#!/bin/sh -export PATH=".:/usr/local/bin:/mingw/bin:/bin:/c/Python24:/c/Python24/DLLs:/c/Python24/libs:/my/special/installed/lib/folder/bin:/c/WINNT/system32:/c/WINNT:/c/WINNT/System32/Wbem:. - -You need to source this script to set the PATH. -. ./set_clean_path.sh -(notice the extra dot and space in the beginning of the line, this means source this file. Sourcing means execute it and remember all environment variables set in this script) - -If you are building from cvs it is recommended that you edit bootstrap to your needs and use it -If you built a recent libtool and didn't overwrite the original libtool -(because you installed the new version in /usr/local) then you have to tell aclocal to use the more recent libtool m4 macros. -You can do this by appending -I /usr/local/share/aclocal to the aclocal commandline -I also changed the aclocal and automake invocations to use the most recent version in my bootstrap script -Here follows the bootstrap script I use - -#!/bin/sh -rm -fr config.cache autom4te*.cache - -aclocal-1.8 -I config -I /usr/local/share/aclocal -autoconf -autoheader -libtoolize --automake -automake-1.8 --add-missing - -If you run this script it will convert a clean cvs checkout to a version which you can configure, build and install - -So now you can configure gnuradio. -On win32 /mingw you need to give it a few parameters -You need to tell it where cppunit is installed -where boost include files are to be found -where the pkg-config of libfftw is to be found -to use a generic cpu (no 3Dnow,SSE,MMX) (This option will not be needed anymore soon) -If you have boost installed in C:\boost_1_32_0 and cppunit and fftw in /usr/local then you would need the following configur commandline -$ ./configure --with-md-cpu=generic --with-cppunit-prefix=/usr/local --with-boost-include-dir=/c/boost_1_32_0/include/boost-1_32 PKG_CONFIG_PATH=/usr/local/lib/pkgconfig - -If everything went well you cannow do -make -make install - -Now you have a working gnuradio-core -Now you can go on building and installing gr-audio-windows and windows and wxgui -remember that all gnuradio and python dlls need to be on your path to use gnuradio -The gnuradio dlls are installed at -/c/Python24/Lib/site-packages:/c/Python24/Lib/site-packages/gnuradio:/c/Python24/Lib/site-packages/gnuradio/gr diff -Nru gnuradio-3.6.1/README.hacking gnuradio-3.7.1/README.hacking --- gnuradio-3.6.1/README.hacking 2012-06-11 15:36:37.000000000 +0000 +++ gnuradio-3.7.1/README.hacking 2013-06-30 00:10:49.000000000 +0000 @@ -29,11 +29,6 @@ Until boost 1.35 or later is common in distributions, you'll need to build boost from source yourself. See README.building-boost. -Also, when running make distcheck you'll need to provide the -DISTCHECK_CONFIGURE_FLAGS. E.g., - - $ make distcheck DISTCHECK_CONFIGURE_FLAGS=--with-boost=/opt/boost_1_36_0 - * C++ and Python @@ -158,55 +153,15 @@ For C++ we're using the cppunit framework. cppunit has its bad smells, but it's mostly workable. http://cppunit.sf.net -Currently each directory contains files qa_.{h,cc} +Currently each directory /lib contains files qa_.{h,cc} that bring together all the qa_ test suites in the directory. -We ought to be able to automate this without too much trouble. - -The directory gnuradio-core/src/tests contains programs that run -the tests. test_all runs all of the registered C++ unit tests. -As far as I can tell, the cppunit TestFactoryRegistry maybe able to be -tricked into doing what we want. As is, I don't think it's enough by -itself, since there's nothing dragging the qa* files out of the -library and into the program. I haven't tested out this idea. ** Python unit tests We use the standard unittest package for unit testing of Python code. -* Subversion line ending styles - -All text files in the tree should have the subversion property -'svn:eol-style' set to 'native', with the following exceptions: - -config/*.m4 -configure.ac -gr-howto-write-a-block/config/*.m4 -gr-howto-write-a-block/configure.ac - -The easiest way to ensure this is to add or edit the following lines in -your svn client configuration file (~/.subversion/config): - -enable-auto-props=yes - -[auto-props] -*.c = svn:eol-style=native -*.cc = svn:eol-style=native -*.i = svn:eol-style=native -*.h = svn:eol-style=native -*.am = svn:eol-style=native -*.py = svn:eol-style=native -*.ac = svn:eol-style=LF -*.m4 = svn:eol-style=LF - -* Misc tips - -ccache, a compiler cache, can really speed up your builds. -See http://ccache.samba.org/ - -Be sure to create links for gcc and g++ - * Standard command line options diff -Nru gnuradio-3.6.1/cmake/Modules/FindGnuradio.cmake gnuradio-3.7.1/cmake/Modules/FindGnuradio.cmake --- gnuradio-3.6.1/cmake/Modules/FindGnuradio.cmake 1970-01-01 00:00:00.000000000 +0000 +++ gnuradio-3.7.1/cmake/Modules/FindGnuradio.cmake 2013-06-30 00:05:51.000000000 +0000 @@ -0,0 +1,108 @@ +INCLUDE(FindPkgConfig) +INCLUDE(FindPackageHandleStandardArgs) + +# a subset of required modules can be set using the following syntax +#set(GR_REQUIRED_MODULES RUNTIME BLOCKS) + +# if GR_REQUIRED_MODULES is not defined, it will be set to the following list (all of them) +if(NOT GR_REQUIRED_MODULES) + set(GR_REQUIRED_MODULES RUNTIME ANALOG ATSC AUDIO BLOCKS CHANNELS DIGITAL FEC FFT FILTER NOAA PAGER QTGUI TRELLIS UHD VOCODER WAVELET PMT) +endif() + +set(GNURADIO_ALL_LIBRARIES "") +set(GNURADIO_ALL_INCLUDE_DIRS "") + +MACRO(LIST_CONTAINS var value) + SET(${var}) + FOREACH(value2 ${ARGN}) + IF (${value} STREQUAL ${value2}) + SET(${var} TRUE) + ENDIF(${value} STREQUAL ${value2}) + ENDFOREACH(value2) +ENDMACRO(LIST_CONTAINS) + +function(GR_MODULE EXTVAR PCNAME INCFILE LIBFILE) + + LIST_CONTAINS(REQUIRED_MODULE ${EXTVAR} ${GR_REQUIRED_MODULES}) + if(NOT REQUIRED_MODULE) + #message("Ignoring GNU Radio Module ${EXTVAR}") + return() + endif() + + message("Checking for GNU Radio Module: ${EXTVAR}") + + # check for .pc hints + PKG_CHECK_MODULES(PC_GNURADIO_${EXTVAR} ${PCNAME}) + + set(INCVAR_NAME "GNURADIO_${EXTVAR}_INCLUDE_DIRS") + set(LIBVAR_NAME "GNURADIO_${EXTVAR}_LIBRARIES") + set(PC_INCDIR "PC_GNURADIO_${EXTVAR}_INCLUDEDIR") + set(PC_LIBDIR "PC_GNURADIO_${EXTVAR}_LIBDIR") + + # look for include files + FIND_PATH( + ${INCVAR_NAME} + NAMES ${INCFILE} + HINTS $ENV{GNURADIO_RUNTIME_DIR}/include/gnuradio + ${PC_INCDIR} + ${CMAKE_INSTALL_PREFIX}/include/gnuradio + PATHS /usr/local/include/gnuradio + /usr/include/gnuradio + ) + + # look for libs + FIND_LIBRARY( + ${LIBVAR_NAME} + NAMES ${LIBFILE} + HINTS $ENV{GNURADIO_RUNTIME_DIR}/lib + ${PC_LIBDIR} + ${CMAKE_INSTALL_PREFIX}/lib/ + ${CMAKE_INSTALL_PREFIX}/lib64/ + PATHS /usr/local/lib + /usr/local/lib64 + /usr/lib + /usr/lib64 + ) + + # show results + message(" * INCLUDES=${GNURADIO_${EXTVAR}_INCLUDE_DIRS}") + message(" * LIBS=${GNURADIO_${EXTVAR}_LIBRARIES}") + + # append to all includes and libs list + LIST(APPEND GNURADIO_ALL_INCLUDE_DIRS ${GNURADIO_${EXTVAR}_INCLUDE_DIRS}) + LIST(APPEND GNURADIO_ALL_LIBRARIES ${GNURADIO_${EXTVAR}_LIBRARIES}) + + FIND_PACKAGE_HANDLE_STANDARD_ARGS(GNURADIO_${EXTVAR} DEFAULT_MSG GNURADIO_${EXTVAR}_LIBRARIES GNURADIO_${EXTVAR}_INCLUDE_DIRS) + message("GNURADIO_${EXTVAR}_FOUND = ${GNURADIO_${EXTVAR}_FOUND}") + set(GNURADIO_${EXTVAR}_FOUND ${GNURADIO_${EXTVAR}_FOUND} PARENT_SCOPE) + + # generate an error if the module is missing + if(NOT GNURADIO_${EXTVAR}_FOUND) + message(FATAL_ERROR "Required GNU Radio Component: ${EXTVAR} missing!") + endif() + + MARK_AS_ADVANCED(GNURADIO_${EXTVAR}_LIBRARIES GNURADIO_${EXTVAR}_INCLUDE_DIRS) + +endfunction() + +GR_MODULE(CORE gnuradio-runtime gr_top_block.h gnuradio-runtime) +GR_MODULE(RUNTIME gnuradio-runtime gr_top_block.h gnuradio-runtime) +GR_MODULE(ANALOG gnuradio-analog analog/noise_type.h gnuradio-analog) +GR_MODULE(ATSC gnuradio-atsc atsc_api.h gnuradio-atsc) +GR_MODULE(AUDIO gnuradio-audio audio/sink.h gnuradio-audio) +GR_MODULE(BLOCKS gnuradio-blocks blocks/delay.h gnuradio-blocks) +GR_MODULE(CHANNELS gnuradio-channels channels/channel_model.h gnuradio-channels) +GR_MODULE(DIGITAL gnuradio-digital digital/lfsr.h gnuradio-digital) +GR_MODULE(FEC gnuradio-fec fec/rs.h gnuradio-fec) +GR_MODULE(FFT gnuradio-fft fft/fft.h gnuradio-fft) +GR_MODULE(FILTER gnuradio-filter filter/fir_filter.h gnuradio-filter) +GR_MODULE(NOAA gnuradio-noaa noaa/hrpt.h gnuradio-noaa) +GR_MODULE(PAGER gnuradio-pager noaa/flex_deinterleave.h gnuradio-pager) +GR_MODULE(QTGUI gnuradio-qtgui qtgui/utils.h gnuradio-qtgui) +GR_MODULE(TRELLIS gnuradio-trellis trellis/fsm.h gnuradio-trellis) +GR_MODULE(UHD gnuradio-uhd gr_uhd/usrp_sink.h gnuradio-uhd) +GR_MODULE(VOCODER gnuradio-vocoder vocoder/alaw_encode_sb.h gnuradio-vocoder) +GR_MODULE(WAVELET gnuradio-wavelet wavelet/wavelet_ff.h gnuradio-wavelet) +GR_MODULE(PMT gnuradio-pmt pmt/pmt.h gnuradio-pmt) + + diff -Nru gnuradio-3.6.1/cmake/Modules/FindICE-3.5.cmake gnuradio-3.7.1/cmake/Modules/FindICE-3.5.cmake --- gnuradio-3.6.1/cmake/Modules/FindICE-3.5.cmake 1970-01-01 00:00:00.000000000 +0000 +++ gnuradio-3.7.1/cmake/Modules/FindICE-3.5.cmake 2013-08-16 22:01:25.000000000 +0000 @@ -0,0 +1,127 @@ +# Override the search path for ICE; useful for manually installed libs. +# set(ICE_MANUAL_INSTALL_PATH /opt/Ice-3.5.0/) + +FIND_PACKAGE(PkgConfig) +PKG_CHECK_MODULES(PC_ICE Ice-3.5 QUIET) + +if(NOT ICE_FOUND) + # Maybe we don't have a .pc file for Ice. Check for Config.h. If + # that exists, get the version string and parse it for the proper + # version. + FIND_PATH( + ICE_CONFIG_INCLUDE_DIR + NAMES IceUtil/Config.h + HINTS ${ICE_MANUAL_INSTALL_PATH}/include/ ${CMAKE_INSTALL_PREFIX}/${HEADER_DIR} + ) + if(ICE_CONFIG_INCLUDE_DIR) + file(STRINGS "${ICE_CONFIG_INCLUDE_DIR}/IceUtil/Config.h" + ICE_STRING_VERSION REGEX "ICE_STRING_VERSION") + string(REGEX MATCH "3.5" ICE_FOUND ${ICE_STRING_VERSION}) + if(ICE_FOUND) + set(ICE_FOUND TRUE) + endif(ICE_FOUND) + endif(ICE_CONFIG_INCLUDE_DIR) +endif(NOT ICE_FOUND) + +if(NOT ICE_FOUND) + message(STATUS " package 'Ice-3.5' not found") +endif(NOT ICE_FOUND) + +# Recheck if we found the right version of ICE and proceed if true. +if(ICE_FOUND) + +# Prepare the path hint for the libraries based on the include +# directory found. +string(REGEX REPLACE "/include" "" ICE_PATH ${ICE_CONFIG_INCLUDE_DIR}) + +FIND_PATH( + ICE_INCLUDE_DIR + NAMES IceUtil/IceUtil.h Ice/Ice.h + NO_DEFAULT_PATH + HINTS ${ICE_PATH}/include +) + +set(ICE_LIBRARY ) + +FIND_LIBRARY( + ICE_ICESTORM IceStorm + NO_DEFAULT_PATH + HINTS ${ICE_PATH}/lib ${ICE_PATH}/lib64 +) + +FIND_LIBRARY( + ICE_ICESTORM IceStorm + NO_DEFAULT_PATH + HINTS ${ICE_PATH}/lib ${ICE_PATH}/lib64 +) +FIND_LIBRARY( + ICE_ICE Ice + NO_DEFAULT_PATH + HINTS ${ICE_PATH}/lib ${ICE_PATH}/lib64 +) +FIND_LIBRARY( + ICE_ICEGRID IceGrid + NO_DEFAULT_PATH + HINTS ${ICE_PATH}/lib ${ICE_PATH}/lib64 +) +FIND_LIBRARY( + ICE_ICEUTIL IceUtil + NO_DEFAULT_PATH + HINTS ${ICE_PATH}/lib ${ICE_PATH}/lib64 +) +FIND_LIBRARY( + ICE_GLACIER2 Glacier2 + NO_DEFAULT_PATH + HINTS ${ICE_PATH}/lib ${ICE_PATH}/lib64 +) + +if(APPLE) + FIND_LIBRARY( + ICE_ZEROCICE ZeroCIce + NO_DEFAULT_PATH + HINTS ${ICE_PATH}/lib ${ICE_PATH}/lib64 + ) +endif(APPLE) + +FIND_LIBRARY( + ICE_PTHREAD NAMES pthread pthread-2.13 + HINTS ${CMAKE_INSTALL_PREFIX}/lib64/ ${CMAKE_INSTALL_PREFIX}/lib/ + HINTS ${PC_ICE_LIBDIR} ${PC_ICE_LIBRARY_DIRS} /lib/i386-linux-gnu /lib/x86_64-linux-gnu /usr/lib /lib /lib64 + ENV LD_LIBRARY_PATH +) + +set(ICE_FOUND FALSE) + +if(ICE_ICE OR ICE_ZEROCICE) + if(ICE_ICEUTIL) + list(APPEND ICE_LIBRARY + ${ICE_ICE} + ${ICE_ZEROCICE} + ${ICE_ICEUTIL} + ) + + FIND_PROGRAM(ICE_SLICE2CPP slice2cpp + HINTS ${CMAKE_INSTALL_PREFIX}/bin ${ICE_MANUAL_INSTALL_PATH}/bin/) + FIND_PROGRAM(ICE_SLICE2PY slice2py + HINTS ${CMAKE_INSTALL_PREFIX}/bin ${ICE_MANUAL_INSTALL_PATH}/bin/) + + # Check that the ICE Python package is installed + GR_PYTHON_CHECK_MODULE("Ice >= 3.5" Ice "Ice.stringVersion() >= '3.5.0'" PYTHON_ICE_FOUND) + if(PYTHON_ICE_FOUND) + set(ICE_FOUND TRUE) + endif(PYTHON_ICE_FOUND) + + if(ICE_FOUND) + message(STATUS "Ice-3.5 found") + + set(ICE_LIBRARIES ${ICE_LIBRARY}) + set(ICE_INCLUDE_DIRS ${ICE_INCLUDE_DIR}) + + include(FindPackageHandleStandardArgs) + find_package_handle_standard_args(ICE DEFAULT_MSG ICE_LIBRARY ICE_INCLUDE_DIR) + mark_as_advanced(ICE_INCLUDE_DIR ICE_LIBRARY) + endif(ICE_FOUND) + endif(ICE_ICEUTIL) +endif(ICE_ICE OR ICE_ZEROCICE) + +endif(ICE_FOUND) diff -Nru gnuradio-3.6.1/cmake/Modules/FindICE.cmake gnuradio-3.7.1/cmake/Modules/FindICE.cmake --- gnuradio-3.6.1/cmake/Modules/FindICE.cmake 1970-01-01 00:00:00.000000000 +0000 +++ gnuradio-3.7.1/cmake/Modules/FindICE.cmake 2013-08-16 22:01:25.000000000 +0000 @@ -0,0 +1,128 @@ +# Override the search path for ICE; useful for manually installed libs. +# set(ICE_MANUAL_INSTALL_PATH /opt/Ice-3.4.2/) + +FIND_PACKAGE(PkgConfig) +PKG_CHECK_MODULES(PC_ICE Ice-3.4 QUIET) + +if(NOT ICE_FOUND) + # Maybe we don't have a .pc file for Ice. Check for Config.h. If + # that exists, get the version string and parse it for the proper + # version. + FIND_PATH( + ICE_CONFIG_INCLUDE_DIR + NAMES IceUtil/Config.h + HINTS ${CMAKE_INSTALL_PREFIX}/${HEADER_DIR} ${ICE_MANUAL_INSTALL_PATH}/include/ + ) + if(ICE_CONFIG_INCLUDE_DIR) + file(STRINGS "${ICE_CONFIG_INCLUDE_DIR}/IceUtil/Config.h" + ICE_STRING_VERSION REGEX "ICE_STRING_VERSION") + string(REGEX MATCH "3.4" ICE_FOUND ${ICE_STRING_VERSION}) + if(ICE_FOUND) + set(ICE_FOUND TRUE) + endif(ICE_FOUND) + endif(ICE_CONFIG_INCLUDE_DIR) +endif(NOT ICE_FOUND) + +if(NOT ICE_FOUND) + message(STATUS " package 'Ice-3.4' not found") +endif(NOT ICE_FOUND) + + +# Recheck if we found the right version of ICE and proceed if true. +if(ICE_FOUND) + +# Prepare the path hint for the libraries based on the include +# directory found. +string(REGEX REPLACE "/include" "" ICE_PATH ${ICE_CONFIG_INCLUDE_DIR}) + +FIND_PATH( + ICE_INCLUDE_DIR + NAMES IceUtil/IceUtil.h Ice/Ice.h + NO_DEFAULT_PATH + HINTS ${ICE_PATH}/include +) + +set(ICE_LIBRARY ) + +FIND_LIBRARY( + ICE_ICESTORM IceStorm + NO_DEFAULT_PATH + HINTS ${ICE_PATH}/lib ${ICE_PATH}/lib64 +) + +FIND_LIBRARY( + ICE_ICESTORM IceStorm + NO_DEFAULT_PATH + HINTS ${ICE_PATH}/lib ${ICE_PATH}/lib64 +) +FIND_LIBRARY( + ICE_ICE Ice + NO_DEFAULT_PATH + HINTS ${ICE_PATH}/lib ${ICE_PATH}/lib64 +) +FIND_LIBRARY( + ICE_ICEGRID IceGrid + NO_DEFAULT_PATH + HINTS ${ICE_PATH}/lib ${ICE_PATH}/lib64 +) +FIND_LIBRARY( + ICE_ICEUTIL IceUtil + NO_DEFAULT_PATH + HINTS ${ICE_PATH}/lib ${ICE_PATH}/lib64 +) +FIND_LIBRARY( + ICE_GLACIER2 Glacier2 + NO_DEFAULT_PATH + HINTS ${ICE_PATH}/lib ${ICE_PATH}/lib64 +) + +if(APPLE) + FIND_LIBRARY( + ICE_ZEROCICE ZeroCIce + NO_DEFAULT_PATH + HINTS ${ICE_PATH}/lib ${ICE_PATH}/lib64 + ) +endif(APPLE) + +FIND_LIBRARY( + ICE_PTHREAD NAMES pthread pthread-2.13 + HINTS ${CMAKE_INSTALL_PREFIX}/lib64/ ${CMAKE_INSTALL_PREFIX}/lib/ + HINTS ${PC_ICE_LIBDIR} ${PC_ICE_LIBRARY_DIRS} /lib/i386-linux-gnu /lib/x86_64-linux-gnu /usr/lib /lib /lib64 + ENV LD_LIBRARY_PATH +) + +set(ICE_FOUND FALSE) + +if(ICE_ICE OR ICE_ZEROCICE) + if(ICE_ICEUTIL) + list(APPEND ICE_LIBRARY + ${ICE_ICE} + ${ICE_ZEROCICE} + ${ICE_ICEUTIL} + ) + + FIND_PROGRAM(ICE_SLICE2CPP slice2cpp + HINTS ${CMAKE_INSTALL_PREFIX}/bin ${ICE_MANUAL_INSTALL_PATH}/bin/) + FIND_PROGRAM(ICE_SLICE2PY slice2py + HINTS ${CMAKE_INSTALL_PREFIX}/bin ${ICE_MANUAL_INSTALL_PATH}/bin/) + + # Check that the ICE Python package is installed + GR_PYTHON_CHECK_MODULE("Ice >= 3.4" Ice "Ice.stringVersion() >= '3.4.0'" PYTHON_ICE_FOUND) + if(PYTHON_ICE_FOUND) + set(ICE_FOUND TRUE) + endif(PYTHON_ICE_FOUND) + + if(ICE_FOUND) + message(STATUS "Ice-3.4 found") + + set(ICE_LIBRARIES ${ICE_LIBRARY}) + set(ICE_INCLUDE_DIRS ${ICE_INCLUDE_DIR}) + + include(FindPackageHandleStandardArgs) + find_package_handle_standard_args(ICE DEFAULT_MSG ICE_LIBRARY ICE_INCLUDE_DIR) + mark_as_advanced(ICE_INCLUDE_DIR ICE_LIBRARY) + endif(ICE_FOUND) + endif(ICE_ICEUTIL) +endif(ICE_ICE OR ICE_ZEROCICE) + +endif(ICE_FOUND) diff -Nru gnuradio-3.6.1/cmake/Modules/FindLog4cpp.cmake gnuradio-3.7.1/cmake/Modules/FindLog4cpp.cmake --- gnuradio-3.6.1/cmake/Modules/FindLog4cpp.cmake 1970-01-01 00:00:00.000000000 +0000 +++ gnuradio-3.7.1/cmake/Modules/FindLog4cpp.cmake 2013-06-30 00:05:51.000000000 +0000 @@ -0,0 +1,53 @@ +# - Find Log4cpp +# Find the native LOG4CPP includes and library +# +# LOG4CPP_INCLUDE_DIR - where to find LOG4CPP.h, etc. +# LOG4CPP_LIBRARIES - List of libraries when using LOG4CPP. +# LOG4CPP_FOUND - True if LOG4CPP found. + + +if (LOG4CPP_INCLUDE_DIR) + # Already in cache, be silent + set(LOG4CPP_FIND_QUIETLY TRUE) +endif () + +find_path(LOG4CPP_INCLUDE_DIR log4cpp/Category.hh + /opt/local/include + /usr/local/include + /usr/include +) + +set(LOG4CPP_NAMES log4cpp) +find_library(LOG4CPP_LIBRARY + NAMES ${LOG4CPP_NAMES} + PATHS /usr/lib /usr/local/lib /opt/local/lib +) + + +if (LOG4CPP_INCLUDE_DIR AND LOG4CPP_LIBRARY) + set(LOG4CPP_FOUND TRUE) + set(LOG4CPP_LIBRARIES ${LOG4CPP_LIBRARY} CACHE INTERNAL "" FORCE) + set(LOG4CPP_INCLUDE_DIRS ${LOG4CPP_INCLUDE_DIR} CACHE INTERNAL "" FORCE) +else () + set(LOG4CPP_FOUND FALSE CACHE INTERNAL "" FORCE) + set(LOG4CPP_LIBRARY "" CACHE INTERNAL "" FORCE) + set(LOG4CPP_LIBRARIES "" CACHE INTERNAL "" FORCE) + set(LOG4CPP_INCLUDE_DIR "" CACHE INTERNAL "" FORCE) + set(LOG4CPP_INCLUDE_DIRS "" CACHE INTERNAL "" FORCE) +endif () + +if (LOG4CPP_FOUND) + if (NOT LOG4CPP_FIND_QUIETLY) + message(STATUS "Found LOG4CPP: ${LOG4CPP_LIBRARIES}") + endif () +else () + if (LOG4CPP_FIND_REQUIRED) + message(STATUS "Looked for LOG4CPP libraries named ${LOG4CPPS_NAMES}.") + message(FATAL_ERROR "Could NOT find LOG4CPP library") + endif () +endif () + +mark_as_advanced( + LOG4CPP_LIBRARIES + LOG4CPP_INCLUDE_DIRS +) diff -Nru gnuradio-3.6.1/cmake/Modules/FindQwt.cmake gnuradio-3.7.1/cmake/Modules/FindQwt.cmake --- gnuradio-3.6.1/cmake/Modules/FindQwt.cmake 2012-06-11 15:36:37.000000000 +0000 +++ gnuradio-3.7.1/cmake/Modules/FindQwt.cmake 2013-08-16 22:01:25.000000000 +0000 @@ -1,30 +1,57 @@ # - try to find Qwt libraries and include files -# QWT_INCLUDE_DIR where to find qwt_plot.h, etc. +# QWT_INCLUDE_DIR where to find qwt_global.h, etc. # QWT_LIBRARIES libraries to link against # QWT_FOUND If false, do not try to use Qwt +# qwt_global.h holds a string with the QWT version; +# test to make sure it's at least 5.2 -find_path (QWT_INCLUDE_DIRS - NAMES qwt_plot.h - PATHS - /usr/local/include/qwt-qt4 - /usr/local/include/qwt - /usr/include/qwt-qt4 - /usr/include/qwt - /opt/local/include/qwt - /sw/include/qwt +find_path(QWT_INCLUDE_DIRS + NAMES qwt_global.h + HINTS + ${CMAKE_INSTALL_PREFIX}/include/qwt + PATHS + /usr/local/include/qwt-qt4 + /usr/local/include/qwt + /usr/include/qwt-qt4 + /usr/include/qwt + /opt/local/include/qwt + /opt/local/lib/qwt.framework/Headers + /sw/include/qwt ) find_library (QWT_LIBRARIES - NAMES qwt-qt4 qwt - PATHS - /usr/local/lib - /usr/lib - /opt/local/lib - /sw/lib + NAMES qwt qwt-qt4 + HINTS + ${CMAKE_INSTALL_PREFIX}/lib + ${CMAKE_INSTALL_PREFIX}/lib64 + PATHS + /usr/local/lib + /usr/lib + /opt/local/lib + /opt/local/lib/qwt.framework + /sw/lib ) -# handle the QUIETLY and REQUIRED arguments and set QWT_FOUND to TRUE if -# all listed variables are TRUE -include ( FindPackageHandleStandardArgs ) -find_package_handle_standard_args( Qwt DEFAULT_MSG QWT_LIBRARIES QWT_INCLUDE_DIRS ) -MARK_AS_ADVANCED(QWT_LIBRARIES QWT_INCLUDE_DIRS) +set(QWT_FOUND FALSE) +if(QWT_INCLUDE_DIRS) + file(STRINGS "${QWT_INCLUDE_DIRS}/qwt_global.h" + QWT_STRING_VERSION REGEX "QWT_VERSION_STR") + string(REGEX MATCH "[0-9]+.[0-9]+.[0-9]+" QWT_VERSION ${QWT_STRING_VERSION}) + string(COMPARE LESS ${QWT_VERSION} "5.2.0" QWT_WRONG_VERSION) + + message(STATUS "QWT Version: ${QWT_VERSION}") + if(NOT QWT_WRONG_VERSION) + set(QWT_FOUND TRUE) + else(NOT QWT_WRONG_VERSION) + message(STATUS "QWT Version must be >= 5.2, Found ${QWT_VERSION}") + endif(NOT QWT_WRONG_VERSION) + +endif(QWT_INCLUDE_DIRS) + +if(QWT_FOUND) + # handle the QUIETLY and REQUIRED arguments and set QWT_FOUND to TRUE if + # all listed variables are TRUE + include ( FindPackageHandleStandardArgs ) + find_package_handle_standard_args( Qwt DEFAULT_MSG QWT_LIBRARIES QWT_INCLUDE_DIRS ) + MARK_AS_ADVANCED(QWT_LIBRARIES QWT_INCLUDE_DIRS) +endif(QWT_FOUND) \ No newline at end of file diff -Nru gnuradio-3.6.1/cmake/Modules/GnuradioConfig.cmake gnuradio-3.7.1/cmake/Modules/GnuradioConfig.cmake --- gnuradio-3.6.1/cmake/Modules/GnuradioConfig.cmake 1970-01-01 00:00:00.000000000 +0000 +++ gnuradio-3.7.1/cmake/Modules/GnuradioConfig.cmake 2013-06-30 00:12:58.000000000 +0000 @@ -0,0 +1,123 @@ +# Copyright 2013 Free Software Foundation, Inc. +# +# This file is part of GNU Radio +# +# GNU Radio is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3, or (at your option) +# any later version. +# +# GNU Radio is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GNU Radio; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, +# Boston, MA 02110-1301, USA. + +INCLUDE(FindPkgConfig) +INCLUDE(FindPackageHandleStandardArgs) + +# if GR_REQUIRED_COMPONENTS is not defined, it will be set to the following list (all of them) +if(NOT GR_REQUIRED_COMPONENTS) + set(GR_REQUIRED_COMPONENTS RUNTIME ANALOG BLOCKS DIGITAL FFT FILTER PMT) +endif() + +set(GNURADIO_ALL_LIBRARIES "") +set(GNURADIO_ALL_INCLUDE_DIRS "") + +MACRO(LIST_CONTAINS var value) + SET(${var}) + FOREACH(value2 ${ARGN}) + IF (${value} STREQUAL ${value2}) + SET(${var} TRUE) + ENDIF(${value} STREQUAL ${value2}) + ENDFOREACH(value2) +ENDMACRO(LIST_CONTAINS) + +function(GR_MODULE EXTVAR PCNAME INCFILE LIBFILE) + + LIST_CONTAINS(REQUIRED_MODULE ${EXTVAR} ${GR_REQUIRED_COMPONENTS}) + if(NOT REQUIRED_MODULE) + #message("Ignoring GNU Radio Module ${EXTVAR}") + return() + endif() + + message("Checking for GNU Radio Module: ${EXTVAR}") + + # check for .pc hints + PKG_CHECK_MODULES(PC_GNURADIO_${EXTVAR} ${PCNAME}) + + set(INCVAR_NAME "GNURADIO_${EXTVAR}_INCLUDE_DIRS") + set(LIBVAR_NAME "GNURADIO_${EXTVAR}_LIBRARIES") + set(PC_INCDIR ${PC_GNURADIO_${EXTVAR}_INCLUDEDIR}) + set(PC_LIBDIR ${PC_GNURADIO_${EXTVAR}_LIBDIR}) + + # look for include files + FIND_PATH( + ${INCVAR_NAME} + NAMES ${INCFILE} + HINTS $ENV{GNURADIO_RUNTIME_DIR}/include + ${PC_INCDIR} + ${CMAKE_INSTALL_PREFIX}/include + PATHS /usr/local/include + /usr/include + ) + + # look for libs + FIND_LIBRARY( + ${LIBVAR_NAME} + NAMES ${LIBFILE} + HINTS $ENV{GNURADIO_RUNTIME_DIR}/lib + ${PC_LIBDIR} + ${CMAKE_INSTALL_PREFIX}/lib/ + ${CMAKE_INSTALL_PREFIX}/lib64/ + PATHS /usr/local/lib + /usr/local/lib64 + /usr/lib + /usr/lib64 + ) + + # show results + message(" * INCLUDES=${GNURADIO_${EXTVAR}_INCLUDE_DIRS}") + message(" * LIBS=${GNURADIO_${EXTVAR}_LIBRARIES}") + + # append to all includes and libs list + LIST(APPEND GNURADIO_ALL_INCLUDE_DIRS ${GNURADIO_${EXTVAR}_INCLUDE_DIRS}) + LIST(APPEND GNURADIO_ALL_LIBRARIES ${GNURADIO_${EXTVAR}_LIBRARIES}) + + FIND_PACKAGE_HANDLE_STANDARD_ARGS(GNURADIO_${EXTVAR} DEFAULT_MSG GNURADIO_${EXTVAR}_LIBRARIES GNURADIO_${EXTVAR}_INCLUDE_DIRS) + message("GNURADIO_${EXTVAR}_FOUND = ${GNURADIO_${EXTVAR}_FOUND}") + set(GNURADIO_${EXTVAR}_FOUND ${GNURADIO_${EXTVAR}_FOUND} PARENT_SCOPE) + + # generate an error if the module is missing + if(NOT GNURADIO_${EXTVAR}_FOUND) + message(FATAL_ERROR "Required GNU Radio Component: ${EXTVAR} missing!") + endif() + + MARK_AS_ADVANCED(GNURADIO_${EXTVAR}_LIBRARIES GNURADIO_${EXTVAR}_INCLUDE_DIRS) + +endfunction() + +GR_MODULE(RUNTIME gnuradio-runtime gnuradio/top_block.h gnuradio-runtime) +GR_MODULE(ANALOG gnuradio-analog gnuradio/analog/api.h gnuradio-analog) +GR_MODULE(ATSC gnuradio-atsc gnuradio/atsc/api.h gnuradio-atsc) +GR_MODULE(AUDIO gnuradio-audio gnuradio/audio/api.h gnuradio-audio) +GR_MODULE(BLOCKS gnuradio-blocks gnuradio/blocks/api.h gnuradio-blocks) +GR_MODULE(CHANNELS gnuradio-channels gnuradio/channels/api.h gnuradio-channels) +GR_MODULE(DIGITAL gnuradio-digital gnuradio/digital/api.h gnuradio-digital) +GR_MODULE(FCD gnuradio-fcd gnuradio/fcd_api.h gnuradio-fcd) +GR_MODULE(FEC gnuradio-fec gnuradio/fec/api.h gnuradio-fec) +GR_MODULE(FFT gnuradio-fft gnuradio/fft/api.h gnuradio-fft) +GR_MODULE(FILTER gnuradio-filter gnuradio/filter/api.h gnuradio-filter) +GR_MODULE(NOAA gnuradio-noaa gnuradio/noaa/api.h gnuradio-noaa) +GR_MODULE(PAGER gnuradio-pager gnuradio/pager/api.h gnuradio-pager) +GR_MODULE(QTGUI gnuradio-qtgui gnuradio/qtgui/api.h gnuradio-qtgui) +GR_MODULE(TRELLIS gnuradio-trellis gnuradio/trellis/api.h gnuradio-trellis) +GR_MODULE(UHD gnuradio-uhd gnuradio/uhd/api.h gnuradio-uhd) +GR_MODULE(VOCODER gnuradio-vocoder gnuradio/vocoder/api.h gnuradio-vocoder) +GR_MODULE(WAVELET gnuradio-wavelet gnuradio/wavelet/api.h gnuradio-wavelet) +GR_MODULE(WXGUI gnuradio-wxgui gnuradio/wxgui/api.h gnuradio-wxgui) +GR_MODULE(PMT gnuradio-pmt pmt/pmt.h gnuradio-pmt) diff -Nru gnuradio-3.6.1/cmake/Modules/GnuradioConfigVersion.cmake.in gnuradio-3.7.1/cmake/Modules/GnuradioConfigVersion.cmake.in --- gnuradio-3.6.1/cmake/Modules/GnuradioConfigVersion.cmake.in 1970-01-01 00:00:00.000000000 +0000 +++ gnuradio-3.7.1/cmake/Modules/GnuradioConfigVersion.cmake.in 2013-06-30 00:05:51.000000000 +0000 @@ -0,0 +1,35 @@ +# Copyright 2013 Free Software Foundation, Inc. +# +# This file is part of GNU Radio +# +# GNU Radio is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3, or (at your option) +# any later version. +# +# GNU Radio is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GNU Radio; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, +# Boston, MA 02110-1301, USA. + +set(MAJOR_VERSION @VERSION_INFO_MAJOR_VERSION@) +set(API_COMPAT @VERSION_INFO_API_COMPAT@) +set(MINOR_VERSION @VERSION_INFO_MINOR_VERSION@) +set(MAINT_VERSION @VERSION_INFO_MAINT_VERSION@) + +set(PACKAGE_VERSION + ${MAJOR_VERSION}.${API_COMPAT}.${MINOR_VERSION}.${MAINT_VERSION}) + +if(${PACKAGE_FIND_VERSION_MAJOR} EQUAL ${MAJOR_VERSION}) + if(${PACKAGE_FIND_VERSION_MINOR} EQUAL ${API_COMPAT}) + if(NOT ${PACKAGE_FIND_VERSION_PATCH} GREATER ${MINOR_VERSION}) + set(PACKAGE_VERSION_EXACT 1) # exact match for API version + set(PACKAGE_VERSION_COMPATIBLE 1) # compat for minor/patch version + endif(NOT ${PACKAGE_FIND_VERSION_PATCH} GREATER ${MINOR_VERSION}) + endif(${PACKAGE_FIND_VERSION_MINOR} EQUAL ${API_COMPAT}) +endif(${PACKAGE_FIND_VERSION_MAJOR} EQUAL ${MAJOR_VERSION}) \ No newline at end of file diff -Nru gnuradio-3.6.1/cmake/Modules/GrBoost.cmake gnuradio-3.7.1/cmake/Modules/GrBoost.cmake --- gnuradio-3.6.1/cmake/Modules/GrBoost.cmake 2012-06-11 15:36:37.000000000 +0000 +++ gnuradio-3.7.1/cmake/Modules/GrBoost.cmake 2013-05-01 23:57:50.000000000 +0000 @@ -34,11 +34,13 @@ thread ) -if(UNIX AND EXISTS "/usr/lib64") +if(UNIX AND NOT BOOST_ROOT AND EXISTS "/usr/lib64") list(APPEND BOOST_LIBRARYDIR "/usr/lib64") #fedora 64-bit fix -endif(UNIX AND EXISTS "/usr/lib64") +endif(UNIX AND NOT BOOST_ROOT AND EXISTS "/usr/lib64") if(MSVC) + set(BOOST_REQUIRED_COMPONENTS ${BOOST_REQUIRED_COMPONENTS} chrono) + if (NOT DEFINED BOOST_ALL_DYN_LINK) set(BOOST_ALL_DYN_LINK TRUE) endif() @@ -50,6 +52,12 @@ endif(BOOST_ALL_DYN_LINK) endif(MSVC) +find_package(Boost "1.35" COMPONENTS ${BOOST_REQUIRED_COMPONENTS}) + +# This does not allow us to disable specific versions. It is used +# internally by cmake to know the formation newer versions. As newer +# Boost version beyond what is shown here are produced, we must extend +# this list. To disable Boost versions, see below. set(Boost_ADDITIONAL_VERSIONS "1.35.0" "1.35" "1.36.0" "1.36" "1.37.0" "1.37" "1.38.0" "1.38" "1.39.0" "1.39" "1.40.0" "1.40" "1.41.0" "1.41" "1.42.0" "1.42" "1.43.0" "1.43" "1.44.0" "1.44" @@ -59,4 +67,33 @@ "1.60.0" "1.60" "1.61.0" "1.61" "1.62.0" "1.62" "1.63.0" "1.63" "1.64.0" "1.64" "1.65.0" "1.65" "1.66.0" "1.66" "1.67.0" "1.67" "1.68.0" "1.68" "1.69.0" "1.69" ) -find_package(Boost "1.35" COMPONENTS ${BOOST_REQUIRED_COMPONENTS}) + +# Boost 1.52 disabled, see https://svn.boost.org/trac/boost/ticket/7669 +# Similar problems with Boost 1.46 and 1.47. + +OPTION(ENABLE_BAD_BOOST "Enable known bad versions of Boost" OFF) +if(ENABLE_BAD_BOOST) + MESSAGE(STATUS "Enabling use of known bad versions of Boost.") +endif(ENABLE_BAD_BOOST) + +# For any unsuitable Boost version, add the version number below in +# the following format: XXYYZZ +# Where: +# XX is the major version ('10' for version 1) +# YY is the minor version number ('46' for 1.46) +# ZZ is the patcher version number (typically just '00') +set(Boost_NOGO_VERSIONS + 104600 104601 104700 105200 + ) + +foreach(ver ${Boost_NOGO_VERSIONS}) + if(${Boost_VERSION} EQUAL ${ver}) + if(NOT ENABLE_BAD_BOOST) + MESSAGE(STATUS "WARNING: Found a known bad version of Boost (v${Boost_VERSION}). Disabling.") + set(Boost_FOUND FALSE) + else(NOT ENABLE_BAD_BOOST) + MESSAGE(STATUS "WARNING: Found a known bad version of Boost (v${Boost_VERSION}). Continuing anyway.") + set(Boost_FOUND TRUE) + endif(NOT ENABLE_BAD_BOOST) + endif(${Boost_VERSION} EQUAL ${ver}) +endforeach(ver) diff -Nru gnuradio-3.6.1/cmake/Modules/GrMiscUtils.cmake gnuradio-3.7.1/cmake/Modules/GrMiscUtils.cmake --- gnuradio-3.6.1/cmake/Modules/GrMiscUtils.cmake 2012-06-11 15:36:37.000000000 +0000 +++ gnuradio-3.7.1/cmake/Modules/GrMiscUtils.cmake 2013-07-23 21:15:04.000000000 +0000 @@ -209,27 +209,139 @@ endif() endfunction(GR_GEN_TARGET_DEPS) - ######################################################################## -# Control availability of vmcircbuf methods. -# For now, only allows disabling of shm methods, which cause uncatchable -# segmentation faults on Cygwin with gcc 4.x (x <= 5) +# Control use of gr_logger # Usage: -# GR_VMCIRCBUF() +# GR_LOGGING() +# +# Will set ENABLE_GR_LOG to 1 by default. +# Can manually set with -DENABLE_GR_LOG=0|1 +######################################################################## +function(GR_LOGGING) + find_package(Log4cpp) + + OPTION(ENABLE_GR_LOG "Use gr_logger" ON) + if(ENABLE_GR_LOG) + # If gr_logger is enabled, make it usable + add_definitions( -DENABLE_GR_LOG ) + + # also test LOG4CPP; if we have it, use this version of the logger + # otherwise, default to the stdout/stderr model. + if(LOG4CPP_FOUND) + SET(HAVE_LOG4CPP True CACHE INTERNAL "" FORCE) + add_definitions( -DHAVE_LOG4CPP ) + else(not LOG4CPP_FOUND) + SET(HAVE_LOG4CPP False CACHE INTERNAL "" FORCE) + SET(LOG4CPP_INCLUDE_DIRS "" CACHE INTERNAL "" FORCE) + SET(LOG4CPP_LIBRARY_DIRS "" CACHE INTERNAL "" FORCE) + SET(LOG4CPP_LIBRARIES "" CACHE INTERNAL "" FORCE) + endif(LOG4CPP_FOUND) + + SET(ENABLE_GR_LOG ${ENABLE_GR_LOG} CACHE INTERNAL "" FORCE) + + else(ENABLE_GR_LOG) + SET(HAVE_LOG4CPP False CACHE INTERNAL "" FORCE) + SET(LOG4CPP_INCLUDE_DIRS "" CACHE INTERNAL "" FORCE) + SET(LOG4CPP_LIBRARY_DIRS "" CACHE INTERNAL "" FORCE) + SET(LOG4CPP_LIBRARIES "" CACHE INTERNAL "" FORCE) + endif(ENABLE_GR_LOG) + + message(STATUS "ENABLE_GR_LOG set to ${ENABLE_GR_LOG}.") + message(STATUS "HAVE_LOG4CPP set to ${HAVE_LOG4CPP}.") + message(STATUS "LOG4CPP_LIBRARIES set to ${LOG4CPP_LIBRARIES}.") + +endfunction(GR_LOGGING) + +######################################################################## +# Run GRCC to compile .grc files into .py files. # -# Will set TRY_SHM_VMCIRCBUF to 1 by default except on Windows machines. -# Can manually set with -DTRY_SHM_VMCIRCBUF=0|1 +# Usage: GRCC(filename, directory) +# - filenames: List of file name of .grc file +# - directory: directory of built .py file - usually in +# ${CMAKE_CURRENT_BINARY_DIR} +# - Sets PYFILES: output converted GRC file names to Python files. ######################################################################## -function(GR_VMCIRCBUF) +function(GRCC) + # Extract directory from list of args, remove it for the list of filenames. + list(GET ARGV -1 directory) + list(REMOVE_AT ARGV -1) + set(filenames ${ARGV}) + file(MAKE_DIRECTORY ${directory}) + + SET(GRCC_COMMAND ${CMAKE_SOURCE_DIR}/gr-utils/python/grcc) + + # GRCC uses some stuff in grc and gnuradio-runtime, so we force + # the known paths here + list(APPEND PYTHONPATHS + ${CMAKE_SOURCE_DIR} + ${CMAKE_SOURCE_DIR}/gnuradio-runtime/python + ${CMAKE_SOURCE_DIR}/gnuradio-runtime/lib/swig + ${CMAKE_BINARY_DIR}/gnuradio-runtime/lib/swig + ) + if(WIN32) - OPTION(TRY_SHM_VMCIRCBUF "Try SHM VMCIRCBUF" OFF) - else(WIN32) - OPTION(TRY_SHM_VMCIRCBUF "Try SHM VMCIRCBUF" ON) + #SWIG generates the python library files into a subdirectory. + #Therefore, we must append this subdirectory into PYTHONPATH. + #Only do this for the python directories matching the following: + foreach(pydir ${PYTHONPATHS}) + get_filename_component(name ${pydir} NAME) + if(name MATCHES "^(swig|lib|src)$") + list(APPEND PYTHONPATHS ${pydir}/${CMAKE_BUILD_TYPE}) + endif() + endforeach(pydir) endif(WIN32) - message(STATUS "TRY_SHM_VMCIRCBUF set to ${TRY_SHM_VMCIRCBUF}.") + file(TO_NATIVE_PATH "${PYTHONPATHS}" pypath) + + if(UNIX) + list(APPEND pypath "$PYTHONPATH") + string(REPLACE ";" ":" pypath "${pypath}") + set(ENV{PYTHONPATH} ${pypath}) + endif(UNIX) + + if(WIN32) + list(APPEND pypath "%PYTHONPATH%") + string(REPLACE ";" "\\;" pypath "${pypath}") + #list(APPEND environs "PYTHONPATH=${pypath}") + set(ENV{PYTHONPATH} ${pypath}) + endif(WIN32) + + foreach(f ${filenames}) + execute_process( + COMMAND ${GRCC_COMMAND} -d ${directory} ${f} + ) + string(REPLACE ".grc" ".py" pyfile "${f}") + string(REPLACE "${CMAKE_CURRENT_SOURCE_DIR}" "${CMAKE_CURRENT_BINARY_DIR}" pyfile "${pyfile}") + list(APPEND pyfiles ${pyfile}) + endforeach(f) + + set(PYFILES ${pyfiles} PARENT_SCOPE) +endfunction(GRCC) + +######################################################################## +# Check if HAVE_PTHREAD_SETSCHEDPARAM and HAVE_SCHED_SETSCHEDULER +# should be defined +######################################################################## +macro(GR_CHECK_LINUX_SCHED_AVAIL) +set(CMAKE_REQUIRED_LIBRARIES -lpthread) + CHECK_CXX_SOURCE_COMPILES(" + #include + int main(){ + pthread_t pthread; + pthread_setschedparam(pthread, 0, 0); + return 0; + } " HAVE_PTHREAD_SETSCHEDPARAM + ) + GR_ADD_COND_DEF(HAVE_PTHREAD_SETSCHEDPARAM) + + CHECK_CXX_SOURCE_COMPILES(" + #include + int main(){ + pid_t pid; + sched_setscheduler(pid, 0, 0); + return 0; + } " HAVE_SCHED_SETSCHEDULER + ) + GR_ADD_COND_DEF(HAVE_SCHED_SETSCHEDULER) +endmacro(GR_CHECK_LINUX_SCHED_AVAIL) - if(TRY_SHM_VMCIRCBUF) - add_definitions( -DTRY_SHM_VMCIRCBUF ) - endif(TRY_SHM_VMCIRCBUF) -endfunction(GR_VMCIRCBUF) diff -Nru gnuradio-3.6.1/cmake/Modules/GrPackage.cmake gnuradio-3.7.1/cmake/Modules/GrPackage.cmake --- gnuradio-3.6.1/cmake/Modules/GrPackage.cmake 2012-06-11 15:36:37.000000000 +0000 +++ gnuradio-3.7.1/cmake/Modules/GrPackage.cmake 2013-08-17 21:57:21.000000000 +0000 @@ -175,3 +175,8 @@ set(CPACK_NSIS_MODIFY_PATH ON) set(HLKM_ENV "\\\"SYSTEM\\\\CurrentControlSet\\\\Control\\\\Session Manager\\\\Environment\\\"") + +IF(WIN32) + #Install necessary runtime DLL's + INCLUDE(InstallRequiredSystemLibraries) +ENDIF(WIN32) diff -Nru gnuradio-3.6.1/cmake/Modules/GrPython.cmake gnuradio-3.7.1/cmake/Modules/GrPython.cmake --- gnuradio-3.6.1/cmake/Modules/GrPython.cmake 2012-06-11 15:36:37.000000000 +0000 +++ gnuradio-3.7.1/cmake/Modules/GrPython.cmake 2013-08-16 22:01:25.000000000 +0000 @@ -36,11 +36,11 @@ else(PYTHON_EXECUTABLE) #use the built-in find script - find_package(PythonInterp) + find_package(PythonInterp 2) #and if that fails use the find program routine if(NOT PYTHONINTERP_FOUND) - find_program(PYTHON_EXECUTABLE NAMES python python2.7 python2.6 python2.5) + find_program(PYTHON_EXECUTABLE NAMES python python2 python2.7 python2.6 python2.5) if(PYTHON_EXECUTABLE) set(PYTHONINTERP_FOUND TRUE) endif(PYTHON_EXECUTABLE) @@ -96,11 +96,13 @@ ######################################################################## # Sets the python installation directory GR_PYTHON_DIR ######################################################################## +if(NOT DEFINED GR_PYTHON_DIR) execute_process(COMMAND ${PYTHON_EXECUTABLE} -c " from distutils import sysconfig print sysconfig.get_python_lib(plat_specific=True, prefix='') " OUTPUT_VARIABLE GR_PYTHON_DIR OUTPUT_STRIP_TRAILING_WHITESPACE ) +endif() file(TO_CMAKE_PATH ${GR_PYTHON_DIR} GR_PYTHON_DIR) ######################################################################## diff -Nru gnuradio-3.6.1/cmake/Modules/GrSetupQt4.cmake gnuradio-3.7.1/cmake/Modules/GrSetupQt4.cmake --- gnuradio-3.6.1/cmake/Modules/GrSetupQt4.cmake 1970-01-01 00:00:00.000000000 +0000 +++ gnuradio-3.7.1/cmake/Modules/GrSetupQt4.cmake 2013-05-01 23:57:50.000000000 +0000 @@ -0,0 +1,156 @@ +# Copyright 2013 Free Software Foundation, Inc. +# +# This file is part of GNU Radio +# +# GNU Radio is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3, or (at your option) +# any later version. +# +# GNU Radio is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GNU Radio; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, +# Boston, MA 02110-1301, USA. + +if(DEFINED __INCLUDED_GR_USEQT4_CMAKE) + return() +endif() +set(__INCLUDED_GR_USEQT4_CMAKE TRUE) + +# This file is derived from the default "UseQt4" file provided by +# CMake. This version sets the variables "QT_INCLUDE_DIRS", +# "QT_LIBRARIES", and "QT_LIBRARIES_PLUGINS" depending on those +# requested during the "find_package(Qt4 ...)" function call, but +# without actually adding them to the include or library search +# directories ("include_directories" or "link_directories"). The +# adding in is done by the CMakeLists.txt build scripts in the using +# project. + +# Copyright from the original file, as required by the license. +################################################################ +# CMake - Cross Platform Makefile Generator +# Copyright 2000-2011 Kitware, Inc., Insight Software Consortium +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# * Neither the names of Kitware, Inc., the Insight Software Consortium, +# nor the names of their contributors may be used to endorse or promote +# products derived from this software without specific prior written +# permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +################################################################ + +ADD_DEFINITIONS(${QT_DEFINITIONS}) +SET_PROPERTY(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS_DEBUG QT_DEBUG) +SET_PROPERTY(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS_RELEASE QT_NO_DEBUG) +SET_PROPERTY(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS_RELWITHDEBINFO QT_NO_DEBUG) +SET_PROPERTY(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS_MINSIZEREL QT_NO_DEBUG) +IF(NOT CMAKE_CONFIGURATION_TYPES AND NOT CMAKE_BUILD_TYPE) + SET_PROPERTY(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS QT_NO_DEBUG) +ENDIF() + +SET(QT_INCLUDE_DIRS ${QT_INCLUDE_DIR}) +SET(QT_LIBRARIES "") +SET(QT_LIBRARIES_PLUGINS "") + +IF (QT_USE_QTMAIN) + IF (Q_WS_WIN) + SET(QT_LIBRARIES ${QT_LIBRARIES} ${QT_QTMAIN_LIBRARY}) + ENDIF (Q_WS_WIN) +ENDIF (QT_USE_QTMAIN) + +IF(QT_DONT_USE_QTGUI) + SET(QT_USE_QTGUI 0) +ELSE(QT_DONT_USE_QTGUI) + SET(QT_USE_QTGUI 1) +ENDIF(QT_DONT_USE_QTGUI) + +IF(QT_DONT_USE_QTCORE) + SET(QT_USE_QTCORE 0) +ELSE(QT_DONT_USE_QTCORE) + SET(QT_USE_QTCORE 1) +ENDIF(QT_DONT_USE_QTCORE) + +IF (QT_USE_QT3SUPPORT) + ADD_DEFINITIONS(-DQT3_SUPPORT) +ENDIF (QT_USE_QT3SUPPORT) + +# list dependent modules, so dependent libraries are added +SET(QT_QT3SUPPORT_MODULE_DEPENDS QTGUI QTSQL QTXML QTNETWORK QTCORE) +SET(QT_QTSVG_MODULE_DEPENDS QTGUI QTXML QTCORE) +SET(QT_QTUITOOLS_MODULE_DEPENDS QTGUI QTXML QTCORE) +SET(QT_QTHELP_MODULE_DEPENDS QTGUI QTSQL QTXML QTNETWORK QTCORE) +IF(QT_QTDBUS_FOUND) + SET(QT_PHONON_MODULE_DEPENDS QTGUI QTDBUS QTCORE) +ELSE(QT_QTDBUS_FOUND) + SET(QT_PHONON_MODULE_DEPENDS QTGUI QTCORE) +ENDIF(QT_QTDBUS_FOUND) +SET(QT_QTDBUS_MODULE_DEPENDS QTXML QTCORE) +SET(QT_QTXMLPATTERNS_MODULE_DEPENDS QTNETWORK QTCORE) +SET(QT_QAXCONTAINER_MODULE_DEPENDS QTGUI QTCORE) +SET(QT_QAXSERVER_MODULE_DEPENDS QTGUI QTCORE) +SET(QT_QTSCRIPTTOOLS_MODULE_DEPENDS QTGUI QTCORE) +SET(QT_QTWEBKIT_MODULE_DEPENDS QTXMLPATTERNS QTGUI QTCORE) +SET(QT_QTDECLARATIVE_MODULE_DEPENDS QTSCRIPT QTSVG QTSQL QTXMLPATTERNS QTGUI QTCORE) +SET(QT_QTMULTIMEDIA_MODULE_DEPENDS QTGUI QTCORE) +SET(QT_QTOPENGL_MODULE_DEPENDS QTGUI QTCORE) +SET(QT_QTSCRIPT_MODULE_DEPENDS QTCORE) +SET(QT_QTGUI_MODULE_DEPENDS QTCORE) +SET(QT_QTTEST_MODULE_DEPENDS QTCORE) +SET(QT_QTXML_MODULE_DEPENDS QTCORE) +SET(QT_QTSQL_MODULE_DEPENDS QTCORE) +SET(QT_QTNETWORK_MODULE_DEPENDS QTCORE) + +# Qt modules (in order of dependence) +FOREACH(module QT3SUPPORT QTOPENGL QTASSISTANT QTDESIGNER QTMOTIF QTNSPLUGIN + QAXSERVER QAXCONTAINER QTDECLARATIVE QTSCRIPT QTSVG QTUITOOLS QTHELP + QTWEBKIT PHONON QTSCRIPTTOOLS QTMULTIMEDIA QTXMLPATTERNS QTGUI QTTEST + QTDBUS QTXML QTSQL QTNETWORK QTCORE) + + IF (QT_USE_${module} OR QT_USE_${module}_DEPENDS) + IF (QT_${module}_FOUND) + IF(QT_USE_${module}) + STRING(REPLACE "QT" "" qt_module_def "${module}") + ADD_DEFINITIONS(-DQT_${qt_module_def}_LIB) + SET(QT_INCLUDE_DIRS ${QT_INCLUDE_DIRS} ${QT_${module}_INCLUDE_DIR}) + ENDIF(QT_USE_${module}) + SET(QT_LIBRARIES ${QT_LIBRARIES} ${QT_${module}_LIBRARY}) + SET(QT_LIBRARIES_PLUGINS ${QT_LIBRARIES_PLUGINS} ${QT_${module}_PLUGINS}) + IF(QT_IS_STATIC) + SET(QT_LIBRARIES ${QT_LIBRARIES} ${QT_${module}_LIB_DEPENDENCIES}) + ENDIF(QT_IS_STATIC) + FOREACH(depend_module ${QT_${module}_MODULE_DEPENDS}) + SET(QT_USE_${depend_module}_DEPENDS 1) + ENDFOREACH(depend_module ${QT_${module}_MODULE_DEPENDS}) + ELSE (QT_${module}_FOUND) + MESSAGE("Qt ${module} library not found.") + ENDIF (QT_${module}_FOUND) + ENDIF (QT_USE_${module} OR QT_USE_${module}_DEPENDS) + +ENDFOREACH(module) diff -Nru gnuradio-3.6.1/cmake/Modules/GrSwig.cmake gnuradio-3.7.1/cmake/Modules/GrSwig.cmake --- gnuradio-3.6.1/cmake/Modules/GrSwig.cmake 2012-06-11 15:36:37.000000000 +0000 +++ gnuradio-3.7.1/cmake/Modules/GrSwig.cmake 2013-08-27 13:51:30.000000000 +0000 @@ -67,7 +67,6 @@ #call doxygen on the Doxyfile + input headers add_custom_command( OUTPUT ${OUTPUT_DIRECTORY}/xml/index.xml - ${OUTPUT_DIRECTORY}/xml/combine.xslt DEPENDS ${input_files} ${GR_SWIG_DOCS_SOURCE_DEPS} ${tag_deps} COMMAND ${DOXYGEN_EXECUTABLE} ${OUTPUT_DIRECTORY}/Doxyfile COMMENT "Generating doxygen xml for ${name} docs" @@ -81,6 +80,7 @@ ${CMAKE_SOURCE_DIR}/docs/doxygen/swig_doc.py ${OUTPUT_DIRECTORY}/xml ${output_file} + COMMENT "Generating python docstrings for ${name}" WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/docs/doxygen ) @@ -105,20 +105,35 @@ macro(GR_SWIG_MAKE name) set(ifiles ${ARGN}) + # Shimming this in here to take care of a SWIG bug with handling + # vector and vector (on 32-bit machines) and + # vector (on 64-bit machines). Use this to test + # the size of size_t, then set SIZE_T_32 if it's a 32-bit machine + # or not if it's 64-bit. The logic in gr_type.i handles the rest. + INCLUDE (CheckTypeSize) + CHECK_TYPE_SIZE("size_t" SIZEOF_SIZE_T) + CHECK_TYPE_SIZE("unsigned int" SIZEOF_UINT) + if(${SIZEOF_SIZE_T} EQUAL ${SIZEOF_UINT}) + list(APPEND GR_SWIG_FLAGS -DSIZE_T_32) + endif(${SIZEOF_SIZE_T} EQUAL ${SIZEOF_UINT}) + #do swig doc generation if specified if (GR_SWIG_DOC_FILE) set(GR_SWIG_DOCS_SOURCE_DEPS ${GR_SWIG_SOURCE_DEPS}) - set(GR_SWIG_DOCS_TAREGT_DEPS ${GR_SWIG_TARGET_DEPS}) + list(APPEND GR_SWIG_DOCS_TARGET_DEPS ${GR_SWIG_TARGET_DEPS}) GR_SWIG_MAKE_DOCS(${GR_SWIG_DOC_FILE} ${GR_SWIG_DOC_DIRS}) - list(APPEND GR_SWIG_SOURCE_DEPS ${GR_SWIG_DOC_FILE}) + add_custom_target(${name}_swig_doc DEPENDS ${GR_SWIG_DOC_FILE}) + list(APPEND GR_SWIG_TARGET_DEPS ${name}_swig_doc ${GR_RUNTIME_SWIG_DOC_FILE}) endif() #append additional include directories - find_package(PythonLibs) + find_package(PythonLibs 2) list(APPEND GR_SWIG_INCLUDE_DIRS ${PYTHON_INCLUDE_PATH}) #deprecated name (now dirs) list(APPEND GR_SWIG_INCLUDE_DIRS ${PYTHON_INCLUDE_DIRS}) - list(APPEND GR_SWIG_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}) - list(APPEND GR_SWIG_INCLUDE_DIRS ${CMAKE_CURRENT_BINARY_DIR}) + + #prepend local swig directories + list(INSERT GR_SWIG_INCLUDE_DIRS 0 ${CMAKE_CURRENT_SOURCE_DIR}) + list(INSERT GR_SWIG_INCLUDE_DIRS 0 ${CMAKE_CURRENT_BINARY_DIR}) #determine include dependencies for swig file execute_process( @@ -157,6 +172,9 @@ include(UseSWIG) SWIG_ADD_MODULE(${name} python ${ifiles}) SWIG_LINK_LIBRARIES(${name} ${PYTHON_LIBRARIES} ${GR_SWIG_LIBRARIES}) + if(${name} STREQUAL "runtime_swig") + SET_TARGET_PROPERTIES(${SWIG_MODULE_runtime_swig_REAL_NAME} PROPERTIES DEFINE_SYMBOL "gnuradio_runtime_EXPORTS") + endif(${name} STREQUAL "runtime_swig") endmacro(GR_SWIG_MAKE) @@ -204,21 +222,25 @@ import os, sys, re -include_matcher = re.compile('[#|%]include\\s*[<|\"](.*)[>|\"]') +i_include_matcher = re.compile('%(include|import)\\s*[<|\"](.*)[>|\"]') +h_include_matcher = re.compile('#(include)\\s*[<|\"](.*)[>|\"]') include_dirs = sys.argv[2].split(';') def get_swig_incs(file_path): + if file_path.endswith('.i'): matcher = i_include_matcher + else: matcher = h_include_matcher file_contents = open(file_path, 'r').read() - return include_matcher.findall(file_contents, re.MULTILINE) + return matcher.findall(file_contents, re.MULTILINE) def get_swig_deps(file_path, level): deps = [file_path] if level == 0: return deps - for inc_file in get_swig_incs(file_path): + for keyword, inc_file in get_swig_incs(file_path): for inc_dir in include_dirs: inc_path = os.path.join(inc_dir, inc_file) if not os.path.exists(inc_path): continue deps.extend(get_swig_deps(inc_path, level-1)) + break #found, we dont search in lower prio inc dirs return deps if __name__ == '__main__': diff -Nru gnuradio-3.6.1/cmake/Modules/GrTest.cmake gnuradio-3.7.1/cmake/Modules/GrTest.cmake --- gnuradio-3.6.1/cmake/Modules/GrTest.cmake 2012-06-11 15:36:37.000000000 +0000 +++ gnuradio-3.7.1/cmake/Modules/GrTest.cmake 2013-06-30 00:05:51.000000000 +0000 @@ -30,6 +30,7 @@ # GR_TEST_TARGET_DEPS - built targets for the library path # GR_TEST_LIBRARY_DIRS - directories for the library path # GR_TEST_PYTHON_DIRS - directories for the python path +# GR_TEST_ENVIRONS - other environment key/value pairs ######################################################################## function(GR_ADD_TEST test_name) @@ -66,6 +67,7 @@ file(TO_NATIVE_PATH "${GR_TEST_PYTHON_DIRS}" pypath) #ok to use on dir list? set(environs "GR_DONT_LOAD_PREFS=1" "srcdir=${srcdir}") + list(APPEND environs ${GR_TEST_ENVIRONS}) #http://www.cmake.org/pipermail/cmake/2009-May/029464.html #Replaced this add test + set environs code with the shell script generation. diff -Nru gnuradio-3.6.1/cmake/Modules/GrVersion.cmake gnuradio-3.7.1/cmake/Modules/GrVersion.cmake --- gnuradio-3.6.1/cmake/Modules/GrVersion.cmake 2012-06-11 15:36:37.000000000 +0000 +++ gnuradio-3.7.1/cmake/Modules/GrVersion.cmake 2013-06-30 00:05:51.000000000 +0000 @@ -1,4 +1,4 @@ -# Copyright 2011 Free Software Foundation, Inc. +# Copyright 2011,2013 Free Software Foundation, Inc. # # This file is part of GNU Radio # @@ -54,6 +54,8 @@ set(VERSION "${GIT_DESCRIBE}") set(DOCVER "${MAJOR_VERSION}.${API_COMPAT}${MINOR_VERSION}") set(LIBVER "${MAJOR_VERSION}.${API_COMPAT}${MINOR_VERSION}") + set(RC_MINOR_VERSION "0") + set(RC_MAINT_VERSION "0") elseif("${MAINT_VERSION}" STREQUAL "git") # VERSION: 3.3.1git-xxx-gxxxxxxxx # DOCVER: 3.3.1git @@ -61,6 +63,8 @@ set(VERSION "${GIT_DESCRIBE}") set(DOCVER "${MAJOR_VERSION}.${API_COMPAT}.${MINOR_VERSION}${MAINT_VERSION}") set(LIBVER "${MAJOR_VERSION}.${API_COMPAT}.${MINOR_VERSION}${MAINT_VERSION}") + math(EXPR RC_MINOR_VERSION "${MINOR_VERSION} - 1") + set(RC_MAINT_VERSION "0") else() # This is a numbered release. # VERSION: 3.3.1{.x} @@ -73,4 +77,6 @@ endif() set(DOCVER "${VERSION}") set(LIBVER "${VERSION}") + set(RC_MINOR_VERSION ${MINOR_VERSION}) + set(RC_MAINT_VERSION ${MAINT_VERSION}) endif() diff -Nru gnuradio-3.6.1/cmake/Modules/NSIS.InstallOptions.ini.in gnuradio-3.7.1/cmake/Modules/NSIS.InstallOptions.ini.in --- gnuradio-3.6.1/cmake/Modules/NSIS.InstallOptions.ini.in 1970-01-01 00:00:00.000000000 +0000 +++ gnuradio-3.7.1/cmake/Modules/NSIS.InstallOptions.ini.in 2013-06-30 00:05:51.000000000 +0000 @@ -0,0 +1,37 @@ +[Settings] +NumFields=4 + +[Field 1] +Type=label +Text=By default GNU Radio does not add its directory to the system PATH. +Left=0 +Right=-1 +Top=0 +Bottom=20 + +[Field 2] +Type=radiobutton +Text=Do not add GNU Radio to the system PATH +Left=0 +Right=-1 +Top=30 +Bottom=40 +State=1 + +[Field 3] +Type=radiobutton +Text=Add GNU Radio to the system PATH for all users +Left=0 +Right=-1 +Top=40 +Bottom=50 +State=0 + +[Field 4] +Type=radiobutton +Text=Add GNU Radio to the system PATH for current user +Left=0 +Right=-1 +Top=50 +Bottom=60 +State=0 diff -Nru gnuradio-3.6.1/cmake/Modules/NSIS.template.in gnuradio-3.7.1/cmake/Modules/NSIS.template.in --- gnuradio-3.6.1/cmake/Modules/NSIS.template.in 1970-01-01 00:00:00.000000000 +0000 +++ gnuradio-3.7.1/cmake/Modules/NSIS.template.in 2013-06-30 00:05:51.000000000 +0000 @@ -0,0 +1,951 @@ +; CPack install script designed for a nmake build + +;-------------------------------- +; You must define these values + + !define VERSION "@CPACK_PACKAGE_VERSION@" + !define PATCH "@CPACK_PACKAGE_VERSION_PATCH@" + !define INST_DIR "@CPACK_TEMPORARY_DIRECTORY@" + +;-------------------------------- +;Variables + + Var MUI_TEMP + Var STARTMENU_FOLDER + Var SV_ALLUSERS + Var START_MENU + Var DO_NOT_ADD_TO_PATH + Var ADD_TO_PATH_ALL_USERS + Var ADD_TO_PATH_CURRENT_USER + Var INSTALL_DESKTOP + Var IS_DEFAULT_INSTALLDIR +;-------------------------------- +;Include Modern UI + + !include "MUI.nsh" + + ;Default installation folder + InstallDir "@CPACK_NSIS_INSTALL_ROOT@\@CPACK_PACKAGE_INSTALL_DIRECTORY@" + +;-------------------------------- +;General + + ;Name and file + Name "GNU Radio" + OutFile "@CPACK_TOPLEVEL_DIRECTORY@/@CPACK_OUTPUT_FILE_NAME@" + + ;Set compression + SetCompressor @CPACK_NSIS_COMPRESSOR@ + +@CPACK_NSIS_DEFINES@ + + !include Sections.nsh + +;--- Component support macros: --- +; The code for the add/remove functionality is from: +; http://nsis.sourceforge.net/Add/Remove_Functionality +; It has been modified slightly and extended to provide +; inter-component dependencies. +Var AR_SecFlags +Var AR_RegFlags +@CPACK_NSIS_SECTION_SELECTED_VARS@ + +; Loads the "selected" flag for the section named SecName into the +; variable VarName. +!macro LoadSectionSelectedIntoVar SecName VarName + SectionGetFlags ${${SecName}} $${VarName} + IntOp $${VarName} $${VarName} & ${SF_SELECTED} ;Turn off all other bits +!macroend + +; Loads the value of a variable... can we get around this? +!macro LoadVar VarName + IntOp $R0 0 + $${VarName} +!macroend + +; Sets the value of a variable +!macro StoreVar VarName IntValue + IntOp $${VarName} 0 + ${IntValue} +!macroend + +!macro InitSection SecName + ; This macro reads component installed flag from the registry and + ;changes checked state of the section on the components page. + ;Input: section index constant name specified in Section command. + + ClearErrors + ;Reading component status from registry + ReadRegDWORD $AR_RegFlags HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@\Components\${SecName}" "Installed" + IfErrors "default_${SecName}" + ;Status will stay default if registry value not found + ;(component was never installed) + IntOp $AR_RegFlags $AR_RegFlags & ${SF_SELECTED} ;Turn off all other bits + SectionGetFlags ${${SecName}} $AR_SecFlags ;Reading default section flags + IntOp $AR_SecFlags $AR_SecFlags & 0xFFFE ;Turn lowest (enabled) bit off + IntOp $AR_SecFlags $AR_RegFlags | $AR_SecFlags ;Change lowest bit + + ; Note whether this component was installed before + !insertmacro StoreVar ${SecName}_was_installed $AR_RegFlags + IntOp $R0 $AR_RegFlags & $AR_RegFlags + + ;Writing modified flags + SectionSetFlags ${${SecName}} $AR_SecFlags + + "default_${SecName}:" + !insertmacro LoadSectionSelectedIntoVar ${SecName} ${SecName}_selected +!macroend + +!macro FinishSection SecName + ; This macro reads section flag set by user and removes the section + ;if it is not selected. + ;Then it writes component installed flag to registry + ;Input: section index constant name specified in Section command. + + SectionGetFlags ${${SecName}} $AR_SecFlags ;Reading section flags + ;Checking lowest bit: + IntOp $AR_SecFlags $AR_SecFlags & ${SF_SELECTED} + IntCmp $AR_SecFlags 1 "leave_${SecName}" + ;Section is not selected: + ;Calling Section uninstall macro and writing zero installed flag + !insertmacro "Remove_${${SecName}}" + WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@\Components\${SecName}" \ + "Installed" 0 + Goto "exit_${SecName}" + + "leave_${SecName}:" + ;Section is selected: + WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@\Components\${SecName}" \ + "Installed" 1 + + "exit_${SecName}:" +!macroend + +!macro RemoveSection SecName + ; This macro is used to call section's Remove_... macro + ;from the uninstaller. + ;Input: section index constant name specified in Section command. + + !insertmacro "Remove_${${SecName}}" +!macroend + +; Determine whether the selection of SecName changed +!macro MaybeSelectionChanged SecName + !insertmacro LoadVar ${SecName}_selected + SectionGetFlags ${${SecName}} $R1 + IntOp $R1 $R1 & ${SF_SELECTED} ;Turn off all other bits + + ; See if the status has changed: + IntCmp $R0 $R1 "${SecName}_unchanged" + !insertmacro LoadSectionSelectedIntoVar ${SecName} ${SecName}_selected + + IntCmp $R1 ${SF_SELECTED} "${SecName}_was_selected" + !insertmacro "Deselect_required_by_${SecName}" + goto "${SecName}_unchanged" + + "${SecName}_was_selected:" + !insertmacro "Select_${SecName}_depends" + + "${SecName}_unchanged:" +!macroend +;--- End of Add/Remove macros --- + +;-------------------------------- +;Interface Settings + + !define MUI_HEADERIMAGE + !define MUI_ABORTWARNING + +;-------------------------------- +; path functions + +!verbose 3 +!include "WinMessages.NSH" +!verbose 4 + +;---------------------------------------- +; based upon a script of "Written by KiCHiK 2003-01-18 05:57:02" +;---------------------------------------- +!verbose 3 +!include "WinMessages.NSH" +!verbose 4 +;==================================================== +; get_NT_environment +; Returns: the selected environment +; Output : head of the stack +;==================================================== +!macro select_NT_profile UN +Function ${UN}select_NT_profile + StrCmp $ADD_TO_PATH_ALL_USERS "1" 0 environment_single + DetailPrint "Selected environment for all users" + Push "all" + Return + environment_single: + DetailPrint "Selected environment for current user only." + Push "current" + Return +FunctionEnd +!macroend +!insertmacro select_NT_profile "" +!insertmacro select_NT_profile "un." +;---------------------------------------------------- +!define NT_current_env 'HKCU "Environment"' +!define NT_all_env 'HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"' + +!ifndef WriteEnvStr_RegKey + !ifdef ALL_USERS + !define WriteEnvStr_RegKey \ + 'HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"' + !else + !define WriteEnvStr_RegKey 'HKCU "Environment"' + !endif +!endif + +; AddToPath - Adds the given dir to the search path. +; Input - head of the stack +; Note - Win9x systems requires reboot + +Function AddToPath + Exch $0 + Push $1 + Push $2 + Push $3 + + # don't add if the path doesn't exist + IfFileExists "$0\*.*" "" AddToPath_done + + ReadEnvStr $1 PATH + ; if the path is too long for a NSIS variable NSIS will return a 0 + ; length string. If we find that, then warn and skip any path + ; modification as it will trash the existing path. + StrLen $2 $1 + IntCmp $2 0 CheckPathLength_ShowPathWarning CheckPathLength_Done CheckPathLength_Done + CheckPathLength_ShowPathWarning: + Messagebox MB_OK|MB_ICONEXCLAMATION "Warning! PATH too long installer unable to modify PATH!" + Goto AddToPath_done + CheckPathLength_Done: + Push "$1;" + Push "$0;" + Call StrStr + Pop $2 + StrCmp $2 "" "" AddToPath_done + Push "$1;" + Push "$0\;" + Call StrStr + Pop $2 + StrCmp $2 "" "" AddToPath_done + GetFullPathName /SHORT $3 $0 + Push "$1;" + Push "$3;" + Call StrStr + Pop $2 + StrCmp $2 "" "" AddToPath_done + Push "$1;" + Push "$3\;" + Call StrStr + Pop $2 + StrCmp $2 "" "" AddToPath_done + + Call IsNT + Pop $1 + StrCmp $1 1 AddToPath_NT + ; Not on NT + StrCpy $1 $WINDIR 2 + FileOpen $1 "$1\autoexec.bat" a + FileSeek $1 -1 END + FileReadByte $1 $2 + IntCmp $2 26 0 +2 +2 # DOS EOF + FileSeek $1 -1 END # write over EOF + FileWrite $1 "$\r$\nSET PATH=%PATH%;$3$\r$\n" + FileClose $1 + SetRebootFlag true + Goto AddToPath_done + + AddToPath_NT: + StrCmp $ADD_TO_PATH_ALL_USERS "1" ReadAllKey + ReadRegStr $1 ${NT_current_env} "PATH" + Goto DoTrim + ReadAllKey: + ReadRegStr $1 ${NT_all_env} "PATH" + DoTrim: + StrCmp $1 "" AddToPath_NTdoIt + Push $1 + Call Trim + Pop $1 + StrCpy $0 "$1;$0" + AddToPath_NTdoIt: + StrCmp $ADD_TO_PATH_ALL_USERS "1" WriteAllKey + WriteRegExpandStr ${NT_current_env} "PATH" $0 + Goto DoSend + WriteAllKey: + WriteRegExpandStr ${NT_all_env} "PATH" $0 + DoSend: + SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=5000 + + AddToPath_done: + Pop $3 + Pop $2 + Pop $1 + Pop $0 +FunctionEnd + + +; RemoveFromPath - Remove a given dir from the path +; Input: head of the stack + +Function un.RemoveFromPath + Exch $0 + Push $1 + Push $2 + Push $3 + Push $4 + Push $5 + Push $6 + + IntFmt $6 "%c" 26 # DOS EOF + + Call un.IsNT + Pop $1 + StrCmp $1 1 unRemoveFromPath_NT + ; Not on NT + StrCpy $1 $WINDIR 2 + FileOpen $1 "$1\autoexec.bat" r + GetTempFileName $4 + FileOpen $2 $4 w + GetFullPathName /SHORT $0 $0 + StrCpy $0 "SET PATH=%PATH%;$0" + Goto unRemoveFromPath_dosLoop + + unRemoveFromPath_dosLoop: + FileRead $1 $3 + StrCpy $5 $3 1 -1 # read last char + StrCmp $5 $6 0 +2 # if DOS EOF + StrCpy $3 $3 -1 # remove DOS EOF so we can compare + StrCmp $3 "$0$\r$\n" unRemoveFromPath_dosLoopRemoveLine + StrCmp $3 "$0$\n" unRemoveFromPath_dosLoopRemoveLine + StrCmp $3 "$0" unRemoveFromPath_dosLoopRemoveLine + StrCmp $3 "" unRemoveFromPath_dosLoopEnd + FileWrite $2 $3 + Goto unRemoveFromPath_dosLoop + unRemoveFromPath_dosLoopRemoveLine: + SetRebootFlag true + Goto unRemoveFromPath_dosLoop + + unRemoveFromPath_dosLoopEnd: + FileClose $2 + FileClose $1 + StrCpy $1 $WINDIR 2 + Delete "$1\autoexec.bat" + CopyFiles /SILENT $4 "$1\autoexec.bat" + Delete $4 + Goto unRemoveFromPath_done + + unRemoveFromPath_NT: + StrCmp $ADD_TO_PATH_ALL_USERS "1" unReadAllKey + ReadRegStr $1 ${NT_current_env} "PATH" + Goto unDoTrim + unReadAllKey: + ReadRegStr $1 ${NT_all_env} "PATH" + unDoTrim: + StrCpy $5 $1 1 -1 # copy last char + StrCmp $5 ";" +2 # if last char != ; + StrCpy $1 "$1;" # append ; + Push $1 + Push "$0;" + Call un.StrStr ; Find `$0;` in $1 + Pop $2 ; pos of our dir + StrCmp $2 "" unRemoveFromPath_done + ; else, it is in path + # $0 - path to add + # $1 - path var + StrLen $3 "$0;" + StrLen $4 $2 + StrCpy $5 $1 -$4 # $5 is now the part before the path to remove + StrCpy $6 $2 "" $3 # $6 is now the part after the path to remove + StrCpy $3 $5$6 + + StrCpy $5 $3 1 -1 # copy last char + StrCmp $5 ";" 0 +2 # if last char == ; + StrCpy $3 $3 -1 # remove last char + + StrCmp $ADD_TO_PATH_ALL_USERS "1" unWriteAllKey + WriteRegExpandStr ${NT_current_env} "PATH" $3 + Goto unDoSend + unWriteAllKey: + WriteRegExpandStr ${NT_all_env} "PATH" $3 + unDoSend: + SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=5000 + + unRemoveFromPath_done: + Pop $6 + Pop $5 + Pop $4 + Pop $3 + Pop $2 + Pop $1 + Pop $0 +FunctionEnd + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; Uninstall sutff +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +########################################### +# Utility Functions # +########################################### + +;==================================================== +; IsNT - Returns 1 if the current system is NT, 0 +; otherwise. +; Output: head of the stack +;==================================================== +; IsNT +; no input +; output, top of the stack = 1 if NT or 0 if not +; +; Usage: +; Call IsNT +; Pop $R0 +; ($R0 at this point is 1 or 0) + +!macro IsNT un +Function ${un}IsNT + Push $0 + ReadRegStr $0 HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion + StrCmp $0 "" 0 IsNT_yes + ; we are not NT. + Pop $0 + Push 0 + Return + + IsNT_yes: + ; NT!!! + Pop $0 + Push 1 +FunctionEnd +!macroend +!insertmacro IsNT "" +!insertmacro IsNT "un." + +; StrStr +; input, top of stack = string to search for +; top of stack-1 = string to search in +; output, top of stack (replaces with the portion of the string remaining) +; modifies no other variables. +; +; Usage: +; Push "this is a long ass string" +; Push "ass" +; Call StrStr +; Pop $R0 +; ($R0 at this point is "ass string") + +!macro StrStr un +Function ${un}StrStr +Exch $R1 ; st=haystack,old$R1, $R1=needle + Exch ; st=old$R1,haystack + Exch $R2 ; st=old$R1,old$R2, $R2=haystack + Push $R3 + Push $R4 + Push $R5 + StrLen $R3 $R1 + StrCpy $R4 0 + ; $R1=needle + ; $R2=haystack + ; $R3=len(needle) + ; $R4=cnt + ; $R5=tmp + loop: + StrCpy $R5 $R2 $R3 $R4 + StrCmp $R5 $R1 done + StrCmp $R5 "" done + IntOp $R4 $R4 + 1 + Goto loop +done: + StrCpy $R1 $R2 "" $R4 + Pop $R5 + Pop $R4 + Pop $R3 + Pop $R2 + Exch $R1 +FunctionEnd +!macroend +!insertmacro StrStr "" +!insertmacro StrStr "un." + +Function Trim ; Added by Pelaca + Exch $R1 + Push $R2 +Loop: + StrCpy $R2 "$R1" 1 -1 + StrCmp "$R2" " " RTrim + StrCmp "$R2" "$\n" RTrim + StrCmp "$R2" "$\r" RTrim + StrCmp "$R2" ";" RTrim + GoTo Done +RTrim: + StrCpy $R1 "$R1" -1 + Goto Loop +Done: + Pop $R2 + Exch $R1 +FunctionEnd + +Function ConditionalAddToRegisty + Pop $0 + Pop $1 + StrCmp "$0" "" ConditionalAddToRegisty_EmptyString + WriteRegStr SHCTX "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@" \ + "$1" "$0" + ;MessageBox MB_OK "Set Registry: '$1' to '$0'" + DetailPrint "Set install registry entry: '$1' to '$0'" + ConditionalAddToRegisty_EmptyString: +FunctionEnd + +;-------------------------------- + +!ifdef CPACK_USES_DOWNLOAD +Function DownloadFile + IfFileExists $INSTDIR\* +2 + CreateDirectory $INSTDIR + Pop $0 + + ; Skip if already downloaded + IfFileExists $INSTDIR\$0 0 +2 + Return + + StrCpy $1 "@CPACK_DOWNLOAD_SITE@" + + try_again: + NSISdl::download "$1/$0" "$INSTDIR\$0" + + Pop $1 + StrCmp $1 "success" success + StrCmp $1 "Cancelled" cancel + MessageBox MB_OK "Download failed: $1" + cancel: + Return + success: +FunctionEnd +!endif + +;-------------------------------- +; Installation types +@CPACK_NSIS_INSTALLATION_TYPES@ + +;-------------------------------- +; Component sections +@CPACK_NSIS_COMPONENT_SECTIONS@ + +;-------------------------------- +; Define some macro setting for the gui +@CPACK_NSIS_INSTALLER_MUI_ICON_CODE@ +@CPACK_NSIS_INSTALLER_ICON_CODE@ +@CPACK_NSIS_INSTALLER_MUI_COMPONENTS_DESC@ +@CPACK_NSIS_INSTALLER_MUI_FINISHPAGE_RUN_CODE@ + +;-------------------------------- +;Pages + !insertmacro MUI_PAGE_WELCOME + + !insertmacro MUI_PAGE_LICENSE "@CPACK_RESOURCE_FILE_LICENSE@" + Page custom InstallOptionsPage + !insertmacro MUI_PAGE_DIRECTORY + + ;Start Menu Folder Page Configuration + !define MUI_STARTMENUPAGE_REGISTRY_ROOT "SHCTX" + !define MUI_STARTMENUPAGE_REGISTRY_KEY "Software\@CPACK_PACKAGE_VENDOR@\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@" + !define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "Start Menu Folder" + !insertmacro MUI_PAGE_STARTMENU Application $STARTMENU_FOLDER + + @CPACK_NSIS_PAGE_COMPONENTS@ + + !insertmacro MUI_PAGE_INSTFILES + !insertmacro MUI_PAGE_FINISH + + !insertmacro MUI_UNPAGE_CONFIRM + !insertmacro MUI_UNPAGE_INSTFILES + +;-------------------------------- +;Languages + + !insertmacro MUI_LANGUAGE "English" ;first language is the default language + !insertmacro MUI_LANGUAGE "Albanian" + !insertmacro MUI_LANGUAGE "Arabic" + !insertmacro MUI_LANGUAGE "Basque" + !insertmacro MUI_LANGUAGE "Belarusian" + !insertmacro MUI_LANGUAGE "Bosnian" + !insertmacro MUI_LANGUAGE "Breton" + !insertmacro MUI_LANGUAGE "Bulgarian" + !insertmacro MUI_LANGUAGE "Croatian" + !insertmacro MUI_LANGUAGE "Czech" + !insertmacro MUI_LANGUAGE "Danish" + !insertmacro MUI_LANGUAGE "Dutch" + !insertmacro MUI_LANGUAGE "Estonian" + !insertmacro MUI_LANGUAGE "Farsi" + !insertmacro MUI_LANGUAGE "Finnish" + !insertmacro MUI_LANGUAGE "French" + !insertmacro MUI_LANGUAGE "German" + !insertmacro MUI_LANGUAGE "Greek" + !insertmacro MUI_LANGUAGE "Hebrew" + !insertmacro MUI_LANGUAGE "Hungarian" + !insertmacro MUI_LANGUAGE "Icelandic" + !insertmacro MUI_LANGUAGE "Indonesian" + !insertmacro MUI_LANGUAGE "Irish" + !insertmacro MUI_LANGUAGE "Italian" + !insertmacro MUI_LANGUAGE "Japanese" + !insertmacro MUI_LANGUAGE "Korean" + !insertmacro MUI_LANGUAGE "Kurdish" + !insertmacro MUI_LANGUAGE "Latvian" + !insertmacro MUI_LANGUAGE "Lithuanian" + !insertmacro MUI_LANGUAGE "Luxembourgish" + !insertmacro MUI_LANGUAGE "Macedonian" + !insertmacro MUI_LANGUAGE "Malay" + !insertmacro MUI_LANGUAGE "Mongolian" + !insertmacro MUI_LANGUAGE "Norwegian" + !insertmacro MUI_LANGUAGE "Polish" + !insertmacro MUI_LANGUAGE "Portuguese" + !insertmacro MUI_LANGUAGE "PortugueseBR" + !insertmacro MUI_LANGUAGE "Romanian" + !insertmacro MUI_LANGUAGE "Russian" + !insertmacro MUI_LANGUAGE "Serbian" + !insertmacro MUI_LANGUAGE "SerbianLatin" + !insertmacro MUI_LANGUAGE "SimpChinese" + !insertmacro MUI_LANGUAGE "Slovak" + !insertmacro MUI_LANGUAGE "Slovenian" + !insertmacro MUI_LANGUAGE "Spanish" + !insertmacro MUI_LANGUAGE "Swedish" + !insertmacro MUI_LANGUAGE "Thai" + !insertmacro MUI_LANGUAGE "TradChinese" + !insertmacro MUI_LANGUAGE "Turkish" + !insertmacro MUI_LANGUAGE "Ukrainian" + !insertmacro MUI_LANGUAGE "Welsh" + + +;-------------------------------- +;Reserve Files + + ;These files should be inserted before other files in the data block + ;Keep these lines before any File command + ;Only for solid compression (by default, solid compression is enabled for BZIP2 and LZMA) + + ReserveFile "NSIS.InstallOptions.ini" + !insertmacro MUI_RESERVEFILE_INSTALLOPTIONS + +;-------------------------------- +;Installer Sections + +Section "-Core installation" + ;Use the entire tree produced by the INSTALL target. Keep the + ;list of directories here in sync with the RMDir commands below. + SetOutPath "$INSTDIR" + @CPACK_NSIS_FULL_INSTALL@ + + ;Store installation folder + WriteRegStr SHCTX "Software\@CPACK_PACKAGE_VENDOR@\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@" "" $INSTDIR + + ;Create uninstaller + WriteUninstaller "$INSTDIR\Uninstall.exe" + Push "DisplayName" + Push "@CPACK_NSIS_DISPLAY_NAME@" + Call ConditionalAddToRegisty + Push "DisplayVersion" + Push "@CPACK_PACKAGE_VERSION@" + Call ConditionalAddToRegisty + Push "Publisher" + Push "@CPACK_PACKAGE_VENDOR@" + Call ConditionalAddToRegisty + Push "UninstallString" + Push "$INSTDIR\Uninstall.exe" + Call ConditionalAddToRegisty + Push "NoRepair" + Push "1" + Call ConditionalAddToRegisty + + !ifdef CPACK_NSIS_ADD_REMOVE + ;Create add/remove functionality + Push "ModifyPath" + Push "$INSTDIR\AddRemove.exe" + Call ConditionalAddToRegisty + !else + Push "NoModify" + Push "1" + Call ConditionalAddToRegisty + !endif + + ; Optional registration + Push "DisplayIcon" + Push "$INSTDIR\@CPACK_NSIS_INSTALLED_ICON_NAME@" + Call ConditionalAddToRegisty + Push "HelpLink" + Push "@CPACK_NSIS_HELP_LINK@" + Call ConditionalAddToRegisty + Push "URLInfoAbout" + Push "@CPACK_NSIS_URL_INFO_ABOUT@" + Call ConditionalAddToRegisty + Push "Contact" + Push "@CPACK_NSIS_CONTACT@" + Call ConditionalAddToRegisty + !insertmacro MUI_INSTALLOPTIONS_READ $INSTALL_DESKTOP "NSIS.InstallOptions.ini" "Field 5" "State" + !insertmacro MUI_STARTMENU_WRITE_BEGIN Application + + ;Create shortcuts + CreateDirectory "$SMPROGRAMS\$STARTMENU_FOLDER" +@CPACK_NSIS_CREATE_ICONS@ +@CPACK_NSIS_CREATE_ICONS_EXTRA@ + CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\Uninstall.lnk" "$INSTDIR\Uninstall.exe" + CreateShortcut "$SMPROGRAMS\$STARTMENU_FOLDER\GNU Radio Companion.lnk" "$INSTDIR\bin\gnuradio-companion.py" "" "" "" SW_SHOWMINIMIZED + + ;Read a value from an InstallOptions INI file + !insertmacro MUI_INSTALLOPTIONS_READ $DO_NOT_ADD_TO_PATH "NSIS.InstallOptions.ini" "Field 2" "State" + !insertmacro MUI_INSTALLOPTIONS_READ $ADD_TO_PATH_ALL_USERS "NSIS.InstallOptions.ini" "Field 3" "State" + !insertmacro MUI_INSTALLOPTIONS_READ $ADD_TO_PATH_CURRENT_USER "NSIS.InstallOptions.ini" "Field 4" "State" + + ; Write special uninstall registry entries + Push "StartMenu" + Push "$STARTMENU_FOLDER" + Call ConditionalAddToRegisty + Push "DoNotAddToPath" + Push "$DO_NOT_ADD_TO_PATH" + Call ConditionalAddToRegisty + Push "AddToPathAllUsers" + Push "$ADD_TO_PATH_ALL_USERS" + Call ConditionalAddToRegisty + Push "AddToPathCurrentUser" + Push "$ADD_TO_PATH_CURRENT_USER" + Call ConditionalAddToRegisty + Push "InstallToDesktop" + Push "$INSTALL_DESKTOP" + Call ConditionalAddToRegisty + + !insertmacro MUI_STARTMENU_WRITE_END + +@CPACK_NSIS_EXTRA_INSTALL_COMMANDS@ + +SectionEnd + +Section "-Add to path" + Push $INSTDIR\bin + StrCmp "@CPACK_NSIS_MODIFY_PATH@" "ON" 0 doNotAddToPath + StrCmp $DO_NOT_ADD_TO_PATH "1" doNotAddToPath 0 + Call AddToPath + doNotAddToPath: +SectionEnd + +;-------------------------------- +; Create custom pages +Function InstallOptionsPage + !insertmacro MUI_HEADER_TEXT "Install Options" "Choose options for installing GNU Radio" + !insertmacro MUI_INSTALLOPTIONS_DISPLAY "NSIS.InstallOptions.ini" + +FunctionEnd + +;-------------------------------- +; determine admin versus local install +Function un.onInit + + ClearErrors + UserInfo::GetName + IfErrors noLM + Pop $0 + UserInfo::GetAccountType + Pop $1 + StrCmp $1 "Admin" 0 +3 + SetShellVarContext all + ;MessageBox MB_OK 'User "$0" is in the Admin group' + Goto done + StrCmp $1 "Power" 0 +3 + SetShellVarContext all + ;MessageBox MB_OK 'User "$0" is in the Power Users group' + Goto done + + noLM: + ;Get installation folder from registry if available + + done: + +FunctionEnd + +;--- Add/Remove callback functions: --- +!macro SectionList MacroName + ;This macro used to perform operation on multiple sections. + ;List all of your components in following manner here. +@CPACK_NSIS_COMPONENT_SECTION_LIST@ +!macroend + +Section -FinishComponents + ;Removes unselected components and writes component status to registry + !insertmacro SectionList "FinishSection" + +!ifdef CPACK_NSIS_ADD_REMOVE + ; Get the name of the installer executable + System::Call 'kernel32::GetModuleFileNameA(i 0, t .R0, i 1024) i r1' + StrCpy $R3 $R0 + + ; Strip off the last 13 characters, to see if we have AddRemove.exe + StrLen $R1 $R0 + IntOp $R1 $R0 - 13 + StrCpy $R2 $R0 13 $R1 + StrCmp $R2 "AddRemove.exe" addremove_installed + + ; We're not running AddRemove.exe, so install it + CopyFiles $R3 $INSTDIR\AddRemove.exe + + addremove_installed: +!endif +SectionEnd +;--- End of Add/Remove callback functions --- + +;-------------------------------- +; Component dependencies +Function .onSelChange + !insertmacro SectionList MaybeSelectionChanged +FunctionEnd + +;-------------------------------- +;Uninstaller Section + +Section "Uninstall" + ReadRegStr $START_MENU SHCTX \ + "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@" "StartMenu" + ;MessageBox MB_OK "Start menu is in: $START_MENU" + ReadRegStr $DO_NOT_ADD_TO_PATH SHCTX \ + "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@" "DoNotAddToPath" + ReadRegStr $ADD_TO_PATH_ALL_USERS SHCTX \ + "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@" "AddToPathAllUsers" + ReadRegStr $ADD_TO_PATH_CURRENT_USER SHCTX \ + "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@" "AddToPathCurrentUser" + ;MessageBox MB_OK "Add to path: $DO_NOT_ADD_TO_PATH all users: $ADD_TO_PATH_ALL_USERS" + ReadRegStr $INSTALL_DESKTOP SHCTX \ + "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@" "InstallToDesktop" + ;MessageBox MB_OK "Install to desktop: $INSTALL_DESKTOP " + +@CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS@ + + ;Remove files we installed. + ;Keep the list of directories here in sync with the File commands above. +@CPACK_NSIS_DELETE_FILES@ +@CPACK_NSIS_DELETE_DIRECTORIES@ + +!ifdef CPACK_NSIS_ADD_REMOVE + ;Remove the add/remove program + Delete "$INSTDIR\AddRemove.exe" +!endif + + ;Remove the uninstaller itself. + Delete "$INSTDIR\Uninstall.exe" + DeleteRegKey SHCTX "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@" + + ;Remove the installation directory if it is empty. + RMDir "$INSTDIR" + + ; Remove the registry entries. + DeleteRegKey SHCTX "Software\@CPACK_PACKAGE_VENDOR@\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@" + + ; Removes all optional components + !insertmacro SectionList "RemoveSection" + + !insertmacro MUI_STARTMENU_GETFOLDER Application $MUI_TEMP + + Delete "$SMPROGRAMS\$MUI_TEMP\Uninstall.lnk" +@CPACK_NSIS_DELETE_ICONS@ +@CPACK_NSIS_DELETE_ICONS_EXTRA@ + + ;Delete empty start menu parent diretories + StrCpy $MUI_TEMP "$SMPROGRAMS\$MUI_TEMP" + + startMenuDeleteLoop: + ClearErrors + RMDir $MUI_TEMP + GetFullPathName $MUI_TEMP "$MUI_TEMP\.." + + IfErrors startMenuDeleteLoopDone + + StrCmp "$MUI_TEMP" "$SMPROGRAMS" startMenuDeleteLoopDone startMenuDeleteLoop + startMenuDeleteLoopDone: + + ; If the user changed the shortcut, then untinstall may not work. This should + ; try to fix it. + StrCpy $MUI_TEMP "$START_MENU" + Delete "$SMPROGRAMS\$MUI_TEMP\Uninstall.lnk" + Delete "$SMPROGRAMS\$MUI_TEMP\GNU Radio Companion.lnk" +@CPACK_NSIS_DELETE_ICONS_EXTRA@ + + ;Delete empty start menu parent diretories + StrCpy $MUI_TEMP "$SMPROGRAMS\$MUI_TEMP" + + secondStartMenuDeleteLoop: + ClearErrors + RMDir $MUI_TEMP + GetFullPathName $MUI_TEMP "$MUI_TEMP\.." + + IfErrors secondStartMenuDeleteLoopDone + + StrCmp "$MUI_TEMP" "$SMPROGRAMS" secondStartMenuDeleteLoopDone secondStartMenuDeleteLoop + secondStartMenuDeleteLoopDone: + + DeleteRegKey /ifempty SHCTX "Software\@CPACK_PACKAGE_VENDOR@\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@" + + Push $INSTDIR\bin + StrCmp $DO_NOT_ADD_TO_PATH_ "1" doNotRemoveFromPath 0 + Call un.RemoveFromPath + doNotRemoveFromPath: +SectionEnd + +;-------------------------------- +; determine admin versus local install +; Is install for "AllUsers" or "JustMe"? +; Default to "JustMe" - set to "AllUsers" if admin or on Win9x +; This function is used for the very first "custom page" of the installer. +; This custom page does not show up visibly, but it executes prior to the +; first visible page and sets up $INSTDIR properly... +; Choose different default installation folder based on SV_ALLUSERS... +; "Program Files" for AllUsers, "My Documents" for JustMe... + +Function .onInit + ; Reads components status for registry + !insertmacro SectionList "InitSection" + + ; check to see if /D has been used to change + ; the install directory by comparing it to the + ; install directory that is expected to be the + ; default + StrCpy $IS_DEFAULT_INSTALLDIR 0 + StrCmp "$INSTDIR" "@CPACK_NSIS_INSTALL_ROOT@\@CPACK_PACKAGE_INSTALL_DIRECTORY@" 0 +2 + StrCpy $IS_DEFAULT_INSTALLDIR 1 + + StrCpy $SV_ALLUSERS "JustMe" + ; if default install dir then change the default + ; if it is installed for JustMe + StrCmp "$IS_DEFAULT_INSTALLDIR" "1" 0 +2 + StrCpy $INSTDIR "$DOCUMENTS\@CPACK_PACKAGE_INSTALL_DIRECTORY@" + + ClearErrors + UserInfo::GetName + IfErrors noLM + Pop $0 + UserInfo::GetAccountType + Pop $1 + StrCmp $1 "Admin" 0 +3 + SetShellVarContext all + ;MessageBox MB_OK 'User "$0" is in the Admin group' + StrCpy $SV_ALLUSERS "AllUsers" + Goto done + StrCmp $1 "Power" 0 +3 + SetShellVarContext all + ;MessageBox MB_OK 'User "$0" is in the Power Users group' + StrCpy $SV_ALLUSERS "AllUsers" + Goto done + + noLM: + StrCpy $SV_ALLUSERS "AllUsers" + ;Get installation folder from registry if available + + done: + StrCmp $SV_ALLUSERS "AllUsers" 0 +3 + StrCmp "$IS_DEFAULT_INSTALLDIR" "1" 0 +2 + StrCpy $INSTDIR "@CPACK_NSIS_INSTALL_ROOT@\@CPACK_PACKAGE_INSTALL_DIRECTORY@" + + StrCmp "@CPACK_NSIS_MODIFY_PATH@" "ON" 0 noOptionsPage + !insertmacro MUI_INSTALLOPTIONS_EXTRACT "NSIS.InstallOptions.ini" + + noOptionsPage: +FunctionEnd diff -Nru gnuradio-3.6.1/cmake/Packaging/Fedora-15.cmake gnuradio-3.7.1/cmake/Packaging/Fedora-15.cmake --- gnuradio-3.6.1/cmake/Packaging/Fedora-15.cmake 2012-06-11 15:36:37.000000000 +0000 +++ gnuradio-3.7.1/cmake/Packaging/Fedora-15.cmake 2013-06-30 00:05:51.000000000 +0000 @@ -1,5 +1,3 @@ -SET(PACKAGE_DEPENDS_GRUEL_RUNTIME "boost-python" "glibc") -SET(PACKAGE_DEPENDS_GRUEL_PYTHON "python") SET(PACKAGE_DEPENDS_CORE_RUNTIME "fftw-libs") SET(PACKAGE_DEPENDS_QTGUI_RUNTIME "qt" "qwt") SET(PACKAGE_DEPENDS_QTGUI_PYTHON "PyQt4" "PyQwt") diff -Nru gnuradio-3.6.1/cmake/Packaging/Fedora-16.cmake gnuradio-3.7.1/cmake/Packaging/Fedora-16.cmake --- gnuradio-3.6.1/cmake/Packaging/Fedora-16.cmake 2012-06-11 15:36:37.000000000 +0000 +++ gnuradio-3.7.1/cmake/Packaging/Fedora-16.cmake 2013-06-30 00:05:51.000000000 +0000 @@ -1,5 +1,3 @@ -SET(PACKAGE_DEPENDS_GRUEL_RUNTIME "boost-python" "glibc") -SET(PACKAGE_DEPENDS_GRUEL_PYTHON "python") SET(PACKAGE_DEPENDS_CORE_RUNTIME "fftw-libs") SET(PACKAGE_DEPENDS_QTGUI_RUNTIME "qt" "qwt") SET(PACKAGE_DEPENDS_QTGUI_PYTHON "PyQt4" "PyQwt") diff -Nru gnuradio-3.6.1/cmake/Packaging/Fedora-17.cmake gnuradio-3.7.1/cmake/Packaging/Fedora-17.cmake --- gnuradio-3.6.1/cmake/Packaging/Fedora-17.cmake 2012-06-11 15:36:37.000000000 +0000 +++ gnuradio-3.7.1/cmake/Packaging/Fedora-17.cmake 2013-06-30 00:05:51.000000000 +0000 @@ -1,10 +1,8 @@ -SET(PACKAGE_DEPENDS_GRUEL_RUNTIME "boost-python" "glibc") -SET(PACKAGE_DEPENDS_GRUEL_PYTHON "python") SET(PACKAGE_DEPENDS_CORE_RUNTIME "fftw-libs") SET(PACKAGE_DEPENDS_QTGUI_RUNTIME "qt" "qwt") SET(PACKAGE_DEPENDS_QTGUI_PYTHON "PyQt4" "PyQwt") SET(PACKAGE_DEPENDS_GRC "python" "numpy" "gtk2" "python-lxml" "python-cheetah") -SET(PACKAGE_DEPENDS_WXGUI "wxGTK" "python" "numpy") +SET(PACKAGE_DEPENDS_WXGUI "wxGTK" "python" "numpy" "PyOpenGL") SET(PACKAGE_DEPENDS_VIDEO_SDL_RUNTIME "SDL") SET(PACKAGE_DEPENDS_UHD_RUNTIME "uhd") SET(PACKAGE_DEPENDS_AUDIO_RUNTIME "pulseaudio" "alsa-lib" "jack-audio-connection-kit") diff -Nru gnuradio-3.6.1/cmake/Packaging/Fedora-18.cmake gnuradio-3.7.1/cmake/Packaging/Fedora-18.cmake --- gnuradio-3.6.1/cmake/Packaging/Fedora-18.cmake 1970-01-01 00:00:00.000000000 +0000 +++ gnuradio-3.7.1/cmake/Packaging/Fedora-18.cmake 2013-06-30 00:05:51.000000000 +0000 @@ -0,0 +1,10 @@ +SET(PACKAGE_DEPENDS_CORE_RUNTIME "fftw-libs") +SET(PACKAGE_DEPENDS_QTGUI_RUNTIME "qt" "qwt") +SET(PACKAGE_DEPENDS_QTGUI_PYTHON "PyQt4" "PyQwt") +SET(PACKAGE_DEPENDS_GRC "python" "numpy" "gtk2" "python-lxml" "python-cheetah") +SET(PACKAGE_DEPENDS_WXGUI "wxGTK" "python" "numpy" "PyOpenGL") +SET(PACKAGE_DEPENDS_VIDEO_SDL_RUNTIME "SDL") +SET(PACKAGE_DEPENDS_UHD_RUNTIME "uhd") +SET(PACKAGE_DEPENDS_AUDIO_RUNTIME "pulseaudio" "alsa-lib" "jack-audio-connection-kit") +SET(PACKAGE_DEPENDS_WAVELET_RUNTIME "gsl") +SET(PACKAGE_DEPENDS_WAVELET_PYTHON "python" "numpy") diff -Nru gnuradio-3.6.1/cmake/Packaging/Ubuntu-10.04.cmake gnuradio-3.7.1/cmake/Packaging/Ubuntu-10.04.cmake --- gnuradio-3.6.1/cmake/Packaging/Ubuntu-10.04.cmake 2012-06-11 15:36:37.000000000 +0000 +++ gnuradio-3.7.1/cmake/Packaging/Ubuntu-10.04.cmake 2013-06-30 00:05:51.000000000 +0000 @@ -1,5 +1,3 @@ -SET(PACKAGE_DEPENDS_GRUEL_RUNTIME "libboost-all-dev" "libc6") -SET(PACKAGE_DEPENDS_GRUEL_PYTHON "python") SET(PACKAGE_DEPENDS_CORE_RUNTIME "libfftw3-3") SET(PACKAGE_DEPENDS_QTGUI_RUNTIME "libqtcore4" "libqwt5-qt4") SET(PACKAGE_DEPENDS_QTGUI_PYTHON "python-qt4" "python-qwt5-qt4") diff -Nru gnuradio-3.6.1/cmake/Packaging/Ubuntu-10.10.cmake gnuradio-3.7.1/cmake/Packaging/Ubuntu-10.10.cmake --- gnuradio-3.6.1/cmake/Packaging/Ubuntu-10.10.cmake 2012-06-11 15:36:37.000000000 +0000 +++ gnuradio-3.7.1/cmake/Packaging/Ubuntu-10.10.cmake 2013-06-30 00:05:51.000000000 +0000 @@ -1,5 +1,3 @@ -SET(PACKAGE_DEPENDS_GRUEL_RUNTIME "libboost-all-dev" "libc6") -SET(PACKAGE_DEPENDS_GRUEL_PYTHON "python") SET(PACKAGE_DEPENDS_CORE_RUNTIME "libfftw3-3") SET(PACKAGE_DEPENDS_QTGUI_RUNTIME "libqtcore4" "libqwt5-qt4") SET(PACKAGE_DEPENDS_QTGUI_PYTHON "python-qt4" "python-qwt5-qt4") diff -Nru gnuradio-3.6.1/cmake/Packaging/Ubuntu-11.04.cmake gnuradio-3.7.1/cmake/Packaging/Ubuntu-11.04.cmake --- gnuradio-3.6.1/cmake/Packaging/Ubuntu-11.04.cmake 2012-06-11 15:36:37.000000000 +0000 +++ gnuradio-3.7.1/cmake/Packaging/Ubuntu-11.04.cmake 2013-06-30 00:05:51.000000000 +0000 @@ -1,6 +1,4 @@ #set the debian package dependencies (parsed by our deb component maker) -SET(PACKAGE_DEPENDS_GRUEL_RUNTIME "libboost-all-dev" "libc6") -SET(PACKAGE_DEPENDS_GRUEL_PYTHON "python") SET(PACKAGE_DEPENDS_CORE_RUNTIME "libfftw3-3") SET(PACKAGE_DEPENDS_QTGUI_RUNTIME "libqtcore4" "libqwt5-qt4") SET(PACKAGE_DEPENDS_QTGUI_PYTHON "python-qt4" "python-qwt5-qt4") diff -Nru gnuradio-3.6.1/cmake/Packaging/Ubuntu-11.10.cmake gnuradio-3.7.1/cmake/Packaging/Ubuntu-11.10.cmake --- gnuradio-3.6.1/cmake/Packaging/Ubuntu-11.10.cmake 2012-06-11 15:36:37.000000000 +0000 +++ gnuradio-3.7.1/cmake/Packaging/Ubuntu-11.10.cmake 2013-06-30 00:05:51.000000000 +0000 @@ -1,5 +1,3 @@ -SET(PACKAGE_DEPENDS_GRUEL_RUNTIME "libboost-all-dev" "libc6") -SET(PACKAGE_DEPENDS_GRUEL_PYTHON "python" "python-numpy") SET(PACKAGE_DEPENDS_CORE_RUNTIME "libfftw3-3") SET(PACKAGE_DEPENDS_QTGUI_RUNTIME "libqtcore4" "libqwt6") SET(PACKAGE_DEPENDS_QTGUI_PYTHON "python-qt4" "python-qwt5-qt4") diff -Nru gnuradio-3.6.1/cmake/Packaging/Ubuntu-12.04.cmake gnuradio-3.7.1/cmake/Packaging/Ubuntu-12.04.cmake --- gnuradio-3.6.1/cmake/Packaging/Ubuntu-12.04.cmake 2012-06-11 15:36:37.000000000 +0000 +++ gnuradio-3.7.1/cmake/Packaging/Ubuntu-12.04.cmake 2013-06-30 00:05:51.000000000 +0000 @@ -1,10 +1,8 @@ -SET(PACKAGE_DEPENDS_GRUEL_RUNTIME "libboost-all-dev" "libc6") -SET(PACKAGE_DEPENDS_GRUEL_PYTHON "python" "python-numpy") SET(PACKAGE_DEPENDS_CORE_RUNTIME "libfftw3-3") SET(PACKAGE_DEPENDS_QTGUI_RUNTIME "libqtcore4" "libqwt6") SET(PACKAGE_DEPENDS_QTGUI_PYTHON "python-qt4" "python-qwt5-qt4") SET(PACKAGE_DEPENDS_GRC "python" "python-numpy" "python-gtk2" "python-lxml" "python-cheetah") -SET(PACKAGE_DEPENDS_WXGUI "python-wxgtk2.8") +SET(PACKAGE_DEPENDS_WXGUI "python-wxgtk2.8" "python-opengl") SET(PACKAGE_DEPENDS_VIDEO_SDL_RUNTIME "libsdl1.2debian") SET(PACKAGE_DEPENDS_UHD_RUNTIME "uhd") SET(PACKAGE_DEPENDS_AUDIO_RUNTIME "libpulse0" "alsa-base" "libjack0") diff -Nru gnuradio-3.6.1/cmake/Packaging/Ubuntu-12.10.cmake gnuradio-3.7.1/cmake/Packaging/Ubuntu-12.10.cmake --- gnuradio-3.6.1/cmake/Packaging/Ubuntu-12.10.cmake 1970-01-01 00:00:00.000000000 +0000 +++ gnuradio-3.7.1/cmake/Packaging/Ubuntu-12.10.cmake 2013-06-30 00:05:51.000000000 +0000 @@ -0,0 +1,10 @@ +SET(PACKAGE_DEPENDS_CORE_RUNTIME "libfftw3-3") +SET(PACKAGE_DEPENDS_QTGUI_RUNTIME "libqtcore4" "libqwt6") +SET(PACKAGE_DEPENDS_QTGUI_PYTHON "python-qt4" "python-qwt5-qt4") +SET(PACKAGE_DEPENDS_GRC "python" "python-numpy" "python-gtk2" "python-lxml" "python-cheetah") +SET(PACKAGE_DEPENDS_WXGUI "python-wxgtk2.8" "python-opengl") +SET(PACKAGE_DEPENDS_VIDEO_SDL_RUNTIME "libsdl1.2debian") +SET(PACKAGE_DEPENDS_UHD_RUNTIME "uhd") +SET(PACKAGE_DEPENDS_AUDIO_RUNTIME "libpulse0" "alsa-base" "libjack0") +SET(PACKAGE_DEPENDS_WAVELET_RUNTIME "libgsl0ldbl") +SET(PACKAGE_DEPENDS_WAVELET_PYTHON "python" "python-numpy") diff -Nru gnuradio-3.6.1/cmake/Packaging/Ubuntu-13.04.cmake gnuradio-3.7.1/cmake/Packaging/Ubuntu-13.04.cmake --- gnuradio-3.6.1/cmake/Packaging/Ubuntu-13.04.cmake 1970-01-01 00:00:00.000000000 +0000 +++ gnuradio-3.7.1/cmake/Packaging/Ubuntu-13.04.cmake 2013-06-30 00:05:51.000000000 +0000 @@ -0,0 +1,12 @@ +SET(PACKAGE_DEPENDS_GRUEL_RUNTIME "libboost-all-dev" "libc6") +SET(PACKAGE_DEPENDS_GRUEL_PYTHON "python" "python-numpy") +SET(PACKAGE_DEPENDS_CORE_RUNTIME "libfftw3-3") +SET(PACKAGE_DEPENDS_QTGUI_RUNTIME "libqtcore4" "libqwt6") +SET(PACKAGE_DEPENDS_QTGUI_PYTHON "python-qt4" "python-qwt5-qt4") +SET(PACKAGE_DEPENDS_GRC "python" "python-numpy" "python-gtk2" "python-lxml" "python-cheetah") +SET(PACKAGE_DEPENDS_WXGUI "python-wxgtk2.8" "python-opengl") +SET(PACKAGE_DEPENDS_VIDEO_SDL_RUNTIME "libsdl1.2debian") +SET(PACKAGE_DEPENDS_UHD_RUNTIME "uhd") +SET(PACKAGE_DEPENDS_AUDIO_RUNTIME "libpulse0" "alsa-base" "libjack0") +SET(PACKAGE_DEPENDS_WAVELET_RUNTIME "libgsl0ldbl") +SET(PACKAGE_DEPENDS_WAVELET_PYTHON "python" "python-numpy") diff -Nru gnuradio-3.6.1/cmake/msvc/stdbool.h gnuradio-3.7.1/cmake/msvc/stdbool.h --- gnuradio-3.6.1/cmake/msvc/stdbool.h 1970-01-01 00:00:00.000000000 +0000 +++ gnuradio-3.7.1/cmake/msvc/stdbool.h 2013-06-30 00:05:51.000000000 +0000 @@ -0,0 +1,45 @@ +/* + * Copyright (C) 2005, 2006 Apple Computer, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + * + */ + +#ifndef STDBOOL_WIN32_H +#define STDBOOL_WIN32_H + +#ifndef _MSC_VER // [ +#error "Use this header only with Microsoft Visual C++ compilers!" +#endif // _MSC_VER ] + +#ifndef __cplusplus + +typedef unsigned char bool; + +#define true 1 +#define false 0 + +#ifndef CASSERT +#define CASSERT(exp, name) typedef int dummy##name [(exp) ? 1 : -1]; +#endif + +CASSERT(sizeof(bool) == 1, bool_is_one_byte) +CASSERT(true, true_is_true) +CASSERT(!false, false_is_false) + +#endif + +#endif diff -Nru gnuradio-3.6.1/config.h.in gnuradio-3.7.1/config.h.in --- gnuradio-3.6.1/config.h.in 1970-01-01 00:00:00.000000000 +0000 +++ gnuradio-3.7.1/config.h.in 2013-06-30 00:05:51.000000000 +0000 @@ -0,0 +1,40 @@ +/* + * Copyright 2013 Free Software Foundation, Inc. + * + * This file is part of GNU Radio + * + * GNU Radio is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3, or (at your option) + * any later version. + * + * GNU Radio is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GNU Radio; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + +#ifndef GNURADIO_CONFIG_H +#define GNURADIO_CONFIG_H +#ifndef TRY_SHM_VMCIRCBUF +#cmakedefine TRY_SHM_VMCIRCBUF +#endif +#ifndef GR_PERFORMANCE_COUNTERS +#cmakedefine GR_PERFORMANCE_COUNTERS +#endif +#ifndef GR_CTRLPORT +#cmakedefine GR_CTRLPORT +#endif +#ifndef ENABLE_GR_LOG +#cmakedefine ENABLE_GR_LOG +#endif +#ifndef HAVE_LOG4CPP +#cmakedefine HAVE_LOG4CPP +#endif + +#endif /* GNURADIO_CONFIG_H */ diff -Nru gnuradio-3.6.1/debian/changelog gnuradio-3.7.1/debian/changelog --- gnuradio-3.6.1/debian/changelog 2012-06-11 17:43:46.000000000 +0000 +++ gnuradio-3.7.1/debian/changelog 2013-09-14 07:59:03.000000000 +0000 @@ -1,3 +1,875 @@ +gnuradio (3.7.1-1~quantal~rm1) quantal; urgency=low + + * Backport from saucy. + + -- Roman Moravcik Sat, 14 Sep 2013 09:30:52 +0200 + +gnuradio (3.7.1-1) unstable; urgency=low + + * New upstream release + Important new features + GRC Bus Ports (Nicholas McCarthy) + + Bus ports in the GNU Radio Companion (GRC) allow ganging block input + or output ports into a single port for display and connections. This + simplifies flowgraph entry when dealing with blocks that work with an + arbitrary number of streams. + + For further information, see: + + http://gnuradio.org/redmine/projects/gnuradio/wiki/Busports + + Minor features/updates (3.7.1): + atsc: created atsc_rx.py and removed obsolete scripts (Andrew Davis) + blocks: added interleaved_char_to_complex block (Tim O'Shea) + blocks: Added QA code for all ControlPort probe types. (Tom Rondeau) + blocks: adding a complex VCO block. (Tom Rondeau) + blocks: adding a tags strobing block to help test tag stream. (Tom Rondeau) + blocks: modified tag_debug block to publish number of tags queued + (Tom Rondeau) + build: Windows packages automatically include compiler runtime DLLs + (Nicholas Corgan) + build: installing all cmake files into lib/cmake/gnuradio directory + (Tom Rondeau) + channels: Added hardware impairments blocks from Matt Ettus' GRCon11 talk + (Tom Rondeau) + channels: added second channel model to dynamically change freq/timing + offsets. (Tom Rondeau) + channels: updated quantization demo for new histogram constructor + (Tom Rondeau) + channels: using new qtgui histogram sink in quantization demo. (Tom Rondeau) + digital: added lo_offset and external clock utilisation to OFDM (Mike Jameson) + digital: added lo_offset and external clock source to narrowband examples + (Mike Jameson) + digital: delay ofdm benchmark_tx exit to allow TX to empty (Mike Jameson) + filter: added optional second input that dynamically adjusts + resampling rate (Tom Rondeau) + grc: Sorts the block tree column at start-up. (Julien Olivain) + grc: Remove *out from sinks, *in from sources (Marcus Müller) + grc: allow set_min_output_buffer on any blocks that have output ports + (Tim O'Shea) + grc: added special variable objects to represent constellations (Tom Rondeau) + qtgui: Added histogram sink (Tom Rondeau) + runtime: added tag_propagation_policy_t to block_gateway (Marcus Müller) + runtime: Improved display handling for gr-ctrlport-monitor (Tim Newman) + runtime: Added probes for byte, short, and int data types (Tom Rondeau) + runtime: allow setting thread affinity to all blocks under a hier_block2 + (Tom Rondeau) + uhd: squashed per-channel stream support (Josh Blum) + + Bug Fixes (3.7.1, 3.7.0.1): + analog: agc3_cc: Fix uninitialized variable error. (Philip Balister) + analog: agc3_cc: bug fix for input values of zero (Tim O'Shea) + atsc: Fix bugs in atsc_field_sync_mux (Clayton Smith) + blocks: expose set_period callback for blocks.message_strobe in GRC + (Tim O'Shea) + blocks: moved type conversions to use Volk dispatchers. (Tom Rondeau) + blocks: set file_descriptor_source default to repeat=false (Tom Rondeau) + build: don't install controlport config file in two places (Tom Rondeau) + build: fix for finding and handling ICE 3.5 or 3.4 (Tom Rondeau) + build: fix to allow reconfiguring install prefix (Johnathan Corgan) + build: fixed some differences between handling Ice 3.4 and 3.5. (Tom Rondeau) + build: fixes FindQwt cmake module to check that Qwt is >= 5.2.0. (Tom Rondeau) + build: force detection to Python 2.x only (Julien Olivain) + build: more robust FindICE operation with multiple ICE installs (Tom Rondeau) + build: require Python v2 for build configuration (Jiri Pinkava) + digital: fix digital.cpmmod_bc XML for new constants location + (Johnathan Corgan) + digital: fix for OFDM serializer QA after FFT block fix (Johnathan Corgan) + digital: fix for moving average filter in OFDM equalizer. (Stefano Banti) + digital: ofdm benchmark_rx fft conflict fix (Mike Jameson) + docs: Fixes sphinx docs for user set LD_LIBRARY_PATH (Tom Rondeau) + docs: Minor corrections, fixes to ControlPort documentation. (Tom Rondeau) + docs: Updated and improved the message passing docs page. (Tom Rondeau) + docs: added doc page on Performance Counters. (Tom Rondeau) + docs: added documentation of the stream tags interface. (Tom Rondeau) + docs: added information about the new pfb_arb_resampler kernel. (Tom Rondeau) + examples: fix examples using 3.7 API without importing namespaces + (Nathan West) + fec: fix uninitialized class member in decode_ccsds_27 (Johnathan Corgan) + fft: Remove the default constructor for fft::goertzel. (Philip Balister) + fft: fix XML import for logpwrfft block (Andrej Lajovic) + fft: fix missing set_window call on initialization (Johnathan Corgan) + grc: added utf8 encoding line to python templates (Marcus Müller) + grc: applying hidapi update patch from Hans de Goede (Volker Schroer) + grc: fix to allow grcc to execute in headless mode (Roy Thompson) + grc: fixes grcc to exit with error in case of a compilation error. + (Julien Olivain) + modtool: fixes using templates in OOT projects created with modtool. + (Tom Rondeau) + modtool: more robust checks for gnuradio-runtime include dirs and libs. + (Tom Rondeau) + modtool: fix finding gnuradio-runtime (Jiri Pinkava) + modtool: fix detection of GNU Radio module directory (Jiri Pinkava) + qtgui: fix missing API declarations (Nicholas McCarthy) + qtgui: fixes some bugs between qwt 5 and 6, some reorg. (Tom Rondeau) + runtime: Fixed runtime SWIG linker error (Nicholas Corgan) + runtime: fix asynch messages delivery when handler not defined (Tim O'Shea) + runtime: fix hier_block2 disconnect_all() (Johnathan Corgan) + runtime: fixed copy/paste error in volk_types.py (Alexandru Csete) + runtime: vmcircbuf_sysv_shm workaround for shmem race condition (Tim O'Shea) + uhd: fix GRC wrapper generation to match UHD change (fixes #562) + (Timo Lindfors) + uhd: fix USRP config info strings to account for B2x0 (Nicholas Corgan) + volk: fix ARM test functions that resulted in an infinite loop (Tom Rondeau) + volk: fix xgetbv tests for OSX/gcc (Michael Dickens) + volk: fix QA test to use non-integer multiples of register sizes (Doug Geiger) + volk: fix Volk profiler to use non integer multiples of register sizes + (Doug Geiger) + wxgui: Prevent crash displaying a tooltip before initialization + (Miklos Maroti) + * Handle lack of freedesktop icon directories better (Closes: #720389) + + -- A. Maitland Bottoms Thu, 29 Aug 2013 23:25:22 -0400 + +gnuradio (3.7.0-5) unstable; urgency=low + + * Following zeroc-ice to unstable + + -- A. Maitland Bottoms Mon, 12 Aug 2013 22:32:03 -0400 + +gnuradio (3.7.0-4) experimental; urgency=low + + * Using zeroc-ice 3.5 in experimental + * fixup volk versioned depends + * Include upstream maint branch fixes - but not + Applying-hidapi-patch-from-Hans-de-Goede + - conflicts with Debian BSD kernel patches + * Debian uses default library locations, so NO_DEFAULT_PATH isn't good. + * version depends on libvolk (Closes: #705867, #718707) + + -- A. Maitland Bottoms Sun, 11 Aug 2013 18:11:24 -0400 + +gnuradio (3.7.0-3) experimental; urgency=low + + * Ship cmake files (Closes: #718310) + * Include upstream maint branch fixes + + -- A. Maitland Bottoms Tue, 30 Jul 2013 12:26:13 -0400 + +gnuradio (3.7.0-2) experimental; urgency=low + + * Update bsd-no-thread-affinity + * Add comma between arguments of atsc/xlate.py (Closes: #714987) + + -- A. Maitland Bottoms Fri, 05 Jul 2013 08:05:12 -0400 + +gnuradio (3.7.0-1) experimental; urgency=low + + * New upstream release + * In experimental until zeroc-ice 3.5 is available in unstable. + * Code Structure Changes (Johnathan Corgan, Tom Rondeau) + + The GNU Radio source code was restructured and flattened. All top-level + components now use the same structure for consistency and ease of + use. All blocks were moved out of gnuradio-core, which has been + renamed to gnuradio-runtime. The blocks are now in their appropriate + top-level components and reimplemented with the new 3.7 API style. The + new API makes use of C++ namespaces and the virtual private + implementation class pattern to better hide GNU Radio internals from + user code. + + Details about this can be found here: + http://gnuradio.org/redmine/projects/gnuradio/wiki/Move_3-6_to_3-7 + + A Google doc showing all items that were moved from one place to another + in the new style is here: http://ow.ly/mDpey + + Blocks not listed were already in their own components. Many blocks were + removed. All columns marked with ‘-----’ means that column is not + applicable to that block or class. Any column (except those marked as + Remove) that are blank means that we might be able to improve upon it, + which normally indicates using VOLK or improving documentation. + + A Google doc showing the new component and Doxygen categories for all + components is here: http://ow.ly/mDplO + + * Important new features: + * ControlPort (Tom Rondeau, Tim O’Shea) + + ControlPort is a new interface for standardizing remote procedure + calls in GNU Radio: + + Remote control and visualization. + Use of ControlPort to enable debugging without requiring extra debug + streams. + Abstracted interface, but currently using ICE (www.zeroc.com). + No additional CPU usage while no monitoring is occurring. + Can connect multiple remotes to same GNU Radio application. + Can also have single ControlPort app control multiple GR apps. + + Each block creates interfaces to control data members, by defining + ‘get’ and ‘set’ interface to query and update values of block + variables. Preference files control the state of ControlPort in + section [ControlPort] of gnuradio-runtime.conf. + + ControlPort comes with a generic utility to allow you to see all + interfaces of a flowgraph: + + gr-ctrlport-monitor -p + + Within a flowgraph, one can also use ControlPort probes to pass + vectors of data to a ControlPort client, including complex IQ + data. One useful probe calculates the power spectral density of a + block output for remote display. + + See the ControlPort page in the GNU Radio manual for more information: + + http://gnuradio.org/doc/doxygen/page_ctrlport.html + + * Performance Measurement Tools + + Performance Counters were first built into GNU Radio in 3.6.5, but could + only be accessed locally. Now, all Performance Counters can be + exported over ControlPort. + + Performance Counters must be compiled into GNU Radio using + -DENABLE_PERFORMANCE_COUNTERS=True. They can be toggled on/off at + runtime using the [PerfCounters] section in gnuradio-runtime.conf. Use + option ‘export’ to export Performance Counters over ControlPort. + + We now include a new tool to visualize the Performance Counters over + ControlPort. This is installed as gr-perf-monitorx and requires the + Python modules Scipy, NetworkX, and Matplotlib. Nodes of the flowgraph + are represented as blue squares. The size of the square is + proportional to the amount of time spent in the work function (either + thread time or monotonic (wall clock) time). The size and depth of the + shade of red of the edges is proportional to how full the block’s + output buffer is. + + * QTGUI Enhancements (Tom Rondeau, Nick Foster, Ben Reynwar) + + The QTGUI widgets defined in gr-qtgui have had a major overhaul in + 3.7. All plots are now split out into individual components, + including: + + Time plots (amplitude versus time) + FFT plots (or PSD) (log magnitude versus frequency) + Waterfall plots (or spectrograms) (time versus frequency with + magnitude as the color intensity) + Constellation plots (imaginary (quadrature) versus real (inphase)) + Time raster plots (time vs. time) + + Each plot can accept multiple connections that will overlay the + signals on them. Zooming and unzooming are the same using the left and + right mouse buttons. The center mouse button will pull up a context + menu to allow manipulations of all kinds of properties of the display, + such as line and marker styles, the size of the FFT, averaging, line + transparency, etc. Significant work has gone into improving the + performance, including the use of VOLK and more intelligent ways of + handling the display to reduce the computational load. + + QT defined QT Style Sheets (QSS) that allow us to specify looks, colors, + and other properties of a display. Support for the use of QSS has been + added to gr-qtgui to make establishing your preferences easier. + + gr-qtgui/examples contains a number of examples showing how to use each + type of plot and the QSS definition and interface. + + * Uninstalled imports (Ben Reynwar) + + The GNU Radio source tree was updated to allow us to directly import + all GNU Radio components in-tree before install but using the same + syntax. This change greatly reduces problems and complexity of writing + Python code for use in both normal installations and QA code. This + change will also allow us to automatically build the Sphinx Python + manual during make. + + * Updated gr_filter_design (Sreeraj Rajendran) + + Overhauled the current gr_filter_design to add better visualization + and interactive tools. Installed as part of the gr-filter component + now, the gr_filter_design tool adds many new features for visualizing + filters as well as support for IIR filter tap design. The new tool + also includes a programmatic API that allows a user to launch the + filter design tool inline in a program, design the new filter, and + pass back an object containing the filter taps and parameters. Passing + a callback function allows the designer to run in a separate thread + and every time a new filter is designed, the callback function can be + triggered to update a filter. + + Examples of using the programmatic access to gr_filter_design can be + found in gr-filter/examples/gr_filtdes_*. + + * Other New Components and Features + New blocks added + + gr::analog::fast_noise_source - pre-generates a table of random + samples from the selected PDF and randomly samples from them. This has + somewhat less entropy than the normal noise_source block but is + significantly faster. + + gr::analog::agc3_*: Performs an initial linear gain ramp to quickly + converge on a signal during startup and then falls back to an + iterative loop similar to agc2. + + The agc, agc2, and agc3 blocks have been made to use a unified + interface that now includes a default maximum gain value (set to 2^16 + so that it can scale up even the LSB of a USRP’s device). + + * New gr-fec component + + This new top-level component mainly functions as a placeholder for new + FEC block implementations. Currently contains only a couple of + purpose-built FEC blocks. + + * New gr-channels component (Tim O'Shea) + + This new top-level component holds current and future channel model + blocks. The standard AWGN channel_model has moved here. In addition, + there are two new channel models: + + fading_model - Uses configurable max Doppler shift, Rician power + factor, and lists of the delays (in samples) and magnitudes of a power + delay profile. + + selective_fading model - Basic fading model that can have a number + of sinusoids, max Doppler shift, and Rician power factor defined for + it. + + * GnuradioConfig.cmake (Tom Rondeau, Tim O’Shea) + + New GnuradioConfig.cmake and GnuradioConfigVersion.cmake cmake files are + installed into the system under $prefix/lib/cmake/gnuradio. These + files can be used by any other project to easily test if any GNU Radio + components are installed and the minimum API-compatible version + required. + + Set GR_REQUIRED_MODULES to any of the top-level components in GNU Radio + in all caps. Then use find_package(Gnuradio) to search for them. The + second optional argument is the API compatible version is was built + against. For example, to test if gnuradio-runtime, gnuradio-blocks, + and gnuradio-filter are installed, we would use: + + set(GR_REQUIRED_MODULES RUNTIME BLOCKS FILTER) + find_package(Gnuradio 3.7.0) + + * Additional Fixes (Ben Reynwar, Tom Rondeau, Josh Blum, Nicholas Corgan) + + Added symbol output stream from constellation_receiver so we can see + the locked constellation as well as the output bits. + + Introduced a new pfb_arb_resampler kernel class that can be used by + other blocks. We have used this to significantly simplify the + pfb_arb_resampler_ccf/fff blocks. + + All PFB code has new QA and fixed a few minor bugs in the + calculation of some of the filters. + + Added more QAM support with Gray coding. + + Reworked VOLK. All kernels are now in volk/kernels/volk, made all + kernels consistent in use of num_points, and redid any kernels that + used num_bytes. + + Removed assumptions that were Linux-only to continue to support + native MSVC builds. + + * Obsoleted and/or removed functionality + + The following items have been removed or redone: + + gr-shd (removed) + gruel (removed; all functionality now in gnuradio-runtime) + gr-howto-write-a-block (functionality replaced by gr_modtool) + + For more removed components, see: http://ow.ly/mDpey + + * Deprecated functionality + + These are items that are currently part of GNU Radio, but are planned + to be removed in the next API release (3.8). + + gr-noaa - will be reimplemented as a stand-alone, out-of-tree + project and supported with PyBOMBS + gr-pager - will be reimplemented as a stand-alone, out-of-tree + project and supported with PyBOMBS + + -- A. Maitland Bottoms Wed, 03 Jul 2013 17:00:23 -0400 + +gnuradio (3.6.5.1-1) unstable; urgency=low + + * New upstream release + * Bug fixes + audio: fix default alsa device from hw:0,0 to default, Bug #551 (Tim O'Shea) + blocks: fix big-endian issue in wavefile blocks (Jaroslav Škarvada) + blocks: fix erroneous linkage to gr-filter (#547) (Johnathan Corgan) + blocks: fix for ~file_source crash, Bug #550 (Tim O'Shea) + blocks: fix param test in keep_me_in_n GRC wrapper (Tim Monahan-Mitchell) + blocks: fix use of assertGreater in QA for older Python (Johnathan Corgan) + cmake: fix CRLF to LF in in some modules (fixes #549) (Johnathan Corgan) + cmake: make install directory of GNU Radio cmakes files configurable + (Jaroslav Škarvada) + core: ensure message passing blocks marked done are handled + (Johnathan Corgan) + core: fir_filter_with_buffer using consistent error margins in all + QA tests (Tom Rondeau) + core: fix vmcircbuf file read/compare to use strncmp instead of strcmp + (Tom Rondeau) + core: makes sure if capping to max_noutput_items with output_multiple + that the value is always an output_multiple. (Tom Rondeau) + core: making block_registry thread-safe for multiple flowgraphs to + access it (Tom Rondeau) + core: fix 2 threading issues with the shared memory system. (Tom Rondeau) + digital: a block should not hold a reference to itself (Josh Blum) + digital: bugfixes to ofdm_chanest, HPD and frame EQ (Martin Braun) + digital: hack to prevent the HPD from crashing flow graphs (Martin Braun) + digital: remove stray import from QA test (Johnathan Corgan) + grcc: set grc file path, which is required for hier blocks (Bastian Bloessl) + wavelet: fix for -lgslcblas getting stripped out of link flags (Tim O'Shea) + wavelet: do not use unsupported compile flags for OSX (Michael Dickens) + wxgui: Fixes to solve issues using GL sinks on OS X (Balint Seeber) + wxgui: fix exception in callback before label set (Marcus D. Leech) + wxgui: fix flickering on Linux created by bea6d506 (Sylvain Munaut) + + -- A. Maitland Bottoms Mon, 01 Jul 2013 06:51:25 -0400 + +gnuradio (3.7.0~rc0-1) experimental; urgency=low + + * New upstream release candidate + * This is a snapshot of the repository master branch at tag v3.7.0rc0, + and is intended for final testing by users. + + As this is not a formal release, it is not accompanied by release + notes. The full list of changes between the 3.6 and 3.7 APIs will be + made available at the time of 3.7.0 release. + + It does indicate, however, that the 3.7 API is now frozen and we will + only be merging bug fixes into the source code until the final + release. + + -- A. Maitland Bottoms Fri, 21 Jun 2013 09:51:22 -0400 + +gnuradio (3.6.5-1) unstable; urgency=low + + * New upstream release + * Important new features (3.6.5): + + New OFDM PHY layer (Martin Braun, Ben Reynwar) + This release includes new OFDM PHY layer blocks in gr-digital. These + have been rewritten from scratch to allow more configurability and to use + some of the newer GNU Radio features (stream tags, async messages). Some + work remains to tie these into a full over-the-air transceiver, so further + development will be happening in the GNU Radio 3.7.x release series. + + * New runtime logging capability (Tom Rondeau) + GNU Radio has a logging interface to enable various levels of logging + information to be printed to the console or a file. The logger derives + from log4cpp (http://log4cpp.sourceforge.net/) which is readily + available in most Linux distributions. This is an optional dependency + and GNU Radio will work without it. See: + http://gnuradio.org/cgit/gnuradio.git/tree/docs/doxygen/other/logger.dox + + * Minor features/changes (3.6.5): + build: git now ignores the build/ directory (Ben Hilburn) + build: create and install a config.h for external projects (Tom Rondeau) + build: install our cmake modules into share/gnuradio/cmake/Modules + (Tom Rondeau) + blocks: fixed udp_source to avoid permanent work blockage (Josh Blum) + blocks: added proper EOF for msg tags test (Josh Blum) + blocks: added gr::blocks::socket_pdu (Tim O'Shea) + blocks: added gr::blocks::taptun_pdu (Tim O'Shea) + blocks: added gr::blocks::pdu_to_tagged_stream (Tim O'Shea) + blocks: added gr::blocks::tagged_stream_to_pdu (Tim O'Shea) + blocks: added default arg value to mute_XX (Tim O'Shea) + blocks: added probe_rate block (Tim O'Shea) + blocks: fixed probe_signal_vx vector utilisation (Mike Jameson) + blocks: fixed XML data type in gr::blocks::deinterleave (Miklos Maroti) + docs: updated pfb introduction (Ben Reynwar) + digital: added option to QAM to help with frequency locking (Ben Reynwar) + digital: made qa_constellation_receiver more reliable (Ben Reynwar) + digital: added QAM32-like constellation (Ben Reynwar) + filter: added callback to adjust resampling rate of pfb_arb_resampler + block (Tom Rondeau) + filter: added fractional_resampler as a renamed + fractional_interpolator (Tom Rondeau) + grc: added sorting ability to GRC category tree (Gregory Warnes) + grc: made 'float' an acceptable alias to 'real' in parameter types + (Tom Rondeau) + modtool: added tagged_stream block as an option (Martin Braun) + modtool: fixed general python block template (Mike Jameson) + uhd: added a usrp PC sync option (Josh Blum) + uhd: added getters for bandwidth setting and range (Josh Blum) + uhd: updated usrp_spectrum_sense with frequency readout (Mike Jameson) + + -- A. Maitland Bottoms Mon, 27 May 2013 15:28:27 -0400 + +gnuradio (3.6.4.2-1) unstable; urgency=low + + * New upstream release + * Bug fixes: + docs: fixed QT docs keywords (Ben Reynwar) + blocks: fixed XML wrapper for gr::blocks::complex_to_real (Johnathan Corgan) + blocks: fixed file meta data source to handle repeat of files (Tom Rondeau) + blocks: fixed XML data type in gr::blocks::plateau_detector_fb + (Johnathan Corgan) + digital: fixed virtual destructor for constellation class (Tom Rondeau) + digital: fixed SNR estimators (Tom Rondeau) + filter: fixed pfb_arb_resampler XML for I/O types (Johnathan Corgan) + filter: fixed exception when using interpolating filter with no taps + (Tom Rondeau) + filter: fixed pfb_arb_resampler to handle default taps (None) case + (Tom Rondeau) + grc: fixed (removed) "c" key shortcut for create heir action (Tim O'Shea) + grc: fixed problem with order of message ports vs. data ports (Tom Rondeau) + runtime: fixed thread safety issue with tags and perf counters (Tim O'Shea) + runtime: fixed gr types for setting processor affinity (Tom Rondeau) + runtime: fixed swig issue with affinity mask vector (Tom Rondeau) + modtool: fixed gr-modtool template output signature (Johnathan Corgan) + modtool: fixed case when module name ends in 0 (Martin Braun) + modtool: fixed typo in help string (Tim Monahan-Mitchell) + modtool: fixed wording in modtool for 'float' sink/source type (Tom Rondeau) + modtool: fixed some setup for noblock gen (Tom Rondeau) + modtool: fixed initial templates of a block (Tom Rondeau) + pkg: fixed packages for Ubuntu 13.04 (Nicholas Corgan) + qtgui: fixed init FFT Size box for QTGUI sink (Tom Rondeau) + video-sdl: fixed typo in .pc file (Johnathan Corgan) + volk: fixed CentOS build failure with extra lib64 in path (Johnathan Corgan) + wxgui: fixed GL sinks issues on OS X (Balint Seeber) + wxgui: fixed set_callback failure in nongl sinks (Marcus Leech) + wxgui: fixed scaling issue of nongl FFT plot (issue #523) (Tom Rondeau) + + -- A. Maitland Bottoms Mon, 27 May 2013 00:28:52 -0400 + +gnuradio (3.6.4.1-1) unstable; urgency=low + + * New upstream release + * Bug fixes: + core: fixed filename path operator (Tim O'Shea) + core: fixed async message queue max length (Tom Rondeau) + docs: fixed missing gr-uhd to sphinx docs. (Ben Reynwar) + docs: fixed a section name collision (Tom Rondeau) + modtool: fixed Python general blocks syntax (Martin Braun) + modtool: fixed general python block template (Mike Jameson) + modtool: fixed extra comma bug in gr_modtool Python (Tom Rondeau) + volk: fixed MSVC include directory (Nicholas Corgan) + + -- A. Maitland Bottoms Tue, 19 Mar 2013 17:12:54 -0400 + +gnuradio (3.6.4-1) unstable; urgency=low + + * Include arm build fix from Peter Michael Green (Closes: #682595) + * Include debian/watch file by Bart Martens + * postinst, do not specify --theme for xdg-icon-resource (Closes: #673597) + * gnuradio-dev depends on same version of gnuradio (Closes: #678919) + * fix debian/control format (Closes: #689357) + * New upstream release + http://gnuradio.org/redmine/projects/gnuradio/wiki/ChangeLogV3_6_4 + + Ability to set processor affinity for GNU Radio blocks + http://www.trondeau.com/home/2013/2/7/block-core-affinity.html + + Inclusion of gr_modtool by Martin Braun + http://gnuradio.org/redmine/projects/gnuradio/wiki/OutOfTreeModules + + Use of GNU Radio preferences in native C++ applications + http://gnuradio.org/cgit/gnuradio.git/commit/?id=3643a858 + + Addition of GNU Radio block performance counters + http://gnuradio.org/redmine/projects/gnuradio/wiki/PerformanceCounters + + -- A. Maitland Bottoms Tue, 26 Feb 2013 21:44:34 -0500 + +gnuradio (3.6.3.1-1) experimental; urgency=low + + * New upstream bugfix release + analog: fixed floating point accuracy issue in CTCSS squelch (Tom Rondeau) + blocks: fixed use of bare boost::mutex::scoped_lock (Johnathan Corgan) + blocks: fixed missing include in file_source_impl (Josh Blum) + cmake: fixed chrono as a necessary Boost library under MSVC (Nicholas Corgan) + cmake: allow user to override check for bad versions of boost (Tom Rondeau) + cmake: disable certain buggy Boost versions to fix Issue #513. (Tom Rondeau) + cmake: fixing generated includes, deps, and header installation. + core: fixed gr_pdu_to_tagged_stream XML for type (Johnathan Corgan) + core: fixed gr_message_debug for printing PDUs (Johnathan Corgan) + core: fixed missing include in gr_socket_pdu (Josh Blum) + core: fixed missing include for gruel thread (Josh Blum) + core: fixed redundant test settings (Josh Blum) + core: fixed gr_random_pdu MSVC incompatibility issue (Nicholas Corgan) + core: fixed missing include to gr_block_registry.h (Tim O'Shea) + digital: fixed bug in digital_bert_rx.py (Ben Reynwar)(thanks Charles Ru) + digital: fixed pfb_clock_sync grc xml file for loop bandwidth (Ben Reynwar) + filter: fixed synthesis filter output rate (Tom Rondeau) + grc: fixed failing drag-n-drop in GRC on Windows (Balint Seeber) + grc: fixed Bug #485 by gracefully exiting (Martin Braun) + howto: fixed block parameters documentation (Julien Olivain) + uhd: fixed gain defaults in usrp_wfm_rcv*.py examples (Mike Jameson) + uhd: fixed default midpoint gain for usrp_am_mw_rcv.py example (Mike Jameson) + uhd: fixed usrp_nbfm_ptt.py example receive path (Mike Jameson) + uhd: fixed audio_alsa_sink busy using default in examples (Mike Jameson) + volk: fixed bad find_package missing components (Josh Blum) + volk: fixed cmake, the profiler is no longer strictly unix (Josh Blum) + volk: fixed volk_profile MSVC incompatibility (Nicholas Corgan) + + -- A. Maitland Bottoms Tue, 26 Feb 2013 20:14:48 -0500 + +gnuradio (3.6.3-2) experimental; urgency=low + + * postinst, do not specify --theme gnome for xdg-icon-resource (673597) + * gnuradio-dev depends on same version of gnuradio (678919) + * Debian build uses generic arm, not v7 (682595) + * fix debian/control format (689357) + * build with portaudio19-dev and libjack-jackd2-dev + (in addition to pulseaudio and alsa) + + -- A. Maitland Bottoms Sun, 10 Feb 2013 10:37:05 -0500 + +gnuradio (3.7git-1) experimental; urgency=low + + * New upstream next git branch ba015f + * Build with ZeroC's Ice, the Internet Communications Engine + * new components gr-channels, gr-ctrlport, gr-fec + * new executables: + gr_constellation_plot + gr_psd_plot_[bcfis] + gr_spectrogram_plot_[bcfis] + gr_time_plot_[bcfis] + + -- A. Maitland Bottoms Mon, 04 Feb 2013 12:15:28 -0500 + +gnuradio (3.6.3-1) experimental; urgency=low + + * New upstream release + Bug fixes: + Overhaul of cmake include directory ordering (Michael Dickens) + Fixed use of default noise seed in channel model (Alick Zhao) + Fixed file_meta_source/sink incompatibilities with MSVC (Nicholas Corgan) + Fixed some unused parameter warnings (Alexandru Csete) + + -- A. Maitland Bottoms Mon, 28 Jan 2013 00:10:46 -0500 + +gnuradio (3.6.3~rc0-1) experimental; urgency=low + + * New upstream release + * Addition/upgrade of message passing infrastructure (Tim O'Shea, Tom + Rondeau, Johnathan Corgan, Josh Blum) + + This introduces the ability to add and connect formally defined + asychronous message ports to signal processing blocks and + hierarchical blocks. These message ports can be connected to pass + asynchronous data in the form of PMTs (polymorphic types) among + blocks in a flowgraph. It is also possible to implement pure + message passing blocks that have no requirement for streaming + ports or work functions. + + We've also introduced the concept of PDUs (Protocol Data Units) as + a convention for passing data+metadata using the new messaging + ports. A PDU is a PMT pair that combines a PMT dictionary of + metadata keys/values along with a PMT blob to hold a vector of + data in memory. + + A few new general purpose blocks supporting these capabilties are + in gnuradio-core: + + gr_message_debug + gr_message_strobe + gr_tagged_stream_to_pdu + gr_pdu_to_tagged_stream + + Two new blocks for interfacing with networking stacks using the + new PDU semantics: + + gr_socket_pdu + gr_tuntap_pdu + + This new message passing capability and PDU convention is aimed at + providing the infrastructure to better support software radio + implementations using packet-oriented semantics, such as MAC-layer + processing. + + * Addition of new Python-based signal processing blocks (Josh Blum) + + This feature, originally introduced by Josh Blum as part of + GrExtras, allows implementing signal processing blocks directly in + Python, and has now become a standard feature of GNU Radio. + + * Addition of gr-analog top-level component (Tom Rondeau) + + This implements the current gnuradio-core signal processing blocks + used for analog signal processing into their own top-level + component, gr-analog, and uses the new 3.7 API organization. The + original blocks in gnuradio-core will be removed on the 3.7 branch + prior to 3.7 release. + + * Addition of gr-blocks top-level component (Johnathan Corgan) + + This implements a large portion of the gnuradio-core non-signal + processing blocks in the 3.7 API form. The original blocks in + gnuradio-core will be removed on the 3.7 branch prior to 3.7 + release. + + * Metadata file source and sink blocks (Tom Rondeau) + + Two new blocks implement enhanced file source and sink blocks that + incorporate metadata passed using the stream tags feature in GNU + Radio. It is now possible to store things like frequency and + sample rate into capture files, or whatever key/value pairs you + tag onto data streams inside a flowgraph. + + http://www.trondeau.com/home/2012/12/15/metadata-file-format.html + + * GNU Radio buffer latency control (Tim O'Shea, Tom Rondeau) + + For finer-grained control over latency inside a GNU Radio + flowgraph, it is now possible to adjust, on a per-block basis, the + maximum noutput_items that will be used to call a block work + function. In addition, it is possible to set the maximum size an + output buffer can grow to before a work function is called. + + * New GNU Radio Companion (GRC) capabilities + + Added optional flag to pad source and sink (Josh Blum) + Added wildcard type to pad source and sink (Josh Blum) + Added ability to reload XML for block (Tim O'Shea) + Added ability to automatically create hier_blocks + from a flowgraph (Tim Newman) + Added ability to open custom GRC hier block definitions (Tim O'Shea) + Added new grcc command line GRC-to-Python utility (Tom Rondeau) + + * New Documentation Updates (Tom Rondeau) + + We are introducing documentation into the Doxygen manual + describing features and capabilities of GNU Radio, above and + beyond just documenting the API functions. Tom Rondeau has + written about this here: + + http://www.trondeau.com/home/2012/12/18/new-documentation-for-new-features.html + + Some examples of commits where this has been done: + + gnuradio.org/cgit/gnuradio.git/commit/?id=77ea309 (PMT type usage) + gnuradio.org/cgit/gnuradio.git/commit/?id=a21c5f7 (Message passing interface) + gnuradio.org/cgit/gnuradio.git/commit/?id=996e599 (Metatdata format) + gnuradio.org/cgit/gnuradio.git/commit/?id=5fcb7eb (Max output buffer control) + + * Other new features: + + Allow file source to open new files while running (Brett L. Trotter) + Allow source blocks to return none/yield (Josh Blum) + Improved capabilities of uhd_fft.grc example in gr-uhd (Ben Hilburn) + Added parameter in qtgui sink's GRC block + to set the update rate (Julien Olivain) + Added source block hook in gr-uhd for issue stream cmd (Josh Blum) + Added cmake package support for Ubuntu 12.10 (Nicholas Corgan) + Added gr::blocks::patterned_interleaver (Tim O'Shea) + Allow user to set Python path during cmake configuration (Tom Rondeau) + Enabled serialize/deserialize for PMT vectors (Tom Rondeau) + Added unsigned long long int support to the PMT sugar functions (Tom Rondeau) + Allow using pmt_init_Xvector methods in python (Tom Rondeau) + Bug fixes: + + * Numerous cmake related bug-fixes (Josh Blum, Johnathan Corgan, Tom Rondeau) + Fixed parallel build failures in cmake (Tom Rondeau) + Fixed segfaults due to old, no longer nedded SWIG workaround (Tom Rondeau) + Fixed memory leak issue in arbitrary resampler blocks (Tom ROndeau) + Fixed use of default noise seed in channel model (Alick Zhao) + Fixed scaling bug in QAM constellations (Ben Reynwar) + Fixed installation of grc examples (Johnathan Corgan) + Fixed finding Qwt6 installed on OSX using MacPorts (Ben Reynwar) + Fixed implicit assumption in skiphead (Josh Blum) + Fixed include tag include usage throughout core (Josh Blum) + Fixed incorrect private usage in gr_endian_swap (Josh Blum) + Fixed segfault in gr-filter due to memory free bug (Josh Blum) + Fixed UHD pmt tuple ref namespace issue (Josh Blum) + Fixed gr_tag_debug to handle lacking srcid (Martin Braun) + Fixed gr-analog for 'sincos(f)' on MacOSX (Michael Dickens) + Fixed gr-analog build issues on Windows (Nicholas Corgan) + Fixed qtgui time sink to take the bandwidth parameter + to set x-axis correctly (Tom Rondeau) + Fixed float-in, complex-out fft block to use the right io sig (Tom Rondeau) + Fixed Clang imcompatibility by removing '.version' lines + in ASM code in core (Tom Rondeau) + + * Contributors this release: + + Alick Zhao + Ben Hilburn + Ben Reynwar + Brett L. Trotter + Johnathan Corgan + Josh Blum + Julien Olivain + Martin Braun + Michael Dickens + Nicholas Corgan + Tim O'Shea + Tim Newman + Tom Rondeau + + -- A. Maitland Bottoms Wed, 26 Dec 2012 18:56:06 -0500 + +gnuradio (3.6.2-1) experimental; urgency=low + + * New upstream release + * Build system changes + + Added support for setting SYSCONFDIR + + * Top-level component changes + + A new top-level component, gr-filter, has been created. This component + implements all the filter-related functionality that is in + gnuradio-core, and uses the new style 3.7 API. The filter blocks in + gnuradio-core are now deprecated; but will remain in gnuradio-core + until the 3.7 release. Developers are encouraged to begin using the + new blocks in preparation. + + * New signal processing blocks + + gr_and_const_bb: adds bb type to gr_and_const* block + gr_annotator_raw: allows tagging stream with pmt key, value pair from + outside GNU Radio + gr_endian_swap: change item endianness through block + gr_message_burst_source: turn received messages into a stream and tag them + gr_tag_debug: debug display of all tags going through block` + digital_gfsk_demod, digital_gfsk_mod: Gaussian Frequency Shift Keying + modulator and demodulator + + * New feature additions + + Support has now been added for ARM processors that do not implement + NEON. gr-uhd has added rx tagging for changes in sample rate and + center frequency. + Added support for serializing pmt tuples + Added BER/SNR simulation example + Removed gruel dependency on inet.h + + * Bug fixes + + core: fix minor bug in gri_wavefile endian swapping + core: only check for *.conf in preferences directory + digital: fixed incorrect variable name in qam_demod XML + digital: fix FLL block to use fir_filter + digital: remove unused parameter from DPSK demod GRC block + digital: fix use of Gray code in digital mod/demod GRC files + fcd: fix copy and paste error in documentation + uhd: fix stopping flowgraph while streaming + volk: don't initialize zero phase in rotator kernel + volk: don't use ORC for volk_16u_byteswap_u kernel + volk: add missing AVX support in volk_32f_x2_dot_prod_32f kernels + volk: fix __m128 cast in volk_32fc_x2_dot_prod_32fc_a kernel + volk: fix volk_32f_x2_dot_prod_32f_u_sse tail case + volk: use loadu for unaligned volk_32f_x2_dot_prod_32f_u_sse* + volk: fix for win64 MSVC not having MMX support + volk: special werror unused cmd line arg for clang + + * Contributors + + Ben Reynwar + Chí-Thanh Christopher Nguyễn + Hendrik van Wyk + Jaroslav Skarvada + Johnathan Corgan + Josh Blum + Martin Braun + Nicholas Corgan + Nick Foster + Tim O'Shea + Tom Rondeau + Wayne Roberts + + -- A. Maitland Bottoms Wed, 05 Sep 2012 23:56:07 -0400 + gnuradio (3.6.1-1) unstable; urgency=low * New upstream release diff -Nru gnuradio-3.6.1/debian/compat gnuradio-3.7.1/debian/compat --- gnuradio-3.6.1/debian/compat 2012-05-10 01:16:14.000000000 +0000 +++ gnuradio-3.7.1/debian/compat 2012-09-16 19:59:07.000000000 +0000 @@ -1 +1 @@ -8 +9 diff -Nru gnuradio-3.6.1/debian/control gnuradio-3.7.1/debian/control --- gnuradio-3.6.1/debian/control 2012-06-11 19:02:43.000000000 +0000 +++ gnuradio-3.7.1/debian/control 2013-09-10 11:47:40.000000000 +0000 @@ -7,8 +7,8 @@ Priority: optional Maintainer: A. Maitland Bottoms Uploaders: Bdale Garbee -Build-Depends: debhelper (>= 9.0.0~), cmake, libuhd-dev, libasound2-dev, libjack-dev, libxi-dev, libfontconfig1-dev, libxrender-dev, libpulse-dev, libcomedi-dev, swig (>=1.3.31), python-dev, libfftw3-dev, libcppunit-dev (>=1.9.14), libboost-all-dev (>=1.35), libusb-1.0-0-dev [linux-any], libusb2-dev [kfreebsd-any], liborc-0.4-dev, liboil0.3-dev, libsdl1.2-dev, python-wxgtk2.8, guile-1.8-dev, libqt4-dev, python-numpy, python-opengl, libgsl0-dev (>=1.10), python-cheetah, python-lxml, python-sphinx, doxygen, xmlto, qt4-dev-tools, libqwt5-qt4-dev, libqwtplot3d-qt4-dev, pyqt4-dev-tools, python-qwt5-qt4, python-gtk2-dev, pkg-config (>=0.15.0), libgsm1-dev -Standards-Version: 3.9.3 +Build-Depends: debhelper (>= 9.0.0~), cmake, libuhd-dev, libasound2-dev, libjack-jackd2-dev, portaudio19-dev, libxi-dev, libfontconfig1-dev, libxrender-dev, libpulse-dev, libcomedi-dev, swig (>=1.3.31), python-dev, libfftw3-dev, libcppunit-dev (>=1.9.14), libboost-all-dev (>=1.35), libusb-1.0-0-dev [linux-any], libusb2-dev [kfreebsd-any], liborc-0.4-dev, liboil0.3-dev, libsdl1.2-dev, python-wxgtk2.8, guile-1.8-dev, libqt4-dev, python-numpy, python-opengl, libgsl0-dev (>=1.10), python-cheetah, python-lxml, python-sphinx, doxygen, xmlto, qt4-dev-tools, libqwt5-qt4-dev, libqwtplot3d-qt4-dev, pyqt4-dev-tools, python-qwt5-qt4, python-gtk2-dev, pkg-config (>=0.15.0), libgsm1-dev, libzeroc-ice35-dev, ice35-translators, python-zeroc-ice, liblog4cpp5-dev +Standards-Version: 3.9.4 Vcs-Git: git://anonscm.debian.org/users/bottoms/pkg-gnuradio.git Vcs-Browser: http://anonscm.debian.org/gitweb/?p=users/bottoms/pkg-gnuradio.git;a=summary X-Python-Version: =2.7 @@ -19,7 +19,7 @@ Package: gnuradio Architecture: any -Depends: ${python:Depends}, python-opengl, python-lxml, python-wxgtk2.8, python-cheetah, adduser, ${shlibs:Depends}, ${misc:Depends} +Depends: ${python:Depends}, python-opengl, python-lxml, python-wxgtk2.8, python-cheetah, adduser, ${shlibs:Depends}, ${misc:Depends}, libvolk0.0.0 (=${binary:Version}) Recommends: python-qt4, python-qwt5-qt4, python-scipy, python-matplotlib, uhd-host, python-tk, qthid-fcd-controller Description: GNU Radio Software Radio Toolkit GNU Radio provides signal processing blocks to implement software @@ -56,11 +56,22 @@ Section: libdevel Architecture: any Pre-Depends: multiarch-support, ${misc:Pre-Depends} -Depends: ${misc:Depends} +Depends: gnuradio (= ${binary:Version}), ${misc:Depends} Description: GNU Software Defined Radio toolkit development Header files for the GNU Radio software defined radio system. -Package: libgnuradio-atsc3.6.1 +Package: libgnuradio-analog3.7.1 +Section: libs +Architecture: any +Pre-Depends: multiarch-support, ${misc:Pre-Depends} +Depends: ${shlibs:Depends}, ${misc:Depends} +Multi-Arch: same +Description: gnuradio analog functions + Library for handling analog signal processing functions. + These functions are also in gnuradio-core. + Part of the main gnuradio build. + +Package: libgnuradio-atsc3.7.1 Section: libs Architecture: any Pre-Depends: multiarch-support, ${misc:Pre-Depends} @@ -71,7 +82,7 @@ signals such as those used for digital television broadcast in North America. Part of the main gnuradio build. -Package: libgnuradio-audio3.6.1 +Package: libgnuradio-audio3.7.1 Section: libs Architecture: any Pre-Depends: multiarch-support, ${misc:Pre-Depends} @@ -84,7 +95,7 @@ automatically discover the correct one to use. Part of the main gnuradio build. -Package: libgnuradio-comedi3.6.1 +Package: libgnuradio-comedi3.7.1 Section: libs Architecture: any Pre-Depends: multiarch-support, ${misc:Pre-Depends} @@ -95,17 +106,29 @@ supported by the Comedi library and drivers. Part of the main gnuradio build. -Package: libgnuradio-core3.6.1 +Package: libgnuradio-blocks3.7.1 +Section: libs +Architecture: any +Pre-Depends: multiarch-support, ${misc:Pre-Depends} +Depends: ${shlibs:Depends}, ${misc:Depends} +Multi-Arch: same +Description: gnuradio blocks functions + Some non-signal processing blocks. + These functions are also in gnuradio-core. + Part of the main gnuradio build. + +Package: libgnuradio-channels3.7.1 Section: libs Architecture: any Pre-Depends: multiarch-support, ${misc:Pre-Depends} Depends: ${shlibs:Depends}, ${misc:Depends} Multi-Arch: same -Description: gnuradio core functions - Core signal processing math and process scheduling library. +Description: gnuradio channels functions + Some channel oriented processing blocks. + These functions are also in gnuradio-core. Part of the main gnuradio build. -Package: libgnuradio-digital3.6.1 +Package: libgnuradio-digital3.7.1 Section: libs Architecture: any Pre-Depends: multiarch-support, ${misc:Pre-Depends} @@ -116,7 +139,17 @@ including bpsk, qpsk, gmsk and ofdm signals. Part of the main gnuradio build. -Package: libgnuradio-fcd3.6.1 +Package: libgnuradio-fec3.7.1 +Section: libs +Architecture: any +Pre-Depends: multiarch-support, ${misc:Pre-Depends} +Depends: ${shlibs:Depends}, ${misc:Depends} +Multi-Arch: same +Description: gnuradio forward error correction support + Handle forward error correction processing in gnuradio. + Part of the main gnuradio build. + +Package: libgnuradio-fcd3.7.1 Section: libs Architecture: any Pre-Depends: multiarch-support, ${misc:Pre-Depends} @@ -131,7 +164,16 @@ . Part of the main gnuradio build. -Package: libgnuradio-fft3.6.1 +Package: libgnuradio-filter3.7.1 +Section: libs +Architecture: any +Pre-Depends: multiarch-support, ${misc:Pre-Depends} +Depends: ${shlibs:Depends}, ${misc:Depends} +Multi-Arch: same +Description: gnuradio filter functions + Library of filter blocks used in gnuradio. + +Package: libgnuradio-fft3.7.1 Section: libs Architecture: any Pre-Depends: multiarch-support, ${misc:Pre-Depends} @@ -140,7 +182,7 @@ Description: gnuradio fast Fourier transform functions Library for Fourier transform techniques used in gnuradio. -Package: libgnuradio-noaa3.6.1 +Package: libgnuradio-noaa3.7.1 Section: libs Architecture: any Pre-Depends: multiarch-support, ${misc:Pre-Depends} @@ -151,7 +193,7 @@ Administration High Rate Picture Transmission) signals. Part of the main gnuradio build. -Package: libgnuradio-pager3.6.1 +Package: libgnuradio-pager3.7.1 Section: libs Architecture: any Pre-Depends: multiarch-support, ${misc:Pre-Depends} @@ -161,7 +203,19 @@ Library for handling pager signals, including FLEX protocol data. Part of the main gnuradio build. -Package: libgnuradio-qtgui3.6.1 +Package: libgnuradio-pmt3.7.1 +Section: libs +Architecture: any +Pre-Depends: multiarch-support, ${misc:Pre-Depends} +Depends: ${shlibs:Depends}, ${misc:Depends} +Multi-Arch: same +Description: gnuradio pmt container library + Polymorphic Types are opaque data types that are designed as generic + containers of data that can be safely passed around between blocks + and threads in GNU Radio. + Part of the main gnuradio build. + +Package: libgnuradio-qtgui3.7.1 Section: libs Architecture: any Pre-Depends: multiarch-support, ${misc:Pre-Depends} @@ -171,7 +225,17 @@ QT-based graphical sinks for gnuradio applications. Part of the main gnuradio build. -Package: libgnuradio-trellis3.6.1 +Package: libgnuradio-runtime3.7.1 +Section: libs +Architecture: any +Pre-Depends: multiarch-support, ${misc:Pre-Depends} +Depends: ${shlibs:Depends}, ${misc:Depends} +Multi-Arch: same +Description: gnuradio core runtime + Top level component library. + Part of the main gnuradio build. + +Package: libgnuradio-trellis3.7.1 Section: libs Architecture: any Pre-Depends: multiarch-support, ${misc:Pre-Depends} @@ -181,7 +245,7 @@ Library for trellis coding modulation, including the Vitterbi Algorithm. Part of the main gnuradio build. -Package: libgnuradio-uhd3.6.1 +Package: libgnuradio-uhd3.7.1 Section: libs Architecture: any Pre-Depends: multiarch-support, ${misc:Pre-Depends} @@ -193,7 +257,7 @@ including the USRP family of software radio periphal devices. Part of the main gnuradio build. -Package: libgnuradio-video-sdl3.6.1 +Package: libgnuradio-video-sdl3.7.1 Section: libs Architecture: any Pre-Depends: multiarch-support, ${misc:Pre-Depends} @@ -203,7 +267,7 @@ Library for handling SDL (Simple DirectMedia Layer) video data. Part of the main gnuradio build. -Package: libgnuradio-vocoder3.6.1 +Package: libgnuradio-vocoder3.7.1 Section: libs Architecture: any Pre-Depends: multiarch-support, ${misc:Pre-Depends} @@ -213,7 +277,7 @@ Library of vocoder blocks, including ulaw, alaw, gsm and codec2. Part of the main gnuradio build. -Package: libgnuradio-wavelet3.6.1 +Package: libgnuradio-wavelet3.7.1 Section: libs Architecture: any Pre-Depends: multiarch-support, ${misc:Pre-Depends} @@ -223,16 +287,15 @@ Library of Daubechies wavelet function blocks. Part of the main gnuradio build. -Package: libgruel3.6.1 +Package: libgnuradio-wxgui3.7.1 Section: libs Architecture: any Pre-Depends: multiarch-support, ${misc:Pre-Depends} Depends: ${shlibs:Depends}, ${misc:Depends} Multi-Arch: same -Description: gnuradio utilities etcetera functions - The GNU Radio Utility Etcetera Library, a collection of low-level - routines to avoid dependencies on the full GNU Radio core or other - libraries. Part of the main gnuradio build. +Description: gnuradio wxgui functions + Graphical user interface support. + Part of the main gnuradio build. Package: libvolk0.0.0 Section: libs diff -Nru gnuradio-3.6.1/debian/copyright gnuradio-3.7.1/debian/copyright --- gnuradio-3.6.1/debian/copyright 2012-06-11 17:34:59.000000000 +0000 +++ gnuradio-3.7.1/debian/copyright 2013-08-30 03:49:57.000000000 +0000 @@ -2,8 +2,7 @@ Upstream-Name: gnuradio Upstream-Contact: http://gnuradio.org/ Source: - The upstream package source tarball was generated from the tag: - git archive --format=tar --prefix=gnuradio-3.6.1/ v3.6.1 | gzip > ../gnuradio_3.6.1.orig.tar.gz + http://gnuradio.org/releases/gnuradio/gnuradio-3.7.1.tar.gz Comment: Packages of versions 3.4 and up by A. Maitland Bottoms , GNU Radio was re-packaged by Bdale Garbee to reflect diff -Nru gnuradio-3.6.1/debian/gnuradio-dev.install gnuradio-3.7.1/debian/gnuradio-dev.install --- gnuradio-3.6.1/debian/gnuradio-dev.install 2012-04-18 01:20:21.000000000 +0000 +++ gnuradio-3.7.1/debian/gnuradio-dev.install 2013-07-30 16:15:07.000000000 +0000 @@ -1,3 +1,4 @@ usr/include usr/lib/*/*.so usr/lib/*/pkgconfig/*.pc +usr/lib/cmake/gnuradio diff -Nru gnuradio-3.6.1/debian/gnuradio.manpages gnuradio-3.7.1/debian/gnuradio.manpages --- gnuradio-3.6.1/debian/gnuradio.manpages 2012-05-09 17:31:20.000000000 +0000 +++ gnuradio-3.7.1/debian/gnuradio.manpages 2013-08-31 01:58:58.000000000 +0000 @@ -4,7 +4,9 @@ debian/create-gnuradio-out-of-tree-project.1 debian/fcd_nfm_rx.1 debian/file_rx_hrpt.1 +debian/grcc.1 debian/gr_filter_design.1 +debian/gr_modtool.1 debian/gr_plot_char.1 debian/gr_plot_const.1 debian/gr_plot_fft.1 @@ -18,6 +20,7 @@ debian/gr_plot_psd_f.1 debian/gr_plot_qt.1 debian/gr_plot_short.1 +debian/gr_read_file_metadata.1 debian/hrpt_decode.1 debian/hrpt_demod.1 debian/tags_demo.1 @@ -32,3 +35,4 @@ debian/usrp_rx_hrpt.1 debian/usrp_rx_hrpt_nogui.1 debian/volk_profile.1 +debian/volk_modtool.1 diff -Nru gnuradio-3.6.1/debian/gnuradio.postinst gnuradio-3.7.1/debian/gnuradio.postinst --- gnuradio-3.6.1/debian/gnuradio.postinst 2012-05-09 18:40:19.000000000 +0000 +++ gnuradio-3.7.1/debian/gnuradio.postinst 2013-08-31 01:28:04.000000000 +0000 @@ -28,14 +28,14 @@ echo "Begin freedesktop install..." for size in ${ICON_SIZES}; do \ echo "Install icon: ${size}x${size}" - xdg-icon-resource install --noupdate --context mimetypes --theme gnome --size ${size} ${SRCDIR}/grc-icon-${size}.png application-gnuradio-grc; \ - xdg-icon-resource install --noupdate --context mimetypes --size ${size} ${SRCDIR}/grc-icon-${size}.png application-gnuradio-grc; \ - xdg-icon-resource install --noupdate --context apps --theme gnome --size ${size} ${SRCDIR}/grc-icon-${size}.png gnuradio-grc; \ - xdg-icon-resource install --noupdate --context apps --size ${size} ${SRCDIR}/grc-icon-${size}.png gnuradio-grc; \ + xdg-icon-resource install --noupdate --context mimetypes --theme gnome --size ${size} ${SRCDIR}/grc-icon-${size}.png application-gnuradio-grc || true; \ + xdg-icon-resource install --noupdate --context mimetypes --size ${size} ${SRCDIR}/grc-icon-${size}.png application-gnuradio-grc || true; \ + xdg-icon-resource install --noupdate --context apps --theme gnome --size ${size} ${SRCDIR}/grc-icon-${size}.png gnuradio-grc || true; \ + xdg-icon-resource install --noupdate --context apps --size ${size} ${SRCDIR}/grc-icon-${size}.png gnuradio-grc || true; \ done -xdg-icon-resource forceupdate +xdg-icon-resource forceupdate || true echo "Install mime type" -xdg-mime install ${SRCDIR}/gnuradio-grc.xml +xdg-mime install ${SRCDIR}/gnuradio-grc.xml || true echo "Install menu items" xdg-desktop-menu install ${SRCDIR}/*.desktop || true echo "Done!" diff -Nru gnuradio-3.6.1/debian/gnuradio.prerm gnuradio-3.7.1/debian/gnuradio.prerm --- gnuradio-3.6.1/debian/gnuradio.prerm 2012-05-09 18:41:16.000000000 +0000 +++ gnuradio-3.7.1/debian/gnuradio.prerm 2013-08-31 01:26:49.000000000 +0000 @@ -28,14 +28,14 @@ echo "Begin freedesktop uninstall..." for size in ${ICON_SIZES}; do \ echo "Uninstall icon: ${size}x${size}" - xdg-icon-resource uninstall --noupdate --context mimetypes --theme gnome --size ${size} application-gnuradio-grc; \ - xdg-icon-resource uninstall --noupdate --context mimetypes --size ${size} application-gnuradio-grc; \ - xdg-icon-resource uninstall --noupdate --context apps --theme gnome --size ${size} gnuradio-grc; \ - xdg-icon-resource uninstall --noupdate --context apps --size ${size} gnuradio-grc; \ + xdg-icon-resource uninstall --noupdate --context mimetypes --theme gnome --size ${size} application-gnuradio-grc || true; \ + xdg-icon-resource uninstall --noupdate --context mimetypes --size ${size} application-gnuradio-grc || true; \ + xdg-icon-resource uninstall --noupdate --context apps --theme gnome --size ${size} gnuradio-grc || true; \ + xdg-icon-resource uninstall --noupdate --context apps --size ${size} gnuradio-grc || true; \ done -xdg-icon-resource forceupdate +xdg-icon-resource forceupdate || true echo "Uninstall mime type" -xdg-mime uninstall ${SRCDIR}/gnuradio-grc.xml +xdg-mime uninstall ${SRCDIR}/gnuradio-grc.xml || true echo "Uninstall menu items" xdg-desktop-menu uninstall `ls ${SRCDIR}/*.desktop | xargs -n1 basename` || true echo "Done!" diff -Nru gnuradio-3.6.1/debian/gr_modtool.1 gnuradio-3.7.1/debian/gr_modtool.1 --- gnuradio-3.6.1/debian/gr_modtool.1 1970-01-01 00:00:00.000000000 +0000 +++ gnuradio-3.7.1/debian/gr_modtool.1 2013-08-31 01:58:25.000000000 +0000 @@ -0,0 +1,16 @@ +.TH GNURADIO "1" "August 2013" "gr_modtool 3.7" "User Commands" +.SH NAME +gr-modtool \- The swiss army knife of module editing +.SH DESCRIPTION +When developing a module, there's a lot of boring, monotonous work +involved: boilerplate code, makefile editing etc. gr-modtool is a +script which aims to help with all these things by automatically +editing makefiles, using templates and doing as much work as possible +for the developer, such that you can jump straight into the DSP +coding. +.P +Note that gr-modtool makes a lot of assumptions on what the code looks +like. The more your module is custom and has specific changes, the +less useful gr-modtool becomes. +.SH SEE ALSO +http://gnuradio.org/redmine/projects/gnuradio/wiki/OutOfTreeModules diff -Nru gnuradio-3.6.1/debian/gr_read_file_metadata.1 gnuradio-3.7.1/debian/gr_read_file_metadata.1 --- gnuradio-3.6.1/debian/gr_read_file_metadata.1 1970-01-01 00:00:00.000000000 +0000 +++ gnuradio-3.7.1/debian/gr_read_file_metadata.1 2013-01-06 15:18:24.000000000 +0000 @@ -0,0 +1,15 @@ +.TH GR_READ_FILE_METADATA "1" "December 2012" "gr_read_file_metadata 3.6.3" "User Commands" +.SH NAME +gr_read_file_metatdata \- a Gnu Radio Utility +.SH DESCRIPTION +Read in a GNU Radio file with meta data, extracts the header and prints it. +.PP +Metadata file source and sink blocks (Tom Rondeau) +.PP +Two new blocks implement enhanced file source and sink blocks that +incorporate metadata passed using the stream tags feature in GNU +Radio. It is now possible to store things like frequency and +sample rate into capture files, or whatever key/value pairs you +tag onto data streams inside a flowgraph. +.SH "SEE ALSO" +http://www.trondeau.com/home/2012/12/15/metadata-file-format.html diff -Nru gnuradio-3.6.1/debian/grcc.1 gnuradio-3.7.1/debian/grcc.1 --- gnuradio-3.6.1/debian/grcc.1 1970-01-01 00:00:00.000000000 +0000 +++ gnuradio-3.7.1/debian/grcc.1 2013-01-06 05:10:49.000000000 +0000 @@ -0,0 +1,10 @@ +.TH GRCC "1" "December 2011" "grcc 3.6" "User Commands" +.SH NAME +grcc \- Gnu Radio Companion Compiler +.SH DESCRIPTION +Just compile a gnuradio companion flowgraph without invoking the gui. +.PP +Given an input GRC file and an output directory, create a runnable +application in the output directory. +.SH "SEE ALSO" +gnuradio-companion(1) diff -Nru gnuradio-3.6.1/debian/libgnuradio-analog3.7.1.install gnuradio-3.7.1/debian/libgnuradio-analog3.7.1.install --- gnuradio-3.6.1/debian/libgnuradio-analog3.7.1.install 1970-01-01 00:00:00.000000000 +0000 +++ gnuradio-3.7.1/debian/libgnuradio-analog3.7.1.install 2013-08-30 03:47:02.000000000 +0000 @@ -0,0 +1 @@ +usr/lib/*/libgnuradio-analog.so.3.7.1 diff -Nru gnuradio-3.6.1/debian/libgnuradio-atsc3.6.1.install gnuradio-3.7.1/debian/libgnuradio-atsc3.6.1.install --- gnuradio-3.6.1/debian/libgnuradio-atsc3.6.1.install 2012-06-11 17:51:59.000000000 +0000 +++ gnuradio-3.7.1/debian/libgnuradio-atsc3.6.1.install 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -usr/lib/*/libgnuradio-atsc.so.3.6.1 diff -Nru gnuradio-3.6.1/debian/libgnuradio-atsc3.7.1.install gnuradio-3.7.1/debian/libgnuradio-atsc3.7.1.install --- gnuradio-3.6.1/debian/libgnuradio-atsc3.7.1.install 1970-01-01 00:00:00.000000000 +0000 +++ gnuradio-3.7.1/debian/libgnuradio-atsc3.7.1.install 2013-08-30 03:46:57.000000000 +0000 @@ -0,0 +1 @@ +usr/lib/*/libgnuradio-atsc.so.3.7.1 diff -Nru gnuradio-3.6.1/debian/libgnuradio-audio3.6.1.install gnuradio-3.7.1/debian/libgnuradio-audio3.6.1.install --- gnuradio-3.6.1/debian/libgnuradio-audio3.6.1.install 2012-06-11 17:51:55.000000000 +0000 +++ gnuradio-3.7.1/debian/libgnuradio-audio3.6.1.install 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -usr/lib/*/libgnuradio-audio.so.3.6.1 diff -Nru gnuradio-3.6.1/debian/libgnuradio-audio3.7.1.install gnuradio-3.7.1/debian/libgnuradio-audio3.7.1.install --- gnuradio-3.6.1/debian/libgnuradio-audio3.7.1.install 1970-01-01 00:00:00.000000000 +0000 +++ gnuradio-3.7.1/debian/libgnuradio-audio3.7.1.install 2013-08-30 03:46:51.000000000 +0000 @@ -0,0 +1 @@ +usr/lib/*/libgnuradio-audio.so.3.7.1 diff -Nru gnuradio-3.6.1/debian/libgnuradio-blocks3.7.1.install gnuradio-3.7.1/debian/libgnuradio-blocks3.7.1.install --- gnuradio-3.6.1/debian/libgnuradio-blocks3.7.1.install 1970-01-01 00:00:00.000000000 +0000 +++ gnuradio-3.7.1/debian/libgnuradio-blocks3.7.1.install 2013-08-30 03:46:43.000000000 +0000 @@ -0,0 +1 @@ +usr/lib/*/libgnuradio-blocks.so.3.7.1 diff -Nru gnuradio-3.6.1/debian/libgnuradio-channels3.7.1.install gnuradio-3.7.1/debian/libgnuradio-channels3.7.1.install --- gnuradio-3.6.1/debian/libgnuradio-channels3.7.1.install 1970-01-01 00:00:00.000000000 +0000 +++ gnuradio-3.7.1/debian/libgnuradio-channels3.7.1.install 2013-08-30 03:46:36.000000000 +0000 @@ -0,0 +1 @@ +usr/lib/*/libgnuradio-channels.so.3.7.1 diff -Nru gnuradio-3.6.1/debian/libgnuradio-comedi3.6.1.install gnuradio-3.7.1/debian/libgnuradio-comedi3.6.1.install --- gnuradio-3.6.1/debian/libgnuradio-comedi3.6.1.install 2012-06-11 17:51:51.000000000 +0000 +++ gnuradio-3.7.1/debian/libgnuradio-comedi3.6.1.install 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -usr/lib/*/libgnuradio-comedi.so.3.6.1 diff -Nru gnuradio-3.6.1/debian/libgnuradio-comedi3.7.1.install gnuradio-3.7.1/debian/libgnuradio-comedi3.7.1.install --- gnuradio-3.6.1/debian/libgnuradio-comedi3.7.1.install 1970-01-01 00:00:00.000000000 +0000 +++ gnuradio-3.7.1/debian/libgnuradio-comedi3.7.1.install 2013-08-30 03:46:28.000000000 +0000 @@ -0,0 +1 @@ +usr/lib/*/libgnuradio-comedi.so.3.7.1 diff -Nru gnuradio-3.6.1/debian/libgnuradio-core3.6.1.install gnuradio-3.7.1/debian/libgnuradio-core3.6.1.install --- gnuradio-3.6.1/debian/libgnuradio-core3.6.1.install 2012-06-11 17:51:47.000000000 +0000 +++ gnuradio-3.7.1/debian/libgnuradio-core3.6.1.install 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -usr/lib/*/libgnuradio-core.so.3.6.1 diff -Nru gnuradio-3.6.1/debian/libgnuradio-digital3.6.1.install gnuradio-3.7.1/debian/libgnuradio-digital3.6.1.install --- gnuradio-3.6.1/debian/libgnuradio-digital3.6.1.install 2012-06-11 17:51:43.000000000 +0000 +++ gnuradio-3.7.1/debian/libgnuradio-digital3.6.1.install 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -usr/lib/*/libgnuradio-digital.so.3.6.1 diff -Nru gnuradio-3.6.1/debian/libgnuradio-digital3.7.1.install gnuradio-3.7.1/debian/libgnuradio-digital3.7.1.install --- gnuradio-3.6.1/debian/libgnuradio-digital3.7.1.install 1970-01-01 00:00:00.000000000 +0000 +++ gnuradio-3.7.1/debian/libgnuradio-digital3.7.1.install 2013-08-30 03:45:53.000000000 +0000 @@ -0,0 +1 @@ +usr/lib/*/libgnuradio-digital.so.3.7.1 diff -Nru gnuradio-3.6.1/debian/libgnuradio-fcd3.5.3.postinst gnuradio-3.7.1/debian/libgnuradio-fcd3.5.3.postinst --- gnuradio-3.6.1/debian/libgnuradio-fcd3.5.3.postinst 2012-02-19 15:11:51.000000000 +0000 +++ gnuradio-3.7.1/debian/libgnuradio-fcd3.5.3.postinst 1970-01-01 00:00:00.000000000 +0000 @@ -1,25 +0,0 @@ -#! /bin/sh - -set -e - -#DEBHELPER# - -# same test as udev postinst... -chrooted() { - if [ "$(stat -c %d/%i /)" = "$(stat -Lc %d/%i /proc/1/root 2>/dev/null)" ]; - then - # the devicenumber/inode pair of / is the same as that of /sbin/init's - # root, so we're *not* in a chroot and hence return false. - return 1 - fi - return 0 -} - -if [ "$1" = "configure" ]; then - if ! chrooted ; then - # try to update udev now - udevadm control --reload-rules || true ; - fi -fi - -exit 0 diff -Nru gnuradio-3.6.1/debian/libgnuradio-fcd3.5.3.udev gnuradio-3.7.1/debian/libgnuradio-fcd3.5.3.udev --- gnuradio-3.6.1/debian/libgnuradio-fcd3.5.3.udev 2012-02-19 04:21:47.000000000 +0000 +++ gnuradio-3.7.1/debian/libgnuradio-fcd3.5.3.udev 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -# Funcube Dongle -ACTION=="add", BUS=="usb", SYSFS{idVendor}=="04d8", SYSFS{idProduct}=="fb56", GROUP:="usrp", MODE:="0660", SYMLINK+="FCD" diff -Nru gnuradio-3.6.1/debian/libgnuradio-fcd3.6.1.install gnuradio-3.7.1/debian/libgnuradio-fcd3.6.1.install --- gnuradio-3.6.1/debian/libgnuradio-fcd3.6.1.install 2012-06-11 17:51:38.000000000 +0000 +++ gnuradio-3.7.1/debian/libgnuradio-fcd3.6.1.install 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -usr/lib/*/libgnuradio-fcd.so.3.6.1 diff -Nru gnuradio-3.6.1/debian/libgnuradio-fcd3.7.1.install gnuradio-3.7.1/debian/libgnuradio-fcd3.7.1.install --- gnuradio-3.6.1/debian/libgnuradio-fcd3.7.1.install 1970-01-01 00:00:00.000000000 +0000 +++ gnuradio-3.7.1/debian/libgnuradio-fcd3.7.1.install 2013-08-30 03:45:48.000000000 +0000 @@ -0,0 +1 @@ +usr/lib/*/libgnuradio-fcd.so.3.7.1 diff -Nru gnuradio-3.6.1/debian/libgnuradio-fcd3.7.1.postinst gnuradio-3.7.1/debian/libgnuradio-fcd3.7.1.postinst --- gnuradio-3.6.1/debian/libgnuradio-fcd3.7.1.postinst 1970-01-01 00:00:00.000000000 +0000 +++ gnuradio-3.7.1/debian/libgnuradio-fcd3.7.1.postinst 2012-02-19 15:11:51.000000000 +0000 @@ -0,0 +1,25 @@ +#! /bin/sh + +set -e + +#DEBHELPER# + +# same test as udev postinst... +chrooted() { + if [ "$(stat -c %d/%i /)" = "$(stat -Lc %d/%i /proc/1/root 2>/dev/null)" ]; + then + # the devicenumber/inode pair of / is the same as that of /sbin/init's + # root, so we're *not* in a chroot and hence return false. + return 1 + fi + return 0 +} + +if [ "$1" = "configure" ]; then + if ! chrooted ; then + # try to update udev now + udevadm control --reload-rules || true ; + fi +fi + +exit 0 diff -Nru gnuradio-3.6.1/debian/libgnuradio-fcd3.7.1.udev gnuradio-3.7.1/debian/libgnuradio-fcd3.7.1.udev --- gnuradio-3.6.1/debian/libgnuradio-fcd3.7.1.udev 1970-01-01 00:00:00.000000000 +0000 +++ gnuradio-3.7.1/debian/libgnuradio-fcd3.7.1.udev 2012-02-19 04:21:47.000000000 +0000 @@ -0,0 +1,2 @@ +# Funcube Dongle +ACTION=="add", BUS=="usb", SYSFS{idVendor}=="04d8", SYSFS{idProduct}=="fb56", GROUP:="usrp", MODE:="0660", SYMLINK+="FCD" diff -Nru gnuradio-3.6.1/debian/libgnuradio-fec3.7.1.install gnuradio-3.7.1/debian/libgnuradio-fec3.7.1.install --- gnuradio-3.6.1/debian/libgnuradio-fec3.7.1.install 1970-01-01 00:00:00.000000000 +0000 +++ gnuradio-3.7.1/debian/libgnuradio-fec3.7.1.install 2013-08-30 03:45:42.000000000 +0000 @@ -0,0 +1 @@ +usr/lib/*/libgnuradio-fec.so.3.7.1 diff -Nru gnuradio-3.6.1/debian/libgnuradio-fft3.6.1.install gnuradio-3.7.1/debian/libgnuradio-fft3.6.1.install --- gnuradio-3.6.1/debian/libgnuradio-fft3.6.1.install 2012-06-11 17:53:27.000000000 +0000 +++ gnuradio-3.7.1/debian/libgnuradio-fft3.6.1.install 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -usr/lib/*/libgnuradio-fft.so.3.6.1 diff -Nru gnuradio-3.6.1/debian/libgnuradio-fft3.7.1.install gnuradio-3.7.1/debian/libgnuradio-fft3.7.1.install --- gnuradio-3.6.1/debian/libgnuradio-fft3.7.1.install 1970-01-01 00:00:00.000000000 +0000 +++ gnuradio-3.7.1/debian/libgnuradio-fft3.7.1.install 2013-08-30 03:45:35.000000000 +0000 @@ -0,0 +1 @@ +usr/lib/*/libgnuradio-fft.so.3.7.1 diff -Nru gnuradio-3.6.1/debian/libgnuradio-filter3.7.1.install gnuradio-3.7.1/debian/libgnuradio-filter3.7.1.install --- gnuradio-3.6.1/debian/libgnuradio-filter3.7.1.install 1970-01-01 00:00:00.000000000 +0000 +++ gnuradio-3.7.1/debian/libgnuradio-filter3.7.1.install 2013-08-30 03:45:29.000000000 +0000 @@ -0,0 +1 @@ +usr/lib/*/libgnuradio-filter.so.3.7.1 diff -Nru gnuradio-3.6.1/debian/libgnuradio-noaa3.6.1.install gnuradio-3.7.1/debian/libgnuradio-noaa3.6.1.install --- gnuradio-3.6.1/debian/libgnuradio-noaa3.6.1.install 2012-06-11 17:51:31.000000000 +0000 +++ gnuradio-3.7.1/debian/libgnuradio-noaa3.6.1.install 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -usr/lib/*/libgnuradio-noaa.so.3.6.1 diff -Nru gnuradio-3.6.1/debian/libgnuradio-noaa3.7.1.install gnuradio-3.7.1/debian/libgnuradio-noaa3.7.1.install --- gnuradio-3.6.1/debian/libgnuradio-noaa3.7.1.install 1970-01-01 00:00:00.000000000 +0000 +++ gnuradio-3.7.1/debian/libgnuradio-noaa3.7.1.install 2013-08-30 03:45:21.000000000 +0000 @@ -0,0 +1 @@ +usr/lib/*/libgnuradio-noaa.so.3.7.1 diff -Nru gnuradio-3.6.1/debian/libgnuradio-pager3.6.1.install gnuradio-3.7.1/debian/libgnuradio-pager3.6.1.install --- gnuradio-3.6.1/debian/libgnuradio-pager3.6.1.install 2012-06-11 17:51:22.000000000 +0000 +++ gnuradio-3.7.1/debian/libgnuradio-pager3.6.1.install 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -usr/lib/*/libgnuradio-pager.so.3.6.1 diff -Nru gnuradio-3.6.1/debian/libgnuradio-pager3.7.1.install gnuradio-3.7.1/debian/libgnuradio-pager3.7.1.install --- gnuradio-3.6.1/debian/libgnuradio-pager3.7.1.install 1970-01-01 00:00:00.000000000 +0000 +++ gnuradio-3.7.1/debian/libgnuradio-pager3.7.1.install 2013-08-30 03:45:15.000000000 +0000 @@ -0,0 +1 @@ +usr/lib/*/libgnuradio-pager.so.3.7.1 diff -Nru gnuradio-3.6.1/debian/libgnuradio-pmt3.7.1.install gnuradio-3.7.1/debian/libgnuradio-pmt3.7.1.install --- gnuradio-3.6.1/debian/libgnuradio-pmt3.7.1.install 1970-01-01 00:00:00.000000000 +0000 +++ gnuradio-3.7.1/debian/libgnuradio-pmt3.7.1.install 2013-08-30 03:45:10.000000000 +0000 @@ -0,0 +1 @@ +usr/lib/*/libgnuradio-pmt.so.3.7.1 diff -Nru gnuradio-3.6.1/debian/libgnuradio-qtgui3.6.1.install gnuradio-3.7.1/debian/libgnuradio-qtgui3.6.1.install --- gnuradio-3.6.1/debian/libgnuradio-qtgui3.6.1.install 2012-06-11 17:51:16.000000000 +0000 +++ gnuradio-3.7.1/debian/libgnuradio-qtgui3.6.1.install 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -usr/lib/*/libgnuradio-qtgui.so.3.6.1 diff -Nru gnuradio-3.6.1/debian/libgnuradio-qtgui3.7.1.install gnuradio-3.7.1/debian/libgnuradio-qtgui3.7.1.install --- gnuradio-3.6.1/debian/libgnuradio-qtgui3.7.1.install 1970-01-01 00:00:00.000000000 +0000 +++ gnuradio-3.7.1/debian/libgnuradio-qtgui3.7.1.install 2013-08-30 03:45:04.000000000 +0000 @@ -0,0 +1 @@ +usr/lib/*/libgnuradio-qtgui.so.3.7.1 diff -Nru gnuradio-3.6.1/debian/libgnuradio-runtime3.7.1.install gnuradio-3.7.1/debian/libgnuradio-runtime3.7.1.install --- gnuradio-3.6.1/debian/libgnuradio-runtime3.7.1.install 1970-01-01 00:00:00.000000000 +0000 +++ gnuradio-3.7.1/debian/libgnuradio-runtime3.7.1.install 2013-08-30 03:44:59.000000000 +0000 @@ -0,0 +1 @@ +usr/lib/*/libgnuradio-runtime.so.3.7.1 diff -Nru gnuradio-3.6.1/debian/libgnuradio-trellis3.6.1.install gnuradio-3.7.1/debian/libgnuradio-trellis3.6.1.install --- gnuradio-3.6.1/debian/libgnuradio-trellis3.6.1.install 2012-06-11 17:51:11.000000000 +0000 +++ gnuradio-3.7.1/debian/libgnuradio-trellis3.6.1.install 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -usr/lib/*/libgnuradio-trellis.so.3.6.1 diff -Nru gnuradio-3.6.1/debian/libgnuradio-trellis3.7.1.install gnuradio-3.7.1/debian/libgnuradio-trellis3.7.1.install --- gnuradio-3.6.1/debian/libgnuradio-trellis3.7.1.install 1970-01-01 00:00:00.000000000 +0000 +++ gnuradio-3.7.1/debian/libgnuradio-trellis3.7.1.install 2013-08-30 03:44:53.000000000 +0000 @@ -0,0 +1 @@ +usr/lib/*/libgnuradio-trellis.so.3.7.1 diff -Nru gnuradio-3.6.1/debian/libgnuradio-uhd3.6.1.install gnuradio-3.7.1/debian/libgnuradio-uhd3.6.1.install --- gnuradio-3.6.1/debian/libgnuradio-uhd3.6.1.install 2012-06-11 17:51:05.000000000 +0000 +++ gnuradio-3.7.1/debian/libgnuradio-uhd3.6.1.install 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -usr/lib/*/libgnuradio-uhd.so.3.6.1 diff -Nru gnuradio-3.6.1/debian/libgnuradio-uhd3.7.1.install gnuradio-3.7.1/debian/libgnuradio-uhd3.7.1.install --- gnuradio-3.6.1/debian/libgnuradio-uhd3.7.1.install 1970-01-01 00:00:00.000000000 +0000 +++ gnuradio-3.7.1/debian/libgnuradio-uhd3.7.1.install 2013-08-30 03:44:48.000000000 +0000 @@ -0,0 +1 @@ +usr/lib/*/libgnuradio-uhd.so.3.7.1 diff -Nru gnuradio-3.6.1/debian/libgnuradio-video-sdl3.6.1.install gnuradio-3.7.1/debian/libgnuradio-video-sdl3.6.1.install --- gnuradio-3.6.1/debian/libgnuradio-video-sdl3.6.1.install 2012-06-11 17:50:58.000000000 +0000 +++ gnuradio-3.7.1/debian/libgnuradio-video-sdl3.6.1.install 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -usr/lib/*/libgnuradio-video-sdl.so.3.6.1 diff -Nru gnuradio-3.6.1/debian/libgnuradio-video-sdl3.7.1.install gnuradio-3.7.1/debian/libgnuradio-video-sdl3.7.1.install --- gnuradio-3.6.1/debian/libgnuradio-video-sdl3.7.1.install 1970-01-01 00:00:00.000000000 +0000 +++ gnuradio-3.7.1/debian/libgnuradio-video-sdl3.7.1.install 2013-08-30 03:44:41.000000000 +0000 @@ -0,0 +1 @@ +usr/lib/*/libgnuradio-video-sdl.so.3.7.1 diff -Nru gnuradio-3.6.1/debian/libgnuradio-vocoder3.6.1.install gnuradio-3.7.1/debian/libgnuradio-vocoder3.6.1.install --- gnuradio-3.6.1/debian/libgnuradio-vocoder3.6.1.install 2012-06-11 17:50:51.000000000 +0000 +++ gnuradio-3.7.1/debian/libgnuradio-vocoder3.6.1.install 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -usr/lib/*/libgnuradio-vocoder.so.3.6.1 diff -Nru gnuradio-3.6.1/debian/libgnuradio-vocoder3.7.1.install gnuradio-3.7.1/debian/libgnuradio-vocoder3.7.1.install --- gnuradio-3.6.1/debian/libgnuradio-vocoder3.7.1.install 1970-01-01 00:00:00.000000000 +0000 +++ gnuradio-3.7.1/debian/libgnuradio-vocoder3.7.1.install 2013-08-30 03:44:36.000000000 +0000 @@ -0,0 +1 @@ +usr/lib/*/libgnuradio-vocoder.so.3.7.1 diff -Nru gnuradio-3.6.1/debian/libgnuradio-wavelet3.6.1.install gnuradio-3.7.1/debian/libgnuradio-wavelet3.6.1.install --- gnuradio-3.6.1/debian/libgnuradio-wavelet3.6.1.install 2012-06-11 17:50:46.000000000 +0000 +++ gnuradio-3.7.1/debian/libgnuradio-wavelet3.6.1.install 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -usr/lib/*/libgnuradio-wavelet.so.3.6.1 diff -Nru gnuradio-3.6.1/debian/libgnuradio-wavelet3.7.1.install gnuradio-3.7.1/debian/libgnuradio-wavelet3.7.1.install --- gnuradio-3.6.1/debian/libgnuradio-wavelet3.7.1.install 1970-01-01 00:00:00.000000000 +0000 +++ gnuradio-3.7.1/debian/libgnuradio-wavelet3.7.1.install 2013-08-30 03:44:29.000000000 +0000 @@ -0,0 +1 @@ +usr/lib/*/libgnuradio-wavelet.so.3.7.1 diff -Nru gnuradio-3.6.1/debian/libgnuradio-wxgui3.7.1.install gnuradio-3.7.1/debian/libgnuradio-wxgui3.7.1.install --- gnuradio-3.6.1/debian/libgnuradio-wxgui3.7.1.install 1970-01-01 00:00:00.000000000 +0000 +++ gnuradio-3.7.1/debian/libgnuradio-wxgui3.7.1.install 2013-08-30 03:44:22.000000000 +0000 @@ -0,0 +1 @@ +usr/lib/*/libgnuradio-wxgui.so.3.7.1 diff -Nru gnuradio-3.6.1/debian/libgruel3.6.1.dirs gnuradio-3.7.1/debian/libgruel3.6.1.dirs --- gnuradio-3.6.1/debian/libgruel3.6.1.dirs 2012-02-18 21:31:03.000000000 +0000 +++ gnuradio-3.7.1/debian/libgruel3.6.1.dirs 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -usr/lib diff -Nru gnuradio-3.6.1/debian/libgruel3.6.1.install gnuradio-3.7.1/debian/libgruel3.6.1.install --- gnuradio-3.6.1/debian/libgruel3.6.1.install 2012-06-11 17:50:41.000000000 +0000 +++ gnuradio-3.7.1/debian/libgruel3.6.1.install 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -usr/lib/*/libgruel.so.3.6.1 diff -Nru gnuradio-3.6.1/debian/patches/bsd-alsa gnuradio-3.7.1/debian/patches/bsd-alsa --- gnuradio-3.6.1/debian/patches/bsd-alsa 2012-04-14 04:05:17.000000000 +0000 +++ gnuradio-3.7.1/debian/patches/bsd-alsa 2013-06-04 20:55:24.000000000 +0000 @@ -1,47 +1,51 @@ ---- a/gr-audio/lib/alsa/audio_alsa_source.cc -+++ b/gr-audio/lib/alsa/audio_alsa_source.cc -@@ -471,6 +471,7 @@ - continue; // try again - } - -+#ifdef ESTRPIPE - else if (r == -ESTRPIPE){ // h/w is suspended (whatever that means) - // This is apparently related to power management - d_nsuspends++; -@@ -480,6 +481,7 @@ - } - continue; // try again - } -+#endif - - else if (r < 0){ - output_error_msg ("snd_pcm_readi failed", r); ---- a/gr-audio/lib/alsa/audio_alsa_sink.cc -+++ b/gr-audio/lib/alsa/audio_alsa_sink.cc -@@ -510,6 +510,7 @@ - continue; // try again - } - -+#ifdef ESTRPIPE - else if (r == -ESTRPIPE){ // h/w is suspended (whatever that means) - // This is apparently related to power management - d_nsuspends++; -@@ -519,6 +520,7 @@ - } - continue; // try again - } -+#endif - - else if (r < 0){ - output_error_msg ("snd_pcm_writei failed", r); --- a/gr-audio/lib/CMakeLists.txt +++ b/gr-audio/lib/CMakeLists.txt -@@ -38,7 +38,7 @@ +@@ -45,7 +45,7 @@ ######################################################################## find_package(ALSA) -if(ALSA_FOUND) +if((ALSA_FOUND) AND NOT (CMAKE_SYSTEM_NAME STREQUAL "kFreeBSD")) - include_directories(${CMAKE_CURRENT_SOURCE_DIR}/alsa ${ALSA_INCLUDE_DIRS}) - list(APPEND gr_audio_libs ${ALSA_LIBRARIES}) + include_directories(BEFORE ${CMAKE_CURRENT_SOURCE_DIR}/alsa) + include_directories(${ALSA_INCLUDE_DIRS}) +--- a/gr-audio/lib/alsa/alsa_source.cc ++++ b/gr-audio/lib/alsa/alsa_source.cc +@@ -473,7 +473,7 @@ + } + continue; // try again + } +- ++#ifdef ESTRPIPE + else if(r == -ESTRPIPE) { // h/w is suspended (whatever that means) + // This is apparently related to power management + d_nsuspends++; +@@ -483,7 +483,7 @@ + } + continue; // try again + } +- ++#endif + else if(r < 0) { + output_error_msg("snd_pcm_readi failed", r); + return false; +--- a/gr-audio/lib/alsa/alsa_sink.cc ++++ b/gr-audio/lib/alsa/alsa_sink.cc +@@ -507,7 +507,7 @@ + } + continue; // try again + } +- ++#ifdef ESTRPIPE + else if(r == -ESTRPIPE) { // h/w is suspended (whatever that means) + // This is apparently related to power management + d_nsuspends++; +@@ -517,7 +517,7 @@ + } + continue; // try again + } +- ++#endif + else if (r < 0) { + output_error_msg("snd_pcm_writei failed", r); + return false; diff -Nru gnuradio-3.6.1/debian/patches/bsd-fcd gnuradio-3.7.1/debian/patches/bsd-fcd --- gnuradio-3.6.1/debian/patches/bsd-fcd 2012-05-09 14:14:59.000000000 +0000 +++ gnuradio-3.7.1/debian/patches/bsd-fcd 2013-07-30 16:57:03.000000000 +0000 @@ -3,25 +3,25 @@ @@ -255,7 +255,7 @@ } #endif // INVASIVE_GET_USAGE - + - +#ifndef __FreeBSD_kernel__ /* Get the first language the device says it reports. This comes from USB string #0. */ static uint16_t get_first_language(libusb_device_handle *dev) @@ -300,7 +300,7 @@ - + return 0; } - +#endif - + /* This function returns a newly allocated wide string containing the USB device string numbered by the index. The returned string must be freed @@ -320,6 +320,25 @@ char *inptr; char *outptr; - + +#ifdef __FreeBSD_kernel__ + /* Get the string from libusb. */ + len = libusb_get_string_descriptor_ascii(dev, @@ -47,7 +47,7 @@ @@ -345,6 +364,8 @@ if (ic == (iconv_t)-1) return NULL; - + +#endif + /* Convert to UTF-32 (wchar_t on glibc systems). diff -Nru gnuradio-3.6.1/debian/patches/bsd-no-thread-affinity gnuradio-3.7.1/debian/patches/bsd-no-thread-affinity --- gnuradio-3.6.1/debian/patches/bsd-no-thread-affinity 1970-01-01 00:00:00.000000000 +0000 +++ gnuradio-3.7.1/debian/patches/bsd-no-thread-affinity 2013-07-05 13:59:05.000000000 +0000 @@ -0,0 +1,11 @@ +--- a/gnuradio-runtime/lib/thread/thread.cc ++++ b/gnuradio-runtime/lib/thread/thread.cc +@@ -115,7 +115,7 @@ + } /* namespace gr */ + + +-#elif defined(macintosh) || defined(__APPLE__) || defined(__APPLE_CC__) ++#elif defined(macintosh) || defined(__APPLE__) || defined(__APPLE_CC__) || defined(__FreeBSD_kernel__) + + namespace gr { + namespace thread { diff -Nru gnuradio-3.6.1/debian/patches/bsd-shm gnuradio-3.7.1/debian/patches/bsd-shm --- gnuradio-3.6.1/debian/patches/bsd-shm 2012-05-08 20:41:03.000000000 +0000 +++ gnuradio-3.7.1/debian/patches/bsd-shm 2013-06-07 02:58:23.000000000 +0000 @@ -1,11 +1,11 @@ ---- a/gnuradio-core/src/lib/CMakeLists.txt -+++ b/gnuradio-core/src/lib/CMakeLists.txt -@@ -65,7 +65,7 @@ - endif() +--- a/gnuradio-runtime/lib/CMakeLists.txt ++++ b/gnuradio-runtime/lib/CMakeLists.txt +@@ -144,7 +144,7 @@ + ENDIF(HAVE_WINDOWS_H) #need to link with librt on ubuntu 11.10 for shm_* -if(LINUX) +if((LINUX) OR (CMAKE_SYSTEM_NAME STREQUAL "kFreeBSD")) - list(APPEND gnuradio_core_libs rt) + list(APPEND gnuradio_runtime_libs rt) endif() diff -Nru gnuradio-3.6.1/debian/patches/debian-ICE-default-location gnuradio-3.7.1/debian/patches/debian-ICE-default-location --- gnuradio-3.6.1/debian/patches/debian-ICE-default-location 1970-01-01 00:00:00.000000000 +0000 +++ gnuradio-3.7.1/debian/patches/debian-ICE-default-location 2013-08-11 23:00:33.000000000 +0000 @@ -0,0 +1,52 @@ +--- a/cmake/Modules/FindICE-3.5.cmake ++++ b/cmake/Modules/FindICE-3.5.cmake +@@ -37,7 +37,6 @@ + FIND_PATH( + ICE_INCLUDE_DIR + NAMES IceUtil/IceUtil.h Ice/Ice.h +- NO_DEFAULT_PATH + HINTS ${ICE_PATH}/include + ) + +@@ -45,41 +44,27 @@ + + FIND_LIBRARY( + ICE_ICESTORM IceStorm +- NO_DEFAULT_PATH +- HINTS ${ICE_PATH}/lib ${ICE_PATH}/lib64 + ) + + FIND_LIBRARY( + ICE_ICESTORM IceStorm +- NO_DEFAULT_PATH +- HINTS ${ICE_PATH}/lib ${ICE_PATH}/lib64 + ) + FIND_LIBRARY( + ICE_ICE Ice +- NO_DEFAULT_PATH +- HINTS ${ICE_PATH}/lib ${ICE_PATH}/lib64 + ) + FIND_LIBRARY( + ICE_ICEGRID IceGrid +- NO_DEFAULT_PATH +- HINTS ${ICE_PATH}/lib ${ICE_PATH}/lib64 + ) + FIND_LIBRARY( + ICE_ICEUTIL IceUtil +- NO_DEFAULT_PATH +- HINTS ${ICE_PATH}/lib ${ICE_PATH}/lib64 + ) + FIND_LIBRARY( + ICE_GLACIER2 Glacier2 +- NO_DEFAULT_PATH +- HINTS ${ICE_PATH}/lib ${ICE_PATH}/lib64 + ) + + if(APPLE) + FIND_LIBRARY( + ICE_ZEROCICE ZeroCIce +- NO_DEFAULT_PATH +- HINTS ${ICE_PATH}/lib ${ICE_PATH}/lib64 + ) + endif(APPLE) + diff -Nru gnuradio-3.6.1/debian/patches/debian-bsd-comedi gnuradio-3.7.1/debian/patches/debian-bsd-comedi --- gnuradio-3.6.1/debian/patches/debian-bsd-comedi 2012-04-14 04:04:54.000000000 +0000 +++ gnuradio-3.7.1/debian/patches/debian-bsd-comedi 2013-06-04 20:37:24.000000000 +0000 @@ -1,10 +1,10 @@ --- a/gr-comedi/CMakeLists.txt +++ b/gr-comedi/CMakeLists.txt -@@ -32,7 +32,6 @@ +@@ -30,7 +30,6 @@ include(GrComponent) GR_REGISTER_COMPONENT("gr-comedi" ENABLE_GR_COMEDI COMEDI_FOUND - LINUX #comedi uses linux specific device noces Boost_FOUND - ENABLE_GR_CORE + ENABLE_GNURADIO_RUNTIME ) diff -Nru gnuradio-3.6.1/debian/patches/gr-use-system-libgsm gnuradio-3.7.1/debian/patches/gr-use-system-libgsm --- gnuradio-3.6.1/debian/patches/gr-use-system-libgsm 2012-04-11 02:47:46.000000000 +0000 +++ gnuradio-3.7.1/debian/patches/gr-use-system-libgsm 2013-06-04 20:43:28.000000000 +0000 @@ -35,7 +35,7 @@ # Setup the include and linker paths ######################################################################## include_directories( -@@ -55,12 +83,17 @@ +@@ -79,13 +107,18 @@ ######################################################################## GR_INCLUDE_SUBDIRECTORY(codec2) GR_INCLUDE_SUBDIRECTORY(g7xx) @@ -45,8 +45,9 @@ +endif(NOT GR_USE_SYSTEM_LIBGSM) list(APPEND vocoder_libs - gnuradio-core + gnuradio-runtime ${Boost_LIBRARIES} + ${LOG4CPP_LIBRARIES} ) +if(GR_USE_SYSTEM_LIBGSM) + list(APPEND vocoder_libs ${LIBGSM_LIBRARIES}) diff -Nru gnuradio-3.6.1/debian/patches/grc-system-config gnuradio-3.7.1/debian/patches/grc-system-config --- gnuradio-3.6.1/debian/patches/grc-system-config 2012-05-08 20:35:25.000000000 +0000 +++ gnuradio-3.7.1/debian/patches/grc-system-config 1970-01-01 00:00:00.000000000 +0000 @@ -1,24 +0,0 @@ ---- a/gnuradio-core/src/lib/general/CMakeLists.txt -+++ b/gnuradio-core/src/lib/general/CMakeLists.txt -@@ -48,8 +48,8 @@ - - message(STATUS "Loading version ${VERSION} into gr_constants...") - --file(TO_NATIVE_PATH "${CMAKE_INSTALL_PREFIX}/${GR_CONF_DIR}" SYSCONFDIR) --file(TO_NATIVE_PATH "${CMAKE_INSTALL_PREFIX}/${GR_PKG_CONF_DIR}" GR_PREFSDIR) -+file(TO_NATIVE_PATH "${GR_CONF_DIR}" SYSCONFDIR) -+file(TO_NATIVE_PATH "${GR_PKG_CONF_DIR}" GR_PREFSDIR) - - #double escape for windows backslash path separators - string(REPLACE "\\" "\\\\" prefix ${prefix}) ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -102,7 +102,7 @@ - set(GR_PKG_DATA_DIR ${GR_DATA_DIR}/${CMAKE_PROJECT_NAME}) - set(GR_DOC_DIR ${GR_DATA_DIR}/doc) - set(GR_PKG_DOC_DIR ${GR_DOC_DIR}/${CMAKE_PROJECT_NAME}-${DOCVER}) --set(GR_CONF_DIR etc) -+set(GR_CONF_DIR /etc) - set(GR_PKG_CONF_DIR ${GR_CONF_DIR}/${CMAKE_PROJECT_NAME}/conf.d) - set(GR_LIBEXEC_DIR libexec) - set(GR_PKG_LIBEXEC_DIR ${GR_LIBEXEC_DIR}/${CMAKE_PROJECT_NAME}) diff -Nru gnuradio-3.6.1/debian/patches/grcc-gnuradio-companion-compiler gnuradio-3.7.1/debian/patches/grcc-gnuradio-companion-compiler --- gnuradio-3.6.1/debian/patches/grcc-gnuradio-companion-compiler 2012-05-09 19:09:46.000000000 +0000 +++ gnuradio-3.7.1/debian/patches/grcc-gnuradio-companion-compiler 1970-01-01 00:00:00.000000000 +0000 @@ -1,61 +0,0 @@ ---- a/grc/scripts/gnuradio-companion -+++ b/grc/scripts/gnuradio-companion -@@ -18,6 +18,9 @@ - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA - """ - -+import os -+if os.environ.get('GR_DONT_LOAD_PREFS'): -+ del os.environ['GR_DONT_LOAD_PREFS'] - import pygtk - pygtk.require('2.0') - import gtk -@@ -39,9 +42,23 @@ - d.run() - exit(-1) - --from gnuradio import gr - from optparse import OptionParser - -+def compile_one(file_name, output_dir): -+ """ Directly compiles file_name into output_dir without invoking GUI """ -+ if output_dir is None: -+ output_dir = './' -+ if "GRC_OUTPUT_DIRECTORY" in os.environ: -+ output_dir = os.environ["GRC_OUTPUT_DIRECTORY"] -+ print "Compiling " + file_name + " to " + output_dir -+ platform = Platform() -+ state = platform.parse_flow_graph(file_name) -+ flowgraph = platform.get_new_flow_graph() -+ flowgraph.import_data(state) -+ flowgraph.validate() -+ generator = platform.get_generator()(flowgraph, output_dir) -+ generator.write() -+ - if __name__ == "__main__": - usage = 'usage: %prog [options] [saved flow graphs]' - version = """ -@@ -53,11 +70,17 @@ - and you are welcome to redistribute it. - """%gr.version() - parser = OptionParser(usage=usage, version=version) -+ parser.add_option("-c", "--compile", action="store_true", default=False, -+ help="Only compile the GRC file without invoking the GUI") -+ parser.add_option("-d", "--output-dir", type="string", default=None, -+ help="Output path for the Python file") - (options, args) = parser.parse_args() - from gnuradio.grc.python.Platform import Platform -- from gnuradio.grc.gui.ActionHandler import ActionHandler -- #setup icon using icon theme -- try: gtk.window_set_default_icon(gtk.IconTheme().load_icon('gnuradio-grc', 256, 0)) -- except: pass -- ActionHandler(args, Platform()) -- -+ if options.compile: -+ compile_one(args[0], options.output_dir) -+ else: -+ from gnuradio.grc.gui.ActionHandler import ActionHandler -+ #setup icon using icon theme -+ try: gtk.window_set_default_icon(gtk.IconTheme().load_icon('gnuradio-grc', 256, 0)) -+ except: pass -+ ActionHandler(args, Platform()) diff -Nru gnuradio-3.6.1/debian/patches/series gnuradio-3.7.1/debian/patches/series --- gnuradio-3.6.1/debian/patches/series 2012-05-09 19:09:19.000000000 +0000 +++ gnuradio-3.7.1/debian/patches/series 2013-08-30 03:54:44.000000000 +0000 @@ -1,11 +1,10 @@ debian-soname debian-bsd-comedi -grc-system-config -grcc-gnuradio-companion-compiler volk-profile-no-rpath usr-bin-examples gr-use-system-libgsm bsd-usb bsd-shm bsd-alsa -bsd-fcd +bsd-no-thread-affinity +debian-ICE-default-location diff -Nru gnuradio-3.6.1/debian/patches/usr-bin-examples gnuradio-3.7.1/debian/patches/usr-bin-examples --- gnuradio-3.6.1/debian/patches/usr-bin-examples 2012-05-09 16:32:50.000000000 +0000 +++ gnuradio-3.7.1/debian/patches/usr-bin-examples 2013-06-04 20:37:38.000000000 +0000 @@ -1,6 +1,6 @@ --- a/gr-fcd/examples/c++/CMakeLists.txt +++ b/gr-fcd/examples/c++/CMakeLists.txt -@@ -26,6 +26,6 @@ +@@ -32,6 +32,6 @@ INSTALL(TARGETS fcd_nfm_rx @@ -10,7 +10,7 @@ ) --- a/gr-audio/examples/c++/CMakeLists.txt +++ b/gr-audio/examples/c++/CMakeLists.txt -@@ -24,6 +24,6 @@ +@@ -30,6 +30,6 @@ INSTALL(TARGETS dial_tone @@ -20,7 +20,7 @@ ) --- a/gr-uhd/examples/c++/CMakeLists.txt +++ b/gr-uhd/examples/c++/CMakeLists.txt -@@ -40,6 +40,6 @@ +@@ -39,6 +39,6 @@ INSTALL(TARGETS tags_demo diff -Nru gnuradio-3.6.1/debian/rules gnuradio-3.7.1/debian/rules --- gnuradio-3.6.1/debian/rules 2012-05-09 16:11:12.000000000 +0000 +++ gnuradio-3.7.1/debian/rules 2013-08-12 02:23:29.000000000 +0000 @@ -5,14 +5,14 @@ %: dh $@ --parallel --builddirectory=build --with-buildsystem=cmake --with python2 -override_dh_python2: - dh_python2 --no-guessing-versions +#override_dh_python2: +# dh_python2 --no-guessing-versions override_dh_auto_configure: - dh_auto_configure -- -DLIB_SUFFIX="/$(DEB_HOST_MULTIARCH)" + dh_auto_configure -- -DLIB_SUFFIX="/$(DEB_HOST_MULTIARCH)" -DPythonLibs_FIND_VERSION:STRING="2.7" -DPythonInterp_FIND_VERSION:STRING="2.7" override_dh_auto_test: - - dh_auto_test + - dh_auto_test -- -DCTEST_TEST_TIMEOUT=60 override_dh_auto_install: dh_auto_install diff -Nru gnuradio-3.6.1/debian/volk_modtool.1 gnuradio-3.7.1/debian/volk_modtool.1 --- gnuradio-3.6.1/debian/volk_modtool.1 1970-01-01 00:00:00.000000000 +0000 +++ gnuradio-3.7.1/debian/volk_modtool.1 2013-08-31 01:49:14.000000000 +0000 @@ -0,0 +1,112 @@ +.TH GNURADIO "1" "August 2013" "volk_modtool 3.7" "User Commands" +.SH NAME +volk_modtool \- tailor VOLK modules +.SH DESCRIPTION +The volk_modtool tool is installed along with VOLK as a way of helping +to construct, add to, and interogate the VOLK library or companion +libraries. +.P +volk_modtool is installed into $prefix/bin. +.P +VOLK modtool enables creating standalone (out-of-tree) VOLK modules +and provides a few tools for sharing VOLK kernels between VOLK +modules. If you need to design or work with VOLK kernels away from +the canonical VOLK library, this is the tool. If you need to tailor +your own VOLK library for whatever reason, this is the tool. +.P +The canonical VOLK library installs a volk.h and a libvolk.so. Your +own library will install volk_$name.h and libvolk_$name.so. Ya Gronk? +Good. +.P +There isn't a substantial difference between the canonical VOLK +module and any other VOLK module. They're all peers. Any module +created via VOLK modtool will come complete with a default +volk_modtool.cfg file associating the module with the base from which +it came, its distinctive $name and its destination (or path). These +values (created from user input if VOLK modtool runs without a +user-supplied config file or a default config file) serve as default +values for some VOLK modtool actions. It's more or less intended for +the user to change directories to the top level of a created VOLK +module and then run volk_modtool to take advantage of the values +stored in the default volk_modtool.cfg file. +.P +Apart from creating new VOLK modules, VOLK modtool allows you to list +the names of kernels in other modules, list the names of kernels in +the current module, add kernels from another module into the current +module, and remove kernels from the current module. When moving +kernels between modules, VOLK modtool does its best to keep the qa +and profiling code for those kernels intact. If the base has a test +or a profiling call for some kernel, those calls will follow the +kernel when VOLK modtool adds that kernel. If QA or profiling +requires a puppet kernel, the puppet kernel will follow the original +kernel when VOLK modtool adds that original kernel. VOLK modtool +respects puppets. +.P +====================================================================== +.P +.SH Installing a new VOLK Library: +.P +Run the command "volk_modtool -i". This will ask you three questions: +.P + name: // the name to give your VOLK library: volk_ + destination: // directory new source tree is built under -- must exists. + // It will create /volk_ + base: // the directory containing the original VOLK source code +.P +This will build a new skeleton directory in the destination provided +with the name volk_. It will contain the necessary structure to +build: +.P + mkdir build + cd build + cmake -DCMAKE_INSTALL_PREFIX=/opt/volk ../ + make + sudo make install +.P +Right now, the library is empty and contains no kernels. Kernels can +be added from another VOLK library using the '-a' option. If not +specified, the kernel will be extracted from the base VOLK +directory. Using the '-b' allows us to specify another VOLK library to +use for this purpose. +.P + volk_modtool -a -n 32fc_x2_conjugate_dot_prod_32fc +.P +This will put the code for the new kernel into +/volk_/kernels/volk_/ +.P +Other kernels must be added by hand. See the following webpages for +more information about creating VOLK kernels: + http://gnuradio.org/doc/doxygen/volk_guide.html + http://gnuradio.org/redmine/projects/gnuradio/wiki/Volk +.P +====================================================================== +.P +.SH OPTIONS +.P +Options for Adding and Removing Kernels: + -a, --add_kernel + Add kernel from existing VOLK module. Uses the base VOLK module + unless -b is used. Use -n to specify the kernel name. + Requires: -n. + Optional: -b +.P + -A, --add_all_kernels + Add all kernels from existing VOLK module. Uses the base VOLK + module unless -b is used. + Optional: -b +.P + -x, --remove_kernel + Remove kernel from module. + Required: -n. + Optional: -b +.P +Options for Listing Kernels: + -l, --list + Lists all kernels available in the base VOLK module. +.P + -k, --kernels + Lists all kernels in this VOLK module. +.P + -r, --remote-list + Lists all kernels in another VOLK module that is specified + using the -b option. diff -Nru gnuradio-3.6.1/debian/watch gnuradio-3.7.1/debian/watch --- gnuradio-3.6.1/debian/watch 1970-01-01 00:00:00.000000000 +0000 +++ gnuradio-3.7.1/debian/watch 2013-02-27 02:39:53.000000000 +0000 @@ -0,0 +1,4 @@ +version=3 +opts=uversionmangle=s/(\d)[_\.\-\+]?((RC|rc|pre|dev|beta|alpha|b|a)[\-\.]?\d*)$/$1~$2/ \ +http://gnuradio.org/releases/gnuradio/gnuradio-(\d.*)\.(?:tgz|tbz2|txz|tar\.(?:gz|bz2|xz)) +# Bart Martens Mon, 28 Jan 2013 21:44:34 +0000 diff -Nru gnuradio-3.6.1/docs/doxygen/CMakeLists.txt gnuradio-3.7.1/docs/doxygen/CMakeLists.txt --- gnuradio-3.6.1/docs/doxygen/CMakeLists.txt 2012-06-11 15:36:37.000000000 +0000 +++ gnuradio-3.7.1/docs/doxygen/CMakeLists.txt 2013-06-30 00:05:51.000000000 +0000 @@ -37,6 +37,34 @@ set(BUILT_DIRS ${CMAKE_CURRENT_BINARY_DIR}/xml ${CMAKE_CURRENT_BINARY_DIR}/html) +if(ENABLE_GNURADIO_RUNTIME) + list(APPEND GENERATED_DEPS pmt_generated) +endif(ENABLE_GNURADIO_RUNTIME) + +if(ENABLE_GR_BLOCKS) + list(APPEND GENERATED_DEPS blocks_generated_includes) +endif(ENABLE_GR_BLOCKS) + +if(ENABLE_GR_ANALOG) + list(APPEND GENERATED_DEPS analog_generated_includes) +endif(ENABLE_GR_ANALOG) + +if(ENABLE_GR_DIGITAL) + list(APPEND GENERATED_DEPS digital_generated_includes) +endif(ENABLE_GR_DIGITAL) + +if(ENABLE_GR_FEC) + list(APPEND GENERATED_DEPS fec_generated_includes) +endif(ENABLE_GR_FEC) + +if(ENABLE_GR_FILTER) + list(APPEND GENERATED_DEPS filter_generated_includes) +endif(ENABLE_GR_FILTER) + +if(ENABLE_GR_TRELLIS) + list(APPEND GENERATED_DEPS trellis_generated_includes) +endif(ENABLE_GR_TRELLIS) + ######################################################################## # Make and install doxygen docs ######################################################################## @@ -44,6 +72,7 @@ OUTPUT ${BUILT_DIRS} COMMAND ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + DEPENDS ${GENERATED_DEPS} COMMENT "Generating documentation with doxygen" ) diff -Nru gnuradio-3.6.1/docs/doxygen/Doxyfile.in gnuradio-3.7.1/docs/doxygen/Doxyfile.in --- gnuradio-3.6.1/docs/doxygen/Doxyfile.in 2012-06-11 15:36:37.000000000 +0000 +++ gnuradio-3.7.1/docs/doxygen/Doxyfile.in 2013-06-30 00:05:51.000000000 +0000 @@ -455,12 +455,6 @@ SHOW_USED_FILES = YES -# If the sources in your project are distributed over multiple directories -# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy -# in the documentation. The default is NO. - -SHOW_DIRECTORIES = NO - # Set the SHOW_FILES tag to NO to disable the generation of the Files page. # This will remove the Files entry from the Quick Index and from the # Folder Tree View (if specified). The default is YES. @@ -586,60 +580,69 @@ @abs_top_builddir@/docs/doxygen/xml \ @abs_top_builddir@/docs/doxygen/other/doxypy.py \ @abs_top_builddir@/dtools \ - @abs_top_builddir@/gnuradio-core/src/lib/bug_work_around_6.cc \ - @abs_top_builddir@/gnuradio-core/src/lib/filter/assembly.h \ - @abs_top_builddir@/gnuradio-core/src/lib/filter/generate_all.py \ - @abs_top_builddir@/gnuradio-core/src/lib/filter/generate_gr_fir_XXX.py \ - @abs_top_builddir@/gnuradio-core/src/lib/filter/generate_gr_fir_filter_XXX.py \ - @abs_top_builddir@/gnuradio-core/src/lib/filter/generate_gr_fir_sysconfig.py \ - @abs_top_builddir@/gnuradio-core/src/lib/filter/generate_gr_fir_sysconfig_generic.py \ - @abs_top_builddir@/gnuradio-core/src/lib/filter/generate_gr_fir_util.py \ - @abs_top_builddir@/gnuradio-core/src/lib/filter/generate_gr_freq_xlating_fir_filter_XXX.py \ - @abs_top_builddir@/gnuradio-core/src/lib/filter/generate_gr_interp_fir_filter_XXX.py \ - @abs_top_builddir@/gnuradio-core/src/lib/filter/generate_gr_rational_resampler_base_XXX.py \ - @abs_top_builddir@/gnuradio-core/src/lib/filter/generate_utils.py \ - @abs_top_builddir@/gnuradio-core/src/lib/filter/gr_altivec.h \ - @abs_top_builddir@/gnuradio-core/src/lib/filter/sse_debug.h \ - @abs_top_builddir@/gnuradio-core/src/lib/gengen/generate_all.py \ - @abs_top_builddir@/gnuradio-core/src/lib/gengen/generate_common.py \ - @abs_top_builddir@/gnuradio-core/src/lib/missing/bug_work_around_8.cc \ - @abs_top_builddir@/gnuradio-core/src/lib/missing/getopt.h \ - @abs_top_builddir@/gnuradio-core/src/lib/runtime/gr_error_handler.cc \ - @abs_top_builddir@/gnuradio-core/src/lib/swig \ - @abs_top_builddir@/gnuradio-core/src/python/bin \ - @abs_top_builddir@/gnuradio-core/src/python/build_utils.py \ - @abs_top_builddir@/gnuradio-core/src/python/build_utils_codes.py \ - @abs_top_builddir@/gnuradio-core/src/python/gnuradio/gr/gr_threading.py \ - @abs_top_builddir@/gnuradio-core/src/python/gnuradio/gr/gr_threading_23.py \ - @abs_top_builddir@/gnuradio-core/src/python/gnuradio/gr/gr_threading_24.py \ - @abs_top_builddir@/gnuradio-core/src/tests \ - @abs_top_builddir@/gnuradio-core/src/utils \ - @abs_top_builddir@/gnuradio-examples/python/apps/hf_radio/output.py \ - @abs_top_builddir@/gnuradio-examples/python/apps/hf_radio/ui.py \ - @abs_top_builddir@/gr-atsc/src/lib/atsc.cc \ - @abs_top_builddir@/gr-atsc/src/lib/atsc.py \ - @abs_top_builddir@/gr-atsc/src/lib/gen_encoder.py \ - @abs_top_builddir@/gr-atsc/src/python \ - @abs_top_builddir@/gr-atsc/src/python \ - @abs_top_builddir@/gr-audio-alsa/src/audio-alsa.py \ - @abs_top_builddir@/gr-audio-oss/src/audio_oss.py \ - @abs_top_builddir@/gr-audio-osx/src/test_audio_loop.py \ - @abs_top_builddir@/gr-gsm-fr-vocoder/src/lib/gsm \ - @abs_top_builddir@/gr-gsm-fr-vocoder/src/lib/gsm_full_rate.py \ - @abs_top_builddir@/gr-gsm-fr-vocoder/src/python/encdec.py \ - @abs_top_builddir@/gr-howto-write-a-block \ - @abs_top_builddir@/gr-pager/src/pager_swig.py \ + @abs_top_builddir@/gnuradio-runtime/lib/runtime/gr_error_handler.cc \ + @abs_top_builddir@/gnuradio-runtime/swig \ + @abs_top_builddir@/gnuradio-runtime/python/build_utils.py \ + @abs_top_builddir@/gnuradio-runtime/python/build_utils_codes.py \ + @abs_top_builddir@/gnuradio-runtime/python/gnuradio/gr/gr_threading.py \ + @abs_top_builddir@/gnuradio-runtime/python/gnuradio/gr/gr_threading_23.py \ + @abs_top_builddir@/gnuradio-runtime/python/gnuradio/gr/gr_threading_24.py \ + @abs_top_builddir@/gr-atsc/swig/atsc_swig.py \ + @abs_top_builddir@/gr-atsc/lib/gen_encoder.py \ + @abs_top_builddir@/gr-atsc/python \ + @abs_top_builddir@/gr-pager/swig/pager_swig.py \ @abs_top_builddir@/gr-trellis/doc \ - @abs_top_builddir@/gr-trellis/src/lib/generate_all.py \ - @abs_top_builddir@/gr-trellis/src/lib/generate_trellis.py \ - @abs_top_builddir@/gr-trellis/src/lib/trellis.py \ - @abs_top_builddir@/gr-video-sdl/src/video_sdl.py \ - @abs_top_builddir@/gr-wxgui/src/python \ + @abs_top_builddir@/gr-trellis/swig/trellis_swig.py \ + @abs_top_builddir@/gr-video-sdl/swig/video_sdl_swig.py \ + @abs_top_builddir@/gr-wxgui/python \ @abs_top_builddir@/grc \ @abs_top_builddir@/_CPack_Packages \ @abs_top_srcdir@/cmake \ - @abs_top_srcdir@/gr-qtgui/lib \ - @abs_top_srcdir@/gr-howto-write-a-block + @abs_top_srcdir@/gr-utils/python/modtool/gr-newmod \ + @abs_top_srcdir@/docs/doxygen/doxyxml/example \ + @abs_top_srcdir@/docs/sphinx \ + @abs_top_srcdir@/gnuradio-runtime/lib \ + @abs_top_builddir@/gnuradio-runtime/lib \ + @abs_top_srcdir@/gr-analog/lib \ + @abs_top_builddir@/gr-analog/lib \ + @abs_top_srcdir@/gr-atsc/lib \ + @abs_top_builddir@/gr-atsc/lib \ + @abs_top_srcdir@/gr-audio/lib \ + @abs_top_builddir@/gr-audio/lib \ + @abs_top_srcdir@/gr-blocks/lib \ + @abs_top_builddir@/gr-blocks/lib \ + @abs_top_srcdir@/gr-channels/lib \ + @abs_top_builddir@/gr-channels/lib \ + @abs_top_srcdir@/gr-comedi/lib \ + @abs_top_builddir@/gr-comedi/lib \ + @abs_top_srcdir@/gr-digital/lib \ + @abs_top_builddir@/gr-digital/lib \ + @abs_top_srcdir@/gr-fcd/lib \ + @abs_top_builddir@/gr-fcd/lib \ + @abs_top_srcdir@/gr-fec/lib \ + @abs_top_builddir@/gr-fec/lib \ + @abs_top_srcdir@/gr-filter/lib \ + @abs_top_builddir@/gr-filter/lib \ + @abs_top_srcdir@/gr-noaa/lib \ + @abs_top_builddir@/gr-noaa/lib \ + @abs_top_srcdir@/gr-pager/lib \ + @abs_top_builddir@/gr-pager/lib \ + @abs_top_srcdir@/gr-qtgui/lib \ + @abs_top_builddir@/gr-qtgui/lib \ + @abs_top_srcdir@/gr-trellis/lib \ + @abs_top_builddir@/gr-trellis/lib \ + @abs_top_srcdir@/gr-uhd/lib \ + @abs_top_builddir@/gr-uhd/lib \ + @abs_top_srcdir@/gr-utils/lib \ + @abs_top_builddir@/gr-utils/lib \ + @abs_top_srcdir@/gr-video-sdl/lib \ + @abs_top_builddir@/gr-video-sdl/lib \ + @abs_top_srcdir@/gr-vocoder/lib \ + @abs_top_builddir@/gr-vocoder/lib \ + @abs_top_srcdir@/gr-wavelet/lib \ + @abs_top_builddir@/gr-wavelet/lib \ + @abs_top_srcdir@/gr-wxgui/lib \ + @abs_top_builddir@/gr-wxgui/lib # The EXCLUDE_SYMLINKS tag can be used select whether or not files or # directories that are symbolic links (a Unix filesystem feature) are excluded @@ -679,13 +682,11 @@ *app_top_block* \ *am_rx_graph* \ *_queue_watcher_thread* \ - *parse* \ *MyFrame* \ *MyApp* \ *PyObject* \ *wfm_rx_block* \ *_sptr* \ - *debug* \ *wfm_rx_sca_block* \ *tv_rx_block* \ *wxapt_rx_block* \ @@ -734,7 +735,7 @@ # info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER # is applied to all files. -FILTER_PATTERNS = *.py=@top_srcdir@/gnuradio-core/doc/other/doxypy.py +FILTER_PATTERNS = *.py=@top_srcdir@/docs/doxygen/other/doxypy.py # If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using # INPUT_FILTER) will be used to filter the input files when producing source @@ -862,12 +863,6 @@ HTML_STYLESHEET = -# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, -# files or namespaces will be aligned in HTML using tables. If set to -# NO a bullet list will be used. - -HTML_ALIGN_MEMBERS = YES - # If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML # documentation will contain sections that can be hidden and shown after the # page has loaded. For this to work a browser that supports @@ -1278,7 +1273,7 @@ # contain include files that are not input files but should be processed by # the preprocessor. -INCLUDE_PATH = @abs_top_builddir@/gruel/src/lib/pmt/ +INCLUDE_PATH = @abs_top_builddir@/gnuradio-runtime/lib/pmt/ # You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard # patterns (like *.h and *.hpp) to filter out the header-files in the diff -Nru gnuradio-3.6.1/docs/doxygen/Doxyfile.swig_doc.in gnuradio-3.7.1/docs/doxygen/Doxyfile.swig_doc.in --- gnuradio-3.6.1/docs/doxygen/Doxyfile.swig_doc.in 2012-06-11 15:36:37.000000000 +0000 +++ gnuradio-3.7.1/docs/doxygen/Doxyfile.swig_doc.in 2013-06-30 00:05:51.000000000 +0000 @@ -470,12 +470,6 @@ SHOW_USED_FILES = YES -# If the sources in your project are distributed over multiple directories -# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy -# in the documentation. The default is NO. - -SHOW_DIRECTORIES = NO - # Set the SHOW_FILES tag to NO to disable the generation of the Files page. # This will remove the Files entry from the Quick Index and from the # Folder Tree View (if specified). The default is YES. @@ -597,7 +591,7 @@ # excluded from the INPUT source files. This way you can easily exclude a # subdirectory from a directory tree whose root is specified with the INPUT tag. -EXCLUDE = @CMAKE_SOURCE_DIR@/gr-qtgui/lib +EXCLUDE = # The EXCLUDE_SYMLINKS tag can be used select whether or not files or # directories that are symbolic links (a Unix filesystem feature) are excluded @@ -796,12 +790,6 @@ HTML_STYLESHEET = -# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, -# files or namespaces will be aligned in HTML using tables. If set to -# NO a bullet list will be used. - -HTML_ALIGN_MEMBERS = YES - # If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML # documentation will contain sections that can be hidden and shown after the # page has loaded. For this to work a browser that supports @@ -950,11 +938,6 @@ GENERATE_TREEVIEW = NO -# By enabling USE_INLINE_TREES, doxygen will generate the Groups, Directories, -# and Class Hierarchy pages using a tree view instead of an ordered list. - -USE_INLINE_TREES = NO - # If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be # used to set the initial width (in pixels) of the frame in which the tree # is shown. diff -Nru gnuradio-3.6.1/docs/doxygen/README.doxyxml gnuradio-3.7.1/docs/doxygen/README.doxyxml --- gnuradio-3.6.1/docs/doxygen/README.doxyxml 2012-06-11 15:36:37.000000000 +0000 +++ gnuradio-3.7.1/docs/doxygen/README.doxyxml 2013-06-30 00:05:51.000000000 +0000 @@ -11,7 +11,7 @@ $ python swig_doc.py \ $(top_builddir)/docstrings/docs/doxygen/xml \ - $(top_srcdir)/gnuradio-core/src/lib/swig/swig_doc.i + $(top_srcdir)/gnuradio-runtime/swig/swig_doc.i This uses the XML output of Doxygen to to rebuild a SWIG file that contains all of the current Doxygen markups. diff -Nru gnuradio-3.6.1/docs/doxygen/doxyxml/doxyindex.py gnuradio-3.7.1/docs/doxygen/doxyxml/doxyindex.py --- gnuradio-3.6.1/docs/doxygen/doxyxml/doxyindex.py 2012-06-11 15:36:37.000000000 +0000 +++ gnuradio-3.7.1/docs/doxygen/doxyxml/doxyindex.py 2013-06-30 00:05:51.000000000 +0000 @@ -43,13 +43,16 @@ self._root = index.parse(os.path.join(self._xml_path, 'index.xml')) for mem in self._root.compound: converted = self.convert_mem(mem) - # For files we want the contents to be accessible directly - # from the parent rather than having to go through the file - # object. + # For files and namespaces we want the contents to be + # accessible directly from the parent rather than having + # to go through the file object. if self.get_cls(mem) == DoxyFile: if mem.name.endswith('.h'): self._members += converted.members() self._members.append(converted) + elif self.get_cls(mem) == DoxyNamespace: + self._members += converted.members() + self._members.append(converted) else: self._members.append(converted) @@ -227,7 +230,17 @@ __module__ = "gnuradio.utils.doxyxml" kind = 'namespace' - + + def _parse(self): + if self._parsed: + return + super(DoxyNamespace, self)._parse() + self.retrieve_data() + self.set_descriptions(self._retrieved_data.compounddef) + if self._error: + return + self.process_memberdefs() + Base.mem_classes.append(DoxyNamespace) @@ -278,7 +291,8 @@ __module__ = "gnuradio.utils.doxyxml" - kinds = set(['variable', 'struct', 'union', 'define', 'typedef', 'enum', 'dir', 'page']) + kinds = set(['variable', 'struct', 'union', 'define', 'typedef', 'enum', + 'dir', 'page', 'signal', 'slot', 'property']) @classmethod def can_parse(cls, obj): diff -Nru gnuradio-3.6.1/docs/doxygen/doxyxml/example/Doxyfile gnuradio-3.7.1/docs/doxygen/doxyxml/example/Doxyfile --- gnuradio-3.6.1/docs/doxygen/doxyxml/example/Doxyfile 2012-06-11 15:36:37.000000000 +0000 +++ gnuradio-3.7.1/docs/doxygen/doxyxml/example/Doxyfile 2013-05-01 23:57:50.000000000 +0000 @@ -476,12 +476,6 @@ SHOW_USED_FILES = YES -# If the sources in your project are distributed over multiple directories -# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy -# in the documentation. The default is NO. - -SHOW_DIRECTORIES = NO - # Set the SHOW_FILES tag to NO to disable the generation of the Files page. # This will remove the Files entry from the Quick Index and from the # Folder Tree View (if specified). The default is YES. @@ -808,12 +802,6 @@ HTML_TIMESTAMP = YES -# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, -# files or namespaces will be aligned in HTML using tables. If set to -# NO a bullet list will be used. - -HTML_ALIGN_MEMBERS = YES - # If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML # documentation will contain sections that can be hidden and shown after the # page has loaded. For this to work a browser that supports @@ -978,11 +966,6 @@ GENERATE_TREEVIEW = NO -# By enabling USE_INLINE_TREES, doxygen will generate the Groups, Directories, -# and Class Hierarchy pages using a tree view instead of an ordered list. - -USE_INLINE_TREES = NO - # If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be # used to set the initial width (in pixels) of the frame in which the tree # is shown. Binary files /tmp/cYEOh5mlFb/gnuradio-3.6.1/docs/doxygen/images/example_ofdm_packet_rx.png and /tmp/W3kUxTrcE2/gnuradio-3.7.1/docs/doxygen/images/example_ofdm_packet_rx.png differ Binary files /tmp/cYEOh5mlFb/gnuradio-3.6.1/docs/doxygen/images/ofdm_rx_core.png and /tmp/W3kUxTrcE2/gnuradio-3.7.1/docs/doxygen/images/ofdm_rx_core.png differ Binary files /tmp/cYEOh5mlFb/gnuradio-3.6.1/docs/doxygen/images/ofdm_tx_core.png and /tmp/W3kUxTrcE2/gnuradio-3.7.1/docs/doxygen/images/ofdm_tx_core.png differ diff -Nru gnuradio-3.6.1/docs/doxygen/other/build_guide.dox gnuradio-3.7.1/docs/doxygen/other/build_guide.dox --- gnuradio-3.6.1/docs/doxygen/other/build_guide.dox 2012-06-11 15:36:37.000000000 +0000 +++ gnuradio-3.7.1/docs/doxygen/other/build_guide.dox 1970-01-01 00:00:00.000000000 +0000 @@ -1,158 +0,0 @@ -/*! \page page_build Build Instructions and Information - -\section dependencies Dependencies - -The list of GNU Radio dependencies and the minimum required versions, -if any, to build the various GNU Radio components. - -Most of these components do not need to be individually compiled or -installed. Instead, rely on your operating system's package manager or -binary installation process (the apt-get system in Debian and -Ubuntu, yum in RedHat and Fedora, etc.). GNU Radio tries to keep an -up-to-date build guide for the majority of the supported operating -systems on gnuradio.org -(http://gnuradio.org/redmine/projects/gnuradio/wiki/BuildGuide). - -Not all dependencies are required for all components, and not all -components are required for a given installation. The list of required -components is determined by what the user requires from GNU Radio. If, -for example, you do not use any Comedi-based hardware, do not worry -about building gr-comedi. - -Before trying to build these from source, please try your system's -installation tool (apt-get, pkg_install, YaST, yum, urpmi, etc.) -first. Most recent systems have these packages available. - -\subsection dep_global Global Dependencies -\li git http://code.google.com/p/msysgit -\li cmake (>= 2.6) http://www.cmake.org/cmake/resources/software.html -\li boost (>= 1.35) http://www.boostpro.com/download -\li cppunit (>= 1.9.14) http://gaiacrtn.free.fr/cppunit/index.html -\li fftw3f (>= 3.0) http://www.fftw.org/install/windows.html - -\subsection dep_python Python Wrappers -\li python (>= 2.5) http://www.python.org/download/ -\li swig (>= 1.3.31) http://www.swig.org/download.html -\li numpy (>= 1.1.0) http://sourceforge.net/projects/numpy/files/NumPy/ - -\subsection dep_docs docs: Building the documentation -\li doxygen (>= 1.5) http://www.stack.nl/~dimitri/doxygen/download.html - -\subsection dep_grc grc: The GNU Radio Companion -\li Cheetah (>= 2.0) http://www.cheetahtemplate.org/ -\li pygtk (>= 2.10) http://www.pygtk.org/downloads.html - -\subsection dep_wavelet gr-wavelet: Collection of wavelet blocks -\li gsl (>= 1.10) http://gnuwin32.sourceforge.net/packages/gsl.htm - -\subsection dep_gr_qtgui gr-qtgui: The QT-based Graphical User Interface -\li qt (>= 4.4) http://qt.nokia.com/downloads/ -\li qwt (>= 5.2) http://sourceforge.net/projects/qwt/ -\li pyqt (>= 4.4) http://www.riverbankcomputing.co.uk/software/pyqt/download -\li pyqwt (>= 5.2) http://pyqwt.sourceforge.net/download.html - -\subsection dep_gr_wxgui gr-wxgui: The WX-based Graphical User Interface -\li wxpython (>= 2.8) http://www.wxpython.org/ -\li python-lxml (>= 1.3.6) http://lxml.de/ - -\subsection dep_gr_audio gr-audio: Audio Subsystems (system/OS dependent) -\li audio-alsa (>= 0.9) http://www.alsa-project.org -\li audio-jack (>= 0.8) http://jackaudio.org/ -\li portaduio (>= 19) http://www.portaudio.com/ -\li audio-oss (>= 1.0) http://www.opensound.com/oss.html -\li audio-osx -\li audio-windows - -It is not necessary to satisfy all of these dependencies; just the -one(s) that are right for your system. On Linux, don't expect -audio-osx and audio-windows to be either satisfied or built. - -\subsection dep_uhd uhd: The Ettus USRP Hardware Driver Interface -\li uhd (>= 3.0.0) http://code.ettus.com/redmine/ettus/projects/uhd/wiki - -\subsection dep_shd shd: The Symplex Hardware Driver Interface -\li shd (>= 3.0.0) - -\subsection dep_gr_video_sdl gr-video-sdl: PAL and NTSC display -\li SDL (>= 1.2.0) http://www.libsdl.org/download-1.2.php - -\subsection dep_gr_comedi gr-comedi: Comedi hardware interface -\li comedilib (>= 0.8) http://www.comedi.org/ - - - -\section build_gr_cmake Building GNU Radio - -GNU Radio is built using the Cmake build system -(http://www.cmake.org/). The standard build method is as follows: - -\code -$ mkdir $(builddir) -$ cd $(builddir) -$ cmake [OPTIONS] $(srcdir) -$ make -$ make test -$ sudo make install -\endcode - -The \$(builddir) is the directory in which the code is built. This -cannot be the same path as where the source code resides. Often, -\$(builddir) is \$(srcdir)/build. - -\subsection Cmake Options - -Options can be used to specify where to find various library or -include file dependencies that are not automatically being found -(-DCMAKE_PREFIX_PATH) or set the prefix -(-DCMAKE_INSTALL_PREFIX=(dir)). - -Components can also be enabled and disabled through the options. For a -component named *gr-comp*, the option to disable would look like: --DENABLE_GR_COMP=off. The "off" could also be "false" or "no", and -cmake is not case sensitive about these options. Similarly, "true", -"on", or "yes" will turn this component on. All components are enabled -by default. - -An example is -DENABLE_PYTHON=False turns off building any Python or -Swigging components. The result will be the GNU Radio libraries and -C++ programs/applications/examples. No Python or GRC files will be -built or installed. - -The -DENABLE_DEFAULT=False can be used to disable all -components. Individual components can then be selectively turned back -on. For example, just buidling the Volk and Gruel libraries can be -done with this: - -\code -cmake -DENABLE_DEFAULT=Off -DENABLE_VOLK=True -DENABLE_GRUEL=True -\endcode - - -The build type allows you to specify the build as a debug or release -version. Each type sets different flags for different purposes. To set -the build type, use: - -\code --DCMAKE_BUILD_TYPE="Release"|"Debug" -\endcode - -If not specified, the "Release" mode is the defaulted to. - -"Release" mode sets the '-O3' optimization flag. - -"Debug" mode sets '-g -O2' flags to export debug symbols and reduce -the optimization to make the libraries easier to debug and step -through. - - -\subsection build_gr_cmake_e100 Building for the E100 - -To build GNU Radio on the Ettus Research E100 embedded platforms, -Cmake has to know that the processors uses the NEON extensions. Use -the - -\code -cmake -DCMAKE_CXX_FLAGS:STRING="-mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp -g" \ - -DCMAKE_C_FLAGS:STRING="-mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp -g" \ - -\endcode diff -Nru gnuradio-3.6.1/docs/doxygen/other/ctrlport.dox gnuradio-3.7.1/docs/doxygen/other/ctrlport.dox --- gnuradio-3.6.1/docs/doxygen/other/ctrlport.dox 1970-01-01 00:00:00.000000000 +0000 +++ gnuradio-3.7.1/docs/doxygen/other/ctrlport.dox 2013-08-16 22:01:25.000000000 +0000 @@ -0,0 +1,349 @@ +/*! \page page_ctrlport ControlPort + +\section Introduction + +This is the ControlPort package. It is a tool to create distributed +control applications for GNU Radio. It provides blocks that can be +connected to an output stream to plot the signal remotely. It also +provides an API that allows blocks to export variables that can be +set, monitored, and plotted remotely. + +ControlPort-specific functions and utilities are found in the +'ctrlport' namespace. From Python, access is done using the +gnuradio.ctrlport module, imported as: + +\code + from gnuradio import ctrlport +\endcode + + +\section Dependencies + +ControlPort is an abstracted remote procedure call tool that. It is +built on top of other middleware libraries. Currently, the only +implemented middleware library is the Internet Communication Engine +(ICE). It is possible to replace this library with other similar +tools in such a way that the GNU Radio interface to ControlPort is +unchanged. However, most clients were purpose-built around ICE and +will need to be redone. + +ControlPort requires ZeroC's ICE and associated +libraries/headers/programs. ICE is generally installed into the +standard paths if using a software repo (like apt-get, yum, etc.). If +installed by hand, GNU Radio assumes ICE is installed into +/opt/Ice-3.4.2. If this is not the case, you can tell GNU Radio where +to find ICE by passing to cmake the following: + + -DICE_MANUAL_INSTALL_PATH=\ + + +\section conf Configuration + +ControlPort is configured using two files. The first is the GNU Radio +preferences file while the second file is specific to the type of +middleware used. Since we are focusing on using ICE, the configuration +file uses the ICE configuration file and format. + +The GNU Radio preferences file has three options. The 'on' option is +used to enable or disable the use of ControlPort, and is disabled by +default. The 'config' option allows a user to specify the +middleware-specific configuration file. The 'edges_list' is a special +option that exports the list of nodes and edges of the flowgraph +across ControlPort. This latter option is mainly used for redrawing +the flowgraph for the Performance Counter applications. + +\code + [ControlPort] + on = True + config = ctrlport.conf + edges_list = True +\endcode + +The ControlPort preferences are installed by default into +'gnuradio-runtime.conf'. These can always be overridden in the local +~/.gnuradio/config.conf file. + +En example ICE configuration file is installed as +$prefix/etc/gnuradio/ctrlport.conf.example. More information on how to +configure ICE can be found here: +http://doc.zeroc.com/display/Ice/Properties+and+Configuration + + +\section using Using ControlPort to Export Variables + +The ability to export variables from a block is inherited from +gr::block. Then, when the flowgraph is started, the function +setup_rpc() is called in turn for each block. By default, this +is an empty function. A block overloads this function and defines and +exports variables in it. + +Say we have a class gr::blocks::foo that has variables a +and b that we want to export. Specifically, we want to be able +to read the values of both a and b and also set the +value of b. The class gr::blocks::foo has setters and +getters all set up. So our class implementation header file looks +something like: + +\code +namespace gr { + namespace blocks { + + class foo_impl : public foo + { + private: + float d_a, d_b; + + public: + foo_impl(float a, float b); + ~foo_impl(); + + float a() const { return d_a; } + float b() const { return d_a; } + void set_a(float a) { d_a = a; } + void set_b(float b) { d_b = b; } + void setup_rpc(); + int work(int noutput_items, + gr_vector_const_void_star &input_items, + gr_vector_void_star &output_items); + }; + + } /* namespace blocks */ +} /* namespace gr */ +\endcode + +The source code then sets up the class and fills in +setup_rpc(). + +\code +namespace gr { + namespace blocks { + + foo_impl::foo_impl(float a, float b): + sync_bloc(....), + d_a(a), d_b(b) + { } + + foo_impl::~foo_impl() + { } + + void + foo_impl::setup_rpc() + { +#ifdef GR_CTRLPORT + add_rpc_variable( + rpcbasic_sptr(new rpcbasic_register_get( + alias(), "a", + &foo::a, + pmt::mp(-2.0f), pmt::mp(2.0f), pmt::mp(0.0f), + "", "Get value of a", RPC_PRIVLVL_MIN, + DISPTIME | DISPOPTSTRIP))); + + add_rpc_variable( + rpcbasic_sptr(new rpcbasic_register_get( + alias(), "b", + &foo::b, + pmt::mp(0.0f), pmt::mp(20.0f), pmt::mp(10.0f), + "", "Get value of b", RPC_PRIVLVL_MIN, + DISPTIME | DISPOPTSTRIP))); + + add_rpc_variable( + rpcbasic_sptr(new rpcbasic_register_set( + alias(), "b", + &foo::set_b, + pmt::mp(0.0f), pmt::mp(20.0f), pmt::mp(10.0f), + "", "Set value of b", RPC_PRIVLVL_MIN, + DISPNULL))); +#endif /* GR_CTRLPORT */ + } + + int + foo_impl::work(int noutput_items, + gr_vector_const_void_star &input_items, + gr_vector_void_star &output_items) + { .... } + + } /* namespace blocks */ +} /* namespace gr */ +\endcode + +In the above example, we're ignoring some of the basic semantics of +the class as a GNU Radio block and focus just on the call to set up +the get and set functions over ControlPort. Each block has a function +that allows us to add a new ControlPort interface object to a list, +the add_rpc_variable. We don't care about that list anymore; +that's for ControlPort to worry about. We just add new variables, +either setters or getters. + +Without dissecting every piece of the above calls, notice that we use +the public class, gr::blocks::foo as the class, not the +implementation class. We also use the block's alias, which GNU Radio +uses as a database entry to connect a block by name to the pointer in +memory. This allows ControlPort to know where the object in memory is +at any given time to access the setters and getters. + +The three PMTs specified are simply an expected minimum, maximum, and +default value. None of these are strictly enforced and only serve as +guides. The RPC_PRIVLVL_MIN is currently a placeholder for a +privilege level setting. In many cases, reading b might be +fine for everyone, but we want strong restrictions on who has the +ability to set b. + +And finally, we can specify display options to hint at the right way +to display this variable when remotely plotting it. More on that in +the following section. + +Finally, note that we put \#ifdefs around the code. We always want +setup_rpc to be there and callable, but if ControlPort was not +built for GNU Radio, we cannot register any variables with it. This is +just a nicety to allow us to set up our code for use with ControlPort +without requiring it. + + +\subsection alt_reg Alternative Registers + +If using the concept above, setup_rpc automatically gets called +when the flowgraph is started. In most instances, this is all we ever +need since there's nothing interesting going on until then. However, +if not using a gr::block or needing access before we run the flowgraph, +the above method won't work (it comes down to when the block's alias +has meaning). + +There are alternate variable registration functions for the sets and +gets. These take the form: + +\code + rpcbasic_register_get(const std::string& name, + const char* functionbase, + T* obj, + Tfrom (T::*function)(), + const pmt::pmt_t &min, const pmt::pmt_t &max, const pmt::pmt_t &def, + const char* units_ = "", + const char* desc_ = "", + priv_lvl_t minpriv_ = RPC_PRIVLVL_MIN, + DisplayType display_ = DISPNULL) + + rpcbasic_register_set(const std::string& name, + const char* functionbase, + T* obj, + void (T::*function)(Tto), + const pmt::pmt_t &min, const pmt::pmt_t &max, const pmt::pmt_t &def, + const char* units_ = "", + const char* desc_ = "", + priv_lvl_t minpriv_ = RPC_PRIVLVL_MIN, + DisplayType display_ = DISPNULL) +\endcode + +The only thing different about the above code is that instead of +taking a single 'alias()' name, which provides us access to the +objects pointer, we instead provide a unique name +(fucntionbase) and a pointer to the object itself +(obj). These are templated functions, so the class T is known +from that. + +If using this method, the recommended way is to create a new function +(not setup_rpc), register the variable using +add_rpc_variable but with the different register_get/set +shown here, and then call this function either in the object's +constructor or make it a public member function to be called when you +need it. + + +\section disp Display Options + +When exporting a new RPC variable over ControlPort, one argument is a +display options mask. These options are useful to a remote client to +tell identify activities like default plotters and initial +conditions. The gr-ctrlport-monitor application uses this +heavily in determining how to plot ControlPort variables. + +The options mask is just a 32-bit value with options OR'd +together. Certain options are only appropriate for certain types of +plots. Options on plots where that option is not available will +simply be ignored. + +The main caveat to be aware of is that the DISPXY plot type is +specific to complex values. Therefore, DISPOPTCPLX is assumed. + +These options are specified in rpccallbackregister_base.h and are +exposed through SWIG to live in the \b gr namespace. + +Plot Types +\li DISPNULL: Nothing specified. +\li DISPTIME: Time-domain plot. +\li DISPXY: XY or constellation plot (complex only). +\li DISPPSD: PSD plot. +\li DISPSPEC: Spectrogram plot. +\li DISPRAST: Time raster plot (non-complex only) + +Plot Options +\li DISPOPTCPLX: Signal is complex. +\li DISPOPTLOG: Start plot in semilog-y mode (time domain only). +\li DISPOPTSTEM: Start plot in stem mode (time domain only). +\li DISPOPTSTRIP: Run plot as a stripchart (time domain only). +\li DISPOPTSCATTER: Do scatter plot instead of lines (XY plot only). + + +\section probes ControlPort Probes + +ControlPort provides a set of probes that can be used as sinks that +pass vectors of data across ControlPort. These probes are used to +sample or visualize data remotely. We can place a ControlPort probe +anywhere in the flowgraph to grab the latest sample of data from the +block it's connected to. + +The main ControlPort probe to use is +blocks.ctrlport_probe2_x. From GRC, this is simply "CtrlPort +Probe", which can handle complex, floats, ints, shorts, and bytes. The +blocks are named and given a description to identify them over +ControlPort. The blocks also take a vector length for how many samples +to pass back at a time. Finally, these blocks take a display hint, +as described in the above section. This allows us to specify the +default behavior for how to display the samples. + +Another block that can be used is the fft.ctrlport_probe_psd to +calculate the PSD and pass that over the ControlPort interface. + +\section monitors ControlPort Monitors + +There are two main ControlPort monitor applications provided with GNU +Radio. Both act similarly. The first is a standard ControlPort monitor +application. This connects to a running flowgraph and displays all +exported interfaces in a table format. The name, unit, latest sample, +and description of all interfaces are display in a +row. Double-clicking will open up the default display. Right clicking +any item will allow the user to select the type of plot to use to +display the data. + +When a display is active, using the buttons at the top, the subwindows +can all be tiled or windowed as needed to manage the full +interface. We can then drag-and-drop any other item on top of a +currently running display plot. + +To launch the ControlPort monitor application, know the IP address and +port of the ControlPort endpoint established by the flowgraph and run: + +
+gr-ctrlport-monitor \ -p \
+
+ + +\subsection perfmonitor Performance Monitor + +A second application is used to locally redraw the flowgraph and +display some of the Performance Counters. In this application, the +nodes are blue boxes where the size of the box is proportional to the +work time and the color depth and line width are proportional to the +output buffer fullness. + +The controls at the top of the Performance Monitor application allow +us to select the instantaneous, average, and variance values of the +Performance Counters. And the work time and buffer fullness can be +displayed as a table or bar graph. + +To launch the Performance Monitor, run: + +
+gr-perf-monitorx \ -p \
+
+ +*/ diff -Nru gnuradio-3.6.1/docs/doxygen/other/extra_pages.dox gnuradio-3.7.1/docs/doxygen/other/extra_pages.dox --- gnuradio-3.6.1/docs/doxygen/other/extra_pages.dox 1970-01-01 00:00:00.000000000 +0000 +++ gnuradio-3.7.1/docs/doxygen/other/extra_pages.dox 2013-06-30 00:05:51.000000000 +0000 @@ -0,0 +1,325 @@ +/*! \page build_guide Build Instructions and Information + +\section dependencies Dependencies + +The list of GNU Radio dependencies and the minimum required versions, +if any, to build the various GNU Radio components. + +Most of these components do not need to be individually compiled or +installed. Instead, rely on your operating system's package manager or +binary installation process (the apt-get system in Debian and +Ubuntu, yum in RedHat and Fedora, etc.). GNU Radio tries to keep an +up-to-date build guide for the majority of the supported operating +systems on gnuradio.org +(http://gnuradio.org/redmine/projects/gnuradio/wiki/BuildGuide). + +Not all dependencies are required for all components, and not all +components are required for a given installation. The list of required +components is determined by what the user requires from GNU Radio. If, +for example, you do not use any Comedi-based hardware, do not worry +about building gr-comedi. + +Before trying to build these from source, please try your system's +installation tool (apt-get, pkg_install, YaST, yum, urpmi, etc.) +first. Most recent systems have these packages available. + +\subsection dep_global Global Dependencies +\li git http://code.google.com/p/msysgit +\li cmake (>= 2.6) http://www.cmake.org/cmake/resources/software.html +\li boost (>= 1.35) http://www.boostpro.com/download +\li cppunit (>= 1.9.14) http://gaiacrtn.free.fr/cppunit/index.html +\li fftw3f (>= 3.0) http://www.fftw.org/install/windows.html + +\subsection dep_python Python Wrappers +\li python (>= 2.5) http://www.python.org/download/ +\li swig (>= 1.3.31) http://www.swig.org/download.html +\li numpy (>= 1.1.0) http://sourceforge.net/projects/numpy/files/NumPy/ + +\subsection dep_docs docs: Building the documentation +\li doxygen (>= 1.5) http://www.stack.nl/~dimitri/doxygen/download.html + +\subsection dep_grc grc: The GNU Radio Companion +\li Cheetah (>= 2.0) http://www.cheetahtemplate.org/ +\li pygtk (>= 2.10) http://www.pygtk.org/downloads.html + +\subsection dep_wavelet gr-wavelet: Collection of wavelet blocks +\li gsl (>= 1.10) http://gnuwin32.sourceforge.net/packages/gsl.htm + +\subsection dep_gr_qtgui gr-qtgui: The QT-based Graphical User Interface +\li qt (>= 4.4) http://qt.nokia.com/downloads/ +\li qwt (>= 5.2) http://sourceforge.net/projects/qwt/ +\li pyqt (>= 4.4) http://www.riverbankcomputing.co.uk/software/pyqt/download +\li pyqwt (>= 5.2) http://pyqwt.sourceforge.net/download.html + +\subsection dep_gr_wxgui gr-wxgui: The WX-based Graphical User Interface +\li wxpython (>= 2.8) http://www.wxpython.org/ +\li python-lxml (>= 1.3.6) http://lxml.de/ + +\subsection dep_gr_audio gr-audio: Audio Subsystems (system/OS dependent) +\li audio-alsa (>= 0.9) http://www.alsa-project.org +\li audio-jack (>= 0.8) http://jackaudio.org/ +\li portaduio (>= 19) http://www.portaudio.com/ +\li audio-oss (>= 1.0) http://www.opensound.com/oss.html +\li audio-osx +\li audio-windows + +It is not necessary to satisfy all of these dependencies; just the +one(s) that are right for your system. On Linux, don't expect +audio-osx and audio-windows to be either satisfied or built. + +\subsection dep_uhd uhd: The Ettus USRP Hardware Driver Interface +\li uhd (>= 3.0.0) http://code.ettus.com/redmine/ettus/projects/uhd/wiki + +\subsection dep_gr_video_sdl gr-video-sdl: PAL and NTSC display +\li SDL (>= 1.2.0) http://www.libsdl.org/download-1.2.php + +\subsection dep_gr_comedi gr-comedi: Comedi hardware interface +\li comedilib (>= 0.8) http://www.comedi.org/ + +\subsection dep_gr_log gr-log: Logging Tools (Optional) +\li log4cpp (>= 1.0) http://log4cpp.sourceforge.net/ + + +\section build_gr_cmake Building GNU Radio + +GNU Radio is built using the Cmake build system +(http://www.cmake.org/). The standard build method is as follows: + +\code +$ mkdir $(builddir) +$ cd $(builddir) +$ cmake [OPTIONS] $(srcdir) +$ make +$ make test +$ sudo make install +\endcode + +The \$(builddir) is the directory in which the code is built. This +cannot be the same path as where the source code resides. Often, +\$(builddir) is \$(srcdir)/build. + +\subsection Cmake Options + +Options can be used to specify where to find various library or +include file dependencies that are not automatically being found +(-DCMAKE_PREFIX_PATH) or set the prefix +(-DCMAKE_INSTALL_PREFIX=(dir)). + +Components can also be enabled and disabled through the options. For a +component named *gr-comp*, the option to disable would look like: +-DENABLE_GR_COMP=off. The "off" could also be "false" or "no", and +cmake is not case sensitive about these options. Similarly, "true", +"on", or "yes" will turn this component on. All components are enabled +by default. + +An example is -DENABLE_PYTHON=False turns off building any Python or +Swigging components. The result will be the GNU Radio libraries and +C++ programs/applications/examples. No Python or GRC files will be +built or installed. + +The -DENABLE_DEFAULT=False can be used to disable all +components. Individual components can then be selectively turned back +on. For example, just buidling the Volk library can be +done with this: + +\code +cmake -DENABLE_DEFAULT=Off -DENABLE_VOLK=True +\endcode + + +The build type allows you to specify the build as a debug or release +version. Each type sets different flags for different purposes. To set +the build type, use: + +\code +-DCMAKE_BUILD_TYPE="Release"|"Debug" +\endcode + +If not specified, the "Release" mode is the defaulted to. + +"Release" mode sets the '-O3' optimization flag. + +"Debug" mode sets '-g -O2' flags to export debug symbols and reduce +the optimization to make the libraries easier to debug and step +through. + + +\subsection build_gr_cmake_e100 Building for the E100 + +To build GNU Radio on the Ettus Research E100 embedded platforms, +Cmake has to know that the processors uses the NEON extensions. Use +the + +\code +cmake -DCMAKE_CXX_FLAGS:STRING="-mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp -g" \ + -DCMAKE_C_FLAGS:STRING="-mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp -g" \ + +\endcode + +*/ + + + +/*! \page volk_guide Instructions for using Volk in GNU Radio + +\section volk_intro Introduction + +Volk is the Vector-Optimized Library of Kernels. It is a library that +contains kernels of hand-written SIMD code for different mathematical +operations. Since each SIMD architecture can be greatly different and +no compiler has yet come along to handle vectorization properly or +highly efficiently, Volk approaches the problem differently. For each +architecture or platform that a developer wishes to vectorize for, a +new proto-kernel is added to Volk. At runtime, Volk will select the +correct proto-kernel. In this way, the users of Volk call a kernel for +performing the operation that is platform/architecture agnostic. This +allows us to write portable SIMD code. + +Volk kernels are always defined with a 'generic' proto-kernel, which +is written in plain C. With the generic kernel, the kernel becomes +portable to any platform. Kernels are then extended by adding +proto-kernels for new platforms in which they are desired. + +A good example of a Volk kernel with multiple proto-kernels defined is +the volk_32f_s32f_multiply_32f_a. This kernel implements a scalar +multiplication of a vector of floating point numbers (each item in the +vector is multiplied by the same value). This kernel has the following +proto-kernels that are defined for 'generic,' 'avx,' 'sse,' and 'orc.' + +\code + void volk_32f_s32f_multiply_32f_a_generic + void volk_32f_s32f_multiply_32f_a_sse + void volk_32f_s32f_multiply_32f_a_avx + void volk_32f_s32f_multiply_32f_a_orc +\endcode + +These proto-kernels means that on platforms with AVX support, Volk can +select this option or the SSE option, depending on which is faster. On +other platforms, the ORC SIMD compiler might provide a solution. If +all else fails, Volk can fall back on the generic proto-kernel, which +will always work. + +Just a note on ORC. ORC is a SIMD compiler library that uses a generic +assembly-like language for SIMD commands. Based on the available SIMD +architecture of a system, it will try and compile a good +solution. Tests show that the results of ORC proto-kernels are +generally better than the generic versions but often not as good as +the hand-tuned proto-kernels for a specific SIMD architecture. This +is, of course, to be expected, and ORC provides a nice intermediary +step to performance improvements until a specific hand-tuned +proto-kernel can be made for a given platform. + +See Volk on +gnuradio.org for details on the Volk naming scheme. + + +\section volk_alignment Setting and Using Memory Alignment Information + +For Volk to work as best as possible, we want to use memory-aligned +SIMD calls, which means we have to have some way of knowing and +controlling the alignment of the buffers passed to gr_block's work +function. We set the alignment requirement for SIMD aligned memory +calls with: + +\code + const int alignment_multiple = + volk_get_alignment() / output_item_size; + set_alignment(std::max(1,alignment_multiple)); +\endcode + +The Volk function 'volk_get_alignment' provides the alignment of the +the machine architecture. We then base the alignment on the number of +output items required to maintain the alignment, so we divide the +number of alignment bytes by the number of bytes in an output items +(sizeof(float), sizeof(gr_complex), etc.). This value is then set per +block with the 'set_alignment' function. + +Because the scheduler tries to optimize throughput, the number of +items available per call to work will change and depends on the +availability of the read and write buffers. This means that it +sometimes cannot produce a buffer that is properly memory +aligned. This is an inevitable consequence of the scheduler +system. Instead of requiring alignment, the scheduler enforces the +alignment as much as possible, and when a buffer becomes unaligned, +the scheduler will work to correct it as much as possible. If a +block's buffers are unaligned, then, the scheduler sets a flag to +indicate as much so that the block can then decide what best to +do. The next section discusses the use of the aligned/unaligned +information in a gr_block's work function. + + +\section volk_work Using Alignment Properties in Work() + +The buffers passed to work/general_work in a gr_block are not +guaranteed to be aligned, but they will mostly be aligned whenever +possible. When not aligned, the 'is_unaligned()' flag will be set. So +a block can know if its buffers are aligned and make the right +decisions. This looks like: + +\code +int +gr_some_block::work (int noutput_items, + gr_vector_const_void_star &input_items, + gr_vector_void_star &output_items) +{ + const float *in = (const float *) input_items[0]; + float *out = (float *) output_items[0]; + + if(is_unaligned()) { + // do something with unaligned data. This can either be a manual + // handling of the items or a call to an unaligned Volk function. + volk_32f_something_32f_u(out, in, noutput_items); + } + else { + // Buffers are aligned; can call the aligned Volk function. + volk_32f_something_32f_a(out, in, noutput_items); + } + + return noutput_items; +} +\endcode + + + +\section volk_tuning Tuning Volk Performance + +VOLK comes with a profiler that will build a config file for the best +SIMD architecture for your processor. Run volk_profile that is +installed into $PREFIX/bin. This program tests all known VOLK kernels +for each architecture supported by the processor. When finished, it +will write to $HOME/.volk/volk_config the best architecture for the +VOLK function. This file is read when using a function to know the +best version of the function to execute. + +\subsection volk_hand_tuning Hand-Tuning Performance + +If you know a particular architecture works best for your processor, +you can specify the particular architecture to use in the VOLK +preferences file: $HOME/.volk/volk_config + +The file looks like: + +\code + volk_ +\endcode + +Where the "FUNCTION_NAME" is the particular function that you want to +over-ride the default value and "ARCHITECTURE" is the VOLK SIMD +architecture to use (generic, sse, sse2, sse3, avx, etc.). For +example, the following config file tells VOLK to use SSE3 for the +aligned and unaligned versions of a function that multiplies two +complex streams together. + +\code + volk_32fc_x2_multiply_32fc_a sse3 + volk_32fc_x2_multiply_32fc_u sse3 +\endcode + +\b Tip: if benchmarking GNU Radio blocks, it can be useful to have a +volk_config file that sets all architectures to 'generic' as a way to +test the vectorized versus non-vectorized implementations. + +*/ + + diff -Nru gnuradio-3.6.1/docs/doxygen/other/group_defs.dox gnuradio-3.7.1/docs/doxygen/other/group_defs.dox --- gnuradio-3.6.1/docs/doxygen/other/group_defs.dox 2012-06-11 15:36:37.000000000 +0000 +++ gnuradio-3.7.1/docs/doxygen/other/group_defs.dox 2013-06-30 00:05:51.000000000 +0000 @@ -8,31 +8,47 @@ * @{ */ -/*! \defgroup container_blk Top Block and Hierarchical Block Base Classes */ -/*! \defgroup source_blk Signal Sources */ -/*! \defgroup sink_blk Signal Sinks */ -/*! \defgroup filter_blk Filters */ -/*! \defgroup math_blk Mathematics */ -/*! \defgroup modulation_blk Signal Modulation */ -/*! \defgroup demodulation_blk Signal Demodulation */ -/*! \defgroup coding_blk Information Coding and Decoding*/ -/*! \defgroup sync_blk Synchronization */ -/*! \defgroup eq_blk Equalization */ -/*! \defgroup converter_blk Type Conversions */ -/*! \defgroup level_blk Signal Level Control (AGC) */ -/*! \defgroup dft_blk Fourier Transform */ -/*! \defgroup wavelet_blk Wavelet Transform */ -/*! \defgroup ofdm_blk OFDM Blocks */ -/*! \defgroup pager_blk Pager Blocks */ -/*! \defgroup misc_blk Miscellaneous Blocks */ -/*! \defgroup slicedice_blk Slicing and Dicing Streams */ -/*! \defgroup vocoder_blk Voice Encoders and Decoders */ -/*! \defgroup digital Digital Modulation Blocks */ -/*! \defgroup qtgui_blk QT Graphical Interfaces */ -/*! \defgroup uhd_blk UHD Interface */ -/*! \defgroup audio_blk Audio Interface */ -/*! \defgroup pfb_blk Polyphase Filterbank */ -/*! \defgroup snr_blk SNR estimators */ +/*! \defgroup container_blk Top Block and Hierarchical Block Base Classes */ +/*! \defgroup audio_blk Audio Signals */ +/*! \defgroup boolean_operators_blk Boolean Operators */ +/*! \defgroup byte_operators_blk Byte Operators */ +/*! \defgroup channel_models_blk Channel Models */ +/*! \defgroup channelizers_blk Channelizers */ +/*! \defgroup coding_blk Information Coding and Decoding */ +/*! \defgroup controlport_blk ControlPort */ +/*! \defgroup debug_tools_blk Debug Tools */ +/*! \defgroup deprecated_blk Deprecated */ +/*! \defgroup equalizers_blk Equalizers */ +/*! \defgroup error_coding_blk Error Coding and Decoding */ +/*! \defgroup fcd_blk FCD Interface */ +/*! \defgroup file_operators_blk File Operators */ +/*! \defgroup filter_blk Filters */ +/*! \defgroup fourier_analysis_blk Fourier Analysis */ +/*! \defgroup instrumentation_blk Instrumentation Tools */ +/*! \defgroup level_controllers_blk Level Controllers */ +/*! \defgroup math_operators_blk Math Operators */ +/*! \defgroup measurement_tools_blk Measurement Tools */ +/*! \defgroup message_tools_blk Message Tools */ +/*! \defgroup misc_blk Miscellaneous */ +/*! \defgroup modulators_blk Modulators and Demodulators */ +/*! \defgroup networking_tools_blk Netwroking Tools */ +/*! \defgroup noaa_blk NOAA Blocks */ +/*! \defgroup ofdm_blk OFDM Blocks */ +/*! \defgroup packet_operators_blk Packet/Frame Operators */ +/*! \defgroup peak_detectors_blk Peak Detectors */ +/*! \defgroup pager_blk Pager Blocks */ +/*! \defgroup qtgui_blk QT Graphical Interfaces */ +/*! \defgroup resamplers_blk Resamplers */ +/*! \defgroup stream_operators_blk Streams Operators */ +/*! \defgroup stream_tag_tools_blk Stream Tag Tools */ +/*! \defgroup symbol_coding_blk Symbol Coding */ +/*! \defgroup synchronizers_blk Synchronizers */ +/*! \defgroup trellis_coding_blk Trellis Coding */ +/*! \defgroup type_converters_blk Data Type Converters */ +/*! \defgroup uhd_blk UHD Interface */ +/*! \defgroup waveform_generators_blk Waveform Generators */ +/*! \defgroup wavelet_blk Wavelet Transforms */ +/*! \defgroup wxgui_blk WX Graphical Interfaces */ /*! * \defgroup base_blk Base classes for GR Blocks diff -Nru gnuradio-3.6.1/docs/doxygen/other/logger.dox gnuradio-3.7.1/docs/doxygen/other/logger.dox --- gnuradio-3.6.1/docs/doxygen/other/logger.dox 1970-01-01 00:00:00.000000000 +0000 +++ gnuradio-3.7.1/docs/doxygen/other/logger.dox 2013-06-30 00:05:51.000000000 +0000 @@ -0,0 +1,226 @@ +/*! \page page_logger Logging + +\section logging Logging + +GNU Radio has a logging interface to enable various levels of logging +information to be printed to the console or a file. The logger derives +from log4cpp (http://log4cpp.sourceforge.net/) which is readily +available in most Linux distributions. This is an optional dependency +and GNU Radio will work without it. + +When configuring GNU Radio, the -DENABLE_GR_LOG=On|Off option to cmake +will allow the user to toggle use of the logger on and off. The logger +defaults to "on" and will use log4cpp if it is available. If log4cpp +is not found, the default logging will output to standard output or +standard error, depending on the level of the log message. + +Logging is useful for blocks to print out certain amounts of data at +different levels. These levels are: + +
+    DEBUG < INFO < WARN < TRACE < ERROR < ALERT < CRIT < FATAL < EMERG
+
+ + +The order here determines the level of output. These levels are +hierarchical in that specifying any level also includes any level +above it. For example, when using the INFO level, all INFO and +higher messages are logged and DEBUG is ignored. A level NOTSET is provided +to disable a logger. + +\subsection configfile Logging Configuration + +The logging configuration can be found in the gnuradio-runtime.conf file +under the [LOG] section. This allows us fairly complete control over +the logging facilities. The main configuration functions are to set up +the level of the loggers and set the default output behavior of the +loggers. + +There are two default loggers that all gr_block's have access to: +d_logger and d_debug_logger. The first is a standard logger meant to +output simple information about the block while it is running. The +debug logger is meant for debugging purposes and is added to make it +convenient to use a secondary logger that outputs to a different +stream or file. + +The four main configure options are: + +
+  log_level = debug
+  debug_level = debug
+  log_file = stdout
+  debug_file = stderr
+
+ +This establishes the two loggers as having access to all levels of +logging events (DEBUG through EMERG). They are also configured not to +use files but instead output to the console. The standard logger will +output to standard out while the debug logger outputs to standard +error. + +Changing these last two lines to another value will create files that +are used to store the log messages. All messages are appended to the +file. + +When using either standard error or standard out, the messages for the +two different loggers will look like: + +
+  gr::log :\: \ - \
+  gr::debug :\: \ - \
+
+ +When using a file, the only difference in the format is that the +message prefix of "gr::log" or "gr::debug" is not used. Instead, the +time in milliseconds from the start of the program is inserted. + +Remember that a local "~/.gnuradio/config.conf" file can be used to +override any parameter in the global file (see \ref prefs for more +details). + +To use these loggers inside of a GNU Radio block, we use the protected +data members of d_logger and d_debug_logger of gr_block and pass them +to our pre-defined macros: + +\code + GR_LOG_(, ""); +\endcode + +Where \ is one of the levels as mentioned above, \ is +either d_logger or d_debug_logger, and \ is the +message we want to output. If we wanted to output an INFO level +message to the standard logger and a WARN level message to the debug +logger, it would look like this: + +\code + GR_LOG_INFO(d_logger, "Some info about the block"); + GR_LOG_WARN(d_debug_logger, "Some warning about the block"); +\endcode + +When this is printed to wherever you are directing the output of the +logger, it will look like: + +
+    gr::log :INFO:  - Some info about the block
+    gr::debug :WARN:  - Some warning about the block
+
+ +This provides us information about where the message came from, the +level of the message, and the block that generated the message. We use +the concept of the block's alias which by default (i.e., unless +otherwise set by the user) includes the name of the block and a unique +ID to distinguish it from other blocks of the same type. + +The various logging macros are defined in gr_logger.h. Here are some +simple examples of using them: + +\code + GR_LOG_DEBUG(LOG, "DEBUG message"); + GR_LOG_INFO(LOG, "INFO message"); + GR_LOG_NOTICE(LOG, "NOTICE message"); + GR_LOG_WARN(LOG, "WARNING message"); + GR_LOG_ERROR(LOG, "ERROR message"); + GR_LOG_CRIT(LOG, "CRIT message"); + GR_LOG_ALERT(LOG, "ALERT message"); + GR_LOG_FATAL(LOG, "FATAL message"); + GR_LOG_EMERG(LOG, "EMERG message"); +\endcode + +If the logger is not enabled, then these macros become nops and do +nothing (and d_logger and d_debug_logger are NULL pointers). If +logging is enabled but the log4cpp library is not found, then TRACE, +INFO, and NOTICE levels go to stdout and the rest to stderr. + + +\subsection adv_config Advanced Configuration Options + +If not using the simplified settings discussed above, where we can +direct the logger messages to either a file or one of the standard +outputs, we must use a more complicated configuration file. We do this +by specifying the "log_config" option in the [LOG] section. The +log4cpp documentation will provide more information on how +configuration works and looks. Mostly, a default configuration script +provided with GNU Radio can be used. After installation, the default +configuration script is located at: + +
+    $prefix/etc/gnuradio/gr_log_default.conf
+
+ +For the following examples, we will assume that our local +"~/.gnuradio/config.conf" looks like this: + +\code +[LOG] +log_config = /opt/gr/etc/gnuadio/gr_log_default.conf +log_level = debug +debug_level = Off +\endcode + +Inside of the default configuration file, we define the parameters +for the two logger's, the standard logger the separate debug logger. + +If the levels of the two loggers are specified in our configuration +file, as in the above example, these levels override any levels +specified in the XML file. Here, we have turned on the standard logger +(d_logger) to all levels and turned off the debug logger +(d_debug_logger). So even if the debug logger is used in the code, it +will not actually output any information. Conversely, any level of +output passed to the standard logger will output because we have +turned this value to the lowest level "debug." + +If both an XML configuration file is set and the "log_file" or +"debug_file" options are set at the same time, both systems are +actually used. So you can configure file access and the pattern +through the XML file while also still outputting to stdout or stderr. + + +\section advlog Advanced Usage + +The description above for using the logging facilities is specific to +GNU Radio blocks. We have put the code necessary to access the +debugger into the gr_block parent class to simplify access and make +sure all blocks have the ability to quickly and easily use the logger. + +For non gr_block-based code, we have to get some information about the +logger in order to properly access it. Each logger only exists once as +a singleton in the system, but we need to get a pointer to the right +logger and then set it up for our local use. The following code +snippet shows how to do this to get access to the standard logger, +which has a root of "gr_log." (access to the debug logger is similar +except we would use "gr_log_debug." in the GR_LOG_GETLOGGER call): + +\code + prefs *p = prefs::singleton(); + std::string log_file = p->get_string("LOG", "log_config", ""); + std::string log_level = p->get_string("LOG", "log_level", "off"); + GR_CONFIG_LOGGER(log_file); + GR_LOG_GETLOGGER(LOG, "gr_log." + "my_logger_name"); + GR_LOG_SET_LEVEL(LOG, log_level); +\endcode + +This creates a pointer called LOG (which is instantiated as a +log4cpp:LoggerPtr in the macro) that we can now use locally as the +input to our logging macros like 'GR_LOG_INFO(LOG, "message")'. + +\section logPy Logging from Python + +The logging capability has been brought out python via swig. The configuration +of the logger can be manipulated via the following calls: +\code + from gnuradio import gr + gr.logger_config(filename,watch_period) # Configures the logger with conf file filename + names = gr.logger_get_logger_names() # Returns the names of all loggers + gr.logger_reset_config() # Resets logger config by removing all appenders +\endcode + +Once the logger is configured you can manipulate a logger via a wrapper class gr.logger(). +You can isntantiate this by the following. (Reference logger.h for list of methods) +\code + from gnuradio import gr + log=gr.logger("nameOfLogger") + log.debug("Log a debug message") + log.set_level("INFO"); + +\endcode +*/ diff -Nru gnuradio-3.6.1/docs/doxygen/other/main_page.dox gnuradio-3.7.1/docs/doxygen/other/main_page.dox --- gnuradio-3.6.1/docs/doxygen/other/main_page.dox 2012-06-11 15:36:37.000000000 +0000 +++ gnuradio-3.7.1/docs/doxygen/other/main_page.dox 2013-08-16 22:01:25.000000000 +0000 @@ -14,7 +14,7 @@ \section build Building GNU Radio -See the \ref page_build page for details about the project's +See the \ref build_guide page for details about the project's dependencies and build process. @@ -37,7 +37,295 @@ \li \ref page_qtgui \li \ref page_uhd \li \ref page_vocoder + +More details on GNU Radio concepts: +\li \ref page_logger +\li \ref page_pmt +\li \ref page_msg_passing +\li \ref page_stream_tags +\li \ref page_metadata +\li \ref volk_guide +\li \ref page_perf_counters \li \ref page_pfb +\li \ref page_affinity +\li \ref page_tagged_stream_blocks +\li \ref page_ofdm +\li \ref page_packet_data + + +\section flowgraph Operating a Flowgraph + +The basic data structure in GNU Radio is the flowgraph, which +represents the connections of the blocks through which a continuous +stream of samples flows. The concept of a flowgraph is an acyclic +directional graph with one or more source blocks (to insert samples +into the flowgraph), one or more sink blocks (to terminate or export +samples from the flowgraph), and any signal processing blocks in +between. + +A program must at least create a GNU Radio 'top_block', which +represents the top-most structure of the flowgraph. The top blocks +provide the overall control and hold methods such as 'start,' 'stop,' +and 'wait.' + +The general construction of a GNU Radio application is to create a +gr_top_block, instantiate the blocks, connect the blocks together, and +then start the gr_top_block. The following program shows how this is +done. A single source and sink are used with a FIR filter between +them. + +\code + from gnuradio import gr, filter, analog + + class my_topblock(gr.top_block): + def __init__(self): + gr.top_block.__init__(self) + + amp = 1 + taps = filter.firdes.low_pass(1, 1, 0.1, 0.01) + + self.src = analog.noise_source_c(gr.GR_GAUSSIAN, amp) + self.flt = filter.fir_filter_ccf(1, taps) + self.snk = blocks.null_sink(gr.sizeof_gr_complex) + + self.connect(self.src, self.flt, self.snk) + + if __name__ == "__main__": + tb = my_topblock() + tb.start() + tb.wait() +\endcode + +The 'tb.start()' starts the data flowing through the flowgraph while +the 'tb.wait()' is the equivalent of a thread's 'join' operation and +blocks until the gr_top_block is done. + +An alternative to using the 'start' and 'wait' methods, a 'run' method is +also provided for convenience that is a blocking start call; +equivalent to the above 'start' followed by a 'wait.' + + +\subsection latency Latency and Throughput + +By default, GNU Radio runs a scheduler that attempts to optimize +throughput. Using a dynamic scheduler, blocks in a flowgraph pass +chunks of items from sources to sinks. The sizes of these chunks will +vary depending on the speed of processing. For each block, the number +of items is can process is dependent on how much space it has in its +output buffer(s) and how many items are available on the input +buffer(s). + +The consequence of this is that often a block may be called with a very +large number of items to process (several thousand). In terms of +speed, this is efficient since now the majority of the processing time +is taken up with processing samples. Smaller chunks mean more calls +into the scheduler to retrieve more data. The downside to this is that +it can lead to large latency while a block is processing a large chunk +of data. + +To combat this problem, the gr_top_block can be passed a limit on the +number of output items a block will ever receive. A block may get less +than this number, but never more, and so it serves as an upper limit +to the latency any block will exhibit. By limiting the number of items +per call to a block, though, we increase the overhead of the +scheduler, and so reduce the overall efficiency of the application. + +To set the maximum number of output items, we pass a value into the +'start' or 'run' method of the gr_top_block: + +\code + tb.start(1000) + tb.wait() +or + tb.run(1000) +\endcode + +Using this method, we place a global restriction on the size of items +to all blocks. Each block, though, has the ability to overwrite this +with its own limit. Using the 'set_max_noutput_items(m)' method for an +individual block will overwrite the global setting. For example, in +the following code, the global setting is 1000 items max, except for +the FIR filter, which can receive up to 2000 items. + +\code + tb.flt.set_max_noutput_items(2000) + tb.run(1000) +\endcode + +In some situations, you might actually want to restrict the size of +the buffer itself. This can help to prevent a buffer who is blocked +for data from just increasing the amount of items in its buffer, which +will then cause an increased latency for new samples. You can set the +size of an output buffer for each output port for every block. + +WARNING: This is an advanced feature in GNU Radio and should not be +used without a full understanding of this concept as explained below. + +To set the output buffer size of a block, you simply call: + +\code + tb.blk0.set_max_output_buffer(2000) + tb.blk1.set_max_output_buffer(1, 2000) + tb.start() + print tb.blk1.max_output_buffer(0) + print tb.blk1.max_output_buffer(1) +\endcode + +In the above example, all ports of blk0 are set to a buffer size of +2000 in _items_ (not bytes), and blk1 only sets the size for output +port 1, any and all other ports use the default. The third and fourth +lines just print out the buffer sizes for ports 0 and 1 of blk1. This +is done after start() is called because the values are updated based +on what is actually allocated to the block's buffers. + +NOTES: + +1. Buffer length assignment is done once at runtime (i.e., when run() +or start() is called). So to set the max buffer lengths, the +set_max_output_buffer calls must be done before this. + +2. Once the flowgraph is started, the buffer lengths for a block are +set and cannot be dynamically changed, even during a +lock()/unlock(). If you need to change the buffer size, you will have +to delete the block and rebuild it, and therefore must disconnect and +reconnect the blocks. + +3. This can affect throughput. Large buffers are designed to improve +the efficiency and speed of the program at the expense of +latency. Limiting the size of the buffer may decrease performance. + +4. The real buffer size is actually based on a minimum granularity of +the system. Typically, this is a page size, which is typically 4096 +bytes. This means that any buffer size that is specified with this +command will get rounded up to the nearest granularity (e.g., page) +size. When calling max_output_buffer(port) after the flowgraph is +started, you will get how many items were actually allocated in the +buffer, which may be different than what was initially specified. + + +\section reconfigure Reconfiguring Flowgraphs + +It is possible to reconfigure the flowgraph at runtime. The +reconfiguration is meant for changes in the flowgraph structure, not +individual parameter settings of the blocks. For example, changing the +constant in a gr::blocks::add_const_cc block can be done while the flowgraph is +running using the 'set_k(k)' method. + +Reconfiguration is done by locking the flowgraph, which stops it from +running and processing data, performing the reconfiguration, and then +restarting the graph by unlocking it. + +The following example code shows a graph that first adds two +gr::analog::noise_source_c blocks and then replaces the +gr::blocks::add_cc block with a gr::blocks::sub_cc block to then +subtract the sources. + +\code +from gnuradio import gr, analog, blocks +import time + +class mytb(gr.top_block): + def __init__(self): + gr.top_block.__init__(self) + + self.src0 = analog.noise_source_c(analog.GR_GAUSSIAN, 1) + self.src1 = analog.noise_source_c(analog.GR_GAUSSIAN, 1) + self.add = blocks.add_cc() + self.sub = blocks.sub_cc() + self.head = blocks.head(gr.sizeof_gr_complex, 1000000) + self.snk = blocks.file_sink(gr.sizeof_gr_complex, "output.32fc") + + self.connect(self.src0, (self.add,0)) + self.connect(self.src1, (self.add,1)) + self.connect(self.add, self.head) + self.connect(self.head, self.snk) + +def main(): + tb = mytb() + tb.start() + time.sleep(0.01) + + # Stop flowgraph and disconnect the add block + tb.lock() + tb.disconnect(tb.add, tb.head) + tb.disconnect(tb.src0, (tb.add,0)) + tb.disconnect(tb.src1, (tb.add,1)) + + # Connect the sub block and restart + tb.connect(tb.sub, tb.head) + tb.connect(tb.src0, (tb.sub,0)) + tb.connect(tb.src1, (tb.sub,1)) + tb.unlock() + + tb.wait() + +if __name__ == "__main__": + main() +\endcode + +During reconfiguration, the maximum noutput_items value can be changed +either globally using the 'set_max_noutput_items(m)' on the gr_top_block +object or locally using the 'set_max_noutput_items(m)' on any given +block object. + +A block also has a 'unset_max_noutput_items()' method that unsets the +local max noutput_items value so that block reverts back to using the +global value. + +The following example expands the previous example but sets and resets +the max noutput_items both locally and globally. + +\code +from gnuradio import gr, analog, blocks +import time + +class mytb(gr.top_block): + def __init__(self): + gr.top_block.__init__(self) + + self.src0 = analog.noise_source_c(analog.GR_GAUSSIAN, 1) + self.src1 = analog.noise_source_c(analog.GR_GAUSSIAN, 1) + self.add = blocks.add_cc() + self.sub = blocks.sub_cc() + self.head = blocks.head(gr.sizeof_gr_complex, 1000000) + self.snk = blocks.file_sink(gr.sizeof_gr_complex, "output.32fc") + + self.connect(self.src0, (self.add,0)) + self.connect(self.src1, (self.add,1)) + self.connect(self.add, self.head) + self.connect(self.head, self.snk) + +def main(): + # Start the gr_top_block after setting some max noutput_items. + tb = mytb() + tb.src1.set_max_noutput_items(2000) + tb.start(100) + time.sleep(0.01) + + # Stop flowgraph and disconnect the add block + tb.lock() + + tb.disconnect(tb.add, tb.head) + tb.disconnect(tb.src0, (tb.add,0)) + tb.disconnect(tb.src1, (tb.add,1)) + + # Connect the sub block + tb.connect(tb.sub, tb.head) + tb.connect(tb.src0, (tb.sub,0)) + tb.connect(tb.src1, (tb.sub,1)) + + # Set new max_noutput_items for the gr_top_block + # and unset the local value for src1 + tb.set_max_noutput_items(1000) + tb.src1.unset_max_noutput_items() + tb.unlock() + + tb.wait() + +if __name__ == "__main__": + main() +\endcode + \section volk_main Using Volk in GNU Radio @@ -45,7 +333,141 @@ and use Volk in GNU Radio blocks. Many blocks have already been converted to use Volk in their calls, so -they can also serve as examples. See the gr_complex_to_xxx.h file for -examples of various blocks that make use of Volk. +they can also serve as examples. See the +gr::blocks::complex_to_.h files for examples of various blocks +that make use of Volk. + + +\section prefs Configuration / Preference Files + +GNU Radio defines some of its basic behavior through a set of +configuration files located in +${prefix}/etc/gnuradio/conf.d. Different components have different +files listed in here for the various properties. These will be read +once when starting a GNU Radio application, so updates during runtime +will not affect them. + +The configuration files use the following format: + +\code +# Stuff from section 1 +[section1] +var1 = value1 +var2 = value2 # value of 2 + +# Stuff from section 2 +[section2] +var3 = value3 +\endcode + +In this file, the hash mark ('#') indicates a comment and blank lines +are ignored. Section labels are defined inside square brackets as a +group distinguisher. All options must be associated with a section +name. The options are listed one per line with the option name is +given followed by an equals ('=') sign and then the value. All section +and option names must not have white spaces (actually, all white +spaces are ignored). + +The value of an option can be a string or number and retrieved through +a few different interfaces. There is a single preference object +created when GNU Radio is launched. In Python, you can get this by +making a new variable: + +\code +p = gr.prefs() +\endcode + +Similarly, in C++, we get a reference to the object by explicitly +calling for the singleton of the object: + +\code + prefs *p = prefs::singleton(); +\endcode + +The methods associated with this preferences object are (from class gr::prefs): + +\code + bool has_section(string section) + bool has_option(string section, string option) + string get_string(string section, string option, string default_val) + bool get_bool(string section, string option, bool default_val) + long get_long(string section, string option, long default_val) + double get_double(string section, string option, double default_val) +\endcode + +When setting a Boolean value, we can use 0, 1, "True", "true", +"False", "false", "On", "on", "Off", and "off". + +All configuration preferences in these files can also be overloaded by +an environmental variable. The environmental variable is named based +on the section and option name from the configuration file as: + +\code + GR_CONF_
_