]> git.donarmstrong.com Git - lilypond.git/blob - Documentation/topdocs/INSTALL.texi
2003-08-01 Mats Bengtsson <mats.bengtsson@s3.kth.se>
[lilypond.git] / Documentation / topdocs / INSTALL.texi
1 @node Top, , , (dir)
2 @top
3 @comment  node-name,  next,  previous,  up\input texinfo @c -*-texinfo-*-
4 @setfilename INSTALL.info
5 @settitle INSTALL - compiling and installing GNU LilyPond
6
7 @html
8 <!--- @@WEB-TITLE@@=Installation Instructions --->
9 @end html
10
11 @contents
12
13 @chapter INSTALL - compiling and installing GNU LilyPond
14
15
16 This document describes how to build LilyPond on Unix platforms.  It
17 is also known to run and compile on Windows NT/95/98/ME/XP as well.
18 More information on this topic can be found at the
19 @uref{http://www.lilypond.org/cygwin/, LilyPond on Windows page}.
20
21
22 @html
23 <a name="download-source">
24 @end html
25
26 @section Downloading
27
28 Even numbered versions are `stable'. The webpages for the stable version
29 (1.4) reside @uref{http://www.gnu.org/software/lilypond, on the GNU
30 servers}. Big enhancements go into the latest odd numbered version
31 (1.5), whose webpages are on @uref{http://www.lilypond.org/,the lilypond
32 site}.
33
34 Building LilyPond is an involved process. We advise to use binary
35 packages if these are available for your platform.
36
37 @subsection Source code
38
39   If you want to compile LilyPond from source, download here:
40 @itemize @bullet
41 @item Download development releases from
42 @c Hmm, these won't show up in lilypond.org/stats
43 @c Otoh, lilypond.org is not updated when release mail arrives
44 @uref{ftp://ftp.lilypond.org/pub/LilyPond/} by FTP and
45 @uref{http://www.lilypond.org/ftp/} by HTTP.
46 @item @uref{ftp://sca.uwaterloo.ca/pub/} by FTP (Canadian mirror).
47 @end itemize
48
49
50 For Red Hat Linux and SuSE Linux, @file{.spec} files are included in the
51 tarball; see instructions below.
52
53 Of course, if your platform supports LilyPond, such as Debian GNU/Linux,
54 FreeBSD, OpenBSD or NetBSD, you're encouraged to use the native build
55 from source drill.
56
57 The latest development version is also available through anonymous
58 CVS. See @uref{http://savannah.gnu.org/cvs/?group=lilypond}.
59
60 CVS does not contain generated files.  To create @file{configure}, run:
61 @quotation
62 @example
63         ./autogen.sh
64 @end example
65 @end quotation
66
67 @html
68 <a name="download-binaries">
69 @end html
70
71
72
73 @subsection Precompiled binaries
74
75 If you want to track bleeding edge development, try:
76
77 @itemize @bullet
78 @item @uref{ftp://ftp.debian.org/debian/pool/main/l/lilypond/, Debian
79 GNU/Linux} usually has the latest binaries for the most useful stable
80 and development versions, while
81 @item @uref{http://rpmfind.net/linux/mandrake/cooker/contrib/RPMS/,
82 Mandrake Cooker} also provides fairly recent versions.
83 @end itemize
84
85 Binaries are made available for other popular platforms, but as we need
86 to compile them ourselves, they are not updated for every version
87 released.
88
89 @itemize @bullet
90 @item @uref{http://www-ccrma.stanford.edu/planetccrma/software/soundapps.html#lilypond,Red Hat i386}
91 @item @uref{ftp://ftp.lilypond.org/pub/LilyPond/binaries/SuSE, SuSE}
92 @item @uref{ftp://ftp.lilypond.org/pub/LilyPond/binaries/linuxppc/,
93 LinuxPPC}
94 @item
95 @uref{http://www.lilypond.org/gnu-windows/, Windows}
96 @end itemize
97
98 @subsection Upgrading
99
100 There are two options for upgrading sources:
101
102 @itemize
103 @item If you have an unpacked source tree of a previous version, you
104 may the patches.
105
106 @emph{If you upgrade by patching do remember to rerun autoconf after makefilesapplying the patch}.
107
108 @item If you have the @code{.tar.gz} file of a previous release, you can
109 use
110 @uref{http://sourceforge.net/projects/xdelta/, xdelta}.
111  This is much safer than using patches, and is the recommended way.
112
113 The following command produces @file{lilypond-1.4.3.tar.gz} from
114 @file{lilypond-1.4.2.tar.gz} identical (up to compression dates) to the .3
115 on the FTP site:
116 @example
117         xdelta patch lilypond-1.4.2-1.4.3.xd lilypond-1.4.2.tar.gz
118 @end example
119 @end itemize
120
121 @subsection Font problems
122
123 If you are upgrading from a previous version of LilyPond, be sure to
124 remove all old font files. These include @file{.pk} and @file{.tfm} files
125 that may be located in @file{/var/lib/texmf}, @file{/var/spool/texmf},
126 @file{/var/tmp/texmf} or @file{@var{prefix}/share/lilypond/fonts/}.  A
127 script automating this has been included, see
128 @file{buildscripts/clean-fonts.sh}.
129
130
131
132
133 @section Requirements
134
135 @subsection Compilation
136
137 You need the following packages to compile LilyPond:
138
139 @itemize
140 @item The GNU c++ compiler (version 2.95.2 or newer).
141 EGCS 1.1 may work, but is no longer supported.
142 Check out @uref{ftp://ftp.gnu.org/gnu/gcc/, the gcc site}.
143
144 WARNING: if you choose to upgrade to GCC 3.x, enquire if your
145 distribution supports g++ 3.x and flex.  At the time of writing (Fri
146 Jul 5 2002), @strong{no} distribution that we know of ships a flex
147 that generates gcc-3.1.x compliant C++ code.
148
149 @item Python (version 2.1 or newer).
150 Check out @uref{http://www.python.org, the python website}.
151
152 @item GUILE (version 1.6.4 or newer).
153 Check out
154 @uref{http://www.gnu.org/software/guile/guile.html,the GUILE webpage}.
155
156 @item GNU Make (version 3.78 or newer).  
157 Check out
158 @uref{ftp://ftp.gnu.org/gnu/make/, the GNU
159 make FTP directory}.
160
161 @item Flex (version 2.5.4a or newer). 
162 Check out @uref{http://www.gnu.org/software/flex/,the Flex webpage}.
163
164 WARNING: plain Flex 2.5.4(a) generates invalid C++ code.  GCC 3.x
165 chokes on this.  If you wish to use GCC 3.x, make sure that your
166 distribution supports g++ 3.x and flex.  For workarounds, see
167 lexer-gcc-3.0.patch and lexer-gcc-3.1.sh in the source directory.
168
169 @item Bison (version 1.25 or newer).
170 Check out @uref{http://www.gnu.org/software/bison/,the bison webpage}.
171
172 @item @TeX{}.
173
174 @TeX{} is used as an output backend.
175
176 Also, @TeX{}'s libkpathsea is used to find the fonts (@file{.mf},
177 @file{.afm}, @file{.tfm}).  Make sure you have tetex 1.0 or newer
178 (1.0.6 is known to work).  You may need to install a tetex-devel (or
179 tetex-dev or libkpathsea-dev) package too.
180
181 @item Texinfo (version 4.2 or newer).
182 The documentation of lily is written in texinfo.  Check out
183 @uref{ftp://ftp.gnu.org/gnu/texinfo/,the texinfo FTP directory}.
184
185 @item The geometry package for LaTeX is needed to use ly2dvi.  
186 It is available at
187 @uref{ftp://ftp.ctan.org/tex-archive/macros/latex/contrib/supported/geometry,the
188 FTP directory for @code{geometry}}. This package is normally included
189 with the @TeX{} distribution.
190
191 @item kpathsea, a library for searching (@TeX{}) files.  @code{kpathsea} is
192 usually included with your installation of @TeX{}.  You may need to
193 install a tetex-devel or tetex-dev package too. If kpathsea is not
194 installed in a directory where the compiler normally looks, read the
195 hints for Slackware below.
196
197 In the very unlikely case that kpathsea is not available for your
198 platform (i.e., you're not running GNU/Linux, Windows, or any recent
199 UNIX), you can compile LilyPond without kpathsea support.  In that case,
200 you'll probably have to indicate where @TeX{}'s tfm files live.  Invoke
201 configure something like:
202
203 @quotation
204 @example
205         ./configure --without-kpathsea --enable-tfm-path=/usr/share/texmf/fonts/tfm/public/cm/:/usr/share/texmf/fonts/tfm/ams/symbols
206 @end example
207 @end quotation
208
209 @end itemize
210
211 @subsection Running requirements
212
213 GNU LilyPond does use a lot of resources. For operation you need the
214 following software:
215
216 @itemize @bullet
217 @item @TeX{}.
218 @item Xdvi and Ghostscript.
219 @item GUILE 1.4, or newer.
220 Check out
221 @uref{http://www.gnu.org/software/guile/guile.html,the GUILE webpage}.
222 @end itemize
223
224 For running LilyPond successfully you have to help @TeX{} and MetaFont find
225 various files.  The recommended way of doing so is adjusting the
226 environment variables in the start-up scripts of your shell. Appropriate
227 Csh and bourne sh scripts are left in
228 @file{buildscripts/out/lilypond-profile} and
229 @file{buildscripts/out/lilypond-login} after compilation.
230
231 LilyPond is a big and slow program.  A fast CPU and plenty of RAM is
232 recommended for comfortable use.
233
234 @subsection Building documentation
235
236 You can view the documentation online at
237 @uref{http://www.lilypond.org/stable/Documentation/out-www/}, but you
238 can also build it locally. This process requires a successful compile of
239 lilypond. The documentation is built by issuing:
240 @example 
241         make web
242 @end example 
243
244 Building the website requires some additional tools: 
245
246 @itemize @bullet
247 @item The netpbm utilities, see @uref{http://netpbm.sourceforge.net/}
248 @item mftrace 1.0 or newer, needed for generating PostScript Type1
249 fonts. Get it from @uref{http://www.cs.uu.nl/~hanwen/mftrace/}.  You
250 will need to install some additional packages to get mftrace to work.
251 @end itemize
252
253 @section Building LilyPond
254
255 To install GNU LilyPond, type:
256 @example 
257         gunzip -c lilypond-x.y.z | tar xf -
258         cd lilypond-x.y.z
259         ./configure             # run with --help to see appropriate options
260         make
261         make install
262         sh buildscripts/clean-fonts.sh      
263 @end example 
264
265 If, in addition, you want to generate PDF files of your scores and have 
266 installed mftrace, type:
267 @example 
268         make pfa-fonts
269         make MAKE_PFA_FILES=1 install
270         texhash
271 @end example 
272 (PFA versions of the fonts for the latest LilyPond version can also be
273 obtained from the web site using:
274 @example 
275         mkdir /tmp/newfonts
276         cd /tmp/newfonts/
277         wget -l 1 -nd -r -A pfa,map http://lilypond.org/stable/mf/out/
278         mv *.pfa $LILYPONDSHARE/fonts/type1/
279         mv *.map $LILYPONDSHARE/dvips/
280         texhash
281 @end example 
282 where @code{$LILYPONDSHARE} denotes @code{/usr/share/lilypond/1.7.*/} or
283 wherever LilyPond is installed on your system.
284
285 If you are doing an upgrade, you should remove all @file{feta}
286 @code{.pk} and @code{.tfm} files.  A script has been provided to do the
287 work for you, see @file{buildscripts/clean-fonts.sh}.
288
289
290 If you are not root, you should choose a @code{--prefix} argument that
291 points into your home directory, e.g.:
292 @example 
293         ./configure --prefix=$HOME/usr
294 @end example 
295
296 In this case, you have to insert the contents of
297 @code{buildscripts/out/lilypond-login} or
298 @code{buildscripts/out/lilypond-profile} into your start up scripts by
299 hand.
300
301
302
303 @subsection Configuring for multiple platforms
304
305 If you want to build multiple versions of LilyPond with different
306 configuration settings, you can use the @code{--enable-config=CONF}
307 option of configure.  You should use @samp{make conf=CONF} to generate
308 the output in @file{out-CONF}.  Example: Suppose I want to build with
309 and without profiling.  Then I'd use the following for the normal
310 build:
311 @c prefix=~ ?
312 @example 
313         ./configure --prefix=$HOME/usr/ --enable-checking
314         make
315         make install
316 @end example 
317
318 and for the profiling version, I specify a different configuration:
319
320 @example 
321         ./configure --prefix=$HOME/usr/ --enable-profiling --enable-config=prof --disable-checking
322         make conf=prof
323         make conf=prof install
324 @end example 
325
326
327
328
329
330 @section Emacs mode
331
332 An Emacs mode for entering music and running LilyPond is contained in
333 the source archive as @file{lilypond-mode.el},
334 @file{lilypond-indent.el}, @file{lilypond-font-lock.el} and 
335 @file{lilypond.words}.
336 You should install these files to a directory included in your 
337 @var{load-path}. File @file{lilypond-init.el} should be placed to 
338 @var{load-path}@file{/site-start.d/} or appended to your @file{~/.emacs}
339 or @file{~/.emacs.el}. If you have installed a precompiled LilyPond 
340 package, these files can be found in @file{/usr/share/doc/lilypond-x.y.z/}. 
341
342 As a user, you may want add your source path or, e.g., @file{~/site-lisp/} 
343 to your @var{load-path}. Append the following line (modified) to your 
344 @file{~/.emacs}:
345 @quotation
346 @example
347         (setq load-path (append (list (expand-file-name "~/site-lisp")) load-path))
348 @end example
349 @end quotation
350
351 If you have the latest LilyPond-1.4.x Debian package, LilyPond-mode is
352 automatically loaded, you not even need to modify your @code{~/.emacs}
353 file.
354
355 @section Vim mode
356
357 A Vim mode for entering music and running LilyPond is contained in
358 the source archive. Append the content of @file{vimrc} to @file{~/.vimrc}
359 to get shortcuts. Install file @file{lilypond.words} to @file{~/.vim/} to 
360 get auto-completion. Syntax highlighting you get by installing 
361 @file{lilypond.vim} to @file{~/.vim/syntax/} and appending the following
362 to @file{~/.vim/filetype.vim}:
363 @quotation
364 @example
365         " my filetype file
366         if exists("did_load_filetypes")
367           finish
368         endif
369         augroup filetypedetect
370           au! BufRead,BufNewFile  *.ly          setfiletype lilypond
371         augroup
372 @end example
373 @end quotation
374
375 @section Compiling for distributions 
376
377 @subsection Red Hat Linux
378
379
380 You can compile RPMS yourself.  For running on a Red Hat system you
381 need these packages: guile, tetex, tetex-latex, tetex-dvips,
382 libstdc++, python, ghostscript.  A spec file is in
383 @file{make/out/lilypond.redhat.spec}. This file is distributed along
384 with the sources.  You can make the rpm by issuing:
385 @example 
386         cp lilypond-x.y.z.tar.gz /usr/src/redhat/SOURCES/
387         tar xfz lilypond-x.y.z.tar.gz
388         rpm -bb lilypond-x.y.z/make/out/lilypond.redhat.spec
389         rpm -i /usr/src/redhat/RPMS/i386/lilypond-x.y.z
390 @end example 
391
392 For compilation on a Red Hat system you need these packages, in
393 addition to the those needed for running: glibc-devel, gcc-c++,
394 libstdc++-devel, guile-devel, flex, bison, texinfo, groff, mftrace,
395 netpbm-progs, autotrace, t1utils.
396
397 @subsection SuSE
398
399 Some SUSE RPMS should available from
400 @uref{ftp://ftp.lilypond.org/pub/LilyPond/binaries/SuSE}.
401
402 You can also compile a RPM for SUSE yourself.  A spec file is in
403 @file{make/out/lilypond.suse.spec}, see the instructions for building
404 the Red Hat RPM.
405
406 You must have the following packages: guile tcsh tetex te_latex te_kpath
407 te_mpost libpng python gpp libgpp gettext autoconf netpbm libnetpb
408 gs_serv gs_lib gs_fonts guile
409
410 @subsection Slackware
411
412 No precompiled packages for Slackware are available.
413
414 Problems have been reported with Slackware 7.0; apparently, it ships
415 with a faulty compiler. Do not compile LilyPond with -O2 on this
416 platform.
417
418 At least on Slackware 8.0, you have to manually specify the paths to the
419 Kpathsea library, see the section on kpathsea.
420
421
422 @subsection Mandrake
423
424 Some binaries are available at rpmfind.net. Refer to 
425 @uref{http://rpmfind.net/linux/mandrake/cooker/contrib/RPMS/}.
426
427 You can also compile a RPM for Mandrake yourself.  A spec file is in
428 @file{make/out/lilypond.mandrake.spec}, see the instructions for building
429 the Red Hat RPM.
430
431 @subsection Debian GNU/Linux
432
433 A Debian package is also available.  You may install it easily by running
434 @command{apt-get} as root:
435 @example
436
437         apt-get install lilypond lilypond-doc
438 @end example
439
440 You can also compile the .deb for Debian yourself, do:
441 @example
442
443         apt-get -b source lilypond
444 @end example
445
446 If you're real impatient, you may even do:
447 @example
448
449         cd lilypond-x.y.z   # a previous version
450         uscan               # download and build latest directly from upstream
451 @end example
452
453
454 Debian's @TeX{} installation is a bit short on memory, you may want to
455 increase it like this:
456 @example
457 --- texmf.cnf.orig      Sun Dec 16 23:47:07 2001
458 +++ texmf.cnf   Sun Dec 16 23:46:34 2001
459 @@ -411,8 +411,8 @@
460  main_memory.context = 1500000
461  main_memory.mpost = 1000000
462  main_memory = 263000 % words of inimemory available; also applies to inimf&mp
463 -extra_mem_top = 0    % extra high memory for chars, tokens, etc.
464 -extra_mem_bot = 0    % extra low memory for boxes, glue, breakpoints, etc.
465 +extra_mem_top = 1000000    % extra high memory for chars, tokens, etc.
466 +extra_mem_bot = 1000000    % extra low memory for boxes, glue, breakpoints, etc.
467  
468  obj_tab_size.context = 300000
469  
470 @@ -430,7 +430,7 @@
471  % Max number of characters in all strings, including all error messages,
472  % help texts, font names, control sequences.  These values apply to TeX and MP.
473  pool_size.context = 750000
474 -pool_size = 125000             
475 +pool_size = 250000             
476  % Minimum pool space after TeX/MP's own strings; must be at least
477  % 25000 less than pool_size, but doesn't need to be nearly that large.
478  string_vacancies.context = 45000
479 @end example
480
481 You could also export @env{extra_mem_top} and @env{extra_mem_bot} as
482 environment variables if you do not want to or cannot modify
483 @file{/etc/texmf/texmf.cnf}.
484
485 Alternatively, visit:
486
487 @itemize @bullet
488 @item @uref{http://packages.debian.org/lilypond,http://packages.debian.org/lilypond}
489 @item @uref{http://people.debian.org/~foka/lilypond/,http://people.debian.org/~foka/lilypond/}
490 for latest semi-unofficial build of LilyPond 1.4.2 for Debian 2.2 (potato) users.
491 The official stable Debian 2.2 is stuck with the old LilyPond-1.3.24.
492 Since LilyPond-1.4 has been released, the older lilypond1.3 Debian
493 package is now obsolete.
494 @end itemize
495
496 Please contact Anthony Fok @email{lilypond@@packages.debian.org} for more
497 information.
498
499 The build scripts are in the subdirectory @file{debian/}; you can
500 make the .deb by doing, for example:
501
502 @example
503         $ su - root
504         # dpkg --purge lilypond lilypond1.3
505         # exit
506         $ tar xzf lilypond-1.4.3.tar.gz
507         $ cd lilypond-1.4.3
508         $ dch -p -v 1.4.3-0.local.1 "Local build."
509         $ debuild -B
510         $ su - root
511         # dpkg -i ../lilypond_1.4.3*.deb
512         # exit
513         $
514 @end example
515
516 Use command @command{debuild} instead of @command{debuild -B} if you have
517 a very fast machine and want to build the HTML, PS and DVI documentation
518 too.
519
520 For compilation on a Debian GNU/Linux system you need these packages,
521 in addition to the those needed for running:
522
523 @itemize @bullet
524 @item g++, cpp, libc6-dev, libstdc++<@var{your-libstdc++-version-here}>-dev
525 @item libguile<@var{your-libguile-version-here}>-dev
526 @item make, m4, flex, bison
527 @item gettext
528 @item groff, texinfo
529 @item tetex-base, tetex-bin, tetex-extra, libkpathsea-dev or tetex-dev
530 @item dpkg-dev, debhelper, fakeroot
531 @item gs, netpbm
532 @item pnmtopng (only in Debian 2.2; pnmtopng has been merged with netpbm
533   in Debian testing/unstable.)
534 @end itemize
535
536 Most of these are listed on the @samp{Build-Depends} line in the
537 @file{debian/control} file.  To ensure the creation of the lilypond deb is
538 trouble-free, we recommend that you first install the following packages
539 by running \@command{apt-get} as root before building the package:
540
541 For Debian 2.2:
542
543 @example
544         apt-get install task-debian-devel task-c++-dev \
545                 python-base libguile6-dev tetex-bin tetex-dev \
546                 tetex-extra flex bison texinfo groff gs \
547                 netpbm pnmtopng m4 gettext
548 @end example
549
550 For Debian in development ("unstable", the future 2.3 or 3.0):
551
552 @example
553         apt-get install binutils cpp gcc libc6-dev \
554                 g++ libstdc++2.10-dev \
555                 python-base libguile-dev tetex-bin libkpathsea-dev \
556                 tetex-extra flex bison texinfo  groff gs \
557                 netpbm m4 gettext
558 @end example
559
560 And, just so that old fonts from previous versions of LilyPond won't
561 interfere with your build, you may want to do this before the build too:
562
563 @example
564         dpkg --purge lilypond lilypond1.3
565 @end example
566
567 @subsection MacOS X
568
569 LilyPond is available through fink, in the unstable cvs distribution.
570
571 You need to:
572 @itemize @bullet
573 @item Get the Fink package manager from @uref{http://fink.sourceforge.net}.
574 @item Get the LilyPond package description by enabling the "unstable" tree
575 in fink and executing @command{fink selfupdate-cvs}.
576 @end itemize
577
578 Then do:
579 @quotation
580 @example
581         fink install lilypond-unstable
582 @end example
583 @end quotation
584
585 That's it!  The command should compile and install all LilyPond
586 prerequisites (python, TeX, X11, ghostscript) and then LilyPond
587 itself.
588
589
590 @subsection Compiling on MacOS X
591 LilyPond has been built on Darwin, to be precise, on:
592 @example
593     Darwin buoux.aspiratie.nl 5.3 Darwin Kernel Version 5.3: Thu Jan 24
594     22:06:02 PST 2002; root:xnu/xnu-201.19.obj~1/RELEASE_PPC  Power Macintosh powerpc
595 @end example
596
597 using:   
598
599 @example
600     Apple Computer, Inc. version gcc-932.1, based on gcc version 2.95.2 19991024 (release)
601 @end example
602
603 To make sure you have all packages needed to build LilyPond installed,
604 run as root:
605
606 @example
607         apt-get install bash python guile debianutils flex bison texinfo \
608                 ghostscript6 netpbm m4 gettext
609 @end example        
610
611 and:
612                 
613 @example
614         fink install tetex
615 @end example        
616
617 For more information about @file{apt-get} and @file{fink}, see
618 @uref{http://fink.sf.net,fink.sourceforge.net}.
619
620 @c  brokenness of autoconf; don't ask
621 Then, configure, patch, make and install LilyPond using these commands:
622
623 @example
624         CC="cc -I/sw/include" CXX="c++ -I/sw/include" LDFLAGS="-L/sw/lib" \
625             ./configure --prefix=/sw
626         make -C lily out/parser.hh out/parser.cc out/config.h
627         patch -p0 < darwin.patch
628         make -C lily out/parser.o
629         make DEPENDENCIES_OUTPUT=/dev/null all
630         make install
631 @end example
632
633 For installing, you must be root, of course.
634
635 @c Why isn't this in BUGS (where it belongs?)
636 @section Problems
637
638 For help and questions use @email{lilypond-user@@gnu.org}.  Please
639 consult the FAQ before mailing your problems.  If you find bugs, please
640 send bug reports to @email{bug-lilypond@@gnu.org}.
641
642 Bugs that are not fault of LilyPond are documented here.
643
644 @subsection Linking to kpathsea
645
646 If kpathsea and the corresponding header files are installed in some
647 directory where GCC does not search by default, for example in
648 @file{/usr/local/lib/} and @file{/usr/local/include/} respectively,
649 you have to explicitly tell configure where to find it. To do this:
650
651 @itemize
652 @item @code{rm config.cache}
653 @item @code{export LDFLAGS=-L/usr/share/texmf/lib}
654 @item @code{export CPPFLAGS=-I/usr/share/texmf/include}
655 @item @code{./configure}
656 @end itemize
657 Once configure has found them, the paths are stored in
658 @file{config.make} and will be used even if you don't have the
659 environment variables set during make.
660
661
662 @unnumberedsubsec Gcc-3.0.4
663
664 Gcc 3.0.4, is a bit flaky.  Try downgrading to 2.95.x, or if you're
665 adventurous (see below), upgrading to 3.1.x.
666
667 @unnumberedsubsec Flex-2.5.4a and gcc-3.x
668
669 Flex 2.5.4a does not produce g++-3.0 compliant C++ code.  To compile
670 LilyPond with gcc-3.0 you may do:
671
672 @example
673         CC=gcc-3.0 CXX=g++-3.0 ./configure --enable-config=gcc-3.0
674         make conf=gcc-3.0 -C lily out-gcc-3.0/lexer.cc
675         patch -p1 < lexer-gcc-3.0.patch
676         make conf=gcc-3.0 -C lily
677 @end example
678
679 Note that this is fixed in Debian/unstable for flex >= 2.5.4a-13.
680
681 @unnumberedsubsec Flex-2.5.4a and gcc-3.1.x
682
683 Flex 2.5.4a does not produce g++-3.1.1 compliant C++ code.  To compile
684 LilyPond with gcc-3.1.1 you may do:
685
686 @example
687         CONF=gcc-3.1 ./lexer-gcc-3.1.sh
688         CPPFLAGS=-I$(pwd)/lily/out-gcc-3.1 CC=gcc-3.1 CXX=g++-3.1 \
689             ./configure --enable-config=gcc-3.1
690         CONF=gcc-3.1 ./lexer-gcc-3.1.sh
691         make conf=gcc-3.1
692 @end example
693
694 This assumes that the GCC 3.1 binaries are called gcc-3.1 and g++-3.1.
695 Note that this is @strong{not} fixed in Debian/unstable for flex <=
696 2.5.4a-26.
697
698 @unnumberedsubsec Linux-2.4.0, Guile-1.4 --with-threads
699
700 There's a bug in certain kernels around version 2.4.0, that is
701 triggered when using Guile 1.4 compiled with pthreads.  You'll see
702 random segmentation fault crashes of LilyPond.  Upgrade to a newer
703 version of Linux.  If you can't do that, you may try to recompiling
704 Guile without threads (YMMV):
705
706 @example
707          guile-1.4$ ./configure --without-threads; make all install
708 @end example
709
710 @unnumberedsubsec OpenBSD
711
712 @itemize @bullet
713 @item By default, gcc on OpenBSD doesn't include
714 @file{/usr/local/include} and @file{/usr/local/lib} in the system
715 paths.  Depending upon where/how you installed kpathsea and other
716 libraries, you may need to refer to the section ``Linking to
717 kpathsea''.
718
719 @end itemize
720
721 @unnumberedsubsec NetBSD
722
723 @itemize @bullet
724 @item The flex precompiled in NetBSD-1.4.2 is broken.
725 Download flex-2.5.4a, build, install.
726
727 @item The configuration of Gcc (egcs-2.91.60 19981201 (egcs-1.1.1
728 release)) does not include @file{/usr/pkg} paths.  Configure using:
729 @example
730
731         CFLAGS='-I /usr/pkg/include' LDFLAGS='-L/usr/pkg/lib' ./configure
732
733 @end example
734
735 @end itemize
736
737 @unnumberedsubsec  Solaris
738
739 @itemize @bullet
740 @item Solaris7, ./configure
741
742 @file{./configure} needs a POSIX compliant shell.  On Solaris7,
743 @file{/bin/sh} is not yet POSIX compliant, but @file{/bin/ksh} or bash
744 is.  Please run configure like:
745 @example
746         CONFIG_SHELL=/bin/ksh ksh -c ./configure
747 @end example
748 or:
749 @example
750         CONFIG_SHELL=/bin/bash bash -c ./configure
751 @end example
752
753 @item Sparc64/Solaris 2.6, GNU make-3.77
754
755 GNU make-3.77 is buggy on this platform, upgrade to 3.78.1 or newer.
756
757 @item Sparc64/Solaris 2.6, ld
758
759 Not yet resolved.
760 @end itemize
761
762
763 @unnumberedsubsec   AIX
764
765 @itemize @bullet
766 @item AIX 4.3 ld
767
768 The following is from the gcc install/SPECIFIC file:
769 @quotation
770    Some versions of the AIX binder (linker) can fail with a relocation
771    overflow severe error when the -bbigtoc option is used to link
772    GCC-produced object files into an executable that overflows the TOC.
773    A fix for APAR IX75823 (OVERFLOW DURING LINK WHEN USING GCC AND  
774    -BBIGTOC) is available from IBM Customer Support and from its
775    27service.boulder.ibm.com website as PTF U455193.   
776
777    Binutils does not support AIX 4.3 (at least through release 2.9). GNU
778    as and GNU ld will not work properly and one should not configure GCC
779    to use those GNU utilities. Use the native AIX tools which do
780    interoperate with GCC.
781 @end quotation
782
783 add -Wl,-bbigtoc to USER_LDFLAGS, i.e.:
784 @example
785         LDFLAGS='-Wl,-bbigtoc' ./configure
786 @end example
787
788 @end itemize
789
790
791 @bye
792