]> git.donarmstrong.com Git - lilypond.git/blob - Documentation/topdocs/INSTALL.texi
* Documentation/topdocs/INSTALL.texi (Top): change GUILE
[lilypond.git] / Documentation / topdocs / INSTALL.texi
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
6
7 @html
8 <!--- @@WEB-TITLE@@=Installation Instructions --->
9 @end html
10
11 @contents
12
13 @chapter Compiling and installing on Unix
14
15
16 @html
17 <a name="download-source">
18 @end html
19
20 @section Downloading
21
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}.
27
28 Building LilyPond is an involved process. We advise to use binary
29 packages if these are available for your platform.
30
31
32
33 @subsection Source code
34
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
42
43
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
49
50 For information on packaging and CVS, see  
51 @uref{http://lilypond.org/}, under ``develoment''.
52
53
54 @subsection Precompiled binaries
55
56 Check out @uref{http://lilypond.org} for up to date information on
57 binary packages.
58
59
60 @subsection Font problems
61
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}.
68
69
70
71
72 @section Requirements
73
74 @subsection Compilation
75
76 You need the following packages to compile LilyPond:
77
78 @itemize
79 @item
80  @uref{http://gcc.gnu.org/,
81 The GNU c++ compiler} (version 3.1 or newer).
82 EGCS 1.1 may work, but is no longer supported.
83 Check out
84
85 @item @uref{http://www.python.org,Python} (version 2.1 or newer).
86
87 @item @uref{http://www.gnu.org/software/guile/guile.html,GUILE} (version 1.6.0 or newer).
88
89 @item @uref{ftp://ftp.gnu.org/gnu/make/,GNU Make} (version 3.78 or newer),  
90
91 @item  @uref{http://www.gnu.org/software/flex/,Flex} (version 2.5.4a or newer). 
92
93 WARNING: plain Flex 2.5.4(a) generates invalid C++ code.  GCC 3.x
94 chokes on this.  If you wish to use GCC 3.x, make sure that your
95 distribution supports g++ 3.x and flex.  For workarounds, see
96 lexer-gcc-3.0.patch and lexer-gcc-3.1.sh in the source directory.
97
98 @item @uref{http://www.gnu.org/software/bison/,Bison} (version 1.25 or newer).
99
100 @item @TeX{}.
101
102 @TeX{} is used as an output backend.
103
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.
108
109 @item @uref{ftp://ftp.gnu.org/gnu/texinfo/,Texinfo} (version 4.2 or newer).
110
111 @item The
112 @uref{ftp://ftp.ctan.org/tex-archive/macros/latex/contrib/supported/geometry,geometry
113 package for LaTeX}.
114
115  This package is normally included with the @TeX{} distribution.
116
117 @item kpathsea, a library for searching (@TeX{}) files.
118
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.
125
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:
131
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
138
139 @end itemize
140
141 @subsection Running requirements
142
143 GNU LilyPond does use a lot of resources. For operation you need the
144 following software:
145
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
151
152 For running LilyPond successfully
153
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}.
158
159 @subsection Building documentation
160
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 
168
169 Building the website requires some additional tools: 
170
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),
176
177   You will need to install some additional packages to get mftrace to
178 work.
179 @end itemize
180
181 @section Building LilyPond
182
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 
192
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 
200 (PFA versions of the fonts for the latest LilyPond version can also be
201 obtained from the web site using:
202 @example 
203         mkdir /tmp/newfonts
204         cd /tmp/newfonts/
205         wget -l 1 -nd -r -A pfa,map http://lilypond.org/stable/mf/out/
206         mv *.pfa $LILYPONDSHARE/fonts/type1/
207         mv *.map $LILYPONDSHARE/dvips/
208         texhash
209 @end example 
210 where @code{$LILYPONDSHARE} denotes @code{/usr/share/lilypond/1.7.*/} or
211 wherever LilyPond is installed on your system.
212
213 If you are doing an upgrade, you should remove all @file{feta}
214 @code{.pk} and @code{.tfm} files.  A script has been provided to do the
215 work for you, see @file{buildscripts/clean-fonts.sh}.
216
217
218 If you are not root, you should choose a @code{--prefix} argument that
219 points into your home directory, e.g.:
220 @example 
221         ./configure --prefix=$HOME/usr
222 @end example 
223
224 In this case, you have to insert the contents of
225 @code{buildscripts/out/lilypond-login} or
226 @code{buildscripts/out/lilypond-profile} into your start up scripts by
227 hand.
228
229
230
231 @subsection Configuring for multiple platforms
232
233 If you want to build multiple versions of LilyPond with different
234 configuration settings, you can use the @code{--enable-config=CONF}
235 option of configure.  You should use @samp{make conf=CONF} to generate
236 the output in @file{out-CONF}.  Example: Suppose I want to build with
237 and without profiling.  Then I'd use the following for the normal
238 build:
239 @c prefix=~ ?
240 @example 
241         ./configure --prefix=$HOME/usr/ --enable-checking
242         make
243         make install
244 @end example 
245
246 and for the profiling version, I specify a different configuration:
247
248 @example 
249         ./configure --prefix=$HOME/usr/ --enable-profiling --enable-config=prof --disable-checking
250         make conf=prof
251         make conf=prof install
252 @end example 
253
254
255
256 @section Emacs mode
257
258 An Emacs mode for entering music and running LilyPond is contained in
259 the source archive as @file{lilypond-mode.el},
260 @file{lilypond-indent.el}, @file{lilypond-font-lock.el} and
261 @file{lilypond.words}.  You should install these files to a directory
262 included in your @var{load-path}. File @file{lilypond-init.el} should
263 be placed to @var{load-path}@file{/site-start.d/} or appended to your
264 @file{~/.emacs} or @file{~/.emacs.el}.
265
266 As a user, you may want add your source path or, e.g., @file{~/site-lisp/} 
267 to your @var{load-path}. Append the following line (modified) to your 
268 @file{~/.emacs}:
269 @quotation
270 @example
271         (setq load-path (append (list (expand-file-name "~/site-lisp")) load-path))
272 @end example
273 @end quotation
274
275
276 @section Vim mode
277
278 A Vim mode for entering music and running LilyPond is contained in
279 the source archive. Append the content of @file{vimrc} to @file{~/.vimrc}
280 to get shortcuts. Install file @file{lilypond.words} to @file{~/.vim/} to 
281 get auto-completion. Syntax highlighting you get by installing 
282 @file{lilypond.vim} to @file{~/.vim/syntax/} and appending the following
283 to @file{~/.vim/filetype.vim}:
284 @quotation
285 @example
286         " my filetype file
287         if exists("did_load_filetypes")
288           finish
289         endif
290         augroup filetypedetect
291           au! BufRead,BufNewFile  *.ly          setfiletype lilypond
292         augroup
293 @end example
294 @end quotation
295
296
297
298 @section Problems
299
300 For help and questions use @email{lilypond-user@@gnu.org}.  Please
301 consult the FAQ before mailing your problems.  If you find bugs, please
302 send bug reports to @email{bug-lilypond@@gnu.org}.
303
304 Bugs that are not fault of LilyPond are documented here.
305
306 @subsection Linking to kpathsea
307
308 If kpathsea and the corresponding header files are installed in some
309 directory where GCC does not search by default, for example in
310 @file{/usr/local/lib/} and @file{/usr/local/include/} respectively,
311 you have to explicitly tell configure where to find it. To do this:
312
313 @itemize
314 @item @code{rm config.cache}
315 @item @code{export LDFLAGS=-L/usr/share/texmf/lib}
316 @item @code{export CPPFLAGS=-I/usr/share/texmf/include}
317 @item @code{./configure}
318 @end itemize
319 Once configure has found them, the paths are stored in
320 @file{config.make} and will be used even if you don't have the
321 environment variables set during make.
322
323
324 @unnumberedsubsec Gcc-3.0.4
325
326 Gcc 3.0.4 is flaky;  upgrade GCC.
327
328 @unnumberedsubsec Flex-2.5.4a and gcc-3.x
329
330 Flex 2.5.4a does not produce g++-3.0 compliant C++ code.  To compile
331 LilyPond with gcc-3.0 you may do:
332
333 @example
334         CC=gcc-3.0 CXX=g++-3.0 ./configure --enable-config=gcc-3.0
335         make conf=gcc-3.0 -C lily out-gcc-3.0/lexer.cc
336         patch -p1 < lexer-gcc-3.0.patch
337         make conf=gcc-3.0 -C lily
338 @end example
339
340 @unnumberedsubsec Flex-2.5.4a and gcc-3.1.x
341
342 Flex 2.5.4a does not produce g++-3.1.1 compliant C++ code.  To compile
343 LilyPond with gcc-3.1.1 you may do:
344
345 @example
346         CONF=gcc-3.1 ./lexer-gcc-3.1.sh
347         CPPFLAGS=-I$(pwd)/lily/out-gcc-3.1 CC=gcc-3.1 CXX=g++-3.1 \
348             ./configure --enable-config=gcc-3.1
349         CONF=gcc-3.1 ./lexer-gcc-3.1.sh
350         make conf=gcc-3.1
351 @end example
352
353
354
355 @unnumberedsubsec OpenBSD
356
357 @itemize @bullet
358 @item
359  Refer to the section ``Linking to kpathsea'': GCC on OpenBSD doesn't
360 set include paths for kpathsea.
361 @end itemize
362
363 @unnumberedsubsec NetBSD
364
365 @itemize @bullet
366 @item The flex precompiled in NetBSD-1.4.2 is broken.
367 Upgrade to flex-2.5.4a.
368
369 @item The configuration of Gcc (egcs-2.91.60 19981201 (egcs-1.1.1
370 release)) does not include @file{/usr/pkg} paths.  Configure using:
371 @example
372
373         CFLAGS='-I /usr/pkg/include' LDFLAGS='-L/usr/pkg/lib' ./configure
374
375 @end example
376
377 @end itemize
378
379 @unnumberedsubsec  Solaris
380
381 @itemize @bullet
382 @item Solaris7, ./configure
383
384 @file{./configure} needs a POSIX compliant shell.  On Solaris7,
385 @file{/bin/sh} is not yet POSIX compliant, but @file{/bin/ksh} or bash
386 is.  Please run configure like:
387 @example
388         CONFIG_SHELL=/bin/ksh ksh -c ./configure
389 @end example
390 or:
391 @example
392         CONFIG_SHELL=/bin/bash bash -c ./configure
393 @end example
394
395 @item Sparc64/Solaris 2.6, ld
396
397 Not yet resolved.
398 @end itemize
399
400
401 @unnumberedsubsec   AIX
402
403 @itemize @bullet
404 @item AIX 4.3 ld
405
406 The following is from the gcc install/SPECIFIC file:
407 @quotation
408    Some versions of the AIX binder (linker) can fail with a relocation
409    overflow severe error when the -bbigtoc option is used to link
410    GCC-produced object files into an executable that overflows the TOC.
411    A fix for APAR IX75823 (OVERFLOW DURING LINK WHEN USING GCC AND  
412    -BBIGTOC) is available from IBM Customer Support and from its
413    27service.boulder.ibm.com website as PTF U455193.   
414
415    Binutils does not support AIX 4.3 (at least through release 2.9). GNU
416    as and GNU ld will not work properly and one should not configure GCC
417    to use those GNU utilities. Use the native AIX tools which do
418    interoperate with GCC.
419 @end quotation
420
421 add -Wl,-bbigtoc to USER_LDFLAGS, i.e.:
422 @example
423         LDFLAGS='-Wl,-bbigtoc' ./configure
424 @end example
425
426 @end itemize
427
428
429 @bye
430