+The following commands were tested on Ubuntu versions ‘14.04 LTS’,
+‘14.10’ and ‘15.04’ and will download all the software required to both
+compile LilyPond and build the documentation.
+
+ • Download and install all the LilyPond build-dependencies
+ (approximately 200MB);
+
+ sudo apt-get build-dep lilypond
+
+ • Download and install additional ‘build’ tools required for
+ compiling;
+
+ sudo apt-get install autoconf fonts-texgyre texlive-lang-cyrillic
+
+ • Although not ‘required’ to compile LilyPond, if you intend to
+ contribute to LilyPond (codebase or help improve the documentation)
+ then it is recommended that you also need to install ‘git’.
+
+ sudo apt-get install git
+
+ Also see *note (lilypond-contributor)Starting with Git::.
+
+ • To use the ‘lily-git.tcl’ GUI;
+
+ sudo apt-get install tk
+
+ Also see *note (lilypond-contributor)lily-git::.
+
+ Note: By default, when building LilyPond’s documentation,
+ ‘pdfTeX’ is be used. However ligatures (fi, fl, ff etc.) may
+ not be printed in the PDF output. In this case XeTeX can be
+ used instead. Download and install the ‘texlive-xetex’
+ package.
+
+ sudo apt-get install texlive-xetex
+
+ The scripts used to build the LilyPond documentation will use
+ ‘XeTex’ instead of ‘pdfTex’ to generate the PDF documents if
+ it is available. No additional configuration is required.
+
+Other
+.....
+
+The following individual software packages are required just to compile
+LilyPond.
+
+ • GNU Autoconf (http://www.gnu.org/software/autoconf)
+
+ • GNU Bison (http://www.gnu.org/software/bison/)
+
+ Use version ‘2.0’ or newer.
+
+ • GNU Compiler Collection (http://gcc.gnu.org/)
+
+ Use version ‘3.4’ or newer (‘4.x’ recommended).
+
+ • Flex (http://flex.sourceforge.net/)
+
+ • FontForge (http://fontforge.sf.net/)
+
+ Use version ‘20060125’ or newer (we recommend using at least
+ ‘20100501’); it must also be compiled with the ‘--enable-double’
+ switch, else this can lead to inaccurate intersection calculations
+ which end up with poorly-rendered glyphs in the output.
+
+ • GNU gettext (http://www.gnu.org/software/gettext/gettext.html)
+
+ Use version ‘0.17’ or newer.
+
+ • GNU Make (http://www.gnu.org/software/make/)
+
+ Use version ‘3.78’ or newer.
+
+ • MetaFont (http://metafont.tutorial.free.fr/)
+
+ The ‘mf-nowin’, ‘mf’, ‘mfw’ or ‘mfont’ binaries are usually
+ packaged along with TeX (http://www.latex-project.org/ftp.html).
+
+ • MetaPost (http://cm.bell-labs.com/who/hobby/MetaPost.html)
+
+ The ‘mpost’ binary is also usually packaged with TeX
+ (http://www.latex-project.org/ftp.html).
+
+ • Perl (http://www.perl.org/)
+
+ • Texinfo (http://www.gnu.org/software/texinfo/)
+
+ Use version ‘4.11’ or newer.
+
+ • Type 1 utilities (http://www.lcdf.org/~eddietwo/type/#t1utils)
+
+ Use version ‘1.33’ or newer.
+
+ • Cyrillic fonts (https://www.ctan.org/pkg/cyrillic?lang=en)
+
+ Often packaged in repositories as ‘texlive-lang-cyrillic’.
+
+ • TeX Gyre ‘OTF’ font packages. As of LilyPond version ‘2.19.26’,
+ the previous default serif, san serif and monospace fonts now use
+ Tex Gyre’s _Schola_, _Heros_ and _Cursor_ fonts respectively. Also
+ See *note (lilypond-notation)Fonts::.
+
+ Some distributions do not always provide ‘OTF’ font files in the
+ Tex Gyre packages from their repositories. Use the command
+ ‘fc-list | grep texgyre’ to list the fonts available to your system
+ and check that the appropriate ‘*.otf’ files are reported. If they
+ are not then download and manually extract the ‘OTF’ files to
+ either your local ‘~/.fonts/’ directory or use the ‘configure’
+ command and the ‘--with-texgyre-dir=/path_to_otf_files/’ option.
+
+ The following font families are required:
+
+ Schola (http://www.gust.org.pl/projects/e-foundry/tex-gyre/schola),
+ Heros (http://www.gust.org.pl/projects/e-foundry/tex-gyre/heros)
+ and Cursor
+ (http://www.gust.org.pl/projects/e-foundry/tex-gyre/cursor).
+
+1.2.3 Requirements for building documentation
+---------------------------------------------
+
+The entire set of documentation for the most current build of LilyPond
+is available online at
+<http://lilypond.org/doc/v2.19/Documentation/web/development>, but you
+can also build them locally from the source code. This process requires
+some additional tools and packages.
+
+ Note: If the instructions for one of the previously listed
+ Linux in the previous section (*note
+ (lilypond-contributor)Requirements for compiling LilyPond::)
+ have been used, then the following can be ignored as the
+ software should already be installed.
+
+ • Everything listed in *note Requirements for compiling LilyPond::
+
+ • ImageMagick (http://www.imagemagick.org/)
+
+ • Netpbm (http://netpbm.sourceforge.net/)
+
+ • gzip (http://gzip.org/)
+
+ • rsync (http://rsync.samba.org/)
+
+ • Texi2HTML (http://www.nongnu.org/texi2html/)
+
+ Use version ‘1.82’. Later versions will not work.
+
+ Download ‘texi2html 1.82’ directly from:
+ <http://download.savannah.gnu.org/releases/texi2html/texi2html-1.82.tar.gz>;
+
+ Extract the files into an appropriate location and then run the
+ commands;
+
+ ./configure
+ make
+ sudo make install
+
+ Now verify that your operating system is able to see the correct
+ version of ‘texi2html’.
+
+ texi2html --version
+
+ • Fonts required to build the documentation in addition to those
+ required to run LilyPond:
+
+ gsfonts
+ fonts-linuxlibertine
+ fonts-liberation
+ fonts-dejavu
+ fonts-freefont-otf
+ ttf-bitstream-vera
+ texlive-fonts-recommended
+ ttf-xfree86-nonfree
+
+ Note: By default, when building LilyPond’s documentation,
+ ‘pdfTeX’ is be used. However ligatures (fi, fl, ff etc.) may
+ not be printed in the PDF output. In this case XeTeX can be
+ used instead. Download and install the ‘texlive-xetex’
+ package. The scripts used to build the LilyPond documentation
+ will use ‘XeTex’ instead of ‘pdfTex’ to generate the PDF
+ documents if it is available. No additional configuration is
+ required.
+
+1.3 Getting the source code
+===========================
+
+Downloading the Git repository
+------------------------------
+
+In general, developers compile LilyPond from within a local Git
+repository. Setting up a local Git repository is explained in *note
+(lilypond-contributor)Starting with Git::.
+
+Downloading a source tarball
+----------------------------
+
+Packagers are encouraged to use source tarballs for compiling.
+
+ The tarball for the latest stable release is available on the *note
+(lilypond-web)Source:: page.
+
+The latest source code snapshot
+(http://git.savannah.gnu.org/gitweb/?p=lilypond.git;a=snapshot) is also
+available as a tarball from the GNU Savannah Git server.
+
+All tagged releases (including legacy stable versions and the most
+recent development release) are available here:
+
+ <http://download.linuxaudio.org/lilypond/source/>
+
+ Download the tarball to your ‘~/src/’ directory, or some other
+appropriate place.
+
+ Note: Be careful where you unpack the tarball! Any
+ subdirectories of the current folder named ‘lilypond/’ or
+ ‘lilypond-X.Y.Z/’ (where X.Y.Z is the release number) will be
+ overwritten if there is a name clash with the tarball.
+
+ Unpack the tarball with this command:
+
+ tar -xzf lilypond-X.Y.Z.tar.gz
+
+ This creates a subdirectory within the current directory called
+‘lilypond-X.Y.Z/’. Once unpacked, the source files occupy about 40 MB
+of disk space.
+
+ Windows users wanting to look at the source code may have to download
+and install the free-software 7zip archiver (http://www.7-zip.org) to
+extract the tarball.
+
+1.4 Configuring ‘make’
+======================
+
+1.4.1 Running ‘./autogen.sh’
+----------------------------
+
+After you unpack the tarball (or download the Git repository), the
+contents of your top source directory should be similar to the current
+source tree listed at
+<http://git.sv.gnu.org/gitweb/?p=lilypond.git;a=tree>.
+
+ Next, you need to create the generated files; enter the following
+command from your top source directory:
+
+ ./autogen.sh --noconfigure
+
+ This will generate a number of files and directories to aid
+configuration, such as ‘configure’, ‘README.txt’, etc.
+
+ Next, create the build directory with:
+
+ mkdir build/
+ cd build/
+
+ We heavily recommend building lilypond inside a separate directory
+with this method.
+
+1.4.2 Running ‘../configure’
+----------------------------
+
+Configuration options
+.....................
+
+ Note: make sure that you are in the ‘build/’ subdirectory of
+ your source tree.
+
+ The ‘../configure’ command (generated by ‘./autogen.sh’) provides
+many options for configuring ‘make’. To see them all, run:
+
+ ../configure --help
+
+Checking build dependencies
+...........................
+
+ Note: make sure that you are in the ‘build/’ subdirectory of
+ your source tree.
+
+ When ‘../configure’ is run without any arguments, it will check to
+make sure your system has everything required for compilation:
+
+ ../configure
+
+ If any build dependency is missing, ‘../configure’ will return with:
+
+ ERROR: Please install required programs: FOO
+
+ The following message is issued if you are missing programs that are
+only needed for building the documentation:
+
+ WARNING: Please consider installing optional programs: BAR
+
+ If you intend to build the documentation locally, you will need to
+install or update these programs accordingly.
+
+ Note: ‘../configure’ may fail to issue warnings for certain
+ documentation build requirements that are not met. If you
+ experience problems when building the documentation, you may
+ need to do a manual check of *note Requirements for building
+ documentation::.
+
+Configuring target directories
+..............................
+
+ Note: make sure that you are in the ‘build/’ subdirectory of
+ your source tree.
+
+ If you intend to use your local build to install a local copy of the
+program, you will probably want to configure the installation directory.
+Here are the relevant lines taken from the output of
+‘../configure --help’:
+
+ By default, ‘‘make install’’ will install all the files in
+ ‘/usr/local/bin’, ‘/usr/local/lib’ etc. You can specify an
+ installation prefix other than ‘/usr/local’ using ‘‘--prefix’’, for
+ instance ‘‘--prefix=$HOME’’.
+
+ A typical installation prefix is ‘$HOME/usr’:
+
+ ../configure --prefix=$HOME/usr
+
+ Note that if you plan to install a local build on a system where you
+do not have root privileges, you will need to do something like this
+anyway—‘make install’ will only succeed if the installation prefix
+points to a directory where you have write permission (such as your home
+directory). The installation directory will be automatically created if
+necessary.
+
+ The location of the ‘lilypond’ command installed by this process will
+be ‘PREFIX/bin/lilypond’; you may want to add ‘PREFIX/bin/’ to your
+‘$PATH’ if it is not already included.
+
+ It is also possible to specify separate installation directories for
+different types of program files. See the full output of
+‘../configure --help’ for more information.
+
+ If you encounter any problems, please see *note Problems::.
+
+1.5 Compiling LilyPond
+======================
+
+1.5.1 Using ‘make’
+------------------
+
+ Note: make sure that you are in the ‘build/’ subdirectory of
+ your source tree.
+
+ LilyPond is compiled with the ‘make’ command. Assuming ‘make’ is
+configured properly, you can simply run:
+
+ make
+
+ ‘make’ is short for ‘make all’. To view a list of ‘make’ targets,
+run: