eb72b1d6fbd873d86b011156b545d8b939e307bd
[debian/gnuradio] / README.components
1 #!/bin/sh
2  
3 # $Id$
4
5 # Copyright 2008 Free Software Foundation.
6 #
7 # This script provides a way to build GNU Radio modules individually,
8 # and both serves as an example of using the component build system
9 # and provides a way to test that build system.  This script is
10 # intended to be broadly portable; be careful when modifying not to
11 # cause problems on systems that place dependencies in other than /usr
12 #
13 # Besides GNU Radio dependencies, this program requires sudo, with a
14 # timer long enough to build each module (or no password requirement).
15 #
16 # Read the script thoroughly before running it; it will *remove*
17 # /usr/gnuradio and repopulate it.
18
19 set -x
20
21 PREFIX=/usr/gnuradio
22
23 echo -n "README.components START "; date
24
25 # This file provides an example of how to build GNU Radio under pkgsrc.
26
27 # Avoid using rm -rf with $PREFIX, which could be /.  Make a backup of
28 # the old prefix.
29 sudo rm -rf $PREFIX.old
30 if [ -d $PREFIX ]; then
31     sudo mv $PREFIX $PREFIX.old
32 fi
33 rm -rf BUILD.*
34
35 # Bootstrap just once, rather than once per module.
36 ./bootstrap
37
38 # Determine where prereqs come from.
39 export LDFLAGS=
40 export CPPFLAGS=
41 export PKG_CONFIG_PATH=
42 if [ -d /usr/pkg ]; then
43     # pkgsrc
44     LDFLAGS="$LDFLAGS -L/usr/pkg/lib -R/usr/pkg/lib"
45     CPPFLAGS="$CPPFLAGS -I/usr/pkg/include"
46
47     # pkg-config is from pkgsrc, so already knows about /usr/pkg/lib/pkgconfig
48     PKG_CONFIG_PATH="$PKG_CONFIG_PATH:$PREFIX/lib/pkgconfig"
49 fi
50
51 echo LDFLAGS ,$LDFLAGS,
52 echo CPPFLAGS ,$CPPFLAGS,
53 echo PKG_CONFIG_PATH ,$PKG_CONFIG_PATH,
54
55 # Determine number of cpus and thus how many jobs to run.
56 ncpus=1
57 case x`uname` in
58     xNetBSD)
59         ncpus=`sysctl hw.ncpu|awk '{print $3}'`
60         ;;
61 esac
62 jflag=-j`expr $ncpus \* 2`
63
64 # These are currently ignored.
65 CONF_DOC_ARGS="
66 --enable-doxygen
67 --enable-dot
68 --enable-latex-docs
69 "
70 CONF_DISABLE_ALL="--disable-all-components"
71
72 # We use % instead of ' ' to be able to iterate with /bin/sh's for.
73 CONF_ENABLE_ARGS="
74 --enable-omnithread
75 --with-omnithread%--enable-pmt
76 --with-omnithread%--with-pmt%--enable-mblock
77 --with-omnithread%--enable-gnuradio-core
78 --with-omnithread%--with-pmt%--with-mblock%--enable-usrp
79 --with-omnithread%--with-gnuradio-core%--with-pmt%--with-mblock%--with-usrp%--enable-gr-usrp
80 --with-omnithread%--with-gnuradio-core%--with-pmt%--with-mblock%--enable-gr-audio-oss
81 --with-omnithread%--with-gnuradio-core%--with-pmt%--with-mblock%--enable-gr-atsc
82 --with-omnithread%--with-gnuradio-core%--with-pmt%--with-mblock%--enable-gr-wxgui
83 --with-omnithread%--with-gnuradio-core%--with-pmt%--with-mblock%--with-usrp%with-gr-wxgui%--enable-gr-utils
84 --with-omnithread%--with-gnuradio-core%--with-pmt%--with-mblock%--enable-gnuradio-examples
85 "
86
87 # These are not used, but a list of what the script does not build.
88 CONF_DISABLE_ARGS="
89 --enable-gr-comedi
90 --enable-gr-cvsd-vocoder
91 --enable-gr-gpio
92 --enable-gr-gsm-fr-vocoder
93 --enable-gr-pager
94 --enable-gr-radar-mono
95 --enable-gr-radio-astronomy
96 --enable-gr-trellis
97 --enable-gr-video-sdl
98 --enable-gr-sounder
99 "
100
101 seq=0
102 for arg in $CONF_ENABLE_ARGS; do
103
104     # Convert sequence numbers and arguments to usable values.
105     seqprint=`printf "%03d" $seq`
106     argspace=`echo $arg | sed -e 's/%/ /g'`
107
108     echo "BUILDING WITH $argspace"
109
110     (
111     # configure with just one module
112     ./configure --prefix=$PREFIX $CONF_DISABLE_ALL $argspace &&
113
114     # build
115     make $jflag &&
116
117     # install
118     sudo make install &&
119
120     echo "SUCCEEDED $argspace"
121
122     ) > BUILD.$seqprint.$arg 2>&1
123
124     seq=`expr $seq + 1`
125 done
126
127 echo -n "README.components FINISH "; date