3 @comment node-name, next, previous, up\input texinfo @c -*-texinfo-*-
4 @setfilename INSTALL.info
5 @settitle INSTALL - compiling and installing GNU LilyPond
8 <!--- @@WEB-TITLE@@=Installation Instructions --->
13 @chapter Compiling and installing on Unix
17 <a name="download-source">
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
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:
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).
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
47 xdelta patch lilypond-1.4.2-1.4.3.xd lilypond-1.4.2.tar.gz
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
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}.
74 @subsection Compilation
76 You need the following packages to compile LilyPond:
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.
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.0.patch and lexer-gcc-3.1.sh in the source directory.
97 @item @uref{http://www.gnu.org/software/bison/,Bison} (version 1.25 or newer).
101 @TeX{} is used as an output backend.
103 Also, @TeX{}'s libkpathsea is used to find the fonts (@file{.mf},
104 @file{.afm}, @file{.tfm}). Make sure you have tetex 1.0 or newer
105 (1.0.6 is known to work). You may need to install a tetex-devel (or
106 tetex-dev or libkpathsea-dev) package too.
108 @item @uref{ftp://ftp.gnu.org/gnu/texinfo/,Texinfo} (version 4.2 or newer).
111 @uref{ftp://ftp.ctan.org/tex-archive/macros/latex/contrib/supported/geometry,geometry
114 This package is normally included with the @TeX{} distribution.
116 @item kpathsea, a library for searching (@TeX{}) files.
120 usually included with your installation of @TeX{}. You may need to
121 install a tetex-devel or tetex-dev package too. If kpathsea is not
122 installed in a directory where the compiler normally looks, read the
123 hints for Slackware below.
125 In the very unlikely case that kpathsea is not available for your
126 platform (i.e., you're not running GNU/Linux, Windows, or any recent
127 UNIX), you can compile LilyPond without kpathsea support. In that case,
128 you'll probably have to indicate where @TeX{}'s tfm files live. Invoke
129 configure something like:
133 ./configure --without-kpathsea --enable-tfm-path=/usr/share/texmf/fonts/tfm/public/cm/:/usr/share/texmf/fonts/tfm/ams/symbols
140 @subsection Running requirements
142 GNU LilyPond does use a lot of resources. For operation you need the
147 @item Xdvi and Ghostscript.
148 @item @uref{http://www.gnu.org/software/guile/guile.html,GUILE} 1.6.0, or newer.
151 For running LilyPond successfully
153 You have to help @TeX{} and MetaFont find LilyPond support
154 files. After compiling, scripts to do this can be found in
155 @file{buildscripts/out/lilypond-profile} and
156 @file{buildscripts/out/lilypond-login}.
158 @subsection Building documentation
160 You can view the documentation online at
161 @uref{http://www.lilypond.org/doc/}, but you can also build it
162 locally. This process requires a successful compile of lilypond. The
163 documentation is built by issuing:
168 Building the website requires some additional tools:
171 @item The @uref{http://netpbm.sourceforge.net/,netpbm utilities} see
173 @item @uref{http://www.cs.uu.nl/~hanwen/mftrace/,mftrace} (1.0.17 or
176 You will need to install some additional packages to get mftrace to
180 @section Building LilyPond
182 To install GNU LilyPond, type
184 gunzip -c lilypond-x.y.z | tar xf -
186 ./configure # run with --help to see appropriate options
189 sh buildscripts/clean-fonts.sh
192 If, in addition, you want to generate PDF files of your scores and have
193 installed mftrace, type
196 make MAKE_PFA_FILES=1 install
199 PFA versions of the fonts for the latest LilyPond version can also be
200 obtained from the web site using
204 wget -l 1 -nd -r -A pfa,map http://lilypond.org/stable/mf/out/
205 mv *.pfa $LILYPONDSHARE/fonts/type1/
206 mv *.map $LILYPONDSHARE/dvips/
209 where @code{$LILYPONDSHARE} denotes @code{/usr/share/lilypond/1.7.*/} or
210 wherever LilyPond is installed on your system.
212 If you are doing an upgrade, you should remove all @file{feta}
213 @code{.pk} and @code{.tfm} files. A script has been provided to do the
214 work for you, see @file{buildscripts/clean-fonts.sh}.
217 If you are not root, you should choose a @code{--prefix} argument that
218 points into your home directory, e.g.:
220 ./configure --prefix=$HOME/usr
223 In this case, you have to insert the contents of
224 @code{buildscripts/out/lilypond-login} or
225 @code{buildscripts/out/lilypond-profile} into your start up scripts by
230 @subsection Configuring for multiple platforms
232 If you want to build multiple versions of LilyPond with different
233 configuration settings, you can use the @code{--enable-config=CONF}
234 option of configure. You should use @samp{make conf=CONF} to generate
235 the output in @file{out-CONF}. Example: Suppose I want to build with
236 and without profiling. Then I'd use the following for the normal
240 ./configure --prefix=$HOME/usr/ --enable-checking
245 and for the profiling version, I specify a different configuration:
248 ./configure --prefix=$HOME/usr/ --enable-profiling --enable-config=prof --disable-checking
250 make conf=prof install
257 An Emacs mode for entering music and running LilyPond is contained in
258 the source archive as @file{lilypond-mode.el},
259 @file{lilypond-indent.el}, @file{lilypond-font-lock.el} and
260 @file{lilypond.words}. You should install these files to a directory
261 included in your @var{load-path}. File @file{lilypond-init.el} should
262 be placed to @var{load-path}@file{/site-start.d/} or appended to your
263 @file{~/.emacs} or @file{~/.emacs.el}.
265 As a user, you may want add your source path or, e.g., @file{~/site-lisp/}
266 to your @var{load-path}. Append the following line (modified) to your
270 (setq load-path (append (list (expand-file-name "~/site-lisp")) load-path))
277 A Vim mode for entering music and running LilyPond is contained in
278 the source archive. Append the content of @file{vimrc} to @file{~/.vimrc}
279 to get shortcuts. Install file @file{lilypond.words} to @file{~/.vim/} to
280 get auto-completion. Syntax highlighting you get by installing
281 @file{lilypond.vim} to @file{~/.vim/syntax/} and appending the following
282 to @file{~/.vim/filetype.vim}:
286 if exists("did_load_filetypes")
289 augroup filetypedetect
290 au! BufRead,BufNewFile *.ly setfiletype lilypond
299 For help and questions use @email{lilypond-user@@gnu.org}. Please
300 consult the FAQ before mailing your problems. If you find bugs, please
301 send bug reports to @email{bug-lilypond@@gnu.org}.
303 Bugs that are not fault of LilyPond are documented here.
305 @subsection Linking to kpathsea
307 If kpathsea and the corresponding header files are installed in some
308 directory where GCC does not search by default, for example in
309 @file{/usr/local/lib/} and @file{/usr/local/include/} respectively,
310 you have to explicitly tell configure where to find it. To do this:
313 @item @code{rm config.cache}
314 @item @code{export LDFLAGS=-L/usr/share/texmf/lib}
315 @item @code{export CPPFLAGS=-I/usr/share/texmf/include}
316 @item @code{./configure}
318 Once configure has found them, the paths are stored in
319 @file{config.make} and will be used even if you don't have the
320 environment variables set during make.
323 @unnumberedsubsec Gcc-3.0.4
325 Gcc 3.0.4 is flaky; upgrade GCC.
327 @unnumberedsubsec Flex-2.5.4a and gcc-3.x
329 Flex 2.5.4a does not produce g++-3.0 compliant C++ code. To compile
330 LilyPond with gcc-3.0 you may do
333 CC=gcc-3.0 CXX=g++-3.0 ./configure --enable-config=gcc-3.0
334 make conf=gcc-3.0 -C lily out-gcc-3.0/lexer.cc
335 patch -p1 < lexer-gcc-3.0.patch
336 make conf=gcc-3.0 -C lily
339 @unnumberedsubsec Flex-2.5.4a and gcc-3.1.x
341 Flex 2.5.4a does not produce g++-3.1.1 compliant C++ code. To compile
342 LilyPond with gcc-3.1.1 you may do
345 CONF=gcc-3.1 ./lexer-gcc-3.1.sh
346 CPPFLAGS=-I$(pwd)/lily/out-gcc-3.1 CC=gcc-3.1 CXX=g++-3.1 \
347 ./configure --enable-config=gcc-3.1
348 CONF=gcc-3.1 ./lexer-gcc-3.1.sh
354 @unnumberedsubsec OpenBSD
358 Refer to the section ``Linking to kpathsea'': GCC on OpenBSD doesn't
359 set include paths for kpathsea.
362 @unnumberedsubsec NetBSD
365 @item The flex precompiled in NetBSD-1.4.2 is broken.
366 Upgrade to flex-2.5.4a.
368 @item The configuration of Gcc (egcs-2.91.60 19981201 (egcs-1.1.1
369 release)) does not include @file{/usr/pkg} paths. Configure it using:
372 CFLAGS='-I /usr/pkg/include' LDFLAGS='-L/usr/pkg/lib' ./configure
378 @unnumberedsubsec Solaris
381 @item Solaris7, ./configure
383 @file{./configure} needs a POSIX compliant shell. On Solaris7,
384 @file{/bin/sh} is not yet POSIX compliant, but @file{/bin/ksh} or bash
385 is. Please run configure like:
387 CONFIG_SHELL=/bin/ksh ksh -c ./configure
391 CONFIG_SHELL=/bin/bash bash -c ./configure
394 @item Sparc64/Solaris 2.6, ld
400 @unnumberedsubsec AIX
405 The following is from the gcc install/SPECIFIC file:
407 Some versions of the AIX binder (linker) can fail with a relocation
408 overflow severe error when the -bbigtoc option is used to link
409 GCC-produced object files into an executable that overflows the TOC.
410 A fix for APAR IX75823 (OVERFLOW DURING LINK WHEN USING GCC AND
411 -BBIGTOC) is available from IBM Customer Support and from its
412 27service.boulder.ibm.com website as PTF U455193.
414 Binutils does not support AIX 4.3 (at least through release 2.9). GNU
415 as and GNU ld will not work properly and one should not configure GCC
416 to use those GNU utilities. Use the native AIX tools which do
417 interoperate with GCC.
420 add -Wl,-bbigtoc to USER_LDFLAGS, i.e.:
422 LDFLAGS='-Wl,-bbigtoc' ./configure