@chapter INSTALL - compiling and installing GNU LilyPond
-This document describes how to build LilyPond on Unix platforms. It is
-also known to run and compile on Windows NT/95/98 as well. More
-information on this topic can be found at the
-@uref{http://www.lilypond.org/gnu-windows/, LilyPond on Windows page}.
+This document describes how to build LilyPond on Unix platforms. It
+is also known to run and compile on Windows NT/95/98/ME/XP as well.
+More information on this topic can be found at the
+@uref{http://www.lilypond.org/cygwin/, LilyPond on Windows page}.
@html
@section Downloading
Even numbered versions are `stable'. The webpages for the stable version
-(1.2) reside @uref{http://www.gnu.org/software/lilypond, on the GNU
+(1.4) reside @uref{http://www.gnu.org/software/lilypond, on the GNU
servers}. Big enhancements go into the latest odd numbered version
-(1.3), whose webpages are on @uref{http://www.lilypond.org/,the lilypond
+(1.5), whose webpages are on @uref{http://www.lilypond.org/,the lilypond
site}.
@subsection Source code
@uref{http://www.lilypond.org/ftp/} by HTTP.
@end itemize
+
+For Red Hat Linux and SuSE Linux, @file{.spec} files are included in the
+tarball; see instructions below.
+
+
+
Of course, if your platform supports LilyPond, such as Debian GNU/Linux,
FreeBSD, OpenBSD or NetBSD, you're encouraged to use the native build
from source drill.
-For Red Hat Linux and SuSE Linux, @file{.spec} files are included in the
-tarball; see instructions below.
+The latest development version is also available through anonymous
+CVS. See @uref{http://savannah.gnu.org/cvs/?group=lilypond}.
+
@html
<a name="download-binaries">
You need the following packages to compile Lilypond.
@itemize
-@item A reasonably new version of the GNU C++ compiler: EGCS 1.1, GCC 2.95.2 or
-newer. Check out @uref{ftp://ftp.gnu.org/gnu/gcc/, the gcc site}.
+@item The GNU c++ compiler (version 2.95.2 or newer).
+EGCS 1.1 may work, but is no longer supported.
+Check out @uref{ftp://ftp.gnu.org/gnu/gcc/, the gcc site}.
+
+WARNING: if you choose to upgrade to GCC 3.x, enquire if your
+distribution supports g++ 3.x and flex. At the time of writing (Fri
+Jul 5 2002), @strong{no} distribution that we know of ships a flex
+that generates gcc-3.1.x compliant C++ code.
@item Python (version 1.5 or newer).
Check out @uref{http://www.python.org, the python website}.
@item Flex (version 2.5.4a or newer).
Check out @uref{http://www.gnu.org/software/flex/,the Flex webpage}.
+WARNING: plain Flex 2.5.4(a) generates invalid C++ code. GCC 3.x
+chokes on this. If you wish to use GCC 3.x, make sure that your
+distribution supports g++ 3.x and flex. For workarounds, see
+lexer-gcc-3.0.patch and lexer-gcc-3.1.sh in the source directory.
+
@item Bison (version 1.25 or newer).
Check out @uref{http://www.gnu.org/software/bison/,the bison webpage}
you'll probably have to indicate where @TeX{}'s tfm files live. Invoke
configure something like:
+@quotation
@example
./configure --without-kpathsea --enable-tfm-path=/usr/share/texmf/fonts/tfm/public/cm/:/usr/share/texmf/fonts/tfm/ams/symbols
@end example
+@end quotation
@end itemize
@itemize @bullet
@item @TeX{}.
@item Xdvi and Ghostscript
-@item GUILE 1.3.4, or newer. Check out
+@item GUILE 1.4, or newer.
+Check out
@uref{http://www.gnu.org/software/guile.html,the GUILE webpage}
@end itemize
@itemize @bullet
@item The netpbm utilities, see @uref{http://netpbm.sourceforge.net/}
-@item pktrace 1.0 or newer, needed for generating PostScript Type1
-fonts. Get it from @uref{http://www.cs.uu.nl/~hanwen/pktrace/}. You
-will need to install some additional packages to get pktrace to work.
+@item mftrace 1.0 or newer, needed for generating PostScript Type1
+fonts. Get it from @uref{http://www.cs.uu.nl/~hanwen/mftrace/}. You
+will need to install some additional packages to get mftrace to work.
@end itemize
@section Building LilyPond
configuration settings, you can use the @code{--enable-config=CONF}
option of configure. You should use @samp{make conf=CONF} to generate
the output in @file{out-CONF}. Example: suppose I want to build with
-and without profiling. Then I'd use the following for the normal build,
+and without profiling. Then I'd use the following for the normal
+build,
+@c prefix=~ ?
@example
./configure --prefix=~ --enable-checking
@subsection Red Hat Linux
Red Hat 7.x i386 RPMS are available from
-@uref{ftp://ftp.cs.uu.nl/pub/GNU/LilyPond/binaries/}.
+@uref{ftp://ftp.cs.uu.nl/pub/GNU/LilyPond/binaries/}. For running on
+a Red Hat system you need these packages: guile, tetex, tetex-latex,
+tetex-dvips, libstdc++, python, ghostscript.
You can also compile them yourself. A spec file is in
@file{make/out/lilypond.redhat.spec}. This file is distributed along
@end example
-For running on a Red Hat system you need these packages: guile, tetex,
-tetex-latex, tetex-dvips, libstdc++, python, ghostscript.
-
For compilation on a Red Hat system you need these packages, in
addition to the those needed for running: glibc-devel, gcc-c++,
-libstdc++-devel, guile-devel, flex, bison, texinfo, groff, pktrace,
+libstdc++-devel, guile-devel, flex, bison, texinfo, groff, mftrace,
netpbm-progs, autotrace, t1utils.
Bugs that are not fault of LilyPond are documented here.
-@unnumberedsubsec FLex-2.5.4a and gcc-3.0
+@unnumberedsubsec Gcc-3.0.4
+
+Gcc 3.0.4, is a bit flaky. Try downgrading to 2.95.x, or if you're
+adventurous (see below), upgrading to 3.1.x.
+
+@unnumberedsubsec Flex-2.5.4a and gcc-3.x
Flex 2.5.4a does not produce g++-3.0 compliant C++ code. To compile
LilyPond with gcc-3.0 you may do:
Note that this is fixed in Debian/unstable for flex >= 2.5.4a-13.
+@unnumberedsubsec Flex-2.5.4a and gcc-3.1.x
+
+Flex 2.5.4a does not produce g++-3.1.1 compliant C++ code. To compile
+LilyPond with gcc-3.1.1 you may do:
+
+@example
+ CONF=gcc-3.1 ./lexer-gcc-3.1.sh
+ CPPFLAGS=$(pwd)/lily/out-gcc-3.1 CC=gcc-3.1 CXX=g++-3.1 \
+ ./configure --enable-config=gcc-3.1
+ CONF=gcc-3.1 ./lexer-gcc-3.1.sh
+ make conf=gcc-3.1
+@end example
+
+Note that this is @strong{not} fixed in Debian/unstable for flex <=
+2.5.4a-26.
+
@unnumberedsubsec Linux-2.4.0, Guile-1.4 --with-threads
There's a bug in certain kernels around version 2.4.0, that is