## INSTALL - compiling and installing GNU LilyPond

## Table of Contents

- INSTALL - compiling and installing GNU LilyPond
- 1 Compiling and installing on Unix
  - 1.1 Downloading
    - 1.1.1 Source code
    - 1.1.2 Precompiled binary packages
  - 1.2 Requirements
    - 1.2.1 Compilation
    - 1.2.2 Running requirements
    - 1.2.3 Building documentation
  - 1.3 Building LilyPond
    - 1.3.1 Configuring for multiple platforms
  - 1.4 Emacs mode
  - 1.5 Vim mode
  - 1.6 Problems
    - 1.6.1 Bison 1.875
    - Gcc-3.0.4
    - Flex-2.5.4a and gcc-3.x
    - MacOS X
    - OpenBSD
    - NetBSD
    - Solaris

## 1 Compiling and installing on Unix

### 1.1 Downloading

Even numbered minor versions are `stable' (2.4, 2.6 etc), while odd version are development releases (2.5, 2.7, etc). Building LilyPond is an involved process. If possible download a precompiled binary for your platform.

#### 1.1.1 Source code

Download source

- tarballs from
  http://lilypond.org/download/ by HTTP.
  - ftp://sca.uwaterloo.ca/pub/ by FTP (Canadian mirror).
- CVS from savannah.gnu.org

                     CVS_RSH=ssh cvs -d:ext:anoncvs@savannah.gnu.org:/cvsroot/lilypond co lilypond

  The CVS repository does not contain generated files. To create `configure`, run

                     ./autogen.sh

For information on packaging, see http://lilypond.org/devel.

#### 1.1.2 Precompiled binary packages

Check out http://lilypond.org/web/install/ for up to date information on binary packages for your platform.

### 1.2 Requirements

#### 1.2.1 Compilation

In addition to the packages needed for running Lilypond (see below), you need the following extra packages for building.

When installing a binary package FOO, you may need to install the FOO-devel, libFOO-dev or FOO-dev package too.

- FontForge 20060125 or newer.
- New Century Schoolbook fonts, as PFB files. These are shipped with X11 and Ghostscript, and are named `c059033l.pfb` `c059036l.pfb`, `c059013l.pfb` and `c059016l.pfb`
- mftrace (1.1.9 or newer),

  You will need to install some additional packages to get mftrace to work.

- GUILE (version 1.6.7 or newer). If you are installing binary packages, you may need to install guile-devel or guile-dev or libguile-dev too.
- Texinfo (version 4.8 or newer).
- The GNU c++ compiler (version 4.x or newer).
- Python (version 2.3 or newer)
- GNU Make (version 3.78 or newer).
- gettext.
- Flex
- Perl
- GNU Bison
- All packages required for running, including development packages with header files and libraries.

#### 1.2.2 Running requirements

Running LilyPond requires proper installation of the following software

- Freetype (version 2).
- FontConfig (version 2.2).
- Pango (version 1.6 or newer).
- GUILE (version 1.6.5 or newer).
- Python (version 2.1 or newer).
- Ghostscript (version 8.15 or newer. 8.50 recommended)

#### 1.2.3 Building documentation

You can view the documentation online at http://lilypond.org/doc/, but you can also build it locally. This process requires a successful compile of lilypond. The documentation is built by issuing

>               make web

Building the website requires some additional tools and packages

- The netpbm utilities
- ImageMagick
- International fonts (see input/regression/utf-8.ly for hints about which font packages are necessary for your platform)
- Ghostscript, 8.50 with the patch from http://bugs.ghostscript.com/show_bug.cgi?id=688154 and the patch from http://bugs.ghostscript.com/show_bug.cgi?id=688017.

The HTML files can be installed into the standard documentation path by issuing

>               make out=www web-install

### 1.3 Building LilyPond

To install GNU LilyPond, type

>               gunzip -c lilypond-x.y.z | tar xf -
>               cd lilypond-x.y.z
>               ./configure		# run with --help for applicable options
>               make
>               make install

The most time-consuming part of compiling LilyPond is tracing the Type1 fonts. You can shortcut this operation by issuing one of the following commands

>               make -C mf get-pfa                # requires rpm2cpio
>               make -C mf get-debian-pfa         # may not be up to date

If you are not root, you should choose a `--prefix` argument that points into your home directory, e.g.

>               ./configure --prefix=$HOME/usr

#### 1.3.1 Configuring for multiple platforms

If you want to build multiple versions of LilyPond with different configuration settings, you can use the `--enable-config=CONF` option of configure. You should use ``make conf=CONF`' to generate the output in `out-CONF`. Example: Suppose you want to build with and without profiling, then use the following for the normal build

