* configure.in: bump GCC requirements to 3.x
[lilypond.git] / Documentation / topdocs / INSTALL.texi
blob7581d9c4f0f503a2c48ecc81c8126b5a0c4b38cc
1 @node Top, , , (dir)
2 @top
3 @comment  node-name,  next,  previous,  up\input texinfo @c -*-texinfo-*-
4 @setfilename INSTALL.info
5 @settitle INSTALL - compiling and installing GNU LilyPond
7 @html
8 <!--- @@WEB-TITLE@@=Installation Instructions --->
9 @end html
11 @contents
13 @chapter Compiling and installing on Unix
16 @html
17 <a name="download-source">
18 @end html
20 @section Downloading
22 Even numbered versions are `stable'. The webpages for the stable version
23 (1.4) reside @uref{http://www.gnu.org/software/lilypond, on the GNU
24 servers}. Big enhancements go into the latest odd numbered version
25 (1.5), whose webpages are on @uref{http://www.lilypond.org/,the lilypond
26 site}.
28 Building LilyPond is an involved process. We advise to use binary
29 packages if these are available for your platform.
33 @subsection Source code
35 Download source tarballs from here:
36 @itemize @bullet
37 @item Download development releases from
38 @uref{ftp://ftp.lilypond.org/pub/LilyPond/} by FTP and
39 @uref{http://www.lilypond.org/ftp/} by HTTP.
40 @item @uref{ftp://sca.uwaterloo.ca/pub/} by FTP (Canadian mirror).
41 @end itemize
44 Use Xdelta to patch tarballs, e.g. to patch  
45 @file{lilypond-1.4.2.tar.gz} to @file{lilypond-1.4.3.tar.gz}, do
46 @example
47         xdelta patch lilypond-1.4.2-1.4.3.xd lilypond-1.4.2.tar.gz
48 @end example
50 For information on packaging and CVS, see  
51 @uref{http://lilypond.org/}, under ``develoment''.
54 @subsection Precompiled binaries
56 Check out @uref{http://lilypond.org} for up to date information on
57 binary packages.
60 @subsection Font problems
62 If you are upgrading from a previous version of LilyPond, be sure to
63 remove all old font files. These include @file{.pk} and @file{.tfm} files
64 that may be located in @file{/var/lib/texmf}, @file{/var/spool/texmf},
65 @file{/var/tmp/texmf} or @file{@var{prefix}/share/lilypond/fonts/}.  A
66 script automating this has been included, see
67 @file{buildscripts/clean-fonts.sh}.
72 @section Requirements
74 @subsection Compilation
76 You need the following packages to compile LilyPond:
78 @itemize
79 @item
80  @uref{http://gcc.gnu.org/,
81 The GNU c++ compiler} (version 3.1 or newer).
82 EGCS and 2.x are known to cause crashes.
84 @item @uref{http://www.python.org,Python} (version 2.1 or newer).
86 @item @uref{http://www.gnu.org/software/guile/guile.html,GUILE} (version 1.6.0 or newer).
88 @item @uref{ftp://ftp.gnu.org/gnu/make/,GNU Make} (version 3.78 or newer).
90 @item  @uref{http://www.gnu.org/software/flex/,Flex} (version 2.5.4a or newer). 
92 WARNING: plain Flex 2.5.4(a) generates invalid C++ code.  GCC 3.x
93 chokes on this.  If you wish to use GCC 3.x, make sure that your
94 distribution supports g++ 3.x and flex.  For workarounds, see
95 lexer-gcc-3.1.sh in the source directory.
97 @item @uref{http://www.gnu.org/software/bison/,Bison} (version 1.25 or
98 newer, but not 1.50 or 1.75).
100 @item @TeX{}.
102 @TeX{} is used as an output backend.
104 Also, @TeX{}'s libkpathsea is used to find the fonts (@file{.mf},
105 @file{.afm}, @file{.tfm}).  Make sure you have tetex 1.0 or newer
106 (1.0.6 is known to work).  You may need to install a tetex-devel (or
107 tetex-dev or libkpathsea-dev) package too.
109 @item @uref{ftp://ftp.gnu.org/gnu/texinfo/,Texinfo} (version 4.2 or newer).
111 @item The
112 @uref{ftp://ftp.ctan.org/tex-archive/macros/latex/contrib/supported/geometry,geometry
113 package for LaTeX}.
115  This package is normally included with the @TeX{} distribution.
117 @item kpathsea, a library for searching (@TeX{}) files.
119 @ignore
120 @code{kpathsea} is
121 usually included with your installation of @TeX{}.  You may need to
122 install a tetex-devel or tetex-dev package too. If kpathsea is not
123 installed in a directory where the compiler normally looks, read the
124 hints for Slackware below.
126 In the very unlikely case that kpathsea is not available for your
127 platform (i.e., you're not running GNU/Linux, Windows, or any recent
128 UNIX), you can compile LilyPond without kpathsea support.  In that case,
129 you'll probably have to indicate where @TeX{}'s tfm files live.  Invoke
130 configure something like:
132 @quotation
133 @example
134         ./configure --without-kpathsea --enable-tfm-path=/usr/share/texmf/fonts/tfm/public/cm/:/usr/share/texmf/fonts/tfm/ams/symbols
135 @end example
136 @end quotation
137 @end ignore
139 @end itemize
141 @subsection Running requirements
143 GNU LilyPond does use a lot of resources. For operation you need the
144 following software:
146 @itemize @bullet
147 @item @TeX{}.
148 @item Xdvi and Ghostscript.
149 @item @uref{http://www.gnu.org/software/guile/guile.html,GUILE} 1.6.0, or newer.
150 @end itemize
152 For running LilyPond successfully
154 You have to help @TeX{} and MetaFont find LilyPond support
155 files. After compiling, scripts to do this can be found in
156 @file{buildscripts/out/lilypond-profile} and
157 @file{buildscripts/out/lilypond-login}.
159 @subsection Building documentation
161 You can view the documentation online at
162 @uref{http://www.lilypond.org/doc/}, but you can also build it
163 locally. This process requires a successful compile of lilypond. The
164 documentation is built by issuing:
165 @example 
166         make web
167 @end example 
169 Building the website requires some additional tools: 
171 @itemize @bullet
172 @item The @uref{http://netpbm.sourceforge.net/,netpbm utilities} see 
173 @item ImageMagick
174 @item @uref{http://www.cs.uu.nl/~hanwen/mftrace/,mftrace} (1.0.17 or
175 newer),
177   You will need to install some additional packages to get mftrace to
178 work.
179 @end itemize
181 @section Building LilyPond
183 To install GNU LilyPond, type
184 @example 
185 gunzip -c lilypond-x.y.z | tar xf -
186 cd lilypond-x.y.z
187 ./configure             # run with --help to see appropriate options
188 make
189 make install
190 sh buildscripts/clean-fonts.sh      
191 @end example 
193 If, in addition, you want to generate PDF files of your scores and have 
194 installed mftrace, type
195 @example 
196 make pfa-fonts
197 make MAKE_PFA_FILES=1 install
198 texhash
199 @end example 
201 PFA versions of the fonts for the latest LilyPond version can also be
202 obtained from the internet: download the .deb file that corresponds to
203 your version, eg.  
205 @example
206 wget http://ftp.us.debian.org/debian/pool/main/l/lilypond/lilypond_1.8.0-1_i386.deb
207 ar x lilypond_1.8.0.-1_i386.deb
208 tar -C / -zxf  data.tar.gz /usr/share/lilypond/1.8.0/fonts/type1/
209 tar -C / -zxf  data.tar.gz /usr/share/lilypond/1.8.0/dvips/
210 texhash
211 @end example
212 If you are installing LilyPond somewhere else, unpack the appropriate
213 files as shown, and move them to the appropriate paths. Of course, the
214 .deb version number should correspond to what you are installing.
218 If you are doing an upgrade, you should remove all @file{feta}
219 @code{.pk} and @code{.tfm} files.  A script has been provided to do the
220 work for you, see @file{buildscripts/clean-fonts.sh}.
222 If you are not root, you should choose a @code{--prefix} argument that
223 points into your home directory, e.g.:
224 @example 
225         ./configure --prefix=$HOME/usr
226 @end example 
228 In this case, you have to insert the contents of
229 @code{buildscripts/out/lilypond-login} or
230 @code{buildscripts/out/lilypond-profile} into your start up scripts by
231 hand.
235 @subsection Configuring for multiple platforms
237 If you want to build multiple versions of LilyPond with different
238 configuration settings, you can use the @code{--enable-config=CONF}
239 option of configure.  You should use @samp{make conf=CONF} to generate
240 the output in @file{out-CONF}.  Example: Suppose I want to build with
241 and without profiling.  Then I'd use the following for the normal
242 build:
243 @c prefix=~ ?
244 @example 
245         ./configure --prefix=$HOME/usr/ --enable-checking
246         make
247         make install
248 @end example 
250 and for the profiling version, I specify a different configuration:
252 @example 
253         ./configure --prefix=$HOME/usr/ --enable-profiling --enable-config=prof --disable-checking
254         make conf=prof
255         make conf=prof install
256 @end example 
260 @section Emacs mode
262 An Emacs mode for entering music and running LilyPond is contained in
263 the source archive as @file{lilypond-mode.el},
264 @file{lilypond-indent.el}, @file{lilypond-font-lock.el} and
265 @file{lilypond.words}.  You should install these files to a directory
266 included in your @var{load-path}. File @file{lilypond-init.el} should
267 be placed to @var{load-path}@file{/site-start.d/} or appended to your
268 @file{~/.emacs} or @file{~/.emacs.el}.
270 As a user, you may want add your source path or, e.g., @file{~/site-lisp/} 
271 to your @var{load-path}. Append the following line (modified) to your 
272 @file{~/.emacs}:
273 @quotation
274 @example
275         (setq load-path (append (list (expand-file-name "~/site-lisp")) load-path))
276 @end example
277 @end quotation
280 @section Vim mode
282 A Vim mode for entering music and running LilyPond is contained in
283 the source archive. Append the content of @file{vimrc} to @file{~/.vimrc}
284 to get shortcuts. Install file @file{lilypond.words} to @file{~/.vim/} to 
285 get auto-completion. Syntax highlighting you get by installing 
286 @file{lilypond.vim} to @file{~/.vim/syntax/} and appending the following
287 to @file{~/.vim/filetype.vim}:
288 @quotation
289 @example
290         " my filetype file
291         if exists("did_load_filetypes")
292           finish
293         endif
294         augroup filetypedetect
295           au! BufRead,BufNewFile  *.ly          setfiletype lilypond
296         augroup
297 @end example
298 @end quotation
302 @section Problems
304 For help and questions use @email{lilypond-user@@gnu.org}.  Please
305 consult the FAQ before mailing your problems.  If you find bugs, please
306 send bug reports to @email{bug-lilypond@@gnu.org}.
308 Bugs that are not fault of LilyPond are documented here.
310 @subsection Linking to kpathsea
312 If kpathsea and the corresponding header files are installed in some
313 directory where GCC does not search by default, for example in
314 @file{/usr/local/lib/} and @file{/usr/local/include/} respectively,
315 you have to explicitly tell configure where to find it. To do this:
317 @itemize
318 @item @code{rm config.cache}
319 @item @code{export LDFLAGS=-L/usr/share/texmf/lib}
320 @item @code{export CPPFLAGS=-I/usr/share/texmf/include}
321 @item @code{./configure}
322 @end itemize
323 Once configure has found them, the paths are stored in
324 @file{config.make} and will be used even if you don't have the
325 environment variables set during make.
328 @unnumberedsubsec Gcc-3.0.4
330 Gcc 3.0.4 is flaky;  upgrade GCC.
332 @unnumberedsubsec Flex-2.5.4a and gcc-3.x
334 Flex 2.5.4a does not produce g++-3.1.1 compliant C++ code.  To compile
335 LilyPond with gcc-3.1.1 you may do
337 @example
338         CONF=gcc-3.1 ./lexer-gcc-3.1.sh
339         CPPFLAGS=-I$(pwd)/lily/out-gcc-3.1 CC=gcc-3.1 CXX=g++-3.1 \
340             ./configure --enable-config=gcc-3.1
341         CONF=gcc-3.1 ./lexer-gcc-3.1.sh
342         make conf=gcc-3.1
343 @end example
346 @unnumberedsubsec OpenBSD
348 @itemize @bullet
349 @item
350  Refer to the section ``Linking to kpathsea'': GCC on OpenBSD doesn't
351 set include paths for kpathsea.
352 @end itemize
354 @unnumberedsubsec NetBSD
356 @itemize @bullet
357 @item The flex precompiled in NetBSD-1.4.2 is broken.
358 Upgrade to flex-2.5.4a.
360 @ignore
361 @c is this current?
362 @item The configuration of Gcc (egcs-2.91.60 19981201 (egcs-1.1.1
363 release)) does not include @file{/usr/pkg} paths.  Configure it using:
364 @example
366         CFLAGS='-I /usr/pkg/include' LDFLAGS='-L/usr/pkg/lib' ./configure
368 @end example
369 @end ignore
371 @end itemize
373 @unnumberedsubsec  Solaris
375 @itemize @bullet
376 @item Solaris7, ./configure
378 @file{./configure} needs a POSIX compliant shell.  On Solaris7,
379 @file{/bin/sh} is not yet POSIX compliant, but @file{/bin/ksh} or bash
380 is.  Please run configure like:
381 @example
382         CONFIG_SHELL=/bin/ksh ksh -c ./configure
383 @end example
385 @example
386         CONFIG_SHELL=/bin/bash bash -c ./configure
387 @end example
389 @item Sparc64/Solaris 2.6, ld
391 Not yet resolved.
392 @end itemize
395 @unnumberedsubsec   AIX
397 @itemize @bullet
398 @item AIX 4.3 ld
400 The following is from the gcc install/SPECIFIC file:
401 @quotation
402    Some versions of the AIX binder (linker) can fail with a relocation
403    overflow severe error when the -bbigtoc option is used to link
404    GCC-produced object files into an executable that overflows the TOC.
405    A fix for APAR IX75823 (OVERFLOW DURING LINK WHEN USING GCC AND  
406    -BBIGTOC) is available from IBM Customer Support and from its
407    27service.boulder.ibm.com website as PTF U455193.   
409    Binutils does not support AIX 4.3 (at least through release 2.9). GNU
410    as and GNU ld will not work properly and one should not configure GCC
411    to use those GNU utilities. Use the native AIX tools which do
412    interoperate with GCC.
413 @end quotation
415 add -Wl,-bbigtoc to USER_LDFLAGS, i.e.:
416 @example
417         LDFLAGS='-Wl,-bbigtoc' ./configure
418 @end example
420 @end itemize
423 @bye
424