Just a few words about the new build system and things yet to be done. In addition to the switch from CVS to Subversion, GNU Radio is now managed as a single hierarchy of files, separated into individual component directories as before. However, the GNU Autotools-based build scripts that existed in each directory before have been replaced by a single top-level build:
http://gnuradio.org/trac/browser/gnuradio/trunk The single exception to this is the gr-how-to-write-a-block component, which has been left untouched, and is not built by the top-level build. This directory still demonstrates how to build a GNU Radio component "outside the tree," and can remain as a template to base your own projects from. >From the perspective of a user, you'll need to note several changes. First the entire repository is checked out; you no longer need to decide which directories apply and individually grab those or delete them from the ones gotten by the old gr-build setup: svn co http://gnuradio.utah.edu/svn/gnuradio/trunk gnuradio cd gnuradio The first thing to do is to run the ./bootstrap script found in the root of the source tree. This script runs the GNU Autotools and creates the top-level ./configure script. Then run this script: ./configure There are compile time dependencies both for the core libraries of GNU Radio as well as the remaining components. The top-level configuration script will abort if fundamental dependencies that all components depend upon (such as SWIG or Python) are not found. For the remainder, the top-level configuration will determine which components can or cannot be built based on the what it finds. For example, when running ./configure on a Linux machine, the gr-audio-windows component will fail its dependency check and not be marked for compilation. At the end of the ./configure process, a report is issued indicating which packages will and won't be built. The standard 'make', 'make check', and 'sudo make install' commands work as expected: make && make check sudo make install At this point, you have a fully installed version of GNU Radio. For GNU Radio developers: No .cc, .py, .i or .h files were harmed in the production of this new build system! All of the source code changes needed to consolidate the build into a top-level one were made in Makefile.am's or other related autotools files. A great deal of care was spent to ensure that all automated qa tests passed; there are a few exceptions noted below. The conversion to a single configure.ac was made by extracting the component specific configuration directives into a separate m4 macro for each component. These live down in the /config directory and start with the grc_ prefix. The configure.ac script invokes these in the correct order near the end after all the fundamental dependency checks are satisfied. One major change has been to have failed dependency checks mark a variable instead aborting the configuration. The script maintains a running list of successful components and uses that list to decide which subdirectories to recurse into. Since the top-level directory is now one higher than before, there have been many changes in paths to add the component subdirectory name. You'll see this in Makefile.am and other places. Finally, during the build, all references to include files, libraries, and Python modules occur from within the build tree hierarchy. This is because none of the prior components is installed into the filesystem. Additionally, the qa tests require some path hackery to make sure the loaded modules come from the build tree vs. the installed tree. Here are some component specific notes, including some things that are broken right now. gr-audio-osx: gr-audio-windows: I don't have access to either of these type of systems to test these out. All the changes have been applied similar to what has been done to other directories, but all that has been tested in the "failed dependency" code path. Please test and report bugs in Trac, or even better fix them and check in the code. :-) gr-audio-portaudio: The PKGCONFIG macro has been retained to check for the existence of portaudio >= 19. As I only have rev. 18, I cannot test this. gr-error-correcting-codes: The qa tests in the Python directory have been disabled in the Makefile.am. While configuration and compilation succeed, the non-standard layout of the library directories breaks the script. Overall: The build system works but has not been optimized. Over the next few days and weeks expect to see Eric and I refactoring some common things. And of course, there will be bugs I'll be fixing for a while yet... I will write up more notes as a I think of them and post to the list. Please feel free to report build system bugs in the Trac ticket system. At this point, I shall recall the infinite wisdom of Sir Winston Churchill: "GNU Autotools is the worst cross-platform configuration management system ever devised, except for all the rest." Or something like that :-) And once again, thanks go to Jay Lepreau and his team at the University of Utah's Flux Research Group for their generous hosting and network bandwidth. -Johnathan Corgan _______________________________________________ Discuss-gnuradio mailing list [email protected] http://lists.gnu.org/mailman/listinfo/discuss-gnuradio