>               ./configure --prefix=$HOME/usr/ --enable-checking
>               make
>               make install

and for the profiling version, specify a different configuration

>               ./configure --prefix=$HOME/usr/ --enable-profiling --enable-config=prof --disable-checking
>               make conf=prof
>               make conf=prof install

### 1.4 Emacs mode

An Emacs mode for entering music and running LilyPond is contained in the source archive in the `elisp` directory. Do `make install` to install it to elispdir. The file `lilypond-init.el` should be placed to load-path`/site-start.d/` or appended to your `~/.emacs` or `~/.emacs.el`.

As a user, you may want add your source path (e.g. `~/site-lisp/`) to your load-path by appending the following line (as modified) to your `~/.emacs`

>               (setq load-path (append (list (expand-file-name "~/site-lisp")) load-path))

### 1.5 Vim mode

A Vim mode for entering music and running LilyPond is contained in the source archive in `$VIM` directory.

The LilyPond file type is detected if the file `~/.vim/filetype.vim` has the following content

>               if exists("did_load_filetypes")
>                 finish
>               endif
>               augroup filetypedetect
>                 au! BufNewFile,BufRead *.ly           setf lilypond
>               augroup END

Please include this path by appending the following line to your `~/.vimrc`

>               set runtimepath+=/usr/local/share/lilypond/${LILYPOND_VERSION}/vim/

where ${LILYPOND_VERISON} is your lilypond version. If Lilypond was not installed in `/usr/local/`, then change this path accordingly.

### 1.6 Problems

For help and questions use lilypond-user@gnu.org. Send bug reports to bug-lilypond@gnu.org.

Bugs that are not fault of LilyPond are documented here.

#### 1.6.1 Bison 1.875

There is a bug in bison-1.875: compilation fails with "parse error before `goto'" in line 4922 due to a bug in bison. To fix, please recompile bison 1.875 with the following fix

>               $ cd lily; make out/parser.cc
>               $ vi +4919 out/parser.cc
>               # append a semicolon to the line containing "__attribute__ ((__unused__))
>               # save
>               $ make

#### Gcc-3.0.4

Gcc 3.0.4 is flaky; upgrade GCC.

#### Flex-2.5.4a and gcc-3.x

Flex 2.5.4a does not produce g++-3.1.1 compliant C++ code. To compile LilyPond with gcc-3.1.1 or higher you may do

>               CONF=gcc-3.1 ./lexer-gcc-3.1.sh
>               CPPFLAGS=-I$(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

#### MacOS X

For Fink, use the following command to compile.

    export GUILE=guile-1.6
    export GUILE_CONFIG=guile-1.6-config
    export PKG_CONFIG_PATH=/sw/lib/freetype219/lib/pkgconfig/:/sw/lib/fontconfig2/lib/pkgconfig/
    ./configure --without-kpathsea

#### OpenBSD

- Refer to the section “Linking to kpathsea”: GCC on OpenBSD doesn't set include paths for kpathsea.

#### NetBSD

- The flex precompiled in NetBSD-1.4.2 is broken. Upgrade to flex-2.5.4a.

#### Solaris

- Solaris7, ./configure

  `./configure` needs a POSIX compliant shell. On Solaris7, `/bin/sh` is not yet POSIX compliant, but `/bin/ksh` or bash is. Run configure like

  >                    	CONFIG_SHELL=/bin/ksh ksh -c ./configure

  or

  >                    	CONFIG_SHELL=/bin/bash bash -c ./configure

This page is for LilyPond-2.8.8 (stable-branch).

Other languages: English.
Using automatic language selection.