Merge branch 'next' (early part) into mh-vala-support
[automake.git] / doc / automake.texi
blob05f2bfd31795bfb59df379ead9c6f9c2dbaa78f3
1 \input texinfo   @c -*-texinfo-*-
2 @c %**start of header
3 @setfilename automake.info
4 @settitle automake
5 @setchapternewpage off
6 @c %**end of header
8 @include version.texi
10 @c @ovar(ARG, DEFAULT)
11 @c -------------------
12 @c The ARG is an optional argument.  To be used for macro arguments in
13 @c their documentation (@defmac).
14 @macro ovar{varname}
15 @r{[}@var{\varname\}@r{]}
16 @end macro
18 @copying
20 This manual is for @acronym{GNU} Automake (version @value{VERSION},
21 @value{UPDATED}), a program that creates GNU standards-compliant
22 Makefiles from template files.
24 Copyright @copyright{} 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
25 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
27 @quotation
28 Permission is granted to copy, distribute and/or modify this document
29 under the terms of the @acronym{GNU} Free Documentation License,
30 Version 1.3 or any later version published by the Free Software
31 Foundation; with no Invariant Sections, with no Front-Cover texts,
32 and with no Back-Cover Texts.  A copy of the license is included in the
33 section entitled ``@acronym{GNU} Free Documentation License.''
35 @end quotation
36 @end copying
38 @c info Automake  points to the Automake package's documentation
39 @c info automake  points to the automake script's documentation
40 @c (Autoconf has a similar setup.)
41 @dircategory Software development
42 @direntry
43 * Automake: (automake).         Making GNU standards-compliant Makefiles.
44 @end direntry
46 @dircategory Individual utilities
47 @direntry
48 * aclocal: (automake)Invoking aclocal.          Generating aclocal.m4.
49 * automake: (automake)Invoking Automake.        Generating Makefile.in.
50 @end direntry
52 @titlepage
53 @title GNU Automake
54 @subtitle For version @value{VERSION}, @value{UPDATED}
55 @author David MacKenzie
56 @author Tom Tromey
57 @author Alexandre Duret-Lutz
58 @page
59 @vskip 0pt plus 1filll
60 @insertcopying
61 @end titlepage
64 @c We use the following macros to define indices:
65 @c   @cindex   concepts, and anything that does not fit elsewhere
66 @c   @vindex   Makefile variables
67 @c   @trindex  targets
68 @c   @acindex  Autoconf/Automake/Libtool/M4/... macros
69 @c   @opindex  tool options
71 @c Define an index of configure macros.
72 @defcodeindex ac
73 @c Define an index of options.
74 @defcodeindex op
75 @c Define an index of targets.
76 @defcodeindex tr
77 @c Define an index of commands.
78 @defcodeindex cm
80 @c Put the macros in the function index.
81 @syncodeindex ac fn
83 @c Put everything else into one index (arbitrarily chosen to be the concept index).
84 @syncodeindex op cp
85 @syncodeindex tr cp
86 @syncodeindex cm cp
88 @ifnottex
89 @node Top
90 @comment  node-name,  next,  previous,  up
91 @top GNU Automake
93 @insertcopying
95 @menu
96 * Introduction::                Automake's purpose
97 * Autotools Introduction::      An Introduction to the Autotools
98 * Generalities::                General ideas
99 * Examples::                    Some example packages
100 * Invoking Automake::           Creating a Makefile.in
101 * configure::                   Scanning configure.ac or configure.in
102 * Directories::                 Declaring subdirectories
103 * Programs::                    Building programs and libraries
104 * Other Objects::               Other derived objects
105 * Other GNU Tools::             Other GNU Tools
106 * Documentation::               Building documentation
107 * Install::                     What gets installed
108 * Clean::                       What gets cleaned
109 * Dist::                        What goes in a distribution
110 * Tests::                       Support for test suites
111 * Rebuilding::                  Automatic rebuilding of Makefile
112 * Options::                     Changing Automake's behavior
113 * Miscellaneous::               Miscellaneous rules
114 * Include::                     Including extra files in an Automake template
115 * Conditionals::                Conditionals
116 * Gnits::                       The effect of @option{--gnu} and @option{--gnits}
117 * Cygnus::                      The effect of @option{--cygnus}
118 * Not Enough::                  When Automake is not Enough
119 * Distributing::                Distributing the Makefile.in
120 * API Versioning::              About compatibility between Automake versions
121 * Upgrading::                   Upgrading to a Newer Automake Version
122 * FAQ::                         Frequently Asked Questions
123 * History::                     Notes about the history of Automake
124 * Copying This Manual::         How to make copies of this manual
125 * Indices::                     Indices of variables, macros, and concepts
127 @detailmenu
128  --- The Detailed Node Listing ---
130 An Introduction to the Autotools
132 * GNU Build System::            Introducing the GNU Build System
133 * Use Cases::                   Use Cases for the GNU Build System
134 * Why Autotools::               How Autotools Help
135 * Hello World::                 A Small Hello World Package
137 Use Cases for the GNU Build System
139 * Basic Installation::          Common installation procedure
140 * Standard Targets::            A list of standard Makefile targets
141 * Standard Directory Variables::  A list of standard directory variables
142 * Standard Configuration Variables::  Using configuration variables
143 * config.site::                 Using a config.site file
144 * VPATH Builds::                Parallel build trees
145 * Two-Part Install::            Installing data and programs separately
146 * Cross-Compilation::           Building for other architectures
147 * Renaming::                    Renaming programs at install time
148 * DESTDIR::                     Building binary packages with DESTDIR
149 * Preparing Distributions::     Rolling out tarballs
150 * Dependency Tracking::         Automatic dependency tracking
151 * Nested Packages::             The GNU Build Systems can be nested
153 A Small Hello World
155 * Creating amhello::            Create @file{amhello-1.0.tar.gz} from scratch
156 * amhello Explained::           @file{configure.ac} and @file{Makefile.am} explained
158 General ideas
160 * General Operation::           General operation of Automake
161 * Strictness::                  Standards conformance checking
162 * Uniform::                     The Uniform Naming Scheme
163 * Canonicalization::            How derived variables are named
164 * Length Limitations::          Staying below the command line length limit
165 * User Variables::              Variables reserved for the user
166 * Auxiliary Programs::          Programs automake might require
168 Some example packages
170 * Complete::                    A simple example, start to finish
171 * true::                        Building true and false
173 Scanning @file{configure.ac}
175 * Requirements::                Configuration requirements
176 * Optional::                    Other things Automake recognizes
177 * Invoking aclocal::            Auto-generating aclocal.m4
178 * Macros::                      Autoconf macros supplied with Automake
180 Auto-generating aclocal.m4
182 * aclocal Options::             Options supported by aclocal
183 * Macro Search Path::           How aclocal finds .m4 files
184 * Extending aclocal::           Writing your own aclocal macros
185 * Local Macros::                Organizing local macros
186 * Serials::                     Serial lines in Autoconf macros
187 * Future of aclocal::           aclocal's scheduled death
189 Autoconf macros supplied with Automake
191 * Public Macros::               Macros that you can use.
192 * Obsolete Macros::             Macros that you should stop using.
193 * Private Macros::              Macros that you should not use.
195 Directories
197 * Subdirectories::              Building subdirectories recursively
198 * Conditional Subdirectories::  Conditionally not building directories
199 * Alternative::                 Subdirectories without recursion
200 * Subpackages::                 Nesting packages
202 Conditional Subdirectories
204 * SUBDIRS vs DIST_SUBDIRS::     Two sets of directories
205 * Subdirectories with AM_CONDITIONAL::  Specifying conditional subdirectories
206 * Subdirectories with AC_SUBST::  Another way for conditional recursion
207 * Unconfigured Subdirectories::  Not even creating a @samp{Makefile}
209 Building Programs and Libraries
211 * A Program::                   Building a program
212 * A Library::                   Building a library
213 * A Shared Library::            Building a Libtool library
214 * Program and Library Variables::  Variables controlling program and
215                                 library builds
216 * Default _SOURCES::            Default source files
217 * LIBOBJS::                     Special handling for LIBOBJS and ALLOCA
218 * Program Variables::           Variables used when building a program
219 * Yacc and Lex::                Yacc and Lex support
220 * C++ Support::                 Compiling C++ sources
221 * Objective C Support::         Compiling Objective C sources
222 * Unified Parallel C Support::  Compiling Unified Parallel C sources
223 * Assembly Support::            Compiling assembly sources
224 * Fortran 77 Support::          Compiling Fortran 77 sources
225 * Fortran 9x Support::          Compiling Fortran 9x sources
226 * Java Support::                Compiling Java sources
227 * Vala Support::                Compiling Vala sources
228 * Support for Other Languages::  Compiling other languages
229 * ANSI::                        Automatic de-ANSI-fication (obsolete)
230 * Dependencies::                Automatic dependency tracking
231 * EXEEXT::                      Support for executable extensions
233 Building a program
235 * Program Sources::             Defining program sources
236 * Linking::                     Linking with libraries or extra objects
237 * Conditional Sources::         Handling conditional sources
238 * Conditional Programs::        Building program conditionally
240 Building a Shared Library
242 * Libtool Concept::             Introducing Libtool
243 * Libtool Libraries::           Declaring Libtool Libraries
244 * Conditional Libtool Libraries::  Building Libtool Libraries Conditionally
245 * Conditional Libtool Sources::  Choosing Library Sources Conditionally
246 * Libtool Convenience Libraries::  Building Convenience Libtool Libraries
247 * Libtool Modules::             Building Libtool Modules
248 * Libtool Flags::               Using _LIBADD, _LDFLAGS, and _LIBTOOLFLAGS
249 * LTLIBOBJS::                   Using $(LTLIBOBJS) and $(LTALLOCA)
250 * Libtool Issues::              Common Issues Related to Libtool's Use
252 Fortran 77 Support
254 * Preprocessing Fortran 77::    Preprocessing Fortran 77 sources
255 * Compiling Fortran 77 Files::  Compiling Fortran 77 sources
256 * Mixing Fortran 77 With C and C++::  Mixing Fortran 77 With C and C++
258 Mixing Fortran 77 With C and C++
260 * How the Linker is Chosen::    Automatic linker selection
262 Fortran 9x Support
264 * Compiling Fortran 9x Files::  Compiling Fortran 9x sources
266 Other Derived Objects
268 * Scripts::                     Executable scripts
269 * Headers::                     Header files
270 * Data::                        Architecture-independent data files
271 * Sources::                     Derived sources
273 Built Sources
275 * Built Sources Example::       Several ways to handle built sources.
277 Other GNU Tools
279 * Emacs Lisp::                  Emacs Lisp
280 * gettext::                     Gettext
281 * Libtool::                     Libtool
282 * Java::                        Java
283 * Python::                      Python
285 Building documentation
287 * Texinfo::                     Texinfo
288 * Man Pages::                   Man pages
290 Installation
292 * Basics of Installation::      What gets installed where
293 * The Two Parts of Install::    Installing data and programs separately
294 * Extending Installation::      Adding your own rules for installation
295 * Staged Installs::             Installation in a temporary location
296 * Install Rules for the User::  Useful additional rules
298 Distribution
300 * Basics of Distribution::      Files distributed by default
301 * Fine-grained Distribution Control::  @code{dist_} and @code{nodist_} prefixes
302 * The dist Hook::               A target for last-minute distribution changes
303 * Checking the Distribution::   @samp{make distcheck} explained
304 * The Types of Distributions::  A variety of formats and compression methods
306 Support for Test Suites
308 * Simple Tests::                Listing programs and scripts in @code{TESTS}
309 * Simple Tests using parallel-tests::  More powerful test driver
310 * DejaGnu Tests::               Interfacing with the external testing framework
311 * Install Tests::               Running tests on installed packages
313 Miscellaneous Rules
315 * Tags::                        Interfacing to etags and mkid
316 * Suffixes::                    Handling new file extensions
317 * Multilibs::                   Support for multilibs.
319 Conditionals
321 * Usage of Conditionals::       Declaring conditional content
322 * Limits of Conditionals::      Enclosing complete statements
324 When Automake Isn't Enough
326 * Extending::                   Adding new rules or overriding existing ones.
327 * Third-Party Makefiles::       Integrating Non-Automake @file{Makefile}s.
329 Frequently Asked Questions about Automake
331 * CVS::                         CVS and generated files
332 * maintainer-mode::             missing and AM_MAINTAINER_MODE
333 * Wildcards::                   Why doesn't Automake support wildcards?
334 * Limitations on File Names::   Limitations on source and installed file names
335 * distcleancheck::              Files left in build directory after distclean
336 * Flag Variables Ordering::     CFLAGS vs.@: AM_CFLAGS vs.@: mumble_CFLAGS
337 * Renamed Objects::             Why are object files sometimes renamed?
338 * Per-Object Flags::            How to simulate per-object flags?
339 * Multiple Outputs::            Writing rules for tools with many output files
340 * Hard-Coded Install Paths::    Installing to Hard-Coded Locations
342 History of Automake
344 * Timeline::                    The Automake story.
345 * Dependency Tracking Evolution::  Evolution of Automatic Dependency Tracking
346 * Releases::                    Statistics about Automake Releases
348 Dependency Tracking Evolution
350 * First Take on Dependencies::  Precomputed dependency tracking
351 * Dependencies As Side Effects::  Update at developer compile time
352 * Dependencies for the User::   Update at user compile time
353 * Techniques for Dependencies:: Alternative approaches
354 * Recommendations for Tool Writers::  What tool writers can do to help
355 * Future Directions for Dependencies::  Languages Automake does not know
357 Copying This Manual
359 * GNU Free Documentation License::  License for copying this manual
361 Indices
363 * Macro Index::                 Index of Autoconf macros
364 * Variable Index::              Index of Makefile variables
365 * General Index::               General index
367 @end detailmenu
368 @end menu
370 @end ifnottex
373 @node Introduction
374 @chapter Introduction
376 Automake is a tool for automatically generating @file{Makefile.in}s
377 from files called @file{Makefile.am}.  Each @file{Makefile.am} is
378 basically a series of @command{make} variable
379 definitions@footnote{These variables are also called @dfn{make macros}
380 in Make terminology, however in this manual we reserve the term
381 @dfn{macro} for Autoconf's macros.}, with rules being thrown in
382 occasionally.  The generated @file{Makefile.in}s are compliant with
383 the GNU Makefile standards.
385 @cindex GNU Makefile standards
387 The GNU Makefile Standards Document
388 (@pxref{Makefile Conventions, , , standards, The GNU Coding Standards})
389 is long, complicated, and subject to change.  The goal of Automake is to
390 remove the burden of Makefile maintenance from the back of the
391 individual GNU maintainer (and put it on the back of the Automake
392 maintainers).
394 The typical Automake input file is simply a series of variable definitions.
395 Each such file is processed to create a @file{Makefile.in}.  There
396 should generally be one @file{Makefile.am} per directory of a project.
398 @cindex Constraints of Automake
399 @cindex Automake constraints
401 Automake does constrain a project in certain ways; for instance, it
402 assumes that the project uses Autoconf (@pxref{Top, , Introduction,
403 autoconf, The Autoconf Manual}), and enforces certain restrictions on
404 the @file{configure.ac} contents@footnote{Older Autoconf versions used
405 @file{configure.in}.  Autoconf 2.50 and greater promotes
406 @file{configure.ac} over @file{configure.in}.  The rest of this
407 documentation will refer to @file{configure.ac}, but Automake also
408 supports @file{configure.in} for backward compatibility.}.
410 @cindex Automake requirements
411 @cindex Requirements, Automake
413 Automake requires @command{perl} in order to generate the
414 @file{Makefile.in}s.  However, the distributions created by Automake are
415 fully GNU standards-compliant, and do not require @command{perl} in order
416 to be built.
418 @cindex Bugs, reporting
419 @cindex Reporting bugs
420 @cindex E-mail, bug reports
422 Mail suggestions and bug reports for Automake to
423 @email{bug-automake@@gnu.org}.
425 @node Autotools Introduction
426 @chapter An Introduction to the Autotools
428 If you are new to Automake, maybe you know that it is part of a set of
429 tools called @emph{The Autotools}.  Maybe you've already delved into a
430 package full of files named @file{configure}, @file{configure.ac},
431 @file{Makefile.in}, @file{Makefile.am}, @file{aclocal.m4}, @dots{},
432 some of them claiming to be @emph{generated by} Autoconf or Automake.
433 But the exact purpose of these files and their relations is probably
434 fuzzy.  The goal of this chapter is to introduce you to this machinery,
435 to show you how it works and how powerful it is.  If you've never
436 installed or seen such a package, do not worry: this chapter will walk
437 you through it.
439 If you need some teaching material, more illustrations, or a less
440 @command{automake}-centered continuation, some slides for this
441 introduction are available in Alexandre Duret-Lutz's
442 @uref{http://www-src.lip6.fr/@/~Alexandre.Duret-Lutz/@/autotools.html,
443 Autotools Tutorial}.
444 This chapter is the written version of the first part of his tutorial.
446 @menu
447 * GNU Build System::            Introducing the GNU Build System
448 * Use Cases::                   Use Cases for the GNU Build System
449 * Why Autotools::               How Autotools Help
450 * Hello World::                 A Small Hello World Package
451 @end menu
453 @node GNU Build System
454 @section Introducing the GNU Build System
455 @cindex GNU Build System, introduction
457 It is a truth universally acknowledged, that a developer in
458 possession of a new package, must be in want of a build system.
460 In the Unix world, such a build system is traditionally achieved using
461 the command @command{make} (@pxref{Top, , Overview, make, The GNU Make
462 Manual}).  The developer expresses the recipe to build his package in
463 a @file{Makefile}.  This file is a set of rules to build the files in
464 the package.  For instance the program @file{prog} may be built by
465 running the linker on the files @file{main.o}, @file{foo.o}, and
466 @file{bar.o}; the file @file{main.o} may be built by running the
467 compiler on @file{main.c}; etc.  Each time @command{make} is run, it
468 reads @file{Makefile}, checks the existence and modification time of
469 the files mentioned, decides what files need to be built (or rebuilt),
470 and runs the associated commands.
472 When a package needs to be built on a different platform than the one
473 it was developed on, its @file{Makefile} usually needs to be adjusted.
474 For instance the compiler may have another name or require more
475 options.  In 1991, David J. MacKenzie got tired of customizing
476 @file{Makefile} for the 20 platforms he had to deal with.  Instead, he
477 handcrafted a little shell script called @file{configure} to
478 automatically adjust the @file{Makefile} (@pxref{Genesis, , Genesis,
479 autoconf, The Autoconf Manual}).  Compiling his package was now
480 as simple as running @code{./configure && make}.
482 @cindex GNU Coding Standards
484 Today this process has been standardized in the GNU project.  The GNU
485 Coding Standards (@pxref{Managing Releases, The Release Process, ,
486 standards, The GNU Coding Standards}) explains how each package of the
487 GNU project should have a @file{configure} script, and the minimal
488 interface it should have.  The @file{Makefile} too should follow some
489 established conventions.  The result?  A unified build system that
490 makes all packages almost indistinguishable by the installer.  In its
491 simplest scenario, all the installer has to do is to unpack the
492 package, run @code{./configure && make && make install}, and repeat
493 with the next package to install.
495 We call this build system the @dfn{GNU Build System}, since it was
496 grown out of the GNU project.  However it is used by a vast number of
497 other packages: following any existing convention has its advantages.
499 @cindex Autotools, introduction
501 The Autotools are tools that will create a GNU Build System for your
502 package.  Autoconf mostly focuses on @file{configure} and Automake on
503 @file{Makefile}s.  It is entirely possible to create a GNU Build
504 System without the help of these tools.  However it is rather
505 burdensome and error-prone.  We will discuss this again after some
506 illustration of the GNU Build System in action.
508 @node Use Cases
509 @section Use Cases for the GNU Build System
510 @cindex GNU Build System, use cases
511 @cindex GNU Build System, features
512 @cindex Features of the GNU Build System
513 @cindex Use Cases for the GNU Build System
514 @cindex @file{amhello-1.0.tar.gz}, location
515 @cindex @file{amhello-1.0.tar.gz}, use cases
517 In this section we explore several use cases for the GNU Build System.
518 You can replay all these examples on the @file{amhello-1.0.tar.gz}
519 package distributed with Automake.  If Automake is installed on your
520 system, you should find a copy of this file in
521 @file{@var{prefix}/share/doc/automake/amhello-1.0.tar.gz}, where
522 @var{prefix} is the installation prefix specified during configuration
523 (@var{prefix} defaults to @file{/usr/local}, however if Automake was
524 installed by some GNU/Linux distribution it most likely has been set
525 to @file{/usr}).  If you do not have a copy of Automake installed,
526 you can find a copy of this file inside the @file{doc/} directory of
527 the Automake package.
529 Some of the following use cases present features that are in fact
530 extensions to the GNU Build System.  Read: they are not specified by
531 the GNU Coding Standards, but they are nonetheless part of the build
532 system created by the Autotools.  To keep things simple, we do not
533 point out the difference.  Our objective is to show you many of the
534 features that the build system created by the Autotools will offer to
535 you.
537 @menu
538 * Basic Installation::          Common installation procedure
539 * Standard Targets::            A list of standard Makefile targets
540 * Standard Directory Variables::  A list of standard directory variables
541 * Standard Configuration Variables::  Using configuration variables
542 * config.site::                 Using a config.site file
543 * VPATH Builds::                Parallel build trees
544 * Two-Part Install::            Installing data and programs separately
545 * Cross-Compilation::           Building for other architectures
546 * Renaming::                    Renaming programs at install time
547 * DESTDIR::                     Building binary packages with DESTDIR
548 * Preparing Distributions::     Rolling out tarballs
549 * Dependency Tracking::         Automatic dependency tracking
550 * Nested Packages::             The GNU Build Systems can be nested
551 @end menu
553 @node Basic Installation
554 @subsection Basic Installation
555 @cindex Configuration, basics
556 @cindex Installation, basics
557 @cindex GNU Build System, basics
559 The most common installation procedure looks as follows.
561 @example
562 ~ % @kbd{tar zxf amhello-1.0.tar.gz}
563 ~ % @kbd{cd amhello-1.0}
564 ~/amhello-1.0 % @kbd{./configure}
565 @dots{}
566 config.status: creating Makefile
567 config.status: creating src/Makefile
568 @dots{}
569 ~/amhello-1.0 % @kbd{make}
570 @dots{}
571 ~/amhello-1.0 % @kbd{make check}
572 @dots{}
573 ~/amhello-1.0 % @kbd{su}
574 Password:
575 /home/adl/amhello-1.0 # @kbd{make install}
576 @dots{}
577 /home/adl/amhello-1.0 # @kbd{exit}
578 ~/amhello-1.0 % @kbd{make installcheck}
579 @dots{}
580 @end example
582 @cindex Unpacking
584 The user first unpacks the package.  Here, and in the following
585 examples, we will use the non-portable @code{tar zxf} command for
586 simplicity.  On a system without GNU @command{tar} installed, this
587 command should read @code{gunzip -c amhello-1.0.tar.gz | tar xf -}.
589 The user then enters the newly created directory to run the
590 @file{configure} script.  This script probes the system for various
591 features, and finally creates the @file{Makefile}s.  In this toy
592 example there are only two @file{Makefile}s, but in real-world projects,
593 there may be many more, usually one @file{Makefile} per directory.
595 It is now possible to run @code{make}.  This will construct all the
596 programs, libraries, and scripts that need to be constructed for the
597 package.  In our example, this compiles the @file{hello} program.
598 All files are constructed in place, in the source tree; we will see
599 later how this can be changed.
601 @code{make check} causes the package's tests to be run.  This step is
602 not mandatory, but it is often good to make sure the programs that
603 have been built behave as they should, before you decide to install
604 them.  Our example does not contain any tests, so running @code{make
605 check} is a no-op.
607 @cindex su, before @code{make install}
608 After everything has been built, and maybe tested, it is time to
609 install it on the system.  That means copying the programs,
610 libraries, header files, scripts, and other data files from the
611 source directory to their final destination on the system.  The
612 command @code{make install} will do that.  However, by default
613 everything will be installed in subdirectories of @file{/usr/local}:
614 binaries will go into @file{/usr/local/bin}, libraries will end up in
615 @file{/usr/local/lib}, etc.  This destination is usually not writable
616 by any user, so we assume that we have to become root before we can
617 run @code{make install}.  In our example, running @code{make install}
618 will copy the program @file{hello} into @file{/usr/local/bin}
619 and @file{README} into @file{/usr/local/share/doc/amhello}.
621 A last and optional step is to run @code{make installcheck}.  This
622 command may run tests on the installed files.  @code{make check} tests
623 the files in the source tree, while @code{make installcheck} tests
624 their installed copies.  The tests run by the latter can be different
625 from those run by the former.  For instance, there are tests that
626 cannot be run in the source tree.  Conversely, some packages are set
627 up so that @code{make installcheck} will run the very same tests as
628 @code{make check}, only on different files (non-installed
629 vs.@: installed).  It can make a difference, for instance when the
630 source tree's layout is different from that of the installation.
631 Furthermore it may help to diagnose an incomplete installation.
633 Presently most packages do not have any @code{installcheck} tests
634 because the existence of @code{installcheck} is little known, and its
635 usefulness is neglected.  Our little toy package is no better: @code{make
636 installcheck} does nothing.
638 @node Standard Targets
639 @subsection Standard @file{Makefile} Targets
641 So far we have come across four ways to run @command{make} in the GNU
642 Build System: @code{make}, @code{make check}, @code{make install}, and
643 @code{make installcheck}.  The words @code{check}, @code{install}, and
644 @code{installcheck}, passed as arguments to @command{make}, are called
645 @dfn{targets}.  @code{make} is a shorthand for @code{make all},
646 @code{all} being the default target in the GNU Build System.
648 Here is a list of the most useful targets that the GNU Coding Standards
649 specify.
651 @table @code
652 @item make all
653 @trindex all
654 Build programs, libraries, documentation, etc.@: (same as @code{make}).
655 @item make install
656 @trindex install
657 Install what needs to be installed, copying the files from the
658 package's tree to system-wide directories.
659 @item make install-strip
660 @trindex install-strip
661 Same as @code{make install}, then strip debugging symbols.  Some
662 users like to trade space for useful bug reports@enddots{}
663 @item make uninstall
664 @trindex uninstall
665 The opposite of @code{make install}: erase the installed files.
666 (This needs to be run from the same build tree that was installed.)
667 @item make clean
668 @trindex clean
669 Erase from the build tree the files built by @code{make all}.
670 @item make distclean
671 @trindex distclean
672 Additionally erase anything @code{./configure} created.
673 @item make check
674 @trindex check
675 Run the test suite, if any.
676 @item make installcheck
677 @trindex installcheck
678 Check the installed programs or libraries, if supported.
679 @item make dist
680 @trindex dist
681 Recreate @file{@var{package}-@var{version}.tar.gz} from all the source
682 files.
683 @end table
685 @node Standard Directory Variables
686 @subsection Standard Directory Variables
687 @cindex directory variables
689 The GNU Coding Standards also specify a hierarchy of variables to
690 denote installation directories.  Some of these are:
692 @multitable {Directory variable} {@code{$@{datarootdir@}/doc/$@{PACKAGE@}}}
693 @headitem Directory variable    @tab Default value
694 @item @code{prefix}              @tab @code{/usr/local}
695 @item @w{@ @ @code{exec_prefix}} @tab @code{$@{prefix@}}
696 @item @w{@ @ @ @ @code{bindir}}  @tab @code{$@{exec_prefix@}/bin}
697 @item @w{@ @ @ @ @code{libdir}}  @tab @code{$@{exec_prefix@}/lib}
698 @item @w{@ @ @ @ @dots{}}
699 @item @w{@ @ @code{includedir}}  @tab @code{$@{prefix@}/include}
700 @item @w{@ @ @code{datarootdir}} @tab @code{$@{prefix@}/share}
701 @item @w{@ @ @ @ @code{datadir}} @tab @code{$@{datarootdir@}}
702 @item @w{@ @ @ @ @code{mandir}}  @tab @code{$@{datarootdir@}/man}
703 @item @w{@ @ @ @ @code{infodir}} @tab @code{$@{datarootdir@}/info}
704 @item @w{@ @ @ @ @code{docdir}}  @tab @code{$@{datarootdir@}/doc/$@{PACKAGE@}}
705 @item @w{@ @ @dots{}}
706 @end multitable
708 @c We should provide a complete table somewhere, but not here.  The
709 @c complete list of directory variables it too confusing as-is.  It
710 @c requires some explanations that are too complicated for this
711 @c introduction.  Besides listing directories like localstatedir
712 @c would make the explanations in ``Two-Part Install'' harder.
714 Each of these directories has a role which is often obvious from its
715 name.  In a package, any installable file will be installed in one of
716 these directories.  For instance in @code{amhello-1.0}, the program
717 @file{hello} is to be installed in @var{bindir}, the directory for
718 binaries.  The default value for this directory is
719 @file{/usr/local/bin}, but the user can supply a different value when
720 calling @command{configure}.  Also the file @file{README} will be
721 installed into @var{docdir}, which defaults to
722 @file{/usr/local/share/doc/amhello}.
724 @opindex --prefix
726 A user who wishes to install a package on his own account could proceed
727 as follows:
729 @example
730 ~/amhello-1.0 % @kbd{./configure --prefix ~/usr}
731 @dots{}
732 ~/amhello-1.0 % @kbd{make}
733 @dots{}
734 ~/amhello-1.0 % @kbd{make install}
735 @dots{}
736 @end example
738 This would install @file{~/usr/bin/hello} and
739 @file{~/usr/share/doc/amhello/README}.
741 The list of all such directory options is shown by
742 @code{./configure --help}.
744 @node Standard Configuration Variables
745 @subsection Standard Configuration Variables
746 @cindex configuration variables, overriding
748 The GNU Coding Standards also define a set of standard configuration
749 variables used during the build.  Here are some:
751 @table @asis
752 @item @code{CC}
753 C compiler command
754 @item @code{CFLAGS}
755 C compiler flags
756 @item @code{CXX}
757 C++ compiler command
758 @item @code{CXXFLAGS}
759 C++ compiler flags
760 @item @code{LDFLAGS}
761 linker flags
762 @item @code{CPPFLAGS}
763 C/C++ preprocessor flags
764 @item @dots{}
765 @end table
767 @command{configure} usually does a good job at setting appropriate
768 values for these variables, but there are cases where you may want to
769 override them.  For instance you may have several versions of a
770 compiler installed and would like to use another one, you may have
771 header files installed outside the default search path of the
772 compiler, or even libraries out of the way of the linker.
774 Here is how one would call @command{configure} to force it to use
775 @command{gcc-3} as C compiler, use header files from
776 @file{~/usr/include} when compiling, and libraries from
777 @file{~/usr/lib} when linking.
779 @example
780 ~/amhello-1.0 % @kbd{./configure --prefix ~/usr CC=gcc-3 \
781 CPPFLAGS=-I$HOME/usr/include LDFLAGS=-L$HOME/usr/lib}
782 @end example
784 Again, a full list of these variables appears in the output of
785 @code{./configure --help}.
787 @node config.site
788 @subsection Overriding Default Configuration Setting with @file{config.site}
789 @cindex @file{config.site} example
791 When installing several packages using the same setup, it can be
792 convenient to create a file to capture common settings.
793 If a file named @file{@var{prefix}/share/config.site} exists,
794 @command{configure} will source it at the beginning of its execution.
796 Recall the command from the previous section:
798 @example
799 ~/amhello-1.0 % @kbd{./configure --prefix ~/usr CC=gcc-3 \
800 CPPFLAGS=-I$HOME/usr/include LDFLAGS=-L$HOME/usr/lib}
801 @end example
803 Assuming we are installing many package in @file{~/usr}, and will
804 always want to use these definitions of @code{CC}, @code{CPPFLAGS}, and
805 @code{LDFLAGS}, we can automate this by creating the following
806 @file{~/usr/share/config.site} file:
808 @example
809 test -z "$CC" && CC=gcc-3
810 test -z "$CPPFLAGS" && CPPFLAGS=-I$HOME/usr/include
811 test -z "$LDFLAGS" && LDFLAGS=-L$HOME/usr/lib
812 @end example
814 Now, any time a @file{configure} script is using the @file{~/usr}
815 prefix, it will execute the above @file{config.site} and define
816 these three variables.
818 @example
819 ~/amhello-1.0 % @kbd{./configure --prefix ~/usr}
820 configure: loading site script /home/adl/usr/share/config.site
821 @dots{}
822 @end example
824 @xref{Site Defaults, , Setting Site Defaults, autoconf, The Autoconf
825 Manual}, for more information about this feature.
828 @node VPATH Builds
829 @subsection Parallel Build Trees (a.k.a.@: VPATH Builds)
830 @cindex Parallel build trees
831 @cindex VPATH builds
832 @cindex source tree and build tree
833 @cindex build tree and source tree
834 @cindex trees, source vs.@: build
836 The GNU Build System distinguishes two trees: the source tree, and
837 the build tree.
839 The source tree is rooted in the directory containing
840 @file{configure}.  It contains all the sources files (those that are
841 distributed), and may be arranged using several subdirectories.
843 The build tree is rooted in the directory in which @file{configure}
844 was run, and is populated with all object files, programs, libraries,
845 and other derived files built from the sources (and hence not
846 distributed).  The build tree usually has the same subdirectory layout
847 as the source tree; its subdirectories are created automatically by
848 the build system.
850 If @file{configure} is executed in its own directory, the source and
851 build trees are combined: derived files are constructed in the same
852 directories as their sources.  This was the case in our first
853 installation example (@pxref{Basic Installation}).
855 A common request from users is that they want to confine all derived
856 files to a single directory, to keep their source directories
857 uncluttered.  Here is how we could run @file{configure} to build
858 everything in a subdirectory called @file{build/}.
860 @example
861 ~ % @kbd{tar zxf ~/amhello-1.0.tar.gz}
862 ~ % @kbd{cd amhello-1.0}
863 ~/amhello-1.0 % @kbd{mkdir build && cd build}
864 ~/amhello-1.0/build % @kbd{../configure}
865 @dots{}
866 ~/amhello-1.0/build % @kbd{make}
867 @dots{}
868 @end example
870 These setups, where source and build trees are different, are often
871 called @dfn{parallel builds} or @dfn{VPATH builds}.  The expression
872 @emph{parallel build} is misleading: the word @emph{parallel} is a
873 reference to the way the build tree shadows the source tree, it is not
874 about some concurrency in the way build commands are run.  For this
875 reason we refer to such setups using the name @emph{VPATH builds} in
876 the following.  @emph{VPATH} is the name of the @command{make} feature
877 used by the @file{Makefile}s to allow these builds (@pxref{General
878 Search, , @code{VPATH}: Search Path for All Prerequisites, make, The
879 GNU Make Manual}).
881 @cindex multiple configurations, example
882 @cindex debug build, example
883 @cindex optimized build, example
885 VPATH builds have other interesting uses.  One is to build the same
886 sources with multiple configurations.  For instance:
888 @example
889 ~ % @kbd{tar zxf ~/amhello-1.0.tar.gz}
890 ~ % @kbd{cd amhello-1.0}
891 ~/amhello-1.0 % @kbd{mkdir debug optim && cd debug}
892 ~/amhello-1.0/debug % @kbd{../configure CFLAGS='-g -O0'}
893 @dots{}
894 ~/amhello-1.0/debug % @kbd{make}
895 @dots{}
896 ~/amhello-1.0/debug % cd ../optim
897 ~/amhello-1.0/optim % @kbd{../configure CFLAGS='-O3 -fomit-frame-pointer'}
898 @dots{}
899 ~/amhello-1.0/optim % @kbd{make}
900 @dots{}
901 @end example
903 With network file systems, a similar approach can be used to build the
904 same sources on different machines.  For instance, suppose that the
905 sources are installed on a directory shared by two hosts: @code{HOST1}
906 and @code{HOST2}, which may be different platforms.
908 @example
909 ~ % @kbd{cd /nfs/src}
910 /nfs/src % @kbd{tar zxf ~/amhello-1.0.tar.gz}
911 @end example
913 On the first host, you could create a local build directory:
914 @example
915 [HOST1] ~ % @kbd{mkdir /tmp/amh && cd /tmp/amh}
916 [HOST1] /tmp/amh % @kbd{/nfs/src/amhello-1.0/configure}
918 [HOST1] /tmp/amh % @kbd{make && sudo make install}
920 @end example
922 @noindent
923 (Here we assume that the installer has configured @command{sudo} so it
924 can execute @code{make install} with root privileges; it is more convenient
925 than using @command{su} like in @ref{Basic Installation}).
927 On the second host, you would do exactly the same, possibly at
928 the same time:
929 @example
930 [HOST2] ~ % @kbd{mkdir /tmp/amh && cd /tmp/amh}
931 [HOST2] /tmp/amh % @kbd{/nfs/src/amhello-1.0/configure}
933 [HOST2] /tmp/amh % @kbd{make && sudo make install}
935 @end example
937 @cindex read-only source tree
938 @cindex source tree, read-only
940 In this scenario, nothing forbids the @file{/nfs/src/amhello-1.0}
941 directory from being read-only.  In fact VPATH builds are also a means
942 of building packages from a read-only medium such as a CD-ROM.  (The
943 FSF used to sell CD-ROM with unpacked source code, before the GNU
944 project grew so big.)
946 @node Two-Part Install
947 @subsection Two-Part Installation
949 In our last example (@pxref{VPATH Builds}), a source tree was shared
950 by two hosts, but compilation and installation were done separately on
951 each host.
953 The GNU Build System also supports networked setups where part of the
954 installed files should be shared amongst multiple hosts.  It does so
955 by distinguishing architecture-dependent files from
956 architecture-independent files, and providing two @file{Makefile}
957 targets to install each of these classes of files.
959 @trindex install-exec
960 @trindex install-data
962 These targets are @code{install-exec} for architecture-dependent files
963 and @code{install-data} for architecture-independent files.
964 The command we used up to now, @code{make install}, can be thought of
965 as a shorthand for @code{make install-exec install-data}.
967 From the GNU Build System point of view, the distinction between
968 architecture-dependent files and architecture-independent files is
969 based exclusively on the directory variable used to specify their
970 installation destination.  In the list of directory variables we
971 provided earlier (@pxref{Standard Directory Variables}), all the
972 variables based on @var{exec-prefix} designate architecture-dependent
973 directories whose files will be installed by @code{make install-exec}.
974 The others designate architecture-independent directories and will
975 serve files installed by @code{make install-data}.  @xref{The Two Parts
976 of Install}, for more details.
978 Here is how we could revisit our two-host installation example,
979 assuming that (1) we want to install the package directly in
980 @file{/usr}, and (2) the directory @file{/usr/share} is shared by the
981 two hosts.
983 On the first host we would run
984 @example
985 [HOST1] ~ % @kbd{mkdir /tmp/amh && cd /tmp/amh}
986 [HOST1] /tmp/amh % @kbd{/nfs/src/amhello-1.0/configure --prefix /usr}
988 [HOST1] /tmp/amh % @kbd{make && sudo make install}
990 @end example
992 On the second host, however, we need only install the
993 architecture-specific files.
994 @example
995 [HOST2] ~ % @kbd{mkdir /tmp/amh && cd /tmp/amh}
996 [HOST2] /tmp/amh % @kbd{/nfs/src/amhello-1.0/configure --prefix /usr}
998 [HOST2] /tmp/amh % @kbd{make && sudo make install-exec}
1000 @end example
1002 In packages that have installation checks, it would make sense to run
1003 @code{make installcheck} (@pxref{Basic Installation}) to verify that
1004 the package works correctly despite the apparent partial installation.
1006 @node Cross-Compilation
1007 @subsection Cross-Compilation
1008 @cindex cross-compilation
1010 To @dfn{cross-compile} is to build on one platform a binary that will
1011 run on another platform.  When speaking of cross-compilation, it is
1012 important to distinguish between the @dfn{build platform} on which
1013 the compilation is performed, and the @dfn{host platform} on which the
1014 resulting executable is expected to run.  The following
1015 @command{configure} options are used to specify each of them:
1017 @table @option
1018 @item --build=@var{BUILD}
1019 @opindex --build=@var{BUILD}
1020 The system on which the package is built.
1021 @item --host=@var{HOST}
1022 @opindex --host=@var{HOST}
1023 The system where built programs and libraries will run.
1024 @end table
1026 When the @option{--host} is used, @command{configure} will search for
1027 the cross-compiling suite for this platform.  Cross-compilation tools
1028 commonly have their target architecture as prefix of their name.  For
1029 instance my cross-compiler for MinGW32 has its binaries called
1030 @code{i586-mingw32msvc-gcc}, @code{i586-mingw32msvc-ld},
1031 @code{i586-mingw32msvc-as}, etc.
1033 @cindex MinGW cross-compilation example
1034 @cindex cross-compilation example
1036 Here is how we could build @code{amhello-1.0} for
1037 @code{i586-mingw32msvc} on a GNU/Linux PC.
1039 @smallexample
1040 ~/amhello-1.0 % @kbd{./configure --build i686-pc-linux-gnu --host i586-mingw32msvc}
1041 checking for a BSD-compatible install... /usr/bin/install -c
1042 checking whether build environment is sane... yes
1043 checking for gawk... gawk
1044 checking whether make sets $(MAKE)... yes
1045 checking for i586-mingw32msvc-strip... i586-mingw32msvc-strip
1046 checking for i586-mingw32msvc-gcc... i586-mingw32msvc-gcc
1047 checking for C compiler default output file name... a.exe
1048 checking whether the C compiler works... yes
1049 checking whether we are cross compiling... yes
1050 checking for suffix of executables... .exe
1051 checking for suffix of object files... o
1052 checking whether we are using the GNU C compiler... yes
1053 checking whether i586-mingw32msvc-gcc accepts -g... yes
1054 checking for i586-mingw32msvc-gcc option to accept ANSI C...
1055 @dots{}
1056 ~/amhello-1.0 % @kbd{make}
1057 @dots{}
1058 ~/amhello-1.0 % @kbd{cd src; file hello.exe}
1059 hello.exe: MS Windows PE 32-bit Intel 80386 console executable not relocatable
1060 @end smallexample
1062 The @option{--host} and @option{--build} options are usually all we
1063 need for cross-compiling.  The only exception is if the package being
1064 built is itself a cross-compiler: we need a third option to specify
1065 its target architecture.
1067 @table @option
1068 @item --target=@var{TARGET}
1069 @opindex --target=@var{TARGET}
1070 When building compiler tools: the system for which the tools will
1071 create output.
1072 @end table
1074 For instance when installing GCC, the GNU Compiler Collection, we can
1075 use @option{--target=@/@var{TARGET}} to specify that we want to build
1076 GCC as a cross-compiler for @var{TARGET}.  Mixing @option{--build} and
1077 @option{--target}, we can actually cross-compile a cross-compiler;
1078 such a three-way cross-compilation is known as a @dfn{Canadian cross}.
1080 @xref{Specifying Names, , Specifying the System Type, autoconf, The
1081 Autoconf Manual}, for more information about these @command{configure}
1082 options.
1084 @node Renaming
1085 @subsection Renaming Programs at Install Time
1086 @cindex Renaming programs
1087 @cindex Transforming program names
1088 @cindex Programs, renaming during installation
1090 The GNU Build System provides means to automatically rename
1091 executables and manpages before they are installed (@pxref{Man Pages}).
1092 This is especially convenient
1093 when installing a GNU package on a system that already has a
1094 proprietary implementation you do not want to overwrite.  For instance,
1095 you may want to install GNU @command{tar} as @command{gtar} so you can
1096 distinguish it from your vendor's @command{tar}.
1098 This can be done using one of these three @command{configure} options.
1100 @table @option
1101 @item --program-prefix=@var{PREFIX}
1102 @opindex --program-prefix=@var{PREFIX}
1103 Prepend @var{PREFIX} to installed program names.
1104 @item --program-suffix=@var{SUFFIX}
1105 @opindex --program-suffix=@var{SUFFIX}
1106 Append @var{SUFFIX} to installed program names.
1107 @item --program-transform-name=@var{PROGRAM}
1108 @opindex --program-transform-name=@var{PROGRAM}
1109 Run @code{sed @var{PROGRAM}} on installed program names.
1110 @end table
1112 The following commands would install @file{hello}
1113 as @file{/usr/local/bin/test-hello}, for instance.
1115 @example
1116 ~/amhello-1.0 % @kbd{./configure --program-prefix test-}
1117 @dots{}
1118 ~/amhello-1.0 % @kbd{make}
1119 @dots{}
1120 ~/amhello-1.0 % @kbd{sudo make install}
1121 @dots{}
1122 @end example
1124 @node DESTDIR
1125 @subsection Building Binary Packages Using DESTDIR
1126 @vindex DESTDIR
1128 The GNU Build System's @code{make install} and @code{make uninstall}
1129 interface does not exactly fit the needs of a system administrator
1130 who has to deploy and upgrade packages on lots of hosts.  In other
1131 words, the GNU Build System does not replace a package manager.
1133 Such package managers usually need to know which files have been
1134 installed by a package, so a mere @code{make install} is
1135 inappropriate.
1137 @cindex Staged installation
1139 The @code{DESTDIR} variable can be used to perform a staged
1140 installation.  The package should be configured as if it was going to
1141 be installed in its final location (e.g., @code{--prefix /usr}), but
1142 when running @code{make install}, the @code{DESTDIR} should be set to
1143 the absolute name of a directory into which the installation will be
1144 diverted.  From this directory it is easy to review which files are
1145 being installed where, and finally copy them to their final location
1146 by some means.
1148 @cindex Binary package
1150 For instance here is how we could create a binary package containing a
1151 snapshot of all the files to be installed.
1153 @example
1154 ~/amhello-1.0 % @kbd{./configure --prefix /usr}
1155 @dots{}
1156 ~/amhello-1.0 % @kbd{make}
1157 @dots{}
1158 ~/amhello-1.0 % @kbd{make DESTDIR=$HOME/inst install}
1159 @dots{}
1160 ~/amhello-1.0 % @kbd{cd ~/inst}
1161 ~/inst % @kbd{find . -type f -print > ../files.lst}
1162 ~/inst % @kbd{tar zcvf ~/amhello-1.0-i686.tar.gz `cat ../files.lst`}
1163 ./usr/bin/hello
1164 ./usr/share/doc/amhello/README
1165 @end example
1167 After this example, @code{amhello-1.0-i686.tar.gz} is ready to be
1168 uncompressed in @file{/} on many hosts.  (Using @code{`cat ../files.lst`}
1169 instead of @samp{.} as argument for @command{tar} avoids entries for
1170 each subdirectory in the archive: we would not like @command{tar} to
1171 restore the modification time of @file{/}, @file{/usr/}, etc.)
1173 Note that when building packages for several architectures, it might
1174 be convenient to use @code{make install-data} and @code{make
1175 install-exec} (@pxref{Two-Part Install}) to gather
1176 architecture-independent files in a single package.
1178 @xref{Install}, for more information.
1180 @c We should document PRE_INSTALL/POST_INSTALL/NORMAL_INSTALL and their
1181 @c UNINSTALL counterparts.
1183 @node Preparing Distributions
1184 @subsection Preparing Distributions
1185 @cindex Preparing distributions
1186 @cindex Packages, preparation
1187 @cindex Distributions, preparation
1189 We have already mentioned @code{make dist}.  This target collects all
1190 your source files and the necessary parts of the build system to
1191 create a tarball named @file{@var{package}-@var{version}.tar.gz}.
1193 @cindex @code{distcheck} better than @code{dist}
1195 Another, more useful command is @code{make distcheck}.  The
1196 @code{distcheck} target constructs
1197 @file{@var{package}-@var{version}.tar.gz} just as well as @code{dist},
1198 but it additionally ensures most of the use cases presented so far
1199 work:
1201 @itemize @bullet
1202 @item
1203 It attempts a full compilation of the package (@pxref{Basic
1204 Installation}), unpacking the newly constructed tarball, running
1205 @code{make}, @code{make check}, @code{make install}, as well as
1206 @code{make installcheck}, and even @code{make dist},
1207 @item
1208 it tests VPATH builds with read-only source tree (@pxref{VPATH Builds}),
1209 @item
1210 it makes sure @code{make clean}, @code{make distclean}, and @code{make
1211 uninstall} do not omit any file (@pxref{Standard Targets}),
1212 @item
1213 and it checks that @code{DESTDIR} installations work (@pxref{DESTDIR}).
1214 @end itemize
1216 All of these actions are performed in a temporary subdirectory, so
1217 that no root privileges are required.
1219 Releasing a package that fails @code{make distcheck} means that one of
1220 the scenarios we presented will not work and some users will be
1221 disappointed.  Therefore it is a good practice to release a package
1222 only after a successful @code{make distcheck}.  This of course does
1223 not imply that the package will be flawless, but at least it will
1224 prevent some of the embarrassing errors you may find in packages
1225 released by people who have never heard about @code{distcheck} (like
1226 @code{DESTDIR} not working because of a typo, or a distributed file
1227 being erased by @code{make clean}, or even @code{VPATH} builds not
1228 working).
1230 @xref{Creating amhello}, to recreate @file{amhello-1.0.tar.gz} using
1231 @code{make distcheck}.  @xref{Checking the Distribution}, for more
1232 information about @code{distcheck}.
1234 @node Dependency Tracking
1235 @subsection Automatic Dependency Tracking
1236 @cindex Dependency tracking
1238 Dependency tracking is performed as a side-effect of compilation.
1239 Each time the build system compiles a source file, it computes its
1240 list of dependencies (in C these are the header files included by the
1241 source being compiled).  Later, any time @command{make} is run and a
1242 dependency appears to have changed, the dependent files will be
1243 rebuilt.
1245 When @command{configure} is executed, you can see it probing each
1246 compiler for the dependency mechanism it supports (several mechanisms
1247 can be used):
1249 @example
1250 ~/amhello-1.0 % @kbd{./configure --prefix /usr}
1251 @dots{}
1252 checking dependency style of gcc... gcc3
1253 @dots{}
1254 @end example
1256 Because dependencies are only computed as a side-effect of the
1257 compilation, no dependency information exists the first time a package
1258 is built.  This is OK because all the files need to be built anyway:
1259 @code{make} does not have to decide which files need to be rebuilt.
1260 In fact, dependency tracking is completely useless for one-time builds
1261 and there is a @command{configure} option to disable this:
1263 @table @option
1264 @item --disable-dependency-tracking
1265 @opindex --disable-dependency-tracking
1266 Speed up one-time builds.
1267 @end table
1269 Some compilers do not offer any practical way to derive the list of
1270 dependencies as a side-effect of the compilation, requiring a separate
1271 run (maybe of another tool) to compute these dependencies.  The
1272 performance penalty implied by these methods is important enough to
1273 disable them by default.  The option @option{--enable-dependency-tracking}
1274 must be passed to @command{configure} to activate them.
1276 @table @option
1277 @item --enable-dependency-tracking
1278 @opindex --enable-dependency-tracking
1279 Do not reject slow dependency extractors.
1280 @end table
1282 @xref{Dependency Tracking Evolution}, for some discussion about the
1283 different dependency tracking schemes used by Automake over the years.
1285 @node Nested Packages
1286 @subsection Nested Packages
1287 @cindex Nested packages
1288 @cindex Packages, nested
1289 @cindex Subpackages
1291 Although nesting packages isn't something we would recommend to
1292 someone who is discovering the Autotools, it is a nice feature worthy
1293 of mention in this small advertising tour.
1295 Autoconfiscated packages (that means packages whose build system have
1296 been created by Autoconf and friends) can be nested to arbitrary
1297 depth.
1299 A typical setup is that package A will distribute one of the libraries
1300 it needs in a subdirectory.  This library B is a complete package with
1301 its own GNU Build System.  The @command{configure} script of A will
1302 run the @command{configure} script of B as part of its execution,
1303 building and installing A will also build and install B.  Generating a
1304 distribution for A will also include B.
1306 It is possible to gather several package like this.  GCC is a heavy
1307 user of this feature.  This gives installers a single package to
1308 configure, build and install, while it allows developers to work on
1309 subpackages independently.
1311 When configuring nested packages, the @command{configure} options
1312 given to the top-level @command{configure} are passed recursively to
1313 nested @command{configure}s.  A package that does not understand an
1314 option will ignore it, assuming it is meaningful to some other
1315 package.
1317 @opindex --help=recursive
1319 The command @code{configure --help=recursive} can be used to display
1320 the options supported by all the included packages.
1322 @xref{Subpackages}, for an example setup.
1324 @node Why Autotools
1325 @section How Autotools Help
1326 @cindex Autotools, purpose
1328 There are several reasons why you may not want to implement the GNU
1329 Build System yourself (read: write a @file{configure} script and
1330 @file{Makefile}s yourself).
1332 @itemize @bullet
1333 @item
1334 As we have seen, the GNU Build System has a lot of
1335 features (@pxref{Use Cases}).
1336 Some users may expect features you have not implemented because
1337 you did not need them.
1338 @item
1339 Implementing these features portably is difficult and exhausting.
1340 Think of writing portable shell scripts, and portable
1341 @file{Makefile}s, for systems you may not have handy.  @xref{Portable
1342 Shell, , Portable Shell Programming, autoconf, The Autoconf Manual}, to
1343 convince yourself.
1344 @item
1345 You will have to upgrade your setup to follow changes to the GNU
1346 Coding Standards.
1347 @end itemize
1349 The GNU Autotools take all this burden off your back and provide:
1351 @itemize @bullet
1352 @item
1353 Tools to create a portable, complete, and self-contained GNU Build
1354 System, from simple instructions.
1355 @emph{Self-contained} meaning the resulting build system does not
1356 require the GNU Autotools.
1357 @item
1358 A central place where fixes and improvements are made:
1359 a bug-fix for a portability issue will benefit every package.
1360 @end itemize
1362 Yet there also exist reasons why you may want NOT to use the
1363 Autotools@enddots{} For instance you may be already using (or used to)
1364 another incompatible build system.  Autotools will only be useful if
1365 you do accept the concepts of the GNU Build System.  People who have their
1366 own idea of how a build system should work will feel frustrated by the
1367 Autotools.
1369 @node Hello World
1370 @section A Small Hello World
1371 @cindex Example Hello World
1372 @cindex Hello World example
1373 @cindex @file{amhello-1.0.tar.gz}, creation
1375 In this section we recreate the @file{amhello-1.0} package from
1376 scratch.  The first subsection shows how to call the Autotools to
1377 instantiate the GNU Build System, while the second explains the
1378 meaning of the @file{configure.ac} and @file{Makefile.am} files read
1379 by the Autotools.
1381 @menu
1382 * Creating amhello::            Create @file{amhello-1.0.tar.gz} from scratch
1383 * amhello Explained::           @file{configure.ac} and @file{Makefile.am} explained
1384 @end menu
1386 @node Creating amhello
1387 @subsection Creating @file{amhello-1.0.tar.gz}
1389 Here is how we can recreate @file{amhello-1.0.tar.gz} from scratch.
1390 The package is simple enough so that we will only need to write 5
1391 files.  (You may copy them from the final @file{amhello-1.0.tar.gz}
1392 that is distributed with Automake if you do not want to write them.)
1394 Create the following files in an empty directory.
1396 @itemize @bullet
1398 @item
1399 @file{src/main.c} is the source file for the @file{hello} program.  We
1400 store it in the @file{src/} subdirectory, because later, when the package
1401 evolves, it will ease the addition of a @file{man/} directory for man
1402 pages, a @file{data/} directory for data files, etc.
1403 @example
1404 ~/amhello % @kbd{cat src/main.c}
1405 #include <config.h>
1406 #include <stdio.h>
1409 main (void)
1411   puts ("Hello World!");
1412   puts ("This is " PACKAGE_STRING ".");
1413   return 0;
1415 @end example
1417 @item
1418 @file{README} contains some very limited documentation for our little
1419 package.
1420 @example
1421 ~/amhello % @kbd{cat README}
1422 This is a demonstration package for GNU Automake.
1423 Type `info Automake' to read the Automake manual.
1424 @end example
1426 @item
1427 @file{Makefile.am} and @file{src/Makefile.am} contain Automake
1428 instructions for these two directories.
1430 @example
1431 ~/amhello % @kbd{cat src/Makefile.am}
1432 bin_PROGRAMS = hello
1433 hello_SOURCES = main.c
1434 ~/amhello % @kbd{cat Makefile.am}
1435 SUBDIRS = src
1436 dist_doc_DATA = README
1437 @end example
1439 @item
1440 Finally, @file{configure.ac} contains Autoconf instructions to
1441 create the @command{configure} script.
1443 @example
1444 ~/amhello % @kbd{cat configure.ac}
1445 AC_INIT([amhello], [1.0], [bug-automake@@gnu.org])
1446 AM_INIT_AUTOMAKE([-Wall -Werror foreign])
1447 AC_PROG_CC
1448 AC_CONFIG_HEADERS([config.h])
1449 AC_CONFIG_FILES([
1450  Makefile
1451  src/Makefile
1453 AC_OUTPUT
1454 @end example
1455 @end itemize
1457 @cindex @command{autoreconf}, example
1459 Once you have these five files, it is time to run the Autotools to
1460 instantiate the build system.  Do this using the @command{autoreconf}
1461 command as follows:
1463 @example
1464 ~/amhello % @kbd{autoreconf --install}
1465 configure.ac: installing `./install-sh'
1466 configure.ac: installing `./missing'
1467 src/Makefile.am: installing `./depcomp'
1468 @end example
1470 At this point the build system is complete.
1472 In addition to the three scripts mentioned in its output, you can see
1473 that @command{autoreconf} created four other files: @file{configure},
1474 @file{config.h.in}, @file{Makefile.in}, and @file{src/Makefile.in}.
1475 The latter three files are templates that will be adapted to the
1476 system by @command{configure} under the names @file{config.h},
1477 @file{Makefile}, and @file{src/Makefile}.  Let's do this:
1479 @example
1480 ~/amhello % @kbd{./configure}
1481 checking for a BSD-compatible install... /usr/bin/install -c
1482 checking whether build environment is sane... yes
1483 checking for gawk... no
1484 checking for mawk... mawk
1485 checking whether make sets $(MAKE)... yes
1486 checking for gcc... gcc
1487 checking for C compiler default output file name... a.out
1488 checking whether the C compiler works... yes
1489 checking whether we are cross compiling... no
1490 checking for suffix of executables...
1491 checking for suffix of object files... o
1492 checking whether we are using the GNU C compiler... yes
1493 checking whether gcc accepts -g... yes
1494 checking for gcc option to accept ISO C89... none needed
1495 checking for style of include used by make... GNU
1496 checking dependency style of gcc... gcc3
1497 configure: creating ./config.status
1498 config.status: creating Makefile
1499 config.status: creating src/Makefile
1500 config.status: creating config.h
1501 config.status: executing depfiles commands
1502 @end example
1504 @trindex distcheck
1505 @cindex @code{distcheck} example
1507 You can see @file{Makefile}, @file{src/Makefile}, and @file{config.h}
1508 being created at the end after @command{configure} has probed the
1509 system.  It is now possible to run all the targets we wish
1510 (@pxref{Standard Targets}).  For instance:
1512 @example
1513 ~/amhello % @kbd{make}
1514 @dots{}
1515 ~/amhello % @kbd{src/hello}
1516 Hello World!
1517 This is amhello 1.0.
1518 ~/amhello % @kbd{make distcheck}
1519 @dots{}
1520 =============================================
1521 amhello-1.0 archives ready for distribution:
1522 amhello-1.0.tar.gz
1523 =============================================
1524 @end example
1526 Note that running @command{autoreconf} is only needed initially when
1527 the GNU Build System does not exist.  When you later change some
1528 instructions in a @file{Makefile.am} or @file{configure.ac}, the
1529 relevant part of the build system will be regenerated automatically
1530 when you execute @command{make}.
1532 @command{autoreconf} is a script that calls @command{autoconf},
1533 @command{automake}, and a bunch of other commands in the right order.
1534 If you are beginning with these tools, it is not important to figure
1535 out in which order all these tools should be invoked and why.  However,
1536 because Autoconf and Automake have separate manuals, the important
1537 point to understand is that @command{autoconf} is in charge of
1538 creating @file{configure} from @file{configure.ac}, while
1539 @command{automake} is in charge of creating @file{Makefile.in}s from
1540 @file{Makefile.am}s and @file{configure.ac}.  This should at least
1541 direct you to the right manual when seeking answers.
1544 @node amhello Explained
1545 @subsection @file{amhello-1.0} Explained
1547 Let us begin with the contents of @file{configure.ac}.
1549 @example
1550 AC_INIT([amhello], [1.0], [bug-automake@@gnu.org])
1551 AM_INIT_AUTOMAKE([-Wall -Werror foreign])
1552 AC_PROG_CC
1553 AC_CONFIG_HEADERS([config.h])
1554 AC_CONFIG_FILES([
1555  Makefile
1556  src/Makefile
1558 AC_OUTPUT
1559 @end example
1561 This file is read by both @command{autoconf} (to create
1562 @file{configure}) and @command{automake} (to create the various
1563 @file{Makefile.in}s).  It contains a series of M4 macros that will be
1564 expanded as shell code to finally form the @file{configure} script.
1565 We will not elaborate on the syntax of this file, because the Autoconf
1566 manual has a whole section about it (@pxref{Writing Autoconf Input, ,
1567 Writing @file{configure.ac}, autoconf, The Autoconf Manual}).
1569 The macros prefixed with @code{AC_} are Autoconf macros, documented
1570 in the Autoconf manual (@pxref{Autoconf Macro Index, , Autoconf Macro
1571 Index, autoconf, The Autoconf Manual}).  The macros that start with
1572 @code{AM_} are Automake macros, documented later in this manual
1573 (@pxref{Macro Index}).
1575 The first two lines of @file{configure.ac} initialize Autoconf and
1576 Automake.  @code{AC_INIT} takes in as parameters the name of the package,
1577 its version number, and a contact address for bug-reports about the
1578 package (this address is output at the end of @code{./configure
1579 --help}, for instance).  When adapting this setup to your own package,
1580 by all means please do not blindly copy Automake's address: use the
1581 mailing list of your package, or your own mail address.
1583 @opindex -Wall
1584 @opindex -Werror
1585 @opindex foreign
1587 The argument to @code{AM_INIT_AUTOMAKE} is a list of options for
1588 @command{automake} (@pxref{Options}).  @option{-Wall} and
1589 @option{-Werror} ask @command{automake} to turn on all warnings and
1590 report them as errors.  We are speaking of @strong{Automake} warnings
1591 here, such as dubious instructions in @file{Makefile.am}.  This has
1592 absolutely nothing to do with how the compiler will be called, even
1593 though it may support options with similar names.  Using @option{-Wall
1594 -Werror} is a safe setting when starting to work on a package: you do
1595 not want to miss any issues.  Later you may decide to relax things a
1596 bit.  The @option{foreign} option tells Automake that this package
1597 will not follow the GNU Standards.  GNU packages should always
1598 distribute additional files such as @file{ChangeLog}, @file{AUTHORS},
1599 etc.  We do not want @command{automake} to complain about these
1600 missing files in our small example.
1602 The @code{AC_PROG_CC} line causes the @command{configure} script to
1603 search for a C compiler and define the variable @code{CC} with its
1604 name.  The @file{src/Makefile.in} file generated by Automake uses the
1605 variable @code{CC} to build @file{hello}, so when @command{configure}
1606 creates @file{src/Makefile} from @file{src/Makefile.in}, it will define
1607 @code{CC} with the value it has found.  If Automake is asked to create
1608 a @file{Makefile.in} that uses @code{CC} but @file{configure.ac} does
1609 not define it, it will suggest you add a call to @code{AC_PROG_CC}.
1611 The @code{AC_CONFIG_HEADERS([config.h])} invocation causes the
1612 @command{configure} script to create a @file{config.h} file gathering
1613 @samp{#define}s defined by other macros in @file{configure.ac}.  In our
1614 case, the @code{AC_INIT} macro already defined a few of them.  Here
1615 is an excerpt of @file{config.h} after @command{configure} has run:
1617 @smallexample
1618 @dots{}
1619 /* Define to the address where bug reports for this package should be sent. */
1620 #define PACKAGE_BUGREPORT "bug-automake@@gnu.org"
1622 /* Define to the full name and version of this package. */
1623 #define PACKAGE_STRING "amhello 1.0"
1624 @dots{}
1625 @end smallexample
1627 As you probably noticed, @file{src/main.c} includes @file{config.h} so
1628 it can use @code{PACKAGE_STRING}.  In a real-world project,
1629 @file{config.h} can grow really big, with one @samp{#define} per
1630 feature probed on the system.
1632 The @code{AC_CONFIG_FILES} macro declares the list of files that
1633 @command{configure} should create from their @file{*.in} templates.
1634 Automake also scans this list to find the @file{Makefile.am} files it must
1635 process.  (This is important to remember: when adding a new directory
1636 to your project, you should add its @file{Makefile} to this list,
1637 otherwise Automake will never process the new @file{Makefile.am} you
1638 wrote in that directory.)
1640 Finally, the @code{AC_OUTPUT} line is a closing command that actually
1641 produces the part of the script in charge of creating the files
1642 registered with @code{AC_CONFIG_HEADERS} and @code{AC_CONFIG_FILES}.
1644 @cindex @command{autoscan}
1646 When starting a new project, we suggest you start with such a simple
1647 @file{configure.ac}, and gradually add the other tests it requires.
1648 The command @command{autoscan} can also suggest a few of the tests
1649 your package may need (@pxref{autoscan Invocation, , Using
1650 @command{autoscan} to Create @file{configure.ac}, autoconf, The
1651 Autoconf Manual}).
1653 @cindex @file{Makefile.am}, Hello World
1655 We now turn to @file{src/Makefile.am}.  This file contains
1656 Automake instructions to build and install @file{hello}.
1658 @example
1659 bin_PROGRAMS = hello
1660 hello_SOURCES = main.c
1661 @end example
1663 A @file{Makefile.am} has the same syntax as an ordinary
1664 @file{Makefile}.  When @command{automake} processes a
1665 @file{Makefile.am} it copies the entire file into the output
1666 @file{Makefile.in} (that will be later turned into @file{Makefile} by
1667 @command{configure}) but will react to certain variable definitions
1668 by generating some build rules and other variables.
1669 Often @file{Makefile.am}s contain only a list of variable definitions as
1670 above, but they can also contain other variable and rule definitions that
1671 @command{automake} will pass along without interpretation.
1673 Variables that end with @code{_PROGRAMS} are special variables
1674 that list programs that the resulting @file{Makefile} should build.
1675 In Automake speak, this @code{_PROGRAMS} suffix is called a
1676 @dfn{primary}; Automake recognizes other primaries such as
1677 @code{_SCRIPTS}, @code{_DATA}, @code{_LIBRARIES}, etc.@: corresponding
1678 to different types of files.
1680 The @samp{bin} part of the @code{bin_PROGRAMS} tells
1681 @command{automake} that the resulting programs should be installed in
1682 @var{bindir}.  Recall that the GNU Build System uses a set of variables
1683 to denote destination directories and allow users to customize these
1684 locations (@pxref{Standard Directory Variables}).  Any such directory
1685 variable can be put in front of a primary (omitting the @code{dir}
1686 suffix) to tell @command{automake} where to install the listed files.
1688 Programs need to be built from source files, so for each program
1689 @code{@var{prog}} listed in a @code{@w{_PROGRAMS}} variable,
1690 @command{automake} will look for another variable named
1691 @code{@var{prog}_SOURCES} listing its source files.  There may be more
1692 than one source file: they will all be compiled and linked together.
1694 Automake also knows that source files need to be distributed when
1695 creating a tarball (unlike built programs).  So a side-effect of this
1696 @code{hello_SOURCES} declaration is that @file{main.c} will be
1697 part of the tarball created by @code{make dist}.
1699 Finally here are some explanations regarding the top-level
1700 @file{Makefile.am}.
1702 @example
1703 SUBDIRS = src
1704 dist_doc_DATA = README
1705 @end example
1707 @code{SUBDIRS} is a special variable listing all directories that
1708 @command{make} should recurse into before processing the current
1709 directory.  So this line is responsible for @command{make} building
1710 @file{src/hello} even though we run it from the top-level.  This line
1711 also causes @code{make install} to install @file{src/hello} before
1712 installing @file{README} (not that this order matters).
1714 The line @code{dist_doc_DATA = README} causes @file{README} to be
1715 distributed and installed in @var{docdir}.  Files listed with the
1716 @code{_DATA} primary are not automatically part of the tarball built
1717 with @code{make dist}, so we add the @code{dist_} prefix so they get
1718 distributed.  However, for @file{README} it would not have been
1719 necessary: @command{automake} automatically distributes any
1720 @file{README} file it encounters (the list of other files
1721 automatically distributed is presented by @code{automake --help}).
1722 The only important effect of this second line is therefore to install
1723 @file{README} during @code{make install}.
1726 @node Generalities
1727 @chapter General ideas
1729 The following sections cover a few basic ideas that will help you
1730 understand how Automake works.
1732 @menu
1733 * General Operation::           General operation of Automake
1734 * Strictness::                  Standards conformance checking
1735 * Uniform::                     The Uniform Naming Scheme
1736 * Canonicalization::            How derived variables are named
1737 * Length Limitations::          Staying below the command line length limit
1738 * User Variables::              Variables reserved for the user
1739 * Auxiliary Programs::          Programs automake might require
1740 @end menu
1743 @node General Operation
1744 @section General Operation
1746 Automake works by reading a @file{Makefile.am} and generating a
1747 @file{Makefile.in}.  Certain variables and rules defined in the
1748 @file{Makefile.am} instruct Automake to generate more specialized code;
1749 for instance, a @code{bin_PROGRAMS} variable definition will cause rules
1750 for compiling and linking programs to be generated.
1752 @cindex Non-standard targets
1753 @cindex @code{cvs-dist}, non-standard example
1754 @trindex cvs-dist
1755 @trindex git-dist
1757 The variable definitions and rules in the @file{Makefile.am} are
1758 copied verbatim into the generated file.  This allows you to add
1759 arbitrary code into the generated @file{Makefile.in}.  For instance,
1760 the Automake distribution includes a non-standard rule for the
1761 @code{git-dist} target, which the Automake maintainer uses to make
1762 distributions from his source control system.
1764 @cindex GNU make extensions
1766 Note that most GNU make extensions are not recognized by Automake.  Using
1767 such extensions in a @file{Makefile.am} will lead to errors or confusing
1768 behavior.
1770 @cindex Append operator
1771 @cmindex +=
1772 A special exception is that the GNU make append operator, @samp{+=}, is
1773 supported.  This operator appends its right hand argument to the variable
1774 specified on the left.  Automake will translate the operator into
1775 an ordinary @samp{=} operator; @samp{+=} will thus work with any make program.
1777 Automake tries to keep comments grouped with any adjoining rules or
1778 variable definitions.
1780 @cindex Make targets, overriding
1781 @cindex Make rules, overriding
1782 @cindex Overriding make rules
1783 @cindex Overriding make targets
1785 A rule defined in @file{Makefile.am} generally overrides any such
1786 rule of a similar name that would be automatically generated by
1787 @command{automake}.  Although this is a supported feature, it is generally
1788 best to avoid making use of it, as sometimes the generated rules are
1789 very particular.
1791 @cindex Variables, overriding
1792 @cindex Overriding make variables
1794 Similarly, a variable defined in @file{Makefile.am} or
1795 @code{AC_SUBST}ed from @file{configure.ac} will override any
1796 definition of the variable that @command{automake} would ordinarily
1797 create.  This feature is more often useful than the ability to
1798 override a rule.  Be warned that many of the variables generated by
1799 @command{automake} are considered to be for internal use only, and their
1800 names might change in future releases.
1802 @cindex Recursive operation of Automake
1803 @cindex Automake, recursive operation
1804 @cindex Example of recursive operation
1806 When examining a variable definition, Automake will recursively examine
1807 variables referenced in the definition.  For example, if Automake is
1808 looking at the content of @code{foo_SOURCES} in this snippet
1810 @example
1811 xs = a.c b.c
1812 foo_SOURCES = c.c $(xs)
1813 @end example
1815 it would use the files @file{a.c}, @file{b.c}, and @file{c.c} as the
1816 contents of @code{foo_SOURCES}.
1818 @cindex @code{##} (special Automake comment)
1819 @cindex Special Automake comment
1820 @cindex Comment, special to Automake
1822 Automake also allows a form of comment that is @emph{not} copied into
1823 the output; all lines beginning with @samp{##} (leading spaces allowed)
1824 are completely ignored by Automake.
1826 It is customary to make the first line of @file{Makefile.am} read:
1828 @cindex Makefile.am, first line
1829 @cindex First line of Makefile.am
1831 @example
1832 ## Process this file with automake to produce Makefile.in
1833 @end example
1835 @c FIXME discuss putting a copyright into Makefile.am here?  I would but
1836 @c I don't know quite what to say.
1838 @c FIXME document customary ordering of Makefile.am here!
1841 @node Strictness
1842 @section Strictness
1844 @cindex Non-GNU packages
1846 While Automake is intended to be used by maintainers of GNU packages, it
1847 does make some effort to accommodate those who wish to use it, but do
1848 not want to use all the GNU conventions.
1850 @cindex Strictness, defined
1851 @cindex Strictness, @option{foreign}
1852 @cindex @option{foreign} strictness
1853 @cindex Strictness, @option{gnu}
1854 @cindex @option{gnu} strictness
1855 @cindex Strictness, @option{gnits}
1856 @cindex @option{gnits} strictness
1858 To this end, Automake supports three levels of @dfn{strictness}---the
1859 strictness indicating how stringently Automake should check standards
1860 conformance.
1862 The valid strictness levels are:
1864 @table @option
1865 @item foreign
1866 Automake will check for only those things that are absolutely
1867 required for proper operations.  For instance, whereas GNU standards
1868 dictate the existence of a @file{NEWS} file, it will not be required in
1869 this mode.  The name comes from the fact that Automake is intended to be
1870 used for GNU programs; these relaxed rules are not the standard mode of
1871 operation.
1873 @item gnu
1874 Automake will check---as much as possible---for compliance to the GNU
1875 standards for packages.  This is the default.
1877 @item gnits
1878 Automake will check for compliance to the as-yet-unwritten @dfn{Gnits
1879 standards}.  These are based on the GNU standards, but are even more
1880 detailed.  Unless you are a Gnits standards contributor, it is
1881 recommended that you avoid this option until such time as the Gnits
1882 standard is actually published (which may never happen).
1883 @end table
1885 @xref{Gnits}, for more information on the precise implications of the
1886 strictness level.
1888 Automake also has a special ``cygnus'' mode that is similar to
1889 strictness but handled differently.  This mode is useful for packages
1890 that are put into a ``Cygnus'' style tree (e.g., the GCC tree).
1891 @xref{Cygnus}, for more information on this mode.
1894 @node Uniform
1895 @section The Uniform Naming Scheme
1897 @cindex Uniform naming scheme
1899 Automake variables generally follow a @dfn{uniform naming scheme} that
1900 makes it easy to decide how programs (and other derived objects) are
1901 built, and how they are installed.  This scheme also supports
1902 @command{configure} time determination of what should be built.
1904 @cindex @code{_PROGRAMS} primary variable
1905 @cindex @code{PROGRAMS} primary variable
1906 @cindex Primary variable, @code{PROGRAMS}
1907 @cindex Primary variable, defined
1908 @vindex _PROGRAMS
1910 At @command{make} time, certain variables are used to determine which
1911 objects are to be built.  The variable names are made of several pieces
1912 that are concatenated together.
1914 The piece that tells @command{automake} what is being built is commonly called
1915 the @dfn{primary}.  For instance, the primary @code{PROGRAMS} holds a
1916 list of programs that are to be compiled and linked.
1917 @vindex PROGRAMS
1919 @cindex @code{pkgdatadir}, defined
1920 @cindex @code{pkgincludedir}, defined
1921 @cindex @code{pkglibdir}, defined
1922 @cindex @code{pkglibexecdir}, defined
1924 @vindex pkgdatadir
1925 @vindex pkgincludedir
1926 @vindex pkglibdir
1927 @vindex pkglibexecdir
1929 @cindex @code{PACKAGE}, directory
1930 A different set of names is used to decide where the built objects
1931 should be installed.  These names are prefixes to the primary, and they
1932 indicate which standard directory should be used as the installation
1933 directory.  The standard directory names are given in the GNU standards
1934 (@pxref{Directory Variables, , , standards, The GNU Coding Standards}).
1935 Automake extends this list with @code{pkgdatadir}, @code{pkgincludedir},
1936 @code{pkglibdir}, and @code{pkglibexecdir}; these are the same as the
1937 non-@samp{pkg} versions, but with @samp{$(PACKAGE)} appended.  For instance,
1938 @code{pkglibdir} is defined as @samp{$(libdir)/$(PACKAGE)}.
1940 @cindex @code{EXTRA_}, prepending
1941 For each primary, there is one additional variable named by prepending
1942 @samp{EXTRA_} to the primary name.  This variable is used to list
1943 objects that may or may not be built, depending on what
1944 @command{configure} decides.  This variable is required because Automake
1945 must statically know the entire list of objects that may be built in
1946 order to generate a @file{Makefile.in} that will work in all cases.
1948 @cindex @code{EXTRA_PROGRAMS}, defined
1949 @cindex Example, @code{EXTRA_PROGRAMS}
1950 @cindex @command{cpio} example
1952 For instance, @command{cpio} decides at configure time which programs
1953 should be built.  Some of the programs are installed in @code{bindir},
1954 and some are installed in @code{sbindir}:
1956 @example
1957 EXTRA_PROGRAMS = mt rmt
1958 bin_PROGRAMS = cpio pax
1959 sbin_PROGRAMS = $(MORE_PROGRAMS)
1960 @end example
1962 Defining a primary without a prefix as a variable, e.g.,
1963 @samp{PROGRAMS}, is an error.
1965 Note that the common @samp{dir} suffix is left off when constructing the
1966 variable names; thus one writes @samp{bin_PROGRAMS} and not
1967 @samp{bindir_PROGRAMS}.
1969 Not every sort of object can be installed in every directory.  Automake
1970 will flag those attempts it finds in error.
1971 Automake will also diagnose obvious misspellings in directory names.
1973 @cindex Extending list of installation directories
1974 @cindex Installation directories, extending list
1976 Sometimes the standard directories---even as augmented by
1977 Automake---are not enough.  In particular it is sometimes useful, for
1978 clarity, to install objects in a subdirectory of some predefined
1979 directory.  To this end, Automake allows you to extend the list of
1980 possible installation directories.  A given prefix (e.g., @samp{zar})
1981 is valid if a variable of the same name with @samp{dir} appended is
1982 defined (e.g., @samp{zardir}).
1984 For instance, the following snippet will install @file{file.xml} into
1985 @samp{$(datadir)/xml}.
1987 @example
1988 xmldir = $(datadir)/xml
1989 xml_DATA = file.xml
1990 @end example
1992 @cindex @samp{noinst_} primary prefix, definition
1993 @vindex noinst_
1995 The special prefix @samp{noinst_} indicates that the objects in question
1996 should be built but not installed at all.  This is usually used for
1997 objects required to build the rest of your package, for instance static
1998 libraries (@pxref{A Library}), or helper scripts.
2000 @cindex @samp{check_} primary prefix, definition
2001 @vindex check_
2003 The special prefix @samp{check_} indicates that the objects in question
2004 should not be built until the @samp{make check} command is run.  Those
2005 objects are not installed either.
2007 The current primary names are @samp{PROGRAMS}, @samp{LIBRARIES},
2008 @samp{LISP}, @samp{PYTHON}, @samp{JAVA}, @samp{SCRIPTS}, @samp{DATA},
2009 @samp{HEADERS}, @samp{MANS}, and @samp{TEXINFOS}.
2010 @vindex PROGRAMS
2011 @vindex LIBRARIES
2012 @vindex LISP
2013 @vindex PYTHON
2014 @vindex JAVA
2015 @vindex SCRIPTS
2016 @vindex DATA
2017 @vindex HEADERS
2018 @vindex MANS
2019 @vindex TEXINFOS
2021 Some primaries also allow additional prefixes that control other
2022 aspects of @command{automake}'s behavior.  The currently defined prefixes
2023 are @samp{dist_}, @samp{nodist_}, @samp{nobase_}, and @samp{notrans_}.
2024 These prefixes are explained later (@pxref{Program and Library Variables})
2025 (@pxref{Man Pages}).
2028 @node Length Limitations
2029 @section Staying below the command line length limit
2031 @cindex command line length limit
2032 @cindex ARG_MAX
2034 Traditionally, most unix-like systems have a length limitation for the
2035 command line arguments and environment contents when creating new
2036 processes (see for example
2037 @uref{http://www.in-ulm.de/@/~mascheck/@/various/@/argmax/} for an
2038 overview on this issue),
2039 which of course also applies to commands spawned by @command{make}.
2040 POSIX requires this limit to be at least 4096 bytes, and most modern
2041 systems have quite high limits (or are unlimited).
2043 In order to create portable Makefiles that do not trip over these
2044 limits, it is necessary to keep the length of file lists bounded.
2045 Unfortunately, it is not possible to do so fully transparently within
2046 Automake, so your help may be needed.  Typically, you can split long
2047 file lists manually and use different installation directory names for
2048 each list.  For example,
2050 @example
2051 data_DATA = file1 @dots{} file@var{N} file@var{N+1} @dots{} file@var{2N}
2052 @end example
2054 @noindent
2055 may also be written as
2057 @example
2058 data_DATA = file1 @dots{} file@var{N}
2059 data2dir = $(datadir)
2060 data2_DATA = file@var{N+1} @dots{} file@var{2N}
2061 @end example
2063 @noindent
2064 and will cause Automake to treat the two lists separately during
2065 @code{make install}.  See @ref{The Two Parts of Install} for choosing
2066 directory names that will keep the ordering of the two parts of
2067 installation Note that @code{make dist} may still only work on a host
2068 with a higher length limit in this example.
2070 Automake itself employs a couple of strategies to avoid long command
2071 lines.  For example, when @samp{$@{srcdir@}/} is prepended to file
2072 names, as can happen with above @code{$(data_DATA)} lists, it limits
2073 the amount of arguments passed to external commands.
2075 Unfortunately, some system's @command{make} commands may prepend
2076 @code{VPATH} prefixes like @samp{$@{srcdir@}/} to file names from the
2077 source tree automatically (@pxref{Automatic Rule Rewriting, , Automatic
2078 Rule Rewriting, autoconf, The Autoconf Manual}).  In this case, the user
2079 may have to switch to use GNU Make, or refrain from using VPATH builds,
2080 in order to stay below the length limit.
2082 For libraries and programs built from many sources, convenience archives
2083 may be used as intermediates in order to limit the object list length
2084 (@pxref{Libtool Convenience Libraries}).
2087 @node Canonicalization
2088 @section How derived variables are named
2090 @cindex canonicalizing Automake variables
2092 Sometimes a Makefile variable name is derived from some text the
2093 maintainer supplies.  For instance, a program name listed in
2094 @samp{_PROGRAMS} is rewritten into the name of a @samp{_SOURCES}
2095 variable.  In cases like this, Automake canonicalizes the text, so that
2096 program names and the like do not have to follow Makefile variable naming
2097 rules.  All characters in the name except for letters, numbers, the
2098 strudel (@@), and the underscore are turned into underscores when making
2099 variable references.
2101 For example, if your program is named @file{sniff-glue}, the derived
2102 variable name would be @samp{sniff_glue_SOURCES}, not
2103 @samp{sniff-glue_SOURCES}.  Similarly the sources for a library named
2104 @file{libmumble++.a} should be listed in the
2105 @samp{libmumble___a_SOURCES} variable.
2107 The strudel is an addition, to make the use of Autoconf substitutions in
2108 variable names less obfuscating.
2111 @node User Variables
2112 @section Variables reserved for the user
2114 @cindex variables, reserved for the user
2115 @cindex user variables
2117 Some @file{Makefile} variables are reserved by the GNU Coding Standards
2118 for the use of the ``user''---the person building the package.  For
2119 instance, @code{CFLAGS} is one such variable.
2121 Sometimes package developers are tempted to set user variables such as
2122 @code{CFLAGS} because it appears to make their job easier.  However,
2123 the package itself should never set a user variable, particularly not
2124 to include switches that are required for proper compilation of the
2125 package.  Since these variables are documented as being for the
2126 package builder, that person rightfully expects to be able to override
2127 any of these variables at build time.
2129 To get around this problem, Automake introduces an automake-specific
2130 shadow variable for each user flag variable.  (Shadow variables are
2131 not introduced for variables like @code{CC}, where they would make no
2132 sense.)  The shadow variable is named by prepending @samp{AM_} to the
2133 user variable's name.  For instance, the shadow variable for
2134 @code{YFLAGS} is @code{AM_YFLAGS}.  The package maintainer---that is,
2135 the author(s) of the @file{Makefile.am} and @file{configure.ac}
2136 files---may adjust these shadow variables however necessary.
2138 @xref{Flag Variables Ordering}, for more discussion about these
2139 variables and how they interact with per-target variables.
2141 @node Auxiliary Programs
2142 @section Programs automake might require
2144 @cindex Programs, auxiliary
2145 @cindex Auxiliary programs
2147 Automake sometimes requires helper programs so that the generated
2148 @file{Makefile} can do its work properly.  There are a fairly large
2149 number of them, and we list them here.
2151 Although all of these files are distributed and installed with
2152 Automake, a couple of them are maintained separately.  The Automake
2153 copies are updated before each release, but we mention the original
2154 source in case you need more recent versions.
2156 @table @code
2157 @item ansi2knr.c
2158 @itemx ansi2knr.1
2159 These two files are used for de-ANSI-fication support (obsolete
2160 @pxref{ANSI}).
2162 @item compile
2163 This is a wrapper for compilers that do not accept options @option{-c}
2164 and @option{-o} at the same time.  It is only used when absolutely
2165 required.  Such compilers are rare.
2167 @item config.guess
2168 @itemx config.sub
2169 These two programs compute the canonical triplets for the given build,
2170 host, or target architecture.  These programs are updated regularly to
2171 support new architectures and fix probes broken by changes in new
2172 kernel versions.  Each new release of Automake comes with up-to-date
2173 copies of these programs.  If your copy of Automake is getting old,
2174 you are encouraged to fetch the latest versions of these files from
2175 @url{http://savannah.gnu.org/git/?group=config} before making a
2176 release.
2178 @item config-ml.in
2179 This file is not a program, it is a @file{configure} fragment used for
2180 multilib support (@pxref{Multilibs}).  This file is maintained in the
2181 GCC tree at @url{http://gcc.gnu.org/svn.html}.
2183 @item depcomp
2184 This program understands how to run a compiler so that it will
2185 generate not only the desired output but also dependency information
2186 that is then used by the automatic dependency tracking feature
2187 (@pxref{Dependencies}).
2189 @item elisp-comp
2190 This program is used to byte-compile Emacs Lisp code.
2192 @item install-sh
2193 This is a replacement for the @command{install} program that works on
2194 platforms where @command{install} is unavailable or unusable.
2196 @item mdate-sh
2197 This script is used to generate a @file{version.texi} file.  It examines
2198 a file and prints some date information about it.
2200 @item missing
2201 This wraps a number of programs that are typically only required by
2202 maintainers.  If the program in question doesn't exist,
2203 @command{missing} prints an informative warning and attempts to fix
2204 things so that the build can continue.
2206 @item mkinstalldirs
2207 This script used to be a wrapper around @samp{mkdir -p}, which is not
2208 portable.  Now we prefer to use @samp{install-sh -d} when @command{configure}
2209 finds that @samp{mkdir -p} does not work, this makes one less script to
2210 distribute.
2212 For backward compatibility @file{mkinstalldirs} is still used and
2213 distributed when @command{automake} finds it in a package.  But it is no
2214 longer installed automatically, and it should be safe to remove it.
2216 @item py-compile
2217 This is used to byte-compile Python scripts.
2219 @item symlink-tree
2220 This program duplicates a tree of directories, using symbolic links
2221 instead of copying files.  Such an operation is performed when building
2222 multilibs (@pxref{Multilibs}).  This file is maintained in the GCC
2223 tree at @url{http://gcc.gnu.org/svn.html}.
2225 @item texinfo.tex
2226 Not a program, this file is required for @samp{make dvi}, @samp{make
2227 ps} and @samp{make pdf} to work when Texinfo sources are in the
2228 package.  The latest version can be downloaded from
2229 @url{http://www.gnu.org/software/texinfo/}.
2231 @item ylwrap
2232 This program wraps @command{lex} and @command{yacc} to rename their
2233 output files.  It also ensures that, for instance, multiple
2234 @command{yacc} instances can be invoked in a single directory in
2235 parallel.
2237 @end table
2240 @node Examples
2241 @chapter Some example packages
2243 This section contains two small examples.
2245 The first example (@pxref{Complete}) assumes you have an existing
2246 project already using Autoconf, with handcrafted @file{Makefile}s, and
2247 that you want to convert it to using Automake.  If you are discovering
2248 both tools, it is probably better that you look at the Hello World
2249 example presented earlier (@pxref{Hello World}).
2251 The second example (@pxref{true}) shows how two programs can be built
2252 from the same file, using different compilation parameters.  It
2253 contains some technical digressions that are probably best skipped on
2254 first read.
2256 @menu
2257 * Complete::                    A simple example, start to finish
2258 * true::                        Building true and false
2259 @end menu
2262 @node Complete
2263 @section A simple example, start to finish
2265 @cindex Complete example
2267 Let's suppose you just finished writing @code{zardoz}, a program to make
2268 your head float from vortex to vortex.  You've been using Autoconf to
2269 provide a portability framework, but your @file{Makefile.in}s have been
2270 ad-hoc.  You want to make them bulletproof, so you turn to Automake.
2272 @cindex @code{AM_INIT_AUTOMAKE}, example use
2274 The first step is to update your @file{configure.ac} to include the
2275 commands that @command{automake} needs.  The way to do this is to add an
2276 @code{AM_INIT_AUTOMAKE} call just after @code{AC_INIT}:
2278 @example
2279 AC_INIT([zardoz], [1.0])
2280 AM_INIT_AUTOMAKE
2281 @dots{}
2282 @end example
2284 Since your program doesn't have any complicating factors (e.g., it
2285 doesn't use @code{gettext}, it doesn't want to build a shared library),
2286 you're done with this part.  That was easy!
2288 @cindex @command{aclocal} program, introduction
2289 @cindex @file{aclocal.m4}, preexisting
2290 @cindex @file{acinclude.m4}, defined
2292 Now you must regenerate @file{configure}.  But to do that, you'll need
2293 to tell @command{autoconf} how to find the new macro you've used.  The
2294 easiest way to do this is to use the @command{aclocal} program to
2295 generate your @file{aclocal.m4} for you.  But wait@dots{} maybe you
2296 already have an @file{aclocal.m4}, because you had to write some hairy
2297 macros for your program.  The @command{aclocal} program lets you put
2298 your own macros into @file{acinclude.m4}, so simply rename and then
2299 run:
2301 @example
2302 mv aclocal.m4 acinclude.m4
2303 aclocal
2304 autoconf
2305 @end example
2307 @cindex @command{zardoz} example
2309 Now it is time to write your @file{Makefile.am} for @code{zardoz}.
2310 Since @code{zardoz} is a user program, you want to install it where the
2311 rest of the user programs go: @code{bindir}.  Additionally,
2312 @code{zardoz} has some Texinfo documentation.  Your @file{configure.ac}
2313 script uses @code{AC_REPLACE_FUNCS}, so you need to link against
2314 @samp{$(LIBOBJS)}.  So here's what you'd write:
2316 @example
2317 bin_PROGRAMS = zardoz
2318 zardoz_SOURCES = main.c head.c float.c vortex9.c gun.c
2319 zardoz_LDADD = $(LIBOBJS)
2321 info_TEXINFOS = zardoz.texi
2322 @end example
2324 Now you can run @samp{automake --add-missing} to generate your
2325 @file{Makefile.in} and grab any auxiliary files you might need, and
2326 you're done!
2329 @node true
2330 @section Building true and false
2332 @cindex Example, @command{false} and @command{true}
2333 @cindex @command{false} Example
2334 @cindex @command{true} Example
2336 Here is another, trickier example.  It shows how to generate two
2337 programs (@code{true} and @code{false}) from the same source file
2338 (@file{true.c}).  The difficult part is that each compilation of
2339 @file{true.c} requires different @code{cpp} flags.
2341 @example
2342 bin_PROGRAMS = true false
2343 false_SOURCES =
2344 false_LDADD = false.o
2346 true.o: true.c
2347         $(COMPILE) -DEXIT_CODE=0 -c true.c
2349 false.o: true.c
2350         $(COMPILE) -DEXIT_CODE=1 -o false.o -c true.c
2351 @end example
2353 Note that there is no @code{true_SOURCES} definition.  Automake will
2354 implicitly assume that there is a source file named @file{true.c}
2355 (@pxref{Default _SOURCES}), and
2356 define rules to compile @file{true.o} and link @file{true}.  The
2357 @samp{true.o: true.c} rule supplied by the above @file{Makefile.am},
2358 will override the Automake generated rule to build @file{true.o}.
2360 @code{false_SOURCES} is defined to be empty---that way no implicit value
2361 is substituted.  Because we have not listed the source of
2362 @file{false}, we have to tell Automake how to link the program.  This is
2363 the purpose of the @code{false_LDADD} line.  A @code{false_DEPENDENCIES}
2364 variable, holding the dependencies of the @file{false} target will be
2365 automatically generated by Automake from the content of
2366 @code{false_LDADD}.
2368 The above rules won't work if your compiler doesn't accept both
2369 @option{-c} and @option{-o}.  The simplest fix for this is to introduce a
2370 bogus dependency (to avoid problems with a parallel @command{make}):
2372 @example
2373 true.o: true.c false.o
2374         $(COMPILE) -DEXIT_CODE=0 -c true.c
2376 false.o: true.c
2377         $(COMPILE) -DEXIT_CODE=1 -c true.c && mv true.o false.o
2378 @end example
2380 Also, these explicit rules do not work if the obsolete de-ANSI-fication feature
2381 is used (@pxref{ANSI}).  Supporting de-ANSI-fication requires a little
2382 more work:
2384 @example
2385 true_.o: true_.c false_.o
2386         $(COMPILE) -DEXIT_CODE=0 -c true_.c
2388 false_.o: true_.c
2389         $(COMPILE) -DEXIT_CODE=1 -c true_.c && mv true_.o false_.o
2390 @end example
2392 As it turns out, there is also a much easier way to do this same task.
2393 Some of the above techniques are useful enough that we've kept the
2394 example in the manual.  However if you were to build @code{true} and
2395 @code{false} in real life, you would probably use per-program
2396 compilation flags, like so:
2398 @example
2399 bin_PROGRAMS = false true
2401 false_SOURCES = true.c
2402 false_CPPFLAGS = -DEXIT_CODE=1
2404 true_SOURCES = true.c
2405 true_CPPFLAGS = -DEXIT_CODE=0
2406 @end example
2408 In this case Automake will cause @file{true.c} to be compiled twice,
2409 with different flags.  De-ANSI-fication will work automatically.  In
2410 this instance, the names of the object files would be chosen by
2411 automake; they would be @file{false-true.o} and @file{true-true.o}.
2412 (The name of the object files rarely matters.)
2415 @node Invoking Automake
2416 @chapter Creating a @file{Makefile.in}
2418 @cindex Multiple @file{configure.ac} files
2419 @cindex Invoking @command{automake}
2420 @cindex @command{automake}, invoking
2422 To create all the @file{Makefile.in}s for a package, run the
2423 @command{automake} program in the top level directory, with no
2424 arguments.  @command{automake} will automatically find each
2425 appropriate @file{Makefile.am} (by scanning @file{configure.ac};
2426 @pxref{configure}) and generate the corresponding @file{Makefile.in}.
2427 Note that @command{automake} has a rather simplistic view of what
2428 constitutes a package; it assumes that a package has only one
2429 @file{configure.ac}, at the top.  If your package has multiple
2430 @file{configure.ac}s, then you must run @command{automake} in each
2431 directory holding a @file{configure.ac}.  (Alternatively, you may rely
2432 on Autoconf's @command{autoreconf}, which is able to recurse your
2433 package tree and run @command{automake} where appropriate.)
2435 You can optionally give @command{automake} an argument; @file{.am} is
2436 appended to the argument and the result is used as the name of the
2437 input file.  This feature is generally only used to automatically
2438 rebuild an out-of-date @file{Makefile.in}.  Note that
2439 @command{automake} must always be run from the topmost directory of a
2440 project, even if being used to regenerate the @file{Makefile.in} in
2441 some subdirectory.  This is necessary because @command{automake} must
2442 scan @file{configure.ac}, and because @command{automake} uses the
2443 knowledge that a @file{Makefile.in} is in a subdirectory to change its
2444 behavior in some cases.
2446 @vindex AUTOCONF
2447 Automake will run @command{autoconf} to scan @file{configure.ac} and
2448 its dependencies (i.e., @file{aclocal.m4} and any included file),
2449 therefore @command{autoconf} must be in your @env{PATH}.  If there is
2450 an @env{AUTOCONF} variable in your environment it will be used
2451 instead of @command{autoconf}, this allows you to select a particular
2452 version of Autoconf.  By the way, don't misunderstand this paragraph:
2453 @command{automake} runs @command{autoconf} to @strong{scan} your
2454 @file{configure.ac}, this won't build @file{configure} and you still
2455 have to run @command{autoconf} yourself for this purpose.
2457 @cindex @command{automake} options
2458 @cindex Options, @command{automake}
2459 @cindex Strictness, command line
2461 @command{automake} accepts the following options:
2463 @cindex Extra files distributed with Automake
2464 @cindex Files distributed with Automake
2465 @cindex @file{config.guess}
2467 @table @code
2468 @item -a
2469 @itemx --add-missing
2470 @opindex -a
2471 @opindex --add-missing
2472 Automake requires certain common files to exist in certain situations;
2473 for instance, @file{config.guess} is required if @file{configure.ac} invokes
2474 @code{AC_CANONICAL_HOST}.  Automake is distributed with several of these
2475 files (@pxref{Auxiliary Programs}); this option will cause the missing
2476 ones to be automatically added to the package, whenever possible.  In
2477 general if Automake tells you a file is missing, try using this option.
2478 By default Automake tries to make a symbolic link pointing to its own
2479 copy of the missing file; this can be changed with @option{--copy}.
2481 Many of the potentially-missing files are common scripts whose
2482 location may be specified via the @code{AC_CONFIG_AUX_DIR} macro.
2483 Therefore, @code{AC_CONFIG_AUX_DIR}'s setting affects whether a
2484 file is considered missing, and where the missing file is added
2485 (@pxref{Optional}).
2487 In some strictness modes, additional files are installed, see @ref{Gnits}
2488 for more information.
2490 @item --libdir=@var{dir}
2491 @opindex --libdir
2492 Look for Automake data files in directory @var{dir} instead of in the
2493 installation directory.  This is typically used for debugging.
2495 @item -c
2496 @opindex -c
2497 @itemx --copy
2498 @opindex --copy
2499 When used with @option{--add-missing}, causes installed files to be
2500 copied.  The default is to make a symbolic link.
2502 @item --cygnus
2503 @opindex --cygnus
2504 Causes the generated @file{Makefile.in}s to follow Cygnus rules, instead
2505 of GNU or Gnits rules.  For more information, see @ref{Cygnus}.
2507 @item -f
2508 @opindex -f
2509 @itemx --force-missing
2510 @opindex --force-missing
2511 When used with @option{--add-missing}, causes standard files to be reinstalled
2512 even if they already exist in the source tree.  This involves removing
2513 the file from the source tree before creating the new symlink (or, with
2514 @option{--copy}, copying the new file).
2516 @item --foreign
2517 @opindex --foreign
2518 Set the global strictness to @option{foreign}.  For more information, see
2519 @ref{Strictness}.
2521 @item --gnits
2522 @opindex --gnits
2523 Set the global strictness to @option{gnits}.  For more information, see
2524 @ref{Gnits}.
2526 @item --gnu
2527 @opindex --gnu
2528 Set the global strictness to @option{gnu}.  For more information, see
2529 @ref{Gnits}.  This is the default strictness.
2531 @item --help
2532 @opindex --help
2533 Print a summary of the command line options and exit.
2535 @item -i
2536 @itemx --ignore-deps
2537 @opindex -i
2538 This disables the dependency tracking feature in generated
2539 @file{Makefile}s; see @ref{Dependencies}.
2541 @item --include-deps
2542 @opindex --include-deps
2543 This enables the dependency tracking feature.  This feature is enabled
2544 by default.  This option is provided for historical reasons only and
2545 probably should not be used.
2547 @item --no-force
2548 @opindex --no-force
2549 Ordinarily @command{automake} creates all @file{Makefile.in}s mentioned in
2550 @file{configure.ac}.  This option causes it to only update those
2551 @file{Makefile.in}s that are out of date with respect to one of their
2552 dependents.
2554 @item -o @var{dir}
2555 @itemx --output-dir=@var{dir}
2556 @opindex -o
2557 @opindex --output-dir
2558 Put the generated @file{Makefile.in} in the directory @var{dir}.
2559 Ordinarily each @file{Makefile.in} is created in the directory of the
2560 corresponding @file{Makefile.am}.  This option is deprecated and will be
2561 removed in a future release.
2563 @item --silent-rules
2564 @opindex --silent-rules
2565 Enable the @option{silent-rules} option globally (@pxref{Options}).
2567 @item -v
2568 @itemx --verbose
2569 @opindex -v
2570 @opindex --verbose
2571 Cause Automake to print information about which files are being read or
2572 created.
2574 @item --version
2575 @opindex --version
2576 Print the version number of Automake and exit.
2578 @item -W CATEGORY
2579 @itemx --warnings=@var{category}
2580 @opindex -W
2581 @opindex --warnings
2582 Output warnings falling in @var{category}.  @var{category} can be
2583 one of:
2584 @table @code
2585 @item gnu
2586 warnings related to the GNU Coding Standards
2587 (@pxref{Top, , , standards, The GNU Coding Standards}).
2588 @item obsolete
2589 obsolete features or constructions
2590 @item override
2591 user redefinitions of Automake rules or variables
2592 @item portability
2593 portability issues (e.g., use of @command{make} features that are
2594 known to be not portable)
2595 @item syntax
2596 weird syntax, unused variables, typos
2597 @item unsupported
2598 unsupported or incomplete features
2599 @item all
2600 all the warnings
2601 @item none
2602 turn off all the warnings
2603 @item error
2604 treat warnings as errors
2605 @end table
2607 A category can be turned off by prefixing its name with @samp{no-}.  For
2608 instance, @option{-Wno-syntax} will hide the warnings about unused
2609 variables.
2611 The categories output by default are @samp{syntax} and
2612 @samp{unsupported}.  Additionally, @samp{gnu} and @samp{portability}
2613 are enabled in @option{--gnu} and @option{--gnits} strictness.
2614 On the other hand, the @option{silent-rules} options (@pxref{Options})
2615 turns off portability warnings about recursive variable expansions.
2617 @vindex WARNINGS
2618 The environment variable @env{WARNINGS} can contain a comma separated
2619 list of categories to enable.  It will be taken into account before the
2620 command-line switches, this way @option{-Wnone} will also ignore any
2621 warning category enabled by @env{WARNINGS}.  This variable is also used
2622 by other tools like @command{autoconf}; unknown categories are ignored
2623 for this reason.
2625 @end table
2627 @vindex AUTOMAKE_JOBS
2628 If the environment variable @env{AUTOMAKE_JOBS} contains a positive
2629 number, it is taken as the maximum number of Perl threads to use in
2630 @command{automake} for generating multiple @file{Makefile.in} files
2631 concurrently.  This is an experimental feature.
2634 @node configure
2635 @chapter Scanning @file{configure.ac}
2637 @cindex @file{configure.ac}, scanning
2638 @cindex Scanning @file{configure.ac}
2640 Automake scans the package's @file{configure.ac} to determine certain
2641 information about the package.  Some @command{autoconf} macros are required
2642 and some variables must be defined in @file{configure.ac}.  Automake
2643 will also use information from @file{configure.ac} to further tailor its
2644 output.
2646 Automake also supplies some Autoconf macros to make the maintenance
2647 easier.  These macros can automatically be put into your
2648 @file{aclocal.m4} using the @command{aclocal} program.
2650 @menu
2651 * Requirements::                Configuration requirements
2652 * Optional::                    Other things Automake recognizes
2653 * Invoking aclocal::            Auto-generating aclocal.m4
2654 * Macros::                      Autoconf macros supplied with Automake
2655 @end menu
2658 @node Requirements
2659 @section Configuration requirements
2661 @cindex Automake requirements
2662 @cindex Requirements of Automake
2664 @acindex AM_INIT_AUTOMAKE
2665 The one real requirement of Automake is that your @file{configure.ac}
2666 call @code{AM_INIT_AUTOMAKE}.  This macro does several things that are
2667 required for proper Automake operation (@pxref{Macros}).
2669 Here are the other macros that Automake requires but which are not run
2670 by @code{AM_INIT_AUTOMAKE}:
2672 @table @code
2673 @item AC_CONFIG_FILES
2674 @itemx AC_OUTPUT
2675 @acindex AC_CONFIG_FILES
2676 @acindex AC_OUTPUT
2677 These two macros are usually invoked as follows near the end of
2678 @file{configure.ac}.
2680 @example
2681 @dots{}
2682 AC_CONFIG_FILES([
2683   Makefile
2684   doc/Makefile
2685   src/Makefile
2686   src/lib/Makefile
2687   @dots{}
2689 AC_OUTPUT
2690 @end example
2692 Automake uses these to determine which files to create (@pxref{Output, ,
2693 Creating Output Files, autoconf, The Autoconf Manual}).  A listed file
2694 is considered to be an Automake generated @file{Makefile} if there
2695 exists a file with the same name and the @file{.am} extension appended.
2696 Typically, @samp{AC_CONFIG_FILES([foo/Makefile])} will cause Automake to
2697 generate @file{foo/Makefile.in} if @file{foo/Makefile.am} exists.
2699 When using @code{AC_CONFIG_FILES} with multiple input files, as in
2701 @example
2702 AC_CONFIG_FILES([Makefile:top.in:Makefile.in:bot.in])
2703 @end example
2705 @noindent
2706 @command{automake} will generate the first @file{.in} input file for
2707 which a @file{.am} file exists.  If no such file exists the output
2708 file is not considered to be generated by Automake.
2710 Files created by @code{AC_CONFIG_FILES}, be they Automake
2711 @file{Makefile}s or not, are all removed by @samp{make distclean}.
2712 Their inputs are automatically distributed, unless they
2713 are the output of prior @code{AC_CONFIG_FILES} commands.
2714 Finally, rebuild rules are generated in the Automake @file{Makefile}
2715 existing in the subdirectory of the output file, if there is one, or
2716 in the top-level @file{Makefile} otherwise.
2718 The above machinery (cleaning, distributing, and rebuilding) works
2719 fine if the @code{AC_CONFIG_FILES} specifications contain only
2720 literals.  If part of the specification uses shell variables,
2721 @command{automake} will not be able to fulfill this setup, and you will
2722 have to complete the missing bits by hand.  For instance, on
2724 @example
2725 file=input
2726 @dots{}
2727 AC_CONFIG_FILES([output:$file],, [file=$file])
2728 @end example
2730 @noindent
2731 @command{automake} will output rules to clean @file{output}, and
2732 rebuild it.  However the rebuild rule will not depend on @file{input},
2733 and this file will not be distributed either.  (You must add
2734 @samp{EXTRA_DIST = input} to your @file{Makefile.am} if @file{input} is a
2735 source file.)
2737 Similarly
2739 @example
2740 file=output
2741 file2=out:in
2742 @dots{}
2743 AC_CONFIG_FILES([$file:input],, [file=$file])
2744 AC_CONFIG_FILES([$file2],, [file2=$file2])
2745 @end example
2747 @noindent
2748 will only cause @file{input} to be distributed.  No file will be
2749 cleaned automatically (add @samp{DISTCLEANFILES = output out}
2750 yourself), and no rebuild rule will be output.
2752 Obviously @command{automake} cannot guess what value @samp{$file} is
2753 going to hold later when @file{configure} is run, and it cannot use
2754 the shell variable @samp{$file} in a @file{Makefile}.  However, if you
2755 make reference to @samp{$file} as @samp{$@{file@}} (i.e., in a way
2756 that is compatible with @command{make}'s syntax) and furthermore use
2757 @code{AC_SUBST} to ensure that @samp{$@{file@}} is meaningful in a
2758 @file{Makefile}, then @command{automake} will be able to use
2759 @samp{$@{file@}} to generate all these rules.  For instance, here is
2760 how the Automake package itself generates versioned scripts for its
2761 test suite:
2763 @example
2764 AC_SUBST([APIVERSION], @dots{})
2765 @dots{}
2766 AC_CONFIG_FILES(
2767   [tests/aclocal-$@{APIVERSION@}:tests/aclocal.in],
2768   [chmod +x tests/aclocal-$@{APIVERSION@}],
2769   [APIVERSION=$APIVERSION])
2770 AC_CONFIG_FILES(
2771   [tests/automake-$@{APIVERSION@}:tests/automake.in],
2772   [chmod +x tests/automake-$@{APIVERSION@}])
2773 @end example
2775 @noindent
2776 Here cleaning, distributing, and rebuilding are done automatically,
2777 because @samp{$@{APIVERSION@}} is known at @command{make}-time.
2779 Note that you should not use shell variables to declare
2780 @file{Makefile} files for which @command{automake} must create
2781 @file{Makefile.in}.  Even @code{AC_SUBST} does not help here, because
2782 @command{automake} needs to know the file name when it runs in order
2783 to check whether @file{Makefile.am} exists.  (In the very hairy case
2784 that your setup requires such use of variables, you will have to tell
2785 Automake which @file{Makefile.in}s to generate on the command-line.)
2787 It is possible to let @command{automake} emit conditional rules for
2788 @code{AC_CONFIG_FILES} with the help of @code{AM_COND_IF}
2789 (@pxref{Optional}).
2791 To summarize:
2792 @itemize @bullet
2793 @item
2794 Use literals for @file{Makefile}s, and for other files whenever possible.
2795 @item
2796 Use @samp{$file} (or @samp{$@{file@}} without @samp{AC_SUBST([file])})
2797 for files that @command{automake} should ignore.
2798 @item
2799 Use @samp{$@{file@}} and @samp{AC_SUBST([file])} for files
2800 that @command{automake} should not ignore.
2801 @end itemize
2803 @end table
2806 @node Optional
2807 @section Other things Automake recognizes
2809 @cindex Macros Automake recognizes
2810 @cindex Recognized macros by Automake
2812 Every time Automake is run it calls Autoconf to trace
2813 @file{configure.ac}.  This way it can recognize the use of certain
2814 macros and tailor the generated @file{Makefile.in} appropriately.
2815 Currently recognized macros and their effects are:
2817 @ftable @code
2818 @item AC_CANONICAL_BUILD
2819 @itemx AC_CANONICAL_HOST
2820 @itemx AC_CANONICAL_TARGET
2821 @vindex build_triplet
2822 @vindex host_triplet
2823 @vindex target_triplet
2824 Automake will ensure that @file{config.guess} and @file{config.sub}
2825 exist.  Also, the @file{Makefile} variables @code{build_triplet},
2826 @code{host_triplet} and @code{target_triplet} are introduced.  See
2827 @ref{Canonicalizing, , Getting the Canonical System Type, autoconf,
2828 The Autoconf Manual}.
2830 @item AC_CONFIG_AUX_DIR
2831 Automake will look for various helper scripts, such as
2832 @file{install-sh}, in the directory named in this macro invocation.
2833 @c This list is accurate relative to version 1.8
2834 (The full list of scripts is: @file{config.guess}, @file{config.sub},
2835 @file{depcomp}, @file{elisp-comp}, @file{compile}, @file{install-sh},
2836 @file{ltmain.sh}, @file{mdate-sh}, @file{missing}, @file{mkinstalldirs},
2837 @file{py-compile}, @file{texinfo.tex}, and @file{ylwrap}.)  Not all
2838 scripts are always searched for; some scripts will only be sought if the
2839 generated @file{Makefile.in} requires them.
2841 If @code{AC_CONFIG_AUX_DIR} is not given, the scripts are looked for in
2842 their standard locations.  For @file{mdate-sh},
2843 @file{texinfo.tex}, and @file{ylwrap}, the standard location is the
2844 source directory corresponding to the current @file{Makefile.am}.  For
2845 the rest, the standard location is the first one of @file{.}, @file{..},
2846 or @file{../..} (relative to the top source directory) that provides any
2847 one of the helper scripts.  @xref{Input, , Finding `configure' Input,
2848 autoconf, The Autoconf Manual}.
2850 Required files from @code{AC_CONFIG_AUX_DIR} are automatically
2851 distributed, even if there is no @file{Makefile.am} in this directory.
2853 @item AC_CONFIG_LIBOBJ_DIR
2854 Automake will require the sources file declared with
2855 @code{AC_LIBSOURCE} (see below) in the directory specified by this
2856 macro.
2858 @item AC_CONFIG_HEADERS
2859 Automake will generate rules to rebuild these headers.  Older versions
2860 of Automake required the use of @code{AM_CONFIG_HEADER}
2861 (@pxref{Macros}); this is no longer the case.
2863 As for @code{AC_CONFIG_FILES} (@pxref{Requirements}), parts of the
2864 specification using shell variables will be ignored as far as
2865 cleaning, distributing, and rebuilding is concerned.
2867 @item AC_CONFIG_LINKS
2868 Automake will generate rules to remove @file{configure} generated
2869 links on @samp{make distclean} and to distribute named source files as
2870 part of @samp{make dist}.
2872 As for @code{AC_CONFIG_FILES} (@pxref{Requirements}), parts of the
2873 specification using shell variables will be ignored as far as cleaning
2874 and distributing is concerned.  (There are no rebuild rules for links.)
2876 @item AC_LIBOBJ
2877 @itemx AC_LIBSOURCE
2878 @itemx AC_LIBSOURCES
2879 @vindex LIBOBJS
2880 Automake will automatically distribute any file listed in
2881 @code{AC_LIBSOURCE} or @code{AC_LIBSOURCES}.
2883 Note that the @code{AC_LIBOBJ} macro calls @code{AC_LIBSOURCE}.  So if
2884 an Autoconf macro is documented to call @samp{AC_LIBOBJ([file])}, then
2885 @file{file.c} will be distributed automatically by Automake.  This
2886 encompasses many macros like @code{AC_FUNC_ALLOCA},
2887 @code{AC_FUNC_MEMCMP}, @code{AC_REPLACE_FUNCS}, and others.
2889 By the way, direct assignments to @code{LIBOBJS} are no longer
2890 supported.  You should always use @code{AC_LIBOBJ} for this purpose.
2891 @xref{AC_LIBOBJ vs LIBOBJS, , @code{AC_LIBOBJ} vs.@: @code{LIBOBJS},
2892 autoconf, The Autoconf Manual}.
2894 @item AC_PROG_RANLIB
2895 This is required if any libraries are built in the package.
2896 @xref{Particular Programs, , Particular Program Checks, autoconf, The
2897 Autoconf Manual}.
2899 @item AC_PROG_CXX
2900 This is required if any C++ source is included.  @xref{Particular
2901 Programs, , Particular Program Checks, autoconf, The Autoconf Manual}.
2903 @item AC_PROG_OBJC
2904 This is required if any Objective C source is included.  @xref{Particular
2905 Programs, , Particular Program Checks, autoconf, The Autoconf Manual}.
2907 @item AC_PROG_F77
2908 This is required if any Fortran 77 source is included.  This macro is
2909 distributed with Autoconf version 2.13 and later.  @xref{Particular
2910 Programs, , Particular Program Checks, autoconf, The Autoconf Manual}.
2912 @item AC_F77_LIBRARY_LDFLAGS
2913 This is required for programs and shared libraries that are a mixture of
2914 languages that include Fortran 77 (@pxref{Mixing Fortran 77 With C and
2915 C++}).  @xref{Macros, , Autoconf macros supplied with Automake}.
2917 @item AC_FC_SRCEXT
2918 Automake will add the flags computed by @code{AC_FC_SRCEXT} to compilation
2919 of files with the respective source extension (@pxref{Fortran Compiler, ,
2920 Fortran Compiler Characteristics, autoconf, The Autoconf Manual}).
2922 @item AC_PROG_FC
2923 This is required if any Fortran 90/95 source is included.  This macro is
2924 distributed with Autoconf version 2.58 and later.  @xref{Particular
2925 Programs, , Particular Program Checks, autoconf, The Autoconf Manual}.
2927 @item AC_PROG_LIBTOOL
2928 Automake will turn on processing for @command{libtool} (@pxref{Top, ,
2929 Introduction, libtool, The Libtool Manual}).
2931 @item AC_PROG_YACC
2932 @vindex YACC
2933 If a Yacc source file is seen, then you must either use this macro or
2934 define the variable @code{YACC} in @file{configure.ac}.  The former is
2935 preferred (@pxref{Particular Programs, , Particular Program Checks,
2936 autoconf, The Autoconf Manual}).
2938 @item AC_PROG_LEX
2939 If a Lex source file is seen, then this macro must be used.
2940 @xref{Particular Programs, , Particular Program Checks, autoconf, The
2941 Autoconf Manual}.
2943 @item AC_REQUIRE_AUX_FILE
2944 For each @code{AC_REQUIRE_AUX_FILE([@var{file}])},
2945 @command{automake} will ensure that @file{@var{file}} exists in the
2946 aux directory, and will complain otherwise.  It
2947 will also automatically distribute the file.  This macro should be
2948 used by third-party Autoconf macros that require some supporting
2949 files in the aux directory specified with @code{AC_CONFIG_AUX_DIR}
2950 above.  @xref{Input, , Finding @command{configure} Input, autoconf,
2951 The Autoconf Manual}.
2953 @item AC_SUBST
2954 The first argument is automatically defined as a variable in each
2955 generated @file{Makefile.in}, unless @code{AM_SUBST_NOTMAKE} is also
2956 used for this variable.  @xref{Setting Output Variables, , Setting
2957 Output Variables, autoconf, The Autoconf Manual}.
2959 For every substituted variable @var{var}, @command{automake} will add
2960 a line @code{@var{var} = @var{value}} to each @file{Makefile.in} file.
2961 Many Autoconf macros invoke @code{AC_SUBST} to set output variables
2962 this way, e.g., @code{AC_PATH_XTRA} defines @code{X_CFLAGS} and
2963 @code{X_LIBS}.  Thus, you can access these variables as
2964 @code{$(X_CFLAGS)} and @code{$(X_LIBS)} in any @file{Makefile.am}
2965 if @code{AC_PATH_XTRA} is called.
2967 @item AM_C_PROTOTYPES
2968 This is required when using the obsolete de-ANSI-fication feature; see
2969 @ref{ANSI}.
2971 @item AM_CONDITIONAL
2972 This introduces an Automake conditional (@pxref{Conditionals}).
2974 @item AM_COND_IF
2975 This macro allows @code{automake} to detect subsequent access within
2976 @file{configure.ac} to a conditional previously introduced with
2977 @code{AM_CONDITIONAL}, thus enabling conditional @code{AC_CONFIG_FILES}
2978 (@pxref{Usage of Conditionals}).
2980 @item AM_GNU_GETTEXT
2981 This macro is required for packages that use GNU gettext
2982 (@pxref{gettext}).  It is distributed with gettext.  If Automake sees
2983 this macro it ensures that the package meets some of gettext's
2984 requirements.
2986 @item AM_GNU_GETTEXT_INTL_SUBDIR
2987 This macro specifies that the @file{intl/} subdirectory is to be built,
2988 even if the @code{AM_GNU_GETTEXT} macro was invoked with a first argument
2989 of @samp{external}.
2991 @item AM_MAINTAINER_MODE(@ovar{default-mode})
2992 @opindex --enable-maintainer-mode
2993 @opindex --disable-maintainer-mode
2994 This macro adds an @option{--enable-maintainer-mode} option to
2995 @command{configure}.  If this is used, @command{automake} will cause
2996 ``maintainer-only'' rules to be turned off by default in the
2997 generated @file{Makefile.in}s, unless @var{default-mode} is
2998 @samp{enable}.  This macro defines the @code{MAINTAINER_MODE}
2999 conditional, which you can use in your own @file{Makefile.am}.
3000 @xref{maintainer-mode}.
3002 @item AM_SUBST_NOTMAKE(@var{var})
3003 Prevent Automake from defining a variable @var{var}, even if it is
3004 substituted by @command{config.status}.  Normally, Automake defines a
3005 @command{make} variable for each @command{configure} substitution,
3006 i.e., for each @code{AC_SUBST([@var{var}])}.  This macro prevents that
3007 definition from Automake.  If @code{AC_SUBST} has not been called
3008 for this variable, then @code{AM_SUBST_NOTMAKE} has no effects.
3009 Preventing variable definitions may be useful for substitution of
3010 multi-line values, where @code{@var{var} = @@@var{value}@@} might yield
3011 unintended results.
3013 @item m4_include
3014 Files included by @file{configure.ac} using this macro will be
3015 detected by Automake and automatically distributed.  They will also
3016 appear as dependencies in @file{Makefile} rules.
3018 @code{m4_include} is seldom used by @file{configure.ac} authors, but
3019 can appear in @file{aclocal.m4} when @command{aclocal} detects that
3020 some required macros come from files local to your package (as opposed
3021 to macros installed in a system-wide directory, @pxref{Invoking
3022 aclocal}).
3024 @end ftable
3027 @node Invoking aclocal
3028 @section Auto-generating aclocal.m4
3030 @cindex Invoking @command{aclocal}
3031 @cindex @command{aclocal}, Invoking
3033 Automake includes a number of Autoconf macros that can be used in
3034 your package (@pxref{Macros}); some of them are actually required by
3035 Automake in certain situations.  These macros must be defined in your
3036 @file{aclocal.m4}; otherwise they will not be seen by
3037 @command{autoconf}.
3039 The @command{aclocal} program will automatically generate
3040 @file{aclocal.m4} files based on the contents of @file{configure.ac}.
3041 This provides a convenient way to get Automake-provided macros,
3042 without having to search around.  The @command{aclocal} mechanism
3043 allows other packages to supply their own macros (@pxref{Extending
3044 aclocal}).  You can also use it to maintain your own set of custom
3045 macros (@pxref{Local Macros}).
3047 At startup, @command{aclocal} scans all the @file{.m4} files it can
3048 find, looking for macro definitions (@pxref{Macro Search Path}).  Then
3049 it scans @file{configure.ac}.  Any mention of one of the macros found
3050 in the first step causes that macro, and any macros it in turn
3051 requires, to be put into @file{aclocal.m4}.
3053 @emph{Putting} the file that contains the macro definition into
3054 @file{aclocal.m4} is usually done by copying the entire text of this
3055 file, including unused macro definitions as well as both @samp{#} and
3056 @samp{dnl} comments.  If you want to make a comment that will be
3057 completely ignored by @command{aclocal}, use @samp{##} as the comment
3058 leader.
3060 When a file selected by @command{aclocal} is located in a subdirectory
3061 specified as a relative search path with @command{aclocal}'s @option{-I}
3062 argument, @command{aclocal} assumes the file belongs to the package
3063 and uses @code{m4_include} instead of copying it into
3064 @file{aclocal.m4}.  This makes the package smaller, eases dependency
3065 tracking, and cause the file to be distributed automatically.
3066 (@xref{Local Macros}, for an example.)  Any macro that is found in a
3067 system-wide directory, or via an absolute search path will be copied.
3068 So use @samp{-I `pwd`/reldir} instead of @samp{-I reldir} whenever
3069 some relative directory need to be considered outside the package.
3071 The contents of @file{acinclude.m4}, if this file exists, are also
3072 automatically included in @file{aclocal.m4}.  We recommend against
3073 using @file{acinclude.m4} in new packages (@pxref{Local Macros}).
3075 @vindex AUTOM4TE
3076 @cindex autom4te
3077 While computing @file{aclocal.m4}, @command{aclocal} runs
3078 @command{autom4te} (@pxref{Using autom4te, , Using @command{Autom4te},
3079 autoconf, The Autoconf Manual}) in order to trace the macros that are
3080 really used, and omit from @file{aclocal.m4} all macros that are
3081 mentioned but otherwise unexpanded (this can happen when a macro is
3082 called conditionally).  @command{autom4te} is expected to be in the
3083 @env{PATH}, just as @command{autoconf}.  Its location can be
3084 overridden using the @env{AUTOM4TE} environment variable.
3086 @menu
3087 * aclocal Options::             Options supported by aclocal
3088 * Macro Search Path::           How aclocal finds .m4 files
3089 * Extending aclocal::           Writing your own aclocal macros
3090 * Local Macros::                Organizing local macros
3091 * Serials::                     Serial lines in Autoconf macros
3092 * Future of aclocal::           aclocal's scheduled death
3093 @end menu
3095 @node aclocal Options
3096 @subsection aclocal Options
3098 @cindex @command{aclocal}, Options
3099 @cindex Options, @command{aclocal}
3101 @command{aclocal} accepts the following options:
3103 @table @code
3104 @item --acdir=@var{dir}
3105 @opindex --acdir
3106 Look for the macro files in @var{dir} instead of the installation
3107 directory.  This is typically used for debugging.
3109 @item --diff[=@var{command}]
3110 @opindex --diff
3111 Run @var{command} on M4 file that would be installed or overwritten
3112 by @option{--install}.  The default @var{command} is @samp{diff -u}.
3113 This option implies @option{--install} and @option{--dry-run}.
3115 @item --dry-run
3116 @opindex --dry-run
3117 Do not actually overwrite (or create) @file{aclocal.m4} and M4
3118 files installed by @option{--install}.
3120 @item --help
3121 @opindex --help
3122 Print a summary of the command line options and exit.
3124 @item -I @var{dir}
3125 @opindex -I
3126 Add the directory @var{dir} to the list of directories searched for
3127 @file{.m4} files.
3129 @item --install
3130 @opindex --install
3131 Install system-wide third-party macros into the first directory
3132 specified with @samp{-I @var{dir}} instead of copying them in the
3133 output file.
3135 @cindex serial number and @option{--install}
3136 When this option is used, and only when this option is used,
3137 @command{aclocal} will also honor @samp{#serial @var{NUMBER}} lines
3138 that appear in macros: an M4 file is ignored if there exists another
3139 M4 file with the same basename and a greater serial number in the
3140 search path (@pxref{Serials}).
3142 @item --force
3143 @opindex --force
3144 Always overwrite the output file.  The default is to overwrite the output
3145 file only when really needed, i.e., when its contents changes or if one
3146 of its dependencies is younger.
3148 This option forces the update of @file{aclocal.m4} (or the file
3149 specified with @file{--output} below) and only this file, it has
3150 absolutely no influence on files that may need to be installed by
3151 @option{--install}.
3153 @item --output=@var{file}
3154 @opindex --output
3155 Cause the output to be put into @var{file} instead of @file{aclocal.m4}.
3157 @item --print-ac-dir
3158 @opindex --print-ac-dir
3159 Prints the name of the directory that @command{aclocal} will search to
3160 find third-party @file{.m4} files.  When this option is given, normal
3161 processing is suppressed.  This option can be used by a package to
3162 determine where to install a macro file.
3164 @item --verbose
3165 @opindex --verbose
3166 Print the names of the files it examines.
3168 @item --version
3169 @opindex --version
3170 Print the version number of Automake and exit.
3172 @item -W CATEGORY
3173 @item --warnings=@var{category}
3174 @opindex -W
3175 @opindex --warnings
3176 Output warnings falling in @var{category}.  @var{category} can be
3177 one of:
3178 @table @code
3179 @item syntax
3180 dubious syntactic constructs, underquoted macros, unused macros, etc.
3181 @item unsupported
3182 unknown macros
3183 @item all
3184 all the warnings, this is the default
3185 @item none
3186 turn off all the warnings
3187 @item error
3188 treat warnings as errors
3189 @end table
3191 All warnings are output by default.
3193 @vindex WARNINGS
3194 The environment variable @env{WARNINGS} is honored in the same
3195 way as it is for @command{automake} (@pxref{Invoking Automake}).
3197 @end table
3199 @node Macro Search Path
3200 @subsection Macro Search Path
3202 @cindex Macro search path
3203 @cindex @command{aclocal} search path
3205 By default, @command{aclocal} searches for @file{.m4} files in the following
3206 directories, in this order:
3208 @table @code
3209 @item @var{acdir-APIVERSION}
3210 This is where the @file{.m4} macros distributed with Automake itself
3211 are stored.  @var{APIVERSION} depends on the Automake release used;
3212 for Automake 1.6.x, @var{APIVERSION} = @code{1.6}.
3214 @item @var{acdir}
3215 This directory is intended for third party @file{.m4} files, and is
3216 configured when @command{automake} itself is built.  This is
3217 @file{@@datadir@@/aclocal/}, which typically
3218 expands to @file{$@{prefix@}/share/aclocal/}.  To find the compiled-in
3219 value of @var{acdir}, use the @option{--print-ac-dir} option
3220 (@pxref{aclocal Options}).
3221 @end table
3223 As an example, suppose that @command{automake-1.6.2} was configured with
3224 @option{--prefix=@-/usr/local}.  Then, the search path would be:
3226 @enumerate
3227 @item @file{/usr/local/share/aclocal-1.6/}
3228 @item @file{/usr/local/share/aclocal/}
3229 @end enumerate
3231 As explained in (@pxref{aclocal Options}), there are several options that
3232 can be used to change or extend this search path.
3234 @subsubheading Modifying the Macro Search Path: @option{--acdir}
3236 The most erroneous option to modify the search path is
3237 @option{--acdir=@var{dir}}, which changes default directory and
3238 drops the @var{APIVERSION} directory.  For example, if one specifies
3239 @samp{--acdir=/opt/private/}, then the search path becomes:
3241 @enumerate
3242 @item @file{/opt/private/}
3243 @end enumerate
3245 This option, @option{--acdir}, is intended for use by the internal
3246 Automake test suite only; it is not ordinarily needed by end-users.
3248 @subsubheading Modifying the Macro Search Path: @samp{-I @var{dir}}
3250 Any extra directories specified using @option{-I} options
3251 (@pxref{aclocal Options}) are @emph{prepended} to this search list.  Thus,
3252 @samp{aclocal -I /foo -I /bar} results in the following search path:
3254 @enumerate
3255 @item @file{/foo}
3256 @item @file{/bar}
3257 @item @var{acdir}-@var{APIVERSION}
3258 @item @var{acdir}
3259 @end enumerate
3261 @subsubheading Modifying the Macro Search Path: @file{dirlist}
3262 @cindex @file{dirlist}
3264 There is a third mechanism for customizing the search path.  If a
3265 @file{dirlist} file exists in @var{acdir}, then that file is assumed to
3266 contain a list of directory patterns, one per line.  @command{aclocal}
3267 expands these patterns to directory names, and adds them to the search
3268 list @emph{after} all other directories.  @file{dirlist} entries may
3269 use shell wildcards such as @samp{*}, @samp{?}, or @code{[...]}.
3271 For example, suppose
3272 @file{@var{acdir}/dirlist} contains the following:
3274 @example
3275 /test1
3276 /test2
3277 /test3*
3278 @end example
3280 @noindent
3281 and that @command{aclocal} was called with the @samp{-I /foo -I /bar} options.
3282 Then, the search path would be
3284 @c @code looks better than @file here
3285 @enumerate
3286 @item @code{/foo}
3287 @item @code{/bar}
3288 @item @var{acdir}-@var{APIVERSION}
3289 @item @var{acdir}
3290 @item @code{/test1}
3291 @item @code{/test2}
3292 @end enumerate
3294 @noindent
3295 and all directories with path names starting with @code{/test3}.
3297 If the @option{--acdir=@var{dir}} option is used, then @command{aclocal}
3298 will search for the @file{dirlist} file in @var{dir}.  In the
3299 @samp{--acdir=/opt/private/} example above, @command{aclocal} would look
3300 for @file{/opt/private/dirlist}.  Again, however, the @option{--acdir}
3301 option is intended for use by the internal Automake test suite only;
3302 @option{--acdir} is not ordinarily needed by end-users.
3304 @file{dirlist} is useful in the following situation: suppose that
3305 @command{automake} version @code{1.6.2} is installed with
3306 @samp{--prefix=/usr} by the system vendor.  Thus, the default search
3307 directories are
3309 @c @code looks better than @file here
3310 @enumerate
3311 @item @code{/usr/share/aclocal-1.6/}
3312 @item @code{/usr/share/aclocal/}
3313 @end enumerate
3315 However, suppose further that many packages have been manually
3316 installed on the system, with $prefix=/usr/local, as is typical.  In
3317 that case, many of these ``extra'' @file{.m4} files are in
3318 @file{/usr/local/share/aclocal}.  The only way to force
3319 @file{/usr/bin/aclocal} to find these ``extra'' @file{.m4} files is to
3320 always call @samp{aclocal -I /usr/local/share/aclocal}.  This is
3321 inconvenient.  With @file{dirlist}, one may create a file
3322 @file{/usr/share/aclocal/dirlist} containing only the single line
3324 @example
3325 /usr/local/share/aclocal
3326 @end example
3328 Now, the ``default'' search path on the affected system is
3330 @c @code looks better than @file here
3331 @enumerate
3332 @item @code{/usr/share/aclocal-1.6/}
3333 @item @code{/usr/share/aclocal/}
3334 @item @code{/usr/local/share/aclocal/}
3335 @end enumerate
3337 without the need for @option{-I} options; @option{-I} options can be reserved
3338 for project-specific needs (@file{my-source-dir/m4/}), rather than
3339 using it to work around local system-dependent tool installation
3340 directories.
3342 Similarly, @file{dirlist} can be handy if you have installed a local
3343 copy of Automake in your account and want @command{aclocal} to look for
3344 macros installed at other places on the system.
3347 @node Extending aclocal
3348 @subsection Writing your own aclocal macros
3350 @cindex @command{aclocal}, extending
3351 @cindex Extending @command{aclocal}
3353 The @command{aclocal} program doesn't have any built-in knowledge of any
3354 macros, so it is easy to extend it with your own macros.
3356 This can be used by libraries that want to supply their own Autoconf
3357 macros for use by other programs.  For instance, the @command{gettext}
3358 library supplies a macro @code{AM_GNU_GETTEXT} that should be used by
3359 any package using @command{gettext}.  When the library is installed, it
3360 installs this macro so that @command{aclocal} will find it.
3362 A macro file's name should end in @file{.m4}.  Such files should be
3363 installed in @file{$(datadir)/aclocal}.  This is as simple as writing:
3365 @example
3366 aclocaldir = $(datadir)/aclocal
3367 aclocal_DATA = mymacro.m4 myothermacro.m4
3368 @end example
3370 @noindent
3371 Please do use @file{$(datadir)/aclocal}, and not something based on
3372 the result of @samp{aclocal --print-ac-dir}.  @xref{Hard-Coded Install
3373 Paths}, for arguments.
3375 A file of macros should be a series of properly quoted
3376 @code{AC_DEFUN}'s (@pxref{Macro Definitions, , , autoconf, The
3377 Autoconf Manual}).  The @command{aclocal} programs also understands
3378 @code{AC_REQUIRE} (@pxref{Prerequisite Macros, , , autoconf, The
3379 Autoconf Manual}), so it is safe to put each macro in a separate file.
3380 Each file should have no side effects but macro definitions.
3381 Especially, any call to @code{AC_PREREQ} should be done inside the
3382 defined macro, not at the beginning of the file.
3384 @cindex underquoted @code{AC_DEFUN}
3385 @acindex AC_DEFUN
3386 @acindex AC_PREREQ
3388 Starting with Automake 1.8, @command{aclocal} will warn about all
3389 underquoted calls to @code{AC_DEFUN}.  We realize this will annoy a
3390 lot of people, because @command{aclocal} was not so strict in the past
3391 and many third party macros are underquoted; and we have to apologize
3392 for this temporary inconvenience.  The reason we have to be stricter
3393 is that a future implementation of @command{aclocal} (@pxref{Future of
3394 aclocal}) will have to temporarily include all these third party
3395 @file{.m4} files, maybe several times, including even files that are
3396 not actually needed.  Doing so should alleviate many problems of the
3397 current implementation, however it requires a stricter style from the
3398 macro authors.  Hopefully it is easy to revise the existing macros.
3399 For instance,
3400 @example
3401 # bad style
3402 AC_PREREQ(2.57)
3403 AC_DEFUN(AX_FOOBAR,
3404 [AC_REQUIRE([AX_SOMETHING])dnl
3405 AX_FOO
3406 AX_BAR
3408 @end example
3409 @noindent
3410 should be rewritten as
3411 @example
3412 AC_DEFUN([AX_FOOBAR],
3413 [AC_PREREQ([2.57])dnl
3414 AC_REQUIRE([AX_SOMETHING])dnl
3415 AX_FOO
3416 AX_BAR
3418 @end example
3420 Wrapping the @code{AC_PREREQ} call inside the macro ensures that
3421 Autoconf 2.57 will not be required if @code{AX_FOOBAR} is not actually
3422 used.  Most importantly, quoting the first argument of @code{AC_DEFUN}
3423 allows the macro to be redefined or included twice (otherwise this
3424 first argument would be expanded during the second definition).  For
3425 consistency we like to quote even arguments such as @code{2.57} that
3426 do not require it.
3428 If you have been directed here by the @command{aclocal} diagnostic but
3429 are not the maintainer of the implicated macro, you will want to
3430 contact the maintainer of that macro.  Please make sure you have the
3431 latest version of the macro and that the problem hasn't already been
3432 reported before doing so: people tend to work faster when they aren't
3433 flooded by mails.
3435 Another situation where @command{aclocal} is commonly used is to
3436 manage macros that are used locally by the package, @ref{Local
3437 Macros}.
3439 @node Local Macros
3440 @subsection Handling Local Macros
3442 Feature tests offered by Autoconf do not cover all needs.  People
3443 often have to supplement existing tests with their own macros, or
3444 with third-party macros.
3446 There are two ways to organize custom macros in a package.
3448 The first possibility (the historical practice) is to list all your
3449 macros in @file{acinclude.m4}.  This file will be included in
3450 @file{aclocal.m4} when you run @command{aclocal}, and its macro(s) will
3451 henceforth be visible to @command{autoconf}.  However if it contains
3452 numerous macros, it will rapidly become difficult to maintain, and it
3453 will be almost impossible to share macros between packages.
3455 @vindex ACLOCAL_AMFLAGS
3456 The second possibility, which we do recommend, is to write each macro
3457 in its own file and gather all these files in a directory.  This
3458 directory is usually called @file{m4/}.  To build @file{aclocal.m4},
3459 one should therefore instruct @command{aclocal} to scan @file{m4/}.
3460 From the command line, this is done with @samp{aclocal -I m4}.  The
3461 top-level @file{Makefile.am} should also be updated to define
3463 @example
3464 ACLOCAL_AMFLAGS = -I m4
3465 @end example
3467 @code{ACLOCAL_AMFLAGS} contains options to pass to @command{aclocal}
3468 when @file{aclocal.m4} is to be rebuilt by @command{make}.  This line is
3469 also used by @command{autoreconf} (@pxref{autoreconf Invocation, ,
3470 Using @command{autoreconf} to Update @file{configure} Scripts,
3471 autoconf, The Autoconf Manual}) to run @command{aclocal} with suitable
3472 options, or by @command{autopoint} (@pxref{autopoint Invocation, ,
3473 Invoking the @command{autopoint} Program, gettext, GNU gettext tools})
3474 and @command{gettextize} (@pxref{gettextize Invocation, , Invoking the
3475 @command{gettextize} Program, gettext, GNU gettext tools}) to locate
3476 the place where Gettext's macros should be installed.  So even if you
3477 do not really care about the rebuild rules, you should define
3478 @code{ACLOCAL_AMFLAGS}.
3480 When @samp{aclocal -I m4} is run, it will build an @file{aclocal.m4}
3481 that @code{m4_include}s any file from @file{m4/} that defines a
3482 required macro.  Macros not found locally will still be searched in
3483 system-wide directories, as explained in @ref{Macro Search Path}.
3485 Custom macros should be distributed for the same reason that
3486 @file{configure.ac} is: so that other people have all the sources of
3487 your package if they want to work on it.  Actually, this distribution
3488 happens automatically because all @code{m4_include}d files are
3489 distributed.
3491 However there is no consensus on the distribution of third-party
3492 macros that your package may use.  Many libraries install their own
3493 macro in the system-wide @command{aclocal} directory (@pxref{Extending
3494 aclocal}).  For instance, Guile ships with a file called
3495 @file{guile.m4} that contains the macro @code{GUILE_FLAGS} that can
3496 be used to define setup compiler and linker flags appropriate for
3497 using Guile.  Using @code{GUILE_FLAGS} in @file{configure.ac} will
3498 cause @command{aclocal} to copy @file{guile.m4} into
3499 @file{aclocal.m4}, but as @file{guile.m4} is not part of the project,
3500 it will not be distributed.  Technically, that means a user who
3501 needs to rebuild @file{aclocal.m4} will have to install Guile first.
3502 This is probably OK, if Guile already is a requirement to build the
3503 package.  However, if Guile is only an optional feature, or if your
3504 package might run on architectures where Guile cannot be installed,
3505 this requirement will hinder development.  An easy solution is to copy
3506 such third-party macros in your local @file{m4/} directory so they get
3507 distributed.
3509 Since Automake 1.10, @command{aclocal} offers an option to copy these
3510 system-wide third-party macros in your local macro directory, solving
3511 the above problem.  Simply use:
3513 @example
3514 ACLOCAL_AMFLAGS = -I m4 --install
3515 @end example
3517 @noindent
3518 With this setup, system-wide macros will be copied to @file{m4/}
3519 the first time you run @command{autoreconf}.  Then the locally
3520 installed macros will have precedence over the system-wide installed
3521 macros each time @command{aclocal} is run again.
3523 One reason why you should keep @option{--install} in the flags even
3524 after the first run is that when you later edit @file{configure.ac}
3525 and depend on a new macro, this macro will be installed in your
3526 @file{m4/} automatically.  Another one is that serial numbers
3527 (@pxref{Serials}) can be used to update the macros in your source tree
3528 automatically when new system-wide versions are installed.  A serial
3529 number should be a single line of the form
3531 @example
3532 #serial @var{NNN}
3533 @end example
3535 @noindent
3536 where @var{NNN} contains only digits and dots.  It should appear in
3537 the M4 file before any macro definition.  It is a good practice to
3538 maintain a serial number for each macro you distribute, even if you do
3539 not use the @option{--install} option of @command{aclocal}: this allows
3540 other people to use it.
3543 @node Serials
3544 @subsection Serial Numbers
3545 @cindex serial numbers in macros
3546 @cindex macro serial numbers
3547 @cindex @code{#serial} syntax
3548 @cindex @command{aclocal} and serial numbers
3550 Because third-party macros defined in @file{*.m4} files are naturally
3551 shared between multiple projects, some people like to version them.
3552 This makes it easier to tell which of two M4 files is newer.  Since at
3553 least 1996, the tradition is to use a @samp{#serial} line for this.
3555 A serial number should be a single line of the form
3557 @example
3558 # serial @var{version}
3559 @end example
3561 @noindent
3562 where @var{version} is a version number containing only digits and
3563 dots.  Usually people use a single integer, and they increment it each
3564 time they change the macro (hence the name of ``serial'').  Such a
3565 line should appear in the M4 file before any macro definition.
3567 The @samp{#} must be the first character on the line,
3568 and it is OK to have extra words after the version, as in
3570 @example
3571 #serial @var{version} @var{garbage}
3572 @end example
3574 Normally these serial numbers are completely ignored by
3575 @command{aclocal} and @command{autoconf}, like any genuine comment.
3576 However when using @command{aclocal}'s @option{--install} feature, these
3577 serial numbers will modify the way @command{aclocal} selects the
3578 macros to install in the package: if two files with the same basename
3579 exist in your search path, and if at least one of them uses a
3580 @samp{#serial} line, @command{aclocal} will ignore the file that has
3581 the older @samp{#serial} line (or the file that has none).
3583 Note that a serial number applies to a whole M4 file, not to any macro
3584 it contains.  A file can contains multiple macros, but only one
3585 serial.
3587 Here is a use case that illustrates the use of @option{--install} and
3588 its interaction with serial numbers.  Let's assume we maintain a
3589 package called MyPackage, the @file{configure.ac} of which requires a
3590 third-party macro @code{AX_THIRD_PARTY} defined in
3591 @file{/usr/share/aclocal/thirdparty.m4} as follows:
3593 @example
3594 # serial 1
3595 AC_DEFUN([AX_THIRD_PARTY], [...])
3596 @end example
3598 MyPackage uses an @file{m4/} directory to store local macros as
3599 explained in @ref{Local Macros}, and has
3601 @example
3602 ACLOCAL_AMFLAGS = -I m4 --install
3603 @end example
3605 @noindent
3606 in its top-level @file{Makefile.am}.
3608 Initially the @file{m4/} directory is empty.  The first time we run
3609 @command{autoreconf}, it will fetch the options to pass to
3610 @command{aclocal} in @file{Makefile.am}, and run @samp{aclocal -I m4
3611 --install}.  @command{aclocal} will notice that
3613 @itemize @bullet
3614 @item
3615 @file{configure.ac} uses @code{AX_THIRD_PARTY}
3616 @item
3617 No local macros define @code{AX_THIRD_PARTY}
3618 @item
3619 @file{/usr/share/aclocal/thirdparty.m4} defines @code{AX_THIRD_PARTY}
3620 with serial 1.
3621 @end itemize
3623 @noindent
3624 Because @file{/usr/share/aclocal/thirdparty.m4} is a system-wide macro
3625 and @command{aclocal} was given the @option{--install} option, it will
3626 copy this file in @file{m4/thirdparty.m4}, and output an
3627 @file{aclocal.m4} that contains @samp{m4_include([m4/thirdparty.m4])}.
3629 The next time @samp{aclocal -I m4 --install} is run (either via
3630 @command{autoreconf}, by hand, or from the @file{Makefile} rebuild
3631 rules) something different happens.  @command{aclocal} notices that
3633 @itemize @bullet
3634 @item
3635 @file{configure.ac} uses @code{AX_THIRD_PARTY}
3636 @item
3637 @file{m4/thirdparty.m4} defines @code{AX_THIRD_PARTY}
3638 with serial 1.
3639 @item
3640 @file{/usr/share/aclocal/thirdparty.m4} defines @code{AX_THIRD_PARTY}
3641 with serial 1.
3642 @end itemize
3644 @noindent
3645 Because both files have the same serial number, @command{aclocal} uses
3646 the first it found in its search path order (@pxref{Macro Search
3647 Path}).  @command{aclocal} therefore ignores
3648 @file{/usr/share/aclocal/thirdparty.m4} and outputs an
3649 @file{aclocal.m4} that contains @samp{m4_include([m4/thirdparty.m4])}.
3651 Local directories specified with @option{-I} are always searched before
3652 system-wide directories, so a local file will always be preferred to
3653 the system-wide file in case of equal serial numbers.
3655 Now suppose the system-wide third-party macro is changed.  This can
3656 happen if the package installing this macro is updated.  Let's suppose
3657 the new macro has serial number 2.  The next time @samp{aclocal -I m4
3658 --install} is run the situation is the following:
3660 @itemize @bullet
3661 @item
3662 @file{configure.ac} uses @code{AX_THIRD_PARTY}
3663 @item
3664 @file{m4/thirdparty.m4} defines @code{AX_THIRD_PARTY}
3665 with serial 1.
3666 @item
3667 @file{/usr/share/aclocal/thirdparty.m4} defines @code{AX_THIRD_PARTY}
3668 with serial 2.
3669 @end itemize
3671 @noindent
3672 When @command{aclocal} sees a greater serial number, it immediately
3673 forgets anything it knows from files that have the same basename and a
3674 smaller serial number.  So after it has found
3675 @file{/usr/share/aclocal/thirdparty.m4} with serial 2,
3676 @command{aclocal} will proceed as if it had never seen
3677 @file{m4/thirdparty.m4}.  This brings us back to a situation similar
3678 to that at the beginning of our example, where no local file defined
3679 the macro.  @command{aclocal} will install the new version of the
3680 macro in @file{m4/thirdparty.m4}, in this case overriding the old
3681 version.  MyPackage just had its macro updated as a side effect of
3682 running @command{aclocal}.
3684 If you are leery of letting @command{aclocal} update your local macro,
3685 you can run @samp{aclocal -I m4 --diff} to review the changes
3686 @samp{aclocal -I m4 --install} would perform on these macros.
3688 Finally, note that the @option{--force} option of @command{aclocal} has
3689 absolutely no effect on the files installed by @option{--install}.  For
3690 instance, if you have modified your local macros, do not expect
3691 @option{--install --force} to replace the local macros by their
3692 system-wide versions.  If you want to do so, simply erase the local
3693 macros you want to revert, and run @samp{aclocal -I m4 --install}.
3696 @node Future of aclocal
3697 @subsection The Future of @command{aclocal}
3698 @cindex @command{aclocal}'s scheduled death
3700 @command{aclocal} is expected to disappear.  This feature really
3701 should not be offered by Automake.  Automake should focus on
3702 generating @file{Makefile}s; dealing with M4 macros really is
3703 Autoconf's job.  The fact that some people install Automake just to use
3704 @command{aclocal}, but do not use @command{automake} otherwise is an
3705 indication of how that feature is misplaced.
3707 The new implementation will probably be done slightly differently.
3708 For instance, it could enforce the @file{m4/}-style layout discussed in
3709 @ref{Local Macros}.
3711 We have no idea when and how this will happen.  This has been
3712 discussed several times in the past, but someone still has to commit
3713 to that non-trivial task.
3715 From the user point of view, @command{aclocal}'s removal might turn
3716 out to be painful.  There is a simple precaution that you may take to
3717 make that switch more seamless: never call @command{aclocal} yourself.
3718 Keep this guy under the exclusive control of @command{autoreconf} and
3719 Automake's rebuild rules.  Hopefully you won't need to worry about
3720 things breaking, when @command{aclocal} disappears, because everything
3721 will have been taken care of.  If otherwise you used to call
3722 @command{aclocal} directly yourself or from some script, you will
3723 quickly notice the change.
3725 Many packages come with a script called @file{bootstrap.sh} or
3726 @file{autogen.sh}, that will just call @command{aclocal},
3727 @command{libtoolize}, @command{gettextize} or @command{autopoint},
3728 @command{autoconf}, @command{autoheader}, and @command{automake} in
3729 the right order.  Actually this is precisely what @command{autoreconf}
3730 can do for you.  If your package has such a @file{bootstrap.sh} or
3731 @file{autogen.sh} script, consider using @command{autoreconf}.  That
3732 should simplify its logic a lot (less things to maintain, yum!), it's
3733 even likely you will not need the script anymore, and more to the point
3734 you will not call @command{aclocal} directly anymore.
3736 For the time being, third-party packages should continue to install
3737 public macros into @file{/usr/share/aclocal/}.  If @command{aclocal}
3738 is replaced by another tool it might make sense to rename the
3739 directory, but supporting @file{/usr/share/aclocal/} for backward
3740 compatibility should be really easy provided all macros are properly
3741 written (@pxref{Extending aclocal}).
3745 @node Macros
3746 @section Autoconf macros supplied with Automake
3748 Automake ships with several Autoconf macros that you can use from your
3749 @file{configure.ac}.  When you use one of them it will be included by
3750 @command{aclocal} in @file{aclocal.m4}.
3752 @menu
3753 * Public Macros::               Macros that you can use.
3754 * Obsolete Macros::             Macros that you should stop using.
3755 * Private Macros::              Macros that you should not use.
3756 @end menu
3758 @c consider generating the following subsections automatically from m4 files.
3760 @node Public Macros
3761 @subsection Public Macros
3763 @table @code
3765 @item AM_ENABLE_MULTILIB
3766 @acindex AM_ENABLE_MULTILIB
3767 This is used when a ``multilib'' library is being built.  The first
3768 optional argument is the name of the @file{Makefile} being generated; it
3769 defaults to @samp{Makefile}.  The second optional argument is used to find
3770 the top source directory; it defaults to the empty string (generally
3771 this should not be used unless you are familiar with the internals).
3772 @xref{Multilibs}.
3774 @item AM_INIT_AUTOMAKE([OPTIONS])
3775 @itemx AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
3776 @acindex AM_INIT_AUTOMAKE
3777 Runs many macros required for proper operation of the generated Makefiles.
3779 @vindex AUTOMAKE_OPTIONS
3780 This macro has two forms, the first of which is preferred.
3781 In this form, @code{AM_INIT_AUTOMAKE} is called with a
3782 single argument: a space-separated list of Automake options that should
3783 be applied to every @file{Makefile.am} in the tree.  The effect is as if
3784 each option were listed in @code{AUTOMAKE_OPTIONS} (@pxref{Options}).
3786 @acindex AC_INIT
3787 The second, deprecated, form of @code{AM_INIT_AUTOMAKE} has two required
3788 arguments: the package and the version number.  This form is
3789 obsolete because the @var{package} and @var{version} can be obtained
3790 from Autoconf's @code{AC_INIT} macro (which itself has an old and a new
3791 form).
3793 If your @file{configure.ac} has:
3795 @example
3796 AC_INIT([src/foo.c])
3797 AM_INIT_AUTOMAKE([mumble], [1.5])
3798 @end example
3800 @noindent
3801 you can modernize it as follows:
3803 @example
3804 AC_INIT([mumble], [1.5])
3805 AC_CONFIG_SRCDIR([src/foo.c])
3806 AM_INIT_AUTOMAKE
3807 @end example
3809 Note that if you're upgrading your @file{configure.ac} from an earlier
3810 version of Automake, it is not always correct to simply move the
3811 package and version arguments from @code{AM_INIT_AUTOMAKE} directly to
3812 @code{AC_INIT}, as in the example above.  The first argument to
3813 @code{AC_INIT} should be the name of your package (e.g., @samp{GNU
3814 Automake}), not the tarball name (e.g., @samp{automake}) that you used
3815 to pass to @code{AM_INIT_AUTOMAKE}.  Autoconf tries to derive a
3816 tarball name from the package name, which should work for most but not
3817 all package names.  (If it doesn't work for yours, you can use the
3818 four-argument form of @code{AC_INIT} to provide the tarball name
3819 explicitly).
3821 @cindex @code{PACKAGE}, prevent definition
3822 @cindex @code{VERSION}, prevent definition
3823 @opindex no-define
3824 By default this macro @code{AC_DEFINE}'s @code{PACKAGE} and
3825 @code{VERSION}.  This can be avoided by passing the @option{no-define}
3826 option, as in:
3827 @example
3828 AM_INIT_AUTOMAKE([gnits 1.5 no-define dist-bzip2])
3829 @end example
3830 or by passing a third non-empty argument to the obsolete form.
3832 @item AM_PATH_LISPDIR
3833 @acindex AM_PATH_LISPDIR
3834 @vindex EMACS
3835 @vindex lispdir
3836 Searches for the program @command{emacs}, and, if found, sets the
3837 output variable @code{lispdir} to the full path to Emacs' site-lisp
3838 directory.
3840 Note that this test assumes the @command{emacs} found to be a version
3841 that supports Emacs Lisp (such as @sc{gnu} Emacs or XEmacs).  Other
3842 emacsen can cause this test to hang (some, like old versions of
3843 MicroEmacs, start up in interactive mode, requiring @kbd{C-x C-c} to
3844 exit, which is hardly obvious for a non-emacs user).  In most cases,
3845 however, you should be able to use @kbd{C-c} to kill the test.  In
3846 order to avoid problems, you can set @env{EMACS} to ``no'' in the
3847 environment, or use the @option{--with-lispdir} option to
3848 @command{configure} to explicitly set the correct path (if you're sure
3849 you have an @command{emacs} that supports Emacs Lisp).
3851 @item AM_PROG_AS
3852 @acindex AM_PROG_AS
3853 @vindex CCAS
3854 @vindex CCASFLAGS
3855 Use this macro when you have assembly code in your project.  This will
3856 choose the assembler for you (by default the C compiler) and set
3857 @code{CCAS}, and will also set @code{CCASFLAGS} if required.
3859 @item AM_PROG_CC_C_O
3860 @acindex AM_PROG_CC_C_O
3861 @acindex AC_PROG_CC_C_O
3862 This is like @code{AC_PROG_CC_C_O}, but it generates its results in
3863 the manner required by Automake.  You must use this instead of
3864 @code{AC_PROG_CC_C_O} when you need this functionality, that is, when
3865 using per-target flags or subdir-objects with C sources.
3867 @item AM_PROG_LEX
3868 @acindex AM_PROG_LEX
3869 @acindex AC_PROG_LEX
3870 @cindex HP-UX 10, @command{lex} problems
3871 @cindex @command{lex} problems with HP-UX 10
3872 Like @code{AC_PROG_LEX} (@pxref{Particular Programs, , Particular
3873 Program Checks, autoconf, The Autoconf Manual}), but uses the
3874 @command{missing} script on systems that do not have @command{lex}.
3875 HP-UX 10 is one such system.
3877 @item AM_PROG_GCJ
3878 @acindex AM_PROG_GCJ
3879 @vindex GCJ
3880 @vindex GCJFLAGS
3881 This macro finds the @command{gcj} program or causes an error.  It sets
3882 @code{GCJ} and @code{GCJFLAGS}.  @command{gcj} is the Java front-end to the
3883 GNU Compiler Collection.
3885 @item AM_PROG_UPC([@var{compiler-search-list}])
3886 @acindex AM_PROG_UPC
3887 @vindex UPC
3888 Find a compiler for Unified Parallel C and define the @code{UPC}
3889 variable.  The default @var{compiler-search-list} is @samp{upcc upc}.
3890 This macro will abort @command{configure} if no Unified Parallel C
3891 compiler is found.
3893 @item AM_WITH_DMALLOC
3894 @acindex AM_WITH_DMALLOC
3895 @cindex @command{dmalloc}, support for
3896 @vindex WITH_DMALLOC
3897 @opindex --with-dmalloc
3898 Add support for the @uref{http://dmalloc.com/, Dmalloc package}.  If
3899 the user runs @command{configure} with @option{--with-dmalloc}, then
3900 define @code{WITH_DMALLOC} and add @option{-ldmalloc} to @code{LIBS}.
3902 @item AM_WITH_REGEX
3903 @acindex AM_WITH_REGEX
3904 @vindex WITH_REGEX
3905 @opindex --with-regex
3906 @cindex regex package
3907 @cindex rx package
3908 Adds @option{--with-regex} to the @command{configure} command line.  If
3909 specified (the default), then the @samp{regex} regular expression
3910 library is used, @file{regex.o} is put into @code{LIBOBJS}, and
3911 @code{WITH_REGEX} is defined.  If @option{--without-regex} is given, then
3912 the @code{rx} regular expression library is used, and @file{rx.o} is put
3913 into @code{LIBOBJS}.
3915 @end table
3918 @node Obsolete Macros
3919 @subsection Obsolete Macros
3920 @cindex obsolete macros
3921 @cindex autoupdate
3923 Although using some of the following macros was required in past
3924 releases, you should not use any of them in new code.  Running
3925 @command{autoupdate} should adjust your @file{configure.ac}
3926 automatically (@pxref{autoupdate Invocation, , Using
3927 @command{autoupdate} to Modernize @file{configure.ac}, autoconf, The
3928 Autoconf Manual}).
3930 @table @code
3931 @item AM_C_PROTOTYPES
3932 @acindex AM_C_PROTOTYPES
3933 @vindex ANSI2KNR
3934 @vindex U
3935 Check to see if function prototypes are understood by the compiler.  If
3936 so, define @samp{PROTOTYPES} and set the output variables @code{U} and
3937 @code{ANSI2KNR} to the empty string.  Otherwise, set @code{U} to
3938 @samp{_} and @code{ANSI2KNR} to @samp{./ansi2knr}.  Automake uses these
3939 values to implement the obsolete de-ANSI-fication feature.
3941 @item AM_CONFIG_HEADER
3942 @acindex AM_CONFIG_HEADER
3943 Automake will generate rules to automatically regenerate the config
3944 header.  This obsolete macro is a synonym of @code{AC_CONFIG_HEADERS}
3945 today (@pxref{Optional}).
3947 @item AM_HEADER_TIOCGWINSZ_NEEDS_SYS_IOCTL
3948 @acindex AM_HEADER_TIOCGWINSZ_NEEDS_SYS_IOCTL
3949 If the use of @code{TIOCGWINSZ} requires @file{<sys/ioctl.h>}, then
3950 define @code{GWINSZ_IN_SYS_IOCTL}.  Otherwise @code{TIOCGWINSZ} can be
3951 found in @file{<termios.h>}.  This macro is obsolete, you should
3952 use Autoconf's @code{AC_HEADER_TIOCGWINSZ} instead.
3954 @item AM_PROG_MKDIR_P
3955 @acindex AM_PROG_MKDIR_P
3956 @cindex @code{mkdir -p}, macro check
3957 @vindex MKDIR_P
3958 @vindex mkdir_p
3960 From Automake 1.8 to 1.9.6 this macro used to define the output
3961 variable @code{mkdir_p} to one of @code{mkdir -p}, @code{install-sh
3962 -d}, or @code{mkinstalldirs}.
3964 Nowadays Autoconf provides a similar functionality with
3965 @code{AC_PROG_MKDIR_P} (@pxref{Particular Programs, , Particular
3966 Program Checks, autoconf, The Autoconf Manual}), however this defines
3967 the output variable @code{MKDIR_P} instead.  Therefore
3968 @code{AM_PROG_MKDIR_P} has been rewritten as a thin wrapper around
3969 @code{AC_PROG_MKDIR_P} to define @code{mkdir_p} to the same value as
3970 @code{MKDIR_P} for backward compatibility.
3972 If you are using Automake, there is normally no reason to call this
3973 macro, because @code{AM_INIT_AUTOMAKE} already does so.  However, make
3974 sure that the custom rules in your @file{Makefile}s use
3975 @code{$(MKDIR_P)} and not @code{$(mkdir_p)}.  Even if both variables
3976 still work, the latter should be considered obsolete.
3978 If you are not using Automake, please call @code{AC_PROG_MKDIR_P}
3979 instead of @code{AM_PROG_MKDIR_P}.
3981 @item AM_SYS_POSIX_TERMIOS
3982 @acindex AM_SYS_POSIX_TERMIOS
3983 @cindex POSIX termios headers
3984 @cindex termios POSIX headers
3985 Check to see if POSIX termios headers and functions are available on the
3986 system.  If so, set the shell variable @code{am_cv_sys_posix_termios} to
3987 @samp{yes}.  If not, set the variable to @samp{no}.  This macro is obsolete,
3988 you should use Autoconf's @code{AC_SYS_POSIX_TERMIOS} instead.
3990 @end table
3993 @node Private Macros
3994 @subsection Private Macros
3996 The following macros are private macros you should not call directly.
3997 They are called by the other public macros when appropriate.  Do not
3998 rely on them, as they might be changed in a future version.  Consider
3999 them as implementation details; or better, do not consider them at all:
4000 skip this section!
4002 @ftable @code
4003 @item _AM_DEPENDENCIES
4004 @itemx AM_SET_DEPDIR
4005 @itemx AM_DEP_TRACK
4006 @itemx AM_OUTPUT_DEPENDENCY_COMMANDS
4007 These macros are used to implement Automake's automatic dependency
4008 tracking scheme.  They are called automatically by Automake when
4009 required, and there should be no need to invoke them manually.
4011 @item AM_MAKE_INCLUDE
4012 This macro is used to discover how the user's @command{make} handles
4013 @code{include} statements.  This macro is automatically invoked when
4014 needed; there should be no need to invoke it manually.
4016 @item AM_PROG_INSTALL_STRIP
4017 This is used to find a version of @code{install} that can be used to
4018 strip a program at installation time.  This macro is automatically
4019 included when required.
4021 @item AM_SANITY_CHECK
4022 This checks to make sure that a file created in the build directory is
4023 newer than a file in the source directory.  This can fail on systems
4024 where the clock is set incorrectly.  This macro is automatically run
4025 from @code{AM_INIT_AUTOMAKE}.
4027 @end ftable
4030 @node Directories
4031 @chapter Directories
4033 For simple projects that distribute all files in the same directory
4034 it is enough to have a single @file{Makefile.am} that builds
4035 everything in place.
4037 In larger projects it is common to organize files in different
4038 directories, in a tree.  For instance one directory per program, per
4039 library or per module.  The traditional approach is to build these
4040 subdirectories recursively: each directory contains its @file{Makefile}
4041 (generated from @file{Makefile.am}), and when @command{make} is run
4042 from the top level directory it enters each subdirectory in turn to
4043 build its contents.
4045 @menu
4046 * Subdirectories::              Building subdirectories recursively
4047 * Conditional Subdirectories::  Conditionally not building directories
4048 * Alternative::                 Subdirectories without recursion
4049 * Subpackages::                 Nesting packages
4050 @end menu
4052 @node Subdirectories
4053 @section Recursing subdirectories
4055 @cindex @code{SUBDIRS}, explained
4057 In packages with subdirectories, the top level @file{Makefile.am} must
4058 tell Automake which subdirectories are to be built.  This is done via
4059 the @code{SUBDIRS} variable.
4060 @vindex SUBDIRS
4062 The @code{SUBDIRS} variable holds a list of subdirectories in which
4063 building of various sorts can occur.  The rules for many targets
4064 (e.g., @code{all}) in the generated @file{Makefile} will run commands
4065 both locally and in all specified subdirectories.  Note that the
4066 directories listed in @code{SUBDIRS} are not required to contain
4067 @file{Makefile.am}s; only @file{Makefile}s (after configuration).
4068 This allows inclusion of libraries from packages that do not use
4069 Automake (such as @code{gettext}; see also @ref{Third-Party
4070 Makefiles}).
4072 In packages that use subdirectories, the top-level @file{Makefile.am} is
4073 often very short.  For instance, here is the @file{Makefile.am} from the
4074 GNU Hello distribution:
4076 @example
4077 EXTRA_DIST = BUGS ChangeLog.O README-alpha
4078 SUBDIRS = doc intl po src tests
4079 @end example
4081 When Automake invokes @command{make} in a subdirectory, it uses the value
4082 of the @code{MAKE} variable.  It passes the value of the variable
4083 @code{AM_MAKEFLAGS} to the @command{make} invocation; this can be set in
4084 @file{Makefile.am} if there are flags you must always pass to
4085 @command{make}.
4086 @vindex MAKE
4087 @vindex AM_MAKEFLAGS
4089 The directories mentioned in @code{SUBDIRS} are usually direct
4090 children of the current directory, each subdirectory containing its
4091 own @file{Makefile.am} with a @code{SUBDIRS} pointing to deeper
4092 subdirectories.  Automake can be used to construct packages of
4093 arbitrary depth this way.
4095 By default, Automake generates @file{Makefiles} that work depth-first
4096 in postfix order: the subdirectories are built before the current
4097 directory.  However, it is possible to change this ordering.  You can
4098 do this by putting @samp{.} into @code{SUBDIRS}.  For instance,
4099 putting @samp{.} first will cause a prefix ordering of
4100 directories.
4102 Using
4104 @example
4105 SUBDIRS = lib src . test
4106 @end example
4108 @noindent
4109 will cause @file{lib/} to be built before @file{src/}, then the
4110 current directory will be built, finally the @file{test/} directory
4111 will be built.  It is customary to arrange test directories to be
4112 built after everything else since they are meant to test what has
4113 been constructed.
4115 All @code{clean} rules are run in reverse order of build rules.
4117 @node Conditional Subdirectories
4118 @section Conditional Subdirectories
4119 @cindex Subdirectories, building conditionally
4120 @cindex Conditional subdirectories
4121 @cindex @code{SUBDIRS}, conditional
4122 @cindex Conditional @code{SUBDIRS}
4124 It is possible to define the @code{SUBDIRS} variable conditionally if,
4125 like in the case of GNU Inetutils, you want to only build a subset of
4126 the entire package.
4128 To illustrate how this works, let's assume we have two directories
4129 @file{src/} and @file{opt/}.  @file{src/} should always be built, but we
4130 want to decide in @command{configure} whether @file{opt/} will be built
4131 or not.  (For this example we will assume that @file{opt/} should be
4132 built when the variable @samp{$want_opt} was set to @samp{yes}.)
4134 Running @command{make} should thus recurse into @file{src/} always, and
4135 then maybe in @file{opt/}.
4137 However @samp{make dist} should always recurse into both @file{src/}
4138 and @file{opt/}.  Because @file{opt/} should be distributed even if it
4139 is not needed in the current configuration.  This means
4140 @file{opt/Makefile} should be created @emph{unconditionally}.
4142 There are two ways to setup a project like this.  You can use Automake
4143 conditionals (@pxref{Conditionals}) or use Autoconf @code{AC_SUBST}
4144 variables (@pxref{Setting Output Variables, , Setting Output
4145 Variables, autoconf, The Autoconf Manual}).  Using Automake
4146 conditionals is the preferred solution.  Before we illustrate these
4147 two possibilities, let's introduce @code{DIST_SUBDIRS}.
4149 @menu
4150 * SUBDIRS vs DIST_SUBDIRS::     Two sets of directories
4151 * Subdirectories with AM_CONDITIONAL::  Specifying conditional subdirectories
4152 * Subdirectories with AC_SUBST::  Another way for conditional recursion
4153 * Unconfigured Subdirectories::  Not even creating a @samp{Makefile}
4154 @end menu
4156 @node SUBDIRS vs DIST_SUBDIRS
4157 @subsection @code{SUBDIRS} vs.@: @code{DIST_SUBDIRS}
4158 @cindex @code{DIST_SUBDIRS}, explained
4160 Automake considers two sets of directories, defined by the variables
4161 @code{SUBDIRS} and @code{DIST_SUBDIRS}.
4163 @code{SUBDIRS} contains the subdirectories of the current directory
4164 that must be built (@pxref{Subdirectories}).  It must be defined
4165 manually; Automake will never guess a directory is to be built.  As we
4166 will see in the next two sections, it is possible to define it
4167 conditionally so that some directory will be omitted from the build.
4169 @code{DIST_SUBDIRS} is used in rules that need to recurse in all
4170 directories, even those that have been conditionally left out of the
4171 build.  Recall our example where we may not want to build subdirectory
4172 @file{opt/}, but yet we want to distribute it?  This is where
4173 @code{DIST_SUBDIRS} comes into play: @samp{opt} may not appear in
4174 @code{SUBDIRS}, but it must appear in @code{DIST_SUBDIRS}.
4176 Precisely, @code{DIST_SUBDIRS} is used by @samp{make
4177 maintainer-clean}, @samp{make distclean} and @samp{make dist}.  All
4178 other recursive rules use @code{SUBDIRS}.
4180 If @code{SUBDIRS} is defined conditionally using Automake
4181 conditionals, Automake will define @code{DIST_SUBDIRS} automatically
4182 from the possible values of @code{SUBDIRS} in all conditions.
4184 If @code{SUBDIRS} contains @code{AC_SUBST} variables,
4185 @code{DIST_SUBDIRS} will not be defined correctly because Automake
4186 does not know the possible values of these variables.  In this case
4187 @code{DIST_SUBDIRS} needs to be defined manually.
4189 @node Subdirectories with AM_CONDITIONAL
4190 @subsection Subdirectories with @code{AM_CONDITIONAL}
4191 @cindex @code{SUBDIRS} and @code{AM_CONDITIONAL}
4192 @cindex @code{AM_CONDITIONAL} and @code{SUBDIRS}
4194 @c The test case for the setup described here is
4195 @c     test/subdircond2.test
4196 @c Try to keep it in sync.
4198 @file{configure} should output the @file{Makefile} for each directory
4199 and define a condition into which @file{opt/} should be built.
4201 @example
4202 @dots{}
4203 AM_CONDITIONAL([COND_OPT], [test "$want_opt" = yes])
4204 AC_CONFIG_FILES([Makefile src/Makefile opt/Makefile])
4205 @dots{}
4206 @end example
4208 Then @code{SUBDIRS} can be defined in the top-level @file{Makefile.am}
4209 as follows.
4211 @example
4212 if COND_OPT
4213   MAYBE_OPT = opt
4214 endif
4215 SUBDIRS = src $(MAYBE_OPT)
4216 @end example
4218 As you can see, running @command{make} will rightly recurse into
4219 @file{src/} and maybe @file{opt/}.
4221 @vindex DIST_SUBDIRS
4222 As you can't see, running @samp{make dist} will recurse into both
4223 @file{src/} and @file{opt/} directories because @samp{make dist}, unlike
4224 @samp{make all}, doesn't use the @code{SUBDIRS} variable.  It uses the
4225 @code{DIST_SUBDIRS} variable.
4227 In this case Automake will define @samp{DIST_SUBDIRS = src opt}
4228 automatically because it knows that @code{MAYBE_OPT} can contain
4229 @samp{opt} in some condition.
4231 @node Subdirectories with AC_SUBST
4232 @subsection Subdirectories with @code{AC_SUBST}
4233 @cindex @code{SUBDIRS} and @code{AC_SUBST}
4234 @cindex @code{AC_SUBST} and @code{SUBDIRS}
4236 @c The test case for the setup described here is
4237 @c     test/subdircond3.test
4238 @c Try to keep it in sync.
4240 Another possibility is to define @code{MAYBE_OPT} from
4241 @file{./configure} using @code{AC_SUBST}:
4243 @example
4244 @dots{}
4245 if test "$want_opt" = yes; then
4246   MAYBE_OPT=opt
4247 else
4248   MAYBE_OPT=
4250 AC_SUBST([MAYBE_OPT])
4251 AC_CONFIG_FILES([Makefile src/Makefile opt/Makefile])
4252 @dots{}
4253 @end example
4255 In this case the top-level @file{Makefile.am} should look as follows.
4257 @example
4258 SUBDIRS = src $(MAYBE_OPT)
4259 DIST_SUBDIRS = src opt
4260 @end example
4262 The drawback is that since Automake cannot guess what the possible
4263 values of @code{MAYBE_OPT} are, it is necessary to define
4264 @code{DIST_SUBDIRS}.
4266 @node Unconfigured Subdirectories
4267 @subsection Unconfigured Subdirectories
4268 @cindex Subdirectories, configured conditionally
4270 The semantics of @code{DIST_SUBDIRS} are often misunderstood by some
4271 users that try to @emph{configure and build} subdirectories
4272 conditionally.  Here by configuring we mean creating the
4273 @file{Makefile} (it might also involve running a nested
4274 @command{configure} script: this is a costly operation that explains
4275 why people want to do it conditionally, but only the @file{Makefile}
4276 is relevant to the discussion).
4278 The above examples all assume that every @file{Makefile} is created,
4279 even in directories that are not going to be built.  The simple reason
4280 is that we want @samp{make dist} to distribute even the directories
4281 that are not being built (e.g., platform-dependent code), hence
4282 @file{make dist} must recurse into the subdirectory, hence this
4283 directory must be configured and appear in @code{DIST_SUBDIRS}.
4285 Building packages that do not configure every subdirectory is a tricky
4286 business, and we do not recommend it to the novice as it is easy to
4287 produce an incomplete tarball by mistake.  We will not discuss this
4288 topic in depth here, yet for the adventurous here are a few rules to
4289 remember.
4291 @cartouche
4292 @itemize
4293 @item @code{SUBDIRS} should always be a subset of @code{DIST_SUBDIRS}.
4295 It makes little sense to have a directory in @code{SUBDIRS} that
4296 is not in @code{DIST_SUBDIRS}.  Think of the former as a way to tell
4297 which directories listed in the latter should be built.
4298 @item Any directory listed in @code{DIST_SUBDIRS} and @code{SUBDIRS}
4299 must be configured.
4301 I.e., the @file{Makefile} must exists or the recursive @command{make}
4302 rules will not be able to process the directory.
4303 @item Any configured directory must be listed in @code{DIST_SUBDIRS}.
4305 So that the cleaning rules remove the generated @file{Makefile}s.
4306 It would be correct to see @code{DIST_SUBDIRS} as a variable that
4307 lists all the directories that have been configured.
4308 @end itemize
4309 @end cartouche
4311 In order to prevent recursion in some unconfigured directory you
4312 must therefore ensure that this directory does not appear in
4313 @code{DIST_SUBDIRS} (and @code{SUBDIRS}).  For instance, if you define
4314 @code{SUBDIRS} conditionally using @code{AC_SUBST} and do not define
4315 @code{DIST_SUBDIRS} explicitly, it will be default to
4316 @samp{$(SUBDIRS)}; another possibility is to force @code{DIST_SUBDIRS
4317 = $(SUBDIRS)}.
4319 Of course, directories that are omitted from @code{DIST_SUBDIRS} will
4320 not be distributed unless you make other arrangements for this to
4321 happen (for instance, always running @samp{make dist} in a
4322 configuration where all directories are known to appear in
4323 @code{DIST_SUBDIRS}; or writing a @code{dist-hook} target to
4324 distribute these directories).
4326 @cindex Subdirectories, not distributed
4327 In few packages, unconfigured directories are not even expected to
4328 be distributed.  Although these packages do not require the
4329 aforementioned extra arrangements, there is another pitfall.  If the
4330 name of a directory appears in @code{SUBDIRS} or @code{DIST_SUBDIRS},
4331 @command{automake} will make sure the directory exists.  Consequently
4332 @command{automake} cannot be run on such a distribution when one
4333 directory has been omitted.  One way to avoid this check is to use the
4334 @code{AC_SUBST} method to declare conditional directories; since
4335 @command{automake} does not know the values of @code{AC_SUBST}
4336 variables it cannot ensure the corresponding directory exists.
4338 @node Alternative
4339 @section An Alternative Approach to Subdirectories
4341 If you've ever read Peter Miller's excellent paper,
4342 @uref{http://www.pcug.org.au/~millerp/rmch/recu-make-cons-harm.html,
4343 Recursive Make Considered Harmful}, the preceding sections on the use of
4344 subdirectories will probably come as unwelcome advice.  For those who
4345 haven't read the paper, Miller's main thesis is that recursive
4346 @command{make} invocations are both slow and error-prone.
4348 Automake provides sufficient cross-directory support @footnote{We
4349 believe.  This work is new and there are probably warts.
4350 @xref{Introduction}, for information on reporting bugs.} to enable you
4351 to write a single @file{Makefile.am} for a complex multi-directory
4352 package.
4355 By default an installable file specified in a subdirectory will have its
4356 directory name stripped before installation.  For instance, in this
4357 example, the header file will be installed as
4358 @file{$(includedir)/stdio.h}:
4360 @example
4361 include_HEADERS = inc/stdio.h
4362 @end example
4364 @vindex nobase_
4365 @cindex @code{nobase_} prefix
4366 @cindex Path stripping, avoiding
4367 @cindex Avoiding path stripping
4369 However, the @samp{nobase_} prefix can be used to circumvent this path
4370 stripping.  In this example, the header file will be installed as
4371 @file{$(includedir)/sys/types.h}:
4373 @example
4374 nobase_include_HEADERS = sys/types.h
4375 @end example
4377 @cindex @code{nobase_} and @code{dist_} or @code{nodist_}
4378 @cindex @code{dist_} and @code{nobase_}
4379 @cindex @code{nodist_} and @code{nobase_}
4380 @vindex dist_
4381 @vindex nodist_
4383 @samp{nobase_} should be specified first when used in conjunction with
4384 either @samp{dist_} or @samp{nodist_} (@pxref{Fine-grained Distribution
4385 Control}).  For instance:
4387 @example
4388 nobase_dist_pkgdata_DATA = images/vortex.pgm sounds/whirl.ogg
4389 @end example
4391 Finally, note that a variable using the @samp{nobase_} prefix can
4392 often be replaced by several variables, one for each destination
4393 directory (@pxref{Uniform}).  For instance, the last example could be
4394 rewritten as follows:
4396 @example
4397 imagesdir = $(pkgdatadir)/images
4398 soundsdir = $(pkgdatadir)/sounds
4399 dist_images_DATA = images/vortex.pgm
4400 dist_sounds_DATA = sounds/whirl.ogg
4401 @end example
4403 @noindent
4404 This latter syntax makes it possible to change one destination
4405 directory without changing the layout of the source tree.
4407 Currently, @samp{nobase_*_LTLIBRARIES} are the only exception to this
4408 rule, in that there is no particular installation order guarantee for
4409 an otherwise equivalent set of variables without @samp{nobase_} prefix.
4411 @node Subpackages
4412 @section Nesting Packages
4413 @cindex Nesting packages
4414 @cindex Subpackages
4415 @acindex AC_CONFIG_SUBDIRS
4416 @acindex AC_CONFIG_AUX_DIR
4419 In the GNU Build System, packages can be nested to arbitrary depth.
4420 This means that a package can embed other packages with their own
4421 @file{configure}, @file{Makefile}s, etc.
4423 These other packages should just appear as subdirectories of their
4424 parent package.  They must be listed in @code{SUBDIRS} like other
4425 ordinary directories.  However the subpackage's @file{Makefile}s
4426 should be output by its own @file{configure} script, not by the
4427 parent's @file{configure}.  This is achieved using the
4428 @code{AC_CONFIG_SUBDIRS} Autoconf macro (@pxref{Subdirectories,
4429 AC_CONFIG_SUBDIRS, Configuring Other Packages in Subdirectories,
4430 autoconf, The Autoconf Manual}).
4432 Here is an example package for an @code{arm} program that links with
4433 an @code{hand} library that is a nested package in subdirectory
4434 @file{hand/}.
4436 @code{arm}'s @file{configure.ac}:
4438 @example
4439 AC_INIT([arm], [1.0])
4440 AC_CONFIG_AUX_DIR([.])
4441 AM_INIT_AUTOMAKE
4442 AC_PROG_CC
4443 AC_CONFIG_FILES([Makefile])
4444 # Call hand's ./configure script recursively.
4445 AC_CONFIG_SUBDIRS([hand])
4446 AC_OUTPUT
4447 @end example
4449 @code{arm}'s @file{Makefile.am}:
4451 @example
4452 # Build the library in the hand subdirectory first.
4453 SUBDIRS = hand
4455 # Include hand's header when compiling this directory.
4456 AM_CPPFLAGS = -I$(srcdir)/hand
4458 bin_PROGRAMS = arm
4459 arm_SOURCES = arm.c
4460 # link with the hand library.
4461 arm_LDADD = hand/libhand.a
4462 @end example
4464 Now here is @code{hand}'s @file{hand/configure.ac}:
4466 @example
4467 AC_INIT([hand], [1.2])
4468 AC_CONFIG_AUX_DIR([.])
4469 AM_INIT_AUTOMAKE
4470 AC_PROG_CC
4471 AC_PROG_RANLIB
4472 AC_CONFIG_FILES([Makefile])
4473 AC_OUTPUT
4474 @end example
4476 @noindent
4477 and its @file{hand/Makefile.am}:
4479 @example
4480 lib_LIBRARIES = libhand.a
4481 libhand_a_SOURCES = hand.c
4482 @end example
4484 When @samp{make dist} is run from the top-level directory it will
4485 create an archive @file{arm-1.0.tar.gz} that contains the @code{arm}
4486 code as well as the @file{hand} subdirectory.  This package can be
4487 built and installed like any ordinary package, with the usual
4488 @samp{./configure && make && make install} sequence (the @code{hand}
4489 subpackage will be built and installed by the process).
4491 When @samp{make dist} is run from the hand directory, it will create a
4492 self-contained @file{hand-1.2.tar.gz} archive.  So although it appears
4493 to be embedded in another package, it can still be used separately.
4495 The purpose of the @samp{AC_CONFIG_AUX_DIR([.])} instruction is to
4496 force Automake and Autoconf to search for auxiliary scripts in the
4497 current directory.  For instance, this means that there will be two
4498 copies of @file{install-sh}: one in the top-level of the @code{arm}
4499 package, and another one in the @file{hand/} subdirectory for the
4500 @code{hand} package.
4502 The historical default is to search for these auxiliary scripts in
4503 the parent directory and the grandparent directory.  So if the
4504 @samp{AC_CONFIG_AUX_DIR([.])} line was removed from
4505 @file{hand/configure.ac}, that subpackage would share the auxiliary
4506 script of the @code{arm} package.  This may looks like a gain in size
4507 (a few kilobytes), but it is actually a loss of modularity as the
4508 @code{hand} subpackage is no longer self-contained (@samp{make dist}
4509 in the subdirectory will not work anymore).
4511 Packages that do not use Automake need more work to be integrated this
4512 way.  @xref{Third-Party Makefiles}.
4514 @node Programs
4515 @chapter Building Programs and Libraries
4517 A large part of Automake's functionality is dedicated to making it easy
4518 to build programs and libraries.
4520 @menu
4521 * A Program::                   Building a program
4522 * A Library::                   Building a library
4523 * A Shared Library::            Building a Libtool library
4524 * Program and Library Variables::  Variables controlling program and
4525                                 library builds
4526 * Default _SOURCES::            Default source files
4527 * LIBOBJS::                     Special handling for LIBOBJS and ALLOCA
4528 * Program Variables::           Variables used when building a program
4529 * Yacc and Lex::                Yacc and Lex support
4530 * C++ Support::                 Compiling C++ sources
4531 * Objective C Support::         Compiling Objective C sources
4532 * Unified Parallel C Support::  Compiling Unified Parallel C sources
4533 * Assembly Support::            Compiling assembly sources
4534 * Fortran 77 Support::          Compiling Fortran 77 sources
4535 * Fortran 9x Support::          Compiling Fortran 9x sources
4536 * Java Support::                Compiling Java sources
4537 * Vala Support::                Compiling Vala sources
4538 * Support for Other Languages::  Compiling other languages
4539 * ANSI::                        Automatic de-ANSI-fication (obsolete)
4540 * Dependencies::                Automatic dependency tracking
4541 * EXEEXT::                      Support for executable extensions
4542 @end menu
4545 @node A Program
4546 @section Building a program
4548 In order to build a program, you need to tell Automake which sources
4549 are part of it, and which libraries it should be linked with.
4551 This section also covers conditional compilation of sources or
4552 programs.  Most of the comments about these also apply to libraries
4553 (@pxref{A Library}) and libtool libraries (@pxref{A Shared Library}).
4555 @menu
4556 * Program Sources::             Defining program sources
4557 * Linking::                     Linking with libraries or extra objects
4558 * Conditional Sources::         Handling conditional sources
4559 * Conditional Programs::        Building a program conditionally
4560 @end menu
4562 @node Program Sources
4563 @subsection Defining program sources
4565 @cindex @code{PROGRAMS}, @code{bindir}
4566 @vindex _PROGRAMS
4567 @vindex bin_PROGRAMS
4568 @vindex sbin_PROGRAMS
4569 @vindex libexec_PROGRAMS
4570 @vindex pkglib_PROGRAMS
4571 @vindex noinst_PROGRAMS
4572 @vindex check_PROGRAMS
4574 In a directory containing source that gets built into a program (as
4575 opposed to a library or a script), the @code{PROGRAMS} primary is used.
4576 Programs can be installed in @code{bindir}, @code{sbindir},
4577 @code{libexecdir}, @code{pkglibdir}, @code{pkglibexecdir}, or not at all
4578 (@code{noinst_}).  They can also be built only for @samp{make check}, in
4579 which case the prefix is @samp{check_}.
4581 For instance:
4583 @example
4584 bin_PROGRAMS = hello
4585 @end example
4587 In this simple case, the resulting @file{Makefile.in} will contain code
4588 to generate a program named @code{hello}.
4590 Associated with each program are several assisting variables that are
4591 named after the program.  These variables are all optional, and have
4592 reasonable defaults.  Each variable, its use, and default is spelled out
4593 below; we use the ``hello'' example throughout.
4595 The variable @code{hello_SOURCES} is used to specify which source files
4596 get built into an executable:
4598 @example
4599 hello_SOURCES = hello.c version.c getopt.c getopt1.c getopt.h system.h
4600 @end example
4602 This causes each mentioned @file{.c} file to be compiled into the
4603 corresponding @file{.o}.  Then all are linked to produce @file{hello}.
4605 @cindex @code{_SOURCES} primary, defined
4606 @cindex @code{SOURCES} primary, defined
4607 @cindex Primary variable, @code{SOURCES}
4608 @vindex _SOURCES
4610 If @code{hello_SOURCES} is not specified, then it defaults to the single
4611 file @file{hello.c} (@pxref{Default _SOURCES}).
4612 @vindex _SOURCES
4613 @vindex SOURCES
4615 Multiple programs can be built in a single directory.  Multiple programs
4616 can share a single source file, which must be listed in each
4617 @code{_SOURCES} definition.
4619 @cindex Header files in @code{_SOURCES}
4620 @cindex @code{_SOURCES} and header files
4622 Header files listed in a @code{_SOURCES} definition will be included in
4623 the distribution but otherwise ignored.  In case it isn't obvious, you
4624 should not include the header file generated by @file{configure} in a
4625 @code{_SOURCES} variable; this file should not be distributed.  Lex
4626 (@file{.l}) and Yacc (@file{.y}) files can also be listed; see @ref{Yacc
4627 and Lex}.
4630 @node Linking
4631 @subsection Linking the program
4633 If you need to link against libraries that are not found by
4634 @command{configure}, you can use @code{LDADD} to do so.  This variable is
4635 used to specify additional objects or libraries to link with; it is
4636 inappropriate for specifying specific linker flags, you should use
4637 @code{AM_LDFLAGS} for this purpose.
4638 @vindex LDADD
4639 @vindex AM_LDFLAGS
4641 @cindex @code{prog_LDADD}, defined
4643 Sometimes, multiple programs are built in one directory but do not share
4644 the same link-time requirements.  In this case, you can use the
4645 @code{@var{prog}_LDADD} variable (where @var{prog} is the name of the
4646 program as it appears in some @code{_PROGRAMS} variable, and usually
4647 written in lowercase) to override @code{LDADD}.  If this variable exists
4648 for a given program, then that program is not linked using @code{LDADD}.
4649 @vindex maude_LDADD
4651 For instance, in GNU cpio, @code{pax}, @code{cpio} and @code{mt} are
4652 linked against the library @file{libcpio.a}.  However, @code{rmt} is
4653 built in the same directory, and has no such link requirement.  Also,
4654 @code{mt} and @code{rmt} are only built on certain architectures.  Here
4655 is what cpio's @file{src/Makefile.am} looks like (abridged):
4657 @example
4658 bin_PROGRAMS = cpio pax $(MT)
4659 libexec_PROGRAMS = $(RMT)
4660 EXTRA_PROGRAMS = mt rmt
4662 LDADD = ../lib/libcpio.a $(INTLLIBS)
4663 rmt_LDADD =
4665 cpio_SOURCES = @dots{}
4666 pax_SOURCES = @dots{}
4667 mt_SOURCES = @dots{}
4668 rmt_SOURCES = @dots{}
4669 @end example
4671 @cindex @code{_LDFLAGS}, defined
4672 @vindex maude_LDFLAGS
4673 @code{@var{prog}_LDADD} is inappropriate for passing program-specific
4674 linker flags (except for @option{-l}, @option{-L}, @option{-dlopen} and
4675 @option{-dlpreopen}).  So, use the @code{@var{prog}_LDFLAGS} variable for
4676 this purpose.
4678 @cindex @code{_DEPENDENCIES}, defined
4679 @vindex maude_DEPENDENCIES
4680 It is also occasionally useful to have a program depend on some other
4681 target that is not actually part of that program.  This can be done
4682 using the @code{@var{prog}_DEPENDENCIES} variable.  Each program
4683 depends on the contents of such a variable, but no further
4684 interpretation is done.
4686 Since these dependencies are associated to the link rule used to
4687 create the programs they should normally list files used by the link
4688 command.  That is @file{*.$(OBJEXT)}, @file{*.a}, or @file{*.la}
4689 files.  In rare cases you may need to add other kinds of files such as
4690 linker scripts, but @emph{listing a source file in
4691 @code{_DEPENDENCIES} is wrong}.  If some source file needs to be built
4692 before all the components of a program are built, consider using the
4693 @code{BUILT_SOURCES} variable instead (@pxref{Sources}).
4695 If @code{@var{prog}_DEPENDENCIES} is not supplied, it is computed by
4696 Automake.  The automatically-assigned value is the contents of
4697 @code{@var{prog}_LDADD}, with most configure substitutions, @option{-l},
4698 @option{-L}, @option{-dlopen} and @option{-dlpreopen} options removed.  The
4699 configure substitutions that are left in are only @samp{$(LIBOBJS)} and
4700 @samp{$(ALLOCA)}; these are left because it is known that they will not
4701 cause an invalid value for @code{@var{prog}_DEPENDENCIES} to be
4702 generated.
4704 @ref{Conditional Sources} shows a situation where @code{_DEPENDENCIES}
4705 may be used.
4707 @cindex @code{LDADD} and @option{-l}
4708 @cindex @option{-l} and @code{LDADD}
4709 We recommend that you avoid using @option{-l} options in @code{LDADD}
4710 or @code{@var{prog}_LDADD} when referring to libraries built by your
4711 package.  Instead, write the file name of the library explicitly as in
4712 the above @code{cpio} example.  Use @option{-l} only to list
4713 third-party libraries.  If you follow this rule, the default value of
4714 @code{@var{prog}_DEPENDENCIES} will list all your local libraries and
4715 omit the other ones.
4718 @node Conditional Sources
4719 @subsection Conditional compilation of sources
4721 You can't put a configure substitution (e.g., @samp{@@FOO@@} or
4722 @samp{$(FOO)} where @code{FOO} is defined via @code{AC_SUBST}) into a
4723 @code{_SOURCES} variable.  The reason for this is a bit hard to
4724 explain, but suffice to say that it simply won't work.  Automake will
4725 give an error if you try to do this.
4727 Fortunately there are two other ways to achieve the same result.  One is
4728 to use configure substitutions in @code{_LDADD} variables, the other is
4729 to use an Automake conditional.
4731 @subsubheading Conditional Compilation using @code{_LDADD} Substitutions
4733 @cindex @code{EXTRA_prog_SOURCES}, defined
4735 Automake must know all the source files that could possibly go into a
4736 program, even if not all the files are built in every circumstance.  Any
4737 files that are only conditionally built should be listed in the
4738 appropriate @code{EXTRA_} variable.  For instance, if
4739 @file{hello-linux.c} or @file{hello-generic.c} were conditionally included
4740 in @code{hello}, the @file{Makefile.am} would contain:
4742 @example
4743 bin_PROGRAMS = hello
4744 hello_SOURCES = hello-common.c
4745 EXTRA_hello_SOURCES = hello-linux.c hello-generic.c
4746 hello_LDADD = $(HELLO_SYSTEM)
4747 hello_DEPENDENCIES = $(HELLO_SYSTEM)
4748 @end example
4750 @noindent
4751 You can then setup the @samp{$(HELLO_SYSTEM)} substitution from
4752 @file{configure.ac}:
4754 @example
4755 @dots{}
4756 case $host in
4757   *linux*) HELLO_SYSTEM='hello-linux.$(OBJEXT)' ;;
4758   *)       HELLO_SYSTEM='hello-generic.$(OBJEXT)' ;;
4759 esac
4760 AC_SUBST([HELLO_SYSTEM])
4761 @dots{}
4762 @end example
4764 In this case, the variable @code{HELLO_SYSTEM} should be replaced by
4765 either @file{hello-linux.o} or @file{hello-generic.o}, and added to
4766 both @code{hello_DEPENDENCIES} and @code{hello_LDADD} in order to be
4767 built and linked in.
4769 @subsubheading Conditional Compilation using Automake Conditionals
4771 An often simpler way to compile source files conditionally is to use
4772 Automake conditionals.  For instance, you could use this
4773 @file{Makefile.am} construct to build the same @file{hello} example:
4775 @example
4776 bin_PROGRAMS = hello
4777 if LINUX
4778 hello_SOURCES = hello-linux.c hello-common.c
4779 else
4780 hello_SOURCES = hello-generic.c hello-common.c
4781 endif
4782 @end example
4784 In this case, @file{configure.ac} should setup the @code{LINUX}
4785 conditional using @code{AM_CONDITIONAL} (@pxref{Conditionals}).
4787 When using conditionals like this you don't need to use the
4788 @code{EXTRA_} variable, because Automake will examine the contents of
4789 each variable to construct the complete list of source files.
4791 If your program uses a lot of files, you will probably prefer a
4792 conditional @samp{+=}.
4794 @example
4795 bin_PROGRAMS = hello
4796 hello_SOURCES = hello-common.c
4797 if LINUX
4798 hello_SOURCES += hello-linux.c
4799 else
4800 hello_SOURCES += hello-generic.c
4801 endif
4802 @end example
4804 @node Conditional Programs
4805 @subsection Conditional compilation of programs
4806 @cindex Conditional programs
4807 @cindex Programs, conditional
4809 Sometimes it is useful to determine the programs that are to be built
4810 at configure time.  For instance, GNU @code{cpio} only builds
4811 @code{mt} and @code{rmt} under special circumstances.  The means to
4812 achieve conditional compilation of programs are the same you can use
4813 to compile source files conditionally: substitutions or conditionals.
4815 @subsubheading Conditional Programs using @command{configure} Substitutions
4817 @vindex EXTRA_PROGRAMS
4818 @cindex @code{EXTRA_PROGRAMS}, defined
4819 In this case, you must notify Automake of all the programs that can
4820 possibly be built, but at the same time cause the generated
4821 @file{Makefile.in} to use the programs specified by @command{configure}.
4822 This is done by having @command{configure} substitute values into each
4823 @code{_PROGRAMS} definition, while listing all optionally built programs
4824 in @code{EXTRA_PROGRAMS}.
4826 @example
4827 bin_PROGRAMS = cpio pax $(MT)
4828 libexec_PROGRAMS = $(RMT)
4829 EXTRA_PROGRAMS = mt rmt
4830 @end example
4832 As explained in @ref{EXEEXT}, Automake will rewrite
4833 @code{bin_PROGRAMS}, @code{libexec_PROGRAMS}, and
4834 @code{EXTRA_PROGRAMS}, appending @samp{$(EXEEXT)} to each binary.
4835 Obviously it cannot rewrite values obtained at run-time through
4836 @command{configure} substitutions, therefore you should take care of
4837 appending @samp{$(EXEEXT)} yourself, as in @samp{AC_SUBST([MT],
4838 ['mt$@{EXEEXT@}'])}.
4840 @subsubheading Conditional Programs using Automake Conditionals
4842 You can also use Automake conditionals (@pxref{Conditionals}) to
4843 select programs to be built.  In this case you don't have to worry
4844 about @samp{$(EXEEXT)} or @code{EXTRA_PROGRAMS}.
4846 @example
4847 bin_PROGRAMS = cpio pax
4848 if WANT_MT
4849   bin_PROGRAMS += mt
4850 endif
4851 if WANT_RMT
4852   libexec_PROGRAMS = rmt
4853 endif
4854 @end example
4857 @node A Library
4858 @section Building a library
4860 @cindex @code{_LIBRARIES} primary, defined
4861 @cindex @code{LIBRARIES} primary, defined
4862 @cindex Primary variable, @code{LIBRARIES}
4863 @vindex _LIBRARIES
4865 @vindex lib_LIBRARIES
4866 @vindex pkglib_LIBRARIES
4867 @vindex noinst_LIBRARIES
4869 Building a library is much like building a program.  In this case, the
4870 name of the primary is @code{LIBRARIES}.  Libraries can be installed in
4871 @code{libdir} or @code{pkglibdir}.
4873 @xref{A Shared Library}, for information on how to build shared
4874 libraries using libtool and the @code{LTLIBRARIES} primary.
4876 Each @code{_LIBRARIES} variable is a list of the libraries to be built.
4877 For instance, to create a library named @file{libcpio.a}, but not install
4878 it, you would write:
4880 @example
4881 noinst_LIBRARIES = libcpio.a
4882 libcpio_a_SOURCES = @dots{}
4883 @end example
4885 The sources that go into a library are determined exactly as they are
4886 for programs, via the @code{_SOURCES} variables.  Note that the library
4887 name is canonicalized (@pxref{Canonicalization}), so the @code{_SOURCES}
4888 variable corresponding to @file{libcpio.a} is @samp{libcpio_a_SOURCES},
4889 not @samp{libcpio.a_SOURCES}.
4891 @vindex maude_LIBADD
4892 Extra objects can be added to a library using the
4893 @code{@var{library}_LIBADD} variable.  This should be used for objects
4894 determined by @command{configure}.  Again from @code{cpio}:
4896 @example
4897 libcpio_a_LIBADD = $(LIBOBJS) $(ALLOCA)
4898 @end example
4900 In addition, sources for extra objects that will not exist until
4901 configure-time must be added to the @code{BUILT_SOURCES} variable
4902 (@pxref{Sources}).
4904 Building a static library is done by compiling all object files, then
4905 by invoking @samp{$(AR) $(ARFLAGS)} followed by the name of the
4906 library and the list of objects, and finally by calling
4907 @samp{$(RANLIB)} on that library.  You should call
4908 @code{AC_PROG_RANLIB} from your @file{configure.ac} to define
4909 @code{RANLIB} (Automake will complain otherwise).  @code{AR} and
4910 @code{ARFLAGS} default to @code{ar} and @code{cru} respectively; you
4911 can override these two variables my setting them in your
4912 @file{Makefile.am}, by @code{AC_SUBST}ing them from your
4913 @file{configure.ac}, or by defining a per-library @code{maude_AR}
4914 variable (@pxref{Program and Library Variables}).
4916 @cindex Empty libraries
4917 Be careful when selecting library components conditionally.  Because
4918 building an empty library is not portable, you should ensure that any
4919 library always contains at least one object.
4921 To use a static library when building a program, add it to
4922 @code{LDADD} for this program.  In the following example, the program
4923 @file{cpio} is statically linked with the library @file{libcpio.a}.
4925 @example
4926 noinst_LIBRARIES = libcpio.a
4927 libcpio_a_SOURCES = @dots{}
4929 bin_PROGRAMS = cpio
4930 cpio_SOURCES = cpio.c @dots{}
4931 cpio_LDADD = libcpio.a
4932 @end example
4935 @node A Shared Library
4936 @section Building a Shared Library
4938 @cindex Shared libraries, support for
4940 Building shared libraries portably is a relatively complex matter.
4941 For this reason, GNU Libtool (@pxref{Top, , Introduction, libtool, The
4942 Libtool Manual}) was created to help build shared libraries in a
4943 platform-independent way.
4945 @menu
4946 * Libtool Concept::             Introducing Libtool
4947 * Libtool Libraries::           Declaring Libtool Libraries
4948 * Conditional Libtool Libraries::  Building Libtool Libraries Conditionally
4949 * Conditional Libtool Sources::  Choosing Library Sources Conditionally
4950 * Libtool Convenience Libraries::  Building Convenience Libtool Libraries
4951 * Libtool Modules::             Building Libtool Modules
4952 * Libtool Flags::               Using _LIBADD, _LDFLAGS, and _LIBTOOLFLAGS
4953 * LTLIBOBJS::                   Using $(LTLIBOBJS) and $(LTALLOCA)
4954 * Libtool Issues::              Common Issues Related to Libtool's Use
4955 @end menu
4957 @node Libtool Concept
4958 @subsection The Libtool Concept
4960 @cindex @command{libtool}, introduction
4961 @cindex libtool library, definition
4962 @cindex suffix @file{.la}, defined
4963 @cindex @file{.la} suffix, defined
4965 Libtool abstracts shared and static libraries into a unified concept
4966 henceforth called @dfn{libtool libraries}.  Libtool libraries are
4967 files using the @file{.la} suffix, and can designate a static library,
4968 a shared library, or maybe both.  Their exact nature cannot be
4969 determined until @file{./configure} is run: not all platforms support
4970 all kinds of libraries, and users can explicitly select which
4971 libraries should be built.  (However the package's maintainers can
4972 tune the default, @pxref{AC_PROG_LIBTOOL, , The @code{AC_PROG_LIBTOOL}
4973 macro, libtool, The Libtool Manual}.)
4975 @cindex suffix @file{.lo}, defined
4976 Because object files for shared and static libraries must be compiled
4977 differently, libtool is also used during compilation.  Object files
4978 built by libtool are called @dfn{libtool objects}: these are files
4979 using the @file{.lo} suffix.  Libtool libraries are built from these
4980 libtool objects.
4982 You should not assume anything about the structure of @file{.la} or
4983 @file{.lo} files and how libtool constructs them: this is libtool's
4984 concern, and the last thing one wants is to learn about libtool's
4985 guts.  However the existence of these files matters, because they are
4986 used as targets and dependencies in @file{Makefile}s rules when
4987 building libtool libraries.  There are situations where you may have
4988 to refer to these, for instance when expressing dependencies for
4989 building source files conditionally (@pxref{Conditional Libtool
4990 Sources}).
4992 @cindex @file{libltdl}, introduction
4994 People considering writing a plug-in system, with dynamically loaded
4995 modules, should look into @file{libltdl}: libtool's dlopening library
4996 (@pxref{Using libltdl, , Using libltdl, libtool, The Libtool Manual}).
4997 This offers a portable dlopening facility to load libtool libraries
4998 dynamically, and can also achieve static linking where unavoidable.
5000 Before we discuss how to use libtool with Automake in details, it
5001 should be noted that the libtool manual also has a section about how
5002 to use Automake with libtool (@pxref{Using Automake, , Using Automake
5003 with Libtool, libtool, The Libtool Manual}).
5005 @node Libtool Libraries
5006 @subsection Building Libtool Libraries
5008 @cindex @code{_LTLIBRARIES} primary, defined
5009 @cindex @code{LTLIBRARIES} primary, defined
5010 @cindex Primary variable, @code{LTLIBRARIES}
5011 @cindex Example of shared libraries
5012 @vindex lib_LTLIBRARIES
5013 @vindex pkglib_LTLIBRARIES
5014 @vindex _LTLIBRARIES
5016 Automake uses libtool to build libraries declared with the
5017 @code{LTLIBRARIES} primary.  Each @code{_LTLIBRARIES} variable is a
5018 list of libtool libraries to build.  For instance, to create a libtool
5019 library named @file{libgettext.la}, and install it in @code{libdir},
5020 write:
5022 @example
5023 lib_LTLIBRARIES = libgettext.la
5024 libgettext_la_SOURCES = gettext.c gettext.h @dots{}
5025 @end example
5027 Automake predefines the variable @code{pkglibdir}, so you can use
5028 @code{pkglib_LTLIBRARIES} to install libraries in
5029 @samp{$(libdir)/@@PACKAGE@@/}.
5031 If @file{gettext.h} is a public header file that needs to be installed
5032 in order for people to use the library, it should be declared using a
5033 @code{_HEADERS} variable, not in @code{libgettext_la_SOURCES}.
5034 Headers listed in the latter should be internal headers that are not
5035 part of the public interface.
5037 @example
5038 lib_LTLIBRARIES = libgettext.la
5039 libgettext_la_SOURCES = gettext.c @dots{}
5040 include_HEADERS = gettext.h @dots{}
5041 @end example
5043 A package can build and install such a library along with other
5044 programs that use it.  This dependency should be specified using
5045 @code{LDADD}.  The following example builds a program named
5046 @file{hello} that is linked with @file{libgettext.la}.
5048 @example
5049 lib_LTLIBRARIES = libgettext.la
5050 libgettext_la_SOURCES = gettext.c @dots{}
5052 bin_PROGRAMS = hello
5053 hello_SOURCES = hello.c @dots{}
5054 hello_LDADD = libgettext.la
5055 @end example
5057 @noindent
5058 Whether @file{hello} is statically or dynamically linked with
5059 @file{libgettext.la} is not yet known: this will depend on the
5060 configuration of libtool and the capabilities of the host.
5063 @node Conditional Libtool Libraries
5064 @subsection Building Libtool Libraries Conditionally
5065 @cindex libtool libraries, conditional
5066 @cindex conditional libtool libraries
5068 Like conditional programs (@pxref{Conditional Programs}), there are
5069 two main ways to build conditional libraries: using Automake
5070 conditionals or using Autoconf @code{AC_SUBST}itutions.
5072 The important implementation detail you have to be aware of is that
5073 the place where a library will be installed matters to libtool: it
5074 needs to be indicated @emph{at link-time} using the @option{-rpath}
5075 option.
5077 For libraries whose destination directory is known when Automake runs,
5078 Automake will automatically supply the appropriate @option{-rpath}
5079 option to libtool.  This is the case for libraries listed explicitly in
5080 some installable @code{_LTLIBRARIES} variables such as
5081 @code{lib_LTLIBRARIES}.
5083 However, for libraries determined at configure time (and thus
5084 mentioned in @code{EXTRA_LTLIBRARIES}), Automake does not know the
5085 final installation directory.  For such libraries you must add the
5086 @option{-rpath} option to the appropriate @code{_LDFLAGS} variable by
5087 hand.
5089 The examples below illustrate the differences between these two methods.
5091 Here is an example where @code{WANTEDLIBS} is an @code{AC_SUBST}ed
5092 variable set at @file{./configure}-time to either @file{libfoo.la},
5093 @file{libbar.la}, both, or none.  Although @samp{$(WANTEDLIBS)}
5094 appears in the @code{lib_LTLIBRARIES}, Automake cannot guess it
5095 relates to @file{libfoo.la} or @file{libbar.la} at the time it creates
5096 the link rule for these two libraries.  Therefore the @option{-rpath}
5097 argument must be explicitly supplied.
5099 @example
5100 EXTRA_LTLIBRARIES = libfoo.la libbar.la
5101 lib_LTLIBRARIES = $(WANTEDLIBS)
5102 libfoo_la_SOURCES = foo.c @dots{}
5103 libfoo_la_LDFLAGS = -rpath '$(libdir)'
5104 libbar_la_SOURCES = bar.c @dots{}
5105 libbar_la_LDFLAGS = -rpath '$(libdir)'
5106 @end example
5108 Here is how the same @file{Makefile.am} would look using Automake
5109 conditionals named @code{WANT_LIBFOO} and @code{WANT_LIBBAR}.  Now
5110 Automake is able to compute the @option{-rpath} setting itself, because
5111 it's clear that both libraries will end up in @samp{$(libdir)} if they
5112 are installed.
5114 @example
5115 lib_LTLIBRARIES =
5116 if WANT_LIBFOO
5117 lib_LTLIBRARIES += libfoo.la
5118 endif
5119 if WANT_LIBBAR
5120 lib_LTLIBRARIES += libbar.la
5121 endif
5122 libfoo_la_SOURCES = foo.c @dots{}
5123 libbar_la_SOURCES = bar.c @dots{}
5124 @end example
5126 @node Conditional Libtool Sources
5127 @subsection Libtool Libraries with Conditional Sources
5129 Conditional compilation of sources in a library can be achieved in the
5130 same way as conditional compilation of sources in a program
5131 (@pxref{Conditional Sources}).  The only difference is that
5132 @code{_LIBADD} should be used instead of @code{_LDADD} and that it
5133 should mention libtool objects (@file{.lo} files).
5135 So, to mimic the @file{hello} example from @ref{Conditional Sources},
5136 we could build a @file{libhello.la} library using either
5137 @file{hello-linux.c} or @file{hello-generic.c} with the following
5138 @file{Makefile.am}.
5140 @example
5141 lib_LTLIBRARIES = libhello.la
5142 libhello_la_SOURCES = hello-common.c
5143 EXTRA_libhello_la_SOURCES = hello-linux.c hello-generic.c
5144 libhello_la_LIBADD = $(HELLO_SYSTEM)
5145 libhello_la_DEPENDENCIES = $(HELLO_SYSTEM)
5146 @end example
5148 @noindent
5149 And make sure @command{configure} defines @code{HELLO_SYSTEM} as
5150 either @file{hello-linux.lo} or @file{hello-@-generic.lo}.
5152 Or we could simply use an Automake conditional as follows.
5154 @example
5155 lib_LTLIBRARIES = libhello.la
5156 libhello_la_SOURCES = hello-common.c
5157 if LINUX
5158 libhello_la_SOURCES += hello-linux.c
5159 else
5160 libhello_la_SOURCES += hello-generic.c
5161 endif
5162 @end example
5164 @node Libtool Convenience Libraries
5165 @subsection Libtool Convenience Libraries
5166 @cindex convenience libraries, libtool
5167 @cindex libtool convenience libraries
5168 @vindex noinst_LTLIBRARIES
5169 @vindex check_LTLIBRARIES
5171 Sometimes you want to build libtool libraries that should not be
5172 installed.  These are called @dfn{libtool convenience libraries} and
5173 are typically used to encapsulate many sublibraries, later gathered
5174 into one big installed library.
5176 Libtool convenience libraries are declared by directory-less variables
5177 such as @code{noinst_LTLIBRARIES}, @code{check_LTLIBRARIES}, or even
5178 @code{EXTRA_LTLIBRARIES}.  Unlike installed libtool libraries they do
5179 not need an @option{-rpath} flag at link time (actually this is the only
5180 difference).
5182 Convenience libraries listed in @code{noinst_LTLIBRARIES} are always
5183 built.  Those listed in @code{check_LTLIBRARIES} are built only upon
5184 @samp{make check}.  Finally, libraries listed in
5185 @code{EXTRA_LTLIBRARIES} are never built explicitly: Automake outputs
5186 rules to build them, but if the library does not appear as a Makefile
5187 dependency anywhere it won't be built (this is why
5188 @code{EXTRA_LTLIBRARIES} is used for conditional compilation).
5190 Here is a sample setup merging libtool convenience libraries from
5191 subdirectories into one main @file{libtop.la} library.
5193 @example
5194 # -- Top-level Makefile.am --
5195 SUBDIRS = sub1 sub2 @dots{}
5196 lib_LTLIBRARIES = libtop.la
5197 libtop_la_SOURCES =
5198 libtop_la_LIBADD = \
5199   sub1/libsub1.la \
5200   sub2/libsub2.la \
5201   @dots{}
5203 # -- sub1/Makefile.am --
5204 noinst_LTLIBRARIES = libsub1.la
5205 libsub1_la_SOURCES = @dots{}
5207 # -- sub2/Makefile.am --
5208 # showing nested convenience libraries
5209 SUBDIRS = sub2.1 sub2.2 @dots{}
5210 noinst_LTLIBRARIES = libsub2.la
5211 libsub2_la_SOURCES =
5212 libsub2_la_LIBADD = \
5213   sub21/libsub21.la \
5214   sub22/libsub22.la \
5215   @dots{}
5216 @end example
5218 When using such setup, beware that @command{automake} will assume
5219 @file{libtop.la} is to be linked with the C linker.  This is because
5220 @code{libtop_la_SOURCES} is empty, so @command{automake} picks C as
5221 default language.  If @code{libtop_la_SOURCES} was not empty,
5222 @command{automake} would select the linker as explained in @ref{How
5223 the Linker is Chosen}.
5225 If one of the sublibraries contains non-C source, it is important that
5226 the appropriate linker be chosen.  One way to achieve this is to
5227 pretend that there is such a non-C file among the sources of the
5228 library, thus forcing @command{automake} to select the appropriate
5229 linker.  Here is the top-level @file{Makefile} of our example updated
5230 to force C++ linking.
5232 @example
5233 SUBDIRS = sub1 sub2 @dots{}
5234 lib_LTLIBRARIES = libtop.la
5235 libtop_la_SOURCES =
5236 # Dummy C++ source to cause C++ linking.
5237 nodist_EXTRA_libtop_la_SOURCES = dummy.cxx
5238 libtop_la_LIBADD = \
5239   sub1/libsub1.la \
5240   sub2/libsub2.la \
5241   @dots{}
5242 @end example
5244 @samp{EXTRA_*_SOURCES} variables are used to keep track of source
5245 files that might be compiled (this is mostly useful when doing
5246 conditional compilation using @code{AC_SUBST}, @pxref{Conditional
5247 Libtool Sources}), and the @code{nodist_} prefix means the listed
5248 sources are not to be distributed (@pxref{Program and Library
5249 Variables}).  In effect the file @file{dummy.cxx} does not need to
5250 exist in the source tree.  Of course if you have some real source file
5251 to list in @code{libtop_la_SOURCES} there is no point in cheating with
5252 @code{nodist_EXTRA_libtop_la_SOURCES}.
5255 @node Libtool Modules
5256 @subsection Libtool Modules
5257 @cindex modules, libtool
5258 @cindex libtool modules
5259 @cindex @option{-module}, libtool
5261 These are libtool libraries meant to be dlopened.  They are
5262 indicated to libtool by passing @option{-module} at link-time.
5264 @example
5265 pkglib_LTLIBRARIES = mymodule.la
5266 mymodule_la_SOURCES = doit.c
5267 mymodule_la_LDFLAGS = -module
5268 @end example
5270 Ordinarily, Automake requires that a library's name start with
5271 @code{lib}.  However, when building a dynamically loadable module you
5272 might wish to use a "nonstandard" name.  Automake will not complain
5273 about such nonstandard names if it knows the library being built is a
5274 libtool module, i.e., if @option{-module} explicitly appears in the
5275 library's @code{_LDFLAGS} variable (or in the common @code{AM_LDFLAGS}
5276 variable when no per-library @code{_LDFLAGS} variable is defined).
5278 As always, @code{AC_SUBST} variables are black boxes to Automake since
5279 their values are not yet known when @command{automake} is run.
5280 Therefore if @option{-module} is set via such a variable, Automake
5281 cannot notice it and will proceed as if the library was an ordinary
5282 libtool library, with strict naming.
5284 If @code{mymodule_la_SOURCES} is not specified, then it defaults to
5285 the single file @file{mymodule.c} (@pxref{Default _SOURCES}).
5287 @node Libtool Flags
5288 @subsection @code{_LIBADD}, @code{_LDFLAGS}, and @code{_LIBTOOLFLAGS}
5289 @cindex @code{_LIBADD}, libtool
5290 @cindex @code{_LDFLAGS}, libtool
5291 @cindex @code{_LIBTOOLFLAGS}, libtool
5292 @vindex AM_LIBTOOLFLAGS
5293 @vindex LIBTOOLFLAGS
5294 @vindex maude_LIBTOOLFLAGS
5296 As shown in previous sections, the @samp{@var{library}_LIBADD}
5297 variable should be used to list extra libtool objects (@file{.lo}
5298 files) or libtool libraries (@file{.la}) to add to @var{library}.
5300 The @samp{@var{library}_LDFLAGS} variable is the place to list
5301 additional libtool linking flags, such as @option{-version-info},
5302 @option{-static}, and a lot more.  @xref{Link mode, , Link mode,
5303 libtool, The Libtool Manual}.
5305 The @command{libtool} command has two kinds of options: mode-specific
5306 options and generic options.  Mode-specific options such as the
5307 aforementioned linking flags should be lumped with the other flags
5308 passed to the tool invoked by @command{libtool} (hence the use of
5309 @samp{@var{library}_LDFLAGS} for libtool linking flags).  Generic
5310 options include @option{--tag=@var{TAG}} and @option{--silent}
5311 (@pxref{Invoking libtool, , Invoking @command{libtool}, libtool, The
5312 Libtool Manual} for more options) should appear before the mode
5313 selection on the command line; in @file{Makefile.am}s they should
5314 be listed in the @samp{@var{library}_LIBTOOLFLAGS} variable.
5316 If @samp{@var{library}_LIBTOOLFLAGS} is not defined, then the variable
5317 @code{AM_LIBTOOLFLAGS} is used instead.
5319 These flags are passed to libtool after the @option{--tag=@var{TAG}}
5320 option computed by Automake (if any), so
5321 @samp{@var{library}_LIBTOOLFLAGS} (or @code{AM_LIBTOOLFLAGS}) is a
5322 good place to override or supplement the @option{--tag=@var{TAG}}
5323 setting.
5325 The libtool rules also use a @code{LIBTOOLFLAGS} variable that should
5326 not be set in @file{Makefile.am}: this is a user variable (@pxref{Flag
5327 Variables Ordering}.  It allows users to run @samp{make
5328 LIBTOOLFLAGS=--silent}, for instance.  Note that the verbosity of
5329 @command{libtool} can also be influenced with the Automake
5330 @option{silent-rules} option (@pxref{Options}).
5333 @node LTLIBOBJS, Libtool Issues, Libtool Flags, A Shared Library
5334 @subsection @code{LTLIBOBJS} and @code{LTALLOCA}
5335 @cindex @code{LTLIBOBJS}, special handling
5336 @cindex @code{LIBOBJS}, and Libtool
5337 @cindex @code{LTALLOCA}, special handling
5338 @cindex @code{ALLOCA}, and Libtool
5339 @vindex LTLIBOBJS
5340 @vindex LIBOBJS
5341 @vindex LTALLOCA
5342 @vindex ALLOCA
5343 @acindex AC_LIBOBJ
5345 Where an ordinary library might include @samp{$(LIBOBJS)} or
5346 @samp{$(ALLOCA)} (@pxref{LIBOBJS}), a libtool library must use
5347 @samp{$(LTLIBOBJS)} or @samp{$(LTALLOCA)}.  This is required because
5348 the object files that libtool operates on do not necessarily end in
5349 @file{.o}.
5351 Nowadays, the computation of @code{LTLIBOBJS} from @code{LIBOBJS} is
5352 performed automatically by Autoconf (@pxref{AC_LIBOBJ vs LIBOBJS, ,
5353 @code{AC_LIBOBJ} vs.@: @code{LIBOBJS}, autoconf, The Autoconf Manual}).
5355 @node Libtool Issues
5356 @subsection Common Issues Related to Libtool's Use
5358 @menu
5359 * Error required file ltmain.sh not found::      The need to run libtoolize
5360 * Objects created both with libtool and without:: Avoid a specific build race
5361 @end menu
5363 @node Error required file ltmain.sh not found
5364 @subsubsection Error: @samp{required file `./ltmain.sh' not found}
5365 @cindex @file{ltmain.sh} not found
5366 @cindex @command{libtoolize}, no longer run by @command{automake}
5367 @cindex @command{libtoolize} and @command{autoreconf}
5368 @cindex @command{autoreconf} and @command{libtoolize}
5369 @cindex @file{bootstrap.sh} and @command{autoreconf}
5370 @cindex @file{autogen.sh} and @command{autoreconf}
5372 Libtool comes with a tool called @command{libtoolize} that will
5373 install libtool's supporting files into a package.  Running this
5374 command will install @file{ltmain.sh}.  You should execute it before
5375 @command{aclocal} and @command{automake}.
5377 People upgrading old packages to newer autotools are likely to face
5378 this issue because older Automake versions used to call
5379 @command{libtoolize}.  Therefore old build scripts do not call
5380 @command{libtoolize}.
5382 Since Automake 1.6, it has been decided that running
5383 @command{libtoolize} was none of Automake's business.  Instead, that
5384 functionality has been moved into the @command{autoreconf} command
5385 (@pxref{autoreconf Invocation, , Using @command{autoreconf}, autoconf,
5386 The Autoconf Manual}).  If you do not want to remember what to run and
5387 when, just learn the @command{autoreconf} command.  Hopefully,
5388 replacing existing @file{bootstrap.sh} or @file{autogen.sh} scripts by
5389 a call to @command{autoreconf} should also free you from any similar
5390 incompatible change in the future.
5392 @node Objects created both with libtool and without
5393 @subsubsection Objects @samp{created with both libtool and without}
5395 Sometimes, the same source file is used both to build a libtool
5396 library and to build another non-libtool target (be it a program or
5397 another library).
5399 Let's consider the following @file{Makefile.am}.
5401 @example
5402 bin_PROGRAMS = prog
5403 prog_SOURCES = prog.c foo.c @dots{}
5405 lib_LTLIBRARIES = libfoo.la
5406 libfoo_la_SOURCES = foo.c @dots{}
5407 @end example
5409 @noindent
5410 (In this trivial case the issue could be avoided by linking
5411 @file{libfoo.la} with @file{prog} instead of listing @file{foo.c} in
5412 @code{prog_SOURCES}.  But let's assume we really want to keep
5413 @file{prog} and @file{libfoo.la} separate.)
5415 Technically, it means that we should build @file{foo.$(OBJEXT)} for
5416 @file{prog}, and @file{foo.lo} for @file{libfoo.la}.  The problem is
5417 that in the course of creating @file{foo.lo}, libtool may erase (or
5418 replace) @file{foo.$(OBJEXT)}, and this cannot be avoided.
5420 Therefore, when Automake detects this situation it will complain
5421 with a message such as
5422 @example
5423 object `foo.$(OBJEXT)' created both with libtool and without
5424 @end example
5426 A workaround for this issue is to ensure that these two objects get
5427 different basenames.  As explained in @ref{Renamed Objects}, this
5428 happens automatically when per-targets flags are used.
5430 @example
5431 bin_PROGRAMS = prog
5432 prog_SOURCES = prog.c foo.c @dots{}
5433 prog_CFLAGS = $(AM_CFLAGS)
5435 lib_LTLIBRARIES = libfoo.la
5436 libfoo_la_SOURCES = foo.c @dots{}
5437 @end example
5439 @noindent
5440 Adding @samp{prog_CFLAGS = $(AM_CFLAGS)} is almost a no-op, because
5441 when the @code{prog_CFLAGS} is defined, it is used instead of
5442 @code{AM_CFLAGS}.  However as a side effect it will cause
5443 @file{prog.c} and @file{foo.c} to be compiled as
5444 @file{prog-prog.$(OBJEXT)} and @file{prog-foo.$(OBJEXT)}, which solves
5445 the issue.
5447 @node Program and Library Variables
5448 @section Program and Library Variables
5450 Associated with each program is a collection of variables that can be
5451 used to modify how that program is built.  There is a similar list of
5452 such variables for each library.  The canonical name of the program (or
5453 library) is used as a base for naming these variables.
5455 In the list below, we use the name ``maude'' to refer to the program or
5456 library.  In your @file{Makefile.am} you would replace this with the
5457 canonical name of your program.  This list also refers to ``maude'' as a
5458 program, but in general the same rules apply for both static and dynamic
5459 libraries; the documentation below notes situations where programs and
5460 libraries differ.
5462 @vtable @code
5463 @item maude_SOURCES
5464 This variable, if it exists, lists all the source files that are
5465 compiled to build the program.  These files are added to the
5466 distribution by default.  When building the program, Automake will cause
5467 each source file to be compiled to a single @file{.o} file (or
5468 @file{.lo} when using libtool).  Normally these object files are named
5469 after the source file, but other factors can change this.  If a file in
5470 the @code{_SOURCES} variable has an unrecognized extension, Automake
5471 will do one of two things with it.  If a suffix rule exists for turning
5472 files with the unrecognized extension into @file{.o} files, then
5473 @command{automake} will treat this file as it will any other source file
5474 (@pxref{Support for Other Languages}).  Otherwise, the file will be
5475 ignored as though it were a header file.
5477 The prefixes @code{dist_} and @code{nodist_} can be used to control
5478 whether files listed in a @code{_SOURCES} variable are distributed.
5479 @code{dist_} is redundant, as sources are distributed by default, but it
5480 can be specified for clarity if desired.
5482 It is possible to have both @code{dist_} and @code{nodist_} variants of
5483 a given @code{_SOURCES} variable at once; this lets you easily
5484 distribute some files and not others, for instance:
5486 @example
5487 nodist_maude_SOURCES = nodist.c
5488 dist_maude_SOURCES = dist-me.c
5489 @end example
5491 By default the output file (on Unix systems, the @file{.o} file) will
5492 be put into the current build directory.  However, if the option
5493 @option{subdir-objects} is in effect in the current directory then the
5494 @file{.o} file will be put into the subdirectory named after the
5495 source file.  For instance, with @option{subdir-objects} enabled,
5496 @file{sub/dir/file.c} will be compiled to @file{sub/dir/file.o}.  Some
5497 people prefer this mode of operation.  You can specify
5498 @option{subdir-objects} in @code{AUTOMAKE_OPTIONS} (@pxref{Options}).
5499 @cindex Subdirectory, objects in
5500 @cindex Objects in subdirectory
5503 @item EXTRA_maude_SOURCES
5504 Automake needs to know the list of files you intend to compile
5505 @emph{statically}.  For one thing, this is the only way Automake has of
5506 knowing what sort of language support a given @file{Makefile.in}
5507 requires.  @footnote{There are other, more obscure reasons for
5508 this limitation as well.}  This means that, for example, you can't put a
5509 configure substitution like @samp{@@my_sources@@} into a @samp{_SOURCES}
5510 variable.  If you intend to conditionally compile source files and use
5511 @file{configure} to substitute the appropriate object names into, e.g.,
5512 @code{_LDADD} (see below), then you should list the corresponding source
5513 files in the @code{EXTRA_} variable.
5515 This variable also supports @code{dist_} and @code{nodist_} prefixes.
5516 For instance, @code{nodist_EXTRA_maude_SOURCES} would list extra
5517 sources that may need to be built, but should not be distributed.
5519 @item maude_AR
5520 A static library is created by default by invoking @samp{$(AR)
5521 $(ARFLAGS)} followed by the name of the library and then the objects
5522 being put into the library.  You can override this by setting the
5523 @code{_AR} variable.  This is usually used with C++; some C++
5524 compilers require a special invocation in order to instantiate all the
5525 templates that should go into a library.  For instance, the SGI C++
5526 compiler likes this variable set like so:
5527 @example
5528 libmaude_a_AR = $(CXX) -ar -o
5529 @end example
5531 @item maude_LIBADD
5532 Extra objects can be added to a @emph{library} using the @code{_LIBADD}
5533 variable.  For instance, this should be used for objects determined by
5534 @command{configure} (@pxref{A Library}).
5536 In the case of libtool libraries, @code{maude_LIBADD} can also refer
5537 to other libtool libraries.
5539 @item maude_LDADD
5540 Extra objects (@file{*.$(OBJEXT)}) and libraries (@file{*.a},
5541 @file{*.la}) can be added to a @emph{program} by listing them in the
5542 @code{_LDADD} variable.  For instance, this should be used for objects
5543 determined by @command{configure} (@pxref{Linking}).
5545 @code{_LDADD} and @code{_LIBADD} are inappropriate for passing
5546 program-specific linker flags (except for @option{-l}, @option{-L},
5547 @option{-dlopen} and @option{-dlpreopen}).  Use the @code{_LDFLAGS} variable
5548 for this purpose.
5550 For instance, if your @file{configure.ac} uses @code{AC_PATH_XTRA}, you
5551 could link your program against the X libraries like so:
5553 @example
5554 maude_LDADD = $(X_PRE_LIBS) $(X_LIBS) $(X_EXTRA_LIBS)
5555 @end example
5557 We recommend that you use @option{-l} and @option{-L} only when
5558 referring to third-party libraries, and give the explicit file names
5559 of any library built by your package.  Doing so will ensure that
5560 @code{maude_DEPENDENCIES} (see below) is correctly defined by default.
5562 @item maude_LDFLAGS
5563 This variable is used to pass extra flags to the link step of a program
5564 or a shared library.  It overrides the @code{AM_LDFLAGS} variable.
5566 @item maude_LIBTOOLFLAGS
5567 This variable is used to pass extra options to @command{libtool}.
5568 It overrides the @code{AM_LIBTOOLFLAGS} variable.
5569 These options are output before @command{libtool}'s @option{--mode=@var{MODE}}
5570 option, so they should not be mode-specific options (those belong to
5571 the compiler or linker flags).  @xref{Libtool Flags}.
5573 @item maude_DEPENDENCIES
5574 It is also occasionally useful to have a target (program or library)
5575 depend on some other file that is not actually part of that target.
5576 This can be done using the @code{_DEPENDENCIES} variable.  Each
5577 target depends on the contents of such a variable, but no further
5578 interpretation is done.
5580 Since these dependencies are associated to the link rule used to
5581 create the programs they should normally list files used by the link
5582 command.  That is @file{*.$(OBJEXT)}, @file{*.a}, or @file{*.la} files
5583 for programs; @file{*.lo} and @file{*.la} files for Libtool libraries;
5584 and @file{*.$(OBJEXT)} files for static libraries.  In rare cases you
5585 may need to add other kinds of files such as linker scripts, but
5586 @emph{listing a source file in @code{_DEPENDENCIES} is wrong}.  If
5587 some source file needs to be built before all the components of a
5588 program are built, consider using the @code{BUILT_SOURCES} variable
5589 (@pxref{Sources}).
5591 If @code{_DEPENDENCIES} is not supplied, it is computed by Automake.
5592 The automatically-assigned value is the contents of @code{_LDADD} or
5593 @code{_LIBADD}, with most configure substitutions, @option{-l}, @option{-L},
5594 @option{-dlopen} and @option{-dlpreopen} options removed.  The configure
5595 substitutions that are left in are only @samp{$(LIBOBJS)} and
5596 @samp{$(ALLOCA)}; these are left because it is known that they will not
5597 cause an invalid value for @code{_DEPENDENCIES} to be generated.
5599 @code{_DEPENDENCIES} is more likely used to perform conditional
5600 compilation using an @code{AC_SUBST} variable that contains a list of
5601 objects.  @xref{Conditional Sources}, and @ref{Conditional Libtool
5602 Sources}.
5604 @item maude_LINK
5605 You can override the linker on a per-program basis.  By default the
5606 linker is chosen according to the languages used by the program.  For
5607 instance, a program that includes C++ source code would use the C++
5608 compiler to link.  The @code{_LINK} variable must hold the name of a
5609 command that can be passed all the @file{.o} file names as arguments.
5610 Note that the name of the underlying program is @emph{not} passed to
5611 @code{_LINK}; typically one uses @samp{$@@}:
5613 @example
5614 maude_LINK = $(CCLD) -magic -o $@@
5615 @end example
5617 @item maude_CCASFLAGS
5618 @itemx maude_CFLAGS
5619 @itemx maude_CPPFLAGS
5620 @itemx maude_CXXFLAGS
5621 @itemx maude_FFLAGS
5622 @itemx maude_GCJFLAGS
5623 @itemx maude_LFLAGS
5624 @itemx maude_OBJCFLAGS
5625 @itemx maude_RFLAGS
5626 @itemx maude_UPCFLAGS
5627 @itemx maude_YFLAGS
5628 @cindex per-target compilation flags, defined
5629 Automake allows you to set compilation flags on a per-program (or
5630 per-library) basis.  A single source file can be included in several
5631 programs, and it will potentially be compiled with different flags for
5632 each program.  This works for any language directly supported by
5633 Automake.  These @dfn{per-target compilation flags} are
5634 @samp{_CCASFLAGS},
5635 @samp{_CFLAGS},
5636 @samp{_CPPFLAGS},
5637 @samp{_CXXFLAGS},
5638 @samp{_FFLAGS},
5639 @samp{_GCJFLAGS},
5640 @samp{_LFLAGS},
5641 @samp{_OBJCFLAGS},
5642 @samp{_RFLAGS},
5643 @samp{_UPCFLAGS}, and
5644 @samp{_YFLAGS}.
5646 When using a per-target compilation flag, Automake will choose a
5647 different name for the intermediate object files.  Ordinarily a file
5648 like @file{sample.c} will be compiled to produce @file{sample.o}.
5649 However, if the program's @code{_CFLAGS} variable is set, then the
5650 object file will be named, for instance, @file{maude-sample.o}.  (See
5651 also @ref{Renamed Objects}.)  The use of per-target compilation flags
5652 with C sources requires that the macro @code{AM_PROG_CC_C_O} be called
5653 from @file{configure.ac}.
5655 In compilations with per-target flags, the ordinary @samp{AM_} form of
5656 the flags variable is @emph{not} automatically included in the
5657 compilation (however, the user form of the variable @emph{is} included).
5658 So for instance, if you want the hypothetical @file{maude} compilations
5659 to also use the value of @code{AM_CFLAGS}, you would need to write:
5661 @example
5662 maude_CFLAGS = @dots{} your flags @dots{} $(AM_CFLAGS)
5663 @end example
5665 @xref{Flag Variables Ordering}, for more discussion about the
5666 interaction between user variables, @samp{AM_} shadow variables, and
5667 per-target variables.
5669 @item maude_SHORTNAME
5670 On some platforms the allowable file names are very short.  In order to
5671 support these systems and per-target compilation flags at the same
5672 time, Automake allows you to set a ``short name'' that will influence
5673 how intermediate object files are named.  For instance, in the following
5674 example,
5676 @example
5677 bin_PROGRAMS = maude
5678 maude_CPPFLAGS = -DSOMEFLAG
5679 maude_SHORTNAME = m
5680 maude_SOURCES = sample.c @dots{}
5681 @end example
5683 @noindent
5684 the object file would be named @file{m-sample.o} rather than
5685 @file{maude-sample.o}.
5687 This facility is rarely needed in practice,
5688 and we recommend avoiding it until you find it is required.
5689 @end vtable
5691 @node Default _SOURCES
5692 @section Default @code{_SOURCES}
5694 @vindex _SOURCES
5695 @vindex SOURCES
5696 @cindex @code{_SOURCES}, default
5697 @cindex default @code{_SOURCES}
5698 @vindex AM_DEFAULT_SOURCE_EXT
5700 @code{_SOURCES} variables are used to specify source files of programs
5701 (@pxref{A Program}), libraries (@pxref{A Library}), and Libtool
5702 libraries (@pxref{A Shared Library}).
5704 When no such variable is specified for a target, Automake will define
5705 one itself.  The default is to compile a single C file whose base name
5706 is the name of the target itself, with any extension replaced by
5707 @code{AM_DEFAULT_SOURCE_EXT}, which defaults to @file{.c}.
5709 For example if you have the following somewhere in your
5710 @file{Makefile.am} with no corresponding @code{libfoo_a_SOURCES}:
5712 @example
5713 lib_LIBRARIES = libfoo.a sub/libc++.a
5714 @end example
5716 @noindent
5717 @file{libfoo.a} will be built using a default source file named
5718 @file{libfoo.c}, and @file{sub/libc++.a} will be built from
5719 @file{sub/libc++.c}.  (In older versions @file{sub/libc++.a}
5720 would be built from @file{sub_libc___a.c}, i.e., the default source
5721 was the canonized name of the target, with @file{.c} appended.
5722 We believe the new behavior is more sensible, but for backward
5723 compatibility @command{automake} will use the old name if a file or a rule
5724 with that name exists and @code{AM_DEFAULT_SOURCE_EXT} is not used.)
5726 @cindex @code{check_PROGRAMS} example
5727 @vindex check_PROGRAMS
5728 Default sources are mainly useful in test suites, when building many
5729 test programs each from a single source.  For instance, in
5731 @example
5732 check_PROGRAMS = test1 test2 test3
5733 AM_DEFAULT_SOURCE_EXT = .cpp
5734 @end example
5736 @noindent
5737 @file{test1}, @file{test2}, and @file{test3} will be built
5738 from @file{test1.cpp}, @file{test2.cpp}, and @file{test3.cpp}.
5739 Without the last line, they will be built from @file{test1.c},
5740 @file{test2.c}, and @file{test3.c}.
5742 @cindex Libtool modules, default source example
5743 @cindex default source, Libtool modules example
5744 Another case where this is convenient is building many Libtool modules
5745 (@file{module@var{N}.la}), each defined in its own file
5746 (@file{module@var{N}.c}).
5748 @example
5749 AM_LDFLAGS = -module
5750 lib_LTLIBRARIES = module1.la module2.la module3.la
5751 @end example
5753 @cindex empty @code{_SOURCES}
5754 @cindex @code{_SOURCES}, empty
5755 Finally, there is one situation where this default source computation
5756 needs to be avoided: when a target should not be built from sources.
5757 We already saw such an example in @ref{true}; this happens when all
5758 the constituents of a target have already been compiled and just need
5759 to be combined using a @code{_LDADD} variable.  Then it is necessary
5760 to define an empty @code{_SOURCES} variable, so that @command{automake} does not
5761 compute a default.
5763 @example
5764 bin_PROGRAMS = target
5765 target_SOURCES =
5766 target_LDADD = libmain.a libmisc.a
5767 @end example
5769 @node LIBOBJS
5770 @section Special handling for @code{LIBOBJS} and @code{ALLOCA}
5772 @cindex @code{LIBOBJS}, example
5773 @cindex @code{ALLOCA}, example
5774 @cindex @code{LIBOBJS}, special handling
5775 @cindex @code{ALLOCA}, special handling
5776 @vindex LTLIBOBJS
5777 @vindex LIBOBJS
5778 @vindex LTALLOCA
5779 @vindex ALLOCA
5781 The @samp{$(LIBOBJS)} and @samp{$(ALLOCA)} variables list object
5782 files that should be compiled into the project to provide an
5783 implementation for functions that are missing or broken on the host
5784 system.  They are substituted by @file{configure}.
5786 @acindex AC_LIBOBJ
5788 These variables are defined by Autoconf macros such as
5789 @code{AC_LIBOBJ}, @code{AC_REPLACE_FUNCS} (@pxref{Generic Functions, ,
5790 Generic Function Checks, autoconf, The Autoconf Manual}), or
5791 @code{AC_FUNC_ALLOCA} (@pxref{Particular Functions, , Particular
5792 Function Checks, autoconf, The Autoconf Manual}).  Many other Autoconf
5793 macros call @code{AC_LIBOBJ} or @code{AC_REPLACE_FUNCS} to
5794 populate @samp{$(LIBOBJS)}.
5796 @acindex AC_LIBSOURCE
5798 Using these variables is very similar to doing conditional compilation
5799 using @code{AC_SUBST} variables, as described in @ref{Conditional
5800 Sources}.  That is, when building a program, @samp{$(LIBOBJS)} and
5801 @samp{$(ALLOCA)} should be added to the associated @samp{*_LDADD}
5802 variable, or to the @samp{*_LIBADD} variable when building a library.
5803 However there is no need to list the corresponding sources in
5804 @samp{EXTRA_*_SOURCES} nor to define @samp{*_DEPENDENCIES}.  Automake
5805 automatically adds @samp{$(LIBOBJS)} and @samp{$(ALLOCA)} to the
5806 dependencies, and it will discover the list of corresponding source
5807 files automatically (by tracing the invocations of the
5808 @code{AC_LIBSOURCE} Autoconf macros).  However, if you have already
5809 defined @samp{*_DEPENDENCIES} explicitly for an unrelated reason, then
5810 you have to add these variables manually.
5812 These variables are usually used to build a portability library that
5813 is linked with all the programs of the project.  We now review a
5814 sample setup.  First, @file{configure.ac} contains some checks that
5815 affect either @code{LIBOBJS} or @code{ALLOCA}.
5817 @example
5818 # configure.ac
5819 @dots{}
5820 AC_CONFIG_LIBOBJ_DIR([lib])
5821 @dots{}
5822 AC_FUNC_MALLOC             dnl May add malloc.$(OBJEXT) to LIBOBJS
5823 AC_FUNC_MEMCMP             dnl May add memcmp.$(OBJEXT) to LIBOBJS
5824 AC_REPLACE_FUNCS([strdup]) dnl May add strdup.$(OBJEXT) to LIBOBJS
5825 AC_FUNC_ALLOCA             dnl May add alloca.$(OBJEXT) to ALLOCA
5826 @dots{}
5827 AC_CONFIG_FILES([
5828   lib/Makefile
5829   src/Makefile
5831 AC_OUTPUT
5832 @end example
5834 @acindex AC_CONFIG_LIBOBJ_DIR
5836 The @code{AC_CONFIG_LIBOBJ_DIR} tells Autoconf that the source files
5837 of these object files are to be found in the @file{lib/} directory.
5838 Automake can also use this information, otherwise it expects the
5839 source files are to be in the directory where the @samp{$(LIBOBJS)}
5840 and @samp{$(ALLOCA)} variables are used.
5842 The @file{lib/} directory should therefore contain @file{malloc.c},
5843 @file{memcmp.c}, @file{strdup.c}, @file{alloca.c}.  Here is its
5844 @file{Makefile.am}:
5846 @example
5847 # lib/Makefile.am
5849 noinst_LIBRARIES = libcompat.a
5850 libcompat_a_SOURCES =
5851 libcompat_a_LIBADD = $(LIBOBJS) $(ALLOCA)
5852 @end example
5854 The library can have any name, of course, and anyway it is not going
5855 to be installed: it just holds the replacement versions of the missing
5856 or broken functions so we can later link them in.  Many projects
5857 also include extra functions, specific to the project, in that
5858 library: they are simply added on the @code{_SOURCES} line.
5860 @cindex Empty libraries and @samp{$(LIBOBJS)}
5861 @cindex @samp{$(LIBOBJS)} and empty libraries
5862 There is a small trap here, though: @samp{$(LIBOBJS)} and
5863 @samp{$(ALLOCA)} might be empty, and building an empty library is not
5864 portable.  You should ensure that there is always something to put in
5865 @file{libcompat.a}.  Most projects will also add some utility
5866 functions in that directory, and list them in
5867 @code{libcompat_a_SOURCES}, so in practice @file{libcompat.a} cannot
5868 be empty.
5870 Finally here is how this library could be used from the @file{src/}
5871 directory.
5873 @example
5874 # src/Makefile.am
5876 # Link all programs in this directory with libcompat.a
5877 LDADD = ../lib/libcompat.a
5879 bin_PROGRAMS = tool1 tool2 @dots{}
5880 tool1_SOURCES = @dots{}
5881 tool2_SOURCES = @dots{}
5882 @end example
5884 When option @option{subdir-objects} is not used, as in the above
5885 example, the variables @samp{$(LIBOBJS)} or @samp{$(ALLOCA)} can only
5886 be used in the directory where their sources lie.  E.g., here it would
5887 be wrong to use @samp{$(LIBOBJS)} or @samp{$(ALLOCA)} in
5888 @file{src/Makefile.am}.  However if both @option{subdir-objects} and
5889 @code{AC_CONFIG_LIBOBJ_DIR} are used, it is OK to use these variables
5890 in other directories.  For instance @file{src/Makefile.am} could be
5891 changed as follows.
5893 @example
5894 # src/Makefile.am
5896 AUTOMAKE_OPTIONS = subdir-objects
5897 LDADD = $(LIBOBJS) $(ALLOCA)
5899 bin_PROGRAMS = tool1 tool2 @dots{}
5900 tool1_SOURCES = @dots{}
5901 tool2_SOURCES = @dots{}
5902 @end example
5904 Because @samp{$(LIBOBJS)} and @samp{$(ALLOCA)} contain object
5905 file names that end with @samp{.$(OBJEXT)}, they are not suitable for
5906 Libtool libraries (where the expected object extension is @file{.lo}):
5907 @code{LTLIBOBJS} and @code{LTALLOCA} should be used instead.
5909 @code{LTLIBOBJS} is defined automatically by Autoconf and should not
5910 be defined by hand (as in the past), however at the time of writing
5911 @code{LTALLOCA} still needs to be defined from @code{ALLOCA} manually.
5912 @xref{AC_LIBOBJ vs LIBOBJS, , @code{AC_LIBOBJ} vs.@: @code{LIBOBJS},
5913 autoconf, The Autoconf Manual}.
5916 @node Program Variables
5917 @section Variables used when building a program
5919 Occasionally it is useful to know which @file{Makefile} variables
5920 Automake uses for compilations, and in which order (@pxref{Flag
5921 Variables Ordering}); for instance, you might need to do your own
5922 compilation in some special cases.
5924 Some variables are inherited from Autoconf; these are @code{CC},
5925 @code{CFLAGS}, @code{CPPFLAGS}, @code{DEFS}, @code{LDFLAGS}, and
5926 @code{LIBS}.
5927 @vindex CC
5928 @vindex CFLAGS
5929 @vindex CPPFLAGS
5930 @vindex DEFS
5931 @vindex LDFLAGS
5932 @vindex LIBS
5934 There are some additional variables that Automake defines on its own:
5936 @vtable @code
5937 @item AM_CPPFLAGS
5938 The contents of this variable are passed to every compilation that invokes
5939 the C preprocessor; it is a list of arguments to the preprocessor.  For
5940 instance, @option{-I} and @option{-D} options should be listed here.
5942 Automake already provides some @option{-I} options automatically, in a
5943 separate variable that is also passed to every compilation that invokes
5944 the C preprocessor.  In particular it generates @samp{-I.},
5945 @samp{-I$(srcdir)}, and a @option{-I} pointing to the directory holding
5946 @file{config.h} (if you've used @code{AC_CONFIG_HEADERS} or
5947 @code{AM_CONFIG_HEADER}).  You can disable the default @option{-I}
5948 options using the @option{nostdinc} option.
5950 @code{AM_CPPFLAGS} is ignored in preference to a per-executable (or
5951 per-library) @code{_CPPFLAGS} variable if it is defined.
5953 @item INCLUDES
5954 This does the same job as @code{AM_CPPFLAGS} (or any per-target
5955 @code{_CPPFLAGS} variable if it is used).  It is an older name for the
5956 same functionality.  This variable is deprecated; we suggest using
5957 @code{AM_CPPFLAGS} and per-target @code{_CPPFLAGS} instead.
5959 @item AM_CFLAGS
5960 This is the variable the @file{Makefile.am} author can use to pass
5961 in additional C compiler flags.  It is more fully documented elsewhere.
5962 In some situations, this is not used, in preference to the
5963 per-executable (or per-library) @code{_CFLAGS}.
5965 @item COMPILE
5966 This is the command used to actually compile a C source file.  The
5967 file name is appended to form the complete command line.
5969 @item AM_LDFLAGS
5970 This is the variable the @file{Makefile.am} author can use to pass
5971 in additional linker flags.  In some situations, this is not used, in
5972 preference to the per-executable (or per-library) @code{_LDFLAGS}.
5974 @item LINK
5975 This is the command used to actually link a C program.  It already
5976 includes @samp{-o $@@} and the usual variable references (for instance,
5977 @code{CFLAGS}); it takes as ``arguments'' the names of the object files
5978 and libraries to link in.
5979 @end vtable
5982 @node Yacc and Lex
5983 @section Yacc and Lex support
5985 Automake has somewhat idiosyncratic support for Yacc and Lex.
5987 Automake assumes that the @file{.c} file generated by @command{yacc}
5988 (or @command{lex}) should be named using the basename of the input
5989 file.  That is, for a yacc source file @file{foo.y}, Automake will
5990 cause the intermediate file to be named @file{foo.c} (as opposed to
5991 @file{y.tab.c}, which is more traditional).
5993 The extension of a yacc source file is used to determine the extension
5994 of the resulting C or C++ file.  Files with the extension @file{.y}
5995 will be turned into @file{.c} files; likewise, @file{.yy} will become
5996 @file{.cc}; @file{.y++}, @file{c++}; @file{.yxx}, @file{.cxx}; and
5997 @file{.ypp}, @file{.cpp}.
5999 Likewise, lex source files can be used to generate C or C++; the
6000 extensions @file{.l}, @file{.ll}, @file{.l++}, @file{.lxx}, and
6001 @file{.lpp} are recognized.
6003 You should never explicitly mention the intermediate (C or C++) file
6004 in any @code{SOURCES} variable; only list the source file.
6006 The intermediate files generated by @command{yacc} (or @command{lex})
6007 will be included in any distribution that is made.  That way the user
6008 doesn't need to have @command{yacc} or @command{lex}.
6010 If a @command{yacc} source file is seen, then your @file{configure.ac} must
6011 define the variable @code{YACC}.  This is most easily done by invoking
6012 the macro @code{AC_PROG_YACC} (@pxref{Particular Programs, , Particular
6013 Program Checks, autoconf, The Autoconf Manual}).
6015 @vindex YFLAGS
6016 @vindex AM_YFLAGS
6017 When @code{yacc} is invoked, it is passed @code{YFLAGS} and
6018 @code{AM_YFLAGS}.  The former is a user variable and the latter is
6019 intended for the @file{Makefile.am} author.
6021 @code{AM_YFLAGS} is usually used to pass the @option{-d} option to
6022 @command{yacc}.  Automake knows what this means and will automatically
6023 adjust its rules to update and distribute the header file built by
6024 @samp{yacc -d}.  What Automake cannot guess, though, is where this
6025 header will be used: it is up to you to ensure the header gets built
6026 before it is first used.  Typically this is necessary in order for
6027 dependency tracking to work when the header is included by another
6028 file.  The common solution is listing the header file in
6029 @code{BUILT_SOURCES} (@pxref{Sources}) as follows.
6031 @example
6032 BUILT_SOURCES = parser.h
6033 AM_YFLAGS = -d
6034 bin_PROGRAMS = foo
6035 foo_SOURCES = @dots{} parser.y @dots{}
6036 @end example
6038 If a @command{lex} source file is seen, then your @file{configure.ac}
6039 must define the variable @code{LEX}.  You can use @code{AC_PROG_LEX}
6040 to do this (@pxref{Particular Programs, , Particular Program Checks,
6041 autoconf, The Autoconf Manual}), but using @code{AM_PROG_LEX} macro
6042 (@pxref{Macros}) is recommended.
6044 @vindex LFLAGS
6045 @vindex AM_LFLAGS
6046 When @command{lex} is invoked, it is passed @code{LFLAGS} and
6047 @code{AM_LFLAGS}.  The former is a user variable and the latter is
6048 intended for the @file{Makefile.am} author.
6050 When @code{AM_MAINTAINER_MODE} (@pxref{maintainer-mode}) is used, the
6051 rebuild rule for distributed Yacc and Lex sources are only used when
6052 @code{maintainer-mode} is enabled, or when the files have been erased.
6054 @cindex @command{ylwrap}
6055 @cindex @command{yacc}, multiple parsers
6056 @cindex Multiple @command{yacc} parsers
6057 @cindex Multiple @command{lex} lexers
6058 @cindex @command{lex}, multiple lexers
6060 When @command{lex} or @command{yacc} sources are used, @code{automake
6061 -i} automatically installs an auxiliary program called
6062 @command{ylwrap} in your package (@pxref{Auxiliary Programs}).  This
6063 program is used by the build rules to rename the output of these
6064 tools, and makes it possible to include multiple @command{yacc} (or
6065 @command{lex}) source files in a single directory.  (This is necessary
6066 because yacc's output file name is fixed, and a parallel make could
6067 conceivably invoke more than one instance of @command{yacc}
6068 simultaneously.)
6070 For @command{yacc}, simply managing locking is insufficient.  The output of
6071 @command{yacc} always uses the same symbol names internally, so it isn't
6072 possible to link two @command{yacc} parsers into the same executable.
6074 We recommend using the following renaming hack used in @command{gdb}:
6075 @example
6076 #define yymaxdepth c_maxdepth
6077 #define yyparse c_parse
6078 #define yylex   c_lex
6079 #define yyerror c_error
6080 #define yylval  c_lval
6081 #define yychar  c_char
6082 #define yydebug c_debug
6083 #define yypact  c_pact
6084 #define yyr1    c_r1
6085 #define yyr2    c_r2
6086 #define yydef   c_def
6087 #define yychk   c_chk
6088 #define yypgo   c_pgo
6089 #define yyact   c_act
6090 #define yyexca  c_exca
6091 #define yyerrflag c_errflag
6092 #define yynerrs c_nerrs
6093 #define yyps    c_ps
6094 #define yypv    c_pv
6095 #define yys     c_s
6096 #define yy_yys  c_yys
6097 #define yystate c_state
6098 #define yytmp   c_tmp
6099 #define yyv     c_v
6100 #define yy_yyv  c_yyv
6101 #define yyval   c_val
6102 #define yylloc  c_lloc
6103 #define yyreds  c_reds
6104 #define yytoks  c_toks
6105 #define yylhs   c_yylhs
6106 #define yylen   c_yylen
6107 #define yydefred c_yydefred
6108 #define yydgoto  c_yydgoto
6109 #define yysindex c_yysindex
6110 #define yyrindex c_yyrindex
6111 #define yygindex c_yygindex
6112 #define yytable  c_yytable
6113 #define yycheck  c_yycheck
6114 #define yyname   c_yyname
6115 #define yyrule   c_yyrule
6116 @end example
6118 For each define, replace the @samp{c_} prefix with whatever you like.
6119 These defines work for @command{bison}, @command{byacc}, and
6120 traditional @code{yacc}s.  If you find a parser generator that uses a
6121 symbol not covered here, please report the new name so it can be added
6122 to the list.
6125 @node C++ Support
6126 @section C++ Support
6128 @cindex C++ support
6129 @cindex Support for C++
6131 Automake includes full support for C++.
6133 Any package including C++ code must define the output variable
6134 @code{CXX} in @file{configure.ac}; the simplest way to do this is to use
6135 the @code{AC_PROG_CXX} macro (@pxref{Particular Programs, , Particular
6136 Program Checks, autoconf, The Autoconf Manual}).
6138 A few additional variables are defined when a C++ source file is seen:
6140 @vtable @code
6141 @item CXX
6142 The name of the C++ compiler.
6144 @item CXXFLAGS
6145 Any flags to pass to the C++ compiler.
6147 @item AM_CXXFLAGS
6148 The maintainer's variant of @code{CXXFLAGS}.
6150 @item CXXCOMPILE
6151 The command used to actually compile a C++ source file.  The file name
6152 is appended to form the complete command line.
6154 @item CXXLINK
6155 The command used to actually link a C++ program.
6156 @end vtable
6159 @node Objective C Support
6160 @section Objective C Support
6162 @cindex Objective C support
6163 @cindex Support for Objective C
6165 Automake includes some support for Objective C.
6167 Any package including Objective C code must define the output variable
6168 @code{OBJC} in @file{configure.ac}; the simplest way to do this is to use
6169 the @code{AC_PROG_OBJC} macro (@pxref{Particular Programs, , Particular
6170 Program Checks, autoconf, The Autoconf Manual}).
6172 A few additional variables are defined when an Objective C source file
6173 is seen:
6175 @vtable @code
6176 @item OBJC
6177 The name of the Objective C compiler.
6179 @item OBJCFLAGS
6180 Any flags to pass to the Objective C compiler.
6182 @item AM_OBJCFLAGS
6183 The maintainer's variant of @code{OBJCFLAGS}.
6185 @item OBJCCOMPILE
6186 The command used to actually compile an Objective C source file.  The
6187 file name is appended to form the complete command line.
6189 @item OBJCLINK
6190 The command used to actually link an Objective C program.
6191 @end vtable
6194 @node Unified Parallel C Support
6195 @section Unified Parallel C Support
6197 @cindex Unified Parallel C support
6198 @cindex Support for Unified Parallel C
6200 Automake includes some support for Unified Parallel C.
6202 Any package including Unified Parallel C code must define the output
6203 variable @code{UPC} in @file{configure.ac}; the simplest way to do
6204 this is to use the @code{AM_PROG_UPC} macro (@pxref{Public Macros}).
6206 A few additional variables are defined when a Unified Parallel C
6207 source file is seen:
6209 @vtable @code
6210 @item UPC
6211 The name of the Unified Parallel C compiler.
6213 @item UPCFLAGS
6214 Any flags to pass to the Unified Parallel C compiler.
6216 @item AM_UPCFLAGS
6217 The maintainer's variant of @code{UPCFLAGS}.
6219 @item UPCCOMPILE
6220 The command used to actually compile a Unified Parallel C source file.
6221 The file name is appended to form the complete command line.
6223 @item UPCLINK
6224 The command used to actually link a Unified Parallel C program.
6225 @end vtable
6228 @node Assembly Support
6229 @section Assembly Support
6231 Automake includes some support for assembly code.  There are two forms
6232 of assembler files: normal (@file{*.s}) and preprocessed by @code{CPP}
6233 (@file{*.S} or @file{*.sx}).
6235 @vindex CCAS
6236 @vindex CCASFLAGS
6237 @vindex CPPFLAGS
6238 @vindex AM_CCASFLAGS
6239 @vindex AM_CPPFLAGS
6240 The variable @code{CCAS} holds the name of the compiler used to build
6241 assembly code.  This compiler must work a bit like a C compiler; in
6242 particular it must accept @option{-c} and @option{-o}.  The values of
6243 @code{CCASFLAGS} and @code{AM_CCASFLAGS} (or its per-target
6244 definition) is passed to the compilation.  For preprocessed files,
6245 @code{DEFS}, @code{DEFAULT_INCLUDES}, @code{INCLUDES}, @code{CPPFLAGS}
6246 and @code{AM_CPPFLAGS} are also used.
6248 The autoconf macro @code{AM_PROG_AS} will define @code{CCAS} and
6249 @code{CCASFLAGS} for you (unless they are already set, it simply sets
6250 @code{CCAS} to the C compiler and @code{CCASFLAGS} to the C compiler
6251 flags), but you are free to define these variables by other means.
6253 Only the suffixes @file{.s}, @file{.S}, and @file{.sx} are recognized by
6254 @command{automake} as being files containing assembly code.
6257 @node Fortran 77 Support
6258 @comment  node-name,  next,  previous,  up
6259 @section Fortran 77 Support
6261 @cindex Fortran 77 support
6262 @cindex Support for Fortran 77
6264 Automake includes full support for Fortran 77.
6266 Any package including Fortran 77 code must define the output variable
6267 @code{F77} in @file{configure.ac}; the simplest way to do this is to use
6268 the @code{AC_PROG_F77} macro (@pxref{Particular Programs, , Particular
6269 Program Checks, autoconf, The Autoconf Manual}).
6271 A few additional variables are defined when a Fortran 77 source file is
6272 seen:
6274 @vtable @code
6276 @item F77
6277 The name of the Fortran 77 compiler.
6279 @item FFLAGS
6280 Any flags to pass to the Fortran 77 compiler.
6282 @item AM_FFLAGS
6283 The maintainer's variant of @code{FFLAGS}.
6285 @item RFLAGS
6286 Any flags to pass to the Ratfor compiler.
6288 @item AM_RFLAGS
6289 The maintainer's variant of @code{RFLAGS}.
6291 @item F77COMPILE
6292 The command used to actually compile a Fortran 77 source file.  The file
6293 name is appended to form the complete command line.
6295 @item FLINK
6296 The command used to actually link a pure Fortran 77 program or shared
6297 library.
6299 @end vtable
6301 Automake can handle preprocessing Fortran 77 and Ratfor source files in
6302 addition to compiling them@footnote{Much, if not most, of the
6303 information in the following sections pertaining to preprocessing
6304 Fortran 77 programs was taken almost verbatim from @ref{Catalogue of
6305 Rules, , Catalogue of Rules, make, The GNU Make Manual}.}.  Automake
6306 also contains some support for creating programs and shared libraries
6307 that are a mixture of Fortran 77 and other languages (@pxref{Mixing
6308 Fortran 77 With C and C++}).
6310 These issues are covered in the following sections.
6312 @menu
6313 * Preprocessing Fortran 77::    Preprocessing Fortran 77 sources
6314 * Compiling Fortran 77 Files::  Compiling Fortran 77 sources
6315 * Mixing Fortran 77 With C and C++::  Mixing Fortran 77 With C and C++
6316 @end menu
6319 @node Preprocessing Fortran 77
6320 @comment  node-name,  next,  previous,  up
6321 @subsection Preprocessing Fortran 77
6323 @cindex Preprocessing Fortran 77
6324 @cindex Fortran 77, Preprocessing
6325 @cindex Ratfor programs
6327 @file{N.f} is made automatically from @file{N.F} or @file{N.r}.  This
6328 rule runs just the preprocessor to convert a preprocessable Fortran 77
6329 or Ratfor source file into a strict Fortran 77 source file.  The precise
6330 command used is as follows:
6332 @table @file
6334 @item .F
6335 @code{$(F77) -F $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS)@*
6336 $(AM_FFLAGS) $(FFLAGS)}
6338 @item .r
6339 @code{$(F77) -F $(AM_FFLAGS) $(FFLAGS) $(AM_RFLAGS) $(RFLAGS)}
6341 @end table
6344 @node Compiling Fortran 77 Files
6345 @comment  node-name,  next,  previous,  up
6346 @subsection Compiling Fortran 77 Files
6348 @file{N.o} is made automatically from @file{N.f}, @file{N.F} or
6349 @file{N.r} by running the Fortran 77 compiler.  The precise command used
6350 is as follows:
6352 @table @file
6354 @item .f
6355 @code{$(F77) -c $(AM_FFLAGS) $(FFLAGS)}
6357 @item .F
6358 @code{$(F77) -c $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS)@*
6359 $(AM_FFLAGS) $(FFLAGS)}
6361 @item .r
6362 @code{$(F77) -c $(AM_FFLAGS) $(FFLAGS) $(AM_RFLAGS) $(RFLAGS)}
6364 @end table
6367 @node Mixing Fortran 77 With C and C++
6368 @comment  node-name,  next,  previous,  up
6369 @subsection Mixing Fortran 77 With C and C++
6371 @cindex Fortran 77, mixing with C and C++
6372 @cindex Mixing Fortran 77 with C and C++
6373 @cindex Linking Fortran 77 with C and C++
6374 @cindex cfortran
6375 @cindex Mixing Fortran 77 with C and/or C++
6377 Automake currently provides @emph{limited} support for creating programs
6378 and shared libraries that are a mixture of Fortran 77 and C and/or C++.
6379 However, there are many other issues related to mixing Fortran 77 with
6380 other languages that are @emph{not} (currently) handled by Automake, but
6381 that are handled by other packages@footnote{For example,
6382 @uref{http://www-zeus.desy.de/~burow/cfortran/, the cfortran package}
6383 addresses all of these inter-language issues, and runs under nearly all
6384 Fortran 77, C and C++ compilers on nearly all platforms.  However,
6385 @command{cfortran} is not yet Free Software, but it will be in the next
6386 major release.}.
6388 Automake can help in two ways:
6390 @enumerate
6391 @item
6392 Automatic selection of the linker depending on which combinations of
6393 source code.
6395 @item
6396 Automatic selection of the appropriate linker flags (e.g., @option{-L} and
6397 @option{-l}) to pass to the automatically selected linker in order to link
6398 in the appropriate Fortran 77 intrinsic and run-time libraries.
6400 @cindex @code{FLIBS}, defined
6401 @vindex FLIBS
6402 These extra Fortran 77 linker flags are supplied in the output variable
6403 @code{FLIBS} by the @code{AC_F77_LIBRARY_LDFLAGS} Autoconf macro
6404 supplied with newer versions of Autoconf (Autoconf version 2.13 and
6405 later).  @xref{Fortran Compiler, , Fortran Compiler Characteristics,
6406 autoconf, The Autoconf Manual}.
6407 @end enumerate
6409 If Automake detects that a program or shared library (as mentioned in
6410 some @code{_PROGRAMS} or @code{_LTLIBRARIES} primary) contains source
6411 code that is a mixture of Fortran 77 and C and/or C++, then it requires
6412 that the macro @code{AC_F77_LIBRARY_LDFLAGS} be called in
6413 @file{configure.ac}, and that either @code{$(FLIBS)}
6414 appear in the appropriate @code{_LDADD} (for programs) or @code{_LIBADD}
6415 (for shared libraries) variables.  It is the responsibility of the
6416 person writing the @file{Makefile.am} to make sure that @samp{$(FLIBS)}
6417 appears in the appropriate @code{_LDADD} or
6418 @code{_LIBADD} variable.
6420 @cindex Mixed language example
6421 @cindex Example, mixed language
6423 For example, consider the following @file{Makefile.am}:
6425 @example
6426 bin_PROGRAMS = foo
6427 foo_SOURCES  = main.cc foo.f
6428 foo_LDADD    = libfoo.la $(FLIBS)
6430 pkglib_LTLIBRARIES = libfoo.la
6431 libfoo_la_SOURCES  = bar.f baz.c zardoz.cc
6432 libfoo_la_LIBADD   = $(FLIBS)
6433 @end example
6435 In this case, Automake will insist that @code{AC_F77_LIBRARY_LDFLAGS}
6436 is mentioned in @file{configure.ac}.  Also, if @samp{$(FLIBS)} hadn't
6437 been mentioned in @code{foo_LDADD} and @code{libfoo_la_LIBADD}, then
6438 Automake would have issued a warning.
6440 @menu
6441 * How the Linker is Chosen::    Automatic linker selection
6442 @end menu
6444 @node How the Linker is Chosen
6445 @comment  node-name,  next,  previous,  up
6446 @subsubsection How the Linker is Chosen
6448 @cindex Automatic linker selection
6449 @cindex Selecting the linker automatically
6451 When a program or library mixes several languages, Automake choose the
6452 linker according to the following priorities.  (The names in
6453 parentheses are the variables containing the link command.)
6455 @enumerate
6456 @item
6457 @vindex GCJLINK
6458 Native Java (@code{GCJLINK})
6459 @item
6460 @vindex CXXLINK
6461 C++ (@code{CXXLINK})
6462 @item
6463 @vindex F77LINK
6464 Fortran 77 (@code{F77LINK})
6465 @item
6466 @vindex FCLINK
6467 Fortran (@code{FCLINK})
6468 @item
6469 @vindex OBJCLINK
6470 Objective C (@code{OBJCLINK})
6471 @item
6472 @vindex UPCLINK
6473 Unified Parallel C (@code{UPCLINK})
6474 @item
6475 @vindex LINK
6476 C (@code{LINK})
6477 @end enumerate
6479 For example, if Fortran 77, C and C++ source code is compiled
6480 into a program, then the C++ linker will be used.  In this case, if the
6481 C or Fortran 77 linkers required any special libraries that weren't
6482 included by the C++ linker, then they must be manually added to an
6483 @code{_LDADD} or @code{_LIBADD} variable by the user writing the
6484 @file{Makefile.am}.
6486 Automake only looks at the file names listed in @file{_SOURCES}
6487 variables to choose the linker, and defaults to the C linker.
6488 Sometimes this is inconvenient because you are linking against a
6489 library written in another language and would like to set the linker
6490 more appropriately.  @xref{Libtool Convenience Libraries}, for a
6491 trick with @code{nodist_EXTRA_@dots{}_SOURCES}.
6494 @node Fortran 9x Support
6495 @comment  node-name,  next,  previous,  up
6496 @section Fortran 9x Support
6498 @cindex Fortran 9x support
6499 @cindex Support for Fortran 9x
6501 Automake includes support for Fortran 9x.
6503 Any package including Fortran 9x code must define the output variable
6504 @code{FC} in @file{configure.ac}; the simplest way to do this is to use
6505 the @code{AC_PROG_FC} macro (@pxref{Particular Programs, , Particular
6506 Program Checks, autoconf, The Autoconf Manual}).
6508 A few additional variables are defined when a Fortran 9x source file is
6509 seen:
6511 @vtable @code
6513 @item FC
6514 The name of the Fortran 9x compiler.
6516 @item FCFLAGS
6517 Any flags to pass to the Fortran 9x compiler.
6519 @item AM_FCFLAGS
6520 The maintainer's variant of @code{FCFLAGS}.
6522 @item FCCOMPILE
6523 The command used to actually compile a Fortran 9x source file.  The file
6524 name is appended to form the complete command line.
6526 @item FCLINK
6527 The command used to actually link a pure Fortran 9x program or shared
6528 library.
6530 @end vtable
6532 @menu
6533 * Compiling Fortran 9x Files::  Compiling Fortran 9x sources
6534 @end menu
6536 @node Compiling Fortran 9x Files
6537 @comment  node-name,  next,  previous,  up
6538 @subsection Compiling Fortran 9x Files
6540 @file{@var{N}.o} is made automatically from @file{@var{N}.f90},
6541 @file{@var{N}.f95}, @file{@var{N}.f03}, or @file{@var{N}.f08}
6542 by running the Fortran 9x compiler.  The precise command used
6543 is as follows:
6545 @table @file
6547 @item .f90
6548 @code{$(FC) $(AM_FCFLAGS) $(FCFLAGS) -c $(FCFLAGS_f90) $<}
6550 @item .f95
6551 @code{$(FC) $(AM_FCFLAGS) $(FCFLAGS) -c $(FCFLAGS_f95) $<}
6553 @item .f03
6554 @code{$(FC) $(AM_FCFLAGS) $(FCFLAGS) -c $(FCFLAGS_f03) $<}
6556 @item .f08
6557 @code{$(FC) $(AM_FCFLAGS) $(FCFLAGS) -c $(FCFLAGS_f08) $<}
6559 @end table
6561 @node Java Support
6562 @comment  node-name,  next,  previous,  up
6563 @section Java Support
6565 @cindex Java support
6566 @cindex Support for Java
6568 Automake includes support for compiled Java, using @command{gcj}, the Java
6569 front end to the GNU Compiler Collection.
6571 Any package including Java code to be compiled must define the output
6572 variable @code{GCJ} in @file{configure.ac}; the variable @code{GCJFLAGS}
6573 must also be defined somehow (either in @file{configure.ac} or
6574 @file{Makefile.am}).  The simplest way to do this is to use the
6575 @code{AM_PROG_GCJ} macro.
6577 @vindex GCJFLAGS
6579 By default, programs including Java source files are linked with
6580 @command{gcj}.
6582 As always, the contents of @code{AM_GCJFLAGS} are passed to every
6583 compilation invoking @command{gcj} (in its role as an ahead-of-time
6584 compiler, when invoking it to create @file{.class} files,
6585 @code{AM_JAVACFLAGS} is used instead).  If it is necessary to pass
6586 options to @command{gcj} from @file{Makefile.am}, this variable, and not
6587 the user variable @code{GCJFLAGS}, should be used.
6589 @vindex AM_GCJFLAGS
6591 @command{gcj} can be used to compile @file{.java}, @file{.class},
6592 @file{.zip}, or @file{.jar} files.
6594 When linking, @command{gcj} requires that the main class be specified
6595 using the @option{--main=} option.  The easiest way to do this is to use
6596 the @code{_LDFLAGS} variable for the program.
6599 @node Vala Support
6600 @comment  node-name,  next,  previous,  up
6601 @section Vala Support
6603 @cindex Vala Support
6604 @cindex Support for Vala
6606 Automake provides support for Vala compilation
6607 (@uref{http://live.gnome.org/@/Vala}).
6609 @example
6610 foo_SOURCES = foo.vala bar.vala zardoc.c
6611 @end example
6613 Any @file{.vala} file listed in a @code{_SOURCE} variable will be
6614 compiled into C code by the Vala compiler.
6616 Automake ships with an Autoconf macro called @code{AM_PROG_VALAC}
6617 that will locate the Vala compiler and optionally check its version
6618 number.
6620 @defmac AM_PROG_VALAC (@ovar{MINIMUM-VERSION})
6621 Try to find a Vala compiler in @env{PATH}. If it is found, the variable
6622 @code{VALAC} is set. Optionally a minimum release number of the compiler
6623 can be requested:
6625 @example
6626 AM_PROG_VALAC([0.1.3])
6627 @end example
6628 @end defmac
6630 There are a few variables that are used when compiling Vala sources:
6632 @vtable @code
6633 @item VALAC
6634 Path to the the Vala compiler.
6636 @item VALAFLAGS
6637 Additional arguments for the Vala compiler.
6639 @item AM_VALAFLAGS
6640 The maintainer's variant of @code{VALAFLAGS}.
6642 @item PKGNAME
6643 The pkg-config
6644 (@uref{http://www.freedesktop.org/@/software/@/pkgconfig/}) and VAPI
6645 (Vala API definition file) name to use when building Vala based library.
6647 @example
6648 lib_LTLIBRARIES = libfoo.la
6649 libfoo_la_PKGNAME = foo-2.0
6650 libfoo_la_SOURCES = foo.vala
6651 @end example
6652 @end vtable
6655 @node Support for Other Languages
6656 @comment  node-name,  next,  previous,  up
6657 @section Support for Other Languages
6659 Automake currently only includes full support for C, C++ (@pxref{C++
6660 Support}), Objective C (@pxref{Objective C Support}), Fortran 77
6661 (@pxref{Fortran 77 Support}), Fortran 9x (@pxref{Fortran 9x Support}),
6662 and Java (@pxref{Java Support}).  There is only rudimentary support for other
6663 languages, support for which will be improved based on user demand.
6665 Some limited support for adding your own languages is available via the
6666 suffix rule handling (@pxref{Suffixes}).
6669 @node ANSI
6670 @section Automatic de-ANSI-fication
6672 @cindex de-ANSI-fication, defined
6674 The features described in this section are obsolete; you should not
6675 used any of them in new code, and they may be withdrawn in future
6676 Automake releases.
6678 When the C language was standardized in 1989, there was a long
6679 transition period where package developers needed to worry about
6680 porting to older systems that did not support ANSI C by default.
6681 These older systems are no longer in practical use and are no longer
6682 supported by their original suppliers, so developers need not worry
6683 about this problem any more.
6685 Automake allows you to write packages that are portable to K&R C by
6686 @dfn{de-ANSI-fying} each source file before the actual compilation takes
6687 place.
6689 @vindex AUTOMAKE_OPTIONS
6690 @opindex ansi2knr
6692 If the @file{Makefile.am} variable @code{AUTOMAKE_OPTIONS}
6693 (@pxref{Options}) contains the option @option{ansi2knr} then code to
6694 handle de-ANSI-fication is inserted into the generated
6695 @file{Makefile.in}.
6697 This causes each C source file in the directory to be treated as ANSI C@.
6698 If an ANSI C compiler is available, it is used.  If no ANSI C compiler
6699 is available, the @command{ansi2knr} program is used to convert the source
6700 files into K&R C, which is then compiled.
6702 The @command{ansi2knr} program is simple-minded.  It assumes the source
6703 code will be formatted in a particular way; see the @command{ansi2knr} man
6704 page for details.
6706 @acindex AM_C_PROTOTYPES
6707 Support for the obsolete de-ANSI-fication feature
6708 requires the source files @file{ansi2knr.c}
6709 and @file{ansi2knr.1} to be in the same package as the ANSI C source;
6710 these files are distributed with Automake.  Also, the package
6711 @file{configure.ac} must call the macro @code{AM_C_PROTOTYPES}
6712 (@pxref{Macros}).
6714 Automake also handles finding the @command{ansi2knr} support files in some
6715 other directory in the current package.  This is done by prepending the
6716 relative path to the appropriate directory to the @command{ansi2knr}
6717 option.  For instance, suppose the package has ANSI C code in the
6718 @file{src} and @file{lib} subdirectories.  The files @file{ansi2knr.c} and
6719 @file{ansi2knr.1} appear in @file{lib}.  Then this could appear in
6720 @file{src/Makefile.am}:
6722 @example
6723 AUTOMAKE_OPTIONS = ../lib/ansi2knr
6724 @end example
6726 If no directory prefix is given, the files are assumed to be in the
6727 current directory.
6729 Note that automatic de-ANSI-fication will not work when the package is
6730 being built for a different host architecture.  That is because @command{automake}
6731 currently has no way to build @command{ansi2knr} for the build machine.
6733 @c FIXME: this paragraph might be better moved to an `upgrading' section.
6734 @cindex @code{LTLIBOBJS} and @code{ansi2knr}
6735 @cindex @code{LIBOBJS} and @code{ansi2knr}
6736 @cindex @code{ansi2knr} and @code{LTLIBOBJS}
6737 @cindex @code{ansi2knr} and @code{LIBOBJS}
6738 Using @code{LIBOBJS} with source de-ANSI-fication used to require
6739 hand-crafted code in @file{configure} to append @samp{$U} to basenames
6740 in @code{LIBOBJS}.  This is no longer true today.  Starting with version
6741 2.54, Autoconf takes care of rewriting @code{LIBOBJS} and
6742 @code{LTLIBOBJS}.  (@pxref{AC_LIBOBJ vs LIBOBJS, , @code{AC_LIBOBJ}
6743 vs.@: @code{LIBOBJS}, autoconf, The Autoconf Manual})
6745 @node Dependencies
6746 @section Automatic dependency tracking
6748 As a developer it is often painful to continually update the
6749 @file{Makefile.in} whenever the include-file dependencies change in a
6750 project.  Automake supplies a way to automatically track dependency
6751 changes (@pxref{Dependency Tracking}).
6753 @cindex Dependency tracking
6754 @cindex Automatic dependency tracking
6756 Automake always uses complete dependencies for a compilation,
6757 including system headers.  Automake's model is that dependency
6758 computation should be a side effect of the build.  To this end,
6759 dependencies are computed by running all compilations through a
6760 special wrapper program called @command{depcomp}.  @command{depcomp}
6761 understands how to coax many different C and C++ compilers into
6762 generating dependency information in the format it requires.
6763 @samp{automake -a} will install @command{depcomp} into your source
6764 tree for you.  If @command{depcomp} can't figure out how to properly
6765 invoke your compiler, dependency tracking will simply be disabled for
6766 your build.
6768 @cindex @command{depcomp}
6770 Experience with earlier versions of Automake (@pxref{Dependency
6771 Tracking Evolution}) taught us that it is not reliable to generate
6772 dependencies only on the maintainer's system, as configurations vary
6773 too much.  So instead Automake implements dependency tracking at build
6774 time.
6776 Automatic dependency tracking can be suppressed by putting
6777 @option{no-dependencies} in the variable @code{AUTOMAKE_OPTIONS}, or
6778 passing @option{no-dependencies} as an argument to @code{AM_INIT_AUTOMAKE}
6779 (this should be the preferred way).  Or, you can invoke @command{automake}
6780 with the @option{-i} option.  Dependency tracking is enabled by default.
6782 @vindex AUTOMAKE_OPTIONS
6783 @opindex no-dependencies
6785 The person building your package also can choose to disable dependency
6786 tracking by configuring with @option{--disable-dependency-tracking}.
6788 @cindex Disabling dependency tracking
6789 @cindex Dependency tracking, disabling
6792 @node EXEEXT
6793 @section Support for executable extensions
6795 @cindex Executable extension
6796 @cindex Extension, executable
6797 @cindex Windows
6799 On some platforms, such as Windows, executables are expected to have an
6800 extension such as @file{.exe}.  On these platforms, some compilers (GCC
6801 among them) will automatically generate @file{foo.exe} when asked to
6802 generate @file{foo}.
6804 Automake provides mostly-transparent support for this.  Unfortunately
6805 @emph{mostly} doesn't yet mean @emph{fully}.  Until the English
6806 dictionary is revised, you will have to assist Automake if your package
6807 must support those platforms.
6809 One thing you must be aware of is that, internally, Automake rewrites
6810 something like this:
6812 @example
6813 bin_PROGRAMS = liver
6814 @end example
6816 to this:
6818 @example
6819 bin_PROGRAMS = liver$(EXEEXT)
6820 @end example
6822 The targets Automake generates are likewise given the @samp{$(EXEEXT)}
6823 extension.
6825 The variables @code{TESTS} and @code{XFAIL_TESTS} (@pxref{Simple Tests}) are also
6826 rewritten if they contain filenames that have been declared as programs
6827 in the same @file{Makefile}.  (This is mostly useful when some programs
6828 from @code{check_PROGRAMS} are listed in @code{TESTS}.)
6830 However, Automake cannot apply this rewriting to @command{configure}
6831 substitutions.  This means that if you are conditionally building a
6832 program using such a substitution, then your @file{configure.ac} must
6833 take care to add @samp{$(EXEEXT)} when constructing the output variable.
6835 With Autoconf 2.13 and earlier, you must explicitly use @code{AC_EXEEXT}
6836 to get this support.  With Autoconf 2.50, @code{AC_EXEEXT} is run
6837 automatically if you configure a compiler (say, through
6838 @code{AC_PROG_CC}).
6840 Sometimes maintainers like to write an explicit link rule for their
6841 program.  Without executable extension support, this is easy---you
6842 simply write a rule whose target is the name of the program.  However,
6843 when executable extension support is enabled, you must instead add the
6844 @samp{$(EXEEXT)} suffix.
6846 Unfortunately, due to the change in Autoconf 2.50, this means you must
6847 always add this extension.  However, this is a problem for maintainers
6848 who know their package will never run on a platform that has
6849 executable extensions.  For those maintainers, the @option{no-exeext}
6850 option (@pxref{Options}) will disable this feature.  This works in a
6851 fairly ugly way; if @option{no-exeext} is seen, then the presence of a
6852 rule for a target named @code{foo} in @file{Makefile.am} will override
6853 an @command{automake}-generated rule for @samp{foo$(EXEEXT)}.  Without
6854 the @option{no-exeext} option, this use will give a diagnostic.
6857 @node Other Objects
6858 @chapter Other Derived Objects
6860 Automake can handle derived objects that are not C programs.  Sometimes
6861 the support for actually building such objects must be explicitly
6862 supplied, but Automake will still automatically handle installation and
6863 distribution.
6865 @menu
6866 * Scripts::                     Executable scripts
6867 * Headers::                     Header files
6868 * Data::                        Architecture-independent data files
6869 * Sources::                     Derived sources
6870 @end menu
6873 @node Scripts
6874 @section Executable Scripts
6876 @cindex @code{_SCRIPTS} primary, defined
6877 @cindex @code{SCRIPTS} primary, defined
6878 @cindex Primary variable, @code{SCRIPTS}
6879 @vindex _SCRIPTS
6880 @cindex Installing scripts
6882 It is possible to define and install programs that are scripts.  Such
6883 programs are listed using the @code{SCRIPTS} primary name.  When the
6884 script is distributed in its final, installable form, the
6885 @file{Makefile} usually looks as follows:
6886 @vindex SCRIPTS
6888 @example
6889 # Install my_script in $(bindir) and distribute it.
6890 dist_bin_SCRIPTS = my_script
6891 @end example
6893 Script are not distributed by default; as we have just seen, those
6894 that should be distributed can be specified using a @code{dist_}
6895 prefix as with other primaries.
6897 @cindex @code{SCRIPTS}, installation directories
6898 @vindex bin_SCRIPTS
6899 @vindex sbin_SCRIPTS
6900 @vindex libexec_SCRIPTS
6901 @vindex pkgdata_SCRIPTS
6902 @vindex noinst_SCRIPTS
6903 @vindex check_SCRIPTS
6905 Scripts can be installed in @code{bindir}, @code{sbindir},
6906 @code{libexecdir}, or @code{pkgdatadir}.
6908 Scripts that need not be installed can be listed in
6909 @code{noinst_SCRIPTS}, and among them, those which are needed only by
6910 @samp{make check} should go in @code{check_SCRIPTS}.
6912 When a script needs to be built, the @file{Makefile.am} should include
6913 the appropriate rules.  For instance the @command{automake} program
6914 itself is a Perl script that is generated from @file{automake.in}.
6915 Here is how this is handled:
6917 @example
6918 bin_SCRIPTS = automake
6919 CLEANFILES = $(bin_SCRIPTS)
6920 EXTRA_DIST = automake.in
6922 do_subst = sed -e 's,[@@]datadir[@@],$(datadir),g' \
6923             -e 's,[@@]PERL[@@],$(PERL),g' \
6924             -e 's,[@@]PACKAGE[@@],$(PACKAGE),g' \
6925             -e 's,[@@]VERSION[@@],$(VERSION),g' \
6926             @dots{}
6928 automake: automake.in Makefile
6929         $(do_subst) < $(srcdir)/automake.in > automake
6930         chmod +x automake
6931 @end example
6933 Such scripts for which a build rule has been supplied need to be
6934 deleted explicitly using @code{CLEANFILES} (@pxref{Clean}), and their
6935 sources have to be distributed, usually with @code{EXTRA_DIST}
6936 (@pxref{Basics of Distribution}).
6938 Another common way to build scripts is to process them from
6939 @file{configure} with @code{AC_CONFIG_FILES}.  In this situation
6940 Automake knows which files should be cleaned and distributed, and what
6941 the rebuild rules should look like.
6943 For instance if @file{configure.ac} contains
6945 @example
6946 AC_CONFIG_FILES([src/my_script], [chmod +x src/my_script])
6947 @end example
6949 @noindent
6950 to build @file{src/my_script} from @file{src/my_script.in}, then a
6951 @file{src/Makefile.am} to install this script in @code{$(bindir)} can
6952 be as simple as
6954 @example
6955 bin_SCRIPTS = my_script
6956 CLEANFILES = $(bin_SCRIPTS)
6957 @end example
6959 @noindent
6960 There is no need for @code{EXTRA_DIST} or any build rule: Automake
6961 infers them from @code{AC_CONFIG_FILES} (@pxref{Requirements}).
6962 @code{CLEANFILES} is still useful, because by default Automake will
6963 clean targets of @code{AC_CONFIG_FILES} in @code{distclean}, not
6964 @code{clean}.
6966 Although this looks simpler, building scripts this way has one
6967 drawback: directory variables such as @code{$(datadir)} are not fully
6968 expanded and may refer to other directory variables.
6970 @node Headers
6971 @section Header files
6973 @cindex @code{_HEADERS} primary, defined
6974 @cindex @code{HEADERS} primary, defined
6975 @cindex Primary variable, @code{HEADERS}
6976 @vindex _HEADERS
6977 @vindex noinst_HEADERS
6978 @cindex @code{HEADERS}, installation directories
6979 @cindex Installing headers
6980 @vindex include_HEADERS
6981 @vindex oldinclude_HEADERS
6982 @vindex pkginclude_HEADERS
6985 Header files that must be installed are specified by the
6986 @code{HEADERS} family of variables.  Headers can be installed in
6987 @code{includedir}, @code{oldincludedir}, @code{pkgincludedir} or any
6988 other directory you may have defined (@pxref{Uniform}).  For instance,
6990 @example
6991 include_HEADERS = foo.h bar/bar.h
6992 @end example
6994 @noindent
6995 will install the two files as @file{$(includedir)/foo.h} and
6996 @file{$(includedir)/bar.h}.
6998 The @code{nobase_} prefix is also supported,
7000 @example
7001 nobase_include_HEADERS = foo.h bar/bar.h
7002 @end example
7004 @noindent
7005 will install the two files as @file{$(includedir)/foo.h} and
7006 @file{$(includedir)/bar/bar.h} (@pxref{Alternative}).
7008 @vindex noinst_HEADERS
7009 Usually, only header files that accompany installed libraries need to
7010 be installed.  Headers used by programs or convenience libraries are
7011 not installed.  The @code{noinst_HEADERS} variable can be used for
7012 such headers.  However when the header actually belongs to a single
7013 convenience library or program, we recommend listing it in the
7014 program's or library's @code{_SOURCES} variable (@pxref{Program
7015 Sources}) instead of in @code{noinst_HEADERS}.  This is clearer for
7016 the @file{Makefile.am} reader.  @code{noinst_HEADERS} would be the
7017 right variable to use in a directory containing only headers and no
7018 associated library or program.
7020 All header files must be listed somewhere; in a @code{_SOURCES}
7021 variable or in a @code{_HEADERS} variable.  Missing ones will not
7022 appear in the distribution.
7024 For header files that are built and must not be distributed, use the
7025 @code{nodist_} prefix as in @code{nodist_include_HEADERS} or
7026 @code{nodist_prog_SOURCES}.  If these generated headers are needed
7027 during the build, you must also ensure they exist before they are
7028 used (@pxref{Sources}).
7031 @node Data
7032 @section Architecture-independent data files
7034 @cindex @code{_DATA} primary, defined
7035 @cindex @code{DATA} primary, defined
7036 @cindex Primary variable, @code{DATA}
7037 @vindex _DATA
7039 Automake supports the installation of miscellaneous data files using the
7040 @code{DATA} family of variables.
7041 @vindex DATA
7043 @vindex data_DATA
7044 @vindex sysconf_DATA
7045 @vindex sharedstate_DATA
7046 @vindex localstate_DATA
7047 @vindex pkgdata_DATA
7049 Such data can be installed in the directories @code{datadir},
7050 @code{sysconfdir}, @code{sharedstatedir}, @code{localstatedir}, or
7051 @code{pkgdatadir}.
7053 By default, data files are @emph{not} included in a distribution.  Of
7054 course, you can use the @code{dist_} prefix to change this on a
7055 per-variable basis.
7057 Here is how Automake declares its auxiliary data files:
7059 @example
7060 dist_pkgdata_DATA = clean-kr.am clean.am @dots{}
7061 @end example
7064 @node Sources
7065 @section Built Sources
7067 Because Automake's automatic dependency tracking works as a side-effect
7068 of compilation (@pxref{Dependencies}) there is a bootstrap issue: a
7069 target should not be compiled before its dependencies are made, but
7070 these dependencies are unknown until the target is first compiled.
7072 Ordinarily this is not a problem, because dependencies are distributed
7073 sources: they preexist and do not need to be built.  Suppose that
7074 @file{foo.c} includes @file{foo.h}.  When it first compiles
7075 @file{foo.o}, @command{make} only knows that @file{foo.o} depends on
7076 @file{foo.c}.  As a side-effect of this compilation @command{depcomp}
7077 records the @file{foo.h} dependency so that following invocations of
7078 @command{make} will honor it.  In these conditions, it's clear there is
7079 no problem: either @file{foo.o} doesn't exist and has to be built
7080 (regardless of the dependencies), or accurate dependencies exist and
7081 they can be used to decide whether @file{foo.o} should be rebuilt.
7083 It's a different story if @file{foo.h} doesn't exist by the first
7084 @command{make} run.  For instance, there might be a rule to build
7085 @file{foo.h}.  This time @file{file.o}'s build will fail because the
7086 compiler can't find @file{foo.h}.  @command{make} failed to trigger the
7087 rule to build @file{foo.h} first by lack of dependency information.
7089 @vindex BUILT_SOURCES
7090 @cindex @code{BUILT_SOURCES}, defined
7092 The @code{BUILT_SOURCES} variable is a workaround for this problem.  A
7093 source file listed in @code{BUILT_SOURCES} is made on @samp{make all}
7094 or @samp{make check} (or even @samp{make install}) before other
7095 targets are processed.  However, such a source file is not
7096 @emph{compiled} unless explicitly requested by mentioning it in some
7097 other @code{_SOURCES} variable.
7099 So, to conclude our introductory example, we could use
7100 @samp{BUILT_SOURCES = foo.h} to ensure @file{foo.h} gets built before
7101 any other target (including @file{foo.o}) during @samp{make all} or
7102 @samp{make check}.
7104 @code{BUILT_SOURCES} is actually a bit of a misnomer, as any file which
7105 must be created early in the build process can be listed in this
7106 variable.  Moreover, all built sources do not necessarily have to be
7107 listed in @code{BUILT_SOURCES}.  For instance, a generated @file{.c} file
7108 doesn't need to appear in @code{BUILT_SOURCES} (unless it is included by
7109 another source), because it's a known dependency of the associated
7110 object.
7112 It might be important to emphasize that @code{BUILT_SOURCES} is
7113 honored only by @samp{make all}, @samp{make check} and @samp{make
7114 install}.  This means you cannot build a specific target (e.g.,
7115 @samp{make foo}) in a clean tree if it depends on a built source.
7116 However it will succeed if you have run @samp{make all} earlier,
7117 because accurate dependencies are already available.
7119 The next section illustrates and discusses the handling of built sources
7120 on a toy example.
7122 @menu
7123 * Built Sources Example::       Several ways to handle built sources.
7124 @end menu
7126 @node Built Sources Example
7127 @subsection Built Sources Example
7129 Suppose that @file{foo.c} includes @file{bindir.h}, which is
7130 installation-dependent and not distributed: it needs to be built.  Here
7131 @file{bindir.h} defines the preprocessor macro @code{bindir} to the
7132 value of the @command{make} variable @code{bindir} (inherited from
7133 @file{configure}).
7135 We suggest several implementations below.  It's not meant to be an
7136 exhaustive listing of all ways to handle built sources, but it will give
7137 you a few ideas if you encounter this issue.
7139 @subsubheading First Try
7141 This first implementation will illustrate the bootstrap issue mentioned
7142 in the previous section (@pxref{Sources}).
7144 Here is a tentative @file{Makefile.am}.
7146 @example
7147 # This won't work.
7148 bin_PROGRAMS = foo
7149 foo_SOURCES = foo.c
7150 nodist_foo_SOURCES = bindir.h
7151 CLEANFILES = bindir.h
7152 bindir.h: Makefile
7153         echo '#define bindir "$(bindir)"' >$@@
7154 @end example
7156 This setup doesn't work, because Automake doesn't know that @file{foo.c}
7157 includes @file{bindir.h}.  Remember, automatic dependency tracking works
7158 as a side-effect of compilation, so the dependencies of @file{foo.o} will
7159 be known only after @file{foo.o} has been compiled (@pxref{Dependencies}).
7160 The symptom is as follows.
7162 @example
7163 % make
7164 source='foo.c' object='foo.o' libtool=no \
7165 depfile='.deps/foo.Po' tmpdepfile='.deps/foo.TPo' \
7166 depmode=gcc /bin/sh ./depcomp \
7167 gcc -I. -I. -g -O2 -c `test -f 'foo.c' || echo './'`foo.c
7168 foo.c:2: bindir.h: No such file or directory
7169 make: *** [foo.o] Error 1
7170 @end example
7172 In this example @file{bindir.h} is not distributed nor installed, and
7173 it is not even being built on-time.  One may wonder if the
7174 @samp{nodist_foo_SOURCES = bindir.h} line has any use at all.  This
7175 line simply states that @file{bindir.h} is a source of @code{foo}, so
7176 for instance, it should be inspected while generating tags
7177 (@pxref{Tags}).  In other words, it does not help our present problem,
7178 and the build would fail identically without it.
7180 @subsubheading Using @code{BUILT_SOURCES}
7182 A solution is to require @file{bindir.h} to be built before anything
7183 else.  This is what @code{BUILT_SOURCES} is meant for (@pxref{Sources}).
7185 @example
7186 bin_PROGRAMS = foo
7187 foo_SOURCES = foo.c
7188 nodist_foo_SOURCES = bindir.h
7189 BUILT_SOURCES = bindir.h
7190 CLEANFILES = bindir.h
7191 bindir.h: Makefile
7192         echo '#define bindir "$(bindir)"' >$@@
7193 @end example
7195 See how @file{bindir.h} gets built first:
7197 @example
7198 % make
7199 echo '#define bindir "/usr/local/bin"' >bindir.h
7200 make  all-am
7201 make[1]: Entering directory `/home/adl/tmp'
7202 source='foo.c' object='foo.o' libtool=no \
7203 depfile='.deps/foo.Po' tmpdepfile='.deps/foo.TPo' \
7204 depmode=gcc /bin/sh ./depcomp \
7205 gcc -I. -I. -g -O2 -c `test -f 'foo.c' || echo './'`foo.c
7206 gcc  -g -O2   -o foo  foo.o
7207 make[1]: Leaving directory `/home/adl/tmp'
7208 @end example
7210 However, as said earlier, @code{BUILT_SOURCES} applies only to the
7211 @code{all}, @code{check}, and @code{install} targets.  It still fails
7212 if you try to run @samp{make foo} explicitly:
7214 @example
7215 % make clean
7216 test -z "bindir.h" || rm -f bindir.h
7217 test -z "foo" || rm -f foo
7218 rm -f *.o
7219 % : > .deps/foo.Po # Suppress previously recorded dependencies
7220 % make foo
7221 source='foo.c' object='foo.o' libtool=no \
7222 depfile='.deps/foo.Po' tmpdepfile='.deps/foo.TPo' \
7223 depmode=gcc /bin/sh ./depcomp \
7224 gcc -I. -I. -g -O2 -c `test -f 'foo.c' || echo './'`foo.c
7225 foo.c:2: bindir.h: No such file or directory
7226 make: *** [foo.o] Error 1
7227 @end example
7229 @subsubheading Recording Dependencies manually
7231 Usually people are happy enough with @code{BUILT_SOURCES} because they
7232 never build targets such as @samp{make foo} before @samp{make all}, as
7233 in the previous example.  However if this matters to you, you can
7234 avoid @code{BUILT_SOURCES} and record such dependencies explicitly in
7235 the @file{Makefile.am}.
7237 @example
7238 bin_PROGRAMS = foo
7239 foo_SOURCES = foo.c
7240 nodist_foo_SOURCES = bindir.h
7241 foo.$(OBJEXT): bindir.h
7242 CLEANFILES = bindir.h
7243 bindir.h: Makefile
7244         echo '#define bindir "$(bindir)"' >$@@
7245 @end example
7247 You don't have to list @emph{all} the dependencies of @file{foo.o}
7248 explicitly, only those that might need to be built.  If a dependency
7249 already exists, it will not hinder the first compilation and will be
7250 recorded by the normal dependency tracking code.  (Note that after
7251 this first compilation the dependency tracking code will also have
7252 recorded the dependency between @file{foo.o} and
7253 @file{bindir.h}; so our explicit dependency is really useful to
7254 the first build only.)
7256 Adding explicit dependencies like this can be a bit dangerous if you are
7257 not careful enough.  This is due to the way Automake tries not to
7258 overwrite your rules (it assumes you know better than it).
7259 @samp{foo.$(OBJEXT): bindir.h} supersedes any rule Automake may want to
7260 output to build @samp{foo.$(OBJEXT)}.  It happens to work in this case
7261 because Automake doesn't have to output any @samp{foo.$(OBJEXT):}
7262 target: it relies on a suffix rule instead (i.e., @samp{.c.$(OBJEXT):}).
7263 Always check the generated @file{Makefile.in} if you do this.
7265 @subsubheading Build @file{bindir.h} from @file{configure}
7267 It's possible to define this preprocessor macro from @file{configure},
7268 either in @file{config.h} (@pxref{Defining Directories, , Defining
7269 Directories, autoconf, The Autoconf Manual}), or by processing a
7270 @file{bindir.h.in} file using @code{AC_CONFIG_FILES}
7271 (@pxref{Configuration Actions, ,Configuration Actions, autoconf, The
7272 Autoconf Manual}).
7274 At this point it should be clear that building @file{bindir.h} from
7275 @file{configure} works well for this example.  @file{bindir.h} will exist
7276 before you build any target, hence will not cause any dependency issue.
7278 The Makefile can be shrunk as follows.  We do not even have to mention
7279 @file{bindir.h}.
7281 @example
7282 bin_PROGRAMS = foo
7283 foo_SOURCES = foo.c
7284 @end example
7286 However, it's not always possible to build sources from
7287 @file{configure}, especially when these sources are generated by a tool
7288 that needs to be built first.
7290 @subsubheading Build @file{bindir.c}, not @file{bindir.h}.
7292 Another attractive idea is to define @code{bindir} as a variable or
7293 function exported from @file{bindir.o}, and build @file{bindir.c}
7294 instead of @file{bindir.h}.
7296 @example
7297 noinst_PROGRAMS = foo
7298 foo_SOURCES = foo.c bindir.h
7299 nodist_foo_SOURCES = bindir.c
7300 CLEANFILES = bindir.c
7301 bindir.c: Makefile
7302         echo 'const char bindir[] = "$(bindir)";' >$@@
7303 @end example
7305 @file{bindir.h} contains just the variable's declaration and doesn't
7306 need to be built, so it won't cause any trouble.  @file{bindir.o} is
7307 always dependent on @file{bindir.c}, so @file{bindir.c} will get built
7308 first.
7310 @subsubheading Which is best?
7312 There is no panacea, of course.  Each solution has its merits and
7313 drawbacks.
7315 You cannot use @code{BUILT_SOURCES} if the ability to run @samp{make
7316 foo} on a clean tree is important to you.
7318 You won't add explicit dependencies if you are leery of overriding
7319 an Automake rule by mistake.
7321 Building files from @file{./configure} is not always possible, neither
7322 is converting @file{.h} files into @file{.c} files.
7325 @node Other GNU Tools
7326 @chapter Other GNU Tools
7328 Since Automake is primarily intended to generate @file{Makefile.in}s for
7329 use in GNU programs, it tries hard to interoperate with other GNU tools.
7331 @menu
7332 * Emacs Lisp::                  Emacs Lisp
7333 * gettext::                     Gettext
7334 * Libtool::                     Libtool
7335 * Java::                        Java
7336 * Python::                      Python
7337 @end menu
7340 @node Emacs Lisp
7341 @section Emacs Lisp
7343 @cindex @code{_LISP} primary, defined
7344 @cindex @code{LISP} primary, defined
7345 @cindex Primary variable, @code{LISP}
7347 @vindex _LISP
7348 @vindex lisp_LISP
7349 @vindex noinst_LISP
7351 Automake provides some support for Emacs Lisp.  The @code{LISP} primary
7352 is used to hold a list of @file{.el} files.  Possible prefixes for this
7353 primary are @code{lisp_} and @code{noinst_}.  Note that if
7354 @code{lisp_LISP} is defined, then @file{configure.ac} must run
7355 @code{AM_PATH_LISPDIR} (@pxref{Macros}).
7357 @vindex dist_lisp_LISP
7358 @vindex dist_noinst_LISP
7359 Lisp sources are not distributed by default.  You can prefix the
7360 @code{LISP} primary with @code{dist_}, as in @code{dist_lisp_LISP} or
7361 @code{dist_noinst_LISP}, to indicate that these files should be
7362 distributed.
7364 Automake will byte-compile all Emacs Lisp source files using the Emacs
7365 found by @code{AM_PATH_LISPDIR}, if any was found.
7367 Byte-compiled Emacs Lisp files are not portable among all versions of
7368 Emacs, so it makes sense to turn this off if you expect sites to have
7369 more than one version of Emacs installed.  Furthermore, many packages
7370 don't actually benefit from byte-compilation.  Still, we recommend
7371 that you byte-compile your Emacs Lisp sources.  It is probably better
7372 for sites with strange setups to cope for themselves than to make the
7373 installation less nice for everybody else.
7375 There are two ways to avoid byte-compiling.  Historically, we have
7376 recommended the following construct.
7377 @example
7378 lisp_LISP = file1.el file2.el
7379 ELCFILES =
7380 @end example
7381 @noindent
7382 @code{ELCFILES} is an internal Automake variable that normally lists
7383 all @file{.elc} files that must be byte-compiled.  Automake defines
7384 @code{ELCFILES} automatically from @code{lisp_LISP}.  Emptying this
7385 variable explicitly prevents byte-compilation.
7387 Since Automake 1.8, we now recommend using @code{lisp_DATA} instead.  As
7389 @example
7390 lisp_DATA = file1.el file2.el
7391 @end example
7393 Note that these two constructs are not equivalent.  @code{_LISP} will
7394 not install a file if Emacs is not installed, while @code{_DATA} will
7395 always install its files.
7397 @node gettext
7398 @section Gettext
7400 @cindex GNU Gettext support
7401 @cindex Gettext support
7402 @cindex Support for GNU Gettext
7404 If @code{AM_GNU_GETTEXT} is seen in @file{configure.ac}, then Automake
7405 turns on support for GNU gettext, a message catalog system for
7406 internationalization
7407 (@pxref{Top, , Introduction, gettext, GNU gettext utilities}).
7409 The @code{gettext} support in Automake requires the addition of one or
7410 two subdirectories to the package: @file{po} and possibly also @file{intl}.
7411 The latter is needed if @code{AM_GNU_GETTEXT} is not invoked with the
7412 @samp{external} argument, or if @code{AM_GNU_GETTEXT_INTL_SUBDIR} is used.
7413 Automake ensures that these directories exist and are mentioned in
7414 @code{SUBDIRS}.
7416 @node Libtool
7417 @section Libtool
7419 Automake provides support for GNU Libtool (@pxref{Top, , Introduction,
7420 libtool, The Libtool Manual}) with the @code{LTLIBRARIES} primary.
7421 @xref{A Shared Library}.
7424 @node Java
7425 @section Java
7427 @cindex @code{_JAVA} primary, defined
7428 @cindex @code{JAVA} primary, defined
7429 @cindex Primary variable, @code{JAVA}
7431 Automake provides some minimal support for Java compilation with the
7432 @code{JAVA} primary.
7434 Any @file{.java} files listed in a @code{_JAVA} variable will be
7435 compiled with @code{JAVAC} at build time.  By default, @file{.java}
7436 files are not included in the distribution, you should use the
7437 @code{dist_} prefix to distribute them.
7439 Here is a typical setup for distributing @file{.java} files and
7440 installing the @file{.class} files resulting from their compilation.
7442 @example
7443 javadir = $(datadir)/java
7444 dist_java_JAVA = a.java b.java @dots{}
7445 @end example
7447 @cindex @code{JAVA} restrictions
7448 @cindex Restrictions for @code{JAVA}
7450 Currently Automake enforces the restriction that only one @code{_JAVA}
7451 primary can be used in a given @file{Makefile.am}.  The reason for this
7452 restriction is that, in general, it isn't possible to know which
7453 @file{.class} files were generated from which @file{.java} files, so
7454 it would be impossible to know which files to install where.  For
7455 instance, a @file{.java} file can define multiple classes; the resulting
7456 @file{.class} file names cannot be predicted without parsing the
7457 @file{.java} file.
7459 There are a few variables that are used when compiling Java sources:
7461 @vtable @code
7462 @item JAVAC
7463 The name of the Java compiler.  This defaults to @samp{javac}.
7465 @item JAVACFLAGS
7466 The flags to pass to the compiler.  This is considered to be a user
7467 variable (@pxref{User Variables}).
7469 @item AM_JAVACFLAGS
7470 More flags to pass to the Java compiler.  This, and not
7471 @code{JAVACFLAGS}, should be used when it is necessary to put Java
7472 compiler flags into @file{Makefile.am}.
7474 @item JAVAROOT
7475 The value of this variable is passed to the @option{-d} option to
7476 @code{javac}.  It defaults to @samp{$(top_builddir)}.
7478 @item CLASSPATH_ENV
7479 This variable is an @code{sh} expression that is used to set the
7480 @env{CLASSPATH} environment variable on the @code{javac} command line.
7481 (In the future we will probably handle class path setting differently.)
7482 @end vtable
7485 @node Python
7486 @section Python
7488 @cindex @code{_PYTHON} primary, defined
7489 @cindex @code{PYTHON} primary, defined
7490 @cindex Primary variable, @code{PYTHON}
7491 @vindex _PYTHON
7493 Automake provides support for Python compilation with the
7494 @code{PYTHON} primary.  A typical setup is to call
7495 @code{AM_PATH_PYTHON} in @file{configure.ac} and use a line like the
7496 following in @file{Makefile.am}:
7498 @example
7499 python_PYTHON = tree.py leave.py
7500 @end example
7502 Any files listed in a @code{_PYTHON} variable will be byte-compiled
7503 with @command{py-compile} at install time.  @command{py-compile}
7504 actually creates both standard (@file{.pyc}) and optimized
7505 (@file{.pyo}) byte-compiled versions of the source files.  Note that
7506 because byte-compilation occurs at install time, any files listed in
7507 @code{noinst_PYTHON} will not be compiled.  Python source files are
7508 included in the distribution by default, prepend @code{nodist_} (as in
7509 @code{nodist_python_PYTHON}) to omit them.
7511 Automake ships with an Autoconf macro called @code{AM_PATH_PYTHON}
7512 that will determine some Python-related directory variables (see
7513 below).  If you have called @code{AM_PATH_PYTHON} from
7514 @file{configure.ac}, then you may use the variables
7515 @code{python_PYTHON} or @code{pkgpython_PYTHON} to list Python source
7516 files in your @file{Makefile.am}, depending on where you want your files
7517 installed (see the definitions of @code{pythondir} and
7518 @code{pkgpythondir} below).
7520 @defmac AM_PATH_PYTHON (@ovar{VERSION}, @ovar{ACTION-IF-FOUND}, @ovar{ACTION-IF-NOT-FOUND})
7522 Search for a Python interpreter on the system.  This macro takes three
7523 optional arguments.  The first argument, if present, is the minimum
7524 version of Python required for this package: @code{AM_PATH_PYTHON}
7525 will skip any Python interpreter that is older than @var{VERSION}.
7526 If an interpreter is found and satisfies @var{VERSION}, then
7527 @var{ACTION-IF-FOUND} is run.  Otherwise, @var{ACTION-IF-NOT-FOUND} is
7528 run.
7530 If @var{ACTION-IF-NOT-FOUND} is not specified, as in the following
7531 example, the default is to abort @command{configure}.
7533 @example
7534 AM_PATH_PYTHON([2.2])
7535 @end example
7537 @noindent
7538 This is fine when Python is an absolute requirement for the package.
7539 If Python >= 2.5 was only @emph{optional} to the package,
7540 @code{AM_PATH_PYTHON} could be called as follows.
7542 @example
7543 AM_PATH_PYTHON([2.5],, [:])
7544 @end example
7546 @code{AM_PATH_PYTHON} creates the following output variables based on
7547 the Python installation found during configuration.
7548 @end defmac
7550 @vtable @code
7551 @item PYTHON
7552 The name of the Python executable, or @samp{:} if no suitable
7553 interpreter could be found.
7555 Assuming @var{ACTION-IF-NOT-FOUND} is used (otherwise @file{./configure}
7556 will abort if Python is absent), the value of @code{PYTHON} can be used
7557 to setup a conditional in order to disable the relevant part of a build
7558 as follows.
7560 @example
7561   AM_PATH_PYTHON(,, [:])
7562   AM_CONDITIONAL([HAVE_PYTHON], [test "$PYTHON" != :])
7563 @end example
7565 @item PYTHON_VERSION
7566 The Python version number, in the form @var{major}.@var{minor}
7567 (e.g., @samp{2.5}).  This is currently the value of
7568 @samp{sys.version[:3]}.
7570 @item PYTHON_PREFIX
7571 The string @samp{$@{prefix@}}.  This term may be used in future work
7572 that needs the contents of Python's @samp{sys.prefix}, but general
7573 consensus is to always use the value from @command{configure}.
7575 @item PYTHON_EXEC_PREFIX
7576 The string @samp{$@{exec_prefix@}}.  This term may be used in future work
7577 that needs the contents of Python's @samp{sys.exec_prefix}, but general
7578 consensus is to always use the value from @command{configure}.
7580 @item PYTHON_PLATFORM
7581 The canonical name used by Python to describe the operating system, as
7582 given by @samp{sys.platform}.  This value is sometimes needed when
7583 building Python extensions.
7585 @item pythondir
7586 The directory name for the @file{site-packages} subdirectory of the
7587 standard Python install tree.
7589 @item pkgpythondir
7590 This is the directory under @code{pythondir} that is named after the
7591 package.  That is, it is @samp{$(pythondir)/$(PACKAGE)}.  It is provided
7592 as a convenience.
7594 @item pyexecdir
7595 This is the directory where Python extension modules (shared libraries)
7596 should be installed.  An extension module written in C could be declared
7597 as follows to Automake:
7599 @example
7600 pyexec_LTLIBRARIES = quaternion.la
7601 quaternion_SOURCES = quaternion.c support.c support.h
7602 quaternion_la_LDFLAGS = -avoid-version -module
7603 @end example
7605 @item pkgpyexecdir
7606 This is a convenience variable that is defined as
7607 @samp{$(pyexecdir)/$(PACKAGE)}.
7608 @end vtable
7610 All these directory variables have values that start with either
7611 @samp{$@{prefix@}} or @samp{$@{exec_prefix@}} unexpanded.  This works
7612 fine in @file{Makefiles}, but it makes these variables hard to use in
7613 @file{configure}.  This is mandated by the GNU coding standards, so
7614 that the user can run @samp{make prefix=/foo install}.  The Autoconf
7615 manual has a section with more details on this topic
7616 (@pxref{Installation Directory Variables, , Installation Directory
7617 Variables, autoconf, The Autoconf Manual}).  See also @ref{Hard-Coded
7618 Install Paths}.
7621 @node Documentation
7622 @chapter Building documentation
7624 Currently Automake provides support for Texinfo and man pages.
7626 @menu
7627 * Texinfo::                     Texinfo
7628 * Man Pages::                   Man pages
7629 @end menu
7632 @node Texinfo
7633 @section Texinfo
7635 @cindex @code{_TEXINFOS} primary, defined
7636 @cindex @code{TEXINFOS} primary, defined
7637 @cindex Primary variable, @code{TEXINFOS}
7638 @cindex HTML output using Texinfo
7639 @cindex PDF output using Texinfo
7640 @cindex PS output using Texinfo
7641 @cindex DVI output using Texinfo
7642 @vindex _TEXINFOS
7643 @vindex info_TEXINFOS
7645 If the current directory contains Texinfo source, you must declare it
7646 with the @code{TEXINFOS} primary.  Generally Texinfo files are converted
7647 into info, and thus the @code{info_TEXINFOS} variable is most commonly used
7648 here.  Any Texinfo source file must end in the @file{.texi},
7649 @file{.txi}, or @file{.texinfo} extension.  We recommend @file{.texi}
7650 for new manuals.
7652 Automake generates rules to build @file{.info}, @file{.dvi},
7653 @file{.ps}, @file{.pdf} and @file{.html} files from your Texinfo
7654 sources.  Following the GNU Coding Standards, only the @file{.info}
7655 files are built by @samp{make all} and installed by @samp{make
7656 install} (unless you use @option{no-installinfo}, see below).
7657 Furthermore, @file{.info} files are automatically distributed so that
7658 Texinfo is not a prerequisite for installing your package.
7660 @trindex dvi
7661 @trindex html
7662 @trindex pdf
7663 @trindex ps
7664 @trindex install-dvi
7665 @trindex install-html
7666 @trindex install-pdf
7667 @trindex install-ps
7668 Other documentation formats can be built on request by @samp{make
7669 dvi}, @samp{make ps}, @samp{make pdf} and @samp{make html}, and they
7670 can be installed with @samp{make install-dvi}, @samp{make install-ps},
7671 @samp{make install-pdf} and @samp{make install-html} explicitly.
7672 @samp{make uninstall} will remove everything: the Texinfo
7673 documentation installed by default as well as all the above optional
7674 formats.
7676 All these targets can be extended using @samp{-local} rules
7677 (@pxref{Extending}).
7679 @cindex Texinfo flag, @code{VERSION}
7680 @cindex Texinfo flag, @code{UPDATED}
7681 @cindex Texinfo flag, @code{EDITION}
7682 @cindex Texinfo flag, @code{UPDATED-MONTH}
7684 @cindex @code{VERSION} Texinfo flag
7685 @cindex @code{UPDATED} Texinfo flag
7686 @cindex @code{EDITION} Texinfo flag
7687 @cindex @code{UPDATED-MONTH} Texinfo flag
7689 @cindex @file{mdate-sh}
7691 If the @file{.texi} file @code{@@include}s @file{version.texi}, then
7692 that file will be automatically generated.  The file @file{version.texi}
7693 defines four Texinfo flag you can reference using
7694 @code{@@value@{EDITION@}}, @code{@@value@{VERSION@}},
7695 @code{@@value@{UPDATED@}}, and @code{@@value@{UPDATED-MONTH@}}.
7697 @table @code
7698 @item EDITION
7699 @itemx VERSION
7700 Both of these flags hold the version number of your program.  They are
7701 kept separate for clarity.
7703 @item UPDATED
7704 This holds the date the primary @file{.texi} file was last modified.
7706 @item UPDATED-MONTH
7707 This holds the name of the month in which the primary @file{.texi} file
7708 was last modified.
7709 @end table
7711 The @file{version.texi} support requires the @command{mdate-sh}
7712 script; this script is supplied with Automake and automatically
7713 included when @command{automake} is invoked with the
7714 @option{--add-missing} option.
7716 If you have multiple Texinfo files, and you want to use the
7717 @file{version.texi} feature, then you have to have a separate version
7718 file for each Texinfo file.  Automake will treat any include in a
7719 Texinfo file that matches @file{vers*.texi} just as an automatically
7720 generated version file.
7722 Sometimes an info file actually depends on more than one @file{.texi}
7723 file.  For instance, in GNU Hello, @file{hello.texi} includes the file
7724 @file{gpl.texi}.  You can tell Automake about these dependencies using
7725 the @code{@var{texi}_TEXINFOS} variable.  Here is how GNU Hello does it:
7726 @vindex TEXINFOS
7727 @vindex _TEXINFOS
7729 @example
7730 info_TEXINFOS = hello.texi
7731 hello_TEXINFOS = gpl.texi
7732 @end example
7734 @cindex @file{texinfo.tex}
7736 By default, Automake requires the file @file{texinfo.tex} to appear in
7737 the same directory as the @file{Makefile.am} file that lists the
7738 @file{.texi} files.  If you used @code{AC_CONFIG_AUX_DIR} in
7739 @file{configure.ac} (@pxref{Input, , Finding `configure' Input,
7740 autoconf, The Autoconf Manual}), then @file{texinfo.tex} is looked for
7741 there.  In both cases, @command{automake} then supplies @file{texinfo.tex} if
7742 @option{--add-missing} is given, and takes care of its distribution.
7743 However, if you set the @code{TEXINFO_TEX} variable (see below),
7744 it overrides the location of the file and turns off its installation
7745 into the source as well as its distribution.
7747 The option @option{no-texinfo.tex} can be used to eliminate the
7748 requirement for the file @file{texinfo.tex}.  Use of the variable
7749 @code{TEXINFO_TEX} is preferable, however, because that allows the
7750 @code{dvi}, @code{ps}, and @code{pdf} targets to still work.
7752 @cindex Option, @code{no-installinfo}
7753 @cindex Target, @code{install-info}
7754 @cindex @code{install-info} target
7755 @cindex @code{no-installinfo} option
7757 @opindex no-installinfo
7758 @trindex install-info
7760 Automake generates an @code{install-info} rule; some people apparently
7761 use this.  By default, info pages are installed by @samp{make
7762 install}, so running @code{make install-info} is pointless.  This can
7763 be prevented via the @code{no-installinfo} option.  In this case,
7764 @file{.info} files are not installed by default, and user must
7765 request this explicitly using @samp{make install-info}.
7767 The following variables are used by the Texinfo build rules.
7769 @vtable @code
7770 @item MAKEINFO
7771 The name of the program invoked to build @file{.info} files.  This
7772 variable is defined by Automake.  If the @command{makeinfo} program is
7773 found on the system then it will be used by default; otherwise
7774 @command{missing} will be used instead.
7776 @item MAKEINFOHTML
7777 The command invoked to build @file{.html} files.  Automake
7778 defines this to @samp{$(MAKEINFO) --html}.
7780 @item MAKEINFOFLAGS
7781 User flags passed to each invocation of @samp{$(MAKEINFO)} and
7782 @samp{$(MAKEINFOHTML)}.  This user variable (@pxref{User Variables}) is
7783 not expected to be defined in any @file{Makefile}; it can be used by
7784 users to pass extra flags to suit their needs.
7786 @item AM_MAKEINFOFLAGS
7787 @itemx AM_MAKEINFOHTMLFLAGS
7788 Maintainer flags passed to each @command{makeinfo} invocation.  Unlike
7789 @code{MAKEINFOFLAGS}, these variables are meant to be defined by
7790 maintainers in @file{Makefile.am}.  @samp{$(AM_MAKEINFOFLAGS)} is
7791 passed to @code{makeinfo} when building @file{.info} files; and
7792 @samp{$(AM_MAKEINFOHTMLFLAGS)} is used when building @file{.html}
7793 files.
7795 For instance, the following setting can be used to obtain one single
7796 @file{.html} file per manual, without node separators.
7797 @example
7798 AM_MAKEINFOHTMLFLAGS = --no-headers --no-split
7799 @end example
7801 @code{AM_MAKEINFOHTMLFLAGS} defaults to @samp{$(AM_MAKEINFOFLAGS)}.
7802 This means that defining @code{AM_MAKEINFOFLAGS} without defining
7803 @code{AM_MAKEINFOHTMLFLAGS} will impact builds of both @file{.info}
7804 and @file{.html} files.
7806 @item TEXI2DVI
7807 The name of the command that converts a @file{.texi} file into a
7808 @file{.dvi} file.  This defaults to @samp{texi2dvi}, a script that ships
7809 with the Texinfo package.
7811 @item TEXI2PDF
7812 The name of the command that translates a @file{.texi} file into a
7813 @file{.pdf} file.  This defaults to @samp{$(TEXI2DVI) --pdf --batch}.
7815 @item DVIPS
7816 The name of the command that builds a @file{.ps} file out of a
7817 @file{.dvi} file.  This defaults to @samp{dvips}.
7819 @item TEXINFO_TEX
7821 If your package has Texinfo files in many directories, you can use the
7822 variable @code{TEXINFO_TEX} to tell Automake where to find the canonical
7823 @file{texinfo.tex} for your package.  The value of this variable should
7824 be the relative path from the current @file{Makefile.am} to
7825 @file{texinfo.tex}:
7827 @example
7828 TEXINFO_TEX = ../doc/texinfo.tex
7829 @end example
7830 @end vtable
7833 @node Man Pages
7834 @section Man Pages
7836 @cindex @code{_MANS} primary, defined
7837 @cindex @code{MANS} primary, defined
7838 @cindex Primary variable, @code{MANS}
7840 @vindex _MANS
7841 @vindex man_MANS
7842 A package can also include man pages (but see the GNU standards on this
7843 matter, @ref{Man Pages, , , standards, The GNU Coding Standards}.)  Man
7844 pages are declared using the @code{MANS} primary.  Generally the
7845 @code{man_MANS} variable is used.  Man pages are automatically installed in
7846 the correct subdirectory of @code{mandir}, based on the file extension.
7848 File extensions such as @file{.1c} are handled by looking for the valid
7849 part of the extension and using that to determine the correct
7850 subdirectory of @code{mandir}.  Valid section names are the digits
7851 @samp{0} through @samp{9}, and the letters @samp{l} and @samp{n}.
7853 Sometimes developers prefer to name a man page something like
7854 @file{foo.man} in the source, and then rename it to have the correct
7855 suffix, for example @file{foo.1}, when installing the file.  Automake
7856 also supports this mode.  For a valid section named @var{SECTION},
7857 there is a corresponding directory named @samp{man@var{SECTION}dir},
7858 and a corresponding @code{_MANS} variable.  Files listed in such a
7859 variable are installed in the indicated section.  If the file already
7860 has a valid suffix, then it is installed as-is; otherwise the file
7861 suffix is changed to match the section.
7863 For instance, consider this example:
7864 @example
7865 man1_MANS = rename.man thesame.1 alsothesame.1c
7866 @end example
7868 @noindent
7869 In this case, @file{rename.man} will be renamed to @file{rename.1} when
7870 installed, but the other files will keep their names.
7872 @cindex Target, @code{install-man}
7873 @cindex Option, @option{no-installman}
7874 @cindex @code{install-man} target
7875 @cindex @option{no-installman} option
7876 @opindex no-installman
7877 @trindex install-man
7879 By default, man pages are installed by @samp{make install}.  However,
7880 since the GNU project does not require man pages, many maintainers do
7881 not expend effort to keep the man pages up to date.  In these cases, the
7882 @option{no-installman} option will prevent the man pages from being
7883 installed by default.  The user can still explicitly install them via
7884 @samp{make install-man}.
7886 For fast installation, with many files it is preferable to use
7887 @samp{man@var{SECTION}_MANS} over @samp{man_MANS} as well as files that
7888 do not need to be renamed.
7890 Man pages are not currently considered to be source, because it is not
7891 uncommon for man pages to be automatically generated.  Therefore they
7892 are not automatically included in the distribution.  However, this can
7893 be changed by use of the @code{dist_} prefix.  For instance here is
7894 how to distribute and install the two man pages of GNU @command{cpio}
7895 (which includes both Texinfo documentation and man pages):
7897 @example
7898 dist_man_MANS = cpio.1 mt.1
7899 @end example
7901 The @code{nobase_} prefix is meaningless for man pages and is
7902 disallowed.
7904 @vindex notrans_
7905 @cindex @code{notrans_} prefix
7906 @cindex Man page renaming, avoiding
7907 @cindex Avoiding man page renaming
7909 Executables and manpages may be renamed upon installation
7910 (@pxref{Renaming}).  For manpages this can be avoided by use of the
7911 @code{notrans_} prefix.  For instance, suppose an executable @samp{foo}
7912 allowing to access a library function @samp{foo} from the command line.
7913 The way to avoid renaming of the @file{foo.3} manpage is:
7915 @example
7916 man_MANS = foo.1
7917 notrans_man_MANS = foo.3
7918 @end example
7920 @cindex @code{notrans_} and @code{dist_} or @code{nodist_}
7921 @cindex @code{dist_} and @code{notrans_}
7922 @cindex @code{nodist_} and @code{notrans_}
7924 @samp{notrans_} must be specified first when used in conjunction with
7925 either @samp{dist_} or @samp{nodist_} (@pxref{Fine-grained Distribution
7926 Control}).  For instance:
7928 @example
7929 notrans_dist_man3_MANS = bar.3
7930 @end example
7932 @node Install
7933 @chapter What Gets Installed
7935 @cindex Installation support
7936 @cindex @samp{make install} support
7938 Naturally, Automake handles the details of actually installing your
7939 program once it has been built.  All files named by the various
7940 primaries are automatically installed in the appropriate places when the
7941 user runs @samp{make install}.
7943 @menu
7944 * Basics of Installation::      What gets installed where
7945 * The Two Parts of Install::    Installing data and programs separately
7946 * Extending Installation::      Adding your own rules for installation
7947 * Staged Installs::             Installation in a temporary location
7948 * Install Rules for the User::  Useful additional rules
7949 @end menu
7951 @node Basics of Installation
7952 @section Basics of Installation
7954 A file named in a primary is installed by copying the built file into
7955 the appropriate directory.  The base name of the file is used when
7956 installing.
7958 @example
7959 bin_PROGRAMS = hello subdir/goodbye
7960 @end example
7962 In this example, both @samp{hello} and @samp{goodbye} will be installed
7963 in @samp{$(bindir)}.
7965 Sometimes it is useful to avoid the basename step at install time.  For
7966 instance, you might have a number of header files in subdirectories of
7967 the source tree that are laid out precisely how you want to install
7968 them.  In this situation you can use the @code{nobase_} prefix to
7969 suppress the base name step.  For example:
7971 @example
7972 nobase_include_HEADERS = stdio.h sys/types.h
7973 @end example
7975 @noindent
7976 will install @file{stdio.h} in @samp{$(includedir)} and @file{types.h}
7977 in @samp{$(includedir)/sys}.
7979 For most file types, Automake will install multiple files at once, while
7980 avoiding command line length issues (@pxref{Length Limitations}).  Since
7981 some @command{install} programs will not install the same file twice in
7982 one invocation, you may need to ensure that file lists are unique within
7983 one variable such as @samp{nobase_include_HEADERS} above.
7985 You should not rely on the order in which files listed in one variable
7986 are installed.  Likewise, to cater for parallel make, you should not
7987 rely on any particular file installation order even among different
7988 file types (library dependencies are an exception here).
7991 @node The Two Parts of Install
7992 @section The Two Parts of Install
7994 Automake generates separate @code{install-data} and @code{install-exec}
7995 rules, in case the installer is installing on multiple machines that
7996 share directory structure---these targets allow the machine-independent
7997 parts to be installed only once.  @code{install-exec} installs
7998 platform-dependent files, and @code{install-data} installs
7999 platform-independent files.  The @code{install} target depends on both
8000 of these targets.  While Automake tries to automatically segregate
8001 objects into the correct category, the @file{Makefile.am} author is, in
8002 the end, responsible for making sure this is done correctly.
8003 @trindex install-data
8004 @trindex install-exec
8005 @trindex install
8006 @cindex Install, two parts of
8008 Variables using the standard directory prefixes @samp{data},
8009 @samp{info}, @samp{man}, @samp{include}, @samp{oldinclude},
8010 @samp{pkgdata}, or @samp{pkginclude} are installed by
8011 @code{install-data}.
8013 Variables using the standard directory prefixes @samp{bin},
8014 @samp{sbin}, @samp{libexec}, @samp{sysconf}, @samp{localstate},
8015 @samp{lib}, or @samp{pkglib} are installed by @code{install-exec}.
8017 For instance, @code{data_DATA} files are installed by @code{install-data},
8018 while @code{bin_PROGRAMS} files are installed by @code{install-exec}.
8020 Any variable using a user-defined directory prefix with @samp{exec} in
8021 the name (e.g., @code{myexecbin_PROGRAMS}) is installed by
8022 @code{install-exec}.  All other user-defined prefixes are installed by
8023 @code{install-data}.
8025 @node Extending Installation
8026 @section Extending Installation
8028 It is possible to extend this mechanism by defining an
8029 @code{install-exec-local} or @code{install-data-local} rule.  If these
8030 rules exist, they will be run at @samp{make install} time.  These
8031 rules can do almost anything; care is required.
8032 @trindex install-exec-local
8033 @trindex install-data-local
8035 Automake also supports two install hooks, @code{install-exec-hook} and
8036 @code{install-data-hook}.  These hooks are run after all other install
8037 rules of the appropriate type, exec or data, have completed.  So, for
8038 instance, it is possible to perform post-installation modifications
8039 using an install hook.  @xref{Extending}, for some examples.
8040 @cindex Install hook
8042 @node Staged Installs
8043 @section Staged Installs
8045 @vindex DESTDIR
8046 Automake generates support for the @code{DESTDIR} variable in all
8047 install rules.  @code{DESTDIR} is used during the @samp{make install}
8048 step to relocate install objects into a staging area.  Each object and
8049 path is prefixed with the value of @code{DESTDIR} before being copied
8050 into the install area.  Here is an example of typical DESTDIR usage:
8052 @example
8053 mkdir /tmp/staging &&
8054 make DESTDIR=/tmp/staging install
8055 @end example
8057 The @command{mkdir} command avoids a security problem if the attacker
8058 creates a symbolic link from @file{/tmp/staging} to a victim area;
8059 then @command{make} places install objects in a directory tree built under
8060 @file{/tmp/staging}.  If @file{/gnu/bin/foo} and
8061 @file{/gnu/share/aclocal/foo.m4} are to be installed, the above command
8062 would install @file{/tmp/staging/gnu/bin/foo} and
8063 @file{/tmp/staging/gnu/share/aclocal/foo.m4}.
8065 This feature is commonly used to build install images and packages
8066 (@pxref{DESTDIR}).
8068 Support for @code{DESTDIR} is implemented by coding it directly into
8069 the install rules.  If your @file{Makefile.am} uses a local install
8070 rule (e.g., @code{install-exec-local}) or an install hook, then you
8071 must write that code to respect @code{DESTDIR}.
8073 @xref{Makefile Conventions, , , standards, The GNU Coding Standards},
8074 for another usage example.
8076 @node Install Rules for the User
8077 @section Install Rules for the User
8079 Automake also generates rules for targets @code{uninstall},
8080 @code{installdirs}, and @code{install-strip}.
8081 @trindex uninstall
8082 @trindex installdirs
8083 @trindex install-strip
8085 Automake supports @code{uninstall-local} and @code{uninstall-hook}.
8086 There is no notion of separate uninstalls for ``exec'' and ``data'', as
8087 these features would not provide additional functionality.
8089 Note that @code{uninstall} is not meant as a replacement for a real
8090 packaging tool.
8093 @node Clean
8094 @chapter What Gets Cleaned
8096 @cindex @samp{make clean} support
8098 The GNU Makefile Standards specify a number of different clean rules.
8099 @xref{Standard Targets, , Standard Targets for Users, standards,
8100 The GNU Coding Standards}.
8102 Generally the files that can be cleaned are determined automatically by
8103 Automake.  Of course, Automake also recognizes some variables that can
8104 be defined to specify additional files to clean.  These variables are
8105 @code{MOSTLYCLEANFILES}, @code{CLEANFILES}, @code{DISTCLEANFILES}, and
8106 @code{MAINTAINERCLEANFILES}.
8107 @vindex MOSTLYCLEANFILES
8108 @vindex CLEANFILES
8109 @vindex DISTCLEANFILES
8110 @vindex MAINTAINERCLEANFILES
8112 @trindex mostlyclean-local
8113 @trindex clean-local
8114 @trindex distclean-local
8115 @trindex maintainer-clean-local
8116 When cleaning involves more than deleting some hard-coded list of
8117 files, it is also possible to supplement the cleaning rules with your
8118 own commands.  Simply define a rule for any of the
8119 @code{mostlyclean-local}, @code{clean-local}, @code{distclean-local},
8120 or @code{maintainer-clean-local} targets (@pxref{Extending}).  A common
8121 case is deleting a directory, for instance, a directory created by the
8122 test suite:
8124 @example
8125 clean-local:
8126         -rm -rf testSubDir
8127 @end example
8129 As the GNU Standards aren't always explicit as to which files should
8130 be removed by which rule, we've adopted a heuristic that we believe
8131 was first formulated by Fran@,{c}ois Pinard:
8133 @itemize @bullet
8134 @item
8135 If @command{make} built it, and it is commonly something that one would
8136 want to rebuild (for instance, a @file{.o} file), then
8137 @code{mostlyclean} should delete it.
8139 @item
8140 Otherwise, if @command{make} built it, then @code{clean} should delete it.
8142 @item
8143 If @command{configure} built it, then @code{distclean} should delete it.
8145 @item
8146 If the maintainer built it (for instance, a @file{.info} file), then
8147 @code{maintainer-clean} should delete it.  However
8148 @code{maintainer-clean} should not delete anything that needs to exist
8149 in order to run @samp{./configure && make}.
8150 @end itemize
8152 We recommend that you follow this same set of heuristics in your
8153 @file{Makefile.am}.
8156 @node Dist
8157 @chapter What Goes in a Distribution
8159 @menu
8160 * Basics of Distribution::      Files distributed by default
8161 * Fine-grained Distribution Control::  @code{dist_} and @code{nodist_} prefixes
8162 * The dist Hook::               A target for last-minute distribution changes
8163 * Checking the Distribution::   @samp{make distcheck} explained
8164 * The Types of Distributions::  A variety of formats and compression methods
8165 @end menu
8167 @node Basics of Distribution
8168 @section Basics of Distribution
8170 @cindex @samp{make dist}
8172 @vindex PACKAGE
8173 @vindex VERSION
8174 @trindex dist
8175 The @code{dist} rule in the generated @file{Makefile.in} can be used
8176 to generate a gzipped @code{tar} file and other flavors of archive for
8177 distribution.  The file is named based on the @code{PACKAGE} and
8178 @code{VERSION} variables defined by @code{AM_INIT_AUTOMAKE}
8179 (@pxref{Macros}); more precisely the gzipped @code{tar} file is named
8180 @samp{@var{package}-@var{version}.tar.gz}.
8181 @vindex GZIP_ENV
8182 You can use the @command{make} variable @code{GZIP_ENV} to control how gzip
8183 is run.  The default setting is @option{--best}.
8185 @cindex @code{m4_include}, distribution
8186 @cindex @code{include}, distribution
8187 @acindex m4_include
8188 @cmindex include
8189 For the most part, the files to distribute are automatically found by
8190 Automake: all source files are automatically included in a distribution,
8191 as are all @file{Makefile.am}s and @file{Makefile.in}s.  Automake also
8192 has a built-in list of commonly used files that are automatically
8193 included if they are found in the current directory (either physically,
8194 or as the target of a @file{Makefile.am} rule).  This list is printed by
8195 @samp{automake --help}.  Also, files that are read by @command{configure}
8196 (i.e.@: the source files corresponding to the files specified in various
8197 Autoconf macros such as @code{AC_CONFIG_FILES} and siblings) are
8198 automatically distributed.  Files included in @file{Makefile.am}s (using
8199 @code{include}) or in @file{configure.ac} (using @code{m4_include}), and
8200 helper scripts installed with @samp{automake --add-missing} are also
8201 distributed.
8203 @vindex EXTRA_DIST
8204 Still, sometimes there are files that must be distributed, but which
8205 are not covered in the automatic rules.  These files should be listed in
8206 the @code{EXTRA_DIST} variable.  You can mention files from
8207 subdirectories in @code{EXTRA_DIST}.
8209 You can also mention a directory in @code{EXTRA_DIST}; in this case the
8210 entire directory will be recursively copied into the distribution.
8211 Please note that this will also copy @emph{everything} in the directory,
8212 including CVS/RCS version control files.  We recommend against using
8213 this feature.
8215 @vindex SUBDIRS
8216 @vindex DIST_SUBDIRS
8217 If you define @code{SUBDIRS}, Automake will recursively include the
8218 subdirectories in the distribution.  If @code{SUBDIRS} is defined
8219 conditionally (@pxref{Conditionals}), Automake will normally include
8220 all directories that could possibly appear in @code{SUBDIRS} in the
8221 distribution.  If you need to specify the set of directories
8222 conditionally, you can set the variable @code{DIST_SUBDIRS} to the
8223 exact list of subdirectories to include in the distribution
8224 (@pxref{Conditional Subdirectories}).
8227 @node Fine-grained Distribution Control
8228 @section Fine-grained Distribution Control
8230 @vindex dist_
8231 @vindex nodist_
8232 Sometimes you need tighter control over what does @emph{not} go into the
8233 distribution; for instance, you might have source files that are
8234 generated and that you do not want to distribute.  In this case
8235 Automake gives fine-grained control using the @code{dist} and
8236 @code{nodist} prefixes.  Any primary or @code{_SOURCES} variable can be
8237 prefixed with @code{dist_} to add the listed files to the distribution.
8238 Similarly, @code{nodist_} can be used to omit the files from the
8239 distribution.
8241 As an example, here is how you would cause some data to be distributed
8242 while leaving some source code out of the distribution:
8244 @example
8245 dist_data_DATA = distribute-this
8246 bin_PROGRAMS = foo
8247 nodist_foo_SOURCES = do-not-distribute.c
8248 @end example
8250 @node The dist Hook
8251 @section The dist Hook
8253 @trindex dist-hook
8255 Occasionally it is useful to be able to change the distribution before
8256 it is packaged up.  If the @code{dist-hook} rule exists, it is run
8257 after the distribution directory is filled, but before the actual tar
8258 (or shar) file is created.  One way to use this is for distributing
8259 files in subdirectories for which a new @file{Makefile.am} is overkill:
8261 @example
8262 dist-hook:
8263         mkdir $(distdir)/random
8264         cp -p $(srcdir)/random/a1 $(srcdir)/random/a2 $(distdir)/random
8265 @end example
8267 Another way to use this is for removing unnecessary files that get
8268 recursively included by specifying a directory in EXTRA_DIST:
8270 @example
8271 EXTRA_DIST = doc
8273 dist-hook:
8274         rm -rf `find $(distdir)/doc -name CVS`
8275 @end example
8277 @vindex distdir
8278 @vindex top_distdir
8279 Two variables that come handy when writing @code{dist-hook} rules are
8280 @samp{$(distdir)} and @samp{$(top_distdir)}.
8282 @samp{$(distdir)} points to the directory where the @code{dist} rule
8283 will copy files from the current directory before creating the
8284 tarball.  If you are at the top-level directory, then @samp{distdir =
8285 $(PACKAGE)-$(VERSION)}.  When used from subdirectory named
8286 @file{foo/}, then @samp{distdir = ../$(PACKAGE)-$(VERSION)/foo}.
8287 @samp{$(distdir)} can be a relative or absolute path, do not assume
8288 any form.
8290 @samp{$(top_distdir)} always points to the root directory of the
8291 distributed tree.  At the top-level it's equal to @samp{$(distdir)}.
8292 In the @file{foo/} subdirectory
8293 @samp{top_distdir = ../$(PACKAGE)-$(VERSION)}.
8294 @samp{$(top_distdir)} too can be a relative or absolute path.
8296 Note that when packages are nested using @code{AC_CONFIG_SUBDIRS}
8297 (@pxref{Subpackages}), then @samp{$(distdir)} and
8298 @samp{$(top_distdir)} are relative to the package where @samp{make
8299 dist} was run, not to any sub-packages involved.
8301 @node Checking the Distribution
8302 @section Checking the Distribution
8304 @cindex @samp{make distcheck}
8305 @cindex @samp{make distcleancheck}
8306 @vindex distcleancheck_listfiles
8307 @cindex @samp{make distuninstallcheck}
8308 @vindex distuninstallcheck_listfiles
8310 @trindex distcheck
8311 Automake also generates a @code{distcheck} rule that can be of help to
8312 ensure that a given distribution will actually work.  @code{distcheck}
8313 makes a distribution, then tries to do a @code{VPATH} build
8314 (@pxref{VPATH Builds}), run the test suite, and finally make another
8315 tarball to ensure the distribution is self-contained.
8317 @vindex DISTCHECK_CONFIGURE_FLAGS
8318 Building the package involves running @samp{./configure}.  If you need
8319 to supply additional flags to @command{configure}, define them in the
8320 @code{DISTCHECK_CONFIGURE_FLAGS} variable, either in your top-level
8321 @file{Makefile.am}, or on the command line when invoking @command{make}.
8323 @trindex distcheck-hook
8324 If the @code{distcheck-hook} rule is defined in your top-level
8325 @file{Makefile.am}, then it will be invoked by @code{distcheck} after
8326 the new distribution has been unpacked, but before the unpacked copy
8327 is configured and built.  Your @code{distcheck-hook} can do almost
8328 anything, though as always caution is advised.  Generally this hook is
8329 used to check for potential distribution errors not caught by the
8330 standard mechanism.  Note that @code{distcheck-hook} as well as
8331 @code{DISTCHECK_CONFIGURE_FLAGS} are not honored in a subpackage
8332 @file{Makefile.am}, but the @code{DISTCHECK_CONFIGURE_FLAGS} are
8333 passed down to the @command{configure} script of the subpackage.
8335 @trindex distcleancheck
8336 @vindex DISTCLEANFILES
8337 @vindex distcleancheck_listfiles
8338 Speaking of potential distribution errors, @code{distcheck} also
8339 ensures that the @code{distclean} rule actually removes all built
8340 files.  This is done by running @samp{make distcleancheck} at the end of
8341 the @code{VPATH} build.  By default, @code{distcleancheck} will run
8342 @code{distclean} and then make sure the build tree has been emptied by
8343 running @samp{$(distcleancheck_listfiles)}.  Usually this check will
8344 find generated files that you forgot to add to the @code{DISTCLEANFILES}
8345 variable (@pxref{Clean}).
8347 The @code{distcleancheck} behavior should be OK for most packages,
8348 otherwise you have the possibility to override the definition of
8349 either the @code{distcleancheck} rule, or the
8350 @samp{$(distcleancheck_listfiles)} variable.  For instance, to disable
8351 @code{distcleancheck} completely, add the following rule to your
8352 top-level @file{Makefile.am}:
8354 @example
8355 distcleancheck:
8356         @@:
8357 @end example
8359 If you want @code{distcleancheck} to ignore built files that have not
8360 been cleaned because they are also part of the distribution, add the
8361 following definition instead:
8363 @example
8364 distcleancheck_listfiles = \
8365   find . -type f -exec sh -c 'test -f $(srcdir)/$$1 || echo $$1' \
8366        sh '@{@}' ';'
8367 @end example
8369 The above definition is not the default because it's usually an error if
8370 your Makefiles cause some distributed files to be rebuilt when the user
8371 build the package.  (Think about the user missing the tool required to
8372 build the file; or if the required tool is built by your package,
8373 consider the cross-compilation case where it can't be run.)  There is
8374 a FAQ entry about this (@pxref{distcleancheck}), make sure you read it
8375 before playing with @code{distcleancheck_listfiles}.
8377 @code{distcheck} also checks that the @code{uninstall} rule works
8378 properly, both for ordinary and @code{DESTDIR} builds.  It does this
8379 by invoking @samp{make uninstall}, and then it checks the install tree
8380 to see if any files are left over.  This check will make sure that you
8381 correctly coded your @code{uninstall}-related rules.
8383 By default, the checking is done by the @code{distuninstallcheck} rule,
8384 and the list of files in the install tree is generated by
8385 @samp{$(distuninstallcheck_listfiles)} (this is a variable whose value is
8386 a shell command to run that prints the list of files to stdout).
8388 Either of these can be overridden to modify the behavior of
8389 @code{distcheck}.  For instance, to disable this check completely, you
8390 would write:
8392 @example
8393 distuninstallcheck:
8394         @@:
8395 @end example
8397 @node The Types of Distributions
8398 @section The Types of Distributions
8400 Automake generates rules to provide archives of the project for
8401 distributions in various formats.  Their targets are:
8403 @table @asis
8404 @item @code{dist-bzip2}
8405 Generate a bzip2 tar archive of the distribution.  bzip2 archives are
8406 frequently smaller than gzipped archives.
8407 @trindex dist-bzip2
8409 @item @code{dist-gzip}
8410 Generate a gzip tar archive of the distribution.
8411 @trindex dist-gzip
8413 @item @code{dist-lzma}
8414 Generate an @samp{lzma} tar archive of the distribution.  @command{lzma}
8415 archives are frequently smaller than @command{bzip2}-compressed archives.
8416 @trindex dist-lzma
8418 @item @code{dist-shar}
8419 Generate a shar archive of the distribution.
8420 @trindex dist-shar
8422 @item @code{dist-xz}
8423 Generate an @samp{xz} tar archive of the distribution.  @command{xz}
8424 archives are frequently smaller than @command{bzip2}-compressed archives.
8425 The @samp{xz} format will soon (early 2009) displace the @samp{lzma} format.
8426 @trindex dist-xz
8428 @item @code{dist-zip}
8429 Generate a zip archive of the distribution.
8430 @trindex dist-zip
8432 @item @code{dist-tarZ}
8433 Generate a compressed tar archive of
8434 the distribution.
8435 @trindex dist-tarZ
8436 @end table
8438 The rule @code{dist} (and its historical synonym @code{dist-all}) will
8439 create archives in all the enabled formats, @ref{Options}.  By
8440 default, only the @code{dist-gzip} target is hooked to @code{dist}.
8443 @node Tests
8444 @chapter Support for test suites
8446 @cindex Test suites
8447 @cindex @code{make check}
8448 @trindex check
8450 Automake supports three forms of test suites, the first two of which
8451 are very similar.
8453 @menu
8454 * Simple Tests::                Listing programs and scripts in @code{TESTS}
8455 * Simple Tests using parallel-tests::  More powerful test driver
8456 * DejaGnu Tests::               Interfacing with the external testing framework
8457 * Install Tests::               Running tests on installed packages
8458 @end menu
8460 @node Simple Tests
8461 @section Simple Tests
8463 If the variable @code{TESTS} is defined, its value is taken to be a
8464 list of programs or scripts to run in order to do the testing.
8465 Programs needing data files should look for them in @code{srcdir}
8466 (which is both an environment variable and a make variable) so they
8467 work when building in a separate directory (@pxref{Build Directories,
8468 , Build Directories , autoconf, The Autoconf Manual}), and in
8469 particular for the @code{distcheck} rule (@pxref{Checking the
8470 Distribution}).
8472 For each of the @code{TESTS}, the result of execution is printed along
8473 with the test name, where @code{PASS} denotes a successful test,
8474 @code{FAIL} denotes a failed test, @code{XFAIL} an expected failure,
8475 @code{XPASS} an unexpected pass for a test that is supposed to fail,
8476 and @code{SKIP} denotes a skipped test.
8478 @cindex Exit status 77, special interpretation
8480 The number of failures will be printed at the end of the run.  If a
8481 given test program exits with a status of 77, then its result is ignored
8482 in the final count.  This feature allows non-portable tests to be
8483 ignored in environments where they don't make sense.
8485 @vindex AM_COLOR_TESTS
8486 If the Automake option @code{color-tests} is used (@pxref{Options})
8487 and standard output is connected to a capable terminal, then the test
8488 results and the summary are colored appropriately.  The user can disable
8489 colored output by setting the @command{make} variable
8490 @samp{AM_COLOR_TESTS=no}, or force colored output even without a connecting
8491 terminal with @samp{AM_COLOR_TESTS=always}.
8493 @vindex TESTS
8494 @vindex TESTS_ENVIRONMENT
8495 The variable @code{TESTS_ENVIRONMENT} can be used to set environment
8496 variables for the test run; the environment variable @env{srcdir} is
8497 set in the rule.  If all your test programs are scripts, you can also
8498 set @code{TESTS_ENVIRONMENT} to an invocation of the shell (e.g.
8499 @samp{$(SHELL) -x} can be useful for debugging the tests), or any other
8500 interpreter.  For instance the following setup is used by the Automake
8501 package to run four tests in Perl.
8502 @example
8503 TESTS_ENVIRONMENT = $(PERL) -Mstrict -I $(top_srcdir)/lib -w
8504 TESTS = Condition.pl DisjConditions.pl Version.pl Wrap.pl
8505 @end example
8508 @cindex Tests, expected failure
8509 @cindex Expected test failure
8511 You may define the variable @code{XFAIL_TESTS} to a list of tests
8512 (usually a subset of @code{TESTS}) that are expected to fail.  This will
8513 reverse the result of those tests.
8514 @vindex XFAIL_TESTS
8516 Automake ensures that each file listed in @code{TESTS} is built before
8517 any tests are run; you can list both source and derived programs (or
8518 scripts) in @code{TESTS}; the generated rule will look both in
8519 @code{srcdir} and @file{.}.  For instance, you might want to run a C
8520 program as a test.  To do this you would list its name in @code{TESTS}
8521 and also in @code{check_PROGRAMS}, and then specify it as you would
8522 any other program.
8524 Programs listed in @code{check_PROGRAMS} (and @code{check_LIBRARIES},
8525 @code{check_LTLIBRARIES}...) are only built during @code{make check},
8526 not during @code{make all}.  You should list there any program needed
8527 by your tests that does not need to be built by @code{make all}.  Note
8528 that @code{check_PROGRAMS} are @emph{not} automatically added to
8529 @code{TESTS} because @code{check_PROGRAMS} usually lists programs used
8530 by the tests, not the tests themselves.  Of course you can set
8531 @code{TESTS = $(check_PROGRAMS)} if all your programs are test cases.
8534 @node Simple Tests using parallel-tests
8535 @section Simple Tests using @samp{parallel-tests}
8536 @cindex @option{parallel-tests}, Using
8538 The option @option{parallel-tests} (@pxref{Options}) enables a test
8539 suite driver that is mostly compatible to the simple test driver described
8540 in the previous section, but provides a few more features and slightly different
8541 semantics.  It features concurrent execution of tests with @code{make -j},
8542 allows to specify inter-test dependencies, lazy reruns of tests that
8543 have not completed in a prior run, summary and verbose output in
8544 @samp{RST} (reStructuredText) and @samp{HTML} format, and hard errors
8545 for exceptional failures.  Similar to the simple test driver,
8546 @code{TESTS_ENVIRONMENT}, @code{AM_COLOR_TESTS}, @code{XFAIL_TESTS}, and
8547 the @code{check_*} variables are honored, and the environment variable
8548 @env{srcdir} is set during test execution.
8550 This test driver is still experimental and may undergo changes in order
8551 to satisfy additional portability requirements.
8553 @vindex TEST_SUITE_LOG
8554 @vindex TESTS
8555 The driver operates by defining a set of @command{make} rules to create
8556 a summary log file, @code{TEST_SUITE_LOG}, which defaults to
8557 @file{test-suite.log} and requires a @file{.log} suffix.  This file
8558 depends upon log files created for each single test program listed in
8559 @code{TESTS}, which in turn contain all output produced by the
8560 corresponding tests.
8562 @vindex TEST_EXTENSIONS
8563 @vindex TEST_LOGS
8564 Each log file is created when the corresponding test has completed.
8565 The set of log files is listed in the read-only variable
8566 @code{TEST_LOGS}, and defaults to @code{TESTS}, with the executable
8567 extension if any (@pxref{EXEEXT}), as well as any suffix listed in
8568 @code{TEST_EXTENSIONS} removed, and @file{.log} appended.
8569 @code{TEST_EXTENSIONS} defaults to @file{.test}.  Results are undefined
8570 if a test file name ends in several concatenated suffixes.
8572 @vindex _LOG_COMPILE
8573 @vindex _LOG_COMPILER
8574 @vindex _LOG_FLAGS
8575 @vindex LOG_COMPILE
8576 @vindex LOG_COMPILER
8577 @vindex LOG_FLAGS
8578 @vindex @var{EXT}_LOG_COMPILE
8579 @vindex @var{EXT}_LOG_COMPILER
8580 @vindex @var{EXT}_LOG_FLAGS
8581 @vindex AM_@var{EXT}_LOG_FLAGS
8582 @vindex AM_LOG_FLAGS
8583 For tests that match an extension @code{.@var{ext}} listed in
8584 @code{TEST_EXTENSIONS}, you can provide a test driver using the variable
8585 @code{@var{ext}_LOG_COMPILER} (note the upper-case extension) and pass
8586 options in @code{AM_@var{ext}_LOG_FLAGS} and allow the user to pass
8587 options in @code{@var{ext}_LOG_FLAGS}.  It will cause all tests with
8588 this extension to be called with this driver.  For all tests without a
8589 registered extension, the variables @code{LOG_COMPILER},
8590 @code{AM_LOG_FLAGS}, and @code{LOG_FLAGS} may be used.  For example,
8592 @example
8593 TESTS = foo.pl bar.py baz
8594 TEST_EXTENSIONS = .pl .py
8595 PL_LOG_COMPILER = $(PERL)
8596 AM_PL_LOG_FLAGS = -w
8597 PY_LOG_COMPILER = $(PYTHON)
8598 AM_PY_LOG_FLAGS = -v
8599 LOG_COMPILER = ./wrapper-script
8600 AM_LOG_FLAGS = -d
8601 @end example
8603 @noindent
8604 will invoke @samp{$(PERL) -w foo.pl}, @samp{$(PYTHON) -v bar.py},
8605 and @samp{./wrapper-script -d baz} to produce @file{foo.log},
8606 @file{bar.log}, and @file{baz.log}, respectively.  The
8607 @samp{TESTS_ENVIRONMENT} variable is still expanded before the driver,
8608 but should be reserved for the user.
8610 @vindex VERBOSE
8611 As with the simple driver above, by default one status line is printed
8612 per completed test, and a short summary after the suite has completed.
8613 However, standard output and standard error of the test are redirected
8614 to a per-test log file, so that parallel execution does not produce
8615 intermingled output.  The output from failed tests is collected in the
8616 @file{test-suite.log} file.  If the variable @samp{VERBOSE} is set, this
8617 file is output after the summary.  For best results, the tests should be
8618 verbose by default now.
8620 @trindex mostlyclean
8621 @trindex check-html
8622 @vindex RST2HTML
8623 @vindex TEST_SUITE_HTML
8624 With @code{make check-html}, the log files may be converted from RST
8625 (reStructuredText, see @uref{http://docutils.sourceforge.net/@/rst.html})
8626 to HTML using @samp{RST2HTML}, which defaults to @command{rst2html} or
8627 @command{rst2html.py}.  The variable @samp{TEST_SUITE_HTML} contains the
8628 set of converted log files.  The log and HTML files are removed upon
8629 @code{make mostlyclean}.
8631 @vindex DISABLE_HARD_ERRORS
8632 @cindex Exit status 99, special interpretation
8633 @cindex hard error
8634 Even in the presence of expected failures (see @code{XFAIL_TESTS}, there
8635 may be conditions under which a test outcome needs attention.  For
8636 example, with test-driven development, you may write tests for features
8637 that you have not implemented yet, and thus mark these tests as expected
8638 to fail.  However, you may still be interested in exceptional conditions,
8639 for example, tests that fail due to a segmentation violation or another
8640 error that is independent of the feature awaiting implementation.
8641 Tests can exit with an exit status of 99 to signal such a @emph{hard
8642 error}.  Unless the variable @code{DISABLE_HARD_ERRORS} is set to a
8643 nonempty value, such tests will be counted as failed.
8645 By default, the test suite driver will run all tests, but there are
8646 several ways to limit the set of tests that are run:
8648 @itemize @bullet
8649 @item
8650 You can set the @code{TESTS} variable, similarly to how you can with
8651 the simple test driver from the previous section.  For example, you can
8652 use a command like this to run only a subset of the tests:
8654 @example
8655 env TESTS="foo.test bar.test" make -e check
8656 @end example
8658 @item
8659 You can set the @code{TEST_LOGS} variable.  By default, this variable is
8660 computed at @command{make} run time from the value of @code{TESTS} as
8661 described above.  For example, you can use the following:
8663 @example
8664 set x subset*.log; shift
8665 env TEST_LOGS="foo.log $*" make -e check
8666 @end example
8668 @item
8669 @vindex RECHECK_LOGS
8670 @cindex lazy test execution
8671 By default, the test driver removes all old per-test log files before it
8672 starts running tests to regenerate them.  The variable
8673 @code{RECHECK_LOGS} contains the set of log files which are removed.
8674 @code{RECHECK_LOGS} defaults to @code{TEST_LOGS}, which means all tests
8675 need to be rechecked.  By overriding this variable, you can choose which
8676 tests need to be reconsidered.  For example, you can lazily rerun only
8677 those tests which are outdated, i.e., older than their prerequisite test
8678 files, by setting this variable to the empty value:
8680 @example
8681 env RECHECK_LOGS= make -e check
8682 @end example
8684 @item
8685 @trindex recheck
8686 @trindex recheck-html
8687 You can ensure that all tests are rerun which have failed or passed
8688 unexpectedly, by running @code{make recheck} in the test directory.
8689 This convenience target will set @code{RECHECK_LOGS} appropriately
8690 before invoking the main test driver.  The @code{recheck-html} target
8691 does the same as @code{recheck} but again converts the resulting log
8692 file in HTML format, like the @code{check-html} target.
8693 @end itemize
8695 In order to guarantee an ordering between tests even with @code{make
8696 -j@var{N}}, dependencies between the corresponding log files may be
8697 specified through usual @command{make} dependencies.  For example, the
8698 following snippet lets the test named @file{foo-execute.test} depend
8699 upon completion of the test @file{foo-compile.test}:
8701 @example
8702 TESTS = foo-compile.test foo-execute.test
8703 foo-execute.log: foo-compile.log
8704 @end example
8706 @noindent
8707 Please note that this ordering ignores the @emph{results} of required
8708 tests, thus the test @file{foo-execute.test} is run even if the test
8709 @file{foo-compile.test} failed or was skipped beforehand.
8711 @cindex Unit tests
8712 The combination of lazy test execution and correct dependencies between
8713 tests and their sources may be exploited for efficient unit testing
8714 during development.  To further speed up the edit-compile-test cycle, it
8715 may even be useful to specify compiled programs in @code{EXTRA_PROGRAMS}
8716 instead of with @code{check_PROGRAMS}, as the former allows intertwined
8717 compilation and test execution (but note that @code{EXTRA_PROGRAMS} are
8718 not cleaned automatically, @pxref{Uniform}).
8720 The variables @code{TESTS} and @code{XFAIL_TESTS} may contain
8721 conditional parts as well as configure substitutions.  In the latter
8722 case, however, certain restrictions apply: substituted test names
8723 must end with a nonempty test suffix like @file{.test}, so that one of
8724 the inference rules generated by @command{automake} can apply.  For
8725 literal test names, @command{automake} can generate per-target rules
8726 to avoid this limitation.
8728 Please note that it is currently not possible to use @code{$(srcdir)/}
8729 or @code{$(top_srcdir)/} in the @code{TESTS} variable.  This technical
8730 limitation is necessary to avoid generating test logs in the source tree
8731 and has the unfortunate consequence that it is not possible to specify
8732 distributed tests that are themselves generated by means of explicit
8733 rules, in a way that is portable to all @command{make} implementations
8734 (@pxref{Make Target Lookup,,, autoconf, The Autoconf Manual}, the
8735 semantics of FreeBSD and OpenBSD @command{make} conflict with this).
8736 In case of doubt you may want to require to use GNU @command{make},
8737 or work around the issue with inference rules to generate the tests.
8740 @node DejaGnu Tests
8741 @section DejaGnu Tests
8743 If @uref{ftp://ftp.gnu.org/gnu/dejagnu/, @command{dejagnu}} appears in
8744 @code{AUTOMAKE_OPTIONS}, then a @command{dejagnu}-based test suite is
8745 assumed.  The variable @code{DEJATOOL} is a list of names that are
8746 passed, one at a time, as the @option{--tool} argument to
8747 @command{runtest} invocations; it defaults to the name of the package.
8749 The variable @code{RUNTESTDEFAULTFLAGS} holds the @option{--tool} and
8750 @option{--srcdir} flags that are passed to dejagnu by default; this can be
8751 overridden if necessary.
8752 @vindex RUNTESTDEFAULTFLAGS
8754 The variables @code{EXPECT} and @code{RUNTEST} can
8755 also be overridden to provide project-specific values.  For instance,
8756 you will need to do this if you are testing a compiler toolchain,
8757 because the default values do not take into account host and target
8758 names.
8759 @opindex dejagnu
8760 @vindex DEJATOOL
8761 @vindex EXPECT
8762 @vindex RUNTEST
8764 The contents of the variable @code{RUNTESTFLAGS} are passed to the
8765 @code{runtest} invocation.  This is considered a ``user variable''
8766 (@pxref{User Variables}).  If you need to set @command{runtest} flags in
8767 @file{Makefile.am}, you can use @code{AM_RUNTESTFLAGS} instead.
8768 @vindex RUNTESTFLAGS
8769 @vindex AM_RUNTESTFLAGS
8771 @cindex @file{site.exp}
8772 Automake will generate rules to create a local @file{site.exp} file,
8773 defining various variables detected by @command{configure}.  This file
8774 is automatically read by DejaGnu.  It is OK for the user of a package
8775 to edit this file in order to tune the test suite.  However this is
8776 not the place where the test suite author should define new variables:
8777 this should be done elsewhere in the real test suite code.
8778 Especially, @file{site.exp} should not be distributed.
8780 For more information regarding DejaGnu test suites, see @ref{Top, , ,
8781 dejagnu, The DejaGnu Manual}.
8783 In either case, the testing is done via @samp{make check}.
8785 @node Install Tests
8786 @section Install Tests
8788 The @code{installcheck} target is available to the user as a way to
8789 run any tests after the package has been installed.  You can add tests
8790 to this by writing an @code{installcheck-local} rule.
8793 @node Rebuilding
8794 @chapter Rebuilding Makefiles
8795 @cindex rebuild rules
8797 Automake generates rules to automatically rebuild @file{Makefile}s,
8798 @file{configure}, and other derived files like @file{Makefile.in}.
8800 @acindex AM_MAINTAINER_MODE
8801 If you are using @code{AM_MAINTAINER_MODE} in @file{configure.ac}, then
8802 these automatic rebuilding rules are only enabled in maintainer mode.
8804 @vindex ACLOCAL_AMFLAGS
8805 Sometimes you need to run @command{aclocal} with an argument like
8806 @option{-I} to tell it where to find @file{.m4} files.  Since
8807 sometimes @command{make} will automatically run @command{aclocal}, you
8808 need a way to specify these arguments.  You can do this by defining
8809 @code{ACLOCAL_AMFLAGS}; this holds arguments that are passed verbatim
8810 to @command{aclocal}.  This variable is only useful in the top-level
8811 @file{Makefile.am}.
8813 @vindex CONFIG_STATUS_DEPENDENCIES
8814 @vindex CONFIGURE_DEPENDENCIES
8815 @cindex @file{version.sh}, example
8816 @cindex @file{version.m4}, example
8818 Sometimes it is convenient to supplement the rebuild rules for
8819 @file{configure} or @file{config.status} with additional dependencies.
8820 The variables @code{CONFIGURE_DEPENDENCIES} and
8821 @code{CONFIG_STATUS_DEPENDENCIES} can be used to list these extra
8822 dependencies.  These variable should be defined in all
8823 @file{Makefile}s of the tree (because these two rebuild rules are
8824 output in all them), so it is safer and easier to @code{AC_SUBST} them
8825 from @file{configure.ac}.  For instance, the following statement will
8826 cause @file{configure} to be rerun each time @file{version.sh} is
8827 changed.
8828 @example
8829 AC_SUBST([CONFIG_STATUS_DEPENDENCIES], ['$(top_srcdir)/version.sh'])
8830 @end example
8831 @noindent
8832 Note the @samp{$(top_srcdir)/} in the file name.  Since this variable
8833 is to be used in all @file{Makefile}s, its value must be sensible at
8834 any level in the build hierarchy.
8836 Beware not to mistake @code{CONFIGURE_DEPENDENCIES} for
8837 @code{CONFIG_STATUS_DEPENDENCIES}.
8839 @code{CONFIGURE_DEPENDENCIES} adds dependencies to the
8840 @file{configure} rule, whose effect is to run @command{autoconf}.  This
8841 variable should be seldom used, because @command{automake} already tracks
8842 @code{m4_include}d files.  However it can be useful when playing
8843 tricky games with @code{m4_esyscmd} or similar non-recommendable
8844 macros with side effects.
8846 @code{CONFIG_STATUS_DEPENDENCIES} adds dependencies to the
8847 @file{config.status} rule, whose effect is to run @file{configure}.
8848 This variable should therefore carry any non-standard source that may
8849 be read as a side effect of running @command{configure}, like @file{version.sh}
8850 in the example above.
8852 Speaking of @file{version.sh} scripts, we recommend against them
8853 today.  They are mainly used when the version of a package is updated
8854 automatically by a script (e.g., in daily builds).  Here is what some
8855 old-style @file{configure.ac}s may look like:
8856 @example
8857 AC_INIT
8858 . $srcdir/version.sh
8859 AM_INIT_AUTOMAKE([name], $VERSION_NUMBER)
8860 @dots{}
8861 @end example
8862 @noindent
8863 Here, @file{version.sh} is a shell fragment that sets
8864 @code{VERSION_NUMBER}.  The problem with this example is that
8865 @command{automake} cannot track dependencies (listing @file{version.sh}
8866 in @command{CONFIG_STATUS_DEPENDENCIES}, and distributing this file is up
8867 to the user), and that it uses the obsolete form of @code{AC_INIT} and
8868 @code{AM_INIT_AUTOMAKE}.  Upgrading to the new syntax is not
8869 straightforward, because shell variables are not allowed in
8870 @code{AC_INIT}'s arguments.  We recommend that @file{version.sh} be
8871 replaced by an M4 file that is included by @file{configure.ac}:
8872 @example
8873 m4_include([version.m4])
8874 AC_INIT([name], VERSION_NUMBER)
8875 AM_INIT_AUTOMAKE
8876 @dots{}
8877 @end example
8878 @noindent
8879 Here @file{version.m4} could contain something like
8880 @samp{m4_define([VERSION_NUMBER], [1.2])}.  The advantage of this
8881 second form is that @command{automake} will take care of the
8882 dependencies when defining the rebuild rule, and will also distribute
8883 the file automatically.  An inconvenience is that @command{autoconf}
8884 will now be rerun each time the version number is bumped, when only
8885 @file{configure} had to be rerun in the previous setup.
8888 @node Options
8889 @chapter Changing Automake's Behavior
8891 Various features of Automake can be controlled by options in the
8892 @file{Makefile.am}.  Such options are applied on a per-@file{Makefile}
8893 basis when listed in a special @file{Makefile} variable named
8894 @code{AUTOMAKE_OPTIONS}.  They are applied globally to all processed
8895 @file{Makefiles} when listed in the first argument of
8896 @code{AM_INIT_AUTOMAKE} in @file{configure.ac}.  Currently understood
8897 options are:
8898 @vindex AUTOMAKE_OPTIONS
8900 @table @asis
8901 @item @option{gnits}
8902 @itemx @option{gnu}
8903 @itemx @option{foreign}
8904 @itemx @option{cygnus}
8905 @cindex Option, @option{gnits}
8906 @cindex Option, @option{gnu}
8907 @cindex Option, @option{foreign}
8908 @cindex Option, @option{cygnus}
8909 @opindex gnits
8910 @opindex gnu
8911 @opindex foreign
8912 @opindex cygnus
8914 Set the strictness as appropriate.  The @option{gnits} option also
8915 implies options @option{readme-alpha} and @option{check-news}.
8917 @item @option{ansi2knr}
8918 @itemx @option{@var{path}/ansi2knr}
8919 @cindex Option, @option{ansi2knr}
8920 @opindex ansi2knr
8921 Turn on the obsolete de-ANSI-fication feature.  @xref{ANSI}.  If preceded by a
8922 path, the generated @file{Makefile.in} will look in the specified
8923 directory to find the @file{ansi2knr} program.  The path should be a
8924 relative path to another directory in the same distribution (Automake
8925 currently does not check this).
8927 @item @option{check-news}
8928 @cindex Option, @option{check-news}
8929 @opindex check-news
8930 Cause @samp{make dist} to fail unless the current version number appears
8931 in the first few lines of the @file{NEWS} file.
8933 @item @option{color-tests}
8934 @cindex Option, @option{color-tests}
8935 @opindex color-tests
8936 Cause output of the simple test suite (@pxref{Simple Tests}) to be
8937 colorized on capable terminals.
8939 @item @option{dejagnu}
8940 @cindex Option, @option{dejagnu}
8941 @opindex dejagnu
8942 Cause @command{dejagnu}-specific rules to be generated.  @xref{DejaGnu Tests}.
8944 @item @option{dist-bzip2}
8945 @cindex Option, @option{dist-bzip2}
8946 @opindex dist-bzip2
8947 Hook @code{dist-bzip2} to @code{dist}.
8948 @trindex dist-bzip2
8950 @item @option{dist-lzma}
8951 @cindex Option, @option{dist-lzma}
8952 @opindex dist-lzma
8953 Hook @code{dist-lzma} to @code{dist}.
8954 @trindex dist-lzma
8956 @item @option{dist-shar}
8957 @cindex Option, @option{dist-shar}
8958 @opindex dist-shar
8959 Hook @code{dist-shar} to @code{dist}.
8960 @trindex dist-shar
8962 @item @option{dist-zip}
8963 @cindex Option, @option{dist-zip}
8964 @opindex dist-zip
8965 Hook @code{dist-zip} to @code{dist}.
8966 @trindex dist-zip
8968 @item @option{dist-tarZ}
8969 @cindex Option, @option{dist-tarZ}
8970 @opindex dist-tarZ
8971 Hook @code{dist-tarZ} to @code{dist}.
8972 @trindex dist-tarZ
8974 @item @option{filename-length-max=99}
8975 @cindex Option, @option{filename-length-max=99}
8976 @opindex filename-length-max=99
8977 Abort if file names longer than 99 characters are found during
8978 @samp{make dist}.  Such long file names are generally considered not to
8979 be portable in tarballs.  See the @option{tar-v7} and @option{tar-ustar}
8980 options below.  This option should be used in the top-level
8981 @file{Makefile.am} or as an argument of @code{AM_INIT_AUTOMAKE} in
8982 @file{configure.ac}, it will be ignored otherwise.  It will also be
8983 ignored in sub-packages of nested packages (@pxref{Subpackages}).
8985 @item @option{no-define}
8986 @cindex Option, @option{no-define}
8987 @opindex no-define
8988 This option is meaningful only when passed as an argument to
8989 @code{AM_INIT_AUTOMAKE}.  It will prevent the @code{PACKAGE} and
8990 @code{VERSION} variables from being @code{AC_DEFINE}d.
8992 @item @option{no-dependencies}
8993 @cindex Option, @option{no-dependencies}
8994 @opindex no-dependencies
8995 This is similar to using @option{--ignore-deps} on the command line,
8996 but is useful for those situations where you don't have the necessary
8997 bits to make automatic dependency tracking work
8998 (@pxref{Dependencies}).  In this case the effect is to effectively
8999 disable automatic dependency tracking.
9001 @item @option{no-dist}
9002 @cindex Option, @option{no-dist}
9003 @opindex no-dist
9004 Don't emit any code related to @code{dist} target.  This is useful
9005 when a package has its own method for making distributions.
9007 @item @option{no-dist-gzip}
9008 @cindex Option, @option{no-dist-gzip}
9009 @opindex no-dist-gzip
9010 Do not hook @code{dist-gzip} to @code{dist}.
9011 @trindex no-dist-gzip
9013 @item @option{no-exeext}
9014 @cindex Option, @option{no-exeext}
9015 @opindex no-exeext
9016 If your @file{Makefile.am} defines a rule for target @code{foo}, it
9017 will override a rule for a target named @samp{foo$(EXEEXT)}.  This is
9018 necessary when @code{EXEEXT} is found to be empty.  However, by
9019 default @command{automake} will generate an error for this use.  The
9020 @option{no-exeext} option will disable this error.  This is intended for
9021 use only where it is known in advance that the package will not be
9022 ported to Windows, or any other operating system using extensions on
9023 executables.
9025 @item @option{no-installinfo}
9026 @cindex Option, @option{no-installinfo}
9027 @opindex no-installinfo
9028 The generated @file{Makefile.in} will not cause info pages to be built
9029 or installed by default.  However, @code{info} and @code{install-info}
9030 targets will still be available.  This option is disallowed at
9031 @option{gnu} strictness and above.
9032 @trindex info
9033 @trindex install-info
9035 @item @option{no-installman}
9036 @cindex Option, @option{no-installman}
9037 @opindex no-installman
9038 The generated @file{Makefile.in} will not cause man pages to be
9039 installed by default.  However, an @code{install-man} target will still
9040 be available for optional installation.  This option is disallowed at
9041 @option{gnu} strictness and above.
9042 @trindex install-man
9044 @item @option{nostdinc}
9045 @cindex Option, @option{nostdinc}
9046 @opindex nostdinc
9047 This option can be used to disable the standard @option{-I} options that
9048 are ordinarily automatically provided by Automake.
9050 @item @option{no-texinfo.tex}
9051 @cindex Option, @option{no-texinfo.tex}
9052 @opindex no-texinfo.tex
9053 Don't require @file{texinfo.tex}, even if there are texinfo files in
9054 this directory.
9056 @item @option{parallel-tests}
9057 @cindex Option, @option{parallel-tests}
9058 @opindex parallel-tests
9059 Enable test suite driver for @code{TESTS} that can run tests in parallel
9060 (@pxref{Simple Tests using parallel-tests}, for more information).
9062 @item @option{readme-alpha}
9063 @cindex Option, @option{readme-alpha}
9064 @opindex readme-alpha
9065 If this release is an alpha release, and the file @file{README-alpha}
9066 exists, then it will be added to the distribution.  If this option is
9067 given, version numbers are expected to follow one of two forms.  The
9068 first form is @samp{@var{MAJOR}.@var{MINOR}.@var{ALPHA}}, where each
9069 element is a number; the final period and number should be left off for
9070 non-alpha releases.  The second form is
9071 @samp{@var{MAJOR}.@var{MINOR}@var{ALPHA}}, where @var{ALPHA} is a
9072 letter; it should be omitted for non-alpha releases.
9074 @item @option{silent-rules}
9075 @cindex Option, @option{silent-rules}
9076 @opindex silent-rules
9077 Enable silent build rules.  This will cause many build rules to output a
9078 status line of the form
9080 @example
9081   GEN @var{output-file}
9082 @end example
9084 @noindent
9085 instead of printing the command that will be executed to update
9086 @var{output-file}.  It will also silence @command{libtool} output.
9088 @vindex @code{V}
9089 The verbosity can be influenced at @command{make} run time by setting the
9090 variable @code{V}: @samp{make V=0} is equivalent to @code{V} being unset,
9091 while @samp{make V=1} will produce verbose output.
9093 For portability to different @command{make} implementations, package authors
9094 are advised to not set the variable @code{V} inside the @file{Makefile.am}
9095 file, to allow the user to override the value for subdirectories as well.
9097 The current implementation of this feature relies on a non-POSIX, but in
9098 practice rather widely supported @file{Makefile} construct of nested
9099 variable expansion @samp{$(@var{var1}$(V))}.  Do not use the
9100 @option{silent-rules} option if your package needs to build with
9101 @command{make} implementations that do not support it.  The
9102 @option{silent-rules} option turns off warnings about recursive variable
9103 expansion, which are in turn enabled by @option{-Wportability}
9104 (@pxref{Invoking Automake}).
9106 @vindex @code{AM_V_GEN}
9107 @vindex @code{AM_V_at}
9108 To extend the silent mode to your own rules, you can use the predefined
9109 variable @code{AM_V_GEN} as a prefix to commands that should output a
9110 status line in silent mode, and @code{AM_V_at} as a prefix to commands
9111 that should not output anything in silent mode.  With @code{V=1}, these
9112 variables will expand to empty strings.
9114 @item @option{std-options}
9115 @cindex Options, @option{std-options}
9116 @cindex @samp{make installcheck}, testing @option{--help} and @option{--version}
9117 @cindex @option{--help} check
9118 @cindex @option{--version} check
9119 @opindex std-options
9121 Make the @code{installcheck} rule check that installed scripts and
9122 programs support the @option{--help} and @option{--version} options.
9123 This also provides a basic check that the program's
9124 run-time dependencies are satisfied after installation.
9126 @vindex AM_INSTALLCHECK_STD_OPTIONS_EXEMPT
9127 In a few situations, programs (or scripts) have to be exempted from this
9128 test.  For instance, @command{false} (from GNU sh-utils) is never
9129 successful, even for @option{--help} or @option{--version}.  You can list
9130 such programs in the variable @code{AM_INSTALLCHECK_STD_OPTIONS_EXEMPT}.
9131 Programs (not scripts) listed in this variable should be suffixed by
9132 @samp{$(EXEEXT)} for the sake of Win32 or OS/2.  For instance, suppose we
9133 build @file{false} as a program but @file{true.sh} as a script, and that
9134 neither of them support @option{--help} or @option{--version}:
9136 @example
9137 AUTOMAKE_OPTIONS = std-options
9138 bin_PROGRAMS = false ...
9139 bin_SCRIPTS = true.sh ...
9140 AM_INSTALLCHECK_STD_OPTIONS_EXEMPT = false$(EXEEXT) true.sh
9141 @end example
9143 @item @option{subdir-objects}
9144 @cindex Options, @option{subdir-objects}
9145 @opindex subdir-objects
9146 If this option is specified, then objects are placed into the
9147 subdirectory of the build directory corresponding to the subdirectory of
9148 the source file.  For instance, if the source file is
9149 @file{subdir/file.cxx}, then the output file would be
9150 @file{subdir/file.o}.
9152 In order to use this option with C sources, you should add
9153 @code{AM_PROG_CC_C_O} to @file{configure.ac}.
9155 @anchor{tar-formats}
9156 @item @option{tar-v7}
9157 @itemx @option{tar-ustar}
9158 @itemx @option{tar-pax}
9159 @cindex Option, @option{tar-v7}
9160 @cindex Option, @option{tar-ustar}
9161 @cindex Option, @option{tar-pax}
9162 @cindex @command{tar} formats
9163 @cindex v7 @command{tar} format
9164 @cindex ustar format
9165 @cindex pax format
9166 @opindex tar-v7
9167 @opindex tar-ustar
9168 @opindex tar-pax
9170 These three mutually exclusive options select the tar format to use
9171 when generating tarballs with @samp{make dist}.  (The tar file created
9172 is then compressed according to the set of @option{no-dist-gzip},
9173 @option{dist-bzip2}, @option{dist-lzma} and @option{dist-tarZ} options in use.)
9175 These options must be passed as arguments to @code{AM_INIT_AUTOMAKE}
9176 (@pxref{Macros}) because they can require additional configure checks.
9177 Automake will complain if it sees such options in an
9178 @code{AUTOMAKE_OPTIONS} variable.
9180 @option{tar-v7} selects the old V7 tar format.  This is the historical
9181 default.  This antiquated format is understood by all tar
9182 implementations and supports file names with up to 99 characters.  When
9183 given longer file names some tar implementations will diagnose the
9184 problem while other will generate broken tarballs or use non-portable
9185 extensions.  Furthermore, the V7 format cannot store empty
9186 directories.  When using this format, consider using the
9187 @option{filename-length-max=99} option to catch file names too long.
9189 @option{tar-ustar} selects the ustar format defined by POSIX
9190 1003.1-1988.  This format is believed to be old enough to be portable.
9191 It fully supports empty directories.  It can store file names with up
9192 to 256 characters, provided that the file name can be split at
9193 directory separator in two parts, first of them being at most 155
9194 bytes long.  So, in most cases the maximum file name length will be
9195 shorter than 256 characters.  However you may run against broken tar
9196 implementations that incorrectly handle file names longer than 99
9197 characters (please report them to @email{bug-automake@@gnu.org} so we
9198 can document this accurately).
9200 @option{tar-pax} selects the new pax interchange format defined by POSIX
9201 1003.1-2001.  It does not limit the length of file names.  However,
9202 this format is very young and should probably be restricted to
9203 packages that target only very modern platforms.  There are moves to
9204 change the pax format in an upward-compatible way, so this option may
9205 refer to a more recent version in the future.
9207 @xref{Formats, , Controlling the Archive Format, tar, GNU Tar}, for
9208 further discussion about tar formats.
9210 @command{configure} knows several ways to construct these formats.  It
9211 will not abort if it cannot find a tool up to the task (so that the
9212 package can still be built), but @samp{make dist} will fail.
9214 @item @var{version}
9215 @cindex Option, @var{version}
9216 A version number (e.g., @samp{0.30}) can be specified.  If Automake is not
9217 newer than the version specified, creation of the @file{Makefile.in}
9218 will be suppressed.
9220 @item @option{-W@var{category}} or @option{--warnings=@var{category}}
9221 @cindex Option, warnings
9222 @cindex Option, @option{-W@var{category}}
9223 @cindex Option, @option{--warnings=@var{category}}
9224 These options behave exactly like their command-line counterpart
9225 (@pxref{Invoking Automake}).  This allows you to enable or disable some
9226 warning categories on a per-file basis.  You can also setup some warnings
9227 for your entire project; for instance, try @samp{AM_INIT_AUTOMAKE([-Wall])}
9228 in your @file{configure.ac}.
9230 @end table
9232 Unrecognized options are diagnosed by @command{automake}.
9234 If you want an option to apply to all the files in the tree, you can use
9235 the @code{AM_INIT_AUTOMAKE} macro in @file{configure.ac}.
9236 @xref{Macros}.
9239 @node Miscellaneous
9240 @chapter Miscellaneous Rules
9242 There are a few rules and variables that didn't fit anywhere else.
9244 @menu
9245 * Tags::                        Interfacing to etags and mkid
9246 * Suffixes::                    Handling new file extensions
9247 * Multilibs::                   Support for multilibs.
9248 @end menu
9251 @node Tags
9252 @section Interfacing to @command{etags}
9254 @cindex @file{TAGS} support
9256 Automake will generate rules to generate @file{TAGS} files for use with
9257 GNU Emacs under some circumstances.
9259 @trindex tags
9260 If any C, C++ or Fortran 77 source code or headers are present, then
9261 @code{tags} and @code{TAGS} rules will be generated for the directory.
9262 All files listed using the @code{_SOURCES}, @code{_HEADERS}, and
9263 @code{_LISP} primaries will be used to generate tags.  Note that
9264 generated source files that are not distributed must be declared in
9265 variables like @code{nodist_noinst_HEADERS} or
9266 @code{nodist_@var{prog}_SOURCES} or they will be ignored.
9268 A @code{tags} rule will be output at the topmost directory of a
9269 multi-directory package.  When run from this topmost directory,
9270 @samp{make tags} will generate a @file{TAGS} file that includes by
9271 reference all @file{TAGS} files from subdirectories.
9273 The @code{tags} rule will also be generated if the variable
9274 @code{ETAGS_ARGS} is defined.  This variable is intended for use in
9275 directories that contain taggable source that @command{etags} does
9276 not understand.  The user can use the @code{ETAGSFLAGS} to pass
9277 additional flags to @command{etags}; @code{AM_ETAGSFLAGS} is also
9278 available for use in @file{Makefile.am}.
9279 @vindex ETAGS_ARGS
9280 @vindex ETAGSFLAGS
9281 @vindex AM_ETAGSFLAGS
9283 Here is how Automake generates tags for its source, and for nodes in its
9284 Texinfo file:
9286 @example
9287 ETAGS_ARGS = automake.in --lang=none \
9288  --regex='/^@@node[ \t]+\([^,]+\)/\1/' automake.texi
9289 @end example
9291 If you add file names to @code{ETAGS_ARGS}, you will probably also
9292 want to define @code{TAGS_DEPENDENCIES}.  The contents of this variable
9293 are added directly to the dependencies for the @code{tags} rule.
9294 @vindex TAGS_DEPENDENCIES
9296 Automake also generates a @code{ctags} rule that can be used to
9297 build @command{vi}-style @file{tags} files.  The variable @code{CTAGS}
9298 is the name of the program to invoke (by default @command{ctags});
9299 @code{CTAGSFLAGS} can be used by the user to pass additional flags,
9300 and @code{AM_CTAGSFLAGS} can be used by the @file{Makefile.am}.
9302 Automake will also generate an @code{ID} rule that will run
9303 @command{mkid} on the source.  This is only supported on a
9304 directory-by-directory basis.
9305 @trindex id
9307 Finally, Automake also emits rules to support the
9308 @uref{http://www.gnu.org/software/global/, GNU Global Tags program}.
9309 The @code{GTAGS} rule runs Global Tags and puts the
9310 result in the top build directory.  The variable @code{GTAGS_ARGS}
9311 holds arguments that are passed to @command{gtags}.
9312 @vindex GTAGS_ARGS
9315 @node Suffixes
9316 @section Handling new file extensions
9318 @cindex Adding new @code{SUFFIXES}
9319 @cindex @code{SUFFIXES}, adding
9320 @vindex SUFFIXES
9322 It is sometimes useful to introduce a new implicit rule to handle a file
9323 type that Automake does not know about.
9325 For instance, suppose you had a compiler that could compile @file{.foo}
9326 files to @file{.o} files.  You would simply define a suffix rule for
9327 your language:
9329 @example
9330 .foo.o:
9331         foocc -c -o $@@ $<
9332 @end example
9334 Then you could directly use a @file{.foo} file in a @code{_SOURCES}
9335 variable and expect the correct results:
9337 @example
9338 bin_PROGRAMS = doit
9339 doit_SOURCES = doit.foo
9340 @end example
9342 This was the simpler and more common case.  In other cases, you will
9343 have to help Automake to figure out which extensions you are defining your
9344 suffix rule for.  This usually happens when your extension does not
9345 start with a dot.  Then, all you have to do is to put a list of new
9346 suffixes in the @code{SUFFIXES} variable @strong{before} you define your
9347 implicit rule.
9349 For instance, the following definition prevents Automake from misinterpreting
9350 the @samp{.idlC.cpp:} rule as an attempt to transform @file{.idlC} files into
9351 @file{.cpp} files.
9353 @example
9354 SUFFIXES = .idl C.cpp
9355 .idlC.cpp:
9356         # whatever
9357 @end example
9359 As you may have noted, the @code{SUFFIXES} variable behaves like the
9360 @code{.SUFFIXES} special target of @command{make}.  You should not touch
9361 @code{.SUFFIXES} yourself, but use @code{SUFFIXES} instead and let
9362 Automake generate the suffix list for @code{.SUFFIXES}.  Any given
9363 @code{SUFFIXES} go at the start of the generated suffixes list, followed
9364 by Automake generated suffixes not already in the list.
9366 @node Multilibs
9367 @section Support for Multilibs
9369 Automake has support for an obscure feature called multilibs.  A
9370 @dfn{multilib} is a library that is built for multiple different ABIs
9371 at a single time; each time the library is built with a different target
9372 flag combination.  This is only useful when the library is intended to
9373 be cross-compiled, and it is almost exclusively used for compiler
9374 support libraries.
9376 The multilib support is still experimental.  Only use it if you are
9377 familiar with multilibs and can debug problems you might encounter.
9380 @node Include
9381 @chapter Include
9383 @cmindex include
9384 @cindex Including @file{Makefile} fragment
9385 @cindex @file{Makefile} fragment, including
9387 Automake supports an @code{include} directive that  can be used to
9388 include other @file{Makefile} fragments when @command{automake} is run.
9389 Note that these fragments are read and interpreted by @command{automake},
9390 not by @command{make}.  As with conditionals, @command{make} has no idea that
9391 @code{include} is in use.
9393 There are two forms of @code{include}:
9395 @table @code
9396 @item include $(srcdir)/file
9397 Include a fragment that is found relative to the current source
9398 directory.
9400 @item include $(top_srcdir)/file
9401 Include a fragment that is found relative to the top source directory.
9402 @end table
9404 Note that if a fragment is included inside a conditional, then the
9405 condition applies to the entire contents of that fragment.
9407 Makefile fragments included this way are always distributed because
9408 they are needed to rebuild @file{Makefile.in}.
9410 @node Conditionals
9411 @chapter Conditionals
9413 @cindex Conditionals
9415 Automake supports a simple type of conditionals.
9417 These conditionals are not the same as conditionals in
9418 GNU Make.  Automake conditionals are checked at configure time by the
9419 @file{configure} script, and affect the translation from
9420 @file{Makefile.in} to @file{Makefile}.  They are based on options passed
9421 to @file{configure} and on results that @file{configure} has discovered
9422 about the host system.  GNU Make conditionals are checked at @command{make}
9423 time, and are based on variables passed to the make program or defined
9424 in the @file{Makefile}.
9426 Automake conditionals will work with any make program.
9428 @menu
9429 * Usage of Conditionals::       Declaring conditional content
9430 * Limits of Conditionals::      Enclosing complete statements
9431 @end menu
9433 @node Usage of Conditionals
9434 @section Usage of Conditionals
9436 @acindex AM_CONDITIONAL
9437 Before using a conditional, you must define it by using
9438 @code{AM_CONDITIONAL} in the @file{configure.ac} file (@pxref{Macros}).
9440 @defmac AM_CONDITIONAL (@var{conditional}, @var{condition})
9441 The conditional name, @var{conditional}, should be a simple string
9442 starting with a letter and containing only letters, digits, and
9443 underscores.  It must be different from @samp{TRUE} and @samp{FALSE}
9444 that are reserved by Automake.
9446 The shell @var{condition} (suitable for use in a shell @code{if}
9447 statement) is evaluated when @command{configure} is run.  Note that you
9448 must arrange for @emph{every} @code{AM_CONDITIONAL} to be invoked every
9449 time @command{configure} is run.  If @code{AM_CONDITIONAL} is run
9450 conditionally (e.g., in a shell @code{if} statement), then the result
9451 will confuse @command{automake}.
9452 @end defmac
9454 @cindex @option{--enable-debug}, example
9455 @cindex Example conditional @option{--enable-debug}
9456 @cindex Conditional example, @option{--enable-debug}
9458 Conditionals typically depend upon options that the user provides to
9459 the @command{configure} script.  Here is an example of how to write a
9460 conditional that is true if the user uses the @option{--enable-debug}
9461 option.
9463 @example
9464 AC_ARG_ENABLE([debug],
9465 [  --enable-debug    Turn on debugging],
9466 [case "$@{enableval@}" in
9467   yes) debug=true ;;
9468   no)  debug=false ;;
9469   *) AC_MSG_ERROR([bad value $@{enableval@} for --enable-debug]) ;;
9470 esac],[debug=false])
9471 AM_CONDITIONAL([DEBUG], [test x$debug = xtrue])
9472 @end example
9474 Here is an example of how to use that conditional in @file{Makefile.am}:
9476 @cmindex if
9477 @cmindex endif
9478 @cmindex else
9480 @example
9481 if DEBUG
9482 DBG = debug
9483 else
9484 DBG =
9485 endif
9486 noinst_PROGRAMS = $(DBG)
9487 @end example
9489 This trivial example could also be handled using @code{EXTRA_PROGRAMS}
9490 (@pxref{Conditional Programs}).
9492 You may only test a single variable in an @code{if} statement, possibly
9493 negated using @samp{!}.  The @code{else} statement may be omitted.
9494 Conditionals may be nested to any depth.  You may specify an argument to
9495 @code{else} in which case it must be the negation of the condition used
9496 for the current @code{if}.  Similarly you may specify the condition
9497 that is closed by an @code{end}:
9499 @example
9500 if DEBUG
9501 DBG = debug
9502 else !DEBUG
9503 DBG =
9504 endif !DEBUG
9505 @end example
9507 @noindent
9508 Unbalanced conditions are errors.
9510 The @code{else} branch of the above two examples could be omitted,
9511 since assigning the empty string to an otherwise undefined variable
9512 makes no difference.
9514 @acindex AM_COND_IF
9515 In order to allow access to the condition registered by
9516 @code{AM_CONDITIONAL} inside @file{configure.ac}, and to allow
9517 conditional @code{AC_CONFIG_FILES}, @code{AM_COND_IF} may be used:
9519 @defmac AM_COND_IF (@var{conditional}, @ovar{if-true}, @ovar{if-false})
9520 If @var{conditional} is fulfilled, execute @var{if-true}, otherwise
9521 execute @var{if-false}.  If either branch contains @code{AC_CONFIG_FILES},
9522 it will cause @command{automake} to output the rules for the respective
9523 files only for the given condition.
9524 @end defmac
9526 @code{AM_COND_IF} macros may be nested when m4 quotation is used
9527 properly (@pxref{M4 Quotation, ,, autoconf, The Autoconf Manual}).
9529 @cindex Example conditional @code{AC_CONFIG_FILES}
9530 @cindex @code{AC_CONFIG_FILES}, conditional
9532 Here is an example of how to define a conditional config file:
9534 @example
9535 AM_CONDITIONAL([SHELL_WRAPPER], [test "x$with_wrapper" = xtrue])
9536 AM_COND_IF([SHELL_WRAPPER],
9537            [AC_CONFIG_FILES([wrapper:wrapper.in])])
9538 @end example
9540 @node Limits of Conditionals
9541 @section Limits of Conditionals
9543 Conditionals should enclose complete statements like variables or
9544 rules definitions.  Automake cannot deal with conditionals used inside
9545 a variable definition, for instance, and is not even able to diagnose
9546 this situation.  The following example would not work:
9548 @example
9549 # This syntax is not understood by Automake
9550 AM_CPPFLAGS = \
9551   -DFEATURE_A \
9552 if WANT_DEBUG
9553   -DDEBUG \
9554 endif
9555   -DFEATURE_B
9556 @end example
9558 However the intended definition of @code{AM_CPPFLAGS} can be achieved
9559 with
9561 @example
9562 if WANT_DEBUG
9563   DEBUGFLAGS = -DDEBUG
9564 endif
9565 AM_CPPFLAGS = -DFEATURE_A $(DEBUGFLAGS) -DFEATURE_B
9566 @end example
9568 @noindent
9571 @example
9572 AM_CPPFLAGS = -DFEATURE_A
9573 if WANT_DEBUG
9574 AM_CPPFLAGS += -DDEBUG
9575 endif
9576 AM_CPPFLAGS += -DFEATURE_B
9577 @end example
9579 More details and examples of conditionals are described alongside
9580 various Automake features in this manual (@pxref{Conditional
9581 Subdirectories}, @pxref{Conditional Sources}, @pxref{Conditional
9582 Programs}, @pxref{Conditional Libtool Libraries}, @pxref{Conditional
9583 Libtool Sources}).
9585 @node Gnits
9586 @chapter The effect of @option{--gnu} and @option{--gnits}
9588 @cindex @option{--gnu}, required files
9589 @cindex @option{--gnu}, complete description
9591 The @option{--gnu} option (or @option{gnu} in the
9592 @code{AUTOMAKE_OPTIONS} variable) causes @command{automake} to check
9593 the following:
9595 @itemize @bullet
9596 @item
9597 The files @file{INSTALL}, @file{NEWS}, @file{README}, @file{AUTHORS},
9598 and @file{ChangeLog}, plus one of @file{COPYING.LIB}, @file{COPYING.LESSER}
9599 or @file{COPYING}, are required at the topmost directory of the package.
9601 If the @option{--add-missing} option is given, @command{automake} will
9602 add a generic version of the @file{INSTALL} file as well as the
9603 @file{COPYING} file containing the text of the current version of the
9604 GNU General Public License existing at the time of this Automake release
9605 (version 3 as this is written, @uref{http://www.gnu.org/@/copyleft/@/gpl.html}).
9606 However, an existing @file{COPYING} file will never be overwritten by
9607 @command{automake}.
9609 @item
9610 The options @option{no-installman} and @option{no-installinfo} are
9611 prohibited.
9612 @end itemize
9614 Note that this option will be extended in the future to do even more
9615 checking; it is advisable to be familiar with the precise requirements
9616 of the GNU standards.  Also, @option{--gnu} can require certain
9617 non-standard GNU programs to exist for use by various maintainer-only
9618 rules; for instance, in the future @command{pathchk} might be required for
9619 @samp{make dist}.
9621 @cindex @option{--gnits}, complete description
9623 The @option{--gnits} option does everything that @option{--gnu} does, and
9624 checks the following as well:
9626 @itemize @bullet
9627 @item
9628 @samp{make installcheck} will check to make sure that the @option{--help}
9629 and @option{--version} really print a usage message and a version string,
9630 respectively.  This is the @option{std-options} option (@pxref{Options}).
9632 @item
9633 @samp{make dist} will check to make sure the @file{NEWS} file has been
9634 updated to the current version.
9636 @item
9637 @code{VERSION} is checked to make sure its format complies with Gnits
9638 standards.
9639 @c FIXME xref when standards are finished
9641 @item
9642 @cindex @file{README-alpha}
9643 If @code{VERSION} indicates that this is an alpha release, and the file
9644 @file{README-alpha} appears in the topmost directory of a package, then
9645 it is included in the distribution.  This is done in @option{--gnits}
9646 mode, and no other, because this mode is the only one where version
9647 number formats are constrained, and hence the only mode where Automake
9648 can automatically determine whether @file{README-alpha} should be
9649 included.
9651 @item
9652 The file @file{THANKS} is required.
9653 @end itemize
9656 @node Cygnus
9657 @chapter The effect of @option{--cygnus}
9659 @cindex @option{cygnus} strictness
9661 Some packages, notably GNU GCC and GNU gdb, have a build environment
9662 originally written at Cygnus Support (subsequently renamed Cygnus
9663 Solutions, and then later purchased by Red Hat).  Packages with this
9664 ancestry are sometimes referred to as ``Cygnus'' trees.
9666 A Cygnus tree has slightly different rules for how a
9667 @file{Makefile.in} is to be constructed.  Passing @option{--cygnus} to
9668 @command{automake} will cause any generated @file{Makefile.in} to
9669 comply with Cygnus rules.
9671 Here are the precise effects of @option{--cygnus}:
9673 @itemize @bullet
9674 @item
9675 Info files are always created in the build directory, and not in the
9676 source directory.
9678 @item
9679 @file{texinfo.tex} is not required if a Texinfo source file is
9680 specified.  The assumption is that the file will be supplied, but in a
9681 place that Automake cannot find.  This assumption is an artifact of how
9682 Cygnus packages are typically bundled.
9684 @item
9685 @samp{make dist} is not supported, and the rules for it are not
9686 generated.  Cygnus-style trees use their own distribution mechanism.
9688 @item
9689 Certain tools will be searched for in the build tree as well as in the
9690 user's @env{PATH}.  These tools are @command{runtest}, @command{expect},
9691 @command{makeinfo} and @command{texi2dvi}.
9693 @item
9694 @option{--foreign} is implied.
9696 @item
9697 The options @option{no-installinfo} and @option{no-dependencies} are
9698 implied.
9700 @item
9701 The macros @code{AM_MAINTAINER_MODE} and @code{AM_CYGWIN32} are
9702 required.
9704 @item
9705 The @code{check} target doesn't depend on @code{all}.
9706 @end itemize
9708 GNU maintainers are advised to use @option{gnu} strictness in preference
9709 to the special Cygnus mode.  Some day, perhaps, the differences between
9710 Cygnus trees and GNU trees will disappear (for instance, as GCC is made
9711 more standards compliant).  At that time the special Cygnus mode will be
9712 removed.
9715 @node Not Enough
9716 @chapter When Automake Isn't Enough
9718 In some situations, where Automake is not up to one task, one has to
9719 resort to handwritten rules or even handwritten @file{Makefile}s.
9721 @menu
9722 * Extending::                   Adding new rules or overriding existing ones.
9723 * Third-Party Makefiles::       Integrating Non-Automake @file{Makefile}s.
9724 @end menu
9726 @node Extending
9727 @section Extending Automake Rules
9729 With some minor exceptions (for example @code{_PROGRAMS} variables,
9730 @code{TESTS}, or @code{XFAIL_TESTS}) being rewritten to append
9731 @samp{$(EXEEXT)}), the contents of a @file{Makefile.am} is copied to
9732 @file{Makefile.in} verbatim.
9734 @cindex copying semantics
9736 These copying semantics mean that many problems can be worked around
9737 by simply adding some @command{make} variables and rules to
9738 @file{Makefile.am}.  Automake will ignore these additions.
9740 @cindex conflicting definitions
9741 @cindex rules, conflicting
9742 @cindex variables, conflicting
9743 @cindex definitions, conflicts
9745 Since a @file{Makefile.in} is built from data gathered from three
9746 different places (@file{Makefile.am}, @file{configure.ac}, and
9747 @command{automake} itself), it is possible to have conflicting
9748 definitions of rules or variables.  When building @file{Makefile.in}
9749 the following priorities are respected by @command{automake} to ensure
9750 the user always has the last word.  User defined variables in
9751 @file{Makefile.am} have priority over variables @code{AC_SUBST}ed from
9752 @file{configure.ac}, and @code{AC_SUBST}ed variables have priority
9753 over @command{automake}-defined variables.  As far as rules are
9754 concerned, a user-defined rule overrides any
9755 @command{automake}-defined rule for the same target.
9757 @cindex overriding rules
9758 @cindex overriding semantics
9759 @cindex rules, overriding
9761 These overriding semantics make it possible to fine tune some default
9762 settings of Automake, or replace some of its rules.  Overriding
9763 Automake rules is often inadvisable, particularly in the topmost
9764 directory of a package with subdirectories.  The @option{-Woverride}
9765 option (@pxref{Invoking Automake}) comes in handy to catch overridden
9766 definitions.
9768 Note that Automake does not make any distinction between rules with
9769 commands and rules that only specify dependencies.  So it is not
9770 possible to append new dependencies to an @command{automake}-defined
9771 target without redefining the entire rule.
9773 @cindex @option{-local} targets
9774 @cindex local targets
9776 However, various useful targets have a @samp{-local} version you can
9777 specify in your @file{Makefile.am}.  Automake will supplement the
9778 standard target with these user-supplied targets.
9780 @trindex  all
9781 @trindex  all-local
9782 @trindex  info
9783 @trindex  info-local
9784 @trindex  dvi
9785 @trindex  dvi-local
9786 @trindex  ps
9787 @trindex  ps-local
9788 @trindex  pdf
9789 @trindex  pdf-local
9790 @trindex  html
9791 @trindex  html-local
9792 @trindex  check
9793 @trindex  check-local
9794 @trindex  install
9795 @trindex  install-data
9796 @trindex  install-data-local
9797 @trindex  install-dvi
9798 @trindex  install-dvi-local
9799 @trindex  install-exec
9800 @trindex  install-exec-local
9801 @trindex  install-html
9802 @trindex  install-html-local
9803 @trindex  install-info
9804 @trindex  install-info-local
9805 @trindex  install-pdf
9806 @trindex  install-pdf-local
9807 @trindex  install-ps
9808 @trindex  install-ps-local
9809 @trindex  uninstall
9810 @trindex  uninstall-local
9811 @trindex  mostlyclean
9812 @trindex  mostlyclean-local
9813 @trindex  clean
9814 @trindex  clean-local
9815 @trindex  distclean
9816 @trindex  distclean-local
9817 @trindex  installdirs
9818 @trindex  installdirs-local
9819 @trindex  installcheck
9820 @trindex  installcheck-local
9822 The targets that support a local version are @code{all}, @code{info},
9823 @code{dvi}, @code{ps}, @code{pdf}, @code{html}, @code{check},
9824 @code{install-data}, @code{install-dvi}, @code{install-exec},
9825 @code{install-html}, @code{install-info}, @code{install-pdf},
9826 @code{install-ps}, @code{uninstall}, @code{installdirs},
9827 @code{installcheck} and the various @code{clean} targets
9828 (@code{mostlyclean}, @code{clean}, @code{distclean}, and
9829 @code{maintainer-clean}).
9831 Note that there are no @code{uninstall-exec-local} or
9832 @code{uninstall-data-local} targets; just use @code{uninstall-local}.
9833 It doesn't make sense to uninstall just data or just executables.
9835 For instance, here is one way to erase a subdirectory during
9836 @samp{make clean} (@pxref{Clean}).
9838 @example
9839 clean-local:
9840         -rm -rf testSubDir
9841 @end example
9843 You may be tempted to use @code{install-data-local} to install a file
9844 to some hard-coded location, but you should avoid this
9845 (@pxref{Hard-Coded Install Paths}).
9847 With the @code{-local} targets, there is no particular guarantee of
9848 execution order; typically, they are run early, but with parallel
9849 make, there is no way to be sure of that.
9851 @cindex @option{-hook} targets
9852 @cindex hook targets
9853 @trindex install-data-hook
9854 @trindex install-exec-hook
9855 @trindex uninstall-hook
9856 @trindex dist-hook
9858 In contrast, some rules also have a way to run another rule, called a
9859 @dfn{hook}; hooks are always executed after the main rule's work is done.
9860 The hook is named after the principal target, with @samp{-hook} appended.
9861 The targets allowing hooks are @code{install-data},
9862 @code{install-exec}, @code{uninstall}, @code{dist}, and
9863 @code{distcheck}.
9865 For instance, here is how to create a hard link to an installed program:
9867 @example
9868 install-exec-hook:
9869         ln $(DESTDIR)$(bindir)/program$(EXEEXT) \
9870            $(DESTDIR)$(bindir)/proglink$(EXEEXT)
9871 @end example
9873 Although cheaper and more portable than symbolic links, hard links
9874 will not work everywhere (for instance, OS/2 does not have
9875 @command{ln}).  Ideally you should fall back to @samp{cp -p} when
9876 @command{ln} does not work.  An easy way, if symbolic links are
9877 acceptable to you, is to add @code{AC_PROG_LN_S} to
9878 @file{configure.ac} (@pxref{Particular Programs, , Particular Program
9879 Checks, autoconf, The Autoconf Manual}) and use @samp{$(LN_S)} in
9880 @file{Makefile.am}.
9882 @cindex versioned binaries, installing
9883 @cindex installing versioned binaries
9884 @cindex @code{LN_S} example
9885 For instance, here is how you could install a versioned copy of a
9886 program using @samp{$(LN_S)}:
9888 @example
9889 install-exec-hook:
9890         cd $(DESTDIR)$(bindir) && \
9891           mv -f prog$(EXEEXT) prog-$(VERSION)$(EXEEXT) && \
9892           $(LN_S) prog-$(VERSION)$(EXEEXT) prog$(EXEEXT)
9893 @end example
9895 Note that we rename the program so that a new version will erase the
9896 symbolic link, not the real binary.  Also we @command{cd} into the
9897 destination directory in order to create relative links.
9899 When writing @code{install-exec-hook} or @code{install-data-hook},
9900 please bear in mind that the exec/data distinction is based on the
9901 installation directory, not on the primary used (@pxref{The Two Parts of
9902 Install}).  So a @code{foo_SCRIPTS} will be installed by
9903 @code{install-data}, and a @code{barexec_SCRIPTS} will be installed by
9904 @code{install-exec}.  You should define your hooks consequently.
9906 @c FIXME should include discussion of variables you can use in these
9907 @c rules
9909 @node Third-Party Makefiles
9910 @section Third-Party @file{Makefile}s
9912 @cindex Third-party packages, interfacing with
9913 @cindex Interfacing with third-party packages
9915 In most projects all @file{Makefile}s are generated by Automake.  In
9916 some cases, however, projects need to embed subdirectories with
9917 handwritten @file{Makefile}s.  For instance, one subdirectory could be
9918 a third-party project with its own build system, not using Automake.
9920 It is possible to list arbitrary directories in @code{SUBDIRS} or
9921 @code{DIST_SUBDIRS} provided each of these directories has a
9922 @file{Makefile} that recognizes all the following recursive targets.
9924 @cindex recursive targets and third-party @file{Makefile}s
9925 When a user runs one of these targets, that target is run recursively
9926 in all subdirectories.  This is why it is important that even
9927 third-party @file{Makefile}s support them.
9929 @table @code
9930 @item all
9931 Compile the entire package.  This is the default target in
9932 Automake-generated @file{Makefile}s, but it does not need to be the
9933 default in third-party @file{Makefile}s.
9935 @item distdir
9936 @trindex distdir
9937 @vindex distdir
9938 @vindex top_distdir
9939 Copy files to distribute into @samp{$(distdir)}, before a tarball is
9940 constructed.  Of course this target is not required if the
9941 @option{no-dist} option (@pxref{Options}) is used.
9943 The variables @samp{$(top_distdir)} and @samp{$(distdir)}
9944 (@pxref{The dist Hook}) will be passed from the outer package to the subpackage
9945 when the @code{distdir} target is invoked.  These two variables have
9946 been adjusted for the directory that is being recursed into, so they
9947 are ready to use.
9949 @item install
9950 @itemx install-data
9951 @itemx install-exec
9952 @itemx uninstall
9953 Install or uninstall files (@pxref{Install}).
9955 @item install-dvi
9956 @itemx install-html
9957 @itemx install-info
9958 @itemx install-ps
9959 @itemx install-pdf
9960 Install only some specific documentation format (@pxref{Texinfo}).
9962 @item installdirs
9963 Create install directories, but do not install any files.
9965 @item check
9966 @itemx installcheck
9967 Check the package (@pxref{Tests}).
9969 @item mostlyclean
9970 @itemx clean
9971 @itemx distclean
9972 @itemx maintainer-clean
9973 Cleaning rules (@pxref{Clean}).
9975 @item dvi
9976 @itemx pdf
9977 @itemx ps
9978 @itemx info
9979 @itemx html
9980 Build the documentation in various formats (@pxref{Texinfo}).
9982 @item tags
9983 @itemx ctags
9984 Build @file{TAGS} and @file{CTAGS} (@pxref{Tags}).
9985 @end table
9987 If you have ever used Gettext in a project, this is a good example of
9988 how third-party @file{Makefile}s can be used with Automake.  The
9989 @file{Makefile}s @command{gettextize} puts in the @file{po/} and
9990 @file{intl/} directories are handwritten @file{Makefile}s that
9991 implement all these targets.  That way they can be added to
9992 @code{SUBDIRS} in Automake packages.
9994 Directories that are only listed in @code{DIST_SUBDIRS} but not in
9995 @code{SUBDIRS} need only the @code{distclean},
9996 @code{maintainer-clean}, and @code{distdir} rules (@pxref{Conditional
9997 Subdirectories}).
9999 Usually, many of these rules are irrelevant to the third-party
10000 subproject, but they are required for the whole package to work.  It's
10001 OK to have a rule that does nothing, so if you are integrating a
10002 third-party project with no documentation or tag support, you could
10003 simply augment its @file{Makefile} as follows:
10005 @example
10006 EMPTY_AUTOMAKE_TARGETS = dvi pdf ps info html tags ctags
10007 .PHONY: $(EMPTY_AUTOMAKE_TARGETS)
10008 $(EMPTY_AUTOMAKE_TARGETS):
10009 @end example
10011 Another aspect of integrating third-party build systems is whether
10012 they support VPATH builds (@pxref{VPATH Builds}).  Obviously if the
10013 subpackage does not support VPATH builds the whole package will not
10014 support VPATH builds.  This in turns means that @samp{make distcheck}
10015 will not work, because it relies on VPATH builds.  Some people can
10016 live without this (actually, many Automake users have never heard of
10017 @samp{make distcheck}).  Other people may prefer to revamp the
10018 existing @file{Makefile}s to support VPATH@.  Doing so does not
10019 necessarily require Automake, only Autoconf is needed (@pxref{Build
10020 Directories, , Build Directories, autoconf, The Autoconf Manual}).
10021 The necessary substitutions: @samp{@@srcdir@@}, @samp{@@top_srcdir@@},
10022 and @samp{@@top_builddir@@} are defined by @file{configure} when it
10023 processes a @file{Makefile} (@pxref{Preset Output Variables, , Preset
10024 Output Variables, autoconf, The Autoconf Manual}), they are not
10025 computed by the Makefile like the aforementioned @samp{$(distdir)} and
10026 @samp{$(top_distdir)} variables.
10028 It is sometimes inconvenient to modify a third-party @file{Makefile}
10029 to introduce the above required targets.  For instance, one may want to
10030 keep the third-party sources untouched to ease upgrades to new
10031 versions.
10033 @cindex @file{GNUmakefile} including @file{Makefile}
10034 Here are two other ideas.  If GNU make is assumed, one possibility is
10035 to add to that subdirectory a @file{GNUmakefile} that defines the
10036 required targets and includes the third-party @file{Makefile}.  For
10037 this to work in VPATH builds, @file{GNUmakefile} must lie in the build
10038 directory; the easiest way to do this is to write a
10039 @file{GNUmakefile.in} instead, and have it processed with
10040 @code{AC_CONFIG_FILES} from the outer package.  For example if we
10041 assume @file{Makefile} defines all targets except the documentation
10042 targets, and that the @code{check} target is actually called
10043 @code{test}, we could write @file{GNUmakefile} (or
10044 @file{GNUmakefile.in}) like this:
10046 @example
10047 # First, include the real Makefile
10048 include Makefile
10049 # Then, define the other targets needed by Automake Makefiles.
10050 .PHONY: dvi pdf ps info html check
10051 dvi pdf ps info html:
10052 check: test
10053 @end example
10055 @cindex Proxy @file{Makefile} for third-party packages
10056 A similar idea that does not use @code{include} is to write a proxy
10057 @file{Makefile} that dispatches rules to the real @file{Makefile},
10058 either with @samp{$(MAKE) -f Makefile.real $(AM_MAKEFLAGS) target} (if
10059 it's OK to rename the original @file{Makefile}) or with @samp{cd
10060 subdir && $(MAKE) $(AM_MAKEFLAGS) target} (if it's OK to store the
10061 subdirectory project one directory deeper).  The good news is that
10062 this proxy @file{Makefile} can be generated with Automake.  All we
10063 need are @option{-local} targets (@pxref{Extending}) that perform the
10064 dispatch.  Of course the other Automake features are available, so you
10065 could decide to let Automake perform distribution or installation.
10066 Here is a possible @file{Makefile.am}:
10068 @example
10069 all-local:
10070         cd subdir && $(MAKE) $(AM_MAKEFLAGS) all
10071 check-local:
10072         cd subdir && $(MAKE) $(AM_MAKEFLAGS) test
10073 clean-local:
10074         cd subdir && $(MAKE) $(AM_MAKEFLAGS) clean
10076 # Assuming the package knows how to install itself
10077 install-data-local:
10078         cd subdir && $(MAKE) $(AM_MAKEFLAGS) install-data
10079 install-exec-local:
10080         cd subdir && $(MAKE) $(AM_MAKEFLAGS) install-exec
10081 uninstall-local:
10082         cd subdir && $(MAKE) $(AM_MAKEFLAGS) uninstall
10084 # Distribute files from here.
10085 EXTRA_DIST = subdir/Makefile subdir/program.c ...
10086 @end example
10088 Pushing this idea to the extreme, it is also possible to ignore the
10089 subproject build system and build everything from this proxy
10090 @file{Makefile.am}.  This might sound very sensible if you need VPATH
10091 builds but the subproject does not support them.
10093 @node Distributing
10094 @chapter Distributing @file{Makefile.in}s
10096 Automake places no restrictions on the distribution of the resulting
10097 @file{Makefile.in}s.  We still encourage software authors to
10098 distribute their work under terms like those of the GPL, but doing so
10099 is not required to use Automake.
10101 Some of the files that can be automatically installed via the
10102 @option{--add-missing} switch do fall under the GPL@.  However, these also
10103 have a special exception allowing you to distribute them with your
10104 package, regardless of the licensing you choose.
10107 @node API Versioning
10108 @chapter Automake API Versioning
10110 New Automake releases usually include bug fixes and new features.
10111 Unfortunately they may also introduce new bugs and incompatibilities.
10112 This makes four reasons why a package may require a particular Automake
10113 version.
10115 Things get worse when maintaining a large tree of packages, each one
10116 requiring a different version of Automake.  In the past, this meant that
10117 any developer (and sometimes users) had to install several versions of
10118 Automake in different places, and switch @samp{$PATH} appropriately for
10119 each package.
10121 Starting with version 1.6, Automake installs versioned binaries.  This
10122 means you can install several versions of Automake in the same
10123 @samp{$prefix}, and can select an arbitrary Automake version by running
10124 @command{automake-1.6} or @command{automake-1.7} without juggling with
10125 @samp{$PATH}.  Furthermore, @file{Makefile}'s generated by Automake 1.6
10126 will use @command{automake-1.6} explicitly in their rebuild rules.
10128 The number @samp{1.6} in @command{automake-1.6} is Automake's API version,
10129 not Automake's version.  If a bug fix release is made, for instance
10130 Automake 1.6.1, the API version will remain 1.6.  This means that a
10131 package that works with Automake 1.6 should also work with 1.6.1; after
10132 all, this is what people expect from bug fix releases.
10134 If your package relies on a feature or a bug fix introduced in
10135 a release, you can pass this version as an option to Automake to ensure
10136 older releases will not be used.  For instance, use this in your
10137 @file{configure.ac}:
10139 @example
10140   AM_INIT_AUTOMAKE([1.6.1])    dnl Require Automake 1.6.1 or better.
10141 @end example
10142 @noindent
10143 or, in a particular @file{Makefile.am}:
10145 @example
10146   AUTOMAKE_OPTIONS = 1.6.1   # Require Automake 1.6.1 or better.
10147 @end example
10148 @noindent
10149 Automake will print an error message if its version is
10150 older than the requested version.
10153 @heading What is in the API
10155 Automake's programming interface is not easy to define.  Basically it
10156 should include at least all @strong{documented} variables and targets
10157 that a @file{Makefile.am} author can use, any behavior associated with
10158 them (e.g., the places where @samp{-hook}'s are run), the command line
10159 interface of @command{automake} and @command{aclocal}, @dots{}
10161 @heading What is not in the API
10163 Every undocumented variable, target, or command line option, is not part
10164 of the API@.  You should avoid using them, as they could change from one
10165 version to the other (even in bug fix releases, if this helps to fix a
10166 bug).
10168 If it turns out you need to use such a undocumented feature, contact
10169 @email{automake@@gnu.org} and try to get it documented and exercised by
10170 the test-suite.
10172 @node Upgrading
10173 @chapter Upgrading a Package to a Newer Automake Version
10175 Automake maintains three kind of files in a package.
10177 @itemize
10178 @item @file{aclocal.m4}
10179 @item @file{Makefile.in}s
10180 @item auxiliary tools like @file{install-sh} or @file{py-compile}
10181 @end itemize
10183 @file{aclocal.m4} is generated by @command{aclocal} and contains some
10184 Automake-supplied M4 macros.  Auxiliary tools are installed by
10185 @samp{automake --add-missing} when needed.  @file{Makefile.in}s are
10186 built from @file{Makefile.am} by @command{automake}, and rely on the
10187 definitions of the M4 macros put in @file{aclocal.m4} as well as the
10188 behavior of the auxiliary tools installed.
10190 Because all these files are closely related, it is important to
10191 regenerate all of them when upgrading to a newer Automake release.
10192 The usual way to do that is
10194 @example
10195 aclocal # with any option needed (such a -I m4)
10196 autoconf
10197 automake --add-missing --force-missing
10198 @end example
10200 @noindent
10201 or more conveniently:
10203 @example
10204 autoreconf -vfi
10205 @end example
10207 The use of @option{--force-missing} ensures that auxiliary tools will be
10208 overridden by new versions (@pxref{Invoking Automake}).
10210 It is important to regenerate all these files each time Automake is
10211 upgraded, even between bug fixes releases.  For instance, it is not
10212 unusual for a bug fix to involve changes to both the rules generated
10213 in @file{Makefile.in} and the supporting M4 macros copied to
10214 @file{aclocal.m4}.
10216 Presently @command{automake} is able to diagnose situations where
10217 @file{aclocal.m4} has been generated with another version of
10218 @command{aclocal}.  However it never checks whether auxiliary scripts
10219 are up-to-date.  In other words, @command{automake} will tell you when
10220 @command{aclocal} needs to be rerun, but it will never diagnose a
10221 missing @option{--force-missing}.
10223 Before upgrading to a new major release, it is a good idea to read the
10224 file @file{NEWS}.  This file lists all changes between releases: new
10225 features, obsolete constructs, known incompatibilities, and
10226 workarounds.
10228 @node FAQ
10229 @chapter Frequently Asked Questions about Automake
10231 This chapter covers some questions that often come up on the mailing
10232 lists.
10234 @menu
10235 * CVS::                         CVS and generated files
10236 * maintainer-mode::             missing and AM_MAINTAINER_MODE
10237 * Wildcards::                   Why doesn't Automake support wildcards?
10238 * Limitations on File Names::   Limitations on source and installed file names
10239 * distcleancheck::              Files left in build directory after distclean
10240 * Flag Variables Ordering::     CFLAGS vs.@: AM_CFLAGS vs.@: mumble_CFLAGS
10241 * Renamed Objects::             Why are object files sometimes renamed?
10242 * Per-Object Flags::            How to simulate per-object flags?
10243 * Multiple Outputs::            Writing rules for tools with many output files
10244 * Hard-Coded Install Paths::    Installing to Hard-Coded Locations
10245 @end menu
10247 @node CVS
10248 @section CVS and generated files
10250 @subheading Background: distributed generated Files
10251 @cindex generated files, distributed
10252 @cindex rebuild rules
10254 Packages made with Autoconf and Automake ship with some generated
10255 files like @file{configure} or @file{Makefile.in}.  These files were
10256 generated on the developer's host and are distributed so that
10257 end-users do not have to install the maintainer tools required to
10258 rebuild them.  Other generated files like Lex scanners, Yacc parsers,
10259 or Info documentation, are usually distributed on similar grounds.
10261 Automake outputs rules in @file{Makefile}s to rebuild these files.  For
10262 instance, @command{make} will run @command{autoconf} to rebuild
10263 @file{configure} whenever @file{configure.ac} is changed.  This makes
10264 development safer by ensuring a @file{configure} is never out-of-date
10265 with respect to @file{configure.ac}.
10267 As generated files shipped in packages are up-to-date, and because
10268 @command{tar} preserves times-tamps, these rebuild rules are not
10269 triggered when a user unpacks and builds a package.
10271 @subheading Background: CVS and Timestamps
10272 @cindex timestamps and CVS
10273 @cindex CVS and timestamps
10275 Unless you use CVS keywords (in which case files must be updated at
10276 commit time), CVS preserves timestamp during @samp{cvs commit} and
10277 @samp{cvs import -d} operations.
10279 When you check out a file using @samp{cvs checkout} its timestamp is
10280 set to that of the revision that is being checked out.
10282 However, during @command{cvs update}, files will have the date of the
10283 update, not the original timestamp of this revision.  This is meant to
10284 make sure that @command{make} notices sources files have been updated.
10286 This timestamp shift is troublesome when both sources and generated
10287 files are kept under CVS@.  Because CVS processes files in lexical
10288 order, @file{configure.ac} will appear newer than @file{configure}
10289 after a @command{cvs update} that updates both files, even if
10290 @file{configure} was newer than @file{configure.ac} when it was
10291 checked in.  Calling @command{make} will then trigger a spurious rebuild
10292 of @file{configure}.
10294 @subheading Living with CVS in Autoconfiscated Projects
10295 @cindex CVS and generated files
10296 @cindex generated files and CVS
10298 There are basically two clans amongst maintainers: those who keep all
10299 distributed files under CVS, including generated files, and those who
10300 keep generated files @emph{out} of CVS.
10302 @subsubheading All Files in CVS
10304 @itemize @bullet
10305 @item
10306 The CVS repository contains all distributed files so you know exactly
10307 what is distributed, and you can checkout any prior version entirely.
10309 @item
10310 Maintainers can see how generated files evolve (for instance, you can
10311 see what happens to your @file{Makefile.in}s when you upgrade Automake
10312 and make sure they look OK).
10314 @item
10315 Users do not need the autotools to build a checkout of the project, it
10316 works just like a released tarball.
10318 @item
10319 If users use @command{cvs update} to update their copy, instead of
10320 @command{cvs checkout} to fetch a fresh one, timestamps will be
10321 inaccurate.  Some rebuild rules will be triggered and attempt to
10322 run developer tools such as @command{autoconf} or @command{automake}.
10324 Actually, calls to such tools are all wrapped into a call to the
10325 @command{missing} script discussed later (@pxref{maintainer-mode}).
10326 @command{missing} will take care of fixing the timestamps when these
10327 tools are not installed, so that the build can continue.
10329 @item
10330 In distributed development, developers are likely to have different
10331 version of the maintainer tools installed.  In this case rebuilds
10332 triggered by timestamp lossage will lead to spurious changes
10333 to generated files.  There are several solutions to this:
10335 @itemize
10336 @item
10337 All developers should use the same versions, so that the rebuilt files
10338 are identical to files in CVS@.  (This starts to be difficult when each
10339 project you work on uses different versions.)
10340 @item
10341 Or people use a script to fix the timestamp after a checkout (the GCC
10342 folks have such a script).
10343 @item
10344 Or @file{configure.ac} uses @code{AM_MAINTAINER_MODE}, which will
10345 disable all these rebuild rules by default.  This is further discussed
10346 in @ref{maintainer-mode}.
10347 @end itemize
10349 @item
10350 Although we focused on spurious rebuilds, the converse can also
10351 happen.  CVS's timestamp handling can also let you think an
10352 out-of-date file is up-to-date.
10354 For instance, suppose a developer has modified @file{Makefile.am} and
10355 has rebuilt @file{Makefile.in}.  He then decides to do a last-minute
10356 change to @file{Makefile.am} right before checking in both files
10357 (without rebuilding @file{Makefile.in} to account for the change).
10359 This last change to @file{Makefile.am} makes the copy of
10360 @file{Makefile.in} out-of-date.  Since CVS processes files
10361 alphabetically, when another developer @samp{cvs update}s his or her
10362 tree, @file{Makefile.in} will happen to be newer than
10363 @file{Makefile.am}.  This other developer will not see that
10364 @file{Makefile.in} is out-of-date.
10366 @end itemize
10368 @subsubheading Generated Files out of CVS
10370 One way to get CVS and @command{make} working peacefully is to never
10371 store generated files in CVS, i.e., do not CVS-control files that
10372 are @file{Makefile} targets (also called @emph{derived} files).
10374 This way developers are not annoyed by changes to generated files.  It
10375 does not matter if they all have different versions (assuming they are
10376 compatible, of course).  And finally, timestamps are not lost, changes
10377 to sources files can't be missed as in the
10378 @file{Makefile.am}/@file{Makefile.in} example discussed earlier.
10380 The drawback is that the CVS repository is not an exact copy of what
10381 is distributed and that users now need to install various development
10382 tools (maybe even specific versions) before they can build a checkout.
10383 But, after all, CVS's job is versioning, not distribution.
10385 Allowing developers to use different versions of their tools can also
10386 hide bugs during distributed development.  Indeed, developers will be
10387 using (hence testing) their own generated files, instead of the
10388 generated files that will be released actually.  The developer who
10389 prepares the tarball might be using a version of the tool that
10390 produces bogus output (for instance a non-portable C file), something
10391 other developers could have noticed if they weren't using their own
10392 versions of this tool.
10394 @subheading Third-party Files
10395 @cindex CVS and third-party files
10396 @cindex third-party files and CVS
10398 Another class of files not discussed here (because they do not cause
10399 timestamp issues) are files that are shipped with a package, but
10400 maintained elsewhere.  For instance, tools like @command{gettextize}
10401 and @command{autopoint} (from Gettext) or @command{libtoolize} (from
10402 Libtool), will install or update files in your package.
10404 These files, whether they are kept under CVS or not, raise similar
10405 concerns about version mismatch between developers' tools.  The
10406 Gettext manual has a section about this, see @ref{CVS Issues, CVS
10407 Issues, Integrating with CVS, gettext, GNU gettext tools}.
10409 @node maintainer-mode
10410 @section @command{missing} and @code{AM_MAINTAINER_MODE}
10412 @subheading @command{missing}
10413 @cindex @command{missing}, purpose
10415 The @command{missing} script is a wrapper around several maintainer
10416 tools, designed to warn users if a maintainer tool is required but
10417 missing.  Typical maintainer tools are @command{autoconf},
10418 @command{automake}, @command{bison}, etc.  Because file generated by
10419 these tools are shipped with the other sources of a package, these
10420 tools shouldn't be required during a user build and they are not
10421 checked for in @file{configure}.
10423 However, if for some reason a rebuild rule is triggered and involves a
10424 missing tool, @command{missing} will notice it and warn the user.
10425 Besides the warning, when a tool is missing, @command{missing} will
10426 attempt to fix timestamps in a way that allows the build to continue.
10427 For instance, @command{missing} will touch @file{configure} if
10428 @command{autoconf} is not installed.  When all distributed files are
10429 kept under CVS, this feature of @command{missing} allows a user
10430 @emph{with no maintainer tools} to build a package off CVS, bypassing
10431 any timestamp inconsistency implied by @samp{cvs update}.
10433 If the required tool is installed, @command{missing} will run it and
10434 won't attempt to continue after failures.  This is correct during
10435 development: developers love fixing failures.  However, users with
10436 wrong versions of maintainer tools may get an error when the rebuild
10437 rule is spuriously triggered, halting the build.  This failure to let
10438 the build continue is one of the arguments of the
10439 @code{AM_MAINTAINER_MODE} advocates.
10441 @subheading @code{AM_MAINTAINER_MODE}
10442 @cindex @code{AM_MAINTAINER_MODE}, purpose
10443 @acindex AM_MAINTAINER_MODE
10445 @code{AM_MAINTAINER_MODE} allows you to choose whether the so called
10446 "rebuild rules" should be enabled or disabled.  With
10447 @code{AM_MAINTAINER_MODE([enable])}, they are enabled by default,
10448 otherwise they are disabled by default.  In the latter case, if
10449 you have @code{AM_MAINTAINER_MODE} in @file{configure.ac}, and run
10450 @samp{./configure && make}, then @command{make} will *never* attempt to
10451 rebuild @file{configure}, @file{Makefile.in}s, Lex or Yacc outputs, etc.
10452 I.e., this disables build rules for files that are usually distributed
10453 and that users should normally not have to update.
10455 The user can override the default setting by passing either
10456 @samp{--enable-maintainer-mode} or @samp{--disable-maintainer-mode}
10457 to @command{configure}.
10459 People use @code{AM_MAINTAINER_MODE} either because they do not want their
10460 users (or themselves) annoyed by timestamps lossage (@pxref{CVS}), or
10461 because they simply can't stand the rebuild rules and prefer running
10462 maintainer tools explicitly.
10464 @code{AM_MAINTAINER_MODE} also allows you to disable some custom build
10465 rules conditionally.  Some developers use this feature to disable
10466 rules that need exotic tools that users may not have available.
10468 Several years ago Fran@,{c}ois Pinard pointed out several arguments
10469 against this @code{AM_MAINTAINER_MODE} macro.  Most of them relate to
10470 insecurity.  By removing dependencies you get non-dependable builds:
10471 changes to sources files can have no effect on generated files and this
10472 can be very confusing when unnoticed.  He adds that security shouldn't
10473 be reserved to maintainers (what @option{--enable-maintainer-mode}
10474 suggests), on the contrary.  If one user has to modify a
10475 @file{Makefile.am}, then either @file{Makefile.in} should be updated
10476 or a warning should be output (this is what Automake uses
10477 @command{missing} for) but the last thing you want is that nothing
10478 happens and the user doesn't notice it (this is what happens when
10479 rebuild rules are disabled by @code{AM_MAINTAINER_MODE}).
10481 Jim Meyering, the inventor of the @code{AM_MAINTAINER_MODE} macro was
10482 swayed by Fran@,{c}ois's arguments, and got rid of
10483 @code{AM_MAINTAINER_MODE} in all of his packages.
10485 Still many people continue to use @code{AM_MAINTAINER_MODE}, because
10486 it helps them working on projects where all files are kept under CVS,
10487 and because @command{missing} isn't enough if you have the wrong
10488 version of the tools.
10491 @node Wildcards
10492 @section Why doesn't Automake support wildcards?
10493 @cindex wildcards
10495 Developers are lazy.  They would often like to use wildcards in
10496 @file{Makefile.am}s, so that they would not need to remember to
10497 update @file{Makefile.am}s every time they add, delete, or rename
10498 a file.
10500 There are several objections to this:
10501 @itemize
10502 @item
10503 When using CVS (or similar) developers need to remember they have to
10504 run @samp{cvs add} or @samp{cvs rm} anyway.  Updating
10505 @file{Makefile.am} accordingly quickly becomes a reflex.
10507 Conversely, if your application doesn't compile
10508 because you forgot to add a file in @file{Makefile.am}, it will help
10509 you remember to @samp{cvs add} it.
10511 @item
10512 Using wildcards makes it easy to distribute files by mistake.  For
10513 instance, some code a developer is experimenting with (a test case,
10514 say) that should not be part of the distribution.
10516 @item
10517 Using wildcards it's easy to omit some files by mistake.  For
10518 instance, one developer creates a new file, uses it in many places,
10519 but forgets to commit it.  Another developer then checks out the
10520 incomplete project and is able to run @samp{make dist} successfully,
10521 even though a file is missing. By listing files, @samp{make dist}
10522 @emph{will} complain.
10524 @item
10525 Finally, it's really hard to @emph{forget} to add a file to
10526 @file{Makefile.am}: files that are not listed in @file{Makefile.am} are
10527 not compiled or installed, so you can't even test them.
10528 @end itemize
10530 Still, these are philosophical objections, and as such you may disagree,
10531 or find enough value in wildcards to dismiss all of them.  Before you
10532 start writing a patch against Automake to teach it about wildcards,
10533 let's see the main technical issue: portability.
10535 Although @samp{$(wildcard ...)} works with GNU @command{make}, it is
10536 not portable to other @command{make} implementations.
10538 The only way Automake could support @command{$(wildcard ...)} is by
10539 expending @command{$(wildcard ...)} when @command{automake} is run.
10540 The resulting @file{Makefile.in}s would be portable since they would
10541 list all files and not use @samp{$(wildcard ...)}.  However that
10542 means developers would need to remember to run @command{automake} each
10543 time they add, delete, or rename files.
10545 Compared to editing @file{Makefile.am}, this is a very small gain.  Sure,
10546 it's easier and faster to type @samp{automake; make} than to type
10547 @samp{emacs Makefile.am; make}.  But nobody bothered enough to write a
10548 patch to add support for this syntax.  Some people use scripts to
10549 generate file lists in @file{Makefile.am} or in separate
10550 @file{Makefile} fragments.
10552 Even if you don't care about portability, and are tempted to use
10553 @samp{$(wildcard ...)} anyway because you target only GNU Make, you
10554 should know there are many places where Automake needs to know exactly
10555 which files should be processed.  As Automake doesn't know how to
10556 expand @samp{$(wildcard ...)}, you cannot use it in these places.
10557 @samp{$(wildcard ...)} is a black box comparable to @code{AC_SUBST}ed
10558 variables as far Automake is concerned.
10560 You can get warnings about @samp{$(wildcard ...}) constructs using the
10561 @option{-Wportability} flag.
10563 @node Limitations on File Names
10564 @section Limitations on File Names
10565 @cindex file names, limitations on
10567 Automake attempts to support all kinds of file names, even those that
10568 contain unusual characters or are unusually long.  However, some
10569 limitations are imposed by the underlying operating system and tools.
10571 Most operating systems prohibit the use of the null byte in file
10572 names, and reserve @samp{/} as a directory separator.  Also, they
10573 require that file names are properly encoded for the user's locale.
10574 Automake is subject to these limits.
10576 Portable packages should limit themselves to @acronym{POSIX} file
10577 names.  These can contain @acronym{ASCII} letters and digits,
10578 @samp{_}, @samp{.}, and @samp{-}.  File names consist of components
10579 separated by @samp{/}.  File name components cannot begin with
10580 @samp{-}.
10582 Portable POSIX file names cannot contain components that exceed a
10583 14-byte limit, but nowadays it's normally safe to assume the
10584 more-generous @acronym{XOPEN} limit of 255 bytes.  @acronym{POSIX}
10585 limits file names to 255 bytes (@acronym{XOPEN} allows 1023 bytes),
10586 but you may want to limit a source tarball to file names of 99 bytes
10587 to avoid interoperability problems with old versions of @command{tar}.
10589 If you depart from these rules (e.g., by using non-@acronym{ASCII}
10590 characters in file names, or by using lengthy file names), your
10591 installers may have problems for reasons unrelated to Automake.
10592 However, if this does not concern you, you should know about the
10593 limitations imposed by Automake itself.  These limitations are
10594 undesirable, but some of them seem to be inherent to underlying tools
10595 like Autoconf, Make, M4, and the shell.  They fall into three
10596 categories: install directories, build directories, and file names.
10598 The following characters:
10600 @example
10601 @r{newline} " # $ ' `
10602 @end example
10604 should not appear in the names of install directories.  For example,
10605 the operand of @command{configure}'s @option{--prefix} option should
10606 not contain these characters.
10608 Build directories suffer the same limitations as install directories,
10609 and in addition should not contain the following characters:
10611 @example
10612 & @@ \
10613 @end example
10615 For example, the full name of the directory containing the source
10616 files should not contain these characters.
10618 Source and installation file names like @file{main.c} are limited even
10619 further: they should conform to the @acronym{POSIX}/@acronym{XOPEN}
10620 rules described above.  In addition, if you plan to port to
10621 non-@acronym{POSIX} environments, you should avoid file names that
10622 differ only in case (e.g., @file{makefile} and @file{Makefile}).
10623 Nowadays it is no longer worth worrying about the 8.3 limits of
10624 @acronym{DOS} file systems.
10626 @node distcleancheck
10627 @section Files left in build directory after distclean
10628 @cindex @code{distclean}, diagnostic
10629 @cindex @samp{make distclean}, diagnostic
10630 @cindex dependencies and distributed files
10631 @trindex distclean
10632 @trindex distcleancheck
10634 This is a diagnostic you might encounter while running @samp{make
10635 distcheck}.
10637 As explained in @ref{Checking the Distribution}, @samp{make distcheck}
10638 attempts to build and check your package for errors like this one.
10640 @samp{make distcheck} will perform a @code{VPATH} build of your
10641 package (@pxref{VPATH Builds}), and then call @samp{make distclean}.
10642 Files left in the build directory after @samp{make distclean} has run
10643 are listed after this error.
10645 This diagnostic really covers two kinds of errors:
10647 @itemize @bullet
10648 @item
10649 files that are forgotten by distclean;
10650 @item
10651 distributed files that are erroneously rebuilt.
10652 @end itemize
10654 The former left-over files are not distributed, so the fix is to mark
10655 them for cleaning (@pxref{Clean}), this is obvious and doesn't deserve
10656 more explanations.
10658 The latter bug is not always easy to understand and fix, so let's
10659 proceed with an example.  Suppose our package contains a program for
10660 which we want to build a man page using @command{help2man}.  GNU
10661 @command{help2man} produces simple manual pages from the @option{--help}
10662 and @option{--version} output of other commands (@pxref{Top, , Overview,
10663 help2man, The Help2man Manual}).  Because we don't want to force our
10664 users to install @command{help2man}, we decide to distribute the
10665 generated man page using the following setup.
10667 @example
10668 # This Makefile.am is bogus.
10669 bin_PROGRAMS = foo
10670 foo_SOURCES = foo.c
10671 dist_man_MANS = foo.1
10673 foo.1: foo$(EXEEXT)
10674         help2man --output=foo.1 ./foo$(EXEEXT)
10675 @end example
10677 This will effectively distribute the man page.  However,
10678 @samp{make distcheck} will fail with:
10680 @example
10681 ERROR: files left in build directory after distclean:
10682 ./foo.1
10683 @end example
10685 Why was @file{foo.1} rebuilt?  Because although distributed,
10686 @file{foo.1} depends on a non-distributed built file:
10687 @file{foo$(EXEEXT)}.  @file{foo$(EXEEXT)} is built by the user, so it
10688 will always appear to be newer than the distributed @file{foo.1}.
10690 @samp{make distcheck} caught an inconsistency in our package.  Our
10691 intent was to distribute @file{foo.1} so users do not need to install
10692 @command{help2man}, however since this rule causes this file to be
10693 always rebuilt, users @emph{do} need @command{help2man}.  Either we
10694 should ensure that @file{foo.1} is not rebuilt by users, or there is
10695 no point in distributing @file{foo.1}.
10697 More generally, the rule is that distributed files should never depend
10698 on non-distributed built files.  If you distribute something
10699 generated, distribute its sources.
10701 One way to fix the above example, while still distributing
10702 @file{foo.1} is to not depend on @file{foo$(EXEEXT)}.  For instance,
10703 assuming @command{foo --version} and @command{foo --help} do not
10704 change unless @file{foo.c} or @file{configure.ac} change, we could
10705 write the following @file{Makefile.am}:
10707 @example
10708 bin_PROGRAMS = foo
10709 foo_SOURCES = foo.c
10710 dist_man_MANS = foo.1
10712 foo.1: foo.c $(top_srcdir)/configure.ac
10713         $(MAKE) $(AM_MAKEFLAGS) foo$(EXEEXT)
10714         help2man --output=foo.1 ./foo$(EXEEXT)
10715 @end example
10717 This way, @file{foo.1} will not get rebuilt every time
10718 @file{foo$(EXEEXT)} changes.  The @command{make} call makes sure
10719 @file{foo$(EXEEXT)} is up-to-date before @command{help2man}.  Another
10720 way to ensure this would be to use separate directories for binaries
10721 and man pages, and set @code{SUBDIRS} so that binaries are built
10722 before man pages.
10724 We could also decide not to distribute @file{foo.1}.  In
10725 this case it's fine to have @file{foo.1} dependent upon
10726 @file{foo$(EXEEXT)}, since both will have to be rebuilt.
10727 However it would be impossible to build the package in a
10728 cross-compilation, because building @file{foo.1} involves
10729 an @emph{execution} of @file{foo$(EXEEXT)}.
10731 Another context where such errors are common is when distributed files
10732 are built by tools that are built by the package.  The pattern is
10733 similar:
10735 @example
10736 distributed-file: built-tools distributed-sources
10737         build-command
10738 @end example
10740 @noindent
10741 should be changed to
10743 @example
10744 distributed-file: distributed-sources
10745         $(MAKE) $(AM_MAKEFLAGS) built-tools
10746         build-command
10747 @end example
10749 @noindent
10750 or you could choose not to distribute @file{distributed-file}, if
10751 cross-compilation does not matter.
10753 The points made through these examples are worth a summary:
10755 @cartouche
10756 @itemize
10757 @item
10758 Distributed files should never depend upon non-distributed built
10759 files.
10760 @item
10761 Distributed files should be distributed with all their dependencies.
10762 @item
10763 If a file is @emph{intended} to be rebuilt by users, then there is no point
10764 in distributing it.
10765 @end itemize
10766 @end cartouche
10768 @vrindex distcleancheck_listfiles
10769 For desperate cases, it's always possible to disable this check by
10770 setting @code{distcleancheck_listfiles} as documented in @ref{Checking
10771 the Distribution}.
10772 Make sure you do understand the reason why @samp{make distcheck}
10773 complains before you do this.  @code{distcleancheck_listfiles} is a
10774 way to @emph{hide} errors, not to fix them.  You can always do better.
10776 @node Flag Variables Ordering
10777 @section Flag Variables Ordering
10778 @cindex Ordering flag variables
10779 @cindex Flag variables, ordering
10781 @display
10782 What is the difference between @code{AM_CFLAGS}, @code{CFLAGS}, and
10783 @code{mumble_CFLAGS}?
10784 @end display
10786 @display
10787 Why does @command{automake} output @code{CPPFLAGS} after
10788 @code{AM_CPPFLAGS} on compile lines?  Shouldn't it be the converse?
10789 @end display
10791 @display
10792 My @file{configure} adds some warning flags into @code{CXXFLAGS}.  In
10793 one @file{Makefile.am} I would like to append a new flag, however if I
10794 put the flag into @code{AM_CXXFLAGS} it is prepended to the other
10795 flags, not appended.
10796 @end display
10798 @subheading Compile Flag Variables
10799 @cindex Flag Variables, Ordering
10800 @cindex Compile Flag Variables
10801 @cindex @code{AM_CCASFLAGS} and @code{CCASFLAGS}
10802 @cindex @code{AM_CFLAGS} and @code{CFLAGS}
10803 @cindex @code{AM_CPPFLAGS} and @code{CPPFLAGS}
10804 @cindex @code{AM_CXXFLAGS} and @code{CXXFLAGS}
10805 @cindex @code{AM_FCFLAGS} and @code{FCFLAGS}
10806 @cindex @code{AM_FFLAGS} and @code{FFLAGS}
10807 @cindex @code{AM_GCJFLAGS} and @code{GCJFLAGS}
10808 @cindex @code{AM_LDFLAGS} and @code{LDFLAGS}
10809 @cindex @code{AM_LFLAGS} and @code{LFLAGS}
10810 @cindex @code{AM_LIBTOOLFLAGS} and @code{LIBTOOLFLAGS}
10811 @cindex @code{AM_OBJCFLAGS} and @code{OBJCFLAGS}
10812 @cindex @code{AM_RFLAGS} and @code{RFLAGS}
10813 @cindex @code{AM_UPCFLAGS} and @code{UPCFLAGS}
10814 @cindex @code{AM_YFLAGS} and @code{YFLAGS}
10815 @cindex @code{CCASFLAGS} and @code{AM_CCASFLAGS}
10816 @cindex @code{CFLAGS} and @code{AM_CFLAGS}
10817 @cindex @code{CPPFLAGS} and @code{AM_CPPFLAGS}
10818 @cindex @code{CXXFLAGS} and @code{AM_CXXFLAGS}
10819 @cindex @code{FCFLAGS} and @code{AM_FCFLAGS}
10820 @cindex @code{FFLAGS} and @code{AM_FFLAGS}
10821 @cindex @code{GCJFLAGS} and @code{AM_GCJFLAGS}
10822 @cindex @code{LDFLAGS} and @code{AM_LDFLAGS}
10823 @cindex @code{LFLAGS} and @code{AM_LFLAGS}
10824 @cindex @code{LIBTOOLFLAGS} and @code{AM_LIBTOOLFLAGS}
10825 @cindex @code{OBJCFLAGS} and @code{AM_OBJCFLAGS}
10826 @cindex @code{RFLAGS} and @code{AM_RFLAGS}
10827 @cindex @code{UPCFLAGS} and @code{AM_UPCFLAGS}
10828 @cindex @code{YFLAGS} and @code{AM_YFLAGS}
10830 This section attempts to answer all the above questions.  We will
10831 mostly discuss @code{CPPFLAGS} in our examples, but actually the
10832 answer holds for all the compile flags used in Automake:
10833 @code{CCASFLAGS}, @code{CFLAGS}, @code{CPPFLAGS}, @code{CXXFLAGS},
10834 @code{FCFLAGS}, @code{FFLAGS}, @code{GCJFLAGS}, @code{LDFLAGS},
10835 @code{LFLAGS}, @code{LIBTOOLFLAGS}, @code{OBJCFLAGS}, @code{RFLAGS},
10836 @code{UPCFLAGS}, and @code{YFLAGS}.
10838 @code{CPPFLAGS}, @code{AM_CPPFLAGS}, and @code{mumble_CPPFLAGS} are
10839 three variables that can be used to pass flags to the C preprocessor
10840 (actually these variables are also used for other languages like C++
10841 or preprocessed Fortran).  @code{CPPFLAGS} is the user variable
10842 (@pxref{User Variables}), @code{AM_CPPFLAGS} is the Automake variable,
10843 and @code{mumble_CPPFLAGS} is the variable specific to the
10844 @code{mumble} target (we call this a per-target variable,
10845 @pxref{Program and Library Variables}).
10847 Automake always uses two of these variables when compiling C sources
10848 files.  When compiling an object file for the @code{mumble} target,
10849 the first variable will be @code{mumble_CPPFLAGS} if it is defined, or
10850 @code{AM_CPPFLAGS} otherwise.  The second variable is always
10851 @code{CPPFLAGS}.
10853 In the following example,
10855 @example
10856 bin_PROGRAMS = foo bar
10857 foo_SOURCES = xyz.c
10858 bar_SOURCES = main.c
10859 foo_CPPFLAGS = -DFOO
10860 AM_CPPFLAGS = -DBAZ
10861 @end example
10863 @noindent
10864 @file{xyz.o} will be compiled with @samp{$(foo_CPPFLAGS) $(CPPFLAGS)},
10865 (because @file{xyz.o} is part of the @code{foo} target), while
10866 @file{main.o} will be compiled with @samp{$(AM_CPPFLAGS) $(CPPFLAGS)}
10867 (because there is no per-target variable for target @code{bar}).
10869 The difference between @code{mumble_CPPFLAGS} and @code{AM_CPPFLAGS}
10870 being clear enough, let's focus on @code{CPPFLAGS}.  @code{CPPFLAGS}
10871 is a user variable, i.e., a variable that users are entitled to modify
10872 in order to compile the package.  This variable, like many others,
10873 is documented at the end of the output of @samp{configure --help}.
10875 For instance, someone who needs to add @file{/home/my/usr/include} to
10876 the C compiler's search path would configure a package with
10878 @example
10879 ./configure CPPFLAGS='-I /home/my/usr/include'
10880 @end example
10882 @noindent
10883 and this flag would be propagated to the compile rules of all
10884 @file{Makefile}s.
10886 It is also not uncommon to override a user variable at
10887 @command{make}-time.  Many installers do this with @code{prefix}, but
10888 this can be useful with compiler flags too.  For instance, if, while
10889 debugging a C++ project, you need to disable optimization in one
10890 specific object file, you can run something like
10892 @example
10893 rm file.o
10894 make CXXFLAGS=-O0 file.o
10895 make
10896 @end example
10898 The reason @samp{$(CPPFLAGS)} appears after @samp{$(AM_CPPFLAGS)} or
10899 @samp{$(mumble_CPPFLAGS)} in the compile command is that users
10900 should always have the last say.  It probably makes more sense if you
10901 think about it while looking at the @samp{CXXFLAGS=-O0} above, which
10902 should supersede any other switch from @code{AM_CXXFLAGS} or
10903 @code{mumble_CXXFLAGS} (and this of course replaces the previous value
10904 of @code{CXXFLAGS}).
10906 You should never redefine a user variable such as @code{CPPFLAGS} in
10907 @file{Makefile.am}.  Use @samp{automake -Woverride} to diagnose such
10908 mistakes.  Even something like
10910 @example
10911 CPPFLAGS = -DDATADIR=\"$(datadir)\" @@CPPFLAGS@@
10912 @end example
10914 @noindent
10915 is erroneous.  Although this preserves @file{configure}'s value of
10916 @code{CPPFLAGS}, the definition of @code{DATADIR} will disappear if a
10917 user attempts to override @code{CPPFLAGS} from the @command{make}
10918 command line.
10920 @example
10921 AM_CPPFLAGS = -DDATADIR=\"$(datadir)\"
10922 @end example
10924 @noindent
10925 is all that is needed here if no per-target flags are used.
10927 You should not add options to these user variables within
10928 @file{configure} either, for the same reason.  Occasionally you need
10929 to modify these variables to perform a test, but you should reset
10930 their values afterwards.  In contrast, it is OK to modify the
10931 @samp{AM_} variables within @file{configure} if you @code{AC_SUBST}
10932 them, but it is rather rare that you need to do this, unless you
10933 really want to change the default definitions of the @samp{AM_}
10934 variables in all @file{Makefile}s.
10936 What we recommend is that you define extra flags in separate
10937 variables.  For instance, you may write an Autoconf macro that computes
10938 a set of warning options for the C compiler, and @code{AC_SUBST} them
10939 in @code{WARNINGCFLAGS}; you may also have an Autoconf macro that
10940 determines which compiler and which linker flags should be used to
10941 link with library @file{libfoo}, and @code{AC_SUBST} these in
10942 @code{LIBFOOCFLAGS} and @code{LIBFOOLDFLAGS}.  Then, a
10943 @file{Makefile.am} could use these variables as follows:
10945 @example
10946 AM_CFLAGS = $(WARNINGCFLAGS)
10947 bin_PROGRAMS = prog1 prog2
10948 prog1_SOURCES = @dots{}
10949 prog2_SOURCES = @dots{}
10950 prog2_CFLAGS = $(LIBFOOCFLAGS) $(AM_CFLAGS)
10951 prog2_LDFLAGS = $(LIBFOOLDFLAGS)
10952 @end example
10954 In this example both programs will be compiled with the flags
10955 substituted into @samp{$(WARNINGCFLAGS)}, and @code{prog2} will
10956 additionally be compiled with the flags required to link with
10957 @file{libfoo}.
10959 Note that listing @code{AM_CFLAGS} in a per-target @code{CFLAGS}
10960 variable is a common idiom to ensure that @code{AM_CFLAGS} applies to
10961 every target in a @file{Makefile.in}.
10963 Using variables like this gives you full control over the ordering of
10964 the flags.  For instance, if there is a flag in $(WARNINGCFLAGS) that
10965 you want to negate for a particular target, you can use something like
10966 @samp{prog1_CFLAGS = $(AM_CFLAGS) -no-flag}.  If all these flags had
10967 been forcefully appended to @code{CFLAGS}, there would be no way to
10968 disable one flag.  Yet another reason to leave user variables to
10969 users.
10971 Finally, we have avoided naming the variable of the example
10972 @code{LIBFOO_LDFLAGS} (with an underscore) because that would cause
10973 Automake to think that this is actually a per-target variable (like
10974 @code{mumble_LDFLAGS}) for some non-declared @code{LIBFOO} target.
10976 @subheading Other Variables
10978 There are other variables in Automake that follow similar principles
10979 to allow user options.  For instance, Texinfo rules (@pxref{Texinfo})
10980 use @code{MAKEINFOFLAGS} and @code{AM_MAKEINFOFLAGS}.  Similarly,
10981 DejaGnu tests (@pxref{DejaGnu Tests}) use @code{RUNTESTDEFAULTFLAGS} and
10982 @code{AM_RUNTESTDEFAULTFLAGS}.  The tags and ctags rules
10983 (@pxref{Tags}) use @code{ETAGSFLAGS}, @code{AM_ETAGSFLAGS},
10984 @code{CTAGSFLAGS}, and @code{AM_CTAGSFLAGS}.  Java rules
10985 (@pxref{Java}) use @code{JAVACFLAGS} and @code{AM_JAVACFLAGS}.  None
10986 of these rules support per-target flags (yet).
10988 To some extent, even @code{AM_MAKEFLAGS} (@pxref{Subdirectories})
10989 obeys this naming scheme.  The slight difference is that
10990 @code{MAKEFLAGS} is passed to sub-@command{make}s implicitly by
10991 @command{make} itself.
10993 However you should not think that all variables ending with
10994 @code{FLAGS} follow this convention.  For instance,
10995 @code{DISTCHECK_CONFIGURE_FLAGS} (@pxref{Checking the Distribution}) and
10996 @code{ACLOCAL_AMFLAGS} (see @ref{Rebuilding} and @ref{Local Macros}),
10997 are two variables that are only useful to the maintainer and have no
10998 user counterpart.
11000 @code{ARFLAGS} (@pxref{A Library}) is usually defined by Automake and
11001 has neither @code{AM_} nor per-target cousin.
11003 Finally you should not think that the existence of a per-target
11004 variable implies the existance of an @code{AM_} variable or of a user
11005 variable.  For instance, the @code{mumble_LDADD} per-target variable
11006 overrides the makefile-wide @code{LDADD} variable (which is not a user
11007 variable), and @code{mumble_LIBADD} exists only as a per-target
11008 variable.  @xref{Program and Library Variables}.
11011 @node Renamed Objects
11012 @section Why are object files sometimes renamed?
11014 This happens when per-target compilation flags are used.  Object
11015 files need to be renamed just in case they would clash with object
11016 files compiled from the same sources, but with different flags.
11017 Consider the following example.
11019 @example
11020 bin_PROGRAMS = true false
11021 true_SOURCES = generic.c
11022 true_CPPFLAGS = -DEXIT_CODE=0
11023 false_SOURCES = generic.c
11024 false_CPPFLAGS = -DEXIT_CODE=1
11025 @end example
11026 @noindent
11027 Obviously the two programs are built from the same source, but it
11028 would be bad if they shared the same object, because @file{generic.o}
11029 cannot be built with both @samp{-DEXIT_CODE=0} @emph{and}
11030 @samp{-DEXIT_CODE=1}.  Therefore @command{automake} outputs rules to
11031 build two different objects: @file{true-generic.o} and
11032 @file{false-generic.o}.
11034 @command{automake} doesn't actually look whether source files are
11035 shared to decide if it must rename objects.  It will just rename all
11036 objects of a target as soon as it sees per-target compilation flags
11037 used.
11039 It's OK to share object files when per-target compilation flags are not
11040 used.  For instance, @file{true} and @file{false} will both use
11041 @file{version.o} in the following example.
11043 @example
11044 AM_CPPFLAGS = -DVERSION=1.0
11045 bin_PROGRAMS = true false
11046 true_SOURCES = true.c version.c
11047 false_SOURCES = false.c version.c
11048 @end example
11050 Note that the renaming of objects is also affected by the
11051 @code{_SHORTNAME} variable (@pxref{Program and Library Variables}).
11054 @node Per-Object Flags
11055 @section Per-Object Flags Emulation
11056 @cindex Per-object flags, emulated
11058 @display
11059 One of my source files needs to be compiled with different flags.  How
11060 do I do?
11061 @end display
11063 Automake supports per-program and per-library compilation flags (see
11064 @ref{Program and Library Variables} and @ref{Flag Variables
11065 Ordering}).  With this you can define compilation flags that apply to
11066 all files compiled for a target.  For instance, in
11068 @example
11069 bin_PROGRAMS = foo
11070 foo_SOURCES = foo.c foo.h bar.c bar.h main.c
11071 foo_CFLAGS = -some -flags
11072 @end example
11074 @noindent
11075 @file{foo-foo.o}, @file{foo-bar.o}, and @file{foo-main.o} will all be
11076 compiled with @samp{-some -flags}.  (If you wonder about the names of
11077 these object files, see @ref{Renamed Objects}.)  Note that
11078 @code{foo_CFLAGS} gives the flags to use when compiling all the C
11079 sources of the @emph{program} @code{foo}, it has nothing to do with
11080 @file{foo.c} or @file{foo-foo.o} specifically.
11082 What if @file{foo.c} needs to be compiled into @file{foo.o} using some
11083 specific flags, that none of the other files requires?  Obviously
11084 per-program flags are not directly applicable here.  Something like
11085 per-object flags are expected, i.e., flags that would be used only
11086 when creating @file{foo-foo.o}.  Automake does not support that,
11087 however this is easy to simulate using a library that contains only
11088 that object, and compiling this library with per-library flags.
11090 @example
11091 bin_PROGRAMS = foo
11092 foo_SOURCES = bar.c bar.h main.c
11093 foo_CFLAGS = -some -flags
11094 foo_LDADD = libfoo.a
11095 noinst_LIBRARIES = libfoo.a
11096 libfoo_a_SOURCES = foo.c foo.h
11097 libfoo_a_CFLAGS = -some -other -flags
11098 @end example
11100 Here @file{foo-bar.o} and @file{foo-main.o} will all be
11101 compiled with @samp{-some -flags}, while @file{libfoo_a-foo.o} will
11102 be compiled using @samp{-some -other -flags}.  Eventually, all
11103 three objects will be linked to form @file{foo}.
11105 This trick can also be achieved using Libtool convenience libraries,
11106 for instance @samp{noinst_LTLIBRARIES = libfoo.la} (@pxref{Libtool
11107 Convenience Libraries}).
11109 Another tempting idea to implement per-object flags is to override the
11110 compile rules @command{automake} would output for these files.
11111 Automake will not define a rule for a target you have defined, so you
11112 could think about defining the @samp{foo-foo.o: foo.c} rule yourself.
11113 We recommend against this, because this is error prone.  For instance,
11114 if you add such a rule to the first example, it will break the day you
11115 decide to remove @code{foo_CFLAGS} (because @file{foo.c} will then be
11116 compiled as @file{foo.o} instead of @file{foo-foo.o}, @pxref{Renamed
11117 Objects}).  Also in order to support dependency tracking, the two
11118 @file{.o}/@file{.obj} extensions, and all the other flags variables
11119 involved in a compilation, you will end up modifying a copy of the
11120 rule previously output by @command{automake} for this file.  If a new
11121 release of Automake generates a different rule, your copy will need to
11122 be updated by hand.
11124 @node Multiple Outputs
11125 @section Handling Tools that Produce Many Outputs
11126 @cindex multiple outputs, rules with
11127 @cindex many outputs, rules with
11128 @cindex rules with multiple outputs
11130 This section describes a @command{make} idiom that can be used when a
11131 tool produces multiple output files.  It is not specific to Automake
11132 and can be used in ordinary @file{Makefile}s.
11134 Suppose we have a program called @command{foo} that will read one file
11135 called @file{data.foo} and produce two files named @file{data.c} and
11136 @file{data.h}.  We want to write a @file{Makefile} rule that captures
11137 this one-to-two dependency.
11139 The naive rule is incorrect:
11141 @example
11142 # This is incorrect.
11143 data.c data.h: data.foo
11144         foo data.foo
11145 @end example
11147 @noindent
11148 What the above rule really says is that @file{data.c} and
11149 @file{data.h} each depend on @file{data.foo}, and can each be built by
11150 running @samp{foo data.foo}.  In other words it is equivalent to:
11152 @example
11153 # We do not want this.
11154 data.c: data.foo
11155         foo data.foo
11156 data.h: data.foo
11157         foo data.foo
11158 @end example
11160 @noindent
11161 which means that @command{foo} can be run twice.  Usually it will not
11162 be run twice, because @command{make} implementations are smart enough
11163 to check for the existence of the second file after the first one has
11164 been built; they will therefore detect that it already exists.
11165 However there are a few situations where it can run twice anyway:
11167 @itemize
11168 @item
11169 The most worrying case is when running a parallel @command{make}.  If
11170 @file{data.c} and @file{data.h} are built in parallel, two @samp{foo
11171 data.foo} commands will run concurrently.  This is harmful.
11172 @item
11173 Another case is when the dependency (here @file{data.foo}) is
11174 (or depends upon) a phony target.
11175 @end itemize
11177 A solution that works with parallel @command{make} but not with
11178 phony dependencies is the following:
11180 @example
11181 data.c data.h: data.foo
11182         foo data.foo
11183 data.h: data.c
11184 @end example
11186 @noindent
11187 The above rules are equivalent to
11189 @example
11190 data.c: data.foo
11191         foo data.foo
11192 data.h: data.foo data.c
11193         foo data.foo
11194 @end example
11195 @noindent
11196 therefore a parallel @command{make} will have to serialize the builds
11197 of @file{data.c} and @file{data.h}, and will detect that the second is
11198 no longer needed once the first is over.
11200 Using this pattern is probably enough for most cases.  However it does
11201 not scale easily to more output files (in this scheme all output files
11202 must be totally ordered by the dependency relation), so we will
11203 explore a more complicated solution.
11205 Another idea is to write the following:
11207 @example
11208 # There is still a problem with this one.
11209 data.c: data.foo
11210         foo data.foo
11211 data.h: data.c
11212 @end example
11214 @noindent
11215 The idea is that @samp{foo data.foo} is run only when @file{data.c}
11216 needs to be updated, but we further state that @file{data.h} depends
11217 upon @file{data.c}.  That way, if @file{data.h} is required and
11218 @file{data.foo} is out of date, the dependency on @file{data.c} will
11219 trigger the build.
11221 This is almost perfect, but suppose we have built @file{data.h} and
11222 @file{data.c}, and then we erase @file{data.h}.  Then, running
11223 @samp{make data.h} will not rebuild @file{data.h}.  The above rules
11224 just state that @file{data.c} must be up-to-date with respect to
11225 @file{data.foo}, and this is already the case.
11227 What we need is a rule that forces a rebuild when @file{data.h} is
11228 missing.  Here it is:
11230 @example
11231 data.c: data.foo
11232         foo data.foo
11233 data.h: data.c
11234 ## Recover from the removal of $@@
11235         @@if test -f $@@; then :; else \
11236           rm -f data.c; \
11237           $(MAKE) $(AM_MAKEFLAGS) data.c; \
11238         fi
11239 @end example
11241 The above scheme can be extended to handle more outputs and more
11242 inputs.  One of the outputs is selected to serve as a witness to the
11243 successful completion of the command, it depends upon all inputs, and
11244 all other outputs depend upon it.  For instance, if @command{foo}
11245 should additionally read @file{data.bar} and also produce
11246 @file{data.w} and @file{data.x}, we would write:
11248 @example
11249 data.c: data.foo data.bar
11250         foo data.foo data.bar
11251 data.h data.w data.x: data.c
11252 ## Recover from the removal of $@@
11253         @@if test -f $@@; then :; else \
11254           rm -f data.c; \
11255           $(MAKE) $(AM_MAKEFLAGS) data.c; \
11256         fi
11257 @end example
11259 However there are now two minor problems in this setup.  One is related
11260 to the timestamp ordering of @file{data.h}, @file{data.w},
11261 @file{data.x}, and @file{data.c}.  The other one is a race condition
11262 if a parallel @command{make} attempts to run multiple instances of the
11263 recover block at once.
11265 Let us deal with the first problem.  @command{foo} outputs four files,
11266 but we do not know in which order these files are created.  Suppose
11267 that @file{data.h} is created before @file{data.c}.  Then we have a
11268 weird situation.  The next time @command{make} is run, @file{data.h}
11269 will appear older than @file{data.c}, the second rule will be
11270 triggered, a shell will be started to execute the @samp{if@dots{}fi}
11271 command, but actually it will just execute the @code{then} branch,
11272 that is: nothing.  In other words, because the witness we selected is
11273 not the first file created by @command{foo}, @command{make} will start
11274 a shell to do nothing each time it is run.
11276 A simple riposte is to fix the timestamps when this happens.
11278 @example
11279 data.c: data.foo data.bar
11280         foo data.foo data.bar
11281 data.h data.w data.x: data.c
11282         @@if test -f $@@; then \
11283           touch $@@; \
11284         else \
11285 ## Recover from the removal of $@@
11286           rm -f data.c; \
11287           $(MAKE) $(AM_MAKEFLAGS) data.c; \
11288         fi
11289 @end example
11291 Another solution is to use a different and dedicated file as witness,
11292 rather than using any of @command{foo}'s outputs.
11294 @example
11295 data.stamp: data.foo data.bar
11296         @@rm -f data.tmp
11297         @@touch data.tmp
11298         foo data.foo data.bar
11299         @@mv -f data.tmp $@@
11300 data.c data.h data.w data.x: data.stamp
11301 ## Recover from the removal of $@@
11302         @@if test -f $@@; then :; else \
11303           rm -f data.stamp; \
11304           $(MAKE) $(AM_MAKEFLAGS) data.stamp; \
11305         fi
11306 @end example
11308 @file{data.tmp} is created before @command{foo} is run, so it has a
11309 timestamp older than output files output by @command{foo}.  It is then
11310 renamed to @file{data.stamp} after @command{foo} has run, because we
11311 do not want to update @file{data.stamp} if @command{foo} fails.
11313 This solution still suffers from the second problem: the race
11314 condition in the recover rule.  If, after a successful build, a user
11315 erases @file{data.c} and @file{data.h}, and runs @samp{make -j}, then
11316 @command{make} may start both recover rules in parallel.  If the two
11317 instances of the rule execute @samp{$(MAKE) $(AM_MAKEFLAGS)
11318 data.stamp} concurrently the build is likely to fail (for instance, the
11319 two rules will create @file{data.tmp}, but only one can rename it).
11321 Admittedly, such a weird situation does not arise during ordinary
11322 builds.  It occurs only when the build tree is mutilated.  Here
11323 @file{data.c} and @file{data.h} have been explicitly removed without
11324 also removing @file{data.stamp} and the other output files.
11325 @code{make clean; make} will always recover from these situations even
11326 with parallel makes, so you may decide that the recover rule is solely
11327 to help non-parallel make users and leave things as-is.  Fixing this
11328 requires some locking mechanism to ensure only one instance of the
11329 recover rule rebuilds @file{data.stamp}.  One could imagine something
11330 along the following lines.
11332 @example
11333 data.c data.h data.w data.x: data.stamp
11334 ## Recover from the removal of $@@
11335         @@if test -f $@@; then :; else \
11336           trap 'rm -rf data.lock data.stamp' 1 2 13 15; \
11337 ## mkdir is a portable test-and-set
11338           if mkdir data.lock 2>/dev/null; then \
11339 ## This code is being executed by the first process.
11340             rm -f data.stamp; \
11341             $(MAKE) $(AM_MAKEFLAGS) data.stamp; \
11342             result=$$?; rm -rf data.lock; exit $$result; \
11343           else \
11344 ## This code is being executed by the follower processes.
11345 ## Wait until the first process is done.
11346             while test -d data.lock; do sleep 1; done; \
11347 ## Succeed if and only if the first process succeeded.
11348             test -f data.stamp; \
11349           fi; \
11350         fi
11351 @end example
11353 Using a dedicated witness, like @file{data.stamp}, is very handy when
11354 the list of output files is not known beforehand.  As an illustration,
11355 consider the following rules to compile many @file{*.el} files into
11356 @file{*.elc} files in a single command.  It does not matter how
11357 @code{ELFILES} is defined (as long as it is not empty: empty targets
11358 are not accepted by POSIX).
11360 @example
11361 ELFILES = one.el two.el three.el @dots{}
11362 ELCFILES = $(ELFILES:=c)
11364 elc-stamp: $(ELFILES)
11365         @@rm -f elc-temp
11366         @@touch elc-temp
11367         $(elisp_comp) $(ELFILES)
11368         @@mv -f elc-temp $@@
11370 $(ELCFILES): elc-stamp
11371 ## Recover from the removal of $@@
11372         @@if test -f $@@; then :; else \
11373           trap 'rm -rf elc-lock elc-stamp' 1 2 13 15; \
11374           if mkdir elc-lock 2>/dev/null; then \
11375 ## This code is being executed by the first process.
11376             rm -f elc-stamp; \
11377             $(MAKE) $(AM_MAKEFLAGS) elc-stamp; \
11378             rmdir elc-lock; \
11379           else \
11380 ## This code is being executed by the follower processes.
11381 ## Wait until the first process is done.
11382             while test -d elc-lock; do sleep 1; done; \
11383 ## Succeed if and only if the first process succeeded.
11384             test -f elc-stamp; exit $$?; \
11385           fi; \
11386         fi
11387 @end example
11389 For completeness it should be noted that GNU @command{make} is able to
11390 express rules with multiple output files using pattern rules
11391 (@pxref{Pattern Examples, , Pattern Rule Examples, make, The GNU Make
11392 Manual}).  We do not discuss pattern rules here because they are not
11393 portable, but they can be convenient in packages that assume GNU
11394 @command{make}.
11397 @node Hard-Coded Install Paths
11398 @section Installing to Hard-Coded Locations
11400 @display
11401 My package needs to install some configuration file.  I tried to use
11402 the following rule, but @samp{make distcheck} fails.  Why?
11404 @example
11405 # Do not do this.
11406 install-data-local:
11407         $(INSTALL_DATA) $(srcdir)/afile $(DESTDIR)/etc/afile
11408 @end example
11409 @end display
11411 @display
11412 My package needs to populate the installation directory of another
11413 package at install-time.  I can easily compute that installation
11414 directory in @file{configure}, but if I install files therein,
11415 @samp{make distcheck} fails.  How else should I do?
11416 @end display
11418 These two setups share their symptoms: @samp{make distcheck} fails
11419 because they are installing files to hard-coded paths.  In the later
11420 case the path is not really hard-coded in the package, but we can
11421 consider it to be hard-coded in the system (or in whichever tool that
11422 supplies the path).  As long as the path does not use any of the
11423 standard directory variables (@samp{$(prefix)}, @samp{$(bindir)},
11424 @samp{$(datadir)}, etc.), the effect will be the same:
11425 user-installations are impossible.
11427 When a (non-root) user wants to install a package, he usually has no
11428 right to install anything in @file{/usr} or @file{/usr/local}.  So he
11429 does something like @samp{./configure --prefix ~/usr} to install
11430 package in his own @file{~/usr} tree.
11432 If a package attempts to install something to some hard-coded path
11433 (e.g., @file{/etc/afile}), regardless of this @option{--prefix} setting,
11434 then the installation will fail.  @samp{make distcheck} performs such
11435 a @option{--prefix} installation, hence it will fail too.
11437 Now, there are some easy solutions.
11439 The above @code{install-data-local} example for installing
11440 @file{/etc/afile} would be better replaced by
11442 @example
11443 sysconf_DATA = afile
11444 @end example
11446 @noindent
11447 by default @code{sysconfdir} will be @samp{$(prefix)/etc}, because
11448 this is what the GNU Standards require.  When such a package is
11449 installed on an FHS compliant system, the installer will have to set
11450 @samp{--sysconfdir=/etc}.  As the maintainer of the package you
11451 should not be concerned by such site policies: use the appropriate
11452 standard directory variable to install your files so that the installer
11453 can easily redefine these variables to match their site conventions.
11455 Installing files that should be used by another package is slightly
11456 more involved.  Let's take an example and assume you want to install
11457 a shared library that is a Python extension module.  If you ask Python
11458 where to install the library, it will answer something like this:
11460 @example
11461 % @kbd{python -c 'from distutils import sysconfig;
11462              print sysconfig.get_python_lib(1,0)'}
11463 /usr/lib/python2.5/site-packages
11464 @end example
11466 If you indeed use this absolute path to install your shared library,
11467 non-root users will not be able to install the package, hence
11468 distcheck fails.
11470 Let's do better.  The @samp{sysconfig.get_python_lib()} function
11471 actually accepts a third argument that will replace Python's
11472 installation prefix.
11474 @example
11475 % @kbd{python -c 'from distutils import sysconfig;
11476              print sysconfig.get_python_lib(1,0,"$@{exec_prefix@}")'}
11477 $@{exec_prefix@}/lib/python2.5/site-packages
11478 @end example
11480 You can also use this new path.  If you do
11481 @itemize @bullet
11482 @item
11483 root users can install your package with the same @option{--prefix}
11484 as Python (you get the behavior of the previous attempt)
11486 @item
11487 non-root users can install your package too, they will have the
11488 extension module in a place that is not searched by Python but they
11489 can work around this using environment variables (and if you installed
11490 scripts that use this shared library, it's easy to tell Python were to
11491 look in the beginning of your script, so the script works in both
11492 cases).
11493 @end itemize
11495 The @code{AM_PATH_PYTHON} macro uses similar commands to define
11496 @samp{$(pythondir)} and @samp{$(pyexecdir)} (@pxref{Python}).
11498 Of course not all tools are as advanced as Python regarding that
11499 substitution of @var{prefix}.  So another strategy is to figure the
11500 part of the installation directory that must be preserved.  For
11501 instance, here is how @code{AM_PATH_LISPDIR} (@pxref{Emacs Lisp})
11502 computes @samp{$(lispdir)}:
11504 @example
11505 $EMACS -batch -q -eval '(while load-path
11506   (princ (concat (car load-path) "\n"))
11507   (setq load-path (cdr load-path)))' >conftest.out
11508 lispdir=`sed -n
11509   -e 's,/$,,'
11510   -e '/.*\/lib\/x*emacs\/site-lisp$/@{
11511         s,.*/lib/\(x*emacs/site-lisp\)$,$@{libdir@}/\1,;p;q;
11512       @}'
11513   -e '/.*\/share\/x*emacs\/site-lisp$/@{
11514         s,.*/share/\(x*emacs/site-lisp\),$@{datarootdir@}/\1,;p;q;
11515       @}'
11516   conftest.out`
11517 @end example
11519 I.e., it just picks the first directory that looks like
11520 @file{*/lib/*emacs/site-lisp} or @file{*/share/*emacs/site-lisp} in
11521 the search path of emacs, and then substitutes @samp{$@{libdir@}} or
11522 @samp{$@{datadir@}} appropriately.
11524 The emacs case looks complicated because it processes a list and
11525 expects two possible layouts, otherwise it's easy, and the benefits for
11526 non-root users are really worth the extra @command{sed} invocation.
11529 @node History
11530 @chapter History of Automake
11532 This chapter presents various aspects of the history of Automake.  The
11533 exhausted reader can safely skip it; this will be more of interest to
11534 nostalgic people, or to those curious to learn about the evolution of
11535 Automake.
11537 @menu
11538 * Timeline::                    The Automake story.
11539 * Dependency Tracking Evolution::  Evolution of Automatic Dependency Tracking
11540 * Releases::                    Statistics about Automake Releases
11541 @end menu
11543 @node Timeline
11544 @section Timeline
11546 @table @asis
11547 @item 1994-09-19 First CVS commit.
11549 If we can trust the CVS repository, David J.@tie{}MacKenzie (djm) started
11550 working on Automake (or AutoMake, as it was spelt then) this Monday.
11552 The first version of the @command{automake} script looks as follows.
11554 @example
11555 #!/bin/sh
11557 status=0
11559 for makefile
11561   if test ! -f $@{makefile@}.am; then
11562     echo "automake: $@{makefile@}.am: No such honkin' file"
11563     status=1
11564     continue
11565   fi
11567   exec 4> $@{makefile@}.in
11569 done
11570 @end example
11572 From this you can already see that Automake will be about reading
11573 @file{*.am} file and producing @file{*.in} files.  You cannot see
11574 anything else, but if you also know that David is the one who created
11575 Autoconf two years before you can guess the rest.
11577 Several commits follow, and by the end of the day Automake is
11578 reported to work for GNU fileutils and GNU m4.
11580 The modus operandi is the one that is still used today: variable
11581 assignments in @file{Makefile.am} files trigger injections of
11582 precanned @file{Makefile} fragments into the generated
11583 @file{Makefile.in}.  The use of @file{Makefile} fragments was inspired
11584 by the 4.4BSD @command{make} and include files, however Automake aims
11585 to be portable and to conform to the GNU standards for @file{Makefile}
11586 variables and targets.
11588 At this point, the most recent release of Autoconf is version 1.11,
11589 and David is preparing to release Autoconf 2.0 in late October.  As a
11590 matter of fact, he will barely touch Automake after September.
11592 @item 1994-11-05 David MacKenzie's last commit.
11594 At this point Automake is a 200 line portable shell script, plus 332
11595 lines of @file{Makefile} fragments.  In the @file{README}, David
11596 states his ambivalence between ``portable shell'' and ``more
11597 appropriate language'':
11599 @quotation
11600 I wrote it keeping in mind the possibility of it becoming an Autoconf
11601 macro, so it would run at configure-time.  That would slow
11602 configuration down a bit, but allow users to modify the Makefile.am
11603 without needing to fetch the AutoMake package.  And, the Makefile.in
11604 files wouldn't need to be distributed.  But all of AutoMake would.  So
11605 I might reimplement AutoMake in Perl, m4, or some other more
11606 appropriate language.
11607 @end quotation
11609 Automake is described as ``an experimental Makefile generator''.
11610 There is no documentation.  Adventurous users are referred to the
11611 examples and patches needed to use Automake with GNU m4 1.3, fileutils
11612 3.9, time 1.6, and development versions of find and indent.
11614 These examples seem to have been lost.  However at the time of writing
11615 (10 years later in September, 2004) the FSF still distributes a
11616 package that uses this version of Automake: check out GNU termutils
11617 2.0.
11619 @item 1995-11-12 Tom Tromey's first commit.
11621 After one year of inactivity, Tom Tromey takes over the package.
11622 Tom was working on GNU cpio back then, and doing this just for fun,
11623 having trouble finding a project to contribute to.  So while hacking
11624 he wanted to bring the @file{Makefile.in} up to GNU standards.  This
11625 was hard, and one day he saw Automake on @url{ftp://alpha.gnu.org/},
11626 grabbed it and tried it out.
11628 Tom didn't talk to djm about it until later, just to make sure he
11629 didn't mind if he made a release.  He did a bunch of early releases to
11630 the Gnits folks.
11632 Gnits was (and still is) totally informal, just a few GNU friends who
11633 Fran@,cois Pinard knew, who were all interested in making a common
11634 infrastructure for GNU projects, and shared a similar outlook on how
11635 to do it.  So they were able to make some progress.  It came along
11636 with Autoconf and extensions thereof, and then Automake from David and
11637 Tom (who were both gnitsians).  One of their ideas was to write a
11638 document paralleling the GNU standards, that was more strict in some
11639 ways and more detailed.  They never finished the GNITS standards, but
11640 the ideas mostly made their way into Automake.
11642 @item 1995-11-23 Automake 0.20
11644 Besides introducing automatic dependency tracking (@pxref{Dependency
11645 Tracking Evolution}), this version also supplies a 9-page manual.
11647 At this time @command{aclocal} and @code{AM_INIT_AUTOMAKE} did not
11648 exist, so many things had to be done by hand.  For instance, here is
11649 what a configure.in (this is the former name of the
11650 @file{configure.ac} we use today) must contain in order to use
11651 Automake 0.20:
11653 @example
11654 PACKAGE=cpio
11655 VERSION=2.3.911
11656 AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE")
11657 AC_DEFINE_UNQUOTED(VERSION, "$VERSION")
11658 AC_SUBST(PACKAGE)
11659 AC_SUBST(VERSION)
11660 AC_ARG_PROGRAM
11661 AC_PROG_INSTALL
11662 @end example
11664 (Today all of the above is achieved by @code{AC_INIT} and
11665 @code{AM_INIT_AUTOMAKE}.)
11667 Here is how programs are specified in @file{Makefile.am}:
11669 @example
11670 PROGRAMS = hello
11671 hello_SOURCES = hello.c
11672 @end example
11674 This looks pretty much like what we do today, except the
11675 @code{PROGRAMS} variable has no directory prefix specifying where
11676 @file{hello} should be installed: all programs are installed in
11677 @samp{$(bindir)}.  @code{LIBPROGRAMS} can be used to specify programs
11678 that must be built but not installed (it is called
11679 @code{noinst_PROGRAMS} nowadays).
11681 Programs can be built conditionally using @code{AC_SUBST}itutions:
11683 @example
11684 PROGRAMS = @@progs@@
11685 AM_PROGRAMS = foo bar baz
11686 @end example
11688 (@code{AM_PROGRAMS} has since then been renamed to
11689 @code{EXTRA_PROGRAMS}.)
11691 Similarly scripts, static libraries, and data can be built and installed
11692 using the @code{LIBRARIES}, @code{SCRIPTS}, and @code{DATA} variables.
11693 However @code{LIBRARIES} were treated a bit specially in that Automake
11694 did automatically supply the @file{lib} and @file{.a} prefixes.
11695 Therefore to build @file{libcpio.a}, one had to write
11697 @example
11698 LIBRARIES = cpio
11699 cpio_SOURCES = ...
11700 @end example
11702 Extra files to distribute must be listed in @code{DIST_OTHER} (the
11703 ancestor of @code{EXTRA_DIST}).  Also extra directories that are to be
11704 distributed should appear in @code{DIST_SUBDIRS}, but the manual
11705 describes this as a temporary ugly hack (today extra directories should
11706 also be listed in @code{EXTRA_DIST}, and @code{DIST_SUBDIRS} is used
11707 for another purpose, @pxref{Conditional Subdirectories}).
11709 @item 1995-11-26 Automake 0.21
11711 In less time than it takes to cook a frozen pizza, Tom rewrites
11712 Automake using Perl.  At this time Perl 5 is only one year old, and
11713 Perl 4.036 is in use at many sites.  Supporting several Perl versions
11714 has been a source of problems through the whole history of Automake.
11716 If you never used Perl 4, imagine Perl 5 without objects, without
11717 @samp{my} variables (only dynamically scoped @samp{local} variables),
11718 without function prototypes, with function calls that needs to be
11719 prefixed with @samp{&}, etc.  Traces of this old style can still be
11720 found in today's @command{automake}.
11722 @item 1995-11-28 Automake 0.22
11723 @itemx 1995-11-29 Automake 0.23
11725 Bug fixes.
11727 @item 1995-12-08 Automake 0.24
11728 @itemx 1995-12-10 Automake 0.25
11730 Releases are raining.  0.24 introduces the uniform naming scheme we
11731 use today, i.e., @code{bin_PROGRAMS} instead of @code{PROGRAMS},
11732 @code{noinst_LIBRARIES} instead of @code{LIBLIBRARIES}, etc.  (However
11733 @code{EXTRA_PROGRAMS} does not exist yet, @code{AM_PROGRAMS} is still
11734 in use; and @code{TEXINFOS} and @code{MANS} still have no directory
11735 prefixes.)  Adding support for prefixes like that was one of the major
11736 ideas in @command{automake}; it has lasted pretty well.
11738 AutoMake is renamed to Automake (Tom seems to recall it was Fran@,cois
11739 Pinard's doing).
11741 0.25 fixes a Perl 4 portability bug.
11743 @item 1995-12-18 Jim Meyering starts using Automake in GNU Textutils.
11744 @item 1995-12-31 Fran@,cois Pinard starts using Automake in GNU tar.
11746 @item 1996-01-03 Automake 0.26
11747 @itemx 1996-01-03 Automake 0.27
11749 Of the many changes and suggestions sent by Fran@,cois Pinard and
11750 included in 0.26, perhaps the most important is the advice that to
11751 ease customization a user rule or variable definition should always
11752 override an Automake rule or definition.
11754 Gordon Matzigkeit and Jim Meyering are two other early contributors
11755 that have been sending fixes.
11757 0.27 fixes yet another Perl 4 portability bug.
11759 @item 1996-01-13 Automake 0.28
11761 Automake starts scanning @file{configure.in} for @code{LIBOBJS}
11762 support.  This is an important step because until this version
11763 Automake only knew about the @file{Makefile.am}s it processed.
11764 @file{configure.in} was Autoconf's world and the link between Autoconf
11765 and Automake had to be done by the @file{Makefile.am} author.  For
11766 instance, if @file{config.h} was generated by @file{configure}, it was the
11767 package maintainer's responsibility to define the @code{CONFIG_HEADER}
11768 variable in each @file{Makefile.am}.
11770 Succeeding releases will rely more and more on scanning
11771 @file{configure.in} to better automate the Autoconf integration.
11773 0.28 also introduces the @code{AUTOMAKE_OPTIONS} variable and the
11774 @option{--gnu} and @option{--gnits} options, the latter being stricter.
11776 @item 1996-02-07 Automake 0.29
11778 Thanks to @file{configure.in} scanning, @code{CONFIG_HEADER} is gone,
11779 and rebuild rules for @file{configure}-generated file are
11780 automatically output.
11782 @code{TEXINFOS} and @code{MANS} converted to the uniform naming
11783 scheme.
11785 @item 1996-02-24 Automake 0.30
11787 The test suite is born.  It contains 9 tests.  From now on test cases
11788 will be added pretty regularly (@pxref{Releases}), and this proved to
11789 be really helpful later on.
11791 @code{EXTRA_PROGRAMS} finally replaces @code{AM_PROGRAMS}.
11793 All the third-party Autoconf macros, written mostly by Fran@,cois
11794 Pinard (and later Jim Meyering), are distributed in Automake's
11795 hand-written @file{aclocal.m4} file.  Package maintainers are expected
11796 to extract the necessary macros from this file.  (In previous versions
11797 you had to copy and paste them from the manual...)
11799 @item 1996-03-11 Automake 0.31
11801 The test suite in 0.30 was run via a long @code{check-local} rule.  Upon
11802 Ulrich Drepper's suggestion, 0.31 makes it an Automake rule output
11803 whenever the @code{TESTS} variable is defined.
11805 @code{DIST_OTHER} is renamed to @code{EXTRA_DIST}, and the @code{check_}
11806 prefix is introduced.  The syntax is now the same as today.
11808 @item 1996-03-15 Gordon Matzigkeit starts writing libtool.
11810 @item 1996-04-27 Automake 0.32
11812 @code{-hook} targets are introduced; an idea from Dieter Baron.
11814 @file{*.info} files, which were output in the build directory are
11815 now built in the source directory, because they are distributed.  It
11816 seems these files like to move back and forth as that will happen
11817 again in future versions.
11819 @item 1996-05-18 Automake 0.33
11821 Gord Matzigkeit's main two contributions:
11823 @itemize
11824 @item very preliminary libtool support
11825 @item the distcheck rule
11826 @end itemize
11828 Although they were very basic at this point, these are probably
11829 among the top features for Automake today.
11831 Jim Meyering also provides the infamous @code{jm_MAINTAINER_MODE},
11832 since then renamed to @code{AM_MAINTAINER_MODE} and abandoned by its
11833 author (@pxref{maintainer-mode}).
11835 @item 1996-05-28 Automake 1.0
11837 After only six months of heavy development, the @command{automake} script is
11838 3134 lines long, plus 973 lines of @file{Makefile} fragments.  The
11839 package has 30 pages of documentation, and 38 test cases.
11840 @file{aclocal.m4} contains 4 macros.
11842 From now on and until version 1.4, new releases will occur at a rate
11843 of about one a year.  1.1 did not exist, actually 1.1b to 1.1p have
11844 been the name of beta releases for 1.2.  This is the first time
11845 Automake uses suffix letters to designate beta releases, an habit that
11846 lasts.
11848 @item 1996-10-10 Kevin Dalley packages Automake 1.0 for Debian GNU/Linux.
11850 @item 1996-11-26 David J.@tie{}MacKenzie releases Autoconf 2.12.
11852 Between June and October, the Autoconf development is almost stalled.
11853 Roland McGrath has been working at the beginning of the year.  David
11854 comes back in November to release 2.12, but he won't touch Autoconf
11855 anymore after this year, and Autoconf then really stagnates.  The
11856 desolate Autoconf @file{ChangeLog} for 1997 lists only 7 commits.
11858 @item 1997-02-28 @email{automake@@gnu.ai.mit.edu} list alive
11860 The mailing list is announced as follows:
11861 @smallexample
11862 I've created the "automake" mailing list.  It is
11863 "automake@@gnu.ai.mit.edu".  Administrivia, as always, to
11864 automake-request@@gnu.ai.mit.edu.
11866 The charter of this list is discussion of automake, autoconf, and
11867 other configuration/portability tools (e.g., libtool).  It is expected
11868 that discussion will range from pleas for help all the way up to
11869 patches.
11871 This list is archived on the FSF machines.  Offhand I don't know if
11872 you can get the archive without an account there.
11874 This list is open to anybody who wants to join.  Tell all your
11875 friends!
11876 -- Tom Tromey
11877 @end smallexample
11879 Before that people were discussing Automake privately, on the Gnits
11880 mailing list (which is not public either), and less frequently on
11881 @code{gnu.misc.discuss}.
11883 @code{gnu.ai.mit.edu} is now @code{gnu.org}, in case you never
11884 noticed.  The archives of the early years of the
11885 @code{automake@@gnu.org} list have been lost, so today it is almost
11886 impossible to find traces of discussions that occurred before 1999.
11887 This has been annoying more than once, as such discussions can be
11888 useful to understand the rationale behind a piece of uncommented code
11889 that was introduced back then.
11891 @item 1997-06-22 Automake 1.2
11893 Automake developments continues, and more and more new Autoconf macros
11894 are required.  Distributing them in @file{aclocal.m4} and requiring
11895 people to browse this file to extract the relevant macros becomes
11896 uncomfortable.  Ideally, some of them should be contributed to
11897 Autoconf so that they can be used directly, however Autoconf is
11898 currently inactive.  Automake 1.2 consequently introduces
11899 @command{aclocal} (@command{aclocal} was actually started on
11900 1996-07-28), a tool that automatically constructs an @file{aclocal.m4}
11901 file from a repository of third-party macros.  Because Autoconf has
11902 stalled, Automake also becomes a kind of repository for such
11903 third-party macros, even macros completely unrelated to Automake (for
11904 instance macros that fix broken Autoconf macros).
11906 The 1.2 release contains 20 macros, including the
11907 @code{AM_INIT_AUTOMAKE} macro that simplifies the creation of
11908 @file{configure.in}.
11910 Libtool is fully supported using @code{*_LTLIBRARIES}.
11912 The missing script is introduced by Fran@,cois Pinard; it is meant to be
11913 a better solution than @code{AM_MAINTAINER_MODE}
11914 (@pxref{maintainer-mode}).
11916 Conditionals support was implemented by Ian Lance Taylor.  At the
11917 time, Tom and Ian were working on an internal project at Cygnus.  They
11918 were using ILU, which is pretty similar to CORBA@.  They wanted to
11919 integrate ILU into their build, which was all @file{configure}-based,
11920 and Ian thought that adding conditionals to @command{automake} was
11921 simpler than doing all the work in @file{configure} (which was the
11922 standard at the time).  So this was actually funded by Cygnus.
11924 This very useful but tricky feature will take a lot of time to
11925 stabilize.  (At the time this text is written, there are still
11926 primaries that have not been updated to support conditional
11927 definitions in Automake 1.9.)
11929 The @command{automake} script has almost doubled: 6089 lines of Perl,
11930 plus 1294 lines of @file{Makefile} fragments.
11932 @item 1997-07-08 Gordon Matzigkeit releases Libtool 1.0.
11934 @item 1998-04-05 Automake 1.3
11936 This is a small advance compared to 1.2.
11937 It adds support for assembly, and preliminary support for Java.
11939 Perl 5.004_04 is out, but fixes to support Perl 4 are still
11940 regularly submitted whenever Automake breaks it.
11942 @item 1998-09-06 @code{sourceware.cygnus.com} is on-line.
11944 Sourceware was setup by Jason Molenda to host open source projects.
11946 @item 1998-09-19  Automake CVS repository moved to @code{sourceware.cygnus.com}
11947 @itemx 1998-10-26  @code{sourceware.cygnus.com} announces it hosts Automake:
11948 Automake is now hosted on @code{sourceware.cygnus.com}.  It has a
11949 publicly accessible CVS repository.  This CVS repository is a copy of
11950 the one Tom was using on his machine, which in turn is based on
11951 a copy of the CVS repository of David MacKenzie.  This is why we still
11952 have to full source history.  (Automake was on Sourceware until 2007-10-29,
11953 when it moved to a git repository on @code{savannah.gnu.org},
11954 but the Sourceware host had been renamed to @code{sources.redhat.com}.)
11956 The oldest file in the administrative directory of the CVS repository
11957 that was created on Sourceware is dated 1998-09-19, while the
11958 announcement that @command{automake} and @command{autoconf} had joined
11959 @command{sourceware} was made on 1998-10-26.  They were among the
11960 first projects to be hosted there.
11962 The heedful reader will have noticed Automake was exactly 4 years old
11963 on 1998-09-19.
11965 @item 1999-01-05 Ben Elliston releases Autoconf 2.13.
11967 @item 1999-01-14 Automake 1.4
11969 This release adds support for Fortran 77 and for the @code{include}
11970 statement.  Also, @samp{+=} assignments are introduced, but it is
11971 still quite easy to fool Automake when mixing this with conditionals.
11973 These two releases, Automake 1.4 and Autoconf 2.13 make a duo that
11974 will be used together for years.
11976 @command{automake} is 7228 lines, plus 1591 lines of Makefile
11977 fragment, 20 macros (some 1.3 macros were finally contributed back to
11978 Autoconf), 197 test cases, and 51 pages of documentation.
11980 @item 1999-03-27 The @code{user-dep-branch} is created on the CVS repository.
11982 This implements a new dependency tracking schemed that should be
11983 able to handle automatic dependency tracking using any compiler (not
11984 just gcc) and any make (not just GNU @command{make}).  In addition,
11985 the new scheme should be more reliable than the old one, as
11986 dependencies are generated on the end user's machine.  Alexandre Oliva
11987 creates depcomp for this purpose.
11989 @xref{Dependency Tracking Evolution}, for more details about the
11990 evolution of automatic dependency tracking in Automake.
11992 @item 1999-11-21 The @code{user-dep-branch} is merged into the main trunk.
11994 This was a huge problem since we also had patches going in on the
11995 trunk.  The merge took a long time and was very painful.
11997 @item 2000-05-10
11999 Since September 1999 and until 2003, Akim Demaille will be zealously
12000 revamping Autoconf.
12002 @quotation
12003 I think the next release should be called "3.0".@*
12004 Let's face it: you've basically rewritten autoconf.@*
12005 Every weekend there are 30 new patches.@*
12006 I don't see how we could call this "2.15" with a straight face.@*
12007 -- Tom Tromey on @email{autoconf@@gnu.org}
12008 @end quotation
12010 Actually Akim works like a submarine: he will pile up patches while he
12011 works off-line during the weekend, and flush them in batch when he
12012 resurfaces on Monday.
12014 @item 2001-01-24
12016 On this Wednesday, Autoconf 2.49c, the last beta before Autoconf 2.50
12017 is out, and Akim has to find something to do during his week-end :)
12019 @item 2001-01-28
12021 Akim sends a batch of 14 patches to @email{automake@@gnu.org}.
12023 @quotation
12024 Aiieeee!  I was dreading the day that the Demaillator turned his
12025 sights on automake@dots{} and now it has arrived! -- Tom Tromey
12026 @end quotation
12028 It's only the beginning: in two months he will send 192 patches.  Then
12029 he would slow down so Tom can catch up and review all this.  Initially
12030 Tom actually read all these patches, then he probably trustingly
12031 answered OK to most of them, and finally gave up and let Akim apply
12032 whatever he wanted.  There was no way to keep up with that patch rate.
12034 @quotation
12035 Anyway the patch below won't apply since it predates Akim's
12036 sourcequake; I have yet to figure where the relevant passage has
12037 been moved :) -- Alexandre Duret-Lutz
12038 @end quotation
12040 All these patches were sent to and discussed on
12041 @email{automake@@gnu.org}, so subscribed users were literally drowning in
12042 technical mails.  Eventually, the @email{automake-patches@@gnu.org}
12043 mailing list was created in May.
12045 Year after year, Automake had drifted away from its initial design:
12046 construct @file{Makefile.in} by assembling various @file{Makefile}
12047 fragments.  In 1.4, lots of @file{Makefile} rules are being emitted at
12048 various places in the @command{automake} script itself; this does not
12049 help ensuring a consistent treatment of these rules (for instance
12050 making sure that user-defined rules override Automake's own rules).
12051 One of Akim's goal was moving all these hard-coded rules to separate
12052 @file{Makefile} fragments, so the logic could be centralized in a
12053 @file{Makefile} fragment processor.
12055 Another significant contribution of Akim is the interface with the
12056 ``trace'' feature of Autoconf.  The way to scan @file{configure.in} at
12057 this time was to read the file and grep the various macro of interest
12058 to Automake.  Doing so could break in many unexpected ways; @command{automake}
12059 could miss some definition (for instance @samp{AC_SUBST([$1], [$2])}
12060 where the arguments are known only when M4 is run), or conversely it
12061 could detect some macro that was not expanded (because it is called
12062 conditionally).  In the CVS version of Autoconf, Akim had implemented
12063 the @option{--trace} option, which provides accurate information about
12064 where macros are actually called and with what arguments.  Akim will
12065 equip Automake with a second @file{configure.in} scanner that uses
12066 this @option{--trace} interface.  Since it was not sensible to drop the
12067 Autoconf 2.13 compatibility yet, this experimental scanner was only
12068 used when an environment variable was set, the traditional
12069 grep-scanner being still the default.
12071 @item 2001-04-25 Gary V.@tie{}Vaughan releases Libtool 1.4
12073 It has been more than two years since Automake 1.4, CVS Automake has
12074 suffered lot's of heavy changes and still is not ready for release.
12075 Libtool 1.4 had to be distributed with a patch against Automake 1.4.
12077 @item 2001-05-08 Automake 1.4-p1
12078 @itemx 2001-05-24 Automake 1.4-p2
12080 Gary V.@tie{}Vaughan, the principal Libtool maintainer, makes a ``patch
12081 release'' of Automake:
12083 @quotation
12084 The main purpose of this release is to have a stable automake
12085 which is compatible with the latest stable libtool.
12086 @end quotation
12088 The release also contains obvious fixes for bugs in Automake 1.4,
12089 some of which were reported almost monthly.
12091 @item 2001-05-21 Akim Demaille releases Autoconf 2.50
12093 @item 2001-06-07 Automake 1.4-p3
12094 @itemx 2001-06-10 Automake 1.4-p4
12095 @itemx 2001-07-15 Automake 1.4-p5
12097 Gary continues his patch-release series.  These also add support for
12098 some new Autoconf 2.50 idioms.  Essentially, Autoconf now advocates
12099 @file{configure.ac} over @file{configure.in}, and it introduces a new
12100 syntax for @code{AC_OUTPUT}ing files.
12102 @item 2001-08-23 Automake 1.5
12104 A major and long-awaited release, that comes more than two years after
12105 1.4.  It brings many changes, among which:
12106 @itemize
12107 @item The new dependency tracking scheme that uses @command{depcomp}.
12108 Aside from the improvement on the dependency tracking itself
12109 (@pxref{Dependency Tracking Evolution}), this also streamlines the use
12110 of @command{automake}-generated @file{Makefile.in}s as the @file{Makefile.in}s
12111 used during development are now the same as those used in
12112 distributions.  Before that the @file{Makefile.in}s generated for
12113 maintainers required GNU @command{make} and GCC, they were different
12114 from the portable @file{Makefile} generated for distribution; this was
12115 causing some confusion.
12117 @item Support for per-target compilation flags.
12119 @item Support for reference to files in subdirectories in most
12120 @file{Makefile.am} variables.
12122 @item Introduction of the @code{dist_}, @code{nodist_}, and @code{nobase_}
12123 prefixes.
12124 @item Perl 4 support is finally dropped.
12125 @end itemize
12127 1.5 did break several packages that worked with 1.4.  Enough so that
12128 Linux distributions could not easily install the new Automake version
12129 without breaking many of the packages for which they had to run
12130 @command{automake}.
12132 Some of these breakages were effectively bugs that would eventually be
12133 fixed in the next release.  However, a lot of damage was caused by
12134 some changes made deliberately to render Automake stricter on some
12135 setup we did consider bogus.  For instance, @samp{make distcheck} was
12136 improved to check that @samp{make uninstall} did remove all the files
12137 @samp{make install} installed, that @samp{make distclean} did not omit
12138 some file, and that a VPATH build would work even if the source
12139 directory was read-only.  Similarly, Automake now rejects multiple
12140 definitions of the same variable (because that would mix very badly
12141 with conditionals), and @samp{+=} assignments with no previous
12142 definition.  Because these changes all occurred suddenly after 1.4 had
12143 been established for more than two years, it hurt users.
12145 To make matter worse, meanwhile Autoconf (now at version 2.52) was
12146 facing similar troubles, for similar reasons.
12148 @item 2002-03-05 Automake 1.6
12150 This release introduced versioned installation (@pxref{API
12151 Versioning}).  This was mainly pushed by Havoc Pennington, taking the
12152 GNOME source tree as motive: due to incompatibilities between the
12153 autotools it's impossible for the GNOME packages to switch to Autoconf
12154 2.53 and Automake 1.5 all at once, so they are currently stuck with
12155 Autoconf 2.13 and Automake 1.4.
12157 The idea was to call this version @file{automake-1.6}, call all its
12158 bug-fix versions identically, and switch to @file{automake-1.7} for
12159 the next release that adds new features or changes some rules.  This
12160 scheme implies maintaining a bug-fix branch in addition to the
12161 development trunk, which means more work from the maintainer, but
12162 providing regular bug-fix releases proved to be really worthwhile.
12164 Like 1.5, 1.6 also introduced a bunch of incompatibilities, intentional or
12165 not.  Perhaps the more annoying was the dependence on the newly
12166 released Autoconf 2.53.  Autoconf seemed to have stabilized enough
12167 since its explosive 2.50 release and included changes required to fix
12168 some bugs in Automake.  In order to upgrade to Automake 1.6, people
12169 now had to upgrade Autoconf too; for some packages it was no picnic.
12171 While versioned installation helped people to upgrade, it also
12172 unfortunately allowed people not to upgrade.  At the time of writing,
12173 some Linux distributions are shipping packages for Automake 1.4, 1.5,
12174 1.6, 1.7, 1.8, and 1.9.  Most of these still install 1.4 by default.
12175 Some distribution also call 1.4 the ``stable'' version, and present
12176 ``1.9'' as the development version; this does not really makes sense
12177 since 1.9 is way more solid than 1.4.  All this does not help the
12178 newcomer.
12180 @item 2002-04-11 Automake 1.6.1
12182 1.6, and the upcoming 1.4-p6 release were the last release by Tom.
12183 This one and those following will be handled by Alexandre
12184 Duret-Lutz.  Tom is still around, and will be there until about 1.7,
12185 but his interest into Automake is drifting away towards projects like
12186 @command{gcj}.
12188 Alexandre has been using Automake since 2000, and started to
12189 contribute mostly on Akim's incitement (Akim and Alexandre have been
12190 working in the same room from 1999 to 2002).  In 2001 and 2002 he had
12191 a lot of free time to enjoy hacking Automake.
12193 @item 2002-06-14 Automake 1.6.2
12195 @item 2002-07-28 Automake 1.6.3
12196 @itemx 2002-07-28 Automake 1.4-p6
12198 Two releases on the same day.  1.6.3 is a bug-fix release.
12200 Tom Tromey backported the versioned installation mechanism on the 1.4
12201 branch, so that Automake 1.6.x and Automake 1.4-p6 could be installed
12202 side by side.  Another request from the GNOME folks.
12204 @item 2002-09-25 Automake 1.7
12206 This release switches to the new @file{configure.ac} scanner Akim
12207 was experimenting in 1.5.
12209 @item 2002-10-16 Automake 1.7.1
12210 @itemx 2002-12-06 Automake 1.7.2
12211 @itemx 2003-02-20 Automake 1.7.3
12212 @itemx 2003-04-23 Automake 1.7.4
12213 @itemx 2003-05-18 Automake 1.7.5
12214 @itemx 2003-07-10 Automake 1.7.6
12215 @itemx 2003-09-07 Automake 1.7.7
12216 @itemx 2003-10-07 Automake 1.7.8
12218 Many bug-fix releases.  1.7 lasted because the development version
12219 (upcoming 1.8) was suffering some major internal revamping.
12221 @item 2003-10-26 Automake on screen
12223 Episode 49, `Repercussions', in the third season of the `Alias' TV
12224 show is first aired.
12226 Marshall, one of the characters, is working on a computer virus that he
12227 has to modify before it gets into the wrong hands or something like
12228 that.  The screenshots you see do not show any program code, they show
12229 a @file{Makefile.in} @code{generated by automake}...
12231 @item 2003-11-09 Automake 1.7.9
12233 @item 2003-12-10 Automake 1.8
12235 The most striking update is probably that of @command{aclocal}.
12237 @command{aclocal} now uses @code{m4_include} in the produced
12238 @file{aclocal.m4} when the included macros are already distributed
12239 with the package (an idiom used in many packages), which reduces code
12240 duplication.  Many people liked that, but in fact this change was
12241 really introduced to fix a bug in rebuild rules: @file{Makefile.in}
12242 must be rebuilt whenever a dependency of @file{configure} changes, but
12243 all the @file{m4} files included in @file{aclocal.m4} where unknown
12244 from @command{automake}.  Now @command{automake} can just trace the
12245 @code{m4_include}s to discover the dependencies.
12247 @command{aclocal} also starts using the @option{--trace} Autoconf option
12248 in order to discover used macros more accurately.  This will turn out
12249 to be very tricky (later releases will improve this) as people had
12250 devised many ways to cope with the limitation of previous
12251 @command{aclocal} versions, notably using handwritten
12252 @code{m4_include}s: @command{aclocal} must make sure not to redefine a
12253 rule that is already included by such statement.
12255 Automake also has seen its guts rewritten.  Although this rewriting
12256 took a lot of efforts, it is only apparent to the users in that some
12257 constructions previously disallowed by the implementation now work
12258 nicely.  Conditionals, Locations, Variable and Rule definitions,
12259 Options: these items on which Automake works have been rewritten as
12260 separate Perl modules, and documented.
12262 @itemx 2004-01-11 Automake 1.8.1
12263 @itemx 2004-01-12 Automake 1.8.2
12264 @itemx 2004-03-07 Automake 1.8.3
12265 @itemx 2004-04-25 Automake 1.8.4
12266 @itemx 2004-05-16 Automake 1.8.5
12268 @item 2004-07-28 Automake 1.9
12270 This release tries to simplify the compilation rules it outputs to
12271 reduce the size of the Makefile.  The complaint initially come from
12272 the libgcj developers.  Their @file{Makefile.in} generated with
12273 Automake 1.4 and custom build rules (1.4 did not support compiled
12274 Java) is 250KB@.  The one generated by 1.8 was over 9MB@!  1.9 gets it
12275 down to 1.2MB@.
12277 Aside from this it contains mainly minor changes and bug-fixes.
12279 @itemx 2004-08-11 Automake 1.9.1
12280 @itemx 2004-09-19 Automake 1.9.2
12282 Automake has ten years.  This chapter of the manual was initially
12283 written for this occasion.
12285 @itemx 2007-10-29 Automake repository moves to @code{savannah.gnu.org} and uses
12286 git as primary repository.
12288 @end table
12290 @node Dependency Tracking Evolution
12291 @section Dependency Tracking in Automake
12293 Over the years Automake has deployed three different dependency
12294 tracking methods.  Each method, including the current one, has had
12295 flaws of various sorts.  Here we lay out the different dependency
12296 tracking methods, their flaws, and their fixes.  We conclude with
12297 recommendations for tool writers, and by indicating future directions
12298 for dependency tracking work in Automake.
12300 @menu
12301 * First Take on Dependencies::  Precomputed dependency tracking
12302 * Dependencies As Side Effects::  Update at developer compile time
12303 * Dependencies for the User::   Update at user compile time
12304 * Techniques for Dependencies:: Alternative approaches
12305 * Recommendations for Tool Writers::  What tool writers can do to help
12306 * Future Directions for Dependencies::  Languages Automake does not know
12307 @end menu
12309 @node First Take on Dependencies
12310 @subsection First Take on Dependency Tracking
12311 @unnumberedsubsubsec Description
12313 Our first attempt at automatic dependency tracking was based on the
12314 method recommended by GNU @command{make}.  (@pxref{Automatic
12315 Prerequisites, , Generating Prerequisites Automatically, make, The GNU
12316 make Manual})
12318 This version worked by precomputing dependencies ahead of time.  For
12319 each source file, it had a special @file{.P} file that held the
12320 dependencies.  There was a rule to generate a @file{.P} file by
12321 invoking the compiler appropriately.  All such @file{.P} files were
12322 included by the @file{Makefile}, thus implicitly becoming dependencies
12323 of @file{Makefile}.
12325 @unnumberedsubsubsec Bugs
12327 This approach had several critical bugs.
12329 @itemize
12330 @item
12331 The code to generate the @file{.P} file relied on @command{gcc}.
12332 (A limitation, not technically a bug.)
12333 @item
12334 The dependency tracking mechanism itself relied on GNU @command{make}.
12335 (A limitation, not technically a bug.)
12336 @item
12337 Because each @file{.P} file was a dependency of @file{Makefile}, this
12338 meant that dependency tracking was done eagerly by @command{make}.
12339 For instance, @samp{make clean} would cause all the dependency files
12340 to be updated, and then immediately removed.  This eagerness also
12341 caused problems with some configurations; if a certain source file
12342 could not be compiled on a given architecture for some reason,
12343 dependency tracking would fail, aborting the entire build.
12344 @item
12345 As dependency tracking was done as a pre-pass, compile times were
12346 doubled--the compiler had to be run twice per source file.
12347 @item
12348 @samp{make dist} re-ran @command{automake} to generate a
12349 @file{Makefile} that did not have automatic dependency tracking (and
12350 that was thus portable to any version of @command{make}).  In order to
12351 do this portably, Automake had to scan the dependency files and remove
12352 any reference that was to a source file not in the distribution.
12353 This process was error-prone.  Also, if @samp{make dist} was run in an
12354 environment where some object file had a dependency on a source file
12355 that was only conditionally created, Automake would generate a
12356 @file{Makefile} that referred to a file that might not appear in the
12357 end user's build.  A special, hacky mechanism was required to work
12358 around this.
12359 @end itemize
12361 @unnumberedsubsubsec Historical Note
12363 The code generated by Automake is often inspired by the
12364 @file{Makefile} style of a particular author.  In the case of the first
12365 implementation of dependency tracking, I believe the impetus and
12366 inspiration was Jim Meyering.  (I could be mistaken.  If you know
12367 otherwise feel free to correct me.)
12369 @node Dependencies As Side Effects
12370 @subsection Dependencies As Side Effects
12371 @unnumberedsubsubsec Description
12373 The next refinement of Automake's automatic dependency tracking scheme
12374 was to implement dependencies as side effects of the compilation.
12375 This was aimed at solving the most commonly reported problems with the
12376 first approach.  In particular we were most concerned with eliminating
12377 the weird rebuilding effect associated with make clean.
12379 In this approach, the @file{.P} files were included using the
12380 @code{-include} command, which let us create these files lazily.  This
12381 avoided the @samp{make clean} problem.
12383 We only computed dependencies when a file was actually compiled.  This
12384 avoided the performance penalty associated with scanning each file
12385 twice.  It also let us avoid the other problems associated with the
12386 first, eager, implementation.  For instance, dependencies would never
12387 be generated for a source file that was not compilable on a given
12388 architecture (because it in fact would never be compiled).
12390 @unnumberedsubsubsec Bugs
12392 @itemize
12393 @item
12394 This approach also relied on the existence of @command{gcc} and GNU
12395 @command{make}.  (A limitation, not technically a bug.)
12396 @item
12397 Dependency tracking was still done by the developer, so the problems
12398 from the first implementation relating to massaging of dependencies by
12399 @samp{make dist} were still in effect.
12400 @item
12401 This implementation suffered from the ``deleted header file'' problem.
12402 Suppose a lazily-created @file{.P} file includes a dependency on a
12403 given header file, like this:
12405 @example
12406 maude.o: maude.c something.h
12407 @end example
12409 Now suppose that the developer removes @file{something.h} and updates
12410 @file{maude.c} so that this include is no longer needed.  If he runs
12411 @command{make}, he will get an error because there is no way to create
12412 @file{something.h}.
12414 We fixed this problem in a later release by further massaging the
12415 output of @command{gcc} to include a dummy dependency for each header
12416 file.
12417 @end itemize
12419 @node Dependencies for the User
12420 @subsection Dependencies for the User
12421 @unnumberedsubsubsec Description
12423 The bugs associated with @samp{make dist}, over time, became a real
12424 problem.  Packages using Automake were being built on a large number
12425 of platforms, and were becoming increasingly complex.  Broken
12426 dependencies were distributed in ``portable'' @file{Makefile.in}s,
12427 leading to user complaints.  Also, the requirement for @command{gcc}
12428 and GNU @command{make} was a constant source of bug reports.  The next
12429 implementation of dependency tracking aimed to remove these problems.
12431 We realized that the only truly reliable way to automatically track
12432 dependencies was to do it when the package itself was built.  This
12433 meant discovering a method portable to any version of make and any
12434 compiler.  Also, we wanted to preserve what we saw as the best point
12435 of the second implementation: dependency computation as a side effect
12436 of compilation.
12438 In the end we found that most modern make implementations support some
12439 form of include directive.  Also, we wrote a wrapper script that let
12440 us abstract away differences between dependency tracking methods for
12441 compilers.  For instance, some compilers cannot generate dependencies
12442 as a side effect of compilation.  In this case we simply have the
12443 script run the compiler twice.  Currently our wrapper script
12444 (@command{depcomp}) knows about twelve different compilers (including
12445 a "compiler" that simply invokes @command{makedepend} and then the
12446 real compiler, which is assumed to be a standard Unix-like C compiler
12447 with no way to do dependency tracking).
12449 @unnumberedsubsubsec Bugs
12451 @itemize
12452 @item
12453 Running a wrapper script for each compilation slows down the build.
12454 @item
12455 Many users don't really care about precise dependencies.
12456 @item
12457 This implementation, like every other automatic dependency tracking
12458 scheme in common use today (indeed, every one we've ever heard of),
12459 suffers from the ``duplicated new header'' bug.
12461 This bug occurs because dependency tracking tools, such as the
12462 compiler, only generate dependencies on the successful opening of a
12463 file, and not on every probe.
12465 Suppose for instance that the compiler searches three directories for
12466 a given header, and that the header is found in the third directory.
12467 If the programmer erroneously adds a header file with the same name to
12468 the first directory, then a clean rebuild from scratch could fail
12469 (suppose the new header file is buggy), whereas an incremental rebuild
12470 will succeed.
12472 What has happened here is that people have a misunderstanding of what
12473 a dependency is.  Tool writers think a dependency encodes information
12474 about which files were read by the compiler.  However, a dependency
12475 must actually encode information about what the compiler tried to do.
12477 This problem is not serious in practice.  Programmers typically do not
12478 use the same name for a header file twice in a given project.  (At
12479 least, not in C or C++.  This problem may be more troublesome in
12480 Java.)  This problem is easy to fix, by modifying dependency
12481 generators to record every probe, instead of every successful open.
12483 @item
12484 Since Automake generates dependencies as a side effect of compilation,
12485 there is a bootstrapping problem when header files are generated by
12486 running a program.  The problem is that, the first time the build is
12487 done, there is no way by default to know that the headers are
12488 required, so make might try to run a compilation for which the headers
12489 have not yet been built.
12491 This was also a problem in the previous dependency tracking implementation.
12493 The current fix is to use @code{BUILT_SOURCES} to list built headers
12494 (@pxref{Sources}).  This causes them to be built before any other
12495 build rules are run.  This is unsatisfactory as a general solution,
12496 however in practice it seems sufficient for most actual programs.
12497 @end itemize
12499 This code is used since Automake 1.5.
12501 In GCC 3.0, we managed to convince the maintainers to add special
12502 command-line options to help Automake more efficiently do its job.  We
12503 hoped this would let us avoid the use of a wrapper script when
12504 Automake's automatic dependency tracking was used with @command{gcc}.
12506 Unfortunately, this code doesn't quite do what we want.  In
12507 particular, it removes the dependency file if the compilation fails;
12508 we'd prefer that it instead only touch the file in any way if the
12509 compilation succeeds.
12511 Nevertheless, since Automake 1.7, when a recent @command{gcc} is
12512 detected at @command{configure} time, we inline the
12513 dependency-generation code and do not use the @command{depcomp}
12514 wrapper script.  This makes compilations faster for those using this
12515 compiler (probably our primary user base).  The counterpart is that
12516 because we have to encode two compilation rules in @file{Makefile}
12517 (with or without @command{depcomp}), the produced @file{Makefile}s are
12518 larger.
12520 @node Techniques for Dependencies
12521 @subsection Techniques for Computing Dependencies
12523 There are actually several ways for a build tool like Automake to
12524 cause tools to generate dependencies.
12526 @table @asis
12527 @item @command{makedepend}
12528 This was a commonly-used method in the past.  The idea is to run a
12529 special program over the source and have it generate dependency
12530 information.  Traditional implementations of @command{makedepend} are
12531 not completely precise; ordinarily they were conservative and
12532 discovered too many dependencies.
12533 @item The tool
12534 An obvious way to generate dependencies is to simply write the tool so
12535 that it can generate the information needed by the build tool.  This is
12536 also the most portable method.  Many compilers have an option to
12537 generate dependencies.  Unfortunately, not all tools provide such an
12538 option.
12539 @item The file system
12540 It is possible to write a special file system that tracks opens,
12541 reads, writes, etc, and then feed this information back to the build
12542 tool.  @command{clearmake} does this.  This is a very powerful
12543 technique, as it doesn't require cooperation from the
12544 tool.  Unfortunately it is also very difficult to implement and also
12545 not practical in the general case.
12546 @item @code{LD_PRELOAD}
12547 Rather than use the file system, one could write a special library to
12548 intercept @code{open} and other syscalls.  This technique is also quite
12549 powerful, but unfortunately it is not portable enough for use in
12550 @command{automake}.
12551 @end table
12553 @node Recommendations for Tool Writers
12554 @subsection Recommendations for Tool Writers
12556 We think that every compilation tool ought to be able to generate
12557 dependencies as a side effect of compilation.  Furthermore, at least
12558 while @command{make}-based tools are nearly universally in use (at
12559 least in the free software community), the tool itself should generate
12560 dummy dependencies for header files, to avoid the deleted header file
12561 bug.  Finally, the tool should generate a dependency for each probe,
12562 instead of each successful file open, in order to avoid the duplicated
12563 new header bug.
12565 @node Future Directions for Dependencies
12566 @subsection Future Directions for Dependencies
12568 Currently, only languages and compilers understood by Automake can
12569 have dependency tracking enabled.  We would like to see if it is
12570 practical (and worthwhile) to let this support be extended by the user
12571 to languages unknown to Automake.
12573 @node Releases
12574 @section Release Statistics
12576 The following table (inspired by @samp{perlhist(1)}) quantifies the
12577 evolution of Automake using these metrics:
12579 @table @asis
12580 @item Date, Rel
12581 The date and version of the release.
12582 @item am
12583 The number of lines of the @command{automake} script.
12584 @item acl
12585 The number of lines of the @command{aclocal} script.
12586 @item pm
12587 The number of lines of the @command{Perl} supporting modules.
12588 @item @file{*.am}
12589 The number of lines of the @file{Makefile} fragments.  The number in
12590 parentheses is the number of files.
12591 @item m4
12592 The number of lines (and files) of Autoconf macros.
12593 @item doc
12594 The number of pages of the documentation (the Postscript version).
12595 @item t
12596 The number of test cases in the test suite.  Of those, the number in
12597 parentheses is the number of generated test cases.
12598 @end table
12600 @multitable {8888-88-88} {8.8-p8} {8888} {8888} {8888} {8888 (88)} {8888 (88)} {888} {888 (88)}
12601 @headitem Date   @tab Rel    @tab   am @tab acl @tab   pm @tab @file{*.am} @tab m4 @tab doc @tab t
12602 @item 1994-09-19 @tab CVS    @tab  141 @tab     @tab      @tab  299 (24) @tab           @tab     @tab
12603 @item 1994-11-05 @tab CVS    @tab  208 @tab     @tab      @tab  332 (28) @tab           @tab     @tab
12604 @item 1995-11-23 @tab 0.20   @tab  533 @tab     @tab      @tab  458 (35) @tab           @tab   9 @tab
12605 @item 1995-11-26 @tab 0.21   @tab  613 @tab     @tab      @tab  480 (36) @tab           @tab  11 @tab
12606 @item 1995-11-28 @tab 0.22   @tab 1116 @tab     @tab      @tab  539 (38) @tab           @tab  12 @tab
12607 @item 1995-11-29 @tab 0.23   @tab 1240 @tab     @tab      @tab  541 (38) @tab           @tab  12 @tab
12608 @item 1995-12-08 @tab 0.24   @tab 1462 @tab     @tab      @tab  504 (33) @tab           @tab  14 @tab
12609 @item 1995-12-10 @tab 0.25   @tab 1513 @tab     @tab      @tab  511 (37) @tab           @tab  15 @tab
12610 @item 1996-01-03 @tab 0.26   @tab 1706 @tab     @tab      @tab  438 (36) @tab           @tab  16 @tab
12611 @item 1996-01-03 @tab 0.27   @tab 1706 @tab     @tab      @tab  438 (36) @tab           @tab  16 @tab
12612 @item 1996-01-13 @tab 0.28   @tab 1964 @tab     @tab      @tab  934 (33) @tab           @tab  16 @tab
12613 @item 1996-02-07 @tab 0.29   @tab 2299 @tab     @tab      @tab  936 (33) @tab           @tab  17 @tab
12614 @item 1996-02-24 @tab 0.30   @tab 2544 @tab     @tab      @tab  919 (32) @tab   85 (1)  @tab  20 @tab 9
12615 @item 1996-03-11 @tab 0.31   @tab 2877 @tab     @tab      @tab  919 (32) @tab   85 (1)  @tab  29 @tab 17
12616 @item 1996-04-27 @tab 0.32   @tab 3058 @tab     @tab      @tab  921 (31) @tab   85 (1)  @tab  30 @tab 26
12617 @item 1996-05-18 @tab 0.33   @tab 3110 @tab     @tab      @tab  926 (31) @tab  105 (1)  @tab  30 @tab 35
12618 @item 1996-05-28 @tab 1.0    @tab 3134 @tab     @tab      @tab  973 (32) @tab  105 (1)  @tab  30 @tab 38
12619 @item 1997-06-22 @tab 1.2    @tab 6089 @tab 385 @tab      @tab 1294 (36) @tab  592 (20) @tab  37 @tab 126
12620 @item 1998-04-05 @tab 1.3    @tab 6415 @tab 422 @tab      @tab 1470 (39) @tab  741 (23) @tab  39 @tab 156
12621 @item 1999-01-14 @tab 1.4    @tab 7240 @tab 426 @tab      @tab 1591 (40) @tab  734 (20) @tab  51 @tab 197
12622 @item 2001-05-08 @tab 1.4-p1 @tab 7251 @tab 426 @tab      @tab 1591 (40) @tab  734 (20) @tab  51 @tab 197
12623 @item 2001-05-24 @tab 1.4-p2 @tab 7268 @tab 439 @tab      @tab 1591 (40) @tab  734 (20) @tab  49 @tab 197
12624 @item 2001-06-07 @tab 1.4-p3 @tab 7312 @tab 439 @tab      @tab 1591 (40) @tab  734 (20) @tab  49 @tab 197
12625 @item 2001-06-10 @tab 1.4-p4 @tab 7321 @tab 439 @tab      @tab 1591 (40) @tab  734 (20) @tab  49 @tab 198
12626 @item 2001-07-15 @tab 1.4-p5 @tab 7228 @tab 426 @tab      @tab 1596 (40) @tab  734 (20) @tab  51 @tab 198
12627 @item 2001-08-23 @tab 1.5    @tab 8016 @tab 475 @tab  600 @tab 2654 (39) @tab 1166 (29) @tab  63 @tab 327
12628 @item 2002-03-05 @tab 1.6    @tab 8465 @tab 475 @tab 1136 @tab 2732 (39) @tab 1603 (27) @tab  66 @tab 365
12629 @item 2002-04-11 @tab 1.6.1  @tab 8544 @tab 475 @tab 1136 @tab 2741 (39) @tab 1603 (27) @tab  66 @tab 372
12630 @item 2002-06-14 @tab 1.6.2  @tab 8575 @tab 475 @tab 1136 @tab 2800 (39) @tab 1609 (27) @tab  67 @tab 386
12631 @item 2002-07-28 @tab 1.6.3  @tab 8600 @tab 475 @tab 1153 @tab 2809 (39) @tab 1609 (27) @tab  67 @tab 391
12632 @item 2002-07-28 @tab 1.4-p6 @tab 7332 @tab 455 @tab      @tab 1596 (40) @tab  735 (20) @tab  49 @tab 197
12633 @item 2002-09-25 @tab 1.7    @tab 9189 @tab 471 @tab 1790 @tab 2965 (39) @tab 1606 (28) @tab  73 @tab 430
12634 @item 2002-10-16 @tab 1.7.1  @tab 9229 @tab 475 @tab 1790 @tab 2977 (39) @tab 1606 (28) @tab  73 @tab 437
12635 @item 2002-12-06 @tab 1.7.2  @tab 9334 @tab 475 @tab 1790 @tab 2988 (39) @tab 1606 (28) @tab  77 @tab 445
12636 @item 2003-02-20 @tab 1.7.3  @tab 9389 @tab 475 @tab 1790 @tab 3023 (39) @tab 1651 (29) @tab  84 @tab 448
12637 @item 2003-04-23 @tab 1.7.4  @tab 9429 @tab 475 @tab 1790 @tab 3031 (39) @tab 1644 (29) @tab  85 @tab 458
12638 @item 2003-05-18 @tab 1.7.5  @tab 9429 @tab 475 @tab 1790 @tab 3033 (39) @tab 1645 (29) @tab  85 @tab 459
12639 @item 2003-07-10 @tab 1.7.6  @tab 9442 @tab 475 @tab 1790 @tab 3033 (39) @tab 1660 (29) @tab  85 @tab 461
12640 @item 2003-09-07 @tab 1.7.7  @tab 9443 @tab 475 @tab 1790 @tab 3041 (39) @tab 1660 (29) @tab  90 @tab 467
12641 @item 2003-10-07 @tab 1.7.8  @tab 9444 @tab 475 @tab 1790 @tab 3041 (39) @tab 1660 (29) @tab  90 @tab 468
12642 @item 2003-11-09 @tab 1.7.9  @tab 9444 @tab 475 @tab 1790 @tab 3048 (39) @tab 1660 (29) @tab  90 @tab 468
12643 @item 2003-12-10 @tab 1.8    @tab 7171 @tab 585 @tab 7730 @tab 3236 (39) @tab 1666 (31) @tab 104 @tab 521
12644 @item 2004-01-11 @tab 1.8.1  @tab 7217 @tab 663 @tab 7726 @tab 3287 (39) @tab 1686 (31) @tab 104 @tab 525
12645 @item 2004-01-12 @tab 1.8.2  @tab 7217 @tab 663 @tab 7726 @tab 3288 (39) @tab 1686 (31) @tab 104 @tab 526
12646 @item 2004-03-07 @tab 1.8.3  @tab 7214 @tab 686 @tab 7735 @tab 3303 (39) @tab 1695 (31) @tab 111 @tab 530
12647 @item 2004-04-25 @tab 1.8.4  @tab 7214 @tab 686 @tab 7736 @tab 3310 (39) @tab 1701 (31) @tab 112 @tab 531
12648 @item 2004-05-16 @tab 1.8.5  @tab 7240 @tab 686 @tab 7736 @tab 3299 (39) @tab 1701 (31) @tab 112 @tab 533
12649 @item 2004-07-28 @tab 1.9    @tab 7508 @tab 715 @tab 7794 @tab 3352 (40) @tab 1812 (32) @tab 115 @tab 551
12650 @item 2004-08-11 @tab 1.9.1  @tab 7512 @tab 715 @tab 7794 @tab 3354 (40) @tab 1812 (32) @tab 115 @tab 552
12651 @item 2004-09-19 @tab 1.9.2  @tab 7512 @tab 715 @tab 7794 @tab 3354 (40) @tab 1812 (32) @tab 132 @tab 554
12652 @item 2004-11-01 @tab 1.9.3  @tab 7507 @tab 718 @tab 7804 @tab 3354 (40) @tab 1812 (32) @tab 134 @tab 556
12653 @item 2004-12-18 @tab 1.9.4  @tab 7508 @tab 718 @tab 7856 @tab 3361 (40) @tab 1811 (32) @tab 140 @tab 560
12654 @item 2005-02-13 @tab 1.9.5  @tab 7523 @tab 719 @tab 7859 @tab 3373 (40) @tab 1453 (32) @tab 142 @tab 562
12655 @item 2005-07-10 @tab 1.9.6  @tab 7539 @tab 699 @tab 7867 @tab 3400 (40) @tab 1453 (32) @tab 144 @tab 570
12656 @item 2006-10-15 @tab 1.10   @tab 7859 @tab 1072 @tab 8024 @tab 3512 (40) @tab 1496 (34) @tab 172 @tab 604
12657 @item 2008-01-19 @tab 1.10.1 @tab 7870 @tab 1089 @tab 8025 @tab 3520 (40) @tab 1499 (34) @tab 173 @tab 617
12658 @item 2009-03-29 @tab 1.10b  @tab 8556 @tab 1092 @tab 8281 @tab 4106 (41) @tab 1608 (35) @tab 178 @tab 720 (20)
12659 @end multitable
12662 @c ========================================================== Appendices
12664 @page
12665 @node Copying This Manual
12666 @appendix Copying This Manual
12668 @menu
12669 * GNU Free Documentation License::  License for copying this manual
12670 @end menu
12672 @node GNU Free Documentation License
12673 @appendixsec GNU Free Documentation License
12674 @include fdl.texi
12676 @page
12677 @node Indices
12678 @appendix Indices
12680 @menu
12681 * Macro Index::                 Index of Autoconf macros
12682 * Variable Index::              Index of Makefile variables
12683 * General Index::               General index
12684 @end menu
12686 @node Macro Index
12687 @appendixsec Macro Index
12689 @printindex fn
12691 @node Variable Index
12692 @appendixsec Variable Index
12694 @printindex vr
12696 @node General Index
12697 @appendixsec General Index
12699 @printindex cp
12702 @page
12703 @contents
12704 @bye
12706 @c  LocalWords:  texinfo setfilename settitle setchapternewpage texi direntry
12707 @c  LocalWords:  dircategory in's aclocal ifinfo titlepage Tromey vskip pt sp
12708 @c  LocalWords:  filll defcodeindex ov cv op tr syncodeindex fn cp vr ifnottex
12709 @c  LocalWords:  dir Automake's ac Dist Gnits gnits cygnus dfn Autoconf's pxref
12710 @c  LocalWords:  cindex Autoconf autoconf perl samp cvs dist trindex SUBST foo
12711 @c  LocalWords:  xs emph FIXME ref vindex pkglibdir pkgincludedir pkgdatadir mt
12712 @c  LocalWords:  pkg libdir cpio bindir sbindir rmt pax sbin zar zardir acindex
12713 @c  LocalWords:  HTML htmldir html noinst TEXINFOS nodist nobase strudel CFLAGS
12714 @c  LocalWords:  libmumble CC YFLAGS ansi knr itemx de fication config url comp
12715 @c  LocalWords:  depcomp elisp sh mdate mkinstalldirs mkdir py tex dvi ps pdf
12716 @c  LocalWords:  ylwrap zardoz INIT gettext acinclude mv FUNCS LIBOBJS LDADD fr
12717 @c  LocalWords:  uref featureful dnl src LINGUAS es ko nl pl sl sv PROG ISC doc
12718 @c  LocalWords:  POSIX STDC fcntl FUNC ALLOCA blksize struct stat intl po chmod
12719 @c  LocalWords:  ChangeLog SUBDIRS gettextize gpl testdata getopt INTLLIBS cpp
12720 @c  LocalWords:  localedir datadir DLOCALEDIR DEXIT CPPFLAGS autoreconf opindex
12721 @c  LocalWords:  AUX var symlink deps Wno Wnone package's aclocal's distclean
12722 @c  LocalWords:  ltmain xref LIBSOURCE LIBSOURCES LIBOBJ MEMCMP vs RANLIB CXX
12723 @c  LocalWords:  LDFLAGS LIBTOOL libtool XTRA LIBS gettext's acdir APIVERSION
12724 @c  LocalWords:  dirlist noindent usr MULTILIB multilib Multilibs TIOCGWINSZ sc
12725 @c  LocalWords:  GWINSZ termios SRCDIR tarball bzip LISPDIR lispdir XEmacs CCAS
12726 @c  LocalWords:  emacsen MicroEmacs CCASFLAGS UX GCJ gcj GCJFLAGS posix DMALLOC
12727 @c  LocalWords:  dmalloc ldmalloc REGEX regex rx DEPDIR DEP DEFUN aclocaldir fi
12728 @c  LocalWords:  mymacro myothermacro AMFLAGS autopoint autogen libtoolize yum
12729 @c  LocalWords:  autoheader README MAKEFLAGS subdir Inetutils sync COND endif
12730 @c  LocalWords:  Miller's installable includedir inc pkgdata EXEEXT libexec bsd
12731 @c  LocalWords:  pkglib libexecdir prog libcpio cpio's dlopen dlpreopen linux
12732 @c  LocalWords:  subsubsection OBJEXT esac lib LTLIBRARIES liblob LIBADD AR ar
12733 @c  LocalWords:  ARFLAGS cru ing maude libgettext lo LTLIBOBJS rpath SGI PRE yy
12734 @c  LocalWords:  libmaude CCLD CXXFLAGS FFLAGS LFLAGS OBJCFLAGS RFLAGS DEFS cc
12735 @c  LocalWords:  SHORTNAME vtable srcdir nostdinc basename yxx cxx ll lxx gdb
12736 @c  LocalWords:  lexers yymaxdepth maxdepth yyparse yylex yyerror yylval lval
12737 @c  LocalWords:  yychar yydebug yypact yyr yydef def yychk chk yypgo pgo yyact
12738 @c  LocalWords:  yyexca exca yyerrflag errflag yynerrs nerrs yyps yypv pv yys
12739 @c  LocalWords:  yystate yytmp tmp yyv yyval val yylloc lloc yyreds yytoks toks
12740 @c  LocalWords:  yylhs yylen yydefred yydgoto yysindex yyrindex yygindex yyname
12741 @c  LocalWords:  yytable yycheck yyrule byacc CXXCOMPILE CXXLINK FLINK cfortran
12742 @c  LocalWords:  Catalogue preprocessable FLIBS libfoo baz JAVACFLAGS java exe
12743 @c  LocalWords:  SunOS fying basenames exeext uninstalled oldinclude kr FSF's
12744 @c  LocalWords:  pkginclude oldincludedir sysconf sharedstate localstate gcc rm
12745 @c  LocalWords:  sysconfdir sharedstatedir localstatedir preexist CLEANFILES gz
12746 @c  LocalWords:  depfile tmpdepfile depmode const interoperate
12747 @c  LocalWords:  JAVAC javac JAVAROOT builddir CLASSPATH ENV pyc pyo pkgpython
12748 @c  LocalWords:  pyexecdir pkgpyexecdir Python's pythondir pkgpythondir txi ois
12749 @c  LocalWords:  installinfo vers MAKEINFO makeinfo MAKEINFOFLAGS noinstall rf
12750 @c  LocalWords:  mandir thesame alsothesame installman myexecbin DESTDIR Pinard
12751 @c  LocalWords:  uninstall installdirs uninstalls MOSTLYCLEANFILES mostlyclean
12752 @c  LocalWords:  DISTCLEANFILES MAINTAINERCLEANFILES GZIP gzip shar exp
12753 @c  LocalWords:  distdir distcheck distcleancheck listfiles distuninstallcheck
12754 @c  LocalWords:  VPATH tarfile stdout XFAIL DejaGnu dejagnu DEJATOOL runtest ln
12755 @c  LocalWords:  RUNTESTDEFAULTFLAGS toolchain RUNTESTFLAGS asis readme DVIPS
12756 @c  LocalWords:  installcheck gzipped tarZ std utils etags mkid multilibbing cd
12757 @c  LocalWords:  ARGS taggable ETAGSFLAGS lang ctags CTAGSFLAGS GTAGS gtags idl
12758 @c  LocalWords:  foocc doit idlC multilibs ABIs cmindex defmac ARG enableval FC
12759 @c  LocalWords:  MSG xtrue DBG pathchk CYGWIN afile proglink versioned CVS's TE
12760 @c  LocalWords:  wildcards Autoconfiscated subsubheading autotools Meyering API
12761 @c  LocalWords:  ois's wildcard Wportability cartouche vrindex printindex Duret
12762 @c  LocalWords:  DSOMEFLAG DVERSION automake Lutz insertcopying versioning FAQ
12763 @c  LocalWords:  LTLIBOBJ Libtool's libtool's libltdl dlopening itutions libbar
12764 @c  LocalWords:  WANTEDLIBS libhello sublibraries libtop libsub dlopened Ratfor
12765 @c  LocalWords:  mymodule timestamps timestamp underquoted MAKEINFOHTMLFLAGS te
12766 @c  LocalWords:  GNUmakefile Subpackages subpackage's subpackages aux
12767 @c  LocalWords:  detailmenu Timeline pwd reldir AUTOM autom PREREQ FOOBAR libc
12768 @c  LocalWords:  libhand subpackage moduleN libmain libmisc FCFLAGS FCCOMPILE
12769 @c  LocalWords:  FCLINK subst sed ELCFILES elc MAKEINFOHTML dvips esyscmd ustar
12770 @c  LocalWords:  tarballs Woverride vfi ELFILES djm AutoMake honkin FSF
12771 @c  LocalWords:  fileutils precanned MacKenzie's reimplement termutils Tromey's
12772 @c  LocalWords:  cois gnitsians LIBPROGRAMS progs LIBLIBRARIES Textutils Ulrich
12773 @c  LocalWords:  Matzigkeit Drepper's Gord Matzigkeit's jm Dalley Debian org
12774 @c  LocalWords:  Administrivia ILU CORBA Sourceware Molenda sourceware Elliston
12775 @c  LocalWords:  dep Oliva Akim Demaille Aiieeee Demaillator Akim's sourcequake
12776 @c  LocalWords:  grep backported screenshots libgcj KB unnumberedsubsubsec pre
12777 @c  LocalWords:  precomputing hacky makedepend inline clearmake LD PRELOAD Rel
12778 @c  LocalWords:  syscalls perlhist acl pm multitable headitem fdl appendixsec
12779 @c  LocalWords:  LTALLOCA MALLOC malloc memcmp strdup alloca libcompat xyz DFOO
12780 @c  LocalWords:  unprefixed buildable preprocessed DBAZ DDATADIR WARNINGCFLAGS
12781 @c  LocalWords:  LIBFOOCFLAGS LIBFOOLDFLAGS ftable testSubDir obj LIBTOOLFLAGS
12782 @c  LocalWords:  barexec Pinard's automatize initialize lzma xz