Once and for all, here is the properly updated Makefile.am for the apps
[debian/gnuradio] / README
1 #
2 # Copyright 2001,2002,2003,2004,2005,2006,2007,2009 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.5 or later       http://www.python.org
163
164 Python 2.5 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.
167
168
169 (5) Numpy python library   http://numeric.scipy.org
170
171 Provides a high performance array type for Python.
172 http://numpy.scipy.org
173 http://sourceforge.net/project/showfiles.php?group_id=1369&package_id=175103
174
175
176 (6) The Boost C++ Libraries (1.35 or later)  http://www.boost.org
177
178 We use Smart Pointers, the thread library and a bunch of other boost stuff.
179 If your system doesn't have boost 1.35 or later, see README.building-boost
180 for additional info.
181
182
183 (7) cppunit 1.9.14 or later.    http://cppunit.sourceforge.net
184
185 Unit testing framework for C++.
186
187
188 (8) Simple Wrapper Interface Generator.  http://www.swig.org
189
190 As of repository version 4045, gnuradio requires version 1.3.31 or newer.
191
192
193 (9) SDCC: Small Device C Compiler.  http://sdcc.sourceforge.net/
194
195 Use version 2.4.0 or later.
196
197 This includes a C compiler and linker for the 8051.  It's required to
198 build the firmware for the USRP.  If you don't have a USRP, don't
199 worry about it.
200
201
202 (10) Guile 1.6 or 1.8 
203
204 Scheme interpreter.  http://www.gnu.org/software/guile/guile.html
205
206
207 (11) GNU Scientific Library (gsl) 1.10 or later
208
209 The GNU Radio core library uses some routines from here.
210
211
212 Optional, but nice to have:
213
214 (12) wxPython.  Python binding for the wxWidgets GUI framework.  Use
215 version 2.8 or later.  Again, almost all systems have this
216 available.
217
218 As a last resort, build it from source (not recommended!)
219 http://www.wxpython.org
220
221 (13) xmlto version ? or later.   http://cyberelk.net/tim/xmlto/index.html
222
223 Wrapper for XML conversion tools to ease e.g. making html from docbook.
224
225 (14) Python Cheetah extensions 2.0.0 or later
226 (15) Python lxml wrappers 2.0.0 or later
227 (16) Python gtk wrappers 2.10.0 or later
228
229 The GNU Radio Companion application requires these additional Python libraries
230 to be installed.
231
232 ----------------------------------------------------------------
233
234 If you've got doxygen installed, the build process creates 
235 documentation for the 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.5/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