Updated README for gsl and GRC
[debian/gnuradio] / README
1 #
2 # Copyright 2001,2002,2003,2004,2005,2006,2007 Free Software Foundation, Inc.
3
4 # This file is part of GNU Radio
5
6 # GNU Radio is free software; you can redistribute it and/or modify
7 # it under the terms of the GNU General Public License as published by
8 # the Free Software Foundation; either version 3, or (at your option)
9 # any later version.
10
11 # GNU Radio is distributed in the hope that it will be useful,
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 # GNU General Public License for more details.
15
16 # You should have received a copy of the GNU General Public License
17 # along with GNU Radio; see the file COPYING.  If not, write to
18 # the Free Software Foundation, Inc., 51 Franklin Street,
19 # Boston, MA 02110-1301, USA.
20
21
22 Welcome to GNU Radio!
23
24
25 Please see http://gnuradio.org/trac for the wiki, bug tracking,
26 and source code viewer.  If you've got questions about GNU Radio, please
27 subscribe to the discuss-gnuradio mailing list and post your questions
28 there.  http://gnuradio.org/trac/wiki/MailingLists
29 There is also a "Build Guide" in the wiki that contains OS specific
30 recommendations.  See http://gnuradio.org/trac/wiki/BuildGuide
31
32
33 The bleeding edge code can be found in our subversion repository at
34 http://gnuradio.org/svn.  To checkout the latest, use this
35 command:
36
37   $ svn co http://gnuradio.org/svn/gnuradio/trunk gnuradio
38
39 For information about subversion, please see:
40   http://subversion.tigris.org/
41
42
43 How to Build GNU Radio:
44
45   (1) Ensure that you've satisfied the external dependencies listed
46       below.  The word "system" is used to mean "operating system
47       and/or distribution", and means a full operating system,
48       including kernel, user-space utilties, and a packaging system
49       for additional software.  On Linux, this means what
50       "distribution" means.
51
52       With the exception of SDCC, the following GNU/Linux
53       distributions are known to come with all required dependencies
54       pre-packaged: Ubuntu 8.10, SuSE 10.0 (the pay version, not the
55       free download), Fedora Core 9.  Other distribution may work too.
56       We know these three are easy.  The required packages may be
57       contained on your installation CD/DVD, or may be loaded over the
58       net.  The specifics vary depending on your GNU/Linux
59       distribution.
60
61       On systems using pkgsrc (e.g. NetBSD and Dragonfly), build
62       meta-packages/gnuradio, which will build a previous release and
63       force installation of the dependencies.  Then pkg_delete the
64       gnuradio and usrp packages, which will leave the dependencies.
65       (This should also work on OSX.)
66
67       See the wiki at http://gnuradio.org/trac/wiki for details.
68
69
70   (2) do the "usual dance"
71
72       $ ./bootstrap        # not reqd when building from the tarball
73       $ ./configure
74       $ make && make check
75       $ sudo make install
76
77
78 That's it!
79
80
81 -------------------------------------------------------------------------------
82
83                        KNOWN INCOMPATIBILITIES
84
85
86   GNU Radio triggers bugs in g++ 3.3 for X86.  DO NOT USE GCC 3.3 on
87   the X86 platform.  g++ 3.2, 3.4, and the 4.* series are known to work well.
88
89 -------------------------------------------------------------------------------
90
91 -------------------------------------------------------------------------------
92
93                           External dependencies
94
95 -------------------------------------------------------------------------------
96
97 Prerequisites: Before trying to build these from source, please try
98 your system's installation tool (apt-get, pkg_install, YaST, yum,
99 urpmi, etc.) first.  Most recent systems have these packages
100 available.
101
102 You'll need to do a bit of sleuthing to figure out what your OS and
103 packaging system calls these.  If your system uses the convention of
104 splitting files needed to run programs compiled with foo and files
105 needed to do the compilation into packages named foo and foo-devel,
106 install both packages.  (Most GNU/Linux systems are like this, but
107 pkgsrc is not and instead uses -devel to indicate a package of a
108 not-yet-released or unstable version.)
109
110 For those using pkgsrc, see gnuradio-pkg_chk.conf.  Those not using
111 pkgsrc may also find the list useful.
112
113 (0) GNU make
114
115 It used to be required to have a "reasonable make", meaning GNU make,
116 BSD make, or perhaps Solaris make.  It is now required to use GNU
117 make.  Version 3.81 should certainly work; the intent is not to
118 require the bleeding edge.
119
120 Note that the examples below are written with "make".  They probably
121 should say "gmake", as GNU make is installed as gmake when it is not
122 the native make.
123
124 (1) The "autotools"
125
126        autoconf 2.57    or later
127        automake 1.7.4   or later
128        libtool  1.5     or later
129
130 If your system has automake-1.4, there's a good chance it also has
131 automake-1.7 or later.  Check your install disk and/or (on GNU/Linux)
132 try:
133
134   $ man update-alternatives
135
136 for info on how some distributions support multiple versions.
137
138
139 (2)  pkgconfig 0.15.0 or later  http://www.freedesktop.org/Software/pkgconfig
140
141 From the web site:
142
143 pkgconfig is a system for managing library compile/link flags that
144 works with automake and autoconf. It replaces the ubiquitous *-config
145 scripts you may have seen with a single tool.
146
147
148 (3)  FFTW 3.0 or later        http://www.fftw.org
149
150 IMPORTANT!!!  When building FFTW, you MUST use the --enable-single and
151 --enable-shared configure options.  This builds the single precision
152 floating point version which we use.  You should also use either the
153 --enable-3dnow or --enable-sse options if you're on an Athlon or Pentium
154 respectively.
155
156 [FIXME: GNU/Linux packages of single-precision fftw are typically called ??]
157
158 In systems using pkgsrc, install math/fftwf, which provides the
159 single-precision libraries.
160
161
162 (4) Python 2.3 or later       http://www.python.org
163
164 Python 2.3 or later is now required.  If your system splits
165 python into a bunch of separate packages including python-devel or
166 libpython you'll most likely need those too. The GNU Radio Companion 
167 application requires Python 2.5 or later.
168
169
170 (5) Numpy python library   http://numeric.scipy.org
171
172 Provides a high performance array type for Python.
173 http://numpy.scipy.org
174 http://sourceforge.net/project/showfiles.php?group_id=1369&package_id=175103
175
176
177 (6) The Boost C++ Libraries (1.35 or later)  http://www.boost.org
178
179 We use Smart Pointers, the thread library and a bunch of other boost stuff.
180 If your system doesn't have boost 1.35 or later, see README.building-boost
181 for additional info.
182
183
184 (7) cppunit 1.9.14 or later.    http://cppunit.sourceforge.net
185
186 Unit testing framework for C++.
187
188
189 (8) Simple Wrapper Interface Generator.  http://www.swig.org
190
191 As of repository version 4045, gnuradio requires version 1.3.31 or newer.
192
193
194 (9) SDCC: Small Device C Compiler.  http://sdcc.sourceforge.net/
195
196 Use version 2.4.0 or later.
197
198 This includes a C compiler and linker for the 8051.  It's required to
199 build the firmware for the USRP.  If you don't have a USRP, don't
200 worry about it.
201
202 (10) Guile 1.6 or 1.8 
203
204 Scheme interpreter.  http://www.gnu.org/software/guile/guile.html
205
206 (11) GNU Scientific Library (gsl) 1.10 or later
207
208 The GNU Radio core library uses some routines from here.
209
210
211 Optional, but nice to have:
212
213 (12) wxPython.  Python binding for the wxWidgets GUI framework.  Use
214 version 2.5.2.7 or later.  Again, almost all systems have this
215 available.
216
217 As a last resort, build it from source (not recommended!)
218 http://www.wxpython.org
219
220 (13) xmlto version ? or later.   http://cyberelk.net/tim/xmlto/index.html
221
222 Wrapper for XML conversion tools to ease e.g. making html from docbook.
223
224 (14) Python Cheetah extensions 2.0.0 or later
225 (15) Python lxml wrappers 2.0.0 or later
226 (16) Python gtk wrappers 2.10.0 or later
227
228 The GNU Radio Companion application requires these additional Python libraries
229 to be installed.
230
231 ----------------------------------------------------------------
232
233 If you've got doxygen installed and provide the --enable-doxygen
234 configure option, the build process creates documentation for the
235 class hierarchy etc.  Point your browser at
236 gnuradio/gnuradio-core/doc/html/index.html
237
238
239 To run the examples you may need to set PYTHONPATH.  Note that the
240 prefix and python version number in the path needs to match your
241 installed version of python.
242
243   $ export PYTHONPATH=/usr/local/lib/python2.4/site-packages
244
245 You may want to add this to your shell init file (~/.bash_profile if
246 you use bash).
247
248
249
250 Another handy trick if for example your fftw includes and libs are
251 installed in, say ~/local/include and ~/local/lib, instead of
252 /usr/local is this:
253
254     $ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HOME/local/lib
255     $ make CPPFLAGS="-I$HOME/local/include"
256
257
258 Sometimes the prerequisites are installed in a location which is not
259 included in the default compiler and linker search paths.  This
260 happens with pkgsrc and NetBSD.  To build, tell configure to use these
261 locations:
262
263         LDFLAGS="-L/usr/pkg/lib -R/usr/pkg/lib" CPPFLAGS="-I/usr/pkg/include" ./configure --prefix=/usr/gnuradio
264