#!/bin/sh # $Id$ # Copyright 2008 Free Software Foundation. # # DO NOT RUN THIS SCRIPT UNTIL YOU UNDERSTAND IT!!! IT WILL REMOVE # FILES ON YOUR SYSTEM. # # Read the script thoroughly before running it; it will *remove* # /usr/local/gnuradio and repopulate it. # # This script provides a way to build GNU Radio modules individually, # and both serves as an example of using the component build system # and provides a way to test the build system. When run, it will # build and install each GNU Radio module in turn, using the # just-installed modules as prerequisites. It places the output of # each build in a separate file BUILD.NNN.options, so that one can do # 'tail -f BUILD.*' to see which components were successfully built. # This script is intended to be broadly portable; be careful when # modifying not to cause problems on systems that place dependencies # in other than /usr # # Besides GNU Radio dependencies, this program requires sudo, with a # timer long enough to build each module (or no password requirement). # set -x # Do not use /opt, because many systems do not have /opt and that # risks running out of space in /. /usr/local/gnuradio is believed to # be reasonable on all of *BSD and GNU/Linux. Probably this needs # OS-specific overrides. PREFIX=/usr/local/gnuradio echo "ABOUT TO COMPLETELY REMOVE $PREFIX in 10 SECONDS!" sleep 10 echo -n "README.components START "; date # This file provides an example of how to build GNU Radio under pkgsrc. # Avoid using rm -rf with $PREFIX, which could be /. Make a backup of # the old prefix. sudo rm -rf $PREFIX.old if [ -d $PREFIX ]; then sudo mv $PREFIX $PREFIX.old fi rm -rf BUILD.* # Bootstrap just once, rather than once per module. ./bootstrap # Determine where prereqs come from. export LDFLAGS= export CPPFLAGS= export PKG_CONFIG_PATH= if [ -d /usr/pkg ]; then # pkgsrc LDFLAGS="$LDFLAGS -L/usr/pkg/lib -R/usr/pkg/lib" CPPFLAGS="$CPPFLAGS -I/usr/pkg/include" # pkg-config is from pkgsrc, so already knows about /usr/pkg/lib/pkgconfig PKG_CONFIG_PATH="$PKG_CONFIG_PATH:$PREFIX/lib/pkgconfig" fi echo LDFLAGS ,$LDFLAGS, echo CPPFLAGS ,$CPPFLAGS, echo PKG_CONFIG_PATH ,$PKG_CONFIG_PATH, # Determine number of cpus and thus how many jobs to run. ncpus=1 case x`uname` in xNetBSD) ncpus=`sysctl hw.ncpu|awk '{print $3}'` ;; esac jflag=-j`expr $ncpus \* 2` # These are currently ignored. CONF_DOC_ARGS=" --enable-doxygen --enable-dot --enable-latex-docs " CONF_DISABLE_ALL="--disable-all-components" # We use % instead of ' ' to be able to iterate with /bin/sh's for. # This variable should list all possible arguments, in tsorted order. CONF_ENABLE_ARGS=" --enable-omnithread --with-omnithread%--enable-gnuradio-core --with-omnithread%--enable-pmt --with-omnithread%--with-pmt%--enable-mblock --with-omnithread%--with-pmt%--with-mblock%--enable-usrp --with-omnithread%--with-gnuradio-core%--with-pmt%--with-mblock%--with-usrp%--enable-gr-usrp --with-omnithread%--with-gnuradio-core%--with-pmt%--with-mblock%--enable-gr-msdd6000 --with-omnithread%--with-gnuradio-core%--with-pmt%--with-mblock%--enable-gr-audio-alsa --with-omnithread%--with-gnuradio-core%--with-pmt%--with-mblock%--enable-gr-audio-jack --with-omnithread%--with-gnuradio-core%--with-pmt%--with-mblock%--enable-gr-audio-oss --with-omnithread%--with-gnuradio-core%--with-pmt%--with-mblock%--enable-gr-audio-osx --with-omnithread%--with-gnuradio-core%--with-pmt%--with-mblock%--enable-gr-audio-portaudio --with-omnithread%--with-gnuradio-core%--with-pmt%--with-mblock%--enable-gr-audio-windows --with-omnithread%--with-gnuradio-core%--with-pmt%--with-mblock%--enable-gr-atsc --with-omnithread%--with-gnuradio-core%--with-pmt%--with-mblock%--enable-gr-comedi --with-omnithread%--with-gnuradio-core%--with-pmt%--with-mblock%--enable-gr-cvsd-vocoder --with-omnithread%--with-gnuradio-core%--with-pmt%--with-mblock%--with-usrp%--enable-gr-gpio --with-omnithread%--with-gnuradio-core%--with-pmt%--with-mblock%--enable-gr-gsm-fr-vocoder --with-omnithread%--with-gnuradio-core%--with-pmt%--with-mblock%--enable-gr-pager --with-omnithread%--with-gnuradio-core%--with-pmt%--with-mblock%--with-usrp%--enable-gr-radar-mono --with-omnithread%--with-gnuradio-core%--with-pmt%--with-mblock%--enable-gr-radio-astronomy --with-omnithread%--with-gnuradio-core%--with-pmt%--with-mblock%--enable-gr-trellis --with-omnithread%--with-gnuradio-core%--with-pmt%--with-mblock%--enable-gr-video-sdl --with-omnithread%--with-gnuradio-core%--with-pmt%--with-mblock%--enable-gr-wxgui --with-omnithread%--with-gnuradio-core%--with-pmt%--with-mblock%--with-usrp%--enable-gr-sounder --with-omnithread%--with-gnuradio-core%--with-pmt%--with-mblock%--with-usrp%--with-gr-usrp%--with-gr-wxgui%--enable-gr-utils --with-omnithread%--with-gnuradio-core%--with-pmt%--with-mblock%--enable-gnuradio-examples " seq=0 for arg in $CONF_ENABLE_ARGS; do # Convert sequence numbers and arguments to usable values. seqprint=`printf "%03d" $seq` argspace=`echo $arg | sed -e 's/%/ /g'` echo "BUILDING WITH $argspace" ( # configure with just one module ./configure --prefix=$PREFIX $CONF_DISABLE_ALL $argspace && # remove all prior objects make clean && # build make $jflag && # install sudo make install && echo "SUCCEEDED $argspace" ) > BUILD.$seqprint.$arg 2>&1 seq=`expr $seq + 1` done echo -n "README.components FINISH "; date