@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
+
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.
+
+@subsubsection Anonymous CVS access
+
+Short version:
+
+@quotation
+@example
+cvs -d :pserver:anoncvs@@lilypond.org:/home/lilypond login
+cvs -d :pserver:anoncvs@@lilypond.org:/home/lilypond co -P lilypond
+@end example
+@end quotation
+
+See @uref{http://lilypond.org/wiki/?CVS} for more information.
+
@html
<a name="download-binaries">
@end html
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.
@item Python (version 1.5 or newer).
Check out @uref{http://www.python.org, the python website}.
@item GUILE (version 1.4 or newer).
Check out
@uref{http://www.gnu.org/software/guile/guile.html,the GUILE webpage}.
-Version 1.4 is recommended for better performance.
@item GNU Make.
Check out
@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 a workaround, see
+lexer-gcc-3.0 below.
+
@item Bison (version 1.25 or newer).
Check out @uref{http://www.gnu.org/software/bison/,the bison webpage}
Make sure you have tetex 1.0 or newer (1.0.6 is known to work). You may
need to install a tetex-devel or tetex-dev package too.
-@item Texinfo (version 4.0 or newer).
+@item Texinfo (version 4.2 or newer).
The documentation of lily is written in texinfo. Check out
@uref{ftp://ftp.gnu.org/gnu/texinfo/,the texinfo FTP directory}.
@item kpathsea, a library for searching (@TeX{}) files. @code{kpathsea} is
usually included with your installation of @TeX{}. You may need to install
-a tetex-devel or tetex-dev package too.
+a tetex-devel or tetex-dev package too. If kpathsea is not installed in
+a directory where the compiler normally looks, read the hints for
+Slackware below.
In the very unlikely case that kpathsea is not available for your
platform (ie, you're not running GNU/Linux, Windows, or any recent
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
-
-
-@item pktrace, [OPTIONAL], 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.
+@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
Building the website requires some additional tools:
@itemize @bullet
-@item xpmtoppm (from the netpbm package: the Portable Bitmap Utilities).
- The original is at
-@uref{ftp://ftp.x.org/contrib/utilities/netpbm-1mar1994.p1.tar.gz,the
-netpbm FTP site}
-
-@item pnmtopng. The original is
-at
-@uref{ftp://swrinde.nde.swri.edu/pub/png/applications/pnmtopng-2.37.2.tar.gz,in
-the pnmtopng FTP site}.
-
-@item texinfo (a development release)
-The documentation will build with texinfo-4.0, but if you want split
-html pages, you're best off using the lates pretest version from
-@uref{ftp://texinfo.org/texinfo/pretests/texinfo-4.0b.tar.gz,
-texinfo-4.0b} or
-@uref{ftp://alpha.gnu.org/gnu/texinfo-4.0b.tar.gz,texinfo-4.0b}
+@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.
@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
@section Emacs mode
An Emacs mode for entering music and running LilyPond is included with
-the source archive as @file{lilypond-mode.el} and
-@file{lilypond-font-lock.el}. You should install these files somewhere
-in your @var{load-path}. If you have installed a precompiled LilyPond
-package, these files can be found in
-@file{/usr/share/doc/lilypond-x.y.z/}.
+the source archive as @file{lilypond-mode.el},
+@file{lilypond-indent.el} and @file{lilypond-font-lock.el}. You
+should install these files somewhere in your @var{load-path}. If you
+have installed a precompiled LilyPond package, these files can be
+found in @file{/usr/share/doc/lilypond-x.y.z/}.
Add this to your @file{~/.emacs} or @file{~/.emacs.el}, or install this
file in Emacs' @file{site-start.d}:
+@quotation
@example
- ;;; lilypond-init.el --- Startup code for LilyPond mode
+ ;;; lilypond-init.el --- Startup code for LilyPond mode
- (load-library "lilypond-mode.el")
- (setq auto-mode-alist
- (cons '("\\.ly$" . LilyPond-mode) auto-mode-alist))
- (add-hook 'LilyPond-mode-hook (lambda () (turn-on-font-lock)))
+ (autoload 'LilyPond-mode "lilypond-mode")
+ (setq auto-mode-alist
+ (cons '("\\.ly$" . LilyPond-mode) auto-mode-alist))
+
+ (add-hook 'LilyPond-mode-hook (lambda () (turn-on-font-lock)))
@end example
+@end quotation
If you have the latest LilyPond-1.4.x Debian package, LilyPond-mode is
automatically loaded, you not even need to modify your @code{~/.emacs}
@subsection Red Hat Linux
-Red Hat 7.0 i386 RPMS are available from
-@uref{ftp://ftp.cs.uu.nl/pub/GNU/LilyPond/binaries/}.
+Red Hat 7.x i386 RPMS are available from
+@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.
+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,
+netpbm-progs, autotrace, t1utils.
with a faulty compiler. Do not compile LilyPond with -O2 on this
platform.
+At least on Slackware 8.0, you have to manually specify the paths to the
+Kpathsea library, using
+@itemize
+@item @code{rm config.cache}
+@item @code{export LDFLAGS=-L/usr/share/texmf/lib}
+@item @code{export CPPFLAGS=-I/usr/share/texmf/include}
+@item @code{./configure}
+@end itemize
+
+
@subsection Mandrake
Some binaries are available at rpmfind.net. Refer to
@subsection MacOS X
+LilyPond is available through fink, in the unstable cvs distribution.
+
+You need to:
+@itemize @bullet
+@item Get the Fink package manager from @uref{http://fink.sourceforge.net}
+@item Get the Lilypond package description by enabling the "unstable" tree
+in fink and executing @command{fink selfupdate-cvs}.
+@end itemize
+
+Then do:
+@quotation
+@example
+ fink install lilypond-unstable
+@end example
+@end quotation
+
+That's it! The command should compile and install all LilyPond
+prerequisites (python, TeX, X11, ghostscript) and then LilyPond
+itself.
+
+
+@subsubsection compiling on MacOS X
LilyPond has been built on Darwin, to be precise, on:
@example
Darwin buoux.aspiratie.nl 5.3 Darwin Kernel Version 5.3: Thu Jan 24