]> git.donarmstrong.com Git - lilypond.git/blob - Documentation/included/compile.itexi
Merge branch 'lilypond/translation' of git+ssh://git.savannah.gnu.org/srv/git/lilypon...
[lilypond.git] / Documentation / included / compile.itexi
1 @c -*- coding: utf-8; mode: texinfo; -*-
2
3
4 @c DO NOT TRANSLATE THIS FILE
5
6 @c include any node/sections from the higher-level *texi file.
7 @c   @n ode Compiling from source
8 @c   @s ection Compiling from source
9
10 @menu
11 * Overview of compiling::
12 * Requirements::
13 * Getting the source code::
14 * Configuring make::
15 * Compiling LilyPond::
16 * Post-compilation options::
17 * Problems::
18 * Concurrent stable and development versions::
19 * Build system::
20 @end menu
21
22
23 @node Overview of compiling
24 @section Overview of compiling
25
26 Compiling LilyPond from source is an involved process, and is only
27 recommended for developers and packagers.  Typical program users
28 are instead encouraged to obtain the program from a package
29 manager (on Unix) or by downloading a precompiled binary
30 configured for a specific operating system.  Pre-compiled binaries
31 are available on the @rweb{Download} page.
32
33 Compiling LilyPond from source is necessary if you want to build,
34 install, or test your own version of the program.
35
36 A successful compile can also be used to generate and install the
37 documentation, incorporating any changes you may have made.
38 However, a successful compile is not a requirement for generating
39 the documentation.  The documentation can be built using a Git
40 repository in conjunction with a locally installed copy of the
41 program.  For more information, see @ref{Building documentation
42 without compiling}.
43
44 Attempts to compile LilyPond natively on Windows have been
45 unsuccessful, though a workaround is available (see
46 @rcontrib{Lilydev}).
47
48
49 @node Requirements
50 @section Requirements
51
52
53 @menu
54 * Requirements for running LilyPond::
55 * Requirements for compiling LilyPond::
56 * Requirements for building documentation::
57 @end menu
58
59
60 @node Requirements for running LilyPond
61 @subsection Requirements for running LilyPond
62
63 Running LilyPond requires proper installation of the following
64 software:
65
66 @itemize
67 @item @uref{http://www.dejavu-fonts.org/, DejaVu fonts} (normally
68 installed by default)
69
70 @item @uref{http://www.fontconfig.org/, FontConfig} (2.4.0 or newer)
71
72 @item @uref{http://www.freetype.org/, Freetype} (2.1.10 or newer)
73
74 @item @uref{http://www.ghostscript.com, Ghostscript} (8.60 or
75 newer)
76
77 @item @uref{http://www.gnu.org/software/guile/guile.html, Guile}
78 (1.8.2 or newer)
79
80 @item @uref{http://www.pango.org/, Pango} (1.12 or newer)
81
82 @item @uref{http://www.python.org, Python} (2.4 or newer)
83 @end itemize
84
85 International fonts are required to create music with
86 international text or lyrics.
87
88
89 @node Requirements for compiling LilyPond
90 @subsection Requirements for compiling LilyPond
91
92 Below is a full list of packages needed to build LilyPond.
93 However, for most common distributions there is an easy way of
94 installing most all build dependencies in one go:
95
96 @multitable @columnfractions .5 .5
97 @headitem Distribution @tab Command
98 @item Debian, Ubuntu
99 @tab @code{sudo apt-get build-dep lilypond}
100
101 @item Fedora, RHEL
102 @tab @code{sudo yum-builddep lilypond}
103
104 @item openSUSE, SLED
105 @c sorry for the idiosyncratic command, I really asked and argued
106 @c for "zypper build-dep" :-(
107 @tab @code{sudo zypper --build-deps-only source-install lilypond}
108 @end multitable
109
110 @itemize
111 @item Everything listed in @ref{Requirements for running
112 LilyPond}
113
114 @item Development packages for the above items (which should
115 include header files and libraries).
116
117 Red Hat Fedora:
118
119 @c ghostscript-devel-[version] isn't needed
120 @example
121 guile-devel-@var{version}
122 fontconfig-devel-@var{version}
123 freetype-devel-@var{version}
124 pango-devel-@var{version}
125 python-devel-@var{version}
126 @end example
127
128 Debian GNU/Linux:
129
130 @c libgs-dev isn't needed
131 @example
132 guile-@var{version}-dev
133 libfontconfig1-dev
134 libfreetype6-dev
135 libpango1.0-dev
136 python@var{version}-dev
137 @end example
138
139 @item @uref{http://flex.sourceforge.net/, Flex}
140
141 @item @uref{http://fontforge.sf.net/, FontForge} (20060125 or
142 newer)
143
144 @item @uref{http://www.gnu.org/software/bison/, GNU Bison}
145
146 @item @uref{http://gcc.gnu.org/, GNU Compiler Collection} (3.4 or
147 newer, 4.@var{x} recommended)
148
149 @item @uref{http://www.gnu.org/software/gettext/gettext.html, GNU
150 gettext} (0.17 or newer)
151
152 @item @uref{http://www.gnu.org/software/make/, GNU Make} (3.78 or
153 newer)
154
155 @item @uref{http://metafont.tutorial.free.fr/, MetaFont}
156 (mf-nowin, mf, mfw or mfont binaries), usually packaged with
157 @uref{http://www.latex-project.org/ftp.html, @TeX{}}.
158
159 @item @uref{http://cm.bell-labs.com/who/hobby/MetaPost.html,
160 MetaPost} (mpost binary), usually packaged with
161 @uref{http://www.latex-project.org/ftp.html, @TeX{}}.
162
163 @item @uref{http://www.perl.org/, Perl}
164
165 @item @uref{http://www.gnu.org/software/texinfo/, Texinfo} (4.11
166 or newer)
167
168 @item @uref{http://www.lcdf.org/~eddietwo/type/#t1utils, Type 1
169 utilities} (1.33 or newer recommended)
170 @end itemize
171
172
173 @node Requirements for building documentation
174 @subsection Requirements for building documentation
175
176 You can view the documentation online at
177 @uref{http://www.lilypond.org/doc/}, but you can also build it
178 locally.  This process requires some additional tools and
179 packages:
180
181 @itemize
182 @item Everything listed in @ref{Requirements for compiling
183 LilyPond}
184
185 @item @uref{http://www.imagemagick.org/, ImageMagick}
186
187 @item @uref{http://netpbm.sourceforge.net/, Netpbm}
188
189 @item @uref{http://gzip.org/, gzip}
190
191 @item @uref{http://rsync.samba.org/, rsync}
192
193 @item @uref{http://www.nongnu.org/texi2html/, Texi2HTML} (1.82)
194
195 @item International fonts
196
197 Red Hat Fedora:
198
199 @example
200 fonts-arabic
201 fonts-hebrew
202 fonts-ja
203 fonts-xorg-truetype
204 taipeifonts
205 ttfonts-ja
206 ttfonts-zh_CN
207 @end example
208
209 Debian GNU/Linux:
210
211 @example
212 emacs-intl-fonts
213 ttf-kochi-gothic
214 ttf-kochi-mincho
215 xfonts-bolkhov-75dpi
216 xfonts-cronyx-75dpi
217 xfonts-cronyx-100dpi
218 xfonts-intl-.*
219 @end example
220 @end itemize
221
222
223 @node Getting the source code
224 @section Getting the source code
225
226
227 @subheading Downloading the Git repository
228
229 In general, developers compile LilyPond from within a local Git
230 repository.  Setting up a local Git repository is explained in
231 @rcontrib{Starting with Git}.
232
233
234 @subheading Downloading a source tarball
235
236 Packagers are encouraged to use source tarballs for compiling.
237
238 The tarball for the latest stable release is available on the
239 @rweb{Source} page.
240
241 @noindent
242 The latest
243 @uref{http://git.savannah.gnu.org/gitweb/?p=lilypond.git;a=snapshot, source code snapshot}
244 is also available as a tarball from the GNU Savannah Git server.
245
246 @noindent
247 All tagged releases (including legacy stable
248 versions and the most recent development release) are available
249 here:
250
251 @example
252 @uref{http://download.linuxaudio.org/lilypond/source/}
253 @end example
254
255 Download the tarball to your @file{~/src/} directory, or some
256 other appropriate place.
257
258 @warning{Be careful where you unpack the tarball!  Any
259 subdirectories of the current folder named @file{lilypond/} or
260 @file{lilypond-@var{x.y.z}/} (where @var{x.y.z} is the release
261 number) will be overwritten if there is a name clash with the
262 tarball.}
263
264 Unpack the tarball with this command:
265
266 @example
267 tar -xzf lilypond-@var{x.y.z}.tar.gz
268 @end example
269
270 This creates a subdirectory within the current directory called
271 @file{lilypond-@var{x.y.z}/}.  Once unpacked, the source files
272 occupy about 40 MB of disk space.
273
274 Windows users wanting to look at the source code may have to
275 download and install the free-software
276 @uref{http://www.7-zip.org, 7zip archiver} to extract the tarball.
277
278
279 @node Configuring make
280 @section Configuring @command{make}
281
282
283 @menu
284 * Running ./autogen.sh::
285 * Running ./configure::
286 @end menu
287
288
289 @node Running ./autogen.sh
290 @subsection Running @command{./autogen.sh}
291
292 After you unpack the tarball (or download the Git repository), the
293 contents of your top source directory should be similar to the
294 current source tree listed at
295 @uref{http://git.sv.gnu.org/gitweb/?p=lilypond.git;a=tree}.
296
297 Next, you need to create the generated files; enter the following
298 command from your top source directory:
299
300 @example
301 ./autogen.sh
302 @end example
303
304 This will:
305
306 @enumerate
307 @item generate a number of files and directories to aid
308 configuration, such as @file{configure}, @file{README.txt}, etc.
309
310 @item automatically run the @command{./configure} command.
311 @end enumerate
312
313
314 @node Running ./configure
315 @subsection Running @command{./configure}
316
317 @menu
318 * Configuration options::
319 * Checking build dependencies::
320 * Configuring target directories::
321 * Making an out-of-tree build::
322 @end menu
323
324
325 @node Configuration options
326 @unnumberedsubsubsec Configuration options
327
328 The @command{./configure} command (generated by
329 @command{./autogen.sh}) provides many options for configuring
330 @command{make}.  To see them all, run:
331
332 @example
333 ./configure --help
334 @end example
335
336
337 @node Checking build dependencies
338 @unnumberedsubsubsec Checking build dependencies
339
340 When @command{./configure} is run without any arguments, it will
341 check to make sure your system has everything required for
342 compilation.  This is done automatically when
343 @command{./autogen.sh} is run.  If any build dependency is
344 missing, @command{./configure} will return with:
345
346 @example
347 ERROR: Please install required programs:  @var{foo}
348 @end example
349
350 The following message is issued if you are missing programs that
351 are only needed for building the documentation:
352
353 @example
354 WARNING: Please consider installing optional programs:  @var{bar}
355 @end example
356
357 If you intend to build the documentation locally, you will need to
358 install or update these programs accordingly.
359
360 @warning{@command{./configure} may fail to issue warnings for
361 certain documentation build requirements that are not met.  If you
362 experience problems when building the documentation, you may need
363 to do a manual check of @ref{Requirements for building
364 documentation}.}
365
366
367 @node Configuring target directories
368 @unnumberedsubsubsec Configuring target directories
369
370 If you intend to use your local build to install a local copy of
371 the program, you will probably want to configure the installation
372 directory.  Here are the relevant lines taken from the output of
373 @command{./configure@tie{}--help}:
374
375 @quotation
376 By default, `@command{make@tie{}install}' will install all the
377 files in @file{/usr/local/bin}, @file{/usr/local/lib} etc.  You
378 can specify an installation prefix other than @file{/usr/local}
379 using `@code{--prefix}', for instance `@code{--prefix=$HOME}'.
380 @end quotation
381
382 A typical installation prefix is @file{$HOME/usr}:
383
384 @example
385 ./configure --prefix=$HOME/usr
386 @end example
387
388 Note that if you plan to install a local build on a system where
389 you do not have root privileges, you will need to do something
390 like this anyway---@command{make@tie{}install} will only succeed
391 if the installation prefix points to a directory where you have
392 write permission (such as your home directory).  The installation
393 directory will be automatically created if necessary.
394
395 The location of the @command{lilypond} command installed by this
396 process will be @file{@var{prefix}/bin/lilypond}; you may want to
397 add @file{@var{prefix}/bin/} to your @code{$PATH} if it is not
398 already included.
399
400 It is also possible to specify separate installation directories
401 for different types of program files.  See the full output of
402 @command{./configure@tie{}--help} for more information.
403
404 If you encounter any problems, please see @ref{Problems}.
405
406
407 @node Making an out-of-tree build
408 @unnumberedsubsubsec Making an out-of-tree build
409
410 It is possible to compile LilyPond in a build tree different from
411 the source tree, using the @option{--srcdir} option of
412 @command{configure}.  Note that in some cases you may need to
413 remove the output of a previous @command{configure} command by
414 running @command{make@tie{}distclean} in the main source directory
415 before configuring the out-of-tree build:
416
417 @example
418 make distclean
419 mkdir lily-build && cd lily-build
420 @var{sourcedir}/configure --srcdir=@var{sourcedir}
421 @end example
422
423
424 @node Compiling LilyPond
425 @section Compiling LilyPond
426
427
428 @menu
429 * Using make::
430 * Saving time with the -j option::
431 * Compiling for multiple platforms::
432 * Useful make variables::
433 @end menu
434
435
436 @node Using make
437 @subsection Using @command{make}
438
439 LilyPond is compiled with the @command{make} command.  Assuming
440 @command{make} is configured properly, you can simply run:
441
442 @example
443 make
444 @end example
445
446 @samp{make} is short for @samp{make all}.  To view a list of @command{make}
447 targets, run:
448
449 @example
450 make help
451 @end example
452
453 TODO: Describe what @command{make} actually does.
454
455
456 @node Saving time with the -j option
457 @subsection Saving time with the @option{-j} option
458
459 If your system has multiple CPUs, you can speed up compilation by
460 adding @samp{-j@var{X}} to the @command{make} command, where
461 @samp{@var{X}} is one more than the number of cores you have.  For
462 example, a typical Core2Duo machine would use:
463
464 @example
465 make -j3
466 @end example
467
468 If you get errors using the @option{-j} option, and @samp{make}
469 succeeds without it, try lowering the @code{@var{X}} value.
470
471 Because multiple jobs run in parallel when @option{-j} is used, it can
472 be difficult to determine the source of an error when one occurs.  In
473 that case, running @samp{make} without the @option{-j} is advised.
474
475 @node Compiling for multiple platforms
476 @subsection Compiling for multiple platforms
477
478 If you want to build multiple versions of LilyPond with different
479 configuration settings, you can use the
480 @code{--enable-config=@var{CONF}} option of @command{configure}.
481 You should use @code{make@tie{}conf=@var{CONF}} to generate the
482 output in @file{out-@var{CONF}}.  For example, suppose you want to
483 build with and without profiling, then use the following for the
484 normal build
485
486 @example
487 ./configure --prefix=$HOME/usr/ --enable-checking
488 make
489 @end example
490
491 and for the profiling version, specify a different configuration
492
493 @example
494 ./configure --prefix=$HOME/usr/ --enable-profiling \
495   --enable-config=prof --disable-checking
496 make conf=prof
497 @end example
498
499 If you wish to install a copy of the build with profiling, don't
500 forget to use @code{conf=@var{CONF}} when issuing
501 @command{make@tie{}install}:
502
503 @example
504 make conf=prof install
505 @end example
506
507
508 @seealso
509 @ref{Installing LilyPond from a local build}
510
511
512 @node Useful make variables
513 @subsection Useful @command{make} variables
514
515 If a less verbose build output if desired, the variable
516 @code{QUIET_BUILD} may be set to @code{1} on @command{make}
517 command line, or in @file{local.make} at top of the build tree.
518
519
520 @node Post-compilation options
521 @section Post-compilation options
522
523
524 @menu
525 * Installing LilyPond from a local build::
526 * Generating documentation::
527 * Testing LilyPond binary::
528 @end menu
529
530
531 @node Installing LilyPond from a local build
532 @subsection Installing LilyPond from a local build
533
534 If you configured @command{make} to install your local build in a
535 directory where you normally have write permission (such as your
536 home directory), and you have compiled LilyPond by running
537 @command{make}, you can install the program in your target
538 directory by running:
539
540 @example
541 make install
542 @end example
543
544 If instead, your installation directory is not one that you can
545 normally write to (such as the default @file{/usr/local/}, which
546 typically is only writeable by the superuser), you will need to
547 temporarily become the superuser when running
548 @command{make@tie{}install}:
549
550 @example
551 sudo make install
552 @end example
553
554 @noindent
555 or...
556
557 @example
558 su -c 'make install'
559 @end example
560
561 If you don't have superuser privileges, then you need to configure
562 the installation directory to one that you can write to, and then
563 re-install.  See @ref{Configuring target directories}.
564
565
566 @node Generating documentation
567 @subsection Generating documentation
568
569
570 @menu
571 * Documentation editor's edit/compile cycle::
572 * Building documentation::
573 * Saving time with CPU_COUNT::
574 * AJAX search::
575 * Installing documentation::
576 * Building documentation without compiling::
577 @end menu
578
579
580 @node Documentation editor's edit/compile cycle
581 @unnumberedsubsubsec Documentation editor's edit/compile cycle
582
583 @itemize
584 @item
585 Initial documentation build:
586
587 @example
588 make [-j@var{X}]
589 make [-j@var{X} CPU_COUNT=@var{X}] doc  @emph{## can take an hour or more}
590 @end example
591
592 @item
593 Edit/compile cycle:
594
595 @example
596 @emph{## edit source files, then...}
597
598 make [-j@var{X}]                  @emph{## needed if editing outside}
599                             @emph{##   Documentation/, but useful anyway}
600                             @emph{##   for finding Texinfo errors.}
601 touch Documentation/*te??   @emph{## bug workaround}
602 make [-j@var{X} CPU_COUNT=@var{X}] doc  @emph{## usually faster than initial build.}
603 @end example
604
605 @item
606 Reset:
607
608 @example
609 make doc-clean              @emph{## use only as a last resort.}
610 @end example
611 @end itemize
612
613 @node Building documentation
614 @unnumberedsubsubsec Building documentation
615
616 After a successful compile (using @command{make}), the
617 documentation can be built by issuing:
618
619 @example
620 make doc
621 @end example
622
623 The first time you run @command{make@tie{}doc}, the process can
624 easily take an hour or more.  After that, @command{make@tie{}doc}
625 only makes changes to the pre-built documentation where needed,
626 so it may only take a minute or two to test changes if the
627 documentation is already built.
628
629 If @command{make@tie{}doc} succeeds, the HTML documentation tree
630 is available in @file{out-www/offline-root/}, and can be browsed
631 locally.  Various portions of the documentation can be found by
632 looking in @file{out/} and @file{out-www} subdirectories in other
633 places in the source tree, but these are only @emph{portions} of
634 the docs.  Please do not complain about anything which is broken
635 in those places; the only complete set of documentation is in
636 @file{out-www/offline-root/} from the top of the source tree.
637
638 Compilation of documentation in Info format with images can be
639 done separately by issuing:
640
641 @example
642 make info
643 @end example
644
645 @knownissues
646
647 If source files have changed since the last documentation build,
648 output files that need to be rebuilt are normally rebuilt, even if
649 you do not run @code{make@tie{}doc-clean} first.  However, build
650 dependencies in the documentation are so complex that some
651 newly-edited files may not be rebuilt as they should be; a
652 workaround is to @command{touch} the top source file for any
653 manual you've edited.  For example, if you make changes to a file
654 in @file{notation/}, do:
655
656 @example
657 touch Documentation/notation.tely
658 @end example
659
660 @noindent
661 The top sources possibly affected by this are:
662
663 @example
664 Documentation/extend.texi
665 Documentation/changes.tely
666 Documentation/contributor.texi
667 Documentation/essay.tely
668 Documentation/extending.tely
669 Documentation/learning.tely
670 Documentation/notation.tely
671 Documentation/snippets.tely
672 Documentation/usage.tely
673 Documentation/web.texi
674 @end example
675
676 @noindent
677 You can @command{touch} all of them at once with:
678
679 @example
680 touch Documentation/*te??
681 @end example
682
683 @noindent
684 However, this will rebuild all of the manuals
685 indiscriminately---it is more efficient to @command{touch} only
686 the affected files.
687
688
689 @node Saving time with CPU_COUNT
690 @unnumberedsubsubsec Saving time with @code{CPU_COUNT}
691
692 The most time consuming task for building the documentation is
693 running LilyPond to build images of music, and there cannot be
694 several simultaneously running @command{lilypond-book} instances,
695 so the @option{-j} @command{make} option does not significantly
696 speed up the build process.  To help speed it up, the makefile
697 variable @option{CPU_COUNT} may be set in @file{local.make} or on
698 the command line to the number of @code{.ly} files that LilyPond
699 should process simultaneously, e.g. on a bi-processor or dual core
700 machine:
701
702 @example
703 make -j3 CPU_COUNT=3 doc
704 @end example
705
706 @noindent
707 The recommended value of @option{CPU_COUNT} is one plus the number
708 of cores or processors, but it is advisable to set it to a smaller
709 value unless your system has enough RAM to run that many
710 simultaneous LilyPond instances.  Also, values for the @option{-j}
711 option that pose problems with @samp{make} are less likely to pose
712 problems with @samp{make doc} (this applies to both @option{-j}
713 and @option{CPU_COUNT}).  For example, with a quad-core processor,
714 it is possible for @samp{make -j5 CPU_COUNT=5 doc} to work
715 consistently even if @samp{make -j5} rarely succeeds.
716
717
718 @node AJAX search
719 @unnumberedsubsubsec AJAX search
720
721 To build the documentation with interactive searching, use:
722
723 @example
724 make doc AJAX_SEARCH=1
725 @end example
726
727 This requires PHP, and you must view the docs via a http
728 connection (you cannot view them on your local filesystem).
729
730 @warning{Due to potential security or load issues, this option is
731 not enabled in the official documentation builds.  Enable at your
732 own risk.}
733
734
735 @node Installing documentation
736 @unnumberedsubsubsec Installing documentation
737
738 The HTML, PDF and if available Info files can be installed into
739 the standard documentation path by issuing
740
741 @example
742 make install-doc
743 @end example
744
745 @noindent
746 This also installs Info documentation with images if the
747 installation prefix is properly set; otherwise, instructions to
748 complete proper installation of Info documentation are printed on
749 standard output.
750
751 To install the Info documentation separately, run:
752
753 @example
754 make install-info
755 @end example
756
757 @noindent
758 Note that to get the images in Info documentation, @code{install-doc}
759 target creates symbolic links to HTML and PDF installed documentation
760 tree in @file{@var{prefix}/share/info}, in order to save disk space,
761 whereas @code{install-info} copies images in
762 @file{@var{prefix}/share/info} subdirectories.
763
764 It is possible to build a documentation tree in
765 @file{out-www/online-root/}, with special processing, so it can be
766 used on a website with content negotiation for automatic language
767 selection; this can be achieved by issuing
768
769 @example
770 make WEB_TARGETS=online doc
771 @end example
772
773 @noindent
774 and both @q{offline} and @q{online} targets can be generated by issuing
775
776 @example
777 make WEB_TARGETS="offline online" doc
778 @end example
779
780 Several targets are available to clean the documentation build and
781 help with maintaining documentation; an overview of these targets is
782 available with
783
784 @example
785 make help
786 @end example
787
788 @noindent
789 from every directory in the build tree.  Most targets for
790 documentation maintenance are available from
791 @file{Documentation/}; for more information, see
792 @rcontrib{Documentation work}.
793
794 The makefile variable @code{QUIET_BUILD} may be set to @code{1}
795 for a less verbose build output, just like for building the
796 programs.
797
798
799 @node Building documentation without compiling
800 @unnumberedsubsubsec Building documentation without compiling
801
802
803 The documentation can be built locally without compiling LilyPond
804 binary, if LilyPond is already installed on your system.
805
806 From a fresh Git checkout, do
807
808 @example
809 ./autogen.sh   # ignore any warning messages
810 cp GNUmakefile.in GNUmakefile
811 make -C scripts && make -C python
812 nice make LILYPOND_EXTERNAL_BINARY=/path/to/bin/lilypond doc
813 @end example
814
815 Please note that this may break sometimes -- for example, if a new
816 feature is added with a test file in input/regression, even the latest
817 development release of LilyPond will fail to build the docs.
818
819 You may build the manual without building all the @file{input/*} stuff
820 (i.e. mostly regression tests): change directory, for example to
821 @file{Documentation/}, issue @code{make doc}, which will build
822 documentation in a subdirectory @file{out-www} from the source files in
823 current directory.  In this case, if you also want to browse the
824 documentation in its post-processed form, change back to top directory
825 and issue
826
827 @example
828 make out=www WWW-post
829 @end example
830
831 @knownissues
832
833 You may also need to create a script for @command{pngtopnm} and
834 @code{pnmtopng}.  On GNU/Linux, I use this:
835
836 @verbatim
837 export LD_LIBRARY_PATH=/usr/lib
838 exec /usr/bin/pngtopnm "$@"
839 @end verbatim
840
841 On MacOS X with fink, I use this:
842
843 @verbatim
844 export DYLD_LIBRARY_PATH=/sw/lib
845 exec /sw/bin/pngtopnm "$@"
846 @end verbatim
847
848 On MacOS X with macports, you should use this:
849
850 @verbatim
851 export DYLD_FALLBACK_LIBRARY_PATH=/opt/local/lib
852 exec /opt/local/bin/pngtopnm "$@"
853 @end verbatim
854
855
856 @node Testing LilyPond binary
857 @subsection Testing LilyPond binary
858
859
860 LilyPond comes with an extensive suite that exercises the entire
861 program.  This suite can be used to test that the binary has
862 been built correctly.
863
864 The test suite can be executed with:
865
866 @verbatim
867 make test
868 @end verbatim
869
870 If the test suite completes successfully, the LilyPond binary
871 has been verified.
872
873 More information on the regression test suite is found at
874 @rcontrib{Regression tests}.
875
876 @node Problems
877 @section Problems
878
879 For help and questions use @email{lilypond-user@@gnu.org}.  Send
880 bug reports to @email{bug-lilypond@@gnu.org}.
881
882 Bugs that are not fault of LilyPond are documented here.
883
884 @unnumberedsubsubsec Bison 1.875
885
886 There is a bug in bison-1.875: compilation fails with "parse error
887 before `goto'" in line 4922 due to a bug in bison.  To fix, please
888 recompile bison 1.875 with the following fix
889
890 @example
891 $ cd lily; make out/parser.cc
892 $ vi +4919 out/parser.cc
893 # append a semicolon to the line containing "__attribute__ ((__unused__))
894 # save
895 $ make
896 @end example
897
898
899 @unnumberedsubsubsec Compiling on MacOS@tie{}X
900
901 Here are special instructions for compiling under MacOS@tie{}X.
902 These instructions assume that dependencies are installed using
903 @uref{http://www.macports.org/, MacPorts.} The instructions have
904 been tested using OS X 10.5 (Leopard).
905
906 First, install the relevant dependencies using MacPorts.
907
908 Next, add the following to your relevant shell initialization
909 files.  This is @code{~/.profile} by default.  You should create
910 this file if it does not exist.
911
912 @example
913 export PATH=/opt/local/bin:/opt/local/sbin:$PATH
914 export DYLD_FALLBACK_LIBRARY_PATH=/opt/local/lib:$DYLD_FALLBACK_LIBRARY_PATH
915 @end example
916
917 Now you must edit the generated @file{config.make} file.  Change
918
919 @example
920 FLEXLEXER_FILE = /usr/include/FlexLexer.h
921 @end example
922
923 @noindent
924 to:
925
926 @example
927 FLEXLEXER_FILE = /opt/local/include/FlexLexer.h
928 @end example
929
930 At this point, you should verify that you have the appropriate
931 fonts installed with your ghostscript installation.  Check @code{ls
932 /opt/local/share/ghostscript/fonts} for: 'c0590*' files (.pfb,
933 .pfb and .afm).  If you don't have them, run the following
934 commands to grab them from the ghostscript SVN server and install
935 them in the appropriate location:
936
937 @example
938 svn export http://svn.ghostscript.com/ghostscript/tags/urw-fonts-1.0.7pre44/
939 sudo mv urw-fonts-1.0.7pre44/* /opt/local/share/ghostscript/fonts/
940 rm -rf urw-fonts-1.07pre44
941 @end example
942
943 Now run the @code{./configure} script.  To avoid complications with
944 automatic font detection, add
945
946 @example
947 --with-ncsb-dir=/opt/local/share/ghostscript/fonts
948 @end example
949
950
951 @unnumberedsubsubsec Solaris
952
953 Solaris7, ./configure
954
955 @file{./configure} needs a POSIX compliant shell.  On Solaris7,
956 @file{/bin/sh} is not yet POSIX compliant, but @file{/bin/ksh} or bash
957 is.  Run configure like
958
959 @example
960 CONFIG_SHELL=/bin/ksh ksh -c ./configure
961 @end example
962
963 @noindent
964 or
965
966 @example
967 CONFIG_SHELL=/bin/bash bash -c ./configure
968 @end example
969
970 @unnumberedsubsubsec FreeBSD
971
972 To use system fonts, dejaview must be installed.  With the default
973 port, the fonts are installed in @file{usr/X11R6/lib/X11/fonts/dejavu}.
974
975 Open the file @file{$LILYPONDBASE/usr/etc/fonts/local.conf} and add the
976 following line just after the @code{<fontconfig>} line.  (Adjust as necessary
977 for your hierarchy.)
978
979 @example
980 <dir>/usr/X11R6/lib/X11/fonts</dir>
981 @end example
982
983
984 @unnumberedsubsubsec International fonts
985
986 On Mac OS X, all fonts are installed by default.  However, finding all
987 system fonts requires a bit of configuration; see
988 @uref{http://lists.gnu.org/archive/html/lilypond-user/2007-03/msg00472.html,
989 this post} on the @code{lilypond-user} mailing list.
990
991 On Linux, international fonts are installed by different means on
992 every distribution.  We cannot list the exact commands or packages
993 that are necessary, as each distribution is different, and the exact
994 package names within each distribution changes.  Here are some
995 hints, though:
996
997 @verbatim
998 Red Hat Fedora
999
1000     taipeifonts fonts-xorg-truetype ttfonts-ja fonts-arabic \
1001          ttfonts-zh_CN fonts-ja fonts-hebrew
1002
1003 Debian GNU/Linux
1004
1005    apt-get install emacs-intl-fonts xfonts-intl-.* \
1006         ttf-kochi-gothic ttf-kochi-mincho \
1007         xfonts-bolkhov-75dpi xfonts-cronyx-100dpi xfonts-cronyx-75dpi
1008 @end verbatim
1009
1010
1011 @unnumberedsubsubsec Using lilypond python libraries
1012
1013 If you want to use lilypond's python libraries (either running
1014 certain build scripts manually, or using them in other programs),
1015 set @code{PYTHONPATH} to @file{python/out} in your build
1016 directory, or @file{.../usr/lib/lilypond/current/python} in the
1017 installation directory structure.
1018
1019
1020
1021
1022 @node Concurrent stable and development versions
1023 @section Concurrent stable and development versions
1024
1025
1026 It can be useful to have both the stable and the development versions
1027 of Lilypond available at once.  One way to do this on GNU/Linux is to
1028 install the stable version using the precompiled binary, and run the
1029 development version from the source tree.  After running @command{make
1030 all} from the top directory of the Lilypond source files, there will
1031 be a binary called @code{lilypond} in the @code{out} directory:
1032
1033 @example
1034 <@var{path to}>/lilypond/out/bin/lilypond
1035 @end example
1036
1037 This binary can be run without actually doing the @code{make
1038 install} command.  The advantage to this is that you can have all
1039 of the latest changes available after pulling from git and running
1040 @code{make all}, without having to uninstall the old version and
1041 reinstall the new.
1042
1043 So, to use the stable version, install it as usual and use the
1044 normal commands:
1045
1046 @example
1047 lilypond foobar.ly
1048 @end example
1049
1050 To use the development version, create a link to the binary in the
1051 source tree by saving the following line in a file somewhere in your
1052 @code{$PATH}:
1053
1054 @example
1055 exec <@var{path to}>/lilypond/out/bin/lilypond "$@@"
1056 @end example
1057
1058 Save it as @code{Lilypond} (with a capital L to distinguish it
1059 from the stable @code{lilypond}), and make it executable:
1060
1061 @example
1062 chmod +x Lilypond
1063 @end example
1064
1065 Then you can invoke the development version this way:
1066
1067 @example
1068 Lilypond foobar.ly
1069 @end example
1070
1071
1072 TODO: ADD
1073
1074 - other compilation tricks for developers
1075
1076
1077 @node Build system
1078 @section Build system
1079
1080
1081 We currently use make and stepmake, which is complicated and only
1082 used by us.  Hopefully this will change in the future.
1083
1084
1085 @subsubheading Version-specific texinfo macros
1086
1087 @itemize
1088
1089 @item
1090 made with @command{scripts/build/create-version-itexi.py} and@*
1091 @command{scripts/build/create-weblinks-itexi.py}
1092
1093 @item
1094 used extensively in the @code{WEBSITE_ONLY_BUILD} version of the
1095 website (made with @file{website.make}, used on lilypond.org)
1096
1097 @item
1098 not (?) used in the main docs?
1099
1100 @item
1101 the numbers in VERSION file: MINOR_VERSION should be 1 more than
1102 the last release, VERSION_DEVEL should be the last @strong{online}
1103 release.  Yes, VERSION_DEVEL is less than VERSION.
1104
1105 @end itemize