9 INSTALL - compiling and installing GNU LilyPond
19 Configuring for multiple platforms
21 Compiling for distributions
29 FLex-2.5.4a and gcc-3.0
35 INSTALL - compiling and installing GNU LilyPond
36 ***********************************************
38 This document describes how to build LilyPond on Unix platforms. It
39 is also known to run and compile on Windows NT/95/98 as well. More
40 information on this topic can be found at the LilyPond on Windows page
41 (http://www.lilypond.org/gnu-windows/).
46 Even numbered versions are `stable'. The webpages for the stable
47 version (1.2) reside on the GNU servers
48 (http://www.gnu.org/software/lilypond). Big enhancements go into the
49 latest odd numbered version (1.3), whose webpages are on the lilypond
50 site (http://www.lilypond.org/).
55 If you want to compile LilyPond from source, download here:
56 * Download development releases from
57 `ftp://ftp.cs.uu.nl/pub/GNU/LilyPond/' by FTP and
58 `http://ftp.cs.uu.nl/pub/GNU/LilyPond/', by HTTP.
60 * `ftp://sca.uwaterloo.ca/pub/' by FTP (Canadian mirror)
62 * at `lilypond.org' `ftp://ftp.lilypond.org/pub/LilyPond/' by FTP and
63 `http://www.lilypond.org/ftp/' by HTTP.
68 Binaries are available, but are not updated for every version
71 (ftp://ftp.cs.uu.nl/pub/GNU/LilyPond/binaries/RedHat/RPMS/)
73 * LinuxPPC (ftp://ftp.lilypond.org/pub/LilyPond/binaries/linuxppc/)
76 (ftp://ftp.debian.org/debian/pool/main/l/lilypond/)
78 * Windows Testing (http://www.lilypond.org/gnu-windows/)
84 There are two options for upgrading sources.
86 * if you have an unpacked source tree of a previous version, you may
89 _If you upgrade by patching do remember to rerun autoconf after
92 * if you have the `.tar.gz' file of a previous release, you can use
93 xdelta (ftp://ftp.xcf.berkeley.edu/pub/xdelta/). This is much
94 safer than using patches, and is the recommended way.
96 The following command produces `lilypond-1.4.3.tar.gz' from
97 `lilypond-1.4.2.tar.gz' identical (up to compression dates) to the
99 xdelta patch lilypond-1.4.2-1.4.3.xd lilypond-1.4.2.tar.gz
107 You need the following packages to compile Lilypond.
109 * A reasonably new C++ compiler: EGCS 1.1, GCC 2.95.2 or newer.
110 Check out the gcc site (ftp://ftp.gnu.org/gnu/gcc/).
112 * Python 1.5, Check out the python website (http://www.python.org).
114 * GUILE 1.3.4 or newer, check out the GUILE webpage
115 (http://www.gnu.org/software/guile/guile.html). Version 1.4 is
116 recommended for better performance.
118 * GNU Make. Check out the GNU make FTP directory
119 (ftp://ftp.gnu.org/gnu/make/).
121 * Flex (version 2.5.4a or newer). Check out the Flex webpage
122 (http://www.gnu.org/software/flex/).
124 * Bison (version 1.25 or newer). Check out the bison webpage
125 (http://www.gnu.org/software/bison/)
129 TeX is used as an output backend.
131 Also, TeX's libkpathsea is used to find the fonts (`.mf', `.afm',
132 `.tfm'). Make sure you have tetex 1.0 or newer (1.0.6 is known to
133 work). You may need to install a tetex-devel or tetex-dev package
136 * Texinfo (version 4.0 or newer). The documentation of lily is
137 written in texinfo. Check out the texinfo FTP directory
138 (ftp://ftp.gnu.org/gnu/texinfo/).
140 * The geometry package for LaTeX is needed to use ly2dvi. It is
141 available at the FTP directory for `geometry'
142 (ftp://ftp.ctan.org/tex-archive/macros/latex/contrib/supported/geometry).
143 This package is normally included with the TeX distribution.
145 * MetaPost, needed for generating PostScript fonts. Please note that
146 tetex-0.4pl8 (included with Red Hat 5.x) does not include
147 `mfplain.mp', which is needed for producing the scalable font
150 If you don't have MetaPost and don't want to use PostScript
151 output, then edit `mf/GNUmakefile', removing the line saying
154 * kpathsea, a library for searching (TeX) files. `kpathsea' is
155 usually included with your installation of TeX. You may need to
156 install a tetex-devel or tetex-dev package too.
158 In the very unlikely case that kpathsea is not available for your
159 platform (ie, you're not running GNU/Linux, Windows, or any recent
160 UNIX), you can compile LilyPond without kpathsea support. In that
161 case, you'll probably have to indicate where TeX's tfm files live.
162 Invoke configure something like:
164 ./configure --without-kpathsea --enable-tfm-path=/usr/share/texmf/fonts/tfm/public/cm/:/usr/share/texmf/fonts/tfm/ams/symbols
170 GNU LilyPond does use a lot of resources. For operation you need the
175 * Xdvi and Ghostscript
177 * GUILE 1.3.4, or newer. Check out the GUILE webpage
178 (http://www.gnu.org/software/guile.html)
180 For running LilyPond successfully you have to help TeX and MetaFont
181 find various files. The recommended way of doing so is adjusting the
182 environment variables in the start-up scripts of your shell. Appropriate
183 Csh and bourne sh scripts are left in
184 `buildscripts/out/lilypond-profile' and
185 `buildscripts/out/lilypond-login' after compilation.
187 LilyPond is a big and slow program. A fast CPU and plenty of RAM is
188 recommended for comfortable use.
193 The documentation comes in the form of a website. You can view this
194 website on the internet, but you can also build it locally. This process
195 requires a successful compile of lilypond. The website is built by
200 Building the website requires some additional tools:
202 * xpmtoppm (from the netpbm package: the Portable Bitmap Utilities).
203 The original is at the netpbm FTP site
204 (ftp://ftp.x.org/contrib/utilities/netpbm-1mar1994.p1.tar.gz)
206 * pnmtopng. The original is at in the pnmtopng FTP site
207 (ftp://swrinde.nde.swri.edu/pub/png/applications/pnmtopng-2.37.2.tar.gz).
209 * Bibtex2html (http://www.lri.fr/~filliatr/ftp/bibtex2html/), or
210 Bib2html (http://www.uni-koblenz.de/ag-ki/ftp/bib2html/).
211 Bibtex2html is available in debian, while bib2html is in some rpm
212 based distributions. Bib2html, in turn depends on man2html for
213 proper installation. man2html can be had from
214 http://askdonald.ask.uni-karlsruhe.de/hppd/hpux/Networking/WWW/Man2html-1.05
215 (http://askdonald.ask.uni-karlsruhe.de/hppd/hpux/Networking/WWW/Man2html-1.05).
217 The website will build without bib converter utility, but you will
218 not see our hypertextified bibliography.
220 * texinfo (a development release) The documentation will build with
221 texinfo-4.0, but if you want split html pages, you're best off
222 using the lates pretest version from texinfo-4.0b
223 (ftp://texinfo.org/texinfo/pretests/texinfo-4.0b.tar.gz) or
224 texinfo-4.0b (ftp://alpha.gnu.org/gnu/texinfo-4.0b.tar.gz)
229 to install GNU LilyPond, type:
230 gunzip -c lilypond-x.y.z | tar xf -
232 ./configure # run with --help to see appropriate options
235 sh buildscripts/clean-fonts.sh
237 If you are doing an upgrade, you should remove all `feta' `.pk' and
238 `.tfm' files. A script has been provided to do the work for you, see
239 `buildscripts/clean-fonts.sh'.
241 If you are not root, you should choose a `--prefix' argument that
242 points into your home directory, eg.
244 ./configure --prefix=$HOME/usr
246 In this case, you have to insert the contents of
247 `buildscripts/out/lilypond-login' or
248 `buildscripts/out/lilypond-profile' into your start up scripts by hand.
250 Configuring for multiple platforms
251 ----------------------------------
253 If you want to build multiple versions of LilyPond with different
254 configuration settings, you can use the `--enable-config=CONF' option
255 of configure. You should use `make conf=CONF' to generate the output
256 in `out-CONF'. Example: suppose I want to build with and without
257 profiling. Then I'd use the following for the normal build,
259 ./configure --prefix=~ --enable-checking
263 and for the profiling version, I specify a different configuration.
266 ./configure --prefix=~ --enable-profiling --enable-config=prof --disable-checking
268 make conf=prof install
273 An Emacs mode for entering music and running LilyPond is included
274 with the source archive as `lilypond-mode.el' and
275 `lilypond-font-lock.el'. You should install these files somewhere in
276 your LOAD-PATH. If you have installed a precompiled LilyPond package,
277 these files can be found in `/usr/share/doc/lilypond-x.y.z/'.
279 Add this to your `~/.emacs' or `~/.emacs.el', or install this file
280 in Emacs' `site-start.d':
281 ;;; lilypond-init.el --- Startup code for LilyPond mode
283 (load-library "lilypond-mode.el")
284 (setq auto-mode-alist
285 (cons '("\\.ly$" . LilyPond-mode) auto-mode-alist))
286 (add-hook 'LilyPond-mode-hook (lambda () (turn-on-font-lock)))
288 If you have the latest LilyPond-1.4.x Debian package, LilyPond-mode
289 is automatically loaded, you not even need to modify your `~/.emacs'
292 Compiling for distributions
293 ===========================
298 Red Hat 7.0 i386 RPMS are available from
299 `ftp://ftp.cs.uu.nl/pub/GNU/LilyPond/binaries/'.
301 You can also compile them yourself. A spec file is in
302 `make/out/lilypond.redhat.spec'. This file is distributed along with
303 the sources. You can make the rpm by issuing
305 tar xfz lilypond-x.y.z.tar.gz
306 rpm -bb lilypond-x.y.z/make/out/lilypond.redhat.spec
307 rpm -i /usr/src/redhat/RPMS/i386/lilypond-x.y.z
309 For running on a Red Hat system you need these packages: guile,
310 tetex, tetex-latex, tetex-dvips, libstdc++, python, ghostscript.
312 For compilation on a Red Hat system you need these packages, in
313 addition to the those needed for running: glibc-devel, gcc-c++,
314 libstdc++-devel, guile-devel, flex, bison, texinfo, tetex-devel, groff,
319 There appears to be a problem with the Xdvi shipped with Red Hat 7.1.
320 Symptoms: Xdvi responds very sluggishly or hangs while viewing lilypond
321 output. The cause for this problem is unknown; you are advised to
322 recompile Xdvi from source.
327 Some LinuxPPC RPMS should available from
328 `ftp://ftp.cs.uu.nl/pub/GNU/LilyPond/binaries/'.
330 A LinuxPPC RPM can be made using the `lilypond.redhat.spec' file.
335 Some SUSE RPMS should available from
336 `ftp://ftp.lilypond.org/pub/LilyPond/binaries/SuSE'.
338 You can also compile a RPM for SUSE yourself. A spec file is in
339 `make/out/lilypond.suse.spec', see the instructions for building the
342 You must have the following packages: guile tcsh tetex te_latex
343 te_kpath te_mpost libpng python gpp libgpp gettext autoconf netpbm
344 libnetpb gs_serv gs_lib gs_fonts guile
349 No precompiled packages for Slackware are available.
351 Problems have been reported with Slackware 7.0; apparently, it ships
352 with a faulty compiler. Do not compile LilyPond with -O2 on this
358 Some binaries are available at rpmfind.net. Refer to
359 `ftp://ftp.rpmfind.net/linux/Mandrake-devel/cooker/contrib/RPMS/'.
364 A Debian package is also available. You may install it easily by
365 running `apt-get' as root:
367 apt-get install lilypond lilypond-doc
369 Debian's TeX installation is a bit short on memory, you may want to
370 increase it like this:
371 --- /etc/texmf/texmf.cnf.dpkg Sun Jan 28 14:12:14 2001
372 +++ /etc/texmf/texmf.cnf Fri Apr 27 11:09:35 2001
374 main_memory.context = 1500000
375 main_memory.mpost = 1000000
376 main_memory = 263000 % words of inimemory available; also applies to inimf&mp
377 -extra_mem_top = 0 % extra high memory for chars, tokens, etc.
378 -extra_mem_bot = 0 % extra low memory for boxes, glue, breakpoints, etc.
379 +extra_mem_top = 100000 % extra high memory for chars, tokens, etc.
380 +extra_mem_bot = 100000 % extra low memory for boxes, glue, breakpoints, etc.
382 obj_tab_size.context = 256000
384 You could also export `extra_mem_top' and `extra_mem_bot' as
385 environment variables if you do not want to or cannot modify
386 `/etc/texmf/texmf.cnf'.
390 * http://packages.debian.org/lilypond
391 (http://packages.debian.org/lilypond)
393 * http://people.debian.org/~foka/lilypond/
394 (http://people.debian.org/~foka/lilypond/) for latest
395 semi-unofficial build of LilyPond 1.4.2 for Debian 2.2 (potato)
396 users. The official stable Debian 2.2 is stuck with the old
397 LilyPond-1.3.24. Since LilyPond-1.4 has been released, the older
398 lilypond1.3 Debian package is now obsolete.
400 Please contact Anthony Fok <lilypond@packages.debian.org> for more
403 The build scripts are in the subdirectory `debian/'; you can make
404 the .deb by doing, for example:
407 # dpkg --purge lilypond lilypond1.3
409 $ tar xzf lilypond-1.4.3.tar.gz
411 $ dch -p -v 1.4.3-0.local.1 "Local build."
414 # dpkg -i ../lilypond_1.4.3*.deb
418 Use command `debuild' instead of `debuild -B' if you have a very
419 fast machine and want to build the HTML, PS and DVI documentation too.
421 For compilation on a Debian GNU/Linux system you need these packages,
422 in addition to the those needed for running:
424 * g++, cpp, libc6-dev, libstdc++<YOUR-LIBSTDC++-VERSION-HERE>-dev
426 * libguile<YOUR-LIBGUILE-VERSION-HERE>-dev
428 * make, m4, flex, bison
434 * bibtex2html (not in Debian 2.2)
436 * tetex-base, tetex-bin, tetex-extra, libkpathsea-dev or tetex-dev
438 * dpkg-dev, debhelper, fakeroot
442 * pnmtopng (only in Debian 2.2; pnmtopng has been merged with netpbm
443 in Debian testing/unstable.)
445 Most of these are listed on the `Build-Depends' line in the
446 `debian/control' file. To ensure the creation of the lilypond deb is
447 trouble-free, we recommend that you first install the following packages
448 by running \`apt-get' as root before building the package:
452 apt-get install task-debian-devel task-c++-dev \
453 python-base libguile6-dev tetex-bin tetex-dev \
454 tetex-extra flex bison texinfo groff gs \
455 netpbm pnmtopng m4 gettext
457 For Debian in development ("unstable", the future 2.3 or 3.0):
459 apt-get install task-debian-devel task-c++-dev \
460 python-base libguile9-dev tetex-bin libkpathsea-dev \
461 tetex-extra flex bison texinfo bibtex2html groff gs \
464 And, just so that old fonts from previous versions of LilyPond won't
465 interfere with your build, you may want to do this before the build too:
467 dpkg --purge lilypond lilypond1.3
472 For help and questions use <lilypond-user@gnu.org>. Please consult
473 the FAQ before mailing your problems. If you find bugs, please send
474 bug reports to <bug-lilypond@gnu.org>.
476 Bugs that are not fault of LilyPond are documented here.
478 FLex-2.5.4a and gcc-3.0
479 -----------------------
481 Flex 2.5.4a does not produce g++-3.0 compliant C++ code. To compile
482 LilyPond with gcc-3.0 you may do:
484 CC=gcc-3.0 CXX=g++-3.0 ./configure --enable-config=gcc-3.0
485 make conf=gcc-3.0 -C lily out-gcc-3.0/lexer.cc
486 patch -p1 < lexer-gcc-3.0.patch
487 make conf=gcc-3.0 -C lily
489 Note that this is fixed in Debian/unstable for flex >= 2.5.4a-13.
494 * The flex precompiled in NetBSD-1.4.2 is broken. Download
495 flex-2.5.4a, build, install.
497 * The configuration of Gcc (egcs-2.91.60 19981201 (egcs-1.1.1
498 release)) does not include `/usr/pkg' paths. Configure using:
500 CFLAGS='-I /usr/pkg/include' LDFLAGS='-L/usr/pkg/lib' ./configure
506 * Sparc64/Solaris 2.6, GNU make-3.77
508 GNU make-3.77 is buggy on this platform, upgrade to 3.78.1 or
511 * Sparc64/Solaris 2.6, ld
520 The following is from the gcc install/SPECIFIC file.
521 Some versions of the AIX binder (linker) can fail with a
522 relocation overflow severe error when the -bbigtoc option
523 is used to link GCC-produced object files into an
524 executable that overflows the TOC. A fix for APAR IX75823
525 (OVERFLOW DURING LINK WHEN USING GCC AND -BBIGTOC) is
526 available from IBM Customer Support and from its
527 27service.boulder.ibm.com website as PTF U455193.
529 Binutils does not support AIX 4.3 (at least through release
530 2.9). GNU as and GNU ld will not work properly and one
531 should not configure GCC to use those GNU utilities. Use
532 the native AIX tools which do interoperate with GCC.
534 add -Wl,-bbigtoc to USER_LDFLAGS, ie:
535 LDFLAGS='-Wl,-bbigtoc' ./configure