Merge branch 'mh-vala-support' into next
[automake.git] / doc / automake.texi
bloba52357b939314189b1b657d501e35942e1f2bcf9
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 -v
2564 @itemx --verbose
2565 @opindex -v
2566 @opindex --verbose
2567 Cause Automake to print information about which files are being read or
2568 created.
2570 @item --version
2571 @opindex --version
2572 Print the version number of Automake and exit.
2574 @item -W CATEGORY
2575 @itemx --warnings=@var{category}
2576 @opindex -W
2577 @opindex --warnings
2578 Output warnings falling in @var{category}.  @var{category} can be
2579 one of:
2580 @table @code
2581 @item gnu
2582 warnings related to the GNU Coding Standards
2583 (@pxref{Top, , , standards, The GNU Coding Standards}).
2584 @item obsolete
2585 obsolete features or constructions
2586 @item override
2587 user redefinitions of Automake rules or variables
2588 @item portability
2589 portability issues (e.g., use of @command{make} features that are
2590 known to be not portable)
2591 @item syntax
2592 weird syntax, unused variables, typos
2593 @item unsupported
2594 unsupported or incomplete features
2595 @item all
2596 all the warnings
2597 @item none
2598 turn off all the warnings
2599 @item error
2600 treat warnings as errors
2601 @end table
2603 A category can be turned off by prefixing its name with @samp{no-}.  For
2604 instance, @option{-Wno-syntax} will hide the warnings about unused
2605 variables.
2607 The categories output by default are @samp{syntax} and
2608 @samp{unsupported}.  Additionally, @samp{gnu} and @samp{portability}
2609 are enabled in @option{--gnu} and @option{--gnits} strictness.
2610 On the other hand, the @option{silent-rules} options (@pxref{Options})
2611 turns off portability warnings about recursive variable expansions.
2613 @vindex WARNINGS
2614 The environment variable @env{WARNINGS} can contain a comma separated
2615 list of categories to enable.  It will be taken into account before the
2616 command-line switches, this way @option{-Wnone} will also ignore any
2617 warning category enabled by @env{WARNINGS}.  This variable is also used
2618 by other tools like @command{autoconf}; unknown categories are ignored
2619 for this reason.
2621 @end table
2623 @vindex AUTOMAKE_JOBS
2624 If the environment variable @env{AUTOMAKE_JOBS} contains a positive
2625 number, it is taken as the maximum number of Perl threads to use in
2626 @command{automake} for generating multiple @file{Makefile.in} files
2627 concurrently.  This is an experimental feature.
2630 @node configure
2631 @chapter Scanning @file{configure.ac}
2633 @cindex @file{configure.ac}, scanning
2634 @cindex Scanning @file{configure.ac}
2636 Automake scans the package's @file{configure.ac} to determine certain
2637 information about the package.  Some @command{autoconf} macros are required
2638 and some variables must be defined in @file{configure.ac}.  Automake
2639 will also use information from @file{configure.ac} to further tailor its
2640 output.
2642 Automake also supplies some Autoconf macros to make the maintenance
2643 easier.  These macros can automatically be put into your
2644 @file{aclocal.m4} using the @command{aclocal} program.
2646 @menu
2647 * Requirements::                Configuration requirements
2648 * Optional::                    Other things Automake recognizes
2649 * Invoking aclocal::            Auto-generating aclocal.m4
2650 * Macros::                      Autoconf macros supplied with Automake
2651 @end menu
2654 @node Requirements
2655 @section Configuration requirements
2657 @cindex Automake requirements
2658 @cindex Requirements of Automake
2660 @acindex AM_INIT_AUTOMAKE
2661 The one real requirement of Automake is that your @file{configure.ac}
2662 call @code{AM_INIT_AUTOMAKE}.  This macro does several things that are
2663 required for proper Automake operation (@pxref{Macros}).
2665 Here are the other macros that Automake requires but which are not run
2666 by @code{AM_INIT_AUTOMAKE}:
2668 @table @code
2669 @item AC_CONFIG_FILES
2670 @itemx AC_OUTPUT
2671 @acindex AC_CONFIG_FILES
2672 @acindex AC_OUTPUT
2673 These two macros are usually invoked as follows near the end of
2674 @file{configure.ac}.
2676 @example
2677 @dots{}
2678 AC_CONFIG_FILES([
2679   Makefile
2680   doc/Makefile
2681   src/Makefile
2682   src/lib/Makefile
2683   @dots{}
2685 AC_OUTPUT
2686 @end example
2688 Automake uses these to determine which files to create (@pxref{Output, ,
2689 Creating Output Files, autoconf, The Autoconf Manual}).  A listed file
2690 is considered to be an Automake generated @file{Makefile} if there
2691 exists a file with the same name and the @file{.am} extension appended.
2692 Typically, @samp{AC_CONFIG_FILES([foo/Makefile])} will cause Automake to
2693 generate @file{foo/Makefile.in} if @file{foo/Makefile.am} exists.
2695 When using @code{AC_CONFIG_FILES} with multiple input files, as in
2697 @example
2698 AC_CONFIG_FILES([Makefile:top.in:Makefile.in:bot.in])
2699 @end example
2701 @noindent
2702 @command{automake} will generate the first @file{.in} input file for
2703 which a @file{.am} file exists.  If no such file exists the output
2704 file is not considered to be generated by Automake.
2706 Files created by @code{AC_CONFIG_FILES}, be they Automake
2707 @file{Makefile}s or not, are all removed by @samp{make distclean}.
2708 Their inputs are automatically distributed, unless they
2709 are the output of prior @code{AC_CONFIG_FILES} commands.
2710 Finally, rebuild rules are generated in the Automake @file{Makefile}
2711 existing in the subdirectory of the output file, if there is one, or
2712 in the top-level @file{Makefile} otherwise.
2714 The above machinery (cleaning, distributing, and rebuilding) works
2715 fine if the @code{AC_CONFIG_FILES} specifications contain only
2716 literals.  If part of the specification uses shell variables,
2717 @command{automake} will not be able to fulfill this setup, and you will
2718 have to complete the missing bits by hand.  For instance, on
2720 @example
2721 file=input
2722 @dots{}
2723 AC_CONFIG_FILES([output:$file],, [file=$file])
2724 @end example
2726 @noindent
2727 @command{automake} will output rules to clean @file{output}, and
2728 rebuild it.  However the rebuild rule will not depend on @file{input},
2729 and this file will not be distributed either.  (You must add
2730 @samp{EXTRA_DIST = input} to your @file{Makefile.am} if @file{input} is a
2731 source file.)
2733 Similarly
2735 @example
2736 file=output
2737 file2=out:in
2738 @dots{}
2739 AC_CONFIG_FILES([$file:input],, [file=$file])
2740 AC_CONFIG_FILES([$file2],, [file2=$file2])
2741 @end example
2743 @noindent
2744 will only cause @file{input} to be distributed.  No file will be
2745 cleaned automatically (add @samp{DISTCLEANFILES = output out}
2746 yourself), and no rebuild rule will be output.
2748 Obviously @command{automake} cannot guess what value @samp{$file} is
2749 going to hold later when @file{configure} is run, and it cannot use
2750 the shell variable @samp{$file} in a @file{Makefile}.  However, if you
2751 make reference to @samp{$file} as @samp{$@{file@}} (i.e., in a way
2752 that is compatible with @command{make}'s syntax) and furthermore use
2753 @code{AC_SUBST} to ensure that @samp{$@{file@}} is meaningful in a
2754 @file{Makefile}, then @command{automake} will be able to use
2755 @samp{$@{file@}} to generate all these rules.  For instance, here is
2756 how the Automake package itself generates versioned scripts for its
2757 test suite:
2759 @example
2760 AC_SUBST([APIVERSION], @dots{})
2761 @dots{}
2762 AC_CONFIG_FILES(
2763   [tests/aclocal-$@{APIVERSION@}:tests/aclocal.in],
2764   [chmod +x tests/aclocal-$@{APIVERSION@}],
2765   [APIVERSION=$APIVERSION])
2766 AC_CONFIG_FILES(
2767   [tests/automake-$@{APIVERSION@}:tests/automake.in],
2768   [chmod +x tests/automake-$@{APIVERSION@}])
2769 @end example
2771 @noindent
2772 Here cleaning, distributing, and rebuilding are done automatically,
2773 because @samp{$@{APIVERSION@}} is known at @command{make}-time.
2775 Note that you should not use shell variables to declare
2776 @file{Makefile} files for which @command{automake} must create
2777 @file{Makefile.in}.  Even @code{AC_SUBST} does not help here, because
2778 @command{automake} needs to know the file name when it runs in order
2779 to check whether @file{Makefile.am} exists.  (In the very hairy case
2780 that your setup requires such use of variables, you will have to tell
2781 Automake which @file{Makefile.in}s to generate on the command-line.)
2783 It is possible to let @command{automake} emit conditional rules for
2784 @code{AC_CONFIG_FILES} with the help of @code{AM_COND_IF}
2785 (@pxref{Optional}).
2787 To summarize:
2788 @itemize @bullet
2789 @item
2790 Use literals for @file{Makefile}s, and for other files whenever possible.
2791 @item
2792 Use @samp{$file} (or @samp{$@{file@}} without @samp{AC_SUBST([file])})
2793 for files that @command{automake} should ignore.
2794 @item
2795 Use @samp{$@{file@}} and @samp{AC_SUBST([file])} for files
2796 that @command{automake} should not ignore.
2797 @end itemize
2799 @end table
2802 @node Optional
2803 @section Other things Automake recognizes
2805 @cindex Macros Automake recognizes
2806 @cindex Recognized macros by Automake
2808 Every time Automake is run it calls Autoconf to trace
2809 @file{configure.ac}.  This way it can recognize the use of certain
2810 macros and tailor the generated @file{Makefile.in} appropriately.
2811 Currently recognized macros and their effects are:
2813 @ftable @code
2814 @item AC_CANONICAL_BUILD
2815 @itemx AC_CANONICAL_HOST
2816 @itemx AC_CANONICAL_TARGET
2817 @vindex build_triplet
2818 @vindex host_triplet
2819 @vindex target_triplet
2820 Automake will ensure that @file{config.guess} and @file{config.sub}
2821 exist.  Also, the @file{Makefile} variables @code{build_triplet},
2822 @code{host_triplet} and @code{target_triplet} are introduced.  See
2823 @ref{Canonicalizing, , Getting the Canonical System Type, autoconf,
2824 The Autoconf Manual}.
2826 @item AC_CONFIG_AUX_DIR
2827 Automake will look for various helper scripts, such as
2828 @file{install-sh}, in the directory named in this macro invocation.
2829 @c This list is accurate relative to version 1.8
2830 (The full list of scripts is: @file{config.guess}, @file{config.sub},
2831 @file{depcomp}, @file{elisp-comp}, @file{compile}, @file{install-sh},
2832 @file{ltmain.sh}, @file{mdate-sh}, @file{missing}, @file{mkinstalldirs},
2833 @file{py-compile}, @file{texinfo.tex}, and @file{ylwrap}.)  Not all
2834 scripts are always searched for; some scripts will only be sought if the
2835 generated @file{Makefile.in} requires them.
2837 If @code{AC_CONFIG_AUX_DIR} is not given, the scripts are looked for in
2838 their standard locations.  For @file{mdate-sh},
2839 @file{texinfo.tex}, and @file{ylwrap}, the standard location is the
2840 source directory corresponding to the current @file{Makefile.am}.  For
2841 the rest, the standard location is the first one of @file{.}, @file{..},
2842 or @file{../..} (relative to the top source directory) that provides any
2843 one of the helper scripts.  @xref{Input, , Finding `configure' Input,
2844 autoconf, The Autoconf Manual}.
2846 Required files from @code{AC_CONFIG_AUX_DIR} are automatically
2847 distributed, even if there is no @file{Makefile.am} in this directory.
2849 @item AC_CONFIG_LIBOBJ_DIR
2850 Automake will require the sources file declared with
2851 @code{AC_LIBSOURCE} (see below) in the directory specified by this
2852 macro.
2854 @item AC_CONFIG_HEADERS
2855 Automake will generate rules to rebuild these headers.  Older versions
2856 of Automake required the use of @code{AM_CONFIG_HEADER}
2857 (@pxref{Macros}); this is no longer the case.
2859 As for @code{AC_CONFIG_FILES} (@pxref{Requirements}), parts of the
2860 specification using shell variables will be ignored as far as
2861 cleaning, distributing, and rebuilding is concerned.
2863 @item AC_CONFIG_LINKS
2864 Automake will generate rules to remove @file{configure} generated
2865 links on @samp{make distclean} and to distribute named source files as
2866 part of @samp{make dist}.
2868 As for @code{AC_CONFIG_FILES} (@pxref{Requirements}), parts of the
2869 specification using shell variables will be ignored as far as cleaning
2870 and distributing is concerned.  (There are no rebuild rules for links.)
2872 @item AC_LIBOBJ
2873 @itemx AC_LIBSOURCE
2874 @itemx AC_LIBSOURCES
2875 @vindex LIBOBJS
2876 Automake will automatically distribute any file listed in
2877 @code{AC_LIBSOURCE} or @code{AC_LIBSOURCES}.
2879 Note that the @code{AC_LIBOBJ} macro calls @code{AC_LIBSOURCE}.  So if
2880 an Autoconf macro is documented to call @samp{AC_LIBOBJ([file])}, then
2881 @file{file.c} will be distributed automatically by Automake.  This
2882 encompasses many macros like @code{AC_FUNC_ALLOCA},
2883 @code{AC_FUNC_MEMCMP}, @code{AC_REPLACE_FUNCS}, and others.
2885 By the way, direct assignments to @code{LIBOBJS} are no longer
2886 supported.  You should always use @code{AC_LIBOBJ} for this purpose.
2887 @xref{AC_LIBOBJ vs LIBOBJS, , @code{AC_LIBOBJ} vs.@: @code{LIBOBJS},
2888 autoconf, The Autoconf Manual}.
2890 @item AC_PROG_RANLIB
2891 This is required if any libraries are built in the package.
2892 @xref{Particular Programs, , Particular Program Checks, autoconf, The
2893 Autoconf Manual}.
2895 @item AC_PROG_CXX
2896 This is required if any C++ source is included.  @xref{Particular
2897 Programs, , Particular Program Checks, autoconf, The Autoconf Manual}.
2899 @item AC_PROG_OBJC
2900 This is required if any Objective C source is included.  @xref{Particular
2901 Programs, , Particular Program Checks, autoconf, The Autoconf Manual}.
2903 @item AC_PROG_F77
2904 This is required if any Fortran 77 source is included.  This macro is
2905 distributed with Autoconf version 2.13 and later.  @xref{Particular
2906 Programs, , Particular Program Checks, autoconf, The Autoconf Manual}.
2908 @item AC_F77_LIBRARY_LDFLAGS
2909 This is required for programs and shared libraries that are a mixture of
2910 languages that include Fortran 77 (@pxref{Mixing Fortran 77 With C and
2911 C++}).  @xref{Macros, , Autoconf macros supplied with Automake}.
2913 @item AC_FC_SRCEXT
2914 Automake will add the flags computed by @code{AC_FC_SRCEXT} to compilation
2915 of files with the respective source extension (@pxref{Fortran Compiler, ,
2916 Fortran Compiler Characteristics, autoconf, The Autoconf Manual}).
2918 @item AC_PROG_FC
2919 This is required if any Fortran 90/95 source is included.  This macro is
2920 distributed with Autoconf version 2.58 and later.  @xref{Particular
2921 Programs, , Particular Program Checks, autoconf, The Autoconf Manual}.
2923 @item AC_PROG_LIBTOOL
2924 Automake will turn on processing for @command{libtool} (@pxref{Top, ,
2925 Introduction, libtool, The Libtool Manual}).
2927 @item AC_PROG_YACC
2928 @vindex YACC
2929 If a Yacc source file is seen, then you must either use this macro or
2930 define the variable @code{YACC} in @file{configure.ac}.  The former is
2931 preferred (@pxref{Particular Programs, , Particular Program Checks,
2932 autoconf, The Autoconf Manual}).
2934 @item AC_PROG_LEX
2935 If a Lex source file is seen, then this macro must be used.
2936 @xref{Particular Programs, , Particular Program Checks, autoconf, The
2937 Autoconf Manual}.
2939 @item AC_REQUIRE_AUX_FILE
2940 For each @code{AC_REQUIRE_AUX_FILE([@var{file}])},
2941 @command{automake} will ensure that @file{@var{file}} exists in the
2942 aux directory, and will complain otherwise.  It
2943 will also automatically distribute the file.  This macro should be
2944 used by third-party Autoconf macros that require some supporting
2945 files in the aux directory specified with @code{AC_CONFIG_AUX_DIR}
2946 above.  @xref{Input, , Finding @command{configure} Input, autoconf,
2947 The Autoconf Manual}.
2949 @item AC_SUBST
2950 The first argument is automatically defined as a variable in each
2951 generated @file{Makefile.in}, unless @code{AM_SUBST_NOTMAKE} is also
2952 used for this variable.  @xref{Setting Output Variables, , Setting
2953 Output Variables, autoconf, The Autoconf Manual}.
2955 For every substituted variable @var{var}, @command{automake} will add
2956 a line @code{@var{var} = @var{value}} to each @file{Makefile.in} file.
2957 Many Autoconf macros invoke @code{AC_SUBST} to set output variables
2958 this way, e.g., @code{AC_PATH_XTRA} defines @code{X_CFLAGS} and
2959 @code{X_LIBS}.  Thus, you can access these variables as
2960 @code{$(X_CFLAGS)} and @code{$(X_LIBS)} in any @file{Makefile.am}
2961 if @code{AC_PATH_XTRA} is called.
2963 @item AM_C_PROTOTYPES
2964 This is required when using the obsolete de-ANSI-fication feature; see
2965 @ref{ANSI}.
2967 @item AM_CONDITIONAL
2968 This introduces an Automake conditional (@pxref{Conditionals}).
2970 @item AM_COND_IF
2971 This macro allows @code{automake} to detect subsequent access within
2972 @file{configure.ac} to a conditional previously introduced with
2973 @code{AM_CONDITIONAL}, thus enabling conditional @code{AC_CONFIG_FILES}
2974 (@pxref{Usage of Conditionals}).
2976 @item AM_GNU_GETTEXT
2977 This macro is required for packages that use GNU gettext
2978 (@pxref{gettext}).  It is distributed with gettext.  If Automake sees
2979 this macro it ensures that the package meets some of gettext's
2980 requirements.
2982 @item AM_GNU_GETTEXT_INTL_SUBDIR
2983 This macro specifies that the @file{intl/} subdirectory is to be built,
2984 even if the @code{AM_GNU_GETTEXT} macro was invoked with a first argument
2985 of @samp{external}.
2987 @item AM_MAINTAINER_MODE(@ovar{default-mode})
2988 @opindex --enable-maintainer-mode
2989 @opindex --disable-maintainer-mode
2990 This macro adds an @option{--enable-maintainer-mode} option to
2991 @command{configure}.  If this is used, @command{automake} will cause
2992 ``maintainer-only'' rules to be turned off by default in the
2993 generated @file{Makefile.in}s, unless @var{default-mode} is
2994 @samp{enable}.  This macro defines the @code{MAINTAINER_MODE}
2995 conditional, which you can use in your own @file{Makefile.am}.
2996 @xref{maintainer-mode}.
2998 @item AM_SUBST_NOTMAKE(@var{var})
2999 Prevent Automake from defining a variable @var{var}, even if it is
3000 substituted by @command{config.status}.  Normally, Automake defines a
3001 @command{make} variable for each @command{configure} substitution,
3002 i.e., for each @code{AC_SUBST([@var{var}])}.  This macro prevents that
3003 definition from Automake.  If @code{AC_SUBST} has not been called
3004 for this variable, then @code{AM_SUBST_NOTMAKE} has no effects.
3005 Preventing variable definitions may be useful for substitution of
3006 multi-line values, where @code{@var{var} = @@@var{value}@@} might yield
3007 unintended results.
3009 @item m4_include
3010 Files included by @file{configure.ac} using this macro will be
3011 detected by Automake and automatically distributed.  They will also
3012 appear as dependencies in @file{Makefile} rules.
3014 @code{m4_include} is seldom used by @file{configure.ac} authors, but
3015 can appear in @file{aclocal.m4} when @command{aclocal} detects that
3016 some required macros come from files local to your package (as opposed
3017 to macros installed in a system-wide directory, @pxref{Invoking
3018 aclocal}).
3020 @end ftable
3023 @node Invoking aclocal
3024 @section Auto-generating aclocal.m4
3026 @cindex Invoking @command{aclocal}
3027 @cindex @command{aclocal}, Invoking
3029 Automake includes a number of Autoconf macros that can be used in
3030 your package (@pxref{Macros}); some of them are actually required by
3031 Automake in certain situations.  These macros must be defined in your
3032 @file{aclocal.m4}; otherwise they will not be seen by
3033 @command{autoconf}.
3035 The @command{aclocal} program will automatically generate
3036 @file{aclocal.m4} files based on the contents of @file{configure.ac}.
3037 This provides a convenient way to get Automake-provided macros,
3038 without having to search around.  The @command{aclocal} mechanism
3039 allows other packages to supply their own macros (@pxref{Extending
3040 aclocal}).  You can also use it to maintain your own set of custom
3041 macros (@pxref{Local Macros}).
3043 At startup, @command{aclocal} scans all the @file{.m4} files it can
3044 find, looking for macro definitions (@pxref{Macro Search Path}).  Then
3045 it scans @file{configure.ac}.  Any mention of one of the macros found
3046 in the first step causes that macro, and any macros it in turn
3047 requires, to be put into @file{aclocal.m4}.
3049 @emph{Putting} the file that contains the macro definition into
3050 @file{aclocal.m4} is usually done by copying the entire text of this
3051 file, including unused macro definitions as well as both @samp{#} and
3052 @samp{dnl} comments.  If you want to make a comment that will be
3053 completely ignored by @command{aclocal}, use @samp{##} as the comment
3054 leader.
3056 When a file selected by @command{aclocal} is located in a subdirectory
3057 specified as a relative search path with @command{aclocal}'s @option{-I}
3058 argument, @command{aclocal} assumes the file belongs to the package
3059 and uses @code{m4_include} instead of copying it into
3060 @file{aclocal.m4}.  This makes the package smaller, eases dependency
3061 tracking, and cause the file to be distributed automatically.
3062 (@xref{Local Macros}, for an example.)  Any macro that is found in a
3063 system-wide directory, or via an absolute search path will be copied.
3064 So use @samp{-I `pwd`/reldir} instead of @samp{-I reldir} whenever
3065 some relative directory need to be considered outside the package.
3067 The contents of @file{acinclude.m4}, if this file exists, are also
3068 automatically included in @file{aclocal.m4}.  We recommend against
3069 using @file{acinclude.m4} in new packages (@pxref{Local Macros}).
3071 @vindex AUTOM4TE
3072 @cindex autom4te
3073 While computing @file{aclocal.m4}, @command{aclocal} runs
3074 @command{autom4te} (@pxref{Using autom4te, , Using @command{Autom4te},
3075 autoconf, The Autoconf Manual}) in order to trace the macros that are
3076 really used, and omit from @file{aclocal.m4} all macros that are
3077 mentioned but otherwise unexpanded (this can happen when a macro is
3078 called conditionally).  @command{autom4te} is expected to be in the
3079 @env{PATH}, just as @command{autoconf}.  Its location can be
3080 overridden using the @env{AUTOM4TE} environment variable.
3082 @menu
3083 * aclocal Options::             Options supported by aclocal
3084 * Macro Search Path::           How aclocal finds .m4 files
3085 * Extending aclocal::           Writing your own aclocal macros
3086 * Local Macros::                Organizing local macros
3087 * Serials::                     Serial lines in Autoconf macros
3088 * Future of aclocal::           aclocal's scheduled death
3089 @end menu
3091 @node aclocal Options
3092 @subsection aclocal Options
3094 @cindex @command{aclocal}, Options
3095 @cindex Options, @command{aclocal}
3097 @command{aclocal} accepts the following options:
3099 @table @code
3100 @item --acdir=@var{dir}
3101 @opindex --acdir
3102 Look for the macro files in @var{dir} instead of the installation
3103 directory.  This is typically used for debugging.
3105 @item --diff[=@var{command}]
3106 @opindex --diff
3107 Run @var{command} on M4 file that would be installed or overwritten
3108 by @option{--install}.  The default @var{command} is @samp{diff -u}.
3109 This option implies @option{--install} and @option{--dry-run}.
3111 @item --dry-run
3112 @opindex --dry-run
3113 Do not actually overwrite (or create) @file{aclocal.m4} and M4
3114 files installed by @option{--install}.
3116 @item --help
3117 @opindex --help
3118 Print a summary of the command line options and exit.
3120 @item -I @var{dir}
3121 @opindex -I
3122 Add the directory @var{dir} to the list of directories searched for
3123 @file{.m4} files.
3125 @item --install
3126 @opindex --install
3127 Install system-wide third-party macros into the first directory
3128 specified with @samp{-I @var{dir}} instead of copying them in the
3129 output file.
3131 @cindex serial number and @option{--install}
3132 When this option is used, and only when this option is used,
3133 @command{aclocal} will also honor @samp{#serial @var{NUMBER}} lines
3134 that appear in macros: an M4 file is ignored if there exists another
3135 M4 file with the same basename and a greater serial number in the
3136 search path (@pxref{Serials}).
3138 @item --force
3139 @opindex --force
3140 Always overwrite the output file.  The default is to overwrite the output
3141 file only when really needed, i.e., when its contents changes or if one
3142 of its dependencies is younger.
3144 This option forces the update of @file{aclocal.m4} (or the file
3145 specified with @file{--output} below) and only this file, it has
3146 absolutely no influence on files that may need to be installed by
3147 @option{--install}.
3149 @item --output=@var{file}
3150 @opindex --output
3151 Cause the output to be put into @var{file} instead of @file{aclocal.m4}.
3153 @item --print-ac-dir
3154 @opindex --print-ac-dir
3155 Prints the name of the directory that @command{aclocal} will search to
3156 find third-party @file{.m4} files.  When this option is given, normal
3157 processing is suppressed.  This option can be used by a package to
3158 determine where to install a macro file.
3160 @item --verbose
3161 @opindex --verbose
3162 Print the names of the files it examines.
3164 @item --version
3165 @opindex --version
3166 Print the version number of Automake and exit.
3168 @item -W CATEGORY
3169 @item --warnings=@var{category}
3170 @opindex -W
3171 @opindex --warnings
3172 Output warnings falling in @var{category}.  @var{category} can be
3173 one of:
3174 @table @code
3175 @item syntax
3176 dubious syntactic constructs, underquoted macros, unused macros, etc.
3177 @item unsupported
3178 unknown macros
3179 @item all
3180 all the warnings, this is the default
3181 @item none
3182 turn off all the warnings
3183 @item error
3184 treat warnings as errors
3185 @end table
3187 All warnings are output by default.
3189 @vindex WARNINGS
3190 The environment variable @env{WARNINGS} is honored in the same
3191 way as it is for @command{automake} (@pxref{Invoking Automake}).
3193 @end table
3195 @node Macro Search Path
3196 @subsection Macro Search Path
3198 @cindex Macro search path
3199 @cindex @command{aclocal} search path
3201 By default, @command{aclocal} searches for @file{.m4} files in the following
3202 directories, in this order:
3204 @table @code
3205 @item @var{acdir-APIVERSION}
3206 This is where the @file{.m4} macros distributed with Automake itself
3207 are stored.  @var{APIVERSION} depends on the Automake release used;
3208 for Automake 1.6.x, @var{APIVERSION} = @code{1.6}.
3210 @item @var{acdir}
3211 This directory is intended for third party @file{.m4} files, and is
3212 configured when @command{automake} itself is built.  This is
3213 @file{@@datadir@@/aclocal/}, which typically
3214 expands to @file{$@{prefix@}/share/aclocal/}.  To find the compiled-in
3215 value of @var{acdir}, use the @option{--print-ac-dir} option
3216 (@pxref{aclocal Options}).
3217 @end table
3219 As an example, suppose that @command{automake-1.6.2} was configured with
3220 @option{--prefix=@-/usr/local}.  Then, the search path would be:
3222 @enumerate
3223 @item @file{/usr/local/share/aclocal-1.6/}
3224 @item @file{/usr/local/share/aclocal/}
3225 @end enumerate
3227 As explained in (@pxref{aclocal Options}), there are several options that
3228 can be used to change or extend this search path.
3230 @subsubheading Modifying the Macro Search Path: @option{--acdir}
3232 The most erroneous option to modify the search path is
3233 @option{--acdir=@var{dir}}, which changes default directory and
3234 drops the @var{APIVERSION} directory.  For example, if one specifies
3235 @samp{--acdir=/opt/private/}, then the search path becomes:
3237 @enumerate
3238 @item @file{/opt/private/}
3239 @end enumerate
3241 This option, @option{--acdir}, is intended for use by the internal
3242 Automake test suite only; it is not ordinarily needed by end-users.
3244 @subsubheading Modifying the Macro Search Path: @samp{-I @var{dir}}
3246 Any extra directories specified using @option{-I} options
3247 (@pxref{aclocal Options}) are @emph{prepended} to this search list.  Thus,
3248 @samp{aclocal -I /foo -I /bar} results in the following search path:
3250 @enumerate
3251 @item @file{/foo}
3252 @item @file{/bar}
3253 @item @var{acdir}-@var{APIVERSION}
3254 @item @var{acdir}
3255 @end enumerate
3257 @subsubheading Modifying the Macro Search Path: @file{dirlist}
3258 @cindex @file{dirlist}
3260 There is a third mechanism for customizing the search path.  If a
3261 @file{dirlist} file exists in @var{acdir}, then that file is assumed to
3262 contain a list of directory patterns, one per line.  @command{aclocal}
3263 expands these patterns to directory names, and adds them to the search
3264 list @emph{after} all other directories.  @file{dirlist} entries may
3265 use shell wildcards such as @samp{*}, @samp{?}, or @code{[...]}.
3267 For example, suppose
3268 @file{@var{acdir}/dirlist} contains the following:
3270 @example
3271 /test1
3272 /test2
3273 /test3*
3274 @end example
3276 @noindent
3277 and that @command{aclocal} was called with the @samp{-I /foo -I /bar} options.
3278 Then, the search path would be
3280 @c @code looks better than @file here
3281 @enumerate
3282 @item @code{/foo}
3283 @item @code{/bar}
3284 @item @var{acdir}-@var{APIVERSION}
3285 @item @var{acdir}
3286 @item @code{/test1}
3287 @item @code{/test2}
3288 @end enumerate
3290 @noindent
3291 and all directories with path names starting with @code{/test3}.
3293 If the @option{--acdir=@var{dir}} option is used, then @command{aclocal}
3294 will search for the @file{dirlist} file in @var{dir}.  In the
3295 @samp{--acdir=/opt/private/} example above, @command{aclocal} would look
3296 for @file{/opt/private/dirlist}.  Again, however, the @option{--acdir}
3297 option is intended for use by the internal Automake test suite only;
3298 @option{--acdir} is not ordinarily needed by end-users.
3300 @file{dirlist} is useful in the following situation: suppose that
3301 @command{automake} version @code{1.6.2} is installed with
3302 @samp{--prefix=/usr} by the system vendor.  Thus, the default search
3303 directories are
3305 @c @code looks better than @file here
3306 @enumerate
3307 @item @code{/usr/share/aclocal-1.6/}
3308 @item @code{/usr/share/aclocal/}
3309 @end enumerate
3311 However, suppose further that many packages have been manually
3312 installed on the system, with $prefix=/usr/local, as is typical.  In
3313 that case, many of these ``extra'' @file{.m4} files are in
3314 @file{/usr/local/share/aclocal}.  The only way to force
3315 @file{/usr/bin/aclocal} to find these ``extra'' @file{.m4} files is to
3316 always call @samp{aclocal -I /usr/local/share/aclocal}.  This is
3317 inconvenient.  With @file{dirlist}, one may create a file
3318 @file{/usr/share/aclocal/dirlist} containing only the single line
3320 @example
3321 /usr/local/share/aclocal
3322 @end example
3324 Now, the ``default'' search path on the affected system is
3326 @c @code looks better than @file here
3327 @enumerate
3328 @item @code{/usr/share/aclocal-1.6/}
3329 @item @code{/usr/share/aclocal/}
3330 @item @code{/usr/local/share/aclocal/}
3331 @end enumerate
3333 without the need for @option{-I} options; @option{-I} options can be reserved
3334 for project-specific needs (@file{my-source-dir/m4/}), rather than
3335 using it to work around local system-dependent tool installation
3336 directories.
3338 Similarly, @file{dirlist} can be handy if you have installed a local
3339 copy of Automake in your account and want @command{aclocal} to look for
3340 macros installed at other places on the system.
3343 @node Extending aclocal
3344 @subsection Writing your own aclocal macros
3346 @cindex @command{aclocal}, extending
3347 @cindex Extending @command{aclocal}
3349 The @command{aclocal} program doesn't have any built-in knowledge of any
3350 macros, so it is easy to extend it with your own macros.
3352 This can be used by libraries that want to supply their own Autoconf
3353 macros for use by other programs.  For instance, the @command{gettext}
3354 library supplies a macro @code{AM_GNU_GETTEXT} that should be used by
3355 any package using @command{gettext}.  When the library is installed, it
3356 installs this macro so that @command{aclocal} will find it.
3358 A macro file's name should end in @file{.m4}.  Such files should be
3359 installed in @file{$(datadir)/aclocal}.  This is as simple as writing:
3361 @example
3362 aclocaldir = $(datadir)/aclocal
3363 aclocal_DATA = mymacro.m4 myothermacro.m4
3364 @end example
3366 @noindent
3367 Please do use @file{$(datadir)/aclocal}, and not something based on
3368 the result of @samp{aclocal --print-ac-dir}.  @xref{Hard-Coded Install
3369 Paths}, for arguments.
3371 A file of macros should be a series of properly quoted
3372 @code{AC_DEFUN}'s (@pxref{Macro Definitions, , , autoconf, The
3373 Autoconf Manual}).  The @command{aclocal} programs also understands
3374 @code{AC_REQUIRE} (@pxref{Prerequisite Macros, , , autoconf, The
3375 Autoconf Manual}), so it is safe to put each macro in a separate file.
3376 Each file should have no side effects but macro definitions.
3377 Especially, any call to @code{AC_PREREQ} should be done inside the
3378 defined macro, not at the beginning of the file.
3380 @cindex underquoted @code{AC_DEFUN}
3381 @acindex AC_DEFUN
3382 @acindex AC_PREREQ
3384 Starting with Automake 1.8, @command{aclocal} will warn about all
3385 underquoted calls to @code{AC_DEFUN}.  We realize this will annoy a
3386 lot of people, because @command{aclocal} was not so strict in the past
3387 and many third party macros are underquoted; and we have to apologize
3388 for this temporary inconvenience.  The reason we have to be stricter
3389 is that a future implementation of @command{aclocal} (@pxref{Future of
3390 aclocal}) will have to temporarily include all these third party
3391 @file{.m4} files, maybe several times, including even files that are
3392 not actually needed.  Doing so should alleviate many problems of the
3393 current implementation, however it requires a stricter style from the
3394 macro authors.  Hopefully it is easy to revise the existing macros.
3395 For instance,
3396 @example
3397 # bad style
3398 AC_PREREQ(2.57)
3399 AC_DEFUN(AX_FOOBAR,
3400 [AC_REQUIRE([AX_SOMETHING])dnl
3401 AX_FOO
3402 AX_BAR
3404 @end example
3405 @noindent
3406 should be rewritten as
3407 @example
3408 AC_DEFUN([AX_FOOBAR],
3409 [AC_PREREQ([2.57])dnl
3410 AC_REQUIRE([AX_SOMETHING])dnl
3411 AX_FOO
3412 AX_BAR
3414 @end example
3416 Wrapping the @code{AC_PREREQ} call inside the macro ensures that
3417 Autoconf 2.57 will not be required if @code{AX_FOOBAR} is not actually
3418 used.  Most importantly, quoting the first argument of @code{AC_DEFUN}
3419 allows the macro to be redefined or included twice (otherwise this
3420 first argument would be expanded during the second definition).  For
3421 consistency we like to quote even arguments such as @code{2.57} that
3422 do not require it.
3424 If you have been directed here by the @command{aclocal} diagnostic but
3425 are not the maintainer of the implicated macro, you will want to
3426 contact the maintainer of that macro.  Please make sure you have the
3427 latest version of the macro and that the problem hasn't already been
3428 reported before doing so: people tend to work faster when they aren't
3429 flooded by mails.
3431 Another situation where @command{aclocal} is commonly used is to
3432 manage macros that are used locally by the package, @ref{Local
3433 Macros}.
3435 @node Local Macros
3436 @subsection Handling Local Macros
3438 Feature tests offered by Autoconf do not cover all needs.  People
3439 often have to supplement existing tests with their own macros, or
3440 with third-party macros.
3442 There are two ways to organize custom macros in a package.
3444 The first possibility (the historical practice) is to list all your
3445 macros in @file{acinclude.m4}.  This file will be included in
3446 @file{aclocal.m4} when you run @command{aclocal}, and its macro(s) will
3447 henceforth be visible to @command{autoconf}.  However if it contains
3448 numerous macros, it will rapidly become difficult to maintain, and it
3449 will be almost impossible to share macros between packages.
3451 @vindex ACLOCAL_AMFLAGS
3452 The second possibility, which we do recommend, is to write each macro
3453 in its own file and gather all these files in a directory.  This
3454 directory is usually called @file{m4/}.  To build @file{aclocal.m4},
3455 one should therefore instruct @command{aclocal} to scan @file{m4/}.
3456 From the command line, this is done with @samp{aclocal -I m4}.  The
3457 top-level @file{Makefile.am} should also be updated to define
3459 @example
3460 ACLOCAL_AMFLAGS = -I m4
3461 @end example
3463 @code{ACLOCAL_AMFLAGS} contains options to pass to @command{aclocal}
3464 when @file{aclocal.m4} is to be rebuilt by @command{make}.  This line is
3465 also used by @command{autoreconf} (@pxref{autoreconf Invocation, ,
3466 Using @command{autoreconf} to Update @file{configure} Scripts,
3467 autoconf, The Autoconf Manual}) to run @command{aclocal} with suitable
3468 options, or by @command{autopoint} (@pxref{autopoint Invocation, ,
3469 Invoking the @command{autopoint} Program, gettext, GNU gettext tools})
3470 and @command{gettextize} (@pxref{gettextize Invocation, , Invoking the
3471 @command{gettextize} Program, gettext, GNU gettext tools}) to locate
3472 the place where Gettext's macros should be installed.  So even if you
3473 do not really care about the rebuild rules, you should define
3474 @code{ACLOCAL_AMFLAGS}.
3476 When @samp{aclocal -I m4} is run, it will build an @file{aclocal.m4}
3477 that @code{m4_include}s any file from @file{m4/} that defines a
3478 required macro.  Macros not found locally will still be searched in
3479 system-wide directories, as explained in @ref{Macro Search Path}.
3481 Custom macros should be distributed for the same reason that
3482 @file{configure.ac} is: so that other people have all the sources of
3483 your package if they want to work on it.  Actually, this distribution
3484 happens automatically because all @code{m4_include}d files are
3485 distributed.
3487 However there is no consensus on the distribution of third-party
3488 macros that your package may use.  Many libraries install their own
3489 macro in the system-wide @command{aclocal} directory (@pxref{Extending
3490 aclocal}).  For instance, Guile ships with a file called
3491 @file{guile.m4} that contains the macro @code{GUILE_FLAGS} that can
3492 be used to define setup compiler and linker flags appropriate for
3493 using Guile.  Using @code{GUILE_FLAGS} in @file{configure.ac} will
3494 cause @command{aclocal} to copy @file{guile.m4} into
3495 @file{aclocal.m4}, but as @file{guile.m4} is not part of the project,
3496 it will not be distributed.  Technically, that means a user who
3497 needs to rebuild @file{aclocal.m4} will have to install Guile first.
3498 This is probably OK, if Guile already is a requirement to build the
3499 package.  However, if Guile is only an optional feature, or if your
3500 package might run on architectures where Guile cannot be installed,
3501 this requirement will hinder development.  An easy solution is to copy
3502 such third-party macros in your local @file{m4/} directory so they get
3503 distributed.
3505 Since Automake 1.10, @command{aclocal} offers an option to copy these
3506 system-wide third-party macros in your local macro directory, solving
3507 the above problem.  Simply use:
3509 @example
3510 ACLOCAL_AMFLAGS = -I m4 --install
3511 @end example
3513 @noindent
3514 With this setup, system-wide macros will be copied to @file{m4/}
3515 the first time you run @command{autoreconf}.  Then the locally
3516 installed macros will have precedence over the system-wide installed
3517 macros each time @command{aclocal} is run again.
3519 One reason why you should keep @option{--install} in the flags even
3520 after the first run is that when you later edit @file{configure.ac}
3521 and depend on a new macro, this macro will be installed in your
3522 @file{m4/} automatically.  Another one is that serial numbers
3523 (@pxref{Serials}) can be used to update the macros in your source tree
3524 automatically when new system-wide versions are installed.  A serial
3525 number should be a single line of the form
3527 @example
3528 #serial @var{NNN}
3529 @end example
3531 @noindent
3532 where @var{NNN} contains only digits and dots.  It should appear in
3533 the M4 file before any macro definition.  It is a good practice to
3534 maintain a serial number for each macro you distribute, even if you do
3535 not use the @option{--install} option of @command{aclocal}: this allows
3536 other people to use it.
3539 @node Serials
3540 @subsection Serial Numbers
3541 @cindex serial numbers in macros
3542 @cindex macro serial numbers
3543 @cindex @code{#serial} syntax
3544 @cindex @command{aclocal} and serial numbers
3546 Because third-party macros defined in @file{*.m4} files are naturally
3547 shared between multiple projects, some people like to version them.
3548 This makes it easier to tell which of two M4 files is newer.  Since at
3549 least 1996, the tradition is to use a @samp{#serial} line for this.
3551 A serial number should be a single line of the form
3553 @example
3554 # serial @var{version}
3555 @end example
3557 @noindent
3558 where @var{version} is a version number containing only digits and
3559 dots.  Usually people use a single integer, and they increment it each
3560 time they change the macro (hence the name of ``serial'').  Such a
3561 line should appear in the M4 file before any macro definition.
3563 The @samp{#} must be the first character on the line,
3564 and it is OK to have extra words after the version, as in
3566 @example
3567 #serial @var{version} @var{garbage}
3568 @end example
3570 Normally these serial numbers are completely ignored by
3571 @command{aclocal} and @command{autoconf}, like any genuine comment.
3572 However when using @command{aclocal}'s @option{--install} feature, these
3573 serial numbers will modify the way @command{aclocal} selects the
3574 macros to install in the package: if two files with the same basename
3575 exist in your search path, and if at least one of them uses a
3576 @samp{#serial} line, @command{aclocal} will ignore the file that has
3577 the older @samp{#serial} line (or the file that has none).
3579 Note that a serial number applies to a whole M4 file, not to any macro
3580 it contains.  A file can contains multiple macros, but only one
3581 serial.
3583 Here is a use case that illustrates the use of @option{--install} and
3584 its interaction with serial numbers.  Let's assume we maintain a
3585 package called MyPackage, the @file{configure.ac} of which requires a
3586 third-party macro @code{AX_THIRD_PARTY} defined in
3587 @file{/usr/share/aclocal/thirdparty.m4} as follows:
3589 @example
3590 # serial 1
3591 AC_DEFUN([AX_THIRD_PARTY], [...])
3592 @end example
3594 MyPackage uses an @file{m4/} directory to store local macros as
3595 explained in @ref{Local Macros}, and has
3597 @example
3598 ACLOCAL_AMFLAGS = -I m4 --install
3599 @end example
3601 @noindent
3602 in its top-level @file{Makefile.am}.
3604 Initially the @file{m4/} directory is empty.  The first time we run
3605 @command{autoreconf}, it will fetch the options to pass to
3606 @command{aclocal} in @file{Makefile.am}, and run @samp{aclocal -I m4
3607 --install}.  @command{aclocal} will notice that
3609 @itemize @bullet
3610 @item
3611 @file{configure.ac} uses @code{AX_THIRD_PARTY}
3612 @item
3613 No local macros define @code{AX_THIRD_PARTY}
3614 @item
3615 @file{/usr/share/aclocal/thirdparty.m4} defines @code{AX_THIRD_PARTY}
3616 with serial 1.
3617 @end itemize
3619 @noindent
3620 Because @file{/usr/share/aclocal/thirdparty.m4} is a system-wide macro
3621 and @command{aclocal} was given the @option{--install} option, it will
3622 copy this file in @file{m4/thirdparty.m4}, and output an
3623 @file{aclocal.m4} that contains @samp{m4_include([m4/thirdparty.m4])}.
3625 The next time @samp{aclocal -I m4 --install} is run (either via
3626 @command{autoreconf}, by hand, or from the @file{Makefile} rebuild
3627 rules) something different happens.  @command{aclocal} notices that
3629 @itemize @bullet
3630 @item
3631 @file{configure.ac} uses @code{AX_THIRD_PARTY}
3632 @item
3633 @file{m4/thirdparty.m4} defines @code{AX_THIRD_PARTY}
3634 with serial 1.
3635 @item
3636 @file{/usr/share/aclocal/thirdparty.m4} defines @code{AX_THIRD_PARTY}
3637 with serial 1.
3638 @end itemize
3640 @noindent
3641 Because both files have the same serial number, @command{aclocal} uses
3642 the first it found in its search path order (@pxref{Macro Search
3643 Path}).  @command{aclocal} therefore ignores
3644 @file{/usr/share/aclocal/thirdparty.m4} and outputs an
3645 @file{aclocal.m4} that contains @samp{m4_include([m4/thirdparty.m4])}.
3647 Local directories specified with @option{-I} are always searched before
3648 system-wide directories, so a local file will always be preferred to
3649 the system-wide file in case of equal serial numbers.
3651 Now suppose the system-wide third-party macro is changed.  This can
3652 happen if the package installing this macro is updated.  Let's suppose
3653 the new macro has serial number 2.  The next time @samp{aclocal -I m4
3654 --install} is run the situation is the following:
3656 @itemize @bullet
3657 @item
3658 @file{configure.ac} uses @code{AX_THIRD_PARTY}
3659 @item
3660 @file{m4/thirdparty.m4} defines @code{AX_THIRD_PARTY}
3661 with serial 1.
3662 @item
3663 @file{/usr/share/aclocal/thirdparty.m4} defines @code{AX_THIRD_PARTY}
3664 with serial 2.
3665 @end itemize
3667 @noindent
3668 When @command{aclocal} sees a greater serial number, it immediately
3669 forgets anything it knows from files that have the same basename and a
3670 smaller serial number.  So after it has found
3671 @file{/usr/share/aclocal/thirdparty.m4} with serial 2,
3672 @command{aclocal} will proceed as if it had never seen
3673 @file{m4/thirdparty.m4}.  This brings us back to a situation similar
3674 to that at the beginning of our example, where no local file defined
3675 the macro.  @command{aclocal} will install the new version of the
3676 macro in @file{m4/thirdparty.m4}, in this case overriding the old
3677 version.  MyPackage just had its macro updated as a side effect of
3678 running @command{aclocal}.
3680 If you are leery of letting @command{aclocal} update your local macro,
3681 you can run @samp{aclocal -I m4 --diff} to review the changes
3682 @samp{aclocal -I m4 --install} would perform on these macros.
3684 Finally, note that the @option{--force} option of @command{aclocal} has
3685 absolutely no effect on the files installed by @option{--install}.  For
3686 instance, if you have modified your local macros, do not expect
3687 @option{--install --force} to replace the local macros by their
3688 system-wide versions.  If you want to do so, simply erase the local
3689 macros you want to revert, and run @samp{aclocal -I m4 --install}.
3692 @node Future of aclocal
3693 @subsection The Future of @command{aclocal}
3694 @cindex @command{aclocal}'s scheduled death
3696 @command{aclocal} is expected to disappear.  This feature really
3697 should not be offered by Automake.  Automake should focus on
3698 generating @file{Makefile}s; dealing with M4 macros really is
3699 Autoconf's job.  The fact that some people install Automake just to use
3700 @command{aclocal}, but do not use @command{automake} otherwise is an
3701 indication of how that feature is misplaced.
3703 The new implementation will probably be done slightly differently.
3704 For instance, it could enforce the @file{m4/}-style layout discussed in
3705 @ref{Local Macros}.
3707 We have no idea when and how this will happen.  This has been
3708 discussed several times in the past, but someone still has to commit
3709 to that non-trivial task.
3711 From the user point of view, @command{aclocal}'s removal might turn
3712 out to be painful.  There is a simple precaution that you may take to
3713 make that switch more seamless: never call @command{aclocal} yourself.
3714 Keep this guy under the exclusive control of @command{autoreconf} and
3715 Automake's rebuild rules.  Hopefully you won't need to worry about
3716 things breaking, when @command{aclocal} disappears, because everything
3717 will have been taken care of.  If otherwise you used to call
3718 @command{aclocal} directly yourself or from some script, you will
3719 quickly notice the change.
3721 Many packages come with a script called @file{bootstrap.sh} or
3722 @file{autogen.sh}, that will just call @command{aclocal},
3723 @command{libtoolize}, @command{gettextize} or @command{autopoint},
3724 @command{autoconf}, @command{autoheader}, and @command{automake} in
3725 the right order.  Actually this is precisely what @command{autoreconf}
3726 can do for you.  If your package has such a @file{bootstrap.sh} or
3727 @file{autogen.sh} script, consider using @command{autoreconf}.  That
3728 should simplify its logic a lot (less things to maintain, yum!), it's
3729 even likely you will not need the script anymore, and more to the point
3730 you will not call @command{aclocal} directly anymore.
3732 For the time being, third-party packages should continue to install
3733 public macros into @file{/usr/share/aclocal/}.  If @command{aclocal}
3734 is replaced by another tool it might make sense to rename the
3735 directory, but supporting @file{/usr/share/aclocal/} for backward
3736 compatibility should be really easy provided all macros are properly
3737 written (@pxref{Extending aclocal}).
3741 @node Macros
3742 @section Autoconf macros supplied with Automake
3744 Automake ships with several Autoconf macros that you can use from your
3745 @file{configure.ac}.  When you use one of them it will be included by
3746 @command{aclocal} in @file{aclocal.m4}.
3748 @menu
3749 * Public Macros::               Macros that you can use.
3750 * Obsolete Macros::             Macros that you should stop using.
3751 * Private Macros::              Macros that you should not use.
3752 @end menu
3754 @c consider generating the following subsections automatically from m4 files.
3756 @node Public Macros
3757 @subsection Public Macros
3759 @table @code
3761 @item AM_ENABLE_MULTILIB
3762 @acindex AM_ENABLE_MULTILIB
3763 This is used when a ``multilib'' library is being built.  The first
3764 optional argument is the name of the @file{Makefile} being generated; it
3765 defaults to @samp{Makefile}.  The second optional argument is used to find
3766 the top source directory; it defaults to the empty string (generally
3767 this should not be used unless you are familiar with the internals).
3768 @xref{Multilibs}.
3770 @item AM_INIT_AUTOMAKE([OPTIONS])
3771 @itemx AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
3772 @acindex AM_INIT_AUTOMAKE
3773 Runs many macros required for proper operation of the generated Makefiles.
3775 @vindex AUTOMAKE_OPTIONS
3776 This macro has two forms, the first of which is preferred.
3777 In this form, @code{AM_INIT_AUTOMAKE} is called with a
3778 single argument: a space-separated list of Automake options that should
3779 be applied to every @file{Makefile.am} in the tree.  The effect is as if
3780 each option were listed in @code{AUTOMAKE_OPTIONS} (@pxref{Options}).
3782 @acindex AC_INIT
3783 The second, deprecated, form of @code{AM_INIT_AUTOMAKE} has two required
3784 arguments: the package and the version number.  This form is
3785 obsolete because the @var{package} and @var{version} can be obtained
3786 from Autoconf's @code{AC_INIT} macro (which itself has an old and a new
3787 form).
3789 If your @file{configure.ac} has:
3791 @example
3792 AC_INIT([src/foo.c])
3793 AM_INIT_AUTOMAKE([mumble], [1.5])
3794 @end example
3796 @noindent
3797 you can modernize it as follows:
3799 @example
3800 AC_INIT([mumble], [1.5])
3801 AC_CONFIG_SRCDIR([src/foo.c])
3802 AM_INIT_AUTOMAKE
3803 @end example
3805 Note that if you're upgrading your @file{configure.ac} from an earlier
3806 version of Automake, it is not always correct to simply move the
3807 package and version arguments from @code{AM_INIT_AUTOMAKE} directly to
3808 @code{AC_INIT}, as in the example above.  The first argument to
3809 @code{AC_INIT} should be the name of your package (e.g., @samp{GNU
3810 Automake}), not the tarball name (e.g., @samp{automake}) that you used
3811 to pass to @code{AM_INIT_AUTOMAKE}.  Autoconf tries to derive a
3812 tarball name from the package name, which should work for most but not
3813 all package names.  (If it doesn't work for yours, you can use the
3814 four-argument form of @code{AC_INIT} to provide the tarball name
3815 explicitly).
3817 @cindex @code{PACKAGE}, prevent definition
3818 @cindex @code{VERSION}, prevent definition
3819 @opindex no-define
3820 By default this macro @code{AC_DEFINE}'s @code{PACKAGE} and
3821 @code{VERSION}.  This can be avoided by passing the @option{no-define}
3822 option, as in:
3823 @example
3824 AM_INIT_AUTOMAKE([gnits 1.5 no-define dist-bzip2])
3825 @end example
3826 or by passing a third non-empty argument to the obsolete form.
3828 @item AM_PATH_LISPDIR
3829 @acindex AM_PATH_LISPDIR
3830 @vindex EMACS
3831 @vindex lispdir
3832 Searches for the program @command{emacs}, and, if found, sets the
3833 output variable @code{lispdir} to the full path to Emacs' site-lisp
3834 directory.
3836 Note that this test assumes the @command{emacs} found to be a version
3837 that supports Emacs Lisp (such as @sc{gnu} Emacs or XEmacs).  Other
3838 emacsen can cause this test to hang (some, like old versions of
3839 MicroEmacs, start up in interactive mode, requiring @kbd{C-x C-c} to
3840 exit, which is hardly obvious for a non-emacs user).  In most cases,
3841 however, you should be able to use @kbd{C-c} to kill the test.  In
3842 order to avoid problems, you can set @env{EMACS} to ``no'' in the
3843 environment, or use the @option{--with-lispdir} option to
3844 @command{configure} to explicitly set the correct path (if you're sure
3845 you have an @command{emacs} that supports Emacs Lisp).
3847 @item AM_PROG_AS
3848 @acindex AM_PROG_AS
3849 @vindex CCAS
3850 @vindex CCASFLAGS
3851 Use this macro when you have assembly code in your project.  This will
3852 choose the assembler for you (by default the C compiler) and set
3853 @code{CCAS}, and will also set @code{CCASFLAGS} if required.
3855 @item AM_PROG_CC_C_O
3856 @acindex AM_PROG_CC_C_O
3857 @acindex AC_PROG_CC_C_O
3858 This is like @code{AC_PROG_CC_C_O}, but it generates its results in
3859 the manner required by Automake.  You must use this instead of
3860 @code{AC_PROG_CC_C_O} when you need this functionality, that is, when
3861 using per-target flags or subdir-objects with C sources.
3863 @item AM_PROG_LEX
3864 @acindex AM_PROG_LEX
3865 @acindex AC_PROG_LEX
3866 @cindex HP-UX 10, @command{lex} problems
3867 @cindex @command{lex} problems with HP-UX 10
3868 Like @code{AC_PROG_LEX} (@pxref{Particular Programs, , Particular
3869 Program Checks, autoconf, The Autoconf Manual}), but uses the
3870 @command{missing} script on systems that do not have @command{lex}.
3871 HP-UX 10 is one such system.
3873 @item AM_PROG_GCJ
3874 @acindex AM_PROG_GCJ
3875 @vindex GCJ
3876 @vindex GCJFLAGS
3877 This macro finds the @command{gcj} program or causes an error.  It sets
3878 @code{GCJ} and @code{GCJFLAGS}.  @command{gcj} is the Java front-end to the
3879 GNU Compiler Collection.
3881 @item AM_PROG_UPC([@var{compiler-search-list}])
3882 @acindex AM_PROG_UPC
3883 @vindex UPC
3884 Find a compiler for Unified Parallel C and define the @code{UPC}
3885 variable.  The default @var{compiler-search-list} is @samp{upcc upc}.
3886 This macro will abort @command{configure} if no Unified Parallel C
3887 compiler is found.
3889 @item AM_SILENT_RULES
3890 @acindex AM_SILENT_RULES
3891 Enable the machinery for less verbose build output (@pxref{Options}).
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 initial support for Vala
6607 (@uref{http://www.vala-project.org/}).
6608 This requires valac version 0.7.0 or later.
6610 @example
6611 foo_SOURCES = foo.vala bar.vala zardoc.c
6612 @end example
6614 Any @file{.vala} file listed in a @code{_SOURCES} variable will be
6615 compiled into C code by the Vala compiler. The generated @file{.c} files are
6616 distributed. The end user does not need to have a Vala compiler installed.
6618 Automake ships with an Autoconf macro called @code{AM_PROG_VALAC}
6619 that will locate the Vala compiler and optionally check its version
6620 number.
6622 @defmac AM_PROG_VALAC (@ovar{MINIMUM-VERSION})
6623 Try to find a Vala compiler in @env{PATH}. If it is found, the variable
6624 @code{VALAC} is set. Optionally a minimum release number of the compiler
6625 can be requested:
6627 @example
6628 AM_PROG_VALAC([0.7.0])
6629 @end example
6630 @end defmac
6632 There are a few variables that are used when compiling Vala sources:
6634 @vtable @code
6635 @item VALAC
6636 Path to the the Vala compiler.
6638 @item VALAFLAGS
6639 Additional arguments for the Vala compiler.
6641 @item AM_VALAFLAGS
6642 The maintainer's variant of @code{VALAFLAGS}.
6644 @example
6645 lib_LTLIBRARIES = libfoo.la
6646 libfoo_la_SOURCES = foo.vala
6647 @end example
6648 @end vtable
6651 @node Support for Other Languages
6652 @comment  node-name,  next,  previous,  up
6653 @section Support for Other Languages
6655 Automake currently only includes full support for C, C++ (@pxref{C++
6656 Support}), Objective C (@pxref{Objective C Support}), Fortran 77
6657 (@pxref{Fortran 77 Support}), Fortran 9x (@pxref{Fortran 9x Support}),
6658 and Java (@pxref{Java Support}).  There is only rudimentary support for other
6659 languages, support for which will be improved based on user demand.
6661 Some limited support for adding your own languages is available via the
6662 suffix rule handling (@pxref{Suffixes}).
6665 @node ANSI
6666 @section Automatic de-ANSI-fication
6668 @cindex de-ANSI-fication, defined
6670 The features described in this section are obsolete; you should not
6671 used any of them in new code, and they may be withdrawn in future
6672 Automake releases.
6674 When the C language was standardized in 1989, there was a long
6675 transition period where package developers needed to worry about
6676 porting to older systems that did not support ANSI C by default.
6677 These older systems are no longer in practical use and are no longer
6678 supported by their original suppliers, so developers need not worry
6679 about this problem any more.
6681 Automake allows you to write packages that are portable to K&R C by
6682 @dfn{de-ANSI-fying} each source file before the actual compilation takes
6683 place.
6685 @vindex AUTOMAKE_OPTIONS
6686 @opindex ansi2knr
6688 If the @file{Makefile.am} variable @code{AUTOMAKE_OPTIONS}
6689 (@pxref{Options}) contains the option @option{ansi2knr} then code to
6690 handle de-ANSI-fication is inserted into the generated
6691 @file{Makefile.in}.
6693 This causes each C source file in the directory to be treated as ANSI C@.
6694 If an ANSI C compiler is available, it is used.  If no ANSI C compiler
6695 is available, the @command{ansi2knr} program is used to convert the source
6696 files into K&R C, which is then compiled.
6698 The @command{ansi2knr} program is simple-minded.  It assumes the source
6699 code will be formatted in a particular way; see the @command{ansi2knr} man
6700 page for details.
6702 @acindex AM_C_PROTOTYPES
6703 Support for the obsolete de-ANSI-fication feature
6704 requires the source files @file{ansi2knr.c}
6705 and @file{ansi2knr.1} to be in the same package as the ANSI C source;
6706 these files are distributed with Automake.  Also, the package
6707 @file{configure.ac} must call the macro @code{AM_C_PROTOTYPES}
6708 (@pxref{Macros}).
6710 Automake also handles finding the @command{ansi2knr} support files in some
6711 other directory in the current package.  This is done by prepending the
6712 relative path to the appropriate directory to the @command{ansi2knr}
6713 option.  For instance, suppose the package has ANSI C code in the
6714 @file{src} and @file{lib} subdirectories.  The files @file{ansi2knr.c} and
6715 @file{ansi2knr.1} appear in @file{lib}.  Then this could appear in
6716 @file{src/Makefile.am}:
6718 @example
6719 AUTOMAKE_OPTIONS = ../lib/ansi2knr
6720 @end example
6722 If no directory prefix is given, the files are assumed to be in the
6723 current directory.
6725 Note that automatic de-ANSI-fication will not work when the package is
6726 being built for a different host architecture.  That is because @command{automake}
6727 currently has no way to build @command{ansi2knr} for the build machine.
6729 @c FIXME: this paragraph might be better moved to an `upgrading' section.
6730 @cindex @code{LTLIBOBJS} and @code{ansi2knr}
6731 @cindex @code{LIBOBJS} and @code{ansi2knr}
6732 @cindex @code{ansi2knr} and @code{LTLIBOBJS}
6733 @cindex @code{ansi2knr} and @code{LIBOBJS}
6734 Using @code{LIBOBJS} with source de-ANSI-fication used to require
6735 hand-crafted code in @file{configure} to append @samp{$U} to basenames
6736 in @code{LIBOBJS}.  This is no longer true today.  Starting with version
6737 2.54, Autoconf takes care of rewriting @code{LIBOBJS} and
6738 @code{LTLIBOBJS}.  (@pxref{AC_LIBOBJ vs LIBOBJS, , @code{AC_LIBOBJ}
6739 vs.@: @code{LIBOBJS}, autoconf, The Autoconf Manual})
6741 @node Dependencies
6742 @section Automatic dependency tracking
6744 As a developer it is often painful to continually update the
6745 @file{Makefile.in} whenever the include-file dependencies change in a
6746 project.  Automake supplies a way to automatically track dependency
6747 changes (@pxref{Dependency Tracking}).
6749 @cindex Dependency tracking
6750 @cindex Automatic dependency tracking
6752 Automake always uses complete dependencies for a compilation,
6753 including system headers.  Automake's model is that dependency
6754 computation should be a side effect of the build.  To this end,
6755 dependencies are computed by running all compilations through a
6756 special wrapper program called @command{depcomp}.  @command{depcomp}
6757 understands how to coax many different C and C++ compilers into
6758 generating dependency information in the format it requires.
6759 @samp{automake -a} will install @command{depcomp} into your source
6760 tree for you.  If @command{depcomp} can't figure out how to properly
6761 invoke your compiler, dependency tracking will simply be disabled for
6762 your build.
6764 @cindex @command{depcomp}
6766 Experience with earlier versions of Automake (@pxref{Dependency
6767 Tracking Evolution}) taught us that it is not reliable to generate
6768 dependencies only on the maintainer's system, as configurations vary
6769 too much.  So instead Automake implements dependency tracking at build
6770 time.
6772 Automatic dependency tracking can be suppressed by putting
6773 @option{no-dependencies} in the variable @code{AUTOMAKE_OPTIONS}, or
6774 passing @option{no-dependencies} as an argument to @code{AM_INIT_AUTOMAKE}
6775 (this should be the preferred way).  Or, you can invoke @command{automake}
6776 with the @option{-i} option.  Dependency tracking is enabled by default.
6778 @vindex AUTOMAKE_OPTIONS
6779 @opindex no-dependencies
6781 The person building your package also can choose to disable dependency
6782 tracking by configuring with @option{--disable-dependency-tracking}.
6784 @cindex Disabling dependency tracking
6785 @cindex Dependency tracking, disabling
6788 @node EXEEXT
6789 @section Support for executable extensions
6791 @cindex Executable extension
6792 @cindex Extension, executable
6793 @cindex Windows
6795 On some platforms, such as Windows, executables are expected to have an
6796 extension such as @file{.exe}.  On these platforms, some compilers (GCC
6797 among them) will automatically generate @file{foo.exe} when asked to
6798 generate @file{foo}.
6800 Automake provides mostly-transparent support for this.  Unfortunately
6801 @emph{mostly} doesn't yet mean @emph{fully}.  Until the English
6802 dictionary is revised, you will have to assist Automake if your package
6803 must support those platforms.
6805 One thing you must be aware of is that, internally, Automake rewrites
6806 something like this:
6808 @example
6809 bin_PROGRAMS = liver
6810 @end example
6812 to this:
6814 @example
6815 bin_PROGRAMS = liver$(EXEEXT)
6816 @end example
6818 The targets Automake generates are likewise given the @samp{$(EXEEXT)}
6819 extension.
6821 The variables @code{TESTS} and @code{XFAIL_TESTS} (@pxref{Simple Tests}) are also
6822 rewritten if they contain filenames that have been declared as programs
6823 in the same @file{Makefile}.  (This is mostly useful when some programs
6824 from @code{check_PROGRAMS} are listed in @code{TESTS}.)
6826 However, Automake cannot apply this rewriting to @command{configure}
6827 substitutions.  This means that if you are conditionally building a
6828 program using such a substitution, then your @file{configure.ac} must
6829 take care to add @samp{$(EXEEXT)} when constructing the output variable.
6831 With Autoconf 2.13 and earlier, you must explicitly use @code{AC_EXEEXT}
6832 to get this support.  With Autoconf 2.50, @code{AC_EXEEXT} is run
6833 automatically if you configure a compiler (say, through
6834 @code{AC_PROG_CC}).
6836 Sometimes maintainers like to write an explicit link rule for their
6837 program.  Without executable extension support, this is easy---you
6838 simply write a rule whose target is the name of the program.  However,
6839 when executable extension support is enabled, you must instead add the
6840 @samp{$(EXEEXT)} suffix.
6842 Unfortunately, due to the change in Autoconf 2.50, this means you must
6843 always add this extension.  However, this is a problem for maintainers
6844 who know their package will never run on a platform that has
6845 executable extensions.  For those maintainers, the @option{no-exeext}
6846 option (@pxref{Options}) will disable this feature.  This works in a
6847 fairly ugly way; if @option{no-exeext} is seen, then the presence of a
6848 rule for a target named @code{foo} in @file{Makefile.am} will override
6849 an @command{automake}-generated rule for @samp{foo$(EXEEXT)}.  Without
6850 the @option{no-exeext} option, this use will give a diagnostic.
6853 @node Other Objects
6854 @chapter Other Derived Objects
6856 Automake can handle derived objects that are not C programs.  Sometimes
6857 the support for actually building such objects must be explicitly
6858 supplied, but Automake will still automatically handle installation and
6859 distribution.
6861 @menu
6862 * Scripts::                     Executable scripts
6863 * Headers::                     Header files
6864 * Data::                        Architecture-independent data files
6865 * Sources::                     Derived sources
6866 @end menu
6869 @node Scripts
6870 @section Executable Scripts
6872 @cindex @code{_SCRIPTS} primary, defined
6873 @cindex @code{SCRIPTS} primary, defined
6874 @cindex Primary variable, @code{SCRIPTS}
6875 @vindex _SCRIPTS
6876 @cindex Installing scripts
6878 It is possible to define and install programs that are scripts.  Such
6879 programs are listed using the @code{SCRIPTS} primary name.  When the
6880 script is distributed in its final, installable form, the
6881 @file{Makefile} usually looks as follows:
6882 @vindex SCRIPTS
6884 @example
6885 # Install my_script in $(bindir) and distribute it.
6886 dist_bin_SCRIPTS = my_script
6887 @end example
6889 Script are not distributed by default; as we have just seen, those
6890 that should be distributed can be specified using a @code{dist_}
6891 prefix as with other primaries.
6893 @cindex @code{SCRIPTS}, installation directories
6894 @vindex bin_SCRIPTS
6895 @vindex sbin_SCRIPTS
6896 @vindex libexec_SCRIPTS
6897 @vindex pkgdata_SCRIPTS
6898 @vindex noinst_SCRIPTS
6899 @vindex check_SCRIPTS
6901 Scripts can be installed in @code{bindir}, @code{sbindir},
6902 @code{libexecdir}, or @code{pkgdatadir}.
6904 Scripts that need not be installed can be listed in
6905 @code{noinst_SCRIPTS}, and among them, those which are needed only by
6906 @samp{make check} should go in @code{check_SCRIPTS}.
6908 When a script needs to be built, the @file{Makefile.am} should include
6909 the appropriate rules.  For instance the @command{automake} program
6910 itself is a Perl script that is generated from @file{automake.in}.
6911 Here is how this is handled:
6913 @example
6914 bin_SCRIPTS = automake
6915 CLEANFILES = $(bin_SCRIPTS)
6916 EXTRA_DIST = automake.in
6918 do_subst = sed -e 's,[@@]datadir[@@],$(datadir),g' \
6919             -e 's,[@@]PERL[@@],$(PERL),g' \
6920             -e 's,[@@]PACKAGE[@@],$(PACKAGE),g' \
6921             -e 's,[@@]VERSION[@@],$(VERSION),g' \
6922             @dots{}
6924 automake: automake.in Makefile
6925         $(do_subst) < $(srcdir)/automake.in > automake
6926         chmod +x automake
6927 @end example
6929 Such scripts for which a build rule has been supplied need to be
6930 deleted explicitly using @code{CLEANFILES} (@pxref{Clean}), and their
6931 sources have to be distributed, usually with @code{EXTRA_DIST}
6932 (@pxref{Basics of Distribution}).
6934 Another common way to build scripts is to process them from
6935 @file{configure} with @code{AC_CONFIG_FILES}.  In this situation
6936 Automake knows which files should be cleaned and distributed, and what
6937 the rebuild rules should look like.
6939 For instance if @file{configure.ac} contains
6941 @example
6942 AC_CONFIG_FILES([src/my_script], [chmod +x src/my_script])
6943 @end example
6945 @noindent
6946 to build @file{src/my_script} from @file{src/my_script.in}, then a
6947 @file{src/Makefile.am} to install this script in @code{$(bindir)} can
6948 be as simple as
6950 @example
6951 bin_SCRIPTS = my_script
6952 CLEANFILES = $(bin_SCRIPTS)
6953 @end example
6955 @noindent
6956 There is no need for @code{EXTRA_DIST} or any build rule: Automake
6957 infers them from @code{AC_CONFIG_FILES} (@pxref{Requirements}).
6958 @code{CLEANFILES} is still useful, because by default Automake will
6959 clean targets of @code{AC_CONFIG_FILES} in @code{distclean}, not
6960 @code{clean}.
6962 Although this looks simpler, building scripts this way has one
6963 drawback: directory variables such as @code{$(datadir)} are not fully
6964 expanded and may refer to other directory variables.
6966 @node Headers
6967 @section Header files
6969 @cindex @code{_HEADERS} primary, defined
6970 @cindex @code{HEADERS} primary, defined
6971 @cindex Primary variable, @code{HEADERS}
6972 @vindex _HEADERS
6973 @vindex noinst_HEADERS
6974 @cindex @code{HEADERS}, installation directories
6975 @cindex Installing headers
6976 @vindex include_HEADERS
6977 @vindex oldinclude_HEADERS
6978 @vindex pkginclude_HEADERS
6981 Header files that must be installed are specified by the
6982 @code{HEADERS} family of variables.  Headers can be installed in
6983 @code{includedir}, @code{oldincludedir}, @code{pkgincludedir} or any
6984 other directory you may have defined (@pxref{Uniform}).  For instance,
6986 @example
6987 include_HEADERS = foo.h bar/bar.h
6988 @end example
6990 @noindent
6991 will install the two files as @file{$(includedir)/foo.h} and
6992 @file{$(includedir)/bar.h}.
6994 The @code{nobase_} prefix is also supported,
6996 @example
6997 nobase_include_HEADERS = foo.h bar/bar.h
6998 @end example
7000 @noindent
7001 will install the two files as @file{$(includedir)/foo.h} and
7002 @file{$(includedir)/bar/bar.h} (@pxref{Alternative}).
7004 @vindex noinst_HEADERS
7005 Usually, only header files that accompany installed libraries need to
7006 be installed.  Headers used by programs or convenience libraries are
7007 not installed.  The @code{noinst_HEADERS} variable can be used for
7008 such headers.  However when the header actually belongs to a single
7009 convenience library or program, we recommend listing it in the
7010 program's or library's @code{_SOURCES} variable (@pxref{Program
7011 Sources}) instead of in @code{noinst_HEADERS}.  This is clearer for
7012 the @file{Makefile.am} reader.  @code{noinst_HEADERS} would be the
7013 right variable to use in a directory containing only headers and no
7014 associated library or program.
7016 All header files must be listed somewhere; in a @code{_SOURCES}
7017 variable or in a @code{_HEADERS} variable.  Missing ones will not
7018 appear in the distribution.
7020 For header files that are built and must not be distributed, use the
7021 @code{nodist_} prefix as in @code{nodist_include_HEADERS} or
7022 @code{nodist_prog_SOURCES}.  If these generated headers are needed
7023 during the build, you must also ensure they exist before they are
7024 used (@pxref{Sources}).
7027 @node Data
7028 @section Architecture-independent data files
7030 @cindex @code{_DATA} primary, defined
7031 @cindex @code{DATA} primary, defined
7032 @cindex Primary variable, @code{DATA}
7033 @vindex _DATA
7035 Automake supports the installation of miscellaneous data files using the
7036 @code{DATA} family of variables.
7037 @vindex DATA
7039 @vindex data_DATA
7040 @vindex sysconf_DATA
7041 @vindex sharedstate_DATA
7042 @vindex localstate_DATA
7043 @vindex pkgdata_DATA
7045 Such data can be installed in the directories @code{datadir},
7046 @code{sysconfdir}, @code{sharedstatedir}, @code{localstatedir}, or
7047 @code{pkgdatadir}.
7049 By default, data files are @emph{not} included in a distribution.  Of
7050 course, you can use the @code{dist_} prefix to change this on a
7051 per-variable basis.
7053 Here is how Automake declares its auxiliary data files:
7055 @example
7056 dist_pkgdata_DATA = clean-kr.am clean.am @dots{}
7057 @end example
7060 @node Sources
7061 @section Built Sources
7063 Because Automake's automatic dependency tracking works as a side-effect
7064 of compilation (@pxref{Dependencies}) there is a bootstrap issue: a
7065 target should not be compiled before its dependencies are made, but
7066 these dependencies are unknown until the target is first compiled.
7068 Ordinarily this is not a problem, because dependencies are distributed
7069 sources: they preexist and do not need to be built.  Suppose that
7070 @file{foo.c} includes @file{foo.h}.  When it first compiles
7071 @file{foo.o}, @command{make} only knows that @file{foo.o} depends on
7072 @file{foo.c}.  As a side-effect of this compilation @command{depcomp}
7073 records the @file{foo.h} dependency so that following invocations of
7074 @command{make} will honor it.  In these conditions, it's clear there is
7075 no problem: either @file{foo.o} doesn't exist and has to be built
7076 (regardless of the dependencies), or accurate dependencies exist and
7077 they can be used to decide whether @file{foo.o} should be rebuilt.
7079 It's a different story if @file{foo.h} doesn't exist by the first
7080 @command{make} run.  For instance, there might be a rule to build
7081 @file{foo.h}.  This time @file{file.o}'s build will fail because the
7082 compiler can't find @file{foo.h}.  @command{make} failed to trigger the
7083 rule to build @file{foo.h} first by lack of dependency information.
7085 @vindex BUILT_SOURCES
7086 @cindex @code{BUILT_SOURCES}, defined
7088 The @code{BUILT_SOURCES} variable is a workaround for this problem.  A
7089 source file listed in @code{BUILT_SOURCES} is made on @samp{make all}
7090 or @samp{make check} (or even @samp{make install}) before other
7091 targets are processed.  However, such a source file is not
7092 @emph{compiled} unless explicitly requested by mentioning it in some
7093 other @code{_SOURCES} variable.
7095 So, to conclude our introductory example, we could use
7096 @samp{BUILT_SOURCES = foo.h} to ensure @file{foo.h} gets built before
7097 any other target (including @file{foo.o}) during @samp{make all} or
7098 @samp{make check}.
7100 @code{BUILT_SOURCES} is actually a bit of a misnomer, as any file which
7101 must be created early in the build process can be listed in this
7102 variable.  Moreover, all built sources do not necessarily have to be
7103 listed in @code{BUILT_SOURCES}.  For instance, a generated @file{.c} file
7104 doesn't need to appear in @code{BUILT_SOURCES} (unless it is included by
7105 another source), because it's a known dependency of the associated
7106 object.
7108 It might be important to emphasize that @code{BUILT_SOURCES} is
7109 honored only by @samp{make all}, @samp{make check} and @samp{make
7110 install}.  This means you cannot build a specific target (e.g.,
7111 @samp{make foo}) in a clean tree if it depends on a built source.
7112 However it will succeed if you have run @samp{make all} earlier,
7113 because accurate dependencies are already available.
7115 The next section illustrates and discusses the handling of built sources
7116 on a toy example.
7118 @menu
7119 * Built Sources Example::       Several ways to handle built sources.
7120 @end menu
7122 @node Built Sources Example
7123 @subsection Built Sources Example
7125 Suppose that @file{foo.c} includes @file{bindir.h}, which is
7126 installation-dependent and not distributed: it needs to be built.  Here
7127 @file{bindir.h} defines the preprocessor macro @code{bindir} to the
7128 value of the @command{make} variable @code{bindir} (inherited from
7129 @file{configure}).
7131 We suggest several implementations below.  It's not meant to be an
7132 exhaustive listing of all ways to handle built sources, but it will give
7133 you a few ideas if you encounter this issue.
7135 @subsubheading First Try
7137 This first implementation will illustrate the bootstrap issue mentioned
7138 in the previous section (@pxref{Sources}).
7140 Here is a tentative @file{Makefile.am}.
7142 @example
7143 # This won't work.
7144 bin_PROGRAMS = foo
7145 foo_SOURCES = foo.c
7146 nodist_foo_SOURCES = bindir.h
7147 CLEANFILES = bindir.h
7148 bindir.h: Makefile
7149         echo '#define bindir "$(bindir)"' >$@@
7150 @end example
7152 This setup doesn't work, because Automake doesn't know that @file{foo.c}
7153 includes @file{bindir.h}.  Remember, automatic dependency tracking works
7154 as a side-effect of compilation, so the dependencies of @file{foo.o} will
7155 be known only after @file{foo.o} has been compiled (@pxref{Dependencies}).
7156 The symptom is as follows.
7158 @example
7159 % make
7160 source='foo.c' object='foo.o' libtool=no \
7161 depfile='.deps/foo.Po' tmpdepfile='.deps/foo.TPo' \
7162 depmode=gcc /bin/sh ./depcomp \
7163 gcc -I. -I. -g -O2 -c `test -f 'foo.c' || echo './'`foo.c
7164 foo.c:2: bindir.h: No such file or directory
7165 make: *** [foo.o] Error 1
7166 @end example
7168 In this example @file{bindir.h} is not distributed nor installed, and
7169 it is not even being built on-time.  One may wonder if the
7170 @samp{nodist_foo_SOURCES = bindir.h} line has any use at all.  This
7171 line simply states that @file{bindir.h} is a source of @code{foo}, so
7172 for instance, it should be inspected while generating tags
7173 (@pxref{Tags}).  In other words, it does not help our present problem,
7174 and the build would fail identically without it.
7176 @subsubheading Using @code{BUILT_SOURCES}
7178 A solution is to require @file{bindir.h} to be built before anything
7179 else.  This is what @code{BUILT_SOURCES} is meant for (@pxref{Sources}).
7181 @example
7182 bin_PROGRAMS = foo
7183 foo_SOURCES = foo.c
7184 nodist_foo_SOURCES = bindir.h
7185 BUILT_SOURCES = bindir.h
7186 CLEANFILES = bindir.h
7187 bindir.h: Makefile
7188         echo '#define bindir "$(bindir)"' >$@@
7189 @end example
7191 See how @file{bindir.h} gets built first:
7193 @example
7194 % make
7195 echo '#define bindir "/usr/local/bin"' >bindir.h
7196 make  all-am
7197 make[1]: Entering directory `/home/adl/tmp'
7198 source='foo.c' object='foo.o' libtool=no \
7199 depfile='.deps/foo.Po' tmpdepfile='.deps/foo.TPo' \
7200 depmode=gcc /bin/sh ./depcomp \
7201 gcc -I. -I. -g -O2 -c `test -f 'foo.c' || echo './'`foo.c
7202 gcc  -g -O2   -o foo  foo.o
7203 make[1]: Leaving directory `/home/adl/tmp'
7204 @end example
7206 However, as said earlier, @code{BUILT_SOURCES} applies only to the
7207 @code{all}, @code{check}, and @code{install} targets.  It still fails
7208 if you try to run @samp{make foo} explicitly:
7210 @example
7211 % make clean
7212 test -z "bindir.h" || rm -f bindir.h
7213 test -z "foo" || rm -f foo
7214 rm -f *.o
7215 % : > .deps/foo.Po # Suppress previously recorded dependencies
7216 % make foo
7217 source='foo.c' object='foo.o' libtool=no \
7218 depfile='.deps/foo.Po' tmpdepfile='.deps/foo.TPo' \
7219 depmode=gcc /bin/sh ./depcomp \
7220 gcc -I. -I. -g -O2 -c `test -f 'foo.c' || echo './'`foo.c
7221 foo.c:2: bindir.h: No such file or directory
7222 make: *** [foo.o] Error 1
7223 @end example
7225 @subsubheading Recording Dependencies manually
7227 Usually people are happy enough with @code{BUILT_SOURCES} because they
7228 never build targets such as @samp{make foo} before @samp{make all}, as
7229 in the previous example.  However if this matters to you, you can
7230 avoid @code{BUILT_SOURCES} and record such dependencies explicitly in
7231 the @file{Makefile.am}.
7233 @example
7234 bin_PROGRAMS = foo
7235 foo_SOURCES = foo.c
7236 nodist_foo_SOURCES = bindir.h
7237 foo.$(OBJEXT): bindir.h
7238 CLEANFILES = bindir.h
7239 bindir.h: Makefile
7240         echo '#define bindir "$(bindir)"' >$@@
7241 @end example
7243 You don't have to list @emph{all} the dependencies of @file{foo.o}
7244 explicitly, only those that might need to be built.  If a dependency
7245 already exists, it will not hinder the first compilation and will be
7246 recorded by the normal dependency tracking code.  (Note that after
7247 this first compilation the dependency tracking code will also have
7248 recorded the dependency between @file{foo.o} and
7249 @file{bindir.h}; so our explicit dependency is really useful to
7250 the first build only.)
7252 Adding explicit dependencies like this can be a bit dangerous if you are
7253 not careful enough.  This is due to the way Automake tries not to
7254 overwrite your rules (it assumes you know better than it).
7255 @samp{foo.$(OBJEXT): bindir.h} supersedes any rule Automake may want to
7256 output to build @samp{foo.$(OBJEXT)}.  It happens to work in this case
7257 because Automake doesn't have to output any @samp{foo.$(OBJEXT):}
7258 target: it relies on a suffix rule instead (i.e., @samp{.c.$(OBJEXT):}).
7259 Always check the generated @file{Makefile.in} if you do this.
7261 @subsubheading Build @file{bindir.h} from @file{configure}
7263 It's possible to define this preprocessor macro from @file{configure},
7264 either in @file{config.h} (@pxref{Defining Directories, , Defining
7265 Directories, autoconf, The Autoconf Manual}), or by processing a
7266 @file{bindir.h.in} file using @code{AC_CONFIG_FILES}
7267 (@pxref{Configuration Actions, ,Configuration Actions, autoconf, The
7268 Autoconf Manual}).
7270 At this point it should be clear that building @file{bindir.h} from
7271 @file{configure} works well for this example.  @file{bindir.h} will exist
7272 before you build any target, hence will not cause any dependency issue.
7274 The Makefile can be shrunk as follows.  We do not even have to mention
7275 @file{bindir.h}.
7277 @example
7278 bin_PROGRAMS = foo
7279 foo_SOURCES = foo.c
7280 @end example
7282 However, it's not always possible to build sources from
7283 @file{configure}, especially when these sources are generated by a tool
7284 that needs to be built first.
7286 @subsubheading Build @file{bindir.c}, not @file{bindir.h}.
7288 Another attractive idea is to define @code{bindir} as a variable or
7289 function exported from @file{bindir.o}, and build @file{bindir.c}
7290 instead of @file{bindir.h}.
7292 @example
7293 noinst_PROGRAMS = foo
7294 foo_SOURCES = foo.c bindir.h
7295 nodist_foo_SOURCES = bindir.c
7296 CLEANFILES = bindir.c
7297 bindir.c: Makefile
7298         echo 'const char bindir[] = "$(bindir)";' >$@@
7299 @end example
7301 @file{bindir.h} contains just the variable's declaration and doesn't
7302 need to be built, so it won't cause any trouble.  @file{bindir.o} is
7303 always dependent on @file{bindir.c}, so @file{bindir.c} will get built
7304 first.
7306 @subsubheading Which is best?
7308 There is no panacea, of course.  Each solution has its merits and
7309 drawbacks.
7311 You cannot use @code{BUILT_SOURCES} if the ability to run @samp{make
7312 foo} on a clean tree is important to you.
7314 You won't add explicit dependencies if you are leery of overriding
7315 an Automake rule by mistake.
7317 Building files from @file{./configure} is not always possible, neither
7318 is converting @file{.h} files into @file{.c} files.
7321 @node Other GNU Tools
7322 @chapter Other GNU Tools
7324 Since Automake is primarily intended to generate @file{Makefile.in}s for
7325 use in GNU programs, it tries hard to interoperate with other GNU tools.
7327 @menu
7328 * Emacs Lisp::                  Emacs Lisp
7329 * gettext::                     Gettext
7330 * Libtool::                     Libtool
7331 * Java::                        Java
7332 * Python::                      Python
7333 @end menu
7336 @node Emacs Lisp
7337 @section Emacs Lisp
7339 @cindex @code{_LISP} primary, defined
7340 @cindex @code{LISP} primary, defined
7341 @cindex Primary variable, @code{LISP}
7343 @vindex _LISP
7344 @vindex lisp_LISP
7345 @vindex noinst_LISP
7347 Automake provides some support for Emacs Lisp.  The @code{LISP} primary
7348 is used to hold a list of @file{.el} files.  Possible prefixes for this
7349 primary are @code{lisp_} and @code{noinst_}.  Note that if
7350 @code{lisp_LISP} is defined, then @file{configure.ac} must run
7351 @code{AM_PATH_LISPDIR} (@pxref{Macros}).
7353 @vindex dist_lisp_LISP
7354 @vindex dist_noinst_LISP
7355 Lisp sources are not distributed by default.  You can prefix the
7356 @code{LISP} primary with @code{dist_}, as in @code{dist_lisp_LISP} or
7357 @code{dist_noinst_LISP}, to indicate that these files should be
7358 distributed.
7360 Automake will byte-compile all Emacs Lisp source files using the Emacs
7361 found by @code{AM_PATH_LISPDIR}, if any was found.
7363 Byte-compiled Emacs Lisp files are not portable among all versions of
7364 Emacs, so it makes sense to turn this off if you expect sites to have
7365 more than one version of Emacs installed.  Furthermore, many packages
7366 don't actually benefit from byte-compilation.  Still, we recommend
7367 that you byte-compile your Emacs Lisp sources.  It is probably better
7368 for sites with strange setups to cope for themselves than to make the
7369 installation less nice for everybody else.
7371 There are two ways to avoid byte-compiling.  Historically, we have
7372 recommended the following construct.
7373 @example
7374 lisp_LISP = file1.el file2.el
7375 ELCFILES =
7376 @end example
7377 @noindent
7378 @code{ELCFILES} is an internal Automake variable that normally lists
7379 all @file{.elc} files that must be byte-compiled.  Automake defines
7380 @code{ELCFILES} automatically from @code{lisp_LISP}.  Emptying this
7381 variable explicitly prevents byte-compilation.
7383 Since Automake 1.8, we now recommend using @code{lisp_DATA} instead.  As
7385 @example
7386 lisp_DATA = file1.el file2.el
7387 @end example
7389 Note that these two constructs are not equivalent.  @code{_LISP} will
7390 not install a file if Emacs is not installed, while @code{_DATA} will
7391 always install its files.
7393 @node gettext
7394 @section Gettext
7396 @cindex GNU Gettext support
7397 @cindex Gettext support
7398 @cindex Support for GNU Gettext
7400 If @code{AM_GNU_GETTEXT} is seen in @file{configure.ac}, then Automake
7401 turns on support for GNU gettext, a message catalog system for
7402 internationalization
7403 (@pxref{Top, , Introduction, gettext, GNU gettext utilities}).
7405 The @code{gettext} support in Automake requires the addition of one or
7406 two subdirectories to the package: @file{po} and possibly also @file{intl}.
7407 The latter is needed if @code{AM_GNU_GETTEXT} is not invoked with the
7408 @samp{external} argument, or if @code{AM_GNU_GETTEXT_INTL_SUBDIR} is used.
7409 Automake ensures that these directories exist and are mentioned in
7410 @code{SUBDIRS}.
7412 @node Libtool
7413 @section Libtool
7415 Automake provides support for GNU Libtool (@pxref{Top, , Introduction,
7416 libtool, The Libtool Manual}) with the @code{LTLIBRARIES} primary.
7417 @xref{A Shared Library}.
7420 @node Java
7421 @section Java
7423 @cindex @code{_JAVA} primary, defined
7424 @cindex @code{JAVA} primary, defined
7425 @cindex Primary variable, @code{JAVA}
7427 Automake provides some minimal support for Java compilation with the
7428 @code{JAVA} primary.
7430 Any @file{.java} files listed in a @code{_JAVA} variable will be
7431 compiled with @code{JAVAC} at build time.  By default, @file{.java}
7432 files are not included in the distribution, you should use the
7433 @code{dist_} prefix to distribute them.
7435 Here is a typical setup for distributing @file{.java} files and
7436 installing the @file{.class} files resulting from their compilation.
7438 @example
7439 javadir = $(datadir)/java
7440 dist_java_JAVA = a.java b.java @dots{}
7441 @end example
7443 @cindex @code{JAVA} restrictions
7444 @cindex Restrictions for @code{JAVA}
7446 Currently Automake enforces the restriction that only one @code{_JAVA}
7447 primary can be used in a given @file{Makefile.am}.  The reason for this
7448 restriction is that, in general, it isn't possible to know which
7449 @file{.class} files were generated from which @file{.java} files, so
7450 it would be impossible to know which files to install where.  For
7451 instance, a @file{.java} file can define multiple classes; the resulting
7452 @file{.class} file names cannot be predicted without parsing the
7453 @file{.java} file.
7455 There are a few variables that are used when compiling Java sources:
7457 @vtable @code
7458 @item JAVAC
7459 The name of the Java compiler.  This defaults to @samp{javac}.
7461 @item JAVACFLAGS
7462 The flags to pass to the compiler.  This is considered to be a user
7463 variable (@pxref{User Variables}).
7465 @item AM_JAVACFLAGS
7466 More flags to pass to the Java compiler.  This, and not
7467 @code{JAVACFLAGS}, should be used when it is necessary to put Java
7468 compiler flags into @file{Makefile.am}.
7470 @item JAVAROOT
7471 The value of this variable is passed to the @option{-d} option to
7472 @code{javac}.  It defaults to @samp{$(top_builddir)}.
7474 @item CLASSPATH_ENV
7475 This variable is an @code{sh} expression that is used to set the
7476 @env{CLASSPATH} environment variable on the @code{javac} command line.
7477 (In the future we will probably handle class path setting differently.)
7478 @end vtable
7481 @node Python
7482 @section Python
7484 @cindex @code{_PYTHON} primary, defined
7485 @cindex @code{PYTHON} primary, defined
7486 @cindex Primary variable, @code{PYTHON}
7487 @vindex _PYTHON
7489 Automake provides support for Python compilation with the
7490 @code{PYTHON} primary.  A typical setup is to call
7491 @code{AM_PATH_PYTHON} in @file{configure.ac} and use a line like the
7492 following in @file{Makefile.am}:
7494 @example
7495 python_PYTHON = tree.py leave.py
7496 @end example
7498 Any files listed in a @code{_PYTHON} variable will be byte-compiled
7499 with @command{py-compile} at install time.  @command{py-compile}
7500 actually creates both standard (@file{.pyc}) and optimized
7501 (@file{.pyo}) byte-compiled versions of the source files.  Note that
7502 because byte-compilation occurs at install time, any files listed in
7503 @code{noinst_PYTHON} will not be compiled.  Python source files are
7504 included in the distribution by default, prepend @code{nodist_} (as in
7505 @code{nodist_python_PYTHON}) to omit them.
7507 Automake ships with an Autoconf macro called @code{AM_PATH_PYTHON}
7508 that will determine some Python-related directory variables (see
7509 below).  If you have called @code{AM_PATH_PYTHON} from
7510 @file{configure.ac}, then you may use the variables
7511 @code{python_PYTHON} or @code{pkgpython_PYTHON} to list Python source
7512 files in your @file{Makefile.am}, depending on where you want your files
7513 installed (see the definitions of @code{pythondir} and
7514 @code{pkgpythondir} below).
7516 @defmac AM_PATH_PYTHON (@ovar{VERSION}, @ovar{ACTION-IF-FOUND}, @ovar{ACTION-IF-NOT-FOUND})
7518 Search for a Python interpreter on the system.  This macro takes three
7519 optional arguments.  The first argument, if present, is the minimum
7520 version of Python required for this package: @code{AM_PATH_PYTHON}
7521 will skip any Python interpreter that is older than @var{VERSION}.
7522 If an interpreter is found and satisfies @var{VERSION}, then
7523 @var{ACTION-IF-FOUND} is run.  Otherwise, @var{ACTION-IF-NOT-FOUND} is
7524 run.
7526 If @var{ACTION-IF-NOT-FOUND} is not specified, as in the following
7527 example, the default is to abort @command{configure}.
7529 @example
7530 AM_PATH_PYTHON([2.2])
7531 @end example
7533 @noindent
7534 This is fine when Python is an absolute requirement for the package.
7535 If Python >= 2.5 was only @emph{optional} to the package,
7536 @code{AM_PATH_PYTHON} could be called as follows.
7538 @example
7539 AM_PATH_PYTHON([2.5],, [:])
7540 @end example
7542 @code{AM_PATH_PYTHON} creates the following output variables based on
7543 the Python installation found during configuration.
7544 @end defmac
7546 @vtable @code
7547 @item PYTHON
7548 The name of the Python executable, or @samp{:} if no suitable
7549 interpreter could be found.
7551 Assuming @var{ACTION-IF-NOT-FOUND} is used (otherwise @file{./configure}
7552 will abort if Python is absent), the value of @code{PYTHON} can be used
7553 to setup a conditional in order to disable the relevant part of a build
7554 as follows.
7556 @example
7557   AM_PATH_PYTHON(,, [:])
7558   AM_CONDITIONAL([HAVE_PYTHON], [test "$PYTHON" != :])
7559 @end example
7561 @item PYTHON_VERSION
7562 The Python version number, in the form @var{major}.@var{minor}
7563 (e.g., @samp{2.5}).  This is currently the value of
7564 @samp{sys.version[:3]}.
7566 @item PYTHON_PREFIX
7567 The string @samp{$@{prefix@}}.  This term may be used in future work
7568 that needs the contents of Python's @samp{sys.prefix}, but general
7569 consensus is to always use the value from @command{configure}.
7571 @item PYTHON_EXEC_PREFIX
7572 The string @samp{$@{exec_prefix@}}.  This term may be used in future work
7573 that needs the contents of Python's @samp{sys.exec_prefix}, but general
7574 consensus is to always use the value from @command{configure}.
7576 @item PYTHON_PLATFORM
7577 The canonical name used by Python to describe the operating system, as
7578 given by @samp{sys.platform}.  This value is sometimes needed when
7579 building Python extensions.
7581 @item pythondir
7582 The directory name for the @file{site-packages} subdirectory of the
7583 standard Python install tree.
7585 @item pkgpythondir
7586 This is the directory under @code{pythondir} that is named after the
7587 package.  That is, it is @samp{$(pythondir)/$(PACKAGE)}.  It is provided
7588 as a convenience.
7590 @item pyexecdir
7591 This is the directory where Python extension modules (shared libraries)
7592 should be installed.  An extension module written in C could be declared
7593 as follows to Automake:
7595 @example
7596 pyexec_LTLIBRARIES = quaternion.la
7597 quaternion_SOURCES = quaternion.c support.c support.h
7598 quaternion_la_LDFLAGS = -avoid-version -module
7599 @end example
7601 @item pkgpyexecdir
7602 This is a convenience variable that is defined as
7603 @samp{$(pyexecdir)/$(PACKAGE)}.
7604 @end vtable
7606 All these directory variables have values that start with either
7607 @samp{$@{prefix@}} or @samp{$@{exec_prefix@}} unexpanded.  This works
7608 fine in @file{Makefiles}, but it makes these variables hard to use in
7609 @file{configure}.  This is mandated by the GNU coding standards, so
7610 that the user can run @samp{make prefix=/foo install}.  The Autoconf
7611 manual has a section with more details on this topic
7612 (@pxref{Installation Directory Variables, , Installation Directory
7613 Variables, autoconf, The Autoconf Manual}).  See also @ref{Hard-Coded
7614 Install Paths}.
7617 @node Documentation
7618 @chapter Building documentation
7620 Currently Automake provides support for Texinfo and man pages.
7622 @menu
7623 * Texinfo::                     Texinfo
7624 * Man Pages::                   Man pages
7625 @end menu
7628 @node Texinfo
7629 @section Texinfo
7631 @cindex @code{_TEXINFOS} primary, defined
7632 @cindex @code{TEXINFOS} primary, defined
7633 @cindex Primary variable, @code{TEXINFOS}
7634 @cindex HTML output using Texinfo
7635 @cindex PDF output using Texinfo
7636 @cindex PS output using Texinfo
7637 @cindex DVI output using Texinfo
7638 @vindex _TEXINFOS
7639 @vindex info_TEXINFOS
7641 If the current directory contains Texinfo source, you must declare it
7642 with the @code{TEXINFOS} primary.  Generally Texinfo files are converted
7643 into info, and thus the @code{info_TEXINFOS} variable is most commonly used
7644 here.  Any Texinfo source file must end in the @file{.texi},
7645 @file{.txi}, or @file{.texinfo} extension.  We recommend @file{.texi}
7646 for new manuals.
7648 Automake generates rules to build @file{.info}, @file{.dvi},
7649 @file{.ps}, @file{.pdf} and @file{.html} files from your Texinfo
7650 sources.  Following the GNU Coding Standards, only the @file{.info}
7651 files are built by @samp{make all} and installed by @samp{make
7652 install} (unless you use @option{no-installinfo}, see below).
7653 Furthermore, @file{.info} files are automatically distributed so that
7654 Texinfo is not a prerequisite for installing your package.
7656 @trindex dvi
7657 @trindex html
7658 @trindex pdf
7659 @trindex ps
7660 @trindex install-dvi
7661 @trindex install-html
7662 @trindex install-pdf
7663 @trindex install-ps
7664 Other documentation formats can be built on request by @samp{make
7665 dvi}, @samp{make ps}, @samp{make pdf} and @samp{make html}, and they
7666 can be installed with @samp{make install-dvi}, @samp{make install-ps},
7667 @samp{make install-pdf} and @samp{make install-html} explicitly.
7668 @samp{make uninstall} will remove everything: the Texinfo
7669 documentation installed by default as well as all the above optional
7670 formats.
7672 All these targets can be extended using @samp{-local} rules
7673 (@pxref{Extending}).
7675 @cindex Texinfo flag, @code{VERSION}
7676 @cindex Texinfo flag, @code{UPDATED}
7677 @cindex Texinfo flag, @code{EDITION}
7678 @cindex Texinfo flag, @code{UPDATED-MONTH}
7680 @cindex @code{VERSION} Texinfo flag
7681 @cindex @code{UPDATED} Texinfo flag
7682 @cindex @code{EDITION} Texinfo flag
7683 @cindex @code{UPDATED-MONTH} Texinfo flag
7685 @cindex @file{mdate-sh}
7687 If the @file{.texi} file @code{@@include}s @file{version.texi}, then
7688 that file will be automatically generated.  The file @file{version.texi}
7689 defines four Texinfo flag you can reference using
7690 @code{@@value@{EDITION@}}, @code{@@value@{VERSION@}},
7691 @code{@@value@{UPDATED@}}, and @code{@@value@{UPDATED-MONTH@}}.
7693 @table @code
7694 @item EDITION
7695 @itemx VERSION
7696 Both of these flags hold the version number of your program.  They are
7697 kept separate for clarity.
7699 @item UPDATED
7700 This holds the date the primary @file{.texi} file was last modified.
7702 @item UPDATED-MONTH
7703 This holds the name of the month in which the primary @file{.texi} file
7704 was last modified.
7705 @end table
7707 The @file{version.texi} support requires the @command{mdate-sh}
7708 script; this script is supplied with Automake and automatically
7709 included when @command{automake} is invoked with the
7710 @option{--add-missing} option.
7712 If you have multiple Texinfo files, and you want to use the
7713 @file{version.texi} feature, then you have to have a separate version
7714 file for each Texinfo file.  Automake will treat any include in a
7715 Texinfo file that matches @file{vers*.texi} just as an automatically
7716 generated version file.
7718 Sometimes an info file actually depends on more than one @file{.texi}
7719 file.  For instance, in GNU Hello, @file{hello.texi} includes the file
7720 @file{gpl.texi}.  You can tell Automake about these dependencies using
7721 the @code{@var{texi}_TEXINFOS} variable.  Here is how GNU Hello does it:
7722 @vindex TEXINFOS
7723 @vindex _TEXINFOS
7725 @example
7726 info_TEXINFOS = hello.texi
7727 hello_TEXINFOS = gpl.texi
7728 @end example
7730 @cindex @file{texinfo.tex}
7732 By default, Automake requires the file @file{texinfo.tex} to appear in
7733 the same directory as the @file{Makefile.am} file that lists the
7734 @file{.texi} files.  If you used @code{AC_CONFIG_AUX_DIR} in
7735 @file{configure.ac} (@pxref{Input, , Finding `configure' Input,
7736 autoconf, The Autoconf Manual}), then @file{texinfo.tex} is looked for
7737 there.  In both cases, @command{automake} then supplies @file{texinfo.tex} if
7738 @option{--add-missing} is given, and takes care of its distribution.
7739 However, if you set the @code{TEXINFO_TEX} variable (see below),
7740 it overrides the location of the file and turns off its installation
7741 into the source as well as its distribution.
7743 The option @option{no-texinfo.tex} can be used to eliminate the
7744 requirement for the file @file{texinfo.tex}.  Use of the variable
7745 @code{TEXINFO_TEX} is preferable, however, because that allows the
7746 @code{dvi}, @code{ps}, and @code{pdf} targets to still work.
7748 @cindex Option, @code{no-installinfo}
7749 @cindex Target, @code{install-info}
7750 @cindex @code{install-info} target
7751 @cindex @code{no-installinfo} option
7753 @opindex no-installinfo
7754 @trindex install-info
7756 Automake generates an @code{install-info} rule; some people apparently
7757 use this.  By default, info pages are installed by @samp{make
7758 install}, so running @code{make install-info} is pointless.  This can
7759 be prevented via the @code{no-installinfo} option.  In this case,
7760 @file{.info} files are not installed by default, and user must
7761 request this explicitly using @samp{make install-info}.
7763 The following variables are used by the Texinfo build rules.
7765 @vtable @code
7766 @item MAKEINFO
7767 The name of the program invoked to build @file{.info} files.  This
7768 variable is defined by Automake.  If the @command{makeinfo} program is
7769 found on the system then it will be used by default; otherwise
7770 @command{missing} will be used instead.
7772 @item MAKEINFOHTML
7773 The command invoked to build @file{.html} files.  Automake
7774 defines this to @samp{$(MAKEINFO) --html}.
7776 @item MAKEINFOFLAGS
7777 User flags passed to each invocation of @samp{$(MAKEINFO)} and
7778 @samp{$(MAKEINFOHTML)}.  This user variable (@pxref{User Variables}) is
7779 not expected to be defined in any @file{Makefile}; it can be used by
7780 users to pass extra flags to suit their needs.
7782 @item AM_MAKEINFOFLAGS
7783 @itemx AM_MAKEINFOHTMLFLAGS
7784 Maintainer flags passed to each @command{makeinfo} invocation.  Unlike
7785 @code{MAKEINFOFLAGS}, these variables are meant to be defined by
7786 maintainers in @file{Makefile.am}.  @samp{$(AM_MAKEINFOFLAGS)} is
7787 passed to @code{makeinfo} when building @file{.info} files; and
7788 @samp{$(AM_MAKEINFOHTMLFLAGS)} is used when building @file{.html}
7789 files.
7791 For instance, the following setting can be used to obtain one single
7792 @file{.html} file per manual, without node separators.
7793 @example
7794 AM_MAKEINFOHTMLFLAGS = --no-headers --no-split
7795 @end example
7797 @code{AM_MAKEINFOHTMLFLAGS} defaults to @samp{$(AM_MAKEINFOFLAGS)}.
7798 This means that defining @code{AM_MAKEINFOFLAGS} without defining
7799 @code{AM_MAKEINFOHTMLFLAGS} will impact builds of both @file{.info}
7800 and @file{.html} files.
7802 @item TEXI2DVI
7803 The name of the command that converts a @file{.texi} file into a
7804 @file{.dvi} file.  This defaults to @samp{texi2dvi}, a script that ships
7805 with the Texinfo package.
7807 @item TEXI2PDF
7808 The name of the command that translates a @file{.texi} file into a
7809 @file{.pdf} file.  This defaults to @samp{$(TEXI2DVI) --pdf --batch}.
7811 @item DVIPS
7812 The name of the command that builds a @file{.ps} file out of a
7813 @file{.dvi} file.  This defaults to @samp{dvips}.
7815 @item TEXINFO_TEX
7817 If your package has Texinfo files in many directories, you can use the
7818 variable @code{TEXINFO_TEX} to tell Automake where to find the canonical
7819 @file{texinfo.tex} for your package.  The value of this variable should
7820 be the relative path from the current @file{Makefile.am} to
7821 @file{texinfo.tex}:
7823 @example
7824 TEXINFO_TEX = ../doc/texinfo.tex
7825 @end example
7826 @end vtable
7829 @node Man Pages
7830 @section Man Pages
7832 @cindex @code{_MANS} primary, defined
7833 @cindex @code{MANS} primary, defined
7834 @cindex Primary variable, @code{MANS}
7836 @vindex _MANS
7837 @vindex man_MANS
7838 A package can also include man pages (but see the GNU standards on this
7839 matter, @ref{Man Pages, , , standards, The GNU Coding Standards}.)  Man
7840 pages are declared using the @code{MANS} primary.  Generally the
7841 @code{man_MANS} variable is used.  Man pages are automatically installed in
7842 the correct subdirectory of @code{mandir}, based on the file extension.
7844 File extensions such as @file{.1c} are handled by looking for the valid
7845 part of the extension and using that to determine the correct
7846 subdirectory of @code{mandir}.  Valid section names are the digits
7847 @samp{0} through @samp{9}, and the letters @samp{l} and @samp{n}.
7849 Sometimes developers prefer to name a man page something like
7850 @file{foo.man} in the source, and then rename it to have the correct
7851 suffix, for example @file{foo.1}, when installing the file.  Automake
7852 also supports this mode.  For a valid section named @var{SECTION},
7853 there is a corresponding directory named @samp{man@var{SECTION}dir},
7854 and a corresponding @code{_MANS} variable.  Files listed in such a
7855 variable are installed in the indicated section.  If the file already
7856 has a valid suffix, then it is installed as-is; otherwise the file
7857 suffix is changed to match the section.
7859 For instance, consider this example:
7860 @example
7861 man1_MANS = rename.man thesame.1 alsothesame.1c
7862 @end example
7864 @noindent
7865 In this case, @file{rename.man} will be renamed to @file{rename.1} when
7866 installed, but the other files will keep their names.
7868 @cindex Target, @code{install-man}
7869 @cindex Option, @option{no-installman}
7870 @cindex @code{install-man} target
7871 @cindex @option{no-installman} option
7872 @opindex no-installman
7873 @trindex install-man
7875 By default, man pages are installed by @samp{make install}.  However,
7876 since the GNU project does not require man pages, many maintainers do
7877 not expend effort to keep the man pages up to date.  In these cases, the
7878 @option{no-installman} option will prevent the man pages from being
7879 installed by default.  The user can still explicitly install them via
7880 @samp{make install-man}.
7882 For fast installation, with many files it is preferable to use
7883 @samp{man@var{SECTION}_MANS} over @samp{man_MANS} as well as files that
7884 do not need to be renamed.
7886 Man pages are not currently considered to be source, because it is not
7887 uncommon for man pages to be automatically generated.  Therefore they
7888 are not automatically included in the distribution.  However, this can
7889 be changed by use of the @code{dist_} prefix.  For instance here is
7890 how to distribute and install the two man pages of GNU @command{cpio}
7891 (which includes both Texinfo documentation and man pages):
7893 @example
7894 dist_man_MANS = cpio.1 mt.1
7895 @end example
7897 The @code{nobase_} prefix is meaningless for man pages and is
7898 disallowed.
7900 @vindex notrans_
7901 @cindex @code{notrans_} prefix
7902 @cindex Man page renaming, avoiding
7903 @cindex Avoiding man page renaming
7905 Executables and manpages may be renamed upon installation
7906 (@pxref{Renaming}).  For manpages this can be avoided by use of the
7907 @code{notrans_} prefix.  For instance, suppose an executable @samp{foo}
7908 allowing to access a library function @samp{foo} from the command line.
7909 The way to avoid renaming of the @file{foo.3} manpage is:
7911 @example
7912 man_MANS = foo.1
7913 notrans_man_MANS = foo.3
7914 @end example
7916 @cindex @code{notrans_} and @code{dist_} or @code{nodist_}
7917 @cindex @code{dist_} and @code{notrans_}
7918 @cindex @code{nodist_} and @code{notrans_}
7920 @samp{notrans_} must be specified first when used in conjunction with
7921 either @samp{dist_} or @samp{nodist_} (@pxref{Fine-grained Distribution
7922 Control}).  For instance:
7924 @example
7925 notrans_dist_man3_MANS = bar.3
7926 @end example
7928 @node Install
7929 @chapter What Gets Installed
7931 @cindex Installation support
7932 @cindex @samp{make install} support
7934 Naturally, Automake handles the details of actually installing your
7935 program once it has been built.  All files named by the various
7936 primaries are automatically installed in the appropriate places when the
7937 user runs @samp{make install}.
7939 @menu
7940 * Basics of Installation::      What gets installed where
7941 * The Two Parts of Install::    Installing data and programs separately
7942 * Extending Installation::      Adding your own rules for installation
7943 * Staged Installs::             Installation in a temporary location
7944 * Install Rules for the User::  Useful additional rules
7945 @end menu
7947 @node Basics of Installation
7948 @section Basics of Installation
7950 A file named in a primary is installed by copying the built file into
7951 the appropriate directory.  The base name of the file is used when
7952 installing.
7954 @example
7955 bin_PROGRAMS = hello subdir/goodbye
7956 @end example
7958 In this example, both @samp{hello} and @samp{goodbye} will be installed
7959 in @samp{$(bindir)}.
7961 Sometimes it is useful to avoid the basename step at install time.  For
7962 instance, you might have a number of header files in subdirectories of
7963 the source tree that are laid out precisely how you want to install
7964 them.  In this situation you can use the @code{nobase_} prefix to
7965 suppress the base name step.  For example:
7967 @example
7968 nobase_include_HEADERS = stdio.h sys/types.h
7969 @end example
7971 @noindent
7972 will install @file{stdio.h} in @samp{$(includedir)} and @file{types.h}
7973 in @samp{$(includedir)/sys}.
7975 For most file types, Automake will install multiple files at once, while
7976 avoiding command line length issues (@pxref{Length Limitations}).  Since
7977 some @command{install} programs will not install the same file twice in
7978 one invocation, you may need to ensure that file lists are unique within
7979 one variable such as @samp{nobase_include_HEADERS} above.
7981 You should not rely on the order in which files listed in one variable
7982 are installed.  Likewise, to cater for parallel make, you should not
7983 rely on any particular file installation order even among different
7984 file types (library dependencies are an exception here).
7987 @node The Two Parts of Install
7988 @section The Two Parts of Install
7990 Automake generates separate @code{install-data} and @code{install-exec}
7991 rules, in case the installer is installing on multiple machines that
7992 share directory structure---these targets allow the machine-independent
7993 parts to be installed only once.  @code{install-exec} installs
7994 platform-dependent files, and @code{install-data} installs
7995 platform-independent files.  The @code{install} target depends on both
7996 of these targets.  While Automake tries to automatically segregate
7997 objects into the correct category, the @file{Makefile.am} author is, in
7998 the end, responsible for making sure this is done correctly.
7999 @trindex install-data
8000 @trindex install-exec
8001 @trindex install
8002 @cindex Install, two parts of
8004 Variables using the standard directory prefixes @samp{data},
8005 @samp{info}, @samp{man}, @samp{include}, @samp{oldinclude},
8006 @samp{pkgdata}, or @samp{pkginclude} are installed by
8007 @code{install-data}.
8009 Variables using the standard directory prefixes @samp{bin},
8010 @samp{sbin}, @samp{libexec}, @samp{sysconf}, @samp{localstate},
8011 @samp{lib}, or @samp{pkglib} are installed by @code{install-exec}.
8013 For instance, @code{data_DATA} files are installed by @code{install-data},
8014 while @code{bin_PROGRAMS} files are installed by @code{install-exec}.
8016 Any variable using a user-defined directory prefix with @samp{exec} in
8017 the name (e.g., @code{myexecbin_PROGRAMS}) is installed by
8018 @code{install-exec}.  All other user-defined prefixes are installed by
8019 @code{install-data}.
8021 @node Extending Installation
8022 @section Extending Installation
8024 It is possible to extend this mechanism by defining an
8025 @code{install-exec-local} or @code{install-data-local} rule.  If these
8026 rules exist, they will be run at @samp{make install} time.  These
8027 rules can do almost anything; care is required.
8028 @trindex install-exec-local
8029 @trindex install-data-local
8031 Automake also supports two install hooks, @code{install-exec-hook} and
8032 @code{install-data-hook}.  These hooks are run after all other install
8033 rules of the appropriate type, exec or data, have completed.  So, for
8034 instance, it is possible to perform post-installation modifications
8035 using an install hook.  @xref{Extending}, for some examples.
8036 @cindex Install hook
8038 @node Staged Installs
8039 @section Staged Installs
8041 @vindex DESTDIR
8042 Automake generates support for the @code{DESTDIR} variable in all
8043 install rules.  @code{DESTDIR} is used during the @samp{make install}
8044 step to relocate install objects into a staging area.  Each object and
8045 path is prefixed with the value of @code{DESTDIR} before being copied
8046 into the install area.  Here is an example of typical DESTDIR usage:
8048 @example
8049 mkdir /tmp/staging &&
8050 make DESTDIR=/tmp/staging install
8051 @end example
8053 The @command{mkdir} command avoids a security problem if the attacker
8054 creates a symbolic link from @file{/tmp/staging} to a victim area;
8055 then @command{make} places install objects in a directory tree built under
8056 @file{/tmp/staging}.  If @file{/gnu/bin/foo} and
8057 @file{/gnu/share/aclocal/foo.m4} are to be installed, the above command
8058 would install @file{/tmp/staging/gnu/bin/foo} and
8059 @file{/tmp/staging/gnu/share/aclocal/foo.m4}.
8061 This feature is commonly used to build install images and packages
8062 (@pxref{DESTDIR}).
8064 Support for @code{DESTDIR} is implemented by coding it directly into
8065 the install rules.  If your @file{Makefile.am} uses a local install
8066 rule (e.g., @code{install-exec-local}) or an install hook, then you
8067 must write that code to respect @code{DESTDIR}.
8069 @xref{Makefile Conventions, , , standards, The GNU Coding Standards},
8070 for another usage example.
8072 @node Install Rules for the User
8073 @section Install Rules for the User
8075 Automake also generates rules for targets @code{uninstall},
8076 @code{installdirs}, and @code{install-strip}.
8077 @trindex uninstall
8078 @trindex installdirs
8079 @trindex install-strip
8081 Automake supports @code{uninstall-local} and @code{uninstall-hook}.
8082 There is no notion of separate uninstalls for ``exec'' and ``data'', as
8083 these features would not provide additional functionality.
8085 Note that @code{uninstall} is not meant as a replacement for a real
8086 packaging tool.
8089 @node Clean
8090 @chapter What Gets Cleaned
8092 @cindex @samp{make clean} support
8094 The GNU Makefile Standards specify a number of different clean rules.
8095 @xref{Standard Targets, , Standard Targets for Users, standards,
8096 The GNU Coding Standards}.
8098 Generally the files that can be cleaned are determined automatically by
8099 Automake.  Of course, Automake also recognizes some variables that can
8100 be defined to specify additional files to clean.  These variables are
8101 @code{MOSTLYCLEANFILES}, @code{CLEANFILES}, @code{DISTCLEANFILES}, and
8102 @code{MAINTAINERCLEANFILES}.
8103 @vindex MOSTLYCLEANFILES
8104 @vindex CLEANFILES
8105 @vindex DISTCLEANFILES
8106 @vindex MAINTAINERCLEANFILES
8108 @trindex mostlyclean-local
8109 @trindex clean-local
8110 @trindex distclean-local
8111 @trindex maintainer-clean-local
8112 When cleaning involves more than deleting some hard-coded list of
8113 files, it is also possible to supplement the cleaning rules with your
8114 own commands.  Simply define a rule for any of the
8115 @code{mostlyclean-local}, @code{clean-local}, @code{distclean-local},
8116 or @code{maintainer-clean-local} targets (@pxref{Extending}).  A common
8117 case is deleting a directory, for instance, a directory created by the
8118 test suite:
8120 @example
8121 clean-local:
8122         -rm -rf testSubDir
8123 @end example
8125 As the GNU Standards aren't always explicit as to which files should
8126 be removed by which rule, we've adopted a heuristic that we believe
8127 was first formulated by Fran@,{c}ois Pinard:
8129 @itemize @bullet
8130 @item
8131 If @command{make} built it, and it is commonly something that one would
8132 want to rebuild (for instance, a @file{.o} file), then
8133 @code{mostlyclean} should delete it.
8135 @item
8136 Otherwise, if @command{make} built it, then @code{clean} should delete it.
8138 @item
8139 If @command{configure} built it, then @code{distclean} should delete it.
8141 @item
8142 If the maintainer built it (for instance, a @file{.info} file), then
8143 @code{maintainer-clean} should delete it.  However
8144 @code{maintainer-clean} should not delete anything that needs to exist
8145 in order to run @samp{./configure && make}.
8146 @end itemize
8148 We recommend that you follow this same set of heuristics in your
8149 @file{Makefile.am}.
8152 @node Dist
8153 @chapter What Goes in a Distribution
8155 @menu
8156 * Basics of Distribution::      Files distributed by default
8157 * Fine-grained Distribution Control::  @code{dist_} and @code{nodist_} prefixes
8158 * The dist Hook::               A target for last-minute distribution changes
8159 * Checking the Distribution::   @samp{make distcheck} explained
8160 * The Types of Distributions::  A variety of formats and compression methods
8161 @end menu
8163 @node Basics of Distribution
8164 @section Basics of Distribution
8166 @cindex @samp{make dist}
8168 @vindex PACKAGE
8169 @vindex VERSION
8170 @trindex dist
8171 The @code{dist} rule in the generated @file{Makefile.in} can be used
8172 to generate a gzipped @code{tar} file and other flavors of archive for
8173 distribution.  The file is named based on the @code{PACKAGE} and
8174 @code{VERSION} variables defined by @code{AM_INIT_AUTOMAKE}
8175 (@pxref{Macros}); more precisely the gzipped @code{tar} file is named
8176 @samp{@var{package}-@var{version}.tar.gz}.
8177 @vindex GZIP_ENV
8178 You can use the @command{make} variable @code{GZIP_ENV} to control how gzip
8179 is run.  The default setting is @option{--best}.
8181 @cindex @code{m4_include}, distribution
8182 @cindex @code{include}, distribution
8183 @acindex m4_include
8184 @cmindex include
8185 For the most part, the files to distribute are automatically found by
8186 Automake: all source files are automatically included in a distribution,
8187 as are all @file{Makefile.am}s and @file{Makefile.in}s.  Automake also
8188 has a built-in list of commonly used files that are automatically
8189 included if they are found in the current directory (either physically,
8190 or as the target of a @file{Makefile.am} rule).  This list is printed by
8191 @samp{automake --help}.  Also, files that are read by @command{configure}
8192 (i.e.@: the source files corresponding to the files specified in various
8193 Autoconf macros such as @code{AC_CONFIG_FILES} and siblings) are
8194 automatically distributed.  Files included in @file{Makefile.am}s (using
8195 @code{include}) or in @file{configure.ac} (using @code{m4_include}), and
8196 helper scripts installed with @samp{automake --add-missing} are also
8197 distributed.
8199 @vindex EXTRA_DIST
8200 Still, sometimes there are files that must be distributed, but which
8201 are not covered in the automatic rules.  These files should be listed in
8202 the @code{EXTRA_DIST} variable.  You can mention files from
8203 subdirectories in @code{EXTRA_DIST}.
8205 You can also mention a directory in @code{EXTRA_DIST}; in this case the
8206 entire directory will be recursively copied into the distribution.
8207 Please note that this will also copy @emph{everything} in the directory,
8208 including CVS/RCS version control files.  We recommend against using
8209 this feature.
8211 @vindex SUBDIRS
8212 @vindex DIST_SUBDIRS
8213 If you define @code{SUBDIRS}, Automake will recursively include the
8214 subdirectories in the distribution.  If @code{SUBDIRS} is defined
8215 conditionally (@pxref{Conditionals}), Automake will normally include
8216 all directories that could possibly appear in @code{SUBDIRS} in the
8217 distribution.  If you need to specify the set of directories
8218 conditionally, you can set the variable @code{DIST_SUBDIRS} to the
8219 exact list of subdirectories to include in the distribution
8220 (@pxref{Conditional Subdirectories}).
8223 @node Fine-grained Distribution Control
8224 @section Fine-grained Distribution Control
8226 @vindex dist_
8227 @vindex nodist_
8228 Sometimes you need tighter control over what does @emph{not} go into the
8229 distribution; for instance, you might have source files that are
8230 generated and that you do not want to distribute.  In this case
8231 Automake gives fine-grained control using the @code{dist} and
8232 @code{nodist} prefixes.  Any primary or @code{_SOURCES} variable can be
8233 prefixed with @code{dist_} to add the listed files to the distribution.
8234 Similarly, @code{nodist_} can be used to omit the files from the
8235 distribution.
8237 As an example, here is how you would cause some data to be distributed
8238 while leaving some source code out of the distribution:
8240 @example
8241 dist_data_DATA = distribute-this
8242 bin_PROGRAMS = foo
8243 nodist_foo_SOURCES = do-not-distribute.c
8244 @end example
8246 @node The dist Hook
8247 @section The dist Hook
8249 @trindex dist-hook
8251 Occasionally it is useful to be able to change the distribution before
8252 it is packaged up.  If the @code{dist-hook} rule exists, it is run
8253 after the distribution directory is filled, but before the actual tar
8254 (or shar) file is created.  One way to use this is for distributing
8255 files in subdirectories for which a new @file{Makefile.am} is overkill:
8257 @example
8258 dist-hook:
8259         mkdir $(distdir)/random
8260         cp -p $(srcdir)/random/a1 $(srcdir)/random/a2 $(distdir)/random
8261 @end example
8263 Another way to use this is for removing unnecessary files that get
8264 recursively included by specifying a directory in EXTRA_DIST:
8266 @example
8267 EXTRA_DIST = doc
8269 dist-hook:
8270         rm -rf `find $(distdir)/doc -name CVS`
8271 @end example
8273 @vindex distdir
8274 @vindex top_distdir
8275 Two variables that come handy when writing @code{dist-hook} rules are
8276 @samp{$(distdir)} and @samp{$(top_distdir)}.
8278 @samp{$(distdir)} points to the directory where the @code{dist} rule
8279 will copy files from the current directory before creating the
8280 tarball.  If you are at the top-level directory, then @samp{distdir =
8281 $(PACKAGE)-$(VERSION)}.  When used from subdirectory named
8282 @file{foo/}, then @samp{distdir = ../$(PACKAGE)-$(VERSION)/foo}.
8283 @samp{$(distdir)} can be a relative or absolute path, do not assume
8284 any form.
8286 @samp{$(top_distdir)} always points to the root directory of the
8287 distributed tree.  At the top-level it's equal to @samp{$(distdir)}.
8288 In the @file{foo/} subdirectory
8289 @samp{top_distdir = ../$(PACKAGE)-$(VERSION)}.
8290 @samp{$(top_distdir)} too can be a relative or absolute path.
8292 Note that when packages are nested using @code{AC_CONFIG_SUBDIRS}
8293 (@pxref{Subpackages}), then @samp{$(distdir)} and
8294 @samp{$(top_distdir)} are relative to the package where @samp{make
8295 dist} was run, not to any sub-packages involved.
8297 @node Checking the Distribution
8298 @section Checking the Distribution
8300 @cindex @samp{make distcheck}
8301 @cindex @samp{make distcleancheck}
8302 @vindex distcleancheck_listfiles
8303 @cindex @samp{make distuninstallcheck}
8304 @vindex distuninstallcheck_listfiles
8306 @trindex distcheck
8307 Automake also generates a @code{distcheck} rule that can be of help to
8308 ensure that a given distribution will actually work.  @code{distcheck}
8309 makes a distribution, then tries to do a @code{VPATH} build
8310 (@pxref{VPATH Builds}), run the test suite, and finally make another
8311 tarball to ensure the distribution is self-contained.
8313 @vindex DISTCHECK_CONFIGURE_FLAGS
8314 Building the package involves running @samp{./configure}.  If you need
8315 to supply additional flags to @command{configure}, define them in the
8316 @code{DISTCHECK_CONFIGURE_FLAGS} variable, either in your top-level
8317 @file{Makefile.am}, or on the command line when invoking @command{make}.
8319 @trindex distcheck-hook
8320 If the @code{distcheck-hook} rule is defined in your top-level
8321 @file{Makefile.am}, then it will be invoked by @code{distcheck} after
8322 the new distribution has been unpacked, but before the unpacked copy
8323 is configured and built.  Your @code{distcheck-hook} can do almost
8324 anything, though as always caution is advised.  Generally this hook is
8325 used to check for potential distribution errors not caught by the
8326 standard mechanism.  Note that @code{distcheck-hook} as well as
8327 @code{DISTCHECK_CONFIGURE_FLAGS} are not honored in a subpackage
8328 @file{Makefile.am}, but the @code{DISTCHECK_CONFIGURE_FLAGS} are
8329 passed down to the @command{configure} script of the subpackage.
8331 @trindex distcleancheck
8332 @vindex DISTCLEANFILES
8333 @vindex distcleancheck_listfiles
8334 Speaking of potential distribution errors, @code{distcheck} also
8335 ensures that the @code{distclean} rule actually removes all built
8336 files.  This is done by running @samp{make distcleancheck} at the end of
8337 the @code{VPATH} build.  By default, @code{distcleancheck} will run
8338 @code{distclean} and then make sure the build tree has been emptied by
8339 running @samp{$(distcleancheck_listfiles)}.  Usually this check will
8340 find generated files that you forgot to add to the @code{DISTCLEANFILES}
8341 variable (@pxref{Clean}).
8343 The @code{distcleancheck} behavior should be OK for most packages,
8344 otherwise you have the possibility to override the definition of
8345 either the @code{distcleancheck} rule, or the
8346 @samp{$(distcleancheck_listfiles)} variable.  For instance, to disable
8347 @code{distcleancheck} completely, add the following rule to your
8348 top-level @file{Makefile.am}:
8350 @example
8351 distcleancheck:
8352         @@:
8353 @end example
8355 If you want @code{distcleancheck} to ignore built files that have not
8356 been cleaned because they are also part of the distribution, add the
8357 following definition instead:
8359 @example
8360 distcleancheck_listfiles = \
8361   find . -type f -exec sh -c 'test -f $(srcdir)/$$1 || echo $$1' \
8362        sh '@{@}' ';'
8363 @end example
8365 The above definition is not the default because it's usually an error if
8366 your Makefiles cause some distributed files to be rebuilt when the user
8367 build the package.  (Think about the user missing the tool required to
8368 build the file; or if the required tool is built by your package,
8369 consider the cross-compilation case where it can't be run.)  There is
8370 a FAQ entry about this (@pxref{distcleancheck}), make sure you read it
8371 before playing with @code{distcleancheck_listfiles}.
8373 @code{distcheck} also checks that the @code{uninstall} rule works
8374 properly, both for ordinary and @code{DESTDIR} builds.  It does this
8375 by invoking @samp{make uninstall}, and then it checks the install tree
8376 to see if any files are left over.  This check will make sure that you
8377 correctly coded your @code{uninstall}-related rules.
8379 By default, the checking is done by the @code{distuninstallcheck} rule,
8380 and the list of files in the install tree is generated by
8381 @samp{$(distuninstallcheck_listfiles)} (this is a variable whose value is
8382 a shell command to run that prints the list of files to stdout).
8384 Either of these can be overridden to modify the behavior of
8385 @code{distcheck}.  For instance, to disable this check completely, you
8386 would write:
8388 @example
8389 distuninstallcheck:
8390         @@:
8391 @end example
8393 @node The Types of Distributions
8394 @section The Types of Distributions
8396 Automake generates rules to provide archives of the project for
8397 distributions in various formats.  Their targets are:
8399 @table @asis
8400 @item @code{dist-bzip2}
8401 Generate a bzip2 tar archive of the distribution.  bzip2 archives are
8402 frequently smaller than gzipped archives.
8403 @trindex dist-bzip2
8405 @item @code{dist-gzip}
8406 Generate a gzip tar archive of the distribution.
8407 @trindex dist-gzip
8409 @item @code{dist-lzma}
8410 Generate an @samp{lzma} tar archive of the distribution.  @command{lzma}
8411 archives are frequently smaller than @command{bzip2}-compressed archives.
8412 @trindex dist-lzma
8414 @item @code{dist-shar}
8415 Generate a shar archive of the distribution.
8416 @trindex dist-shar
8418 @item @code{dist-xz}
8419 Generate an @samp{xz} tar archive of the distribution.  @command{xz}
8420 archives are frequently smaller than @command{bzip2}-compressed archives.
8421 The @samp{xz} format will soon (early 2009) displace the @samp{lzma} format.
8422 @trindex dist-xz
8424 @item @code{dist-zip}
8425 Generate a zip archive of the distribution.
8426 @trindex dist-zip
8428 @item @code{dist-tarZ}
8429 Generate a compressed tar archive of
8430 the distribution.
8431 @trindex dist-tarZ
8432 @end table
8434 The rule @code{dist} (and its historical synonym @code{dist-all}) will
8435 create archives in all the enabled formats, @ref{Options}.  By
8436 default, only the @code{dist-gzip} target is hooked to @code{dist}.
8439 @node Tests
8440 @chapter Support for test suites
8442 @cindex Test suites
8443 @cindex @code{make check}
8444 @trindex check
8446 Automake supports three forms of test suites, the first two of which
8447 are very similar.
8449 @menu
8450 * Simple Tests::                Listing programs and scripts in @code{TESTS}
8451 * Simple Tests using parallel-tests::  More powerful test driver
8452 * DejaGnu Tests::               Interfacing with the external testing framework
8453 * Install Tests::               Running tests on installed packages
8454 @end menu
8456 @node Simple Tests
8457 @section Simple Tests
8459 If the variable @code{TESTS} is defined, its value is taken to be a
8460 list of programs or scripts to run in order to do the testing.
8461 Programs needing data files should look for them in @code{srcdir}
8462 (which is both an environment variable and a make variable) so they
8463 work when building in a separate directory (@pxref{Build Directories,
8464 , Build Directories , autoconf, The Autoconf Manual}), and in
8465 particular for the @code{distcheck} rule (@pxref{Checking the
8466 Distribution}).
8468 For each of the @code{TESTS}, the result of execution is printed along
8469 with the test name, where @code{PASS} denotes a successful test,
8470 @code{FAIL} denotes a failed test, @code{XFAIL} an expected failure,
8471 @code{XPASS} an unexpected pass for a test that is supposed to fail,
8472 and @code{SKIP} denotes a skipped test.
8474 @cindex Exit status 77, special interpretation
8476 The number of failures will be printed at the end of the run.  If a
8477 given test program exits with a status of 77, then its result is ignored
8478 in the final count.  This feature allows non-portable tests to be
8479 ignored in environments where they don't make sense.
8481 @vindex AM_COLOR_TESTS
8482 If the Automake option @code{color-tests} is used (@pxref{Options})
8483 and standard output is connected to a capable terminal, then the test
8484 results and the summary are colored appropriately.  The user can disable
8485 colored output by setting the @command{make} variable
8486 @samp{AM_COLOR_TESTS=no}, or force colored output even without a connecting
8487 terminal with @samp{AM_COLOR_TESTS=always}.
8489 @vindex TESTS
8490 @vindex TESTS_ENVIRONMENT
8491 The variable @code{TESTS_ENVIRONMENT} can be used to set environment
8492 variables for the test run; the environment variable @env{srcdir} is
8493 set in the rule.  If all your test programs are scripts, you can also
8494 set @code{TESTS_ENVIRONMENT} to an invocation of the shell (e.g.
8495 @samp{$(SHELL) -x} can be useful for debugging the tests), or any other
8496 interpreter.  For instance the following setup is used by the Automake
8497 package to run four tests in Perl.
8498 @example
8499 TESTS_ENVIRONMENT = $(PERL) -Mstrict -I $(top_srcdir)/lib -w
8500 TESTS = Condition.pl DisjConditions.pl Version.pl Wrap.pl
8501 @end example
8504 @cindex Tests, expected failure
8505 @cindex Expected test failure
8507 You may define the variable @code{XFAIL_TESTS} to a list of tests
8508 (usually a subset of @code{TESTS}) that are expected to fail.  This will
8509 reverse the result of those tests.
8510 @vindex XFAIL_TESTS
8512 Automake ensures that each file listed in @code{TESTS} is built before
8513 any tests are run; you can list both source and derived programs (or
8514 scripts) in @code{TESTS}; the generated rule will look both in
8515 @code{srcdir} and @file{.}.  For instance, you might want to run a C
8516 program as a test.  To do this you would list its name in @code{TESTS}
8517 and also in @code{check_PROGRAMS}, and then specify it as you would
8518 any other program.
8520 Programs listed in @code{check_PROGRAMS} (and @code{check_LIBRARIES},
8521 @code{check_LTLIBRARIES}...) are only built during @code{make check},
8522 not during @code{make all}.  You should list there any program needed
8523 by your tests that does not need to be built by @code{make all}.  Note
8524 that @code{check_PROGRAMS} are @emph{not} automatically added to
8525 @code{TESTS} because @code{check_PROGRAMS} usually lists programs used
8526 by the tests, not the tests themselves.  Of course you can set
8527 @code{TESTS = $(check_PROGRAMS)} if all your programs are test cases.
8530 @node Simple Tests using parallel-tests
8531 @section Simple Tests using @samp{parallel-tests}
8532 @cindex @option{parallel-tests}, Using
8534 The option @option{parallel-tests} (@pxref{Options}) enables a test
8535 suite driver that is mostly compatible to the simple test driver described
8536 in the previous section, but provides a few more features and slightly different
8537 semantics.  It features concurrent execution of tests with @code{make -j},
8538 allows to specify inter-test dependencies, lazy reruns of tests that
8539 have not completed in a prior run, summary and verbose output in
8540 @samp{RST} (reStructuredText) and @samp{HTML} format, and hard errors
8541 for exceptional failures.  Similar to the simple test driver,
8542 @code{TESTS_ENVIRONMENT}, @code{AM_COLOR_TESTS}, @code{XFAIL_TESTS}, and
8543 the @code{check_*} variables are honored, and the environment variable
8544 @env{srcdir} is set during test execution.
8546 This test driver is still experimental and may undergo changes in order
8547 to satisfy additional portability requirements.
8549 @vindex TEST_SUITE_LOG
8550 @vindex TESTS
8551 The driver operates by defining a set of @command{make} rules to create
8552 a summary log file, @code{TEST_SUITE_LOG}, which defaults to
8553 @file{test-suite.log} and requires a @file{.log} suffix.  This file
8554 depends upon log files created for each single test program listed in
8555 @code{TESTS}, which in turn contain all output produced by the
8556 corresponding tests.
8558 @vindex TEST_EXTENSIONS
8559 @vindex TEST_LOGS
8560 Each log file is created when the corresponding test has completed.
8561 The set of log files is listed in the read-only variable
8562 @code{TEST_LOGS}, and defaults to @code{TESTS}, with the executable
8563 extension if any (@pxref{EXEEXT}), as well as any suffix listed in
8564 @code{TEST_EXTENSIONS} removed, and @file{.log} appended.
8565 @code{TEST_EXTENSIONS} defaults to @file{.test}.  Results are undefined
8566 if a test file name ends in several concatenated suffixes.
8568 @vindex _LOG_COMPILE
8569 @vindex _LOG_COMPILER
8570 @vindex _LOG_FLAGS
8571 @vindex LOG_COMPILE
8572 @vindex LOG_COMPILER
8573 @vindex LOG_FLAGS
8574 @vindex @var{EXT}_LOG_COMPILE
8575 @vindex @var{EXT}_LOG_COMPILER
8576 @vindex @var{EXT}_LOG_FLAGS
8577 @vindex AM_@var{EXT}_LOG_FLAGS
8578 @vindex AM_LOG_FLAGS
8579 For tests that match an extension @code{.@var{ext}} listed in
8580 @code{TEST_EXTENSIONS}, you can provide a test driver using the variable
8581 @code{@var{ext}_LOG_COMPILER} (note the upper-case extension) and pass
8582 options in @code{AM_@var{ext}_LOG_FLAGS} and allow the user to pass
8583 options in @code{@var{ext}_LOG_FLAGS}.  It will cause all tests with
8584 this extension to be called with this driver.  For all tests without a
8585 registered extension, the variables @code{LOG_COMPILER},
8586 @code{AM_LOG_FLAGS}, and @code{LOG_FLAGS} may be used.  For example,
8588 @example
8589 TESTS = foo.pl bar.py baz
8590 TEST_EXTENSIONS = .pl .py
8591 PL_LOG_COMPILER = $(PERL)
8592 AM_PL_LOG_FLAGS = -w
8593 PY_LOG_COMPILER = $(PYTHON)
8594 AM_PY_LOG_FLAGS = -v
8595 LOG_COMPILER = ./wrapper-script
8596 AM_LOG_FLAGS = -d
8597 @end example
8599 @noindent
8600 will invoke @samp{$(PERL) -w foo.pl}, @samp{$(PYTHON) -v bar.py},
8601 and @samp{./wrapper-script -d baz} to produce @file{foo.log},
8602 @file{bar.log}, and @file{baz.log}, respectively.  The
8603 @samp{TESTS_ENVIRONMENT} variable is still expanded before the driver,
8604 but should be reserved for the user.
8606 @vindex VERBOSE
8607 As with the simple driver above, by default one status line is printed
8608 per completed test, and a short summary after the suite has completed.
8609 However, standard output and standard error of the test are redirected
8610 to a per-test log file, so that parallel execution does not produce
8611 intermingled output.  The output from failed tests is collected in the
8612 @file{test-suite.log} file.  If the variable @samp{VERBOSE} is set, this
8613 file is output after the summary.  For best results, the tests should be
8614 verbose by default now.
8616 @trindex mostlyclean
8617 @trindex check-html
8618 @vindex RST2HTML
8619 @vindex TEST_SUITE_HTML
8620 With @code{make check-html}, the log files may be converted from RST
8621 (reStructuredText, see @uref{http://docutils.sourceforge.net/@/rst.html})
8622 to HTML using @samp{RST2HTML}, which defaults to @command{rst2html} or
8623 @command{rst2html.py}.  The variable @samp{TEST_SUITE_HTML} contains the
8624 set of converted log files.  The log and HTML files are removed upon
8625 @code{make mostlyclean}.
8627 @vindex DISABLE_HARD_ERRORS
8628 @cindex Exit status 99, special interpretation
8629 @cindex hard error
8630 Even in the presence of expected failures (see @code{XFAIL_TESTS}, there
8631 may be conditions under which a test outcome needs attention.  For
8632 example, with test-driven development, you may write tests for features
8633 that you have not implemented yet, and thus mark these tests as expected
8634 to fail.  However, you may still be interested in exceptional conditions,
8635 for example, tests that fail due to a segmentation violation or another
8636 error that is independent of the feature awaiting implementation.
8637 Tests can exit with an exit status of 99 to signal such a @emph{hard
8638 error}.  Unless the variable @code{DISABLE_HARD_ERRORS} is set to a
8639 nonempty value, such tests will be counted as failed.
8641 By default, the test suite driver will run all tests, but there are
8642 several ways to limit the set of tests that are run:
8644 @itemize @bullet
8645 @item
8646 You can set the @code{TESTS} variable, similarly to how you can with
8647 the simple test driver from the previous section.  For example, you can
8648 use a command like this to run only a subset of the tests:
8650 @example
8651 env TESTS="foo.test bar.test" make -e check
8652 @end example
8654 @item
8655 You can set the @code{TEST_LOGS} variable.  By default, this variable is
8656 computed at @command{make} run time from the value of @code{TESTS} as
8657 described above.  For example, you can use the following:
8659 @example
8660 set x subset*.log; shift
8661 env TEST_LOGS="foo.log $*" make -e check
8662 @end example
8664 @item
8665 @vindex RECHECK_LOGS
8666 @cindex lazy test execution
8667 By default, the test driver removes all old per-test log files before it
8668 starts running tests to regenerate them.  The variable
8669 @code{RECHECK_LOGS} contains the set of log files which are removed.
8670 @code{RECHECK_LOGS} defaults to @code{TEST_LOGS}, which means all tests
8671 need to be rechecked.  By overriding this variable, you can choose which
8672 tests need to be reconsidered.  For example, you can lazily rerun only
8673 those tests which are outdated, i.e., older than their prerequisite test
8674 files, by setting this variable to the empty value:
8676 @example
8677 env RECHECK_LOGS= make -e check
8678 @end example
8680 @item
8681 @trindex recheck
8682 @trindex recheck-html
8683 You can ensure that all tests are rerun which have failed or passed
8684 unexpectedly, by running @code{make recheck} in the test directory.
8685 This convenience target will set @code{RECHECK_LOGS} appropriately
8686 before invoking the main test driver.  The @code{recheck-html} target
8687 does the same as @code{recheck} but again converts the resulting log
8688 file in HTML format, like the @code{check-html} target.
8689 @end itemize
8691 In order to guarantee an ordering between tests even with @code{make
8692 -j@var{N}}, dependencies between the corresponding log files may be
8693 specified through usual @command{make} dependencies.  For example, the
8694 following snippet lets the test named @file{foo-execute.test} depend
8695 upon completion of the test @file{foo-compile.test}:
8697 @example
8698 TESTS = foo-compile.test foo-execute.test
8699 foo-execute.log: foo-compile.log
8700 @end example
8702 @noindent
8703 Please note that this ordering ignores the @emph{results} of required
8704 tests, thus the test @file{foo-execute.test} is run even if the test
8705 @file{foo-compile.test} failed or was skipped beforehand.  Further,
8706 please note that specifying such dependencies currently works only for
8707 tests that end in one of the suffixes listed in @code{TEST_EXTENSIONS}.
8709 Tests without such specified dependencies may be run concurrently with
8710 parallel @command{make -j@var{N}}, so be sure they are prepared for
8711 concurrent execution.
8713 @cindex Unit tests
8714 The combination of lazy test execution and correct dependencies between
8715 tests and their sources may be exploited for efficient unit testing
8716 during development.  To further speed up the edit-compile-test cycle, it
8717 may even be useful to specify compiled programs in @code{EXTRA_PROGRAMS}
8718 instead of with @code{check_PROGRAMS}, as the former allows intertwined
8719 compilation and test execution (but note that @code{EXTRA_PROGRAMS} are
8720 not cleaned automatically, @pxref{Uniform}).
8722 The variables @code{TESTS} and @code{XFAIL_TESTS} may contain
8723 conditional parts as well as configure substitutions.  In the latter
8724 case, however, certain restrictions apply: substituted test names
8725 must end with a nonempty test suffix like @file{.test}, so that one of
8726 the inference rules generated by @command{automake} can apply.  For
8727 literal test names, @command{automake} can generate per-target rules
8728 to avoid this limitation.
8730 Please note that it is currently not possible to use @code{$(srcdir)/}
8731 or @code{$(top_srcdir)/} in the @code{TESTS} variable.  This technical
8732 limitation is necessary to avoid generating test logs in the source tree
8733 and has the unfortunate consequence that it is not possible to specify
8734 distributed tests that are themselves generated by means of explicit
8735 rules, in a way that is portable to all @command{make} implementations
8736 (@pxref{Make Target Lookup,,, autoconf, The Autoconf Manual}, the
8737 semantics of FreeBSD and OpenBSD @command{make} conflict with this).
8738 In case of doubt you may want to require to use GNU @command{make},
8739 or work around the issue with inference rules to generate the tests.
8742 @node DejaGnu Tests
8743 @section DejaGnu Tests
8745 If @uref{ftp://ftp.gnu.org/gnu/dejagnu/, @command{dejagnu}} appears in
8746 @code{AUTOMAKE_OPTIONS}, then a @command{dejagnu}-based test suite is
8747 assumed.  The variable @code{DEJATOOL} is a list of names that are
8748 passed, one at a time, as the @option{--tool} argument to
8749 @command{runtest} invocations; it defaults to the name of the package.
8751 The variable @code{RUNTESTDEFAULTFLAGS} holds the @option{--tool} and
8752 @option{--srcdir} flags that are passed to dejagnu by default; this can be
8753 overridden if necessary.
8754 @vindex RUNTESTDEFAULTFLAGS
8756 The variables @code{EXPECT} and @code{RUNTEST} can
8757 also be overridden to provide project-specific values.  For instance,
8758 you will need to do this if you are testing a compiler toolchain,
8759 because the default values do not take into account host and target
8760 names.
8761 @opindex dejagnu
8762 @vindex DEJATOOL
8763 @vindex EXPECT
8764 @vindex RUNTEST
8766 The contents of the variable @code{RUNTESTFLAGS} are passed to the
8767 @code{runtest} invocation.  This is considered a ``user variable''
8768 (@pxref{User Variables}).  If you need to set @command{runtest} flags in
8769 @file{Makefile.am}, you can use @code{AM_RUNTESTFLAGS} instead.
8770 @vindex RUNTESTFLAGS
8771 @vindex AM_RUNTESTFLAGS
8773 @cindex @file{site.exp}
8774 Automake will generate rules to create a local @file{site.exp} file,
8775 defining various variables detected by @command{configure}.  This file
8776 is automatically read by DejaGnu.  It is OK for the user of a package
8777 to edit this file in order to tune the test suite.  However this is
8778 not the place where the test suite author should define new variables:
8779 this should be done elsewhere in the real test suite code.
8780 Especially, @file{site.exp} should not be distributed.
8782 For more information regarding DejaGnu test suites, see @ref{Top, , ,
8783 dejagnu, The DejaGnu Manual}.
8785 In either case, the testing is done via @samp{make check}.
8787 @node Install Tests
8788 @section Install Tests
8790 The @code{installcheck} target is available to the user as a way to
8791 run any tests after the package has been installed.  You can add tests
8792 to this by writing an @code{installcheck-local} rule.
8795 @node Rebuilding
8796 @chapter Rebuilding Makefiles
8797 @cindex rebuild rules
8799 Automake generates rules to automatically rebuild @file{Makefile}s,
8800 @file{configure}, and other derived files like @file{Makefile.in}.
8802 @acindex AM_MAINTAINER_MODE
8803 If you are using @code{AM_MAINTAINER_MODE} in @file{configure.ac}, then
8804 these automatic rebuilding rules are only enabled in maintainer mode.
8806 @vindex ACLOCAL_AMFLAGS
8807 Sometimes you need to run @command{aclocal} with an argument like
8808 @option{-I} to tell it where to find @file{.m4} files.  Since
8809 sometimes @command{make} will automatically run @command{aclocal}, you
8810 need a way to specify these arguments.  You can do this by defining
8811 @code{ACLOCAL_AMFLAGS}; this holds arguments that are passed verbatim
8812 to @command{aclocal}.  This variable is only useful in the top-level
8813 @file{Makefile.am}.
8815 @vindex CONFIG_STATUS_DEPENDENCIES
8816 @vindex CONFIGURE_DEPENDENCIES
8817 @cindex @file{version.sh}, example
8818 @cindex @file{version.m4}, example
8820 Sometimes it is convenient to supplement the rebuild rules for
8821 @file{configure} or @file{config.status} with additional dependencies.
8822 The variables @code{CONFIGURE_DEPENDENCIES} and
8823 @code{CONFIG_STATUS_DEPENDENCIES} can be used to list these extra
8824 dependencies.  These variable should be defined in all
8825 @file{Makefile}s of the tree (because these two rebuild rules are
8826 output in all them), so it is safer and easier to @code{AC_SUBST} them
8827 from @file{configure.ac}.  For instance, the following statement will
8828 cause @file{configure} to be rerun each time @file{version.sh} is
8829 changed.
8830 @example
8831 AC_SUBST([CONFIG_STATUS_DEPENDENCIES], ['$(top_srcdir)/version.sh'])
8832 @end example
8833 @noindent
8834 Note the @samp{$(top_srcdir)/} in the file name.  Since this variable
8835 is to be used in all @file{Makefile}s, its value must be sensible at
8836 any level in the build hierarchy.
8838 Beware not to mistake @code{CONFIGURE_DEPENDENCIES} for
8839 @code{CONFIG_STATUS_DEPENDENCIES}.
8841 @code{CONFIGURE_DEPENDENCIES} adds dependencies to the
8842 @file{configure} rule, whose effect is to run @command{autoconf}.  This
8843 variable should be seldom used, because @command{automake} already tracks
8844 @code{m4_include}d files.  However it can be useful when playing
8845 tricky games with @code{m4_esyscmd} or similar non-recommendable
8846 macros with side effects.
8848 @code{CONFIG_STATUS_DEPENDENCIES} adds dependencies to the
8849 @file{config.status} rule, whose effect is to run @file{configure}.
8850 This variable should therefore carry any non-standard source that may
8851 be read as a side effect of running @command{configure}, like @file{version.sh}
8852 in the example above.
8854 Speaking of @file{version.sh} scripts, we recommend against them
8855 today.  They are mainly used when the version of a package is updated
8856 automatically by a script (e.g., in daily builds).  Here is what some
8857 old-style @file{configure.ac}s may look like:
8858 @example
8859 AC_INIT
8860 . $srcdir/version.sh
8861 AM_INIT_AUTOMAKE([name], $VERSION_NUMBER)
8862 @dots{}
8863 @end example
8864 @noindent
8865 Here, @file{version.sh} is a shell fragment that sets
8866 @code{VERSION_NUMBER}.  The problem with this example is that
8867 @command{automake} cannot track dependencies (listing @file{version.sh}
8868 in @command{CONFIG_STATUS_DEPENDENCIES}, and distributing this file is up
8869 to the user), and that it uses the obsolete form of @code{AC_INIT} and
8870 @code{AM_INIT_AUTOMAKE}.  Upgrading to the new syntax is not
8871 straightforward, because shell variables are not allowed in
8872 @code{AC_INIT}'s arguments.  We recommend that @file{version.sh} be
8873 replaced by an M4 file that is included by @file{configure.ac}:
8874 @example
8875 m4_include([version.m4])
8876 AC_INIT([name], VERSION_NUMBER)
8877 AM_INIT_AUTOMAKE
8878 @dots{}
8879 @end example
8880 @noindent
8881 Here @file{version.m4} could contain something like
8882 @samp{m4_define([VERSION_NUMBER], [1.2])}.  The advantage of this
8883 second form is that @command{automake} will take care of the
8884 dependencies when defining the rebuild rule, and will also distribute
8885 the file automatically.  An inconvenience is that @command{autoconf}
8886 will now be rerun each time the version number is bumped, when only
8887 @file{configure} had to be rerun in the previous setup.
8890 @node Options
8891 @chapter Changing Automake's Behavior
8893 Various features of Automake can be controlled by options in the
8894 @file{Makefile.am}.  Such options are applied on a per-@file{Makefile}
8895 basis when listed in a special @file{Makefile} variable named
8896 @code{AUTOMAKE_OPTIONS}.  They are applied globally to all processed
8897 @file{Makefiles} when listed in the first argument of
8898 @code{AM_INIT_AUTOMAKE} in @file{configure.ac}.  Currently understood
8899 options are:
8900 @vindex AUTOMAKE_OPTIONS
8902 @table @asis
8903 @item @option{gnits}
8904 @itemx @option{gnu}
8905 @itemx @option{foreign}
8906 @itemx @option{cygnus}
8907 @cindex Option, @option{gnits}
8908 @cindex Option, @option{gnu}
8909 @cindex Option, @option{foreign}
8910 @cindex Option, @option{cygnus}
8911 @opindex gnits
8912 @opindex gnu
8913 @opindex foreign
8914 @opindex cygnus
8916 Set the strictness as appropriate.  The @option{gnits} option also
8917 implies options @option{readme-alpha} and @option{check-news}.
8919 @item @option{ansi2knr}
8920 @itemx @option{@var{path}/ansi2knr}
8921 @cindex Option, @option{ansi2knr}
8922 @opindex ansi2knr
8923 Turn on the obsolete de-ANSI-fication feature.  @xref{ANSI}.  If preceded by a
8924 path, the generated @file{Makefile.in} will look in the specified
8925 directory to find the @file{ansi2knr} program.  The path should be a
8926 relative path to another directory in the same distribution (Automake
8927 currently does not check this).
8929 @item @option{check-news}
8930 @cindex Option, @option{check-news}
8931 @opindex check-news
8932 Cause @samp{make dist} to fail unless the current version number appears
8933 in the first few lines of the @file{NEWS} file.
8935 @item @option{color-tests}
8936 @cindex Option, @option{color-tests}
8937 @opindex color-tests
8938 Cause output of the simple test suite (@pxref{Simple Tests}) to be
8939 colorized on capable terminals.
8941 @item @option{dejagnu}
8942 @cindex Option, @option{dejagnu}
8943 @opindex dejagnu
8944 Cause @command{dejagnu}-specific rules to be generated.  @xref{DejaGnu Tests}.
8946 @item @option{dist-bzip2}
8947 @cindex Option, @option{dist-bzip2}
8948 @opindex dist-bzip2
8949 Hook @code{dist-bzip2} to @code{dist}.
8950 @trindex dist-bzip2
8952 @item @option{dist-lzma}
8953 @cindex Option, @option{dist-lzma}
8954 @opindex dist-lzma
8955 Hook @code{dist-lzma} to @code{dist}.
8956 @trindex dist-lzma
8958 @item @option{dist-shar}
8959 @cindex Option, @option{dist-shar}
8960 @opindex dist-shar
8961 Hook @code{dist-shar} to @code{dist}.
8962 @trindex dist-shar
8964 @item @option{dist-zip}
8965 @cindex Option, @option{dist-zip}
8966 @opindex dist-zip
8967 Hook @code{dist-zip} to @code{dist}.
8968 @trindex dist-zip
8970 @item @option{dist-tarZ}
8971 @cindex Option, @option{dist-tarZ}
8972 @opindex dist-tarZ
8973 Hook @code{dist-tarZ} to @code{dist}.
8974 @trindex dist-tarZ
8976 @item @option{filename-length-max=99}
8977 @cindex Option, @option{filename-length-max=99}
8978 @opindex filename-length-max=99
8979 Abort if file names longer than 99 characters are found during
8980 @samp{make dist}.  Such long file names are generally considered not to
8981 be portable in tarballs.  See the @option{tar-v7} and @option{tar-ustar}
8982 options below.  This option should be used in the top-level
8983 @file{Makefile.am} or as an argument of @code{AM_INIT_AUTOMAKE} in
8984 @file{configure.ac}, it will be ignored otherwise.  It will also be
8985 ignored in sub-packages of nested packages (@pxref{Subpackages}).
8987 @item @option{no-define}
8988 @cindex Option, @option{no-define}
8989 @opindex no-define
8990 This option is meaningful only when passed as an argument to
8991 @code{AM_INIT_AUTOMAKE}.  It will prevent the @code{PACKAGE} and
8992 @code{VERSION} variables from being @code{AC_DEFINE}d.
8994 @item @option{no-dependencies}
8995 @cindex Option, @option{no-dependencies}
8996 @opindex no-dependencies
8997 This is similar to using @option{--ignore-deps} on the command line,
8998 but is useful for those situations where you don't have the necessary
8999 bits to make automatic dependency tracking work
9000 (@pxref{Dependencies}).  In this case the effect is to effectively
9001 disable automatic dependency tracking.
9003 @item @option{no-dist}
9004 @cindex Option, @option{no-dist}
9005 @opindex no-dist
9006 Don't emit any code related to @code{dist} target.  This is useful
9007 when a package has its own method for making distributions.
9009 @item @option{no-dist-gzip}
9010 @cindex Option, @option{no-dist-gzip}
9011 @opindex no-dist-gzip
9012 Do not hook @code{dist-gzip} to @code{dist}.
9013 @trindex no-dist-gzip
9015 @item @option{no-exeext}
9016 @cindex Option, @option{no-exeext}
9017 @opindex no-exeext
9018 If your @file{Makefile.am} defines a rule for target @code{foo}, it
9019 will override a rule for a target named @samp{foo$(EXEEXT)}.  This is
9020 necessary when @code{EXEEXT} is found to be empty.  However, by
9021 default @command{automake} will generate an error for this use.  The
9022 @option{no-exeext} option will disable this error.  This is intended for
9023 use only where it is known in advance that the package will not be
9024 ported to Windows, or any other operating system using extensions on
9025 executables.
9027 @item @option{no-installinfo}
9028 @cindex Option, @option{no-installinfo}
9029 @opindex no-installinfo
9030 The generated @file{Makefile.in} will not cause info pages to be built
9031 or installed by default.  However, @code{info} and @code{install-info}
9032 targets will still be available.  This option is disallowed at
9033 @option{gnu} strictness and above.
9034 @trindex info
9035 @trindex install-info
9037 @item @option{no-installman}
9038 @cindex Option, @option{no-installman}
9039 @opindex no-installman
9040 The generated @file{Makefile.in} will not cause man pages to be
9041 installed by default.  However, an @code{install-man} target will still
9042 be available for optional installation.  This option is disallowed at
9043 @option{gnu} strictness and above.
9044 @trindex install-man
9046 @item @option{nostdinc}
9047 @cindex Option, @option{nostdinc}
9048 @opindex nostdinc
9049 This option can be used to disable the standard @option{-I} options that
9050 are ordinarily automatically provided by Automake.
9052 @item @option{no-texinfo.tex}
9053 @cindex Option, @option{no-texinfo.tex}
9054 @opindex no-texinfo.tex
9055 Don't require @file{texinfo.tex}, even if there are texinfo files in
9056 this directory.
9058 @item @option{parallel-tests}
9059 @cindex Option, @option{parallel-tests}
9060 @opindex parallel-tests
9061 Enable test suite driver for @code{TESTS} that can run tests in parallel
9062 (@pxref{Simple Tests using parallel-tests}, for more information).
9064 @item @option{readme-alpha}
9065 @cindex Option, @option{readme-alpha}
9066 @opindex readme-alpha
9067 If this release is an alpha release, and the file @file{README-alpha}
9068 exists, then it will be added to the distribution.  If this option is
9069 given, version numbers are expected to follow one of two forms.  The
9070 first form is @samp{@var{MAJOR}.@var{MINOR}.@var{ALPHA}}, where each
9071 element is a number; the final period and number should be left off for
9072 non-alpha releases.  The second form is
9073 @samp{@var{MAJOR}.@var{MINOR}@var{ALPHA}}, where @var{ALPHA} is a
9074 letter; it should be omitted for non-alpha releases.
9076 @item @option{silent-rules}
9077 @cindex Option, @option{silent-rules}
9078 @opindex silent-rules
9079 Enable less verbose build rules.  This can be used to let build rules
9080 output a status line of the form
9082 @example
9083   GEN @var{output-file}
9084 @end example
9086 @noindent
9087 instead of printing the command that will be executed to update
9088 @var{output-file}.  It can also silence @command{libtool} output.
9090 To enable less verbose build rules, both the developer and the user
9091 of the package have to take a number of steps.  The developer needs
9092 to do either of the following:
9094 @itemize @bullet
9095 @item
9096 Add the @option{silent-rules} option as argument to @code{AM_INIT_AUTOMAKE}.
9097 @item
9098 Call the @code{AM_SILENT_RULES} macro from within the @file{configure.ac}
9099 file.
9100 @end itemize
9102 @cindex default verbosity for silent-rules
9103 If the developer has done either of the above, then the user of the
9104 package may influence the verbosity at @command{configure} run time as
9105 well as at @command{make} run time:
9107 @itemize @bullet
9108 @item
9109 @opindex --enable-silent-rules
9110 @opindex --disable-silent-rules
9111 Passing @option{--enable-silent-rules} to @command{configure} will cause
9112 build rules to be less verbose; the option @option{--disable-silent-rules}
9113 is the default and will cause normal verbose output.
9114 @item
9115 @vindex @code{V}
9116 At @command{make} run time, the default chosen at @command{configure}
9117 time may be overridden: @code{make V=1} will produce verbose output,
9118 @code{make V=0} less verbose output.
9119 @end itemize
9121 For portability to different @command{make} implementations, package authors
9122 are advised to not set the variable @code{V} inside the @file{Makefile.am}
9123 file, to allow the user to override the value for subdirectories as well.
9125 The current implementation of this feature relies on a non-POSIX, but in
9126 practice rather widely supported @file{Makefile} construct of nested
9127 variable expansion @samp{$(@var{var1}$(V))}.  Do not use the
9128 @option{silent-rules} option if your package needs to build with
9129 @command{make} implementations that do not support it.  The
9130 @option{silent-rules} option turns off warnings about recursive variable
9131 expansion, which are in turn enabled by @option{-Wportability}
9132 (@pxref{Invoking Automake}).
9134 @vindex @code{AM_V_GEN}
9135 @vindex @code{AM_V_at}
9136 @vindex @code{AM_DEFAULT_VERBOSITY}
9137 To extend the silent mode to your own rules, you have two choices:
9139 @itemize @bullet
9140 @item
9141 You can use the predefined variable @code{AM_V_GEN} as a prefix to
9142 commands that should output a status line in silent mode, and
9143 @code{AM_V_at} as a prefix to commands that should not output anything
9144 in silent mode.  When output is to be verbose, both of these variables
9145 will expand to the empty string.
9146 @item
9147 You can add your own variables, so strings of your own choice are shown.
9148 The following snippet shows how you would define your own equivalent of
9149 @code{AM_V_GEN}:
9151 @example
9152 pkg_verbose = $(pkg_verbose_$(V))
9153 pkg_verbose_ = $(pkg_verbose_$(AM_DEFAULT_VERBOSITY))
9154 pkg_verbose_0 = @@echo GEN $@@;
9156 foo: foo.in
9157         $(pkg_verbose)cp $(srcdir)/foo.in $@@
9158 @end example
9159 @end itemize
9162 @item @option{std-options}
9163 @cindex Options, @option{std-options}
9164 @cindex @samp{make installcheck}, testing @option{--help} and @option{--version}
9165 @cindex @option{--help} check
9166 @cindex @option{--version} check
9167 @opindex std-options
9169 Make the @code{installcheck} rule check that installed scripts and
9170 programs support the @option{--help} and @option{--version} options.
9171 This also provides a basic check that the program's
9172 run-time dependencies are satisfied after installation.
9174 @vindex AM_INSTALLCHECK_STD_OPTIONS_EXEMPT
9175 In a few situations, programs (or scripts) have to be exempted from this
9176 test.  For instance, @command{false} (from GNU sh-utils) is never
9177 successful, even for @option{--help} or @option{--version}.  You can list
9178 such programs in the variable @code{AM_INSTALLCHECK_STD_OPTIONS_EXEMPT}.
9179 Programs (not scripts) listed in this variable should be suffixed by
9180 @samp{$(EXEEXT)} for the sake of Win32 or OS/2.  For instance, suppose we
9181 build @file{false} as a program but @file{true.sh} as a script, and that
9182 neither of them support @option{--help} or @option{--version}:
9184 @example
9185 AUTOMAKE_OPTIONS = std-options
9186 bin_PROGRAMS = false ...
9187 bin_SCRIPTS = true.sh ...
9188 AM_INSTALLCHECK_STD_OPTIONS_EXEMPT = false$(EXEEXT) true.sh
9189 @end example
9191 @item @option{subdir-objects}
9192 @cindex Options, @option{subdir-objects}
9193 @opindex subdir-objects
9194 If this option is specified, then objects are placed into the
9195 subdirectory of the build directory corresponding to the subdirectory of
9196 the source file.  For instance, if the source file is
9197 @file{subdir/file.cxx}, then the output file would be
9198 @file{subdir/file.o}.
9200 In order to use this option with C sources, you should add
9201 @code{AM_PROG_CC_C_O} to @file{configure.ac}.
9203 @anchor{tar-formats}
9204 @item @option{tar-v7}
9205 @itemx @option{tar-ustar}
9206 @itemx @option{tar-pax}
9207 @cindex Option, @option{tar-v7}
9208 @cindex Option, @option{tar-ustar}
9209 @cindex Option, @option{tar-pax}
9210 @cindex @command{tar} formats
9211 @cindex v7 @command{tar} format
9212 @cindex ustar format
9213 @cindex pax format
9214 @opindex tar-v7
9215 @opindex tar-ustar
9216 @opindex tar-pax
9218 These three mutually exclusive options select the tar format to use
9219 when generating tarballs with @samp{make dist}.  (The tar file created
9220 is then compressed according to the set of @option{no-dist-gzip},
9221 @option{dist-bzip2}, @option{dist-lzma} and @option{dist-tarZ} options in use.)
9223 These options must be passed as arguments to @code{AM_INIT_AUTOMAKE}
9224 (@pxref{Macros}) because they can require additional configure checks.
9225 Automake will complain if it sees such options in an
9226 @code{AUTOMAKE_OPTIONS} variable.
9228 @option{tar-v7} selects the old V7 tar format.  This is the historical
9229 default.  This antiquated format is understood by all tar
9230 implementations and supports file names with up to 99 characters.  When
9231 given longer file names some tar implementations will diagnose the
9232 problem while other will generate broken tarballs or use non-portable
9233 extensions.  Furthermore, the V7 format cannot store empty
9234 directories.  When using this format, consider using the
9235 @option{filename-length-max=99} option to catch file names too long.
9237 @option{tar-ustar} selects the ustar format defined by POSIX
9238 1003.1-1988.  This format is believed to be old enough to be portable.
9239 It fully supports empty directories.  It can store file names with up
9240 to 256 characters, provided that the file name can be split at
9241 directory separator in two parts, first of them being at most 155
9242 bytes long.  So, in most cases the maximum file name length will be
9243 shorter than 256 characters.  However you may run against broken tar
9244 implementations that incorrectly handle file names longer than 99
9245 characters (please report them to @email{bug-automake@@gnu.org} so we
9246 can document this accurately).
9248 @option{tar-pax} selects the new pax interchange format defined by POSIX
9249 1003.1-2001.  It does not limit the length of file names.  However,
9250 this format is very young and should probably be restricted to
9251 packages that target only very modern platforms.  There are moves to
9252 change the pax format in an upward-compatible way, so this option may
9253 refer to a more recent version in the future.
9255 @xref{Formats, , Controlling the Archive Format, tar, GNU Tar}, for
9256 further discussion about tar formats.
9258 @command{configure} knows several ways to construct these formats.  It
9259 will not abort if it cannot find a tool up to the task (so that the
9260 package can still be built), but @samp{make dist} will fail.
9262 @item @var{version}
9263 @cindex Option, @var{version}
9264 A version number (e.g., @samp{0.30}) can be specified.  If Automake is not
9265 newer than the version specified, creation of the @file{Makefile.in}
9266 will be suppressed.
9268 @item @option{-W@var{category}} or @option{--warnings=@var{category}}
9269 @cindex Option, warnings
9270 @cindex Option, @option{-W@var{category}}
9271 @cindex Option, @option{--warnings=@var{category}}
9272 These options behave exactly like their command-line counterpart
9273 (@pxref{Invoking Automake}).  This allows you to enable or disable some
9274 warning categories on a per-file basis.  You can also setup some warnings
9275 for your entire project; for instance, try @samp{AM_INIT_AUTOMAKE([-Wall])}
9276 in your @file{configure.ac}.
9278 @end table
9280 Unrecognized options are diagnosed by @command{automake}.
9282 If you want an option to apply to all the files in the tree, you can use
9283 the @code{AM_INIT_AUTOMAKE} macro in @file{configure.ac}.
9284 @xref{Macros}.
9287 @node Miscellaneous
9288 @chapter Miscellaneous Rules
9290 There are a few rules and variables that didn't fit anywhere else.
9292 @menu
9293 * Tags::                        Interfacing to etags and mkid
9294 * Suffixes::                    Handling new file extensions
9295 * Multilibs::                   Support for multilibs.
9296 @end menu
9299 @node Tags
9300 @section Interfacing to @command{etags}
9302 @cindex @file{TAGS} support
9304 Automake will generate rules to generate @file{TAGS} files for use with
9305 GNU Emacs under some circumstances.
9307 @trindex tags
9308 If any C, C++ or Fortran 77 source code or headers are present, then
9309 @code{tags} and @code{TAGS} rules will be generated for the directory.
9310 All files listed using the @code{_SOURCES}, @code{_HEADERS}, and
9311 @code{_LISP} primaries will be used to generate tags.  Note that
9312 generated source files that are not distributed must be declared in
9313 variables like @code{nodist_noinst_HEADERS} or
9314 @code{nodist_@var{prog}_SOURCES} or they will be ignored.
9316 A @code{tags} rule will be output at the topmost directory of a
9317 multi-directory package.  When run from this topmost directory,
9318 @samp{make tags} will generate a @file{TAGS} file that includes by
9319 reference all @file{TAGS} files from subdirectories.
9321 The @code{tags} rule will also be generated if the variable
9322 @code{ETAGS_ARGS} is defined.  This variable is intended for use in
9323 directories that contain taggable source that @command{etags} does
9324 not understand.  The user can use the @code{ETAGSFLAGS} to pass
9325 additional flags to @command{etags}; @code{AM_ETAGSFLAGS} is also
9326 available for use in @file{Makefile.am}.
9327 @vindex ETAGS_ARGS
9328 @vindex ETAGSFLAGS
9329 @vindex AM_ETAGSFLAGS
9331 Here is how Automake generates tags for its source, and for nodes in its
9332 Texinfo file:
9334 @example
9335 ETAGS_ARGS = automake.in --lang=none \
9336  --regex='/^@@node[ \t]+\([^,]+\)/\1/' automake.texi
9337 @end example
9339 If you add file names to @code{ETAGS_ARGS}, you will probably also
9340 want to define @code{TAGS_DEPENDENCIES}.  The contents of this variable
9341 are added directly to the dependencies for the @code{tags} rule.
9342 @vindex TAGS_DEPENDENCIES
9344 Automake also generates a @code{ctags} rule that can be used to
9345 build @command{vi}-style @file{tags} files.  The variable @code{CTAGS}
9346 is the name of the program to invoke (by default @command{ctags});
9347 @code{CTAGSFLAGS} can be used by the user to pass additional flags,
9348 and @code{AM_CTAGSFLAGS} can be used by the @file{Makefile.am}.
9350 Automake will also generate an @code{ID} rule that will run
9351 @command{mkid} on the source.  This is only supported on a
9352 directory-by-directory basis.
9353 @trindex id
9355 Finally, Automake also emits rules to support the
9356 @uref{http://www.gnu.org/software/global/, GNU Global Tags program}.
9357 The @code{GTAGS} rule runs Global Tags and puts the
9358 result in the top build directory.  The variable @code{GTAGS_ARGS}
9359 holds arguments that are passed to @command{gtags}.
9360 @vindex GTAGS_ARGS
9363 @node Suffixes
9364 @section Handling new file extensions
9366 @cindex Adding new @code{SUFFIXES}
9367 @cindex @code{SUFFIXES}, adding
9368 @vindex SUFFIXES
9370 It is sometimes useful to introduce a new implicit rule to handle a file
9371 type that Automake does not know about.
9373 For instance, suppose you had a compiler that could compile @file{.foo}
9374 files to @file{.o} files.  You would simply define a suffix rule for
9375 your language:
9377 @example
9378 .foo.o:
9379         foocc -c -o $@@ $<
9380 @end example
9382 Then you could directly use a @file{.foo} file in a @code{_SOURCES}
9383 variable and expect the correct results:
9385 @example
9386 bin_PROGRAMS = doit
9387 doit_SOURCES = doit.foo
9388 @end example
9390 This was the simpler and more common case.  In other cases, you will
9391 have to help Automake to figure out which extensions you are defining your
9392 suffix rule for.  This usually happens when your extension does not
9393 start with a dot.  Then, all you have to do is to put a list of new
9394 suffixes in the @code{SUFFIXES} variable @strong{before} you define your
9395 implicit rule.
9397 For instance, the following definition prevents Automake from misinterpreting
9398 the @samp{.idlC.cpp:} rule as an attempt to transform @file{.idlC} files into
9399 @file{.cpp} files.
9401 @example
9402 SUFFIXES = .idl C.cpp
9403 .idlC.cpp:
9404         # whatever
9405 @end example
9407 As you may have noted, the @code{SUFFIXES} variable behaves like the
9408 @code{.SUFFIXES} special target of @command{make}.  You should not touch
9409 @code{.SUFFIXES} yourself, but use @code{SUFFIXES} instead and let
9410 Automake generate the suffix list for @code{.SUFFIXES}.  Any given
9411 @code{SUFFIXES} go at the start of the generated suffixes list, followed
9412 by Automake generated suffixes not already in the list.
9414 @node Multilibs
9415 @section Support for Multilibs
9417 Automake has support for an obscure feature called multilibs.  A
9418 @dfn{multilib} is a library that is built for multiple different ABIs
9419 at a single time; each time the library is built with a different target
9420 flag combination.  This is only useful when the library is intended to
9421 be cross-compiled, and it is almost exclusively used for compiler
9422 support libraries.
9424 The multilib support is still experimental.  Only use it if you are
9425 familiar with multilibs and can debug problems you might encounter.
9428 @node Include
9429 @chapter Include
9431 @cmindex include
9432 @cindex Including @file{Makefile} fragment
9433 @cindex @file{Makefile} fragment, including
9435 Automake supports an @code{include} directive that  can be used to
9436 include other @file{Makefile} fragments when @command{automake} is run.
9437 Note that these fragments are read and interpreted by @command{automake},
9438 not by @command{make}.  As with conditionals, @command{make} has no idea that
9439 @code{include} is in use.
9441 There are two forms of @code{include}:
9443 @table @code
9444 @item include $(srcdir)/file
9445 Include a fragment that is found relative to the current source
9446 directory.
9448 @item include $(top_srcdir)/file
9449 Include a fragment that is found relative to the top source directory.
9450 @end table
9452 Note that if a fragment is included inside a conditional, then the
9453 condition applies to the entire contents of that fragment.
9455 Makefile fragments included this way are always distributed because
9456 they are needed to rebuild @file{Makefile.in}.
9458 @node Conditionals
9459 @chapter Conditionals
9461 @cindex Conditionals
9463 Automake supports a simple type of conditionals.
9465 These conditionals are not the same as conditionals in
9466 GNU Make.  Automake conditionals are checked at configure time by the
9467 @file{configure} script, and affect the translation from
9468 @file{Makefile.in} to @file{Makefile}.  They are based on options passed
9469 to @file{configure} and on results that @file{configure} has discovered
9470 about the host system.  GNU Make conditionals are checked at @command{make}
9471 time, and are based on variables passed to the make program or defined
9472 in the @file{Makefile}.
9474 Automake conditionals will work with any make program.
9476 @menu
9477 * Usage of Conditionals::       Declaring conditional content
9478 * Limits of Conditionals::      Enclosing complete statements
9479 @end menu
9481 @node Usage of Conditionals
9482 @section Usage of Conditionals
9484 @acindex AM_CONDITIONAL
9485 Before using a conditional, you must define it by using
9486 @code{AM_CONDITIONAL} in the @file{configure.ac} file (@pxref{Macros}).
9488 @defmac AM_CONDITIONAL (@var{conditional}, @var{condition})
9489 The conditional name, @var{conditional}, should be a simple string
9490 starting with a letter and containing only letters, digits, and
9491 underscores.  It must be different from @samp{TRUE} and @samp{FALSE}
9492 that are reserved by Automake.
9494 The shell @var{condition} (suitable for use in a shell @code{if}
9495 statement) is evaluated when @command{configure} is run.  Note that you
9496 must arrange for @emph{every} @code{AM_CONDITIONAL} to be invoked every
9497 time @command{configure} is run.  If @code{AM_CONDITIONAL} is run
9498 conditionally (e.g., in a shell @code{if} statement), then the result
9499 will confuse @command{automake}.
9500 @end defmac
9502 @cindex @option{--enable-debug}, example
9503 @cindex Example conditional @option{--enable-debug}
9504 @cindex Conditional example, @option{--enable-debug}
9506 Conditionals typically depend upon options that the user provides to
9507 the @command{configure} script.  Here is an example of how to write a
9508 conditional that is true if the user uses the @option{--enable-debug}
9509 option.
9511 @example
9512 AC_ARG_ENABLE([debug],
9513 [  --enable-debug    Turn on debugging],
9514 [case "$@{enableval@}" in
9515   yes) debug=true ;;
9516   no)  debug=false ;;
9517   *) AC_MSG_ERROR([bad value $@{enableval@} for --enable-debug]) ;;
9518 esac],[debug=false])
9519 AM_CONDITIONAL([DEBUG], [test x$debug = xtrue])
9520 @end example
9522 Here is an example of how to use that conditional in @file{Makefile.am}:
9524 @cmindex if
9525 @cmindex endif
9526 @cmindex else
9528 @example
9529 if DEBUG
9530 DBG = debug
9531 else
9532 DBG =
9533 endif
9534 noinst_PROGRAMS = $(DBG)
9535 @end example
9537 This trivial example could also be handled using @code{EXTRA_PROGRAMS}
9538 (@pxref{Conditional Programs}).
9540 You may only test a single variable in an @code{if} statement, possibly
9541 negated using @samp{!}.  The @code{else} statement may be omitted.
9542 Conditionals may be nested to any depth.  You may specify an argument to
9543 @code{else} in which case it must be the negation of the condition used
9544 for the current @code{if}.  Similarly you may specify the condition
9545 that is closed by an @code{end}:
9547 @example
9548 if DEBUG
9549 DBG = debug
9550 else !DEBUG
9551 DBG =
9552 endif !DEBUG
9553 @end example
9555 @noindent
9556 Unbalanced conditions are errors.
9558 The @code{else} branch of the above two examples could be omitted,
9559 since assigning the empty string to an otherwise undefined variable
9560 makes no difference.
9562 @acindex AM_COND_IF
9563 In order to allow access to the condition registered by
9564 @code{AM_CONDITIONAL} inside @file{configure.ac}, and to allow
9565 conditional @code{AC_CONFIG_FILES}, @code{AM_COND_IF} may be used:
9567 @defmac AM_COND_IF (@var{conditional}, @ovar{if-true}, @ovar{if-false})
9568 If @var{conditional} is fulfilled, execute @var{if-true}, otherwise
9569 execute @var{if-false}.  If either branch contains @code{AC_CONFIG_FILES},
9570 it will cause @command{automake} to output the rules for the respective
9571 files only for the given condition.
9572 @end defmac
9574 @code{AM_COND_IF} macros may be nested when m4 quotation is used
9575 properly (@pxref{M4 Quotation, ,, autoconf, The Autoconf Manual}).
9577 @cindex Example conditional @code{AC_CONFIG_FILES}
9578 @cindex @code{AC_CONFIG_FILES}, conditional
9580 Here is an example of how to define a conditional config file:
9582 @example
9583 AM_CONDITIONAL([SHELL_WRAPPER], [test "x$with_wrapper" = xtrue])
9584 AM_COND_IF([SHELL_WRAPPER],
9585            [AC_CONFIG_FILES([wrapper:wrapper.in])])
9586 @end example
9588 @node Limits of Conditionals
9589 @section Limits of Conditionals
9591 Conditionals should enclose complete statements like variables or
9592 rules definitions.  Automake cannot deal with conditionals used inside
9593 a variable definition, for instance, and is not even able to diagnose
9594 this situation.  The following example would not work:
9596 @example
9597 # This syntax is not understood by Automake
9598 AM_CPPFLAGS = \
9599   -DFEATURE_A \
9600 if WANT_DEBUG
9601   -DDEBUG \
9602 endif
9603   -DFEATURE_B
9604 @end example
9606 However the intended definition of @code{AM_CPPFLAGS} can be achieved
9607 with
9609 @example
9610 if WANT_DEBUG
9611   DEBUGFLAGS = -DDEBUG
9612 endif
9613 AM_CPPFLAGS = -DFEATURE_A $(DEBUGFLAGS) -DFEATURE_B
9614 @end example
9616 @noindent
9619 @example
9620 AM_CPPFLAGS = -DFEATURE_A
9621 if WANT_DEBUG
9622 AM_CPPFLAGS += -DDEBUG
9623 endif
9624 AM_CPPFLAGS += -DFEATURE_B
9625 @end example
9627 More details and examples of conditionals are described alongside
9628 various Automake features in this manual (@pxref{Conditional
9629 Subdirectories}, @pxref{Conditional Sources}, @pxref{Conditional
9630 Programs}, @pxref{Conditional Libtool Libraries}, @pxref{Conditional
9631 Libtool Sources}).
9633 @node Gnits
9634 @chapter The effect of @option{--gnu} and @option{--gnits}
9636 @cindex @option{--gnu}, required files
9637 @cindex @option{--gnu}, complete description
9639 The @option{--gnu} option (or @option{gnu} in the
9640 @code{AUTOMAKE_OPTIONS} variable) causes @command{automake} to check
9641 the following:
9643 @itemize @bullet
9644 @item
9645 The files @file{INSTALL}, @file{NEWS}, @file{README}, @file{AUTHORS},
9646 and @file{ChangeLog}, plus one of @file{COPYING.LIB}, @file{COPYING.LESSER}
9647 or @file{COPYING}, are required at the topmost directory of the package.
9649 If the @option{--add-missing} option is given, @command{automake} will
9650 add a generic version of the @file{INSTALL} file as well as the
9651 @file{COPYING} file containing the text of the current version of the
9652 GNU General Public License existing at the time of this Automake release
9653 (version 3 as this is written, @uref{http://www.gnu.org/@/copyleft/@/gpl.html}).
9654 However, an existing @file{COPYING} file will never be overwritten by
9655 @command{automake}.
9657 @item
9658 The options @option{no-installman} and @option{no-installinfo} are
9659 prohibited.
9660 @end itemize
9662 Note that this option will be extended in the future to do even more
9663 checking; it is advisable to be familiar with the precise requirements
9664 of the GNU standards.  Also, @option{--gnu} can require certain
9665 non-standard GNU programs to exist for use by various maintainer-only
9666 rules; for instance, in the future @command{pathchk} might be required for
9667 @samp{make dist}.
9669 @cindex @option{--gnits}, complete description
9671 The @option{--gnits} option does everything that @option{--gnu} does, and
9672 checks the following as well:
9674 @itemize @bullet
9675 @item
9676 @samp{make installcheck} will check to make sure that the @option{--help}
9677 and @option{--version} really print a usage message and a version string,
9678 respectively.  This is the @option{std-options} option (@pxref{Options}).
9680 @item
9681 @samp{make dist} will check to make sure the @file{NEWS} file has been
9682 updated to the current version.
9684 @item
9685 @code{VERSION} is checked to make sure its format complies with Gnits
9686 standards.
9687 @c FIXME xref when standards are finished
9689 @item
9690 @cindex @file{README-alpha}
9691 If @code{VERSION} indicates that this is an alpha release, and the file
9692 @file{README-alpha} appears in the topmost directory of a package, then
9693 it is included in the distribution.  This is done in @option{--gnits}
9694 mode, and no other, because this mode is the only one where version
9695 number formats are constrained, and hence the only mode where Automake
9696 can automatically determine whether @file{README-alpha} should be
9697 included.
9699 @item
9700 The file @file{THANKS} is required.
9701 @end itemize
9704 @node Cygnus
9705 @chapter The effect of @option{--cygnus}
9707 @cindex @option{cygnus} strictness
9709 Some packages, notably GNU GCC and GNU gdb, have a build environment
9710 originally written at Cygnus Support (subsequently renamed Cygnus
9711 Solutions, and then later purchased by Red Hat).  Packages with this
9712 ancestry are sometimes referred to as ``Cygnus'' trees.
9714 A Cygnus tree has slightly different rules for how a
9715 @file{Makefile.in} is to be constructed.  Passing @option{--cygnus} to
9716 @command{automake} will cause any generated @file{Makefile.in} to
9717 comply with Cygnus rules.
9719 Here are the precise effects of @option{--cygnus}:
9721 @itemize @bullet
9722 @item
9723 Info files are always created in the build directory, and not in the
9724 source directory.
9726 @item
9727 @file{texinfo.tex} is not required if a Texinfo source file is
9728 specified.  The assumption is that the file will be supplied, but in a
9729 place that Automake cannot find.  This assumption is an artifact of how
9730 Cygnus packages are typically bundled.
9732 @item
9733 @samp{make dist} is not supported, and the rules for it are not
9734 generated.  Cygnus-style trees use their own distribution mechanism.
9736 @item
9737 Certain tools will be searched for in the build tree as well as in the
9738 user's @env{PATH}.  These tools are @command{runtest}, @command{expect},
9739 @command{makeinfo} and @command{texi2dvi}.
9741 @item
9742 @option{--foreign} is implied.
9744 @item
9745 The options @option{no-installinfo} and @option{no-dependencies} are
9746 implied.
9748 @item
9749 The macros @code{AM_MAINTAINER_MODE} and @code{AM_CYGWIN32} are
9750 required.
9752 @item
9753 The @code{check} target doesn't depend on @code{all}.
9754 @end itemize
9756 GNU maintainers are advised to use @option{gnu} strictness in preference
9757 to the special Cygnus mode.  Some day, perhaps, the differences between
9758 Cygnus trees and GNU trees will disappear (for instance, as GCC is made
9759 more standards compliant).  At that time the special Cygnus mode will be
9760 removed.
9763 @node Not Enough
9764 @chapter When Automake Isn't Enough
9766 In some situations, where Automake is not up to one task, one has to
9767 resort to handwritten rules or even handwritten @file{Makefile}s.
9769 @menu
9770 * Extending::                   Adding new rules or overriding existing ones.
9771 * Third-Party Makefiles::       Integrating Non-Automake @file{Makefile}s.
9772 @end menu
9774 @node Extending
9775 @section Extending Automake Rules
9777 With some minor exceptions (for example @code{_PROGRAMS} variables,
9778 @code{TESTS}, or @code{XFAIL_TESTS}) being rewritten to append
9779 @samp{$(EXEEXT)}), the contents of a @file{Makefile.am} is copied to
9780 @file{Makefile.in} verbatim.
9782 @cindex copying semantics
9784 These copying semantics mean that many problems can be worked around
9785 by simply adding some @command{make} variables and rules to
9786 @file{Makefile.am}.  Automake will ignore these additions.
9788 @cindex conflicting definitions
9789 @cindex rules, conflicting
9790 @cindex variables, conflicting
9791 @cindex definitions, conflicts
9793 Since a @file{Makefile.in} is built from data gathered from three
9794 different places (@file{Makefile.am}, @file{configure.ac}, and
9795 @command{automake} itself), it is possible to have conflicting
9796 definitions of rules or variables.  When building @file{Makefile.in}
9797 the following priorities are respected by @command{automake} to ensure
9798 the user always has the last word.  User defined variables in
9799 @file{Makefile.am} have priority over variables @code{AC_SUBST}ed from
9800 @file{configure.ac}, and @code{AC_SUBST}ed variables have priority
9801 over @command{automake}-defined variables.  As far as rules are
9802 concerned, a user-defined rule overrides any
9803 @command{automake}-defined rule for the same target.
9805 @cindex overriding rules
9806 @cindex overriding semantics
9807 @cindex rules, overriding
9809 These overriding semantics make it possible to fine tune some default
9810 settings of Automake, or replace some of its rules.  Overriding
9811 Automake rules is often inadvisable, particularly in the topmost
9812 directory of a package with subdirectories.  The @option{-Woverride}
9813 option (@pxref{Invoking Automake}) comes in handy to catch overridden
9814 definitions.
9816 Note that Automake does not make any distinction between rules with
9817 commands and rules that only specify dependencies.  So it is not
9818 possible to append new dependencies to an @command{automake}-defined
9819 target without redefining the entire rule.
9821 @cindex @option{-local} targets
9822 @cindex local targets
9824 However, various useful targets have a @samp{-local} version you can
9825 specify in your @file{Makefile.am}.  Automake will supplement the
9826 standard target with these user-supplied targets.
9828 @trindex  all
9829 @trindex  all-local
9830 @trindex  info
9831 @trindex  info-local
9832 @trindex  dvi
9833 @trindex  dvi-local
9834 @trindex  ps
9835 @trindex  ps-local
9836 @trindex  pdf
9837 @trindex  pdf-local
9838 @trindex  html
9839 @trindex  html-local
9840 @trindex  check
9841 @trindex  check-local
9842 @trindex  install
9843 @trindex  install-data
9844 @trindex  install-data-local
9845 @trindex  install-dvi
9846 @trindex  install-dvi-local
9847 @trindex  install-exec
9848 @trindex  install-exec-local
9849 @trindex  install-html
9850 @trindex  install-html-local
9851 @trindex  install-info
9852 @trindex  install-info-local
9853 @trindex  install-pdf
9854 @trindex  install-pdf-local
9855 @trindex  install-ps
9856 @trindex  install-ps-local
9857 @trindex  uninstall
9858 @trindex  uninstall-local
9859 @trindex  mostlyclean
9860 @trindex  mostlyclean-local
9861 @trindex  clean
9862 @trindex  clean-local
9863 @trindex  distclean
9864 @trindex  distclean-local
9865 @trindex  installdirs
9866 @trindex  installdirs-local
9867 @trindex  installcheck
9868 @trindex  installcheck-local
9870 The targets that support a local version are @code{all}, @code{info},
9871 @code{dvi}, @code{ps}, @code{pdf}, @code{html}, @code{check},
9872 @code{install-data}, @code{install-dvi}, @code{install-exec},
9873 @code{install-html}, @code{install-info}, @code{install-pdf},
9874 @code{install-ps}, @code{uninstall}, @code{installdirs},
9875 @code{installcheck} and the various @code{clean} targets
9876 (@code{mostlyclean}, @code{clean}, @code{distclean}, and
9877 @code{maintainer-clean}).
9879 Note that there are no @code{uninstall-exec-local} or
9880 @code{uninstall-data-local} targets; just use @code{uninstall-local}.
9881 It doesn't make sense to uninstall just data or just executables.
9883 For instance, here is one way to erase a subdirectory during
9884 @samp{make clean} (@pxref{Clean}).
9886 @example
9887 clean-local:
9888         -rm -rf testSubDir
9889 @end example
9891 You may be tempted to use @code{install-data-local} to install a file
9892 to some hard-coded location, but you should avoid this
9893 (@pxref{Hard-Coded Install Paths}).
9895 With the @code{-local} targets, there is no particular guarantee of
9896 execution order; typically, they are run early, but with parallel
9897 make, there is no way to be sure of that.
9899 @cindex @option{-hook} targets
9900 @cindex hook targets
9901 @trindex install-data-hook
9902 @trindex install-exec-hook
9903 @trindex uninstall-hook
9904 @trindex dist-hook
9906 In contrast, some rules also have a way to run another rule, called a
9907 @dfn{hook}; hooks are always executed after the main rule's work is done.
9908 The hook is named after the principal target, with @samp{-hook} appended.
9909 The targets allowing hooks are @code{install-data},
9910 @code{install-exec}, @code{uninstall}, @code{dist}, and
9911 @code{distcheck}.
9913 For instance, here is how to create a hard link to an installed program:
9915 @example
9916 install-exec-hook:
9917         ln $(DESTDIR)$(bindir)/program$(EXEEXT) \
9918            $(DESTDIR)$(bindir)/proglink$(EXEEXT)
9919 @end example
9921 Although cheaper and more portable than symbolic links, hard links
9922 will not work everywhere (for instance, OS/2 does not have
9923 @command{ln}).  Ideally you should fall back to @samp{cp -p} when
9924 @command{ln} does not work.  An easy way, if symbolic links are
9925 acceptable to you, is to add @code{AC_PROG_LN_S} to
9926 @file{configure.ac} (@pxref{Particular Programs, , Particular Program
9927 Checks, autoconf, The Autoconf Manual}) and use @samp{$(LN_S)} in
9928 @file{Makefile.am}.
9930 @cindex versioned binaries, installing
9931 @cindex installing versioned binaries
9932 @cindex @code{LN_S} example
9933 For instance, here is how you could install a versioned copy of a
9934 program using @samp{$(LN_S)}:
9936 @example
9937 install-exec-hook:
9938         cd $(DESTDIR)$(bindir) && \
9939           mv -f prog$(EXEEXT) prog-$(VERSION)$(EXEEXT) && \
9940           $(LN_S) prog-$(VERSION)$(EXEEXT) prog$(EXEEXT)
9941 @end example
9943 Note that we rename the program so that a new version will erase the
9944 symbolic link, not the real binary.  Also we @command{cd} into the
9945 destination directory in order to create relative links.
9947 When writing @code{install-exec-hook} or @code{install-data-hook},
9948 please bear in mind that the exec/data distinction is based on the
9949 installation directory, not on the primary used (@pxref{The Two Parts of
9950 Install}).  So a @code{foo_SCRIPTS} will be installed by
9951 @code{install-data}, and a @code{barexec_SCRIPTS} will be installed by
9952 @code{install-exec}.  You should define your hooks consequently.
9954 @c FIXME should include discussion of variables you can use in these
9955 @c rules
9957 @node Third-Party Makefiles
9958 @section Third-Party @file{Makefile}s
9960 @cindex Third-party packages, interfacing with
9961 @cindex Interfacing with third-party packages
9963 In most projects all @file{Makefile}s are generated by Automake.  In
9964 some cases, however, projects need to embed subdirectories with
9965 handwritten @file{Makefile}s.  For instance, one subdirectory could be
9966 a third-party project with its own build system, not using Automake.
9968 It is possible to list arbitrary directories in @code{SUBDIRS} or
9969 @code{DIST_SUBDIRS} provided each of these directories has a
9970 @file{Makefile} that recognizes all the following recursive targets.
9972 @cindex recursive targets and third-party @file{Makefile}s
9973 When a user runs one of these targets, that target is run recursively
9974 in all subdirectories.  This is why it is important that even
9975 third-party @file{Makefile}s support them.
9977 @table @code
9978 @item all
9979 Compile the entire package.  This is the default target in
9980 Automake-generated @file{Makefile}s, but it does not need to be the
9981 default in third-party @file{Makefile}s.
9983 @item distdir
9984 @trindex distdir
9985 @vindex distdir
9986 @vindex top_distdir
9987 Copy files to distribute into @samp{$(distdir)}, before a tarball is
9988 constructed.  Of course this target is not required if the
9989 @option{no-dist} option (@pxref{Options}) is used.
9991 The variables @samp{$(top_distdir)} and @samp{$(distdir)}
9992 (@pxref{The dist Hook}) will be passed from the outer package to the subpackage
9993 when the @code{distdir} target is invoked.  These two variables have
9994 been adjusted for the directory that is being recursed into, so they
9995 are ready to use.
9997 @item install
9998 @itemx install-data
9999 @itemx install-exec
10000 @itemx uninstall
10001 Install or uninstall files (@pxref{Install}).
10003 @item install-dvi
10004 @itemx install-html
10005 @itemx install-info
10006 @itemx install-ps
10007 @itemx install-pdf
10008 Install only some specific documentation format (@pxref{Texinfo}).
10010 @item installdirs
10011 Create install directories, but do not install any files.
10013 @item check
10014 @itemx installcheck
10015 Check the package (@pxref{Tests}).
10017 @item mostlyclean
10018 @itemx clean
10019 @itemx distclean
10020 @itemx maintainer-clean
10021 Cleaning rules (@pxref{Clean}).
10023 @item dvi
10024 @itemx pdf
10025 @itemx ps
10026 @itemx info
10027 @itemx html
10028 Build the documentation in various formats (@pxref{Texinfo}).
10030 @item tags
10031 @itemx ctags
10032 Build @file{TAGS} and @file{CTAGS} (@pxref{Tags}).
10033 @end table
10035 If you have ever used Gettext in a project, this is a good example of
10036 how third-party @file{Makefile}s can be used with Automake.  The
10037 @file{Makefile}s @command{gettextize} puts in the @file{po/} and
10038 @file{intl/} directories are handwritten @file{Makefile}s that
10039 implement all these targets.  That way they can be added to
10040 @code{SUBDIRS} in Automake packages.
10042 Directories that are only listed in @code{DIST_SUBDIRS} but not in
10043 @code{SUBDIRS} need only the @code{distclean},
10044 @code{maintainer-clean}, and @code{distdir} rules (@pxref{Conditional
10045 Subdirectories}).
10047 Usually, many of these rules are irrelevant to the third-party
10048 subproject, but they are required for the whole package to work.  It's
10049 OK to have a rule that does nothing, so if you are integrating a
10050 third-party project with no documentation or tag support, you could
10051 simply augment its @file{Makefile} as follows:
10053 @example
10054 EMPTY_AUTOMAKE_TARGETS = dvi pdf ps info html tags ctags
10055 .PHONY: $(EMPTY_AUTOMAKE_TARGETS)
10056 $(EMPTY_AUTOMAKE_TARGETS):
10057 @end example
10059 Another aspect of integrating third-party build systems is whether
10060 they support VPATH builds (@pxref{VPATH Builds}).  Obviously if the
10061 subpackage does not support VPATH builds the whole package will not
10062 support VPATH builds.  This in turns means that @samp{make distcheck}
10063 will not work, because it relies on VPATH builds.  Some people can
10064 live without this (actually, many Automake users have never heard of
10065 @samp{make distcheck}).  Other people may prefer to revamp the
10066 existing @file{Makefile}s to support VPATH@.  Doing so does not
10067 necessarily require Automake, only Autoconf is needed (@pxref{Build
10068 Directories, , Build Directories, autoconf, The Autoconf Manual}).
10069 The necessary substitutions: @samp{@@srcdir@@}, @samp{@@top_srcdir@@},
10070 and @samp{@@top_builddir@@} are defined by @file{configure} when it
10071 processes a @file{Makefile} (@pxref{Preset Output Variables, , Preset
10072 Output Variables, autoconf, The Autoconf Manual}), they are not
10073 computed by the Makefile like the aforementioned @samp{$(distdir)} and
10074 @samp{$(top_distdir)} variables.
10076 It is sometimes inconvenient to modify a third-party @file{Makefile}
10077 to introduce the above required targets.  For instance, one may want to
10078 keep the third-party sources untouched to ease upgrades to new
10079 versions.
10081 @cindex @file{GNUmakefile} including @file{Makefile}
10082 Here are two other ideas.  If GNU make is assumed, one possibility is
10083 to add to that subdirectory a @file{GNUmakefile} that defines the
10084 required targets and includes the third-party @file{Makefile}.  For
10085 this to work in VPATH builds, @file{GNUmakefile} must lie in the build
10086 directory; the easiest way to do this is to write a
10087 @file{GNUmakefile.in} instead, and have it processed with
10088 @code{AC_CONFIG_FILES} from the outer package.  For example if we
10089 assume @file{Makefile} defines all targets except the documentation
10090 targets, and that the @code{check} target is actually called
10091 @code{test}, we could write @file{GNUmakefile} (or
10092 @file{GNUmakefile.in}) like this:
10094 @example
10095 # First, include the real Makefile
10096 include Makefile
10097 # Then, define the other targets needed by Automake Makefiles.
10098 .PHONY: dvi pdf ps info html check
10099 dvi pdf ps info html:
10100 check: test
10101 @end example
10103 @cindex Proxy @file{Makefile} for third-party packages
10104 A similar idea that does not use @code{include} is to write a proxy
10105 @file{Makefile} that dispatches rules to the real @file{Makefile},
10106 either with @samp{$(MAKE) -f Makefile.real $(AM_MAKEFLAGS) target} (if
10107 it's OK to rename the original @file{Makefile}) or with @samp{cd
10108 subdir && $(MAKE) $(AM_MAKEFLAGS) target} (if it's OK to store the
10109 subdirectory project one directory deeper).  The good news is that
10110 this proxy @file{Makefile} can be generated with Automake.  All we
10111 need are @option{-local} targets (@pxref{Extending}) that perform the
10112 dispatch.  Of course the other Automake features are available, so you
10113 could decide to let Automake perform distribution or installation.
10114 Here is a possible @file{Makefile.am}:
10116 @example
10117 all-local:
10118         cd subdir && $(MAKE) $(AM_MAKEFLAGS) all
10119 check-local:
10120         cd subdir && $(MAKE) $(AM_MAKEFLAGS) test
10121 clean-local:
10122         cd subdir && $(MAKE) $(AM_MAKEFLAGS) clean
10124 # Assuming the package knows how to install itself
10125 install-data-local:
10126         cd subdir && $(MAKE) $(AM_MAKEFLAGS) install-data
10127 install-exec-local:
10128         cd subdir && $(MAKE) $(AM_MAKEFLAGS) install-exec
10129 uninstall-local:
10130         cd subdir && $(MAKE) $(AM_MAKEFLAGS) uninstall
10132 # Distribute files from here.
10133 EXTRA_DIST = subdir/Makefile subdir/program.c ...
10134 @end example
10136 Pushing this idea to the extreme, it is also possible to ignore the
10137 subproject build system and build everything from this proxy
10138 @file{Makefile.am}.  This might sound very sensible if you need VPATH
10139 builds but the subproject does not support them.
10141 @node Distributing
10142 @chapter Distributing @file{Makefile.in}s
10144 Automake places no restrictions on the distribution of the resulting
10145 @file{Makefile.in}s.  We still encourage software authors to
10146 distribute their work under terms like those of the GPL, but doing so
10147 is not required to use Automake.
10149 Some of the files that can be automatically installed via the
10150 @option{--add-missing} switch do fall under the GPL@.  However, these also
10151 have a special exception allowing you to distribute them with your
10152 package, regardless of the licensing you choose.
10155 @node API Versioning
10156 @chapter Automake API Versioning
10158 New Automake releases usually include bug fixes and new features.
10159 Unfortunately they may also introduce new bugs and incompatibilities.
10160 This makes four reasons why a package may require a particular Automake
10161 version.
10163 Things get worse when maintaining a large tree of packages, each one
10164 requiring a different version of Automake.  In the past, this meant that
10165 any developer (and sometimes users) had to install several versions of
10166 Automake in different places, and switch @samp{$PATH} appropriately for
10167 each package.
10169 Starting with version 1.6, Automake installs versioned binaries.  This
10170 means you can install several versions of Automake in the same
10171 @samp{$prefix}, and can select an arbitrary Automake version by running
10172 @command{automake-1.6} or @command{automake-1.7} without juggling with
10173 @samp{$PATH}.  Furthermore, @file{Makefile}'s generated by Automake 1.6
10174 will use @command{automake-1.6} explicitly in their rebuild rules.
10176 The number @samp{1.6} in @command{automake-1.6} is Automake's API version,
10177 not Automake's version.  If a bug fix release is made, for instance
10178 Automake 1.6.1, the API version will remain 1.6.  This means that a
10179 package that works with Automake 1.6 should also work with 1.6.1; after
10180 all, this is what people expect from bug fix releases.
10182 If your package relies on a feature or a bug fix introduced in
10183 a release, you can pass this version as an option to Automake to ensure
10184 older releases will not be used.  For instance, use this in your
10185 @file{configure.ac}:
10187 @example
10188   AM_INIT_AUTOMAKE([1.6.1])    dnl Require Automake 1.6.1 or better.
10189 @end example
10190 @noindent
10191 or, in a particular @file{Makefile.am}:
10193 @example
10194   AUTOMAKE_OPTIONS = 1.6.1   # Require Automake 1.6.1 or better.
10195 @end example
10196 @noindent
10197 Automake will print an error message if its version is
10198 older than the requested version.
10201 @heading What is in the API
10203 Automake's programming interface is not easy to define.  Basically it
10204 should include at least all @strong{documented} variables and targets
10205 that a @file{Makefile.am} author can use, any behavior associated with
10206 them (e.g., the places where @samp{-hook}'s are run), the command line
10207 interface of @command{automake} and @command{aclocal}, @dots{}
10209 @heading What is not in the API
10211 Every undocumented variable, target, or command line option, is not part
10212 of the API@.  You should avoid using them, as they could change from one
10213 version to the other (even in bug fix releases, if this helps to fix a
10214 bug).
10216 If it turns out you need to use such a undocumented feature, contact
10217 @email{automake@@gnu.org} and try to get it documented and exercised by
10218 the test-suite.
10220 @node Upgrading
10221 @chapter Upgrading a Package to a Newer Automake Version
10223 Automake maintains three kind of files in a package.
10225 @itemize
10226 @item @file{aclocal.m4}
10227 @item @file{Makefile.in}s
10228 @item auxiliary tools like @file{install-sh} or @file{py-compile}
10229 @end itemize
10231 @file{aclocal.m4} is generated by @command{aclocal} and contains some
10232 Automake-supplied M4 macros.  Auxiliary tools are installed by
10233 @samp{automake --add-missing} when needed.  @file{Makefile.in}s are
10234 built from @file{Makefile.am} by @command{automake}, and rely on the
10235 definitions of the M4 macros put in @file{aclocal.m4} as well as the
10236 behavior of the auxiliary tools installed.
10238 Because all these files are closely related, it is important to
10239 regenerate all of them when upgrading to a newer Automake release.
10240 The usual way to do that is
10242 @example
10243 aclocal # with any option needed (such a -I m4)
10244 autoconf
10245 automake --add-missing --force-missing
10246 @end example
10248 @noindent
10249 or more conveniently:
10251 @example
10252 autoreconf -vfi
10253 @end example
10255 The use of @option{--force-missing} ensures that auxiliary tools will be
10256 overridden by new versions (@pxref{Invoking Automake}).
10258 It is important to regenerate all these files each time Automake is
10259 upgraded, even between bug fixes releases.  For instance, it is not
10260 unusual for a bug fix to involve changes to both the rules generated
10261 in @file{Makefile.in} and the supporting M4 macros copied to
10262 @file{aclocal.m4}.
10264 Presently @command{automake} is able to diagnose situations where
10265 @file{aclocal.m4} has been generated with another version of
10266 @command{aclocal}.  However it never checks whether auxiliary scripts
10267 are up-to-date.  In other words, @command{automake} will tell you when
10268 @command{aclocal} needs to be rerun, but it will never diagnose a
10269 missing @option{--force-missing}.
10271 Before upgrading to a new major release, it is a good idea to read the
10272 file @file{NEWS}.  This file lists all changes between releases: new
10273 features, obsolete constructs, known incompatibilities, and
10274 workarounds.
10276 @node FAQ
10277 @chapter Frequently Asked Questions about Automake
10279 This chapter covers some questions that often come up on the mailing
10280 lists.
10282 @menu
10283 * CVS::                         CVS and generated files
10284 * maintainer-mode::             missing and AM_MAINTAINER_MODE
10285 * Wildcards::                   Why doesn't Automake support wildcards?
10286 * Limitations on File Names::   Limitations on source and installed file names
10287 * distcleancheck::              Files left in build directory after distclean
10288 * Flag Variables Ordering::     CFLAGS vs.@: AM_CFLAGS vs.@: mumble_CFLAGS
10289 * Renamed Objects::             Why are object files sometimes renamed?
10290 * Per-Object Flags::            How to simulate per-object flags?
10291 * Multiple Outputs::            Writing rules for tools with many output files
10292 * Hard-Coded Install Paths::    Installing to Hard-Coded Locations
10293 @end menu
10295 @node CVS
10296 @section CVS and generated files
10298 @subheading Background: distributed generated Files
10299 @cindex generated files, distributed
10300 @cindex rebuild rules
10302 Packages made with Autoconf and Automake ship with some generated
10303 files like @file{configure} or @file{Makefile.in}.  These files were
10304 generated on the developer's host and are distributed so that
10305 end-users do not have to install the maintainer tools required to
10306 rebuild them.  Other generated files like Lex scanners, Yacc parsers,
10307 or Info documentation, are usually distributed on similar grounds.
10309 Automake outputs rules in @file{Makefile}s to rebuild these files.  For
10310 instance, @command{make} will run @command{autoconf} to rebuild
10311 @file{configure} whenever @file{configure.ac} is changed.  This makes
10312 development safer by ensuring a @file{configure} is never out-of-date
10313 with respect to @file{configure.ac}.
10315 As generated files shipped in packages are up-to-date, and because
10316 @command{tar} preserves times-tamps, these rebuild rules are not
10317 triggered when a user unpacks and builds a package.
10319 @subheading Background: CVS and Timestamps
10320 @cindex timestamps and CVS
10321 @cindex CVS and timestamps
10323 Unless you use CVS keywords (in which case files must be updated at
10324 commit time), CVS preserves timestamp during @samp{cvs commit} and
10325 @samp{cvs import -d} operations.
10327 When you check out a file using @samp{cvs checkout} its timestamp is
10328 set to that of the revision that is being checked out.
10330 However, during @command{cvs update}, files will have the date of the
10331 update, not the original timestamp of this revision.  This is meant to
10332 make sure that @command{make} notices sources files have been updated.
10334 This timestamp shift is troublesome when both sources and generated
10335 files are kept under CVS@.  Because CVS processes files in lexical
10336 order, @file{configure.ac} will appear newer than @file{configure}
10337 after a @command{cvs update} that updates both files, even if
10338 @file{configure} was newer than @file{configure.ac} when it was
10339 checked in.  Calling @command{make} will then trigger a spurious rebuild
10340 of @file{configure}.
10342 @subheading Living with CVS in Autoconfiscated Projects
10343 @cindex CVS and generated files
10344 @cindex generated files and CVS
10346 There are basically two clans amongst maintainers: those who keep all
10347 distributed files under CVS, including generated files, and those who
10348 keep generated files @emph{out} of CVS.
10350 @subsubheading All Files in CVS
10352 @itemize @bullet
10353 @item
10354 The CVS repository contains all distributed files so you know exactly
10355 what is distributed, and you can checkout any prior version entirely.
10357 @item
10358 Maintainers can see how generated files evolve (for instance, you can
10359 see what happens to your @file{Makefile.in}s when you upgrade Automake
10360 and make sure they look OK).
10362 @item
10363 Users do not need the autotools to build a checkout of the project, it
10364 works just like a released tarball.
10366 @item
10367 If users use @command{cvs update} to update their copy, instead of
10368 @command{cvs checkout} to fetch a fresh one, timestamps will be
10369 inaccurate.  Some rebuild rules will be triggered and attempt to
10370 run developer tools such as @command{autoconf} or @command{automake}.
10372 Actually, calls to such tools are all wrapped into a call to the
10373 @command{missing} script discussed later (@pxref{maintainer-mode}).
10374 @command{missing} will take care of fixing the timestamps when these
10375 tools are not installed, so that the build can continue.
10377 @item
10378 In distributed development, developers are likely to have different
10379 version of the maintainer tools installed.  In this case rebuilds
10380 triggered by timestamp lossage will lead to spurious changes
10381 to generated files.  There are several solutions to this:
10383 @itemize
10384 @item
10385 All developers should use the same versions, so that the rebuilt files
10386 are identical to files in CVS@.  (This starts to be difficult when each
10387 project you work on uses different versions.)
10388 @item
10389 Or people use a script to fix the timestamp after a checkout (the GCC
10390 folks have such a script).
10391 @item
10392 Or @file{configure.ac} uses @code{AM_MAINTAINER_MODE}, which will
10393 disable all these rebuild rules by default.  This is further discussed
10394 in @ref{maintainer-mode}.
10395 @end itemize
10397 @item
10398 Although we focused on spurious rebuilds, the converse can also
10399 happen.  CVS's timestamp handling can also let you think an
10400 out-of-date file is up-to-date.
10402 For instance, suppose a developer has modified @file{Makefile.am} and
10403 has rebuilt @file{Makefile.in}.  He then decides to do a last-minute
10404 change to @file{Makefile.am} right before checking in both files
10405 (without rebuilding @file{Makefile.in} to account for the change).
10407 This last change to @file{Makefile.am} makes the copy of
10408 @file{Makefile.in} out-of-date.  Since CVS processes files
10409 alphabetically, when another developer @samp{cvs update}s his or her
10410 tree, @file{Makefile.in} will happen to be newer than
10411 @file{Makefile.am}.  This other developer will not see that
10412 @file{Makefile.in} is out-of-date.
10414 @end itemize
10416 @subsubheading Generated Files out of CVS
10418 One way to get CVS and @command{make} working peacefully is to never
10419 store generated files in CVS, i.e., do not CVS-control files that
10420 are @file{Makefile} targets (also called @emph{derived} files).
10422 This way developers are not annoyed by changes to generated files.  It
10423 does not matter if they all have different versions (assuming they are
10424 compatible, of course).  And finally, timestamps are not lost, changes
10425 to sources files can't be missed as in the
10426 @file{Makefile.am}/@file{Makefile.in} example discussed earlier.
10428 The drawback is that the CVS repository is not an exact copy of what
10429 is distributed and that users now need to install various development
10430 tools (maybe even specific versions) before they can build a checkout.
10431 But, after all, CVS's job is versioning, not distribution.
10433 Allowing developers to use different versions of their tools can also
10434 hide bugs during distributed development.  Indeed, developers will be
10435 using (hence testing) their own generated files, instead of the
10436 generated files that will be released actually.  The developer who
10437 prepares the tarball might be using a version of the tool that
10438 produces bogus output (for instance a non-portable C file), something
10439 other developers could have noticed if they weren't using their own
10440 versions of this tool.
10442 @subheading Third-party Files
10443 @cindex CVS and third-party files
10444 @cindex third-party files and CVS
10446 Another class of files not discussed here (because they do not cause
10447 timestamp issues) are files that are shipped with a package, but
10448 maintained elsewhere.  For instance, tools like @command{gettextize}
10449 and @command{autopoint} (from Gettext) or @command{libtoolize} (from
10450 Libtool), will install or update files in your package.
10452 These files, whether they are kept under CVS or not, raise similar
10453 concerns about version mismatch between developers' tools.  The
10454 Gettext manual has a section about this, see @ref{CVS Issues, CVS
10455 Issues, Integrating with CVS, gettext, GNU gettext tools}.
10457 @node maintainer-mode
10458 @section @command{missing} and @code{AM_MAINTAINER_MODE}
10460 @subheading @command{missing}
10461 @cindex @command{missing}, purpose
10463 The @command{missing} script is a wrapper around several maintainer
10464 tools, designed to warn users if a maintainer tool is required but
10465 missing.  Typical maintainer tools are @command{autoconf},
10466 @command{automake}, @command{bison}, etc.  Because file generated by
10467 these tools are shipped with the other sources of a package, these
10468 tools shouldn't be required during a user build and they are not
10469 checked for in @file{configure}.
10471 However, if for some reason a rebuild rule is triggered and involves a
10472 missing tool, @command{missing} will notice it and warn the user.
10473 Besides the warning, when a tool is missing, @command{missing} will
10474 attempt to fix timestamps in a way that allows the build to continue.
10475 For instance, @command{missing} will touch @file{configure} if
10476 @command{autoconf} is not installed.  When all distributed files are
10477 kept under CVS, this feature of @command{missing} allows a user
10478 @emph{with no maintainer tools} to build a package off CVS, bypassing
10479 any timestamp inconsistency implied by @samp{cvs update}.
10481 If the required tool is installed, @command{missing} will run it and
10482 won't attempt to continue after failures.  This is correct during
10483 development: developers love fixing failures.  However, users with
10484 wrong versions of maintainer tools may get an error when the rebuild
10485 rule is spuriously triggered, halting the build.  This failure to let
10486 the build continue is one of the arguments of the
10487 @code{AM_MAINTAINER_MODE} advocates.
10489 @subheading @code{AM_MAINTAINER_MODE}
10490 @cindex @code{AM_MAINTAINER_MODE}, purpose
10491 @acindex AM_MAINTAINER_MODE
10493 @code{AM_MAINTAINER_MODE} allows you to choose whether the so called
10494 "rebuild rules" should be enabled or disabled.  With
10495 @code{AM_MAINTAINER_MODE([enable])}, they are enabled by default,
10496 otherwise they are disabled by default.  In the latter case, if
10497 you have @code{AM_MAINTAINER_MODE} in @file{configure.ac}, and run
10498 @samp{./configure && make}, then @command{make} will *never* attempt to
10499 rebuild @file{configure}, @file{Makefile.in}s, Lex or Yacc outputs, etc.
10500 I.e., this disables build rules for files that are usually distributed
10501 and that users should normally not have to update.
10503 The user can override the default setting by passing either
10504 @samp{--enable-maintainer-mode} or @samp{--disable-maintainer-mode}
10505 to @command{configure}.
10507 People use @code{AM_MAINTAINER_MODE} either because they do not want their
10508 users (or themselves) annoyed by timestamps lossage (@pxref{CVS}), or
10509 because they simply can't stand the rebuild rules and prefer running
10510 maintainer tools explicitly.
10512 @code{AM_MAINTAINER_MODE} also allows you to disable some custom build
10513 rules conditionally.  Some developers use this feature to disable
10514 rules that need exotic tools that users may not have available.
10516 Several years ago Fran@,{c}ois Pinard pointed out several arguments
10517 against this @code{AM_MAINTAINER_MODE} macro.  Most of them relate to
10518 insecurity.  By removing dependencies you get non-dependable builds:
10519 changes to sources files can have no effect on generated files and this
10520 can be very confusing when unnoticed.  He adds that security shouldn't
10521 be reserved to maintainers (what @option{--enable-maintainer-mode}
10522 suggests), on the contrary.  If one user has to modify a
10523 @file{Makefile.am}, then either @file{Makefile.in} should be updated
10524 or a warning should be output (this is what Automake uses
10525 @command{missing} for) but the last thing you want is that nothing
10526 happens and the user doesn't notice it (this is what happens when
10527 rebuild rules are disabled by @code{AM_MAINTAINER_MODE}).
10529 Jim Meyering, the inventor of the @code{AM_MAINTAINER_MODE} macro was
10530 swayed by Fran@,{c}ois's arguments, and got rid of
10531 @code{AM_MAINTAINER_MODE} in all of his packages.
10533 Still many people continue to use @code{AM_MAINTAINER_MODE}, because
10534 it helps them working on projects where all files are kept under CVS,
10535 and because @command{missing} isn't enough if you have the wrong
10536 version of the tools.
10539 @node Wildcards
10540 @section Why doesn't Automake support wildcards?
10541 @cindex wildcards
10543 Developers are lazy.  They would often like to use wildcards in
10544 @file{Makefile.am}s, so that they would not need to remember to
10545 update @file{Makefile.am}s every time they add, delete, or rename
10546 a file.
10548 There are several objections to this:
10549 @itemize
10550 @item
10551 When using CVS (or similar) developers need to remember they have to
10552 run @samp{cvs add} or @samp{cvs rm} anyway.  Updating
10553 @file{Makefile.am} accordingly quickly becomes a reflex.
10555 Conversely, if your application doesn't compile
10556 because you forgot to add a file in @file{Makefile.am}, it will help
10557 you remember to @samp{cvs add} it.
10559 @item
10560 Using wildcards makes it easy to distribute files by mistake.  For
10561 instance, some code a developer is experimenting with (a test case,
10562 say) that should not be part of the distribution.
10564 @item
10565 Using wildcards it's easy to omit some files by mistake.  For
10566 instance, one developer creates a new file, uses it in many places,
10567 but forgets to commit it.  Another developer then checks out the
10568 incomplete project and is able to run @samp{make dist} successfully,
10569 even though a file is missing. By listing files, @samp{make dist}
10570 @emph{will} complain.
10572 @item
10573 Finally, it's really hard to @emph{forget} to add a file to
10574 @file{Makefile.am}: files that are not listed in @file{Makefile.am} are
10575 not compiled or installed, so you can't even test them.
10576 @end itemize
10578 Still, these are philosophical objections, and as such you may disagree,
10579 or find enough value in wildcards to dismiss all of them.  Before you
10580 start writing a patch against Automake to teach it about wildcards,
10581 let's see the main technical issue: portability.
10583 Although @samp{$(wildcard ...)} works with GNU @command{make}, it is
10584 not portable to other @command{make} implementations.
10586 The only way Automake could support @command{$(wildcard ...)} is by
10587 expending @command{$(wildcard ...)} when @command{automake} is run.
10588 The resulting @file{Makefile.in}s would be portable since they would
10589 list all files and not use @samp{$(wildcard ...)}.  However that
10590 means developers would need to remember to run @command{automake} each
10591 time they add, delete, or rename files.
10593 Compared to editing @file{Makefile.am}, this is a very small gain.  Sure,
10594 it's easier and faster to type @samp{automake; make} than to type
10595 @samp{emacs Makefile.am; make}.  But nobody bothered enough to write a
10596 patch to add support for this syntax.  Some people use scripts to
10597 generate file lists in @file{Makefile.am} or in separate
10598 @file{Makefile} fragments.
10600 Even if you don't care about portability, and are tempted to use
10601 @samp{$(wildcard ...)} anyway because you target only GNU Make, you
10602 should know there are many places where Automake needs to know exactly
10603 which files should be processed.  As Automake doesn't know how to
10604 expand @samp{$(wildcard ...)}, you cannot use it in these places.
10605 @samp{$(wildcard ...)} is a black box comparable to @code{AC_SUBST}ed
10606 variables as far Automake is concerned.
10608 You can get warnings about @samp{$(wildcard ...}) constructs using the
10609 @option{-Wportability} flag.
10611 @node Limitations on File Names
10612 @section Limitations on File Names
10613 @cindex file names, limitations on
10615 Automake attempts to support all kinds of file names, even those that
10616 contain unusual characters or are unusually long.  However, some
10617 limitations are imposed by the underlying operating system and tools.
10619 Most operating systems prohibit the use of the null byte in file
10620 names, and reserve @samp{/} as a directory separator.  Also, they
10621 require that file names are properly encoded for the user's locale.
10622 Automake is subject to these limits.
10624 Portable packages should limit themselves to @acronym{POSIX} file
10625 names.  These can contain @acronym{ASCII} letters and digits,
10626 @samp{_}, @samp{.}, and @samp{-}.  File names consist of components
10627 separated by @samp{/}.  File name components cannot begin with
10628 @samp{-}.
10630 Portable POSIX file names cannot contain components that exceed a
10631 14-byte limit, but nowadays it's normally safe to assume the
10632 more-generous @acronym{XOPEN} limit of 255 bytes.  @acronym{POSIX}
10633 limits file names to 255 bytes (@acronym{XOPEN} allows 1023 bytes),
10634 but you may want to limit a source tarball to file names of 99 bytes
10635 to avoid interoperability problems with old versions of @command{tar}.
10637 If you depart from these rules (e.g., by using non-@acronym{ASCII}
10638 characters in file names, or by using lengthy file names), your
10639 installers may have problems for reasons unrelated to Automake.
10640 However, if this does not concern you, you should know about the
10641 limitations imposed by Automake itself.  These limitations are
10642 undesirable, but some of them seem to be inherent to underlying tools
10643 like Autoconf, Make, M4, and the shell.  They fall into three
10644 categories: install directories, build directories, and file names.
10646 The following characters:
10648 @example
10649 @r{newline} " # $ ' `
10650 @end example
10652 should not appear in the names of install directories.  For example,
10653 the operand of @command{configure}'s @option{--prefix} option should
10654 not contain these characters.
10656 Build directories suffer the same limitations as install directories,
10657 and in addition should not contain the following characters:
10659 @example
10660 & @@ \
10661 @end example
10663 For example, the full name of the directory containing the source
10664 files should not contain these characters.
10666 Source and installation file names like @file{main.c} are limited even
10667 further: they should conform to the @acronym{POSIX}/@acronym{XOPEN}
10668 rules described above.  In addition, if you plan to port to
10669 non-@acronym{POSIX} environments, you should avoid file names that
10670 differ only in case (e.g., @file{makefile} and @file{Makefile}).
10671 Nowadays it is no longer worth worrying about the 8.3 limits of
10672 @acronym{DOS} file systems.
10674 @node distcleancheck
10675 @section Files left in build directory after distclean
10676 @cindex @code{distclean}, diagnostic
10677 @cindex @samp{make distclean}, diagnostic
10678 @cindex dependencies and distributed files
10679 @trindex distclean
10680 @trindex distcleancheck
10682 This is a diagnostic you might encounter while running @samp{make
10683 distcheck}.
10685 As explained in @ref{Checking the Distribution}, @samp{make distcheck}
10686 attempts to build and check your package for errors like this one.
10688 @samp{make distcheck} will perform a @code{VPATH} build of your
10689 package (@pxref{VPATH Builds}), and then call @samp{make distclean}.
10690 Files left in the build directory after @samp{make distclean} has run
10691 are listed after this error.
10693 This diagnostic really covers two kinds of errors:
10695 @itemize @bullet
10696 @item
10697 files that are forgotten by distclean;
10698 @item
10699 distributed files that are erroneously rebuilt.
10700 @end itemize
10702 The former left-over files are not distributed, so the fix is to mark
10703 them for cleaning (@pxref{Clean}), this is obvious and doesn't deserve
10704 more explanations.
10706 The latter bug is not always easy to understand and fix, so let's
10707 proceed with an example.  Suppose our package contains a program for
10708 which we want to build a man page using @command{help2man}.  GNU
10709 @command{help2man} produces simple manual pages from the @option{--help}
10710 and @option{--version} output of other commands (@pxref{Top, , Overview,
10711 help2man, The Help2man Manual}).  Because we don't want to force our
10712 users to install @command{help2man}, we decide to distribute the
10713 generated man page using the following setup.
10715 @example
10716 # This Makefile.am is bogus.
10717 bin_PROGRAMS = foo
10718 foo_SOURCES = foo.c
10719 dist_man_MANS = foo.1
10721 foo.1: foo$(EXEEXT)
10722         help2man --output=foo.1 ./foo$(EXEEXT)
10723 @end example
10725 This will effectively distribute the man page.  However,
10726 @samp{make distcheck} will fail with:
10728 @example
10729 ERROR: files left in build directory after distclean:
10730 ./foo.1
10731 @end example
10733 Why was @file{foo.1} rebuilt?  Because although distributed,
10734 @file{foo.1} depends on a non-distributed built file:
10735 @file{foo$(EXEEXT)}.  @file{foo$(EXEEXT)} is built by the user, so it
10736 will always appear to be newer than the distributed @file{foo.1}.
10738 @samp{make distcheck} caught an inconsistency in our package.  Our
10739 intent was to distribute @file{foo.1} so users do not need to install
10740 @command{help2man}, however since this rule causes this file to be
10741 always rebuilt, users @emph{do} need @command{help2man}.  Either we
10742 should ensure that @file{foo.1} is not rebuilt by users, or there is
10743 no point in distributing @file{foo.1}.
10745 More generally, the rule is that distributed files should never depend
10746 on non-distributed built files.  If you distribute something
10747 generated, distribute its sources.
10749 One way to fix the above example, while still distributing
10750 @file{foo.1} is to not depend on @file{foo$(EXEEXT)}.  For instance,
10751 assuming @command{foo --version} and @command{foo --help} do not
10752 change unless @file{foo.c} or @file{configure.ac} change, we could
10753 write the following @file{Makefile.am}:
10755 @example
10756 bin_PROGRAMS = foo
10757 foo_SOURCES = foo.c
10758 dist_man_MANS = foo.1
10760 foo.1: foo.c $(top_srcdir)/configure.ac
10761         $(MAKE) $(AM_MAKEFLAGS) foo$(EXEEXT)
10762         help2man --output=foo.1 ./foo$(EXEEXT)
10763 @end example
10765 This way, @file{foo.1} will not get rebuilt every time
10766 @file{foo$(EXEEXT)} changes.  The @command{make} call makes sure
10767 @file{foo$(EXEEXT)} is up-to-date before @command{help2man}.  Another
10768 way to ensure this would be to use separate directories for binaries
10769 and man pages, and set @code{SUBDIRS} so that binaries are built
10770 before man pages.
10772 We could also decide not to distribute @file{foo.1}.  In
10773 this case it's fine to have @file{foo.1} dependent upon
10774 @file{foo$(EXEEXT)}, since both will have to be rebuilt.
10775 However it would be impossible to build the package in a
10776 cross-compilation, because building @file{foo.1} involves
10777 an @emph{execution} of @file{foo$(EXEEXT)}.
10779 Another context where such errors are common is when distributed files
10780 are built by tools that are built by the package.  The pattern is
10781 similar:
10783 @example
10784 distributed-file: built-tools distributed-sources
10785         build-command
10786 @end example
10788 @noindent
10789 should be changed to
10791 @example
10792 distributed-file: distributed-sources
10793         $(MAKE) $(AM_MAKEFLAGS) built-tools
10794         build-command
10795 @end example
10797 @noindent
10798 or you could choose not to distribute @file{distributed-file}, if
10799 cross-compilation does not matter.
10801 The points made through these examples are worth a summary:
10803 @cartouche
10804 @itemize
10805 @item
10806 Distributed files should never depend upon non-distributed built
10807 files.
10808 @item
10809 Distributed files should be distributed with all their dependencies.
10810 @item
10811 If a file is @emph{intended} to be rebuilt by users, then there is no point
10812 in distributing it.
10813 @end itemize
10814 @end cartouche
10816 @vrindex distcleancheck_listfiles
10817 For desperate cases, it's always possible to disable this check by
10818 setting @code{distcleancheck_listfiles} as documented in @ref{Checking
10819 the Distribution}.
10820 Make sure you do understand the reason why @samp{make distcheck}
10821 complains before you do this.  @code{distcleancheck_listfiles} is a
10822 way to @emph{hide} errors, not to fix them.  You can always do better.
10824 @node Flag Variables Ordering
10825 @section Flag Variables Ordering
10826 @cindex Ordering flag variables
10827 @cindex Flag variables, ordering
10829 @display
10830 What is the difference between @code{AM_CFLAGS}, @code{CFLAGS}, and
10831 @code{mumble_CFLAGS}?
10832 @end display
10834 @display
10835 Why does @command{automake} output @code{CPPFLAGS} after
10836 @code{AM_CPPFLAGS} on compile lines?  Shouldn't it be the converse?
10837 @end display
10839 @display
10840 My @file{configure} adds some warning flags into @code{CXXFLAGS}.  In
10841 one @file{Makefile.am} I would like to append a new flag, however if I
10842 put the flag into @code{AM_CXXFLAGS} it is prepended to the other
10843 flags, not appended.
10844 @end display
10846 @subheading Compile Flag Variables
10847 @cindex Flag Variables, Ordering
10848 @cindex Compile Flag Variables
10849 @cindex @code{AM_CCASFLAGS} and @code{CCASFLAGS}
10850 @cindex @code{AM_CFLAGS} and @code{CFLAGS}
10851 @cindex @code{AM_CPPFLAGS} and @code{CPPFLAGS}
10852 @cindex @code{AM_CXXFLAGS} and @code{CXXFLAGS}
10853 @cindex @code{AM_FCFLAGS} and @code{FCFLAGS}
10854 @cindex @code{AM_FFLAGS} and @code{FFLAGS}
10855 @cindex @code{AM_GCJFLAGS} and @code{GCJFLAGS}
10856 @cindex @code{AM_LDFLAGS} and @code{LDFLAGS}
10857 @cindex @code{AM_LFLAGS} and @code{LFLAGS}
10858 @cindex @code{AM_LIBTOOLFLAGS} and @code{LIBTOOLFLAGS}
10859 @cindex @code{AM_OBJCFLAGS} and @code{OBJCFLAGS}
10860 @cindex @code{AM_RFLAGS} and @code{RFLAGS}
10861 @cindex @code{AM_UPCFLAGS} and @code{UPCFLAGS}
10862 @cindex @code{AM_YFLAGS} and @code{YFLAGS}
10863 @cindex @code{CCASFLAGS} and @code{AM_CCASFLAGS}
10864 @cindex @code{CFLAGS} and @code{AM_CFLAGS}
10865 @cindex @code{CPPFLAGS} and @code{AM_CPPFLAGS}
10866 @cindex @code{CXXFLAGS} and @code{AM_CXXFLAGS}
10867 @cindex @code{FCFLAGS} and @code{AM_FCFLAGS}
10868 @cindex @code{FFLAGS} and @code{AM_FFLAGS}
10869 @cindex @code{GCJFLAGS} and @code{AM_GCJFLAGS}
10870 @cindex @code{LDFLAGS} and @code{AM_LDFLAGS}
10871 @cindex @code{LFLAGS} and @code{AM_LFLAGS}
10872 @cindex @code{LIBTOOLFLAGS} and @code{AM_LIBTOOLFLAGS}
10873 @cindex @code{OBJCFLAGS} and @code{AM_OBJCFLAGS}
10874 @cindex @code{RFLAGS} and @code{AM_RFLAGS}
10875 @cindex @code{UPCFLAGS} and @code{AM_UPCFLAGS}
10876 @cindex @code{YFLAGS} and @code{AM_YFLAGS}
10878 This section attempts to answer all the above questions.  We will
10879 mostly discuss @code{CPPFLAGS} in our examples, but actually the
10880 answer holds for all the compile flags used in Automake:
10881 @code{CCASFLAGS}, @code{CFLAGS}, @code{CPPFLAGS}, @code{CXXFLAGS},
10882 @code{FCFLAGS}, @code{FFLAGS}, @code{GCJFLAGS}, @code{LDFLAGS},
10883 @code{LFLAGS}, @code{LIBTOOLFLAGS}, @code{OBJCFLAGS}, @code{RFLAGS},
10884 @code{UPCFLAGS}, and @code{YFLAGS}.
10886 @code{CPPFLAGS}, @code{AM_CPPFLAGS}, and @code{mumble_CPPFLAGS} are
10887 three variables that can be used to pass flags to the C preprocessor
10888 (actually these variables are also used for other languages like C++
10889 or preprocessed Fortran).  @code{CPPFLAGS} is the user variable
10890 (@pxref{User Variables}), @code{AM_CPPFLAGS} is the Automake variable,
10891 and @code{mumble_CPPFLAGS} is the variable specific to the
10892 @code{mumble} target (we call this a per-target variable,
10893 @pxref{Program and Library Variables}).
10895 Automake always uses two of these variables when compiling C sources
10896 files.  When compiling an object file for the @code{mumble} target,
10897 the first variable will be @code{mumble_CPPFLAGS} if it is defined, or
10898 @code{AM_CPPFLAGS} otherwise.  The second variable is always
10899 @code{CPPFLAGS}.
10901 In the following example,
10903 @example
10904 bin_PROGRAMS = foo bar
10905 foo_SOURCES = xyz.c
10906 bar_SOURCES = main.c
10907 foo_CPPFLAGS = -DFOO
10908 AM_CPPFLAGS = -DBAZ
10909 @end example
10911 @noindent
10912 @file{xyz.o} will be compiled with @samp{$(foo_CPPFLAGS) $(CPPFLAGS)},
10913 (because @file{xyz.o} is part of the @code{foo} target), while
10914 @file{main.o} will be compiled with @samp{$(AM_CPPFLAGS) $(CPPFLAGS)}
10915 (because there is no per-target variable for target @code{bar}).
10917 The difference between @code{mumble_CPPFLAGS} and @code{AM_CPPFLAGS}
10918 being clear enough, let's focus on @code{CPPFLAGS}.  @code{CPPFLAGS}
10919 is a user variable, i.e., a variable that users are entitled to modify
10920 in order to compile the package.  This variable, like many others,
10921 is documented at the end of the output of @samp{configure --help}.
10923 For instance, someone who needs to add @file{/home/my/usr/include} to
10924 the C compiler's search path would configure a package with
10926 @example
10927 ./configure CPPFLAGS='-I /home/my/usr/include'
10928 @end example
10930 @noindent
10931 and this flag would be propagated to the compile rules of all
10932 @file{Makefile}s.
10934 It is also not uncommon to override a user variable at
10935 @command{make}-time.  Many installers do this with @code{prefix}, but
10936 this can be useful with compiler flags too.  For instance, if, while
10937 debugging a C++ project, you need to disable optimization in one
10938 specific object file, you can run something like
10940 @example
10941 rm file.o
10942 make CXXFLAGS=-O0 file.o
10943 make
10944 @end example
10946 The reason @samp{$(CPPFLAGS)} appears after @samp{$(AM_CPPFLAGS)} or
10947 @samp{$(mumble_CPPFLAGS)} in the compile command is that users
10948 should always have the last say.  It probably makes more sense if you
10949 think about it while looking at the @samp{CXXFLAGS=-O0} above, which
10950 should supersede any other switch from @code{AM_CXXFLAGS} or
10951 @code{mumble_CXXFLAGS} (and this of course replaces the previous value
10952 of @code{CXXFLAGS}).
10954 You should never redefine a user variable such as @code{CPPFLAGS} in
10955 @file{Makefile.am}.  Use @samp{automake -Woverride} to diagnose such
10956 mistakes.  Even something like
10958 @example
10959 CPPFLAGS = -DDATADIR=\"$(datadir)\" @@CPPFLAGS@@
10960 @end example
10962 @noindent
10963 is erroneous.  Although this preserves @file{configure}'s value of
10964 @code{CPPFLAGS}, the definition of @code{DATADIR} will disappear if a
10965 user attempts to override @code{CPPFLAGS} from the @command{make}
10966 command line.
10968 @example
10969 AM_CPPFLAGS = -DDATADIR=\"$(datadir)\"
10970 @end example
10972 @noindent
10973 is all that is needed here if no per-target flags are used.
10975 You should not add options to these user variables within
10976 @file{configure} either, for the same reason.  Occasionally you need
10977 to modify these variables to perform a test, but you should reset
10978 their values afterwards.  In contrast, it is OK to modify the
10979 @samp{AM_} variables within @file{configure} if you @code{AC_SUBST}
10980 them, but it is rather rare that you need to do this, unless you
10981 really want to change the default definitions of the @samp{AM_}
10982 variables in all @file{Makefile}s.
10984 What we recommend is that you define extra flags in separate
10985 variables.  For instance, you may write an Autoconf macro that computes
10986 a set of warning options for the C compiler, and @code{AC_SUBST} them
10987 in @code{WARNINGCFLAGS}; you may also have an Autoconf macro that
10988 determines which compiler and which linker flags should be used to
10989 link with library @file{libfoo}, and @code{AC_SUBST} these in
10990 @code{LIBFOOCFLAGS} and @code{LIBFOOLDFLAGS}.  Then, a
10991 @file{Makefile.am} could use these variables as follows:
10993 @example
10994 AM_CFLAGS = $(WARNINGCFLAGS)
10995 bin_PROGRAMS = prog1 prog2
10996 prog1_SOURCES = @dots{}
10997 prog2_SOURCES = @dots{}
10998 prog2_CFLAGS = $(LIBFOOCFLAGS) $(AM_CFLAGS)
10999 prog2_LDFLAGS = $(LIBFOOLDFLAGS)
11000 @end example
11002 In this example both programs will be compiled with the flags
11003 substituted into @samp{$(WARNINGCFLAGS)}, and @code{prog2} will
11004 additionally be compiled with the flags required to link with
11005 @file{libfoo}.
11007 Note that listing @code{AM_CFLAGS} in a per-target @code{CFLAGS}
11008 variable is a common idiom to ensure that @code{AM_CFLAGS} applies to
11009 every target in a @file{Makefile.in}.
11011 Using variables like this gives you full control over the ordering of
11012 the flags.  For instance, if there is a flag in $(WARNINGCFLAGS) that
11013 you want to negate for a particular target, you can use something like
11014 @samp{prog1_CFLAGS = $(AM_CFLAGS) -no-flag}.  If all these flags had
11015 been forcefully appended to @code{CFLAGS}, there would be no way to
11016 disable one flag.  Yet another reason to leave user variables to
11017 users.
11019 Finally, we have avoided naming the variable of the example
11020 @code{LIBFOO_LDFLAGS} (with an underscore) because that would cause
11021 Automake to think that this is actually a per-target variable (like
11022 @code{mumble_LDFLAGS}) for some non-declared @code{LIBFOO} target.
11024 @subheading Other Variables
11026 There are other variables in Automake that follow similar principles
11027 to allow user options.  For instance, Texinfo rules (@pxref{Texinfo})
11028 use @code{MAKEINFOFLAGS} and @code{AM_MAKEINFOFLAGS}.  Similarly,
11029 DejaGnu tests (@pxref{DejaGnu Tests}) use @code{RUNTESTDEFAULTFLAGS} and
11030 @code{AM_RUNTESTDEFAULTFLAGS}.  The tags and ctags rules
11031 (@pxref{Tags}) use @code{ETAGSFLAGS}, @code{AM_ETAGSFLAGS},
11032 @code{CTAGSFLAGS}, and @code{AM_CTAGSFLAGS}.  Java rules
11033 (@pxref{Java}) use @code{JAVACFLAGS} and @code{AM_JAVACFLAGS}.  None
11034 of these rules support per-target flags (yet).
11036 To some extent, even @code{AM_MAKEFLAGS} (@pxref{Subdirectories})
11037 obeys this naming scheme.  The slight difference is that
11038 @code{MAKEFLAGS} is passed to sub-@command{make}s implicitly by
11039 @command{make} itself.
11041 However you should not think that all variables ending with
11042 @code{FLAGS} follow this convention.  For instance,
11043 @code{DISTCHECK_CONFIGURE_FLAGS} (@pxref{Checking the Distribution}) and
11044 @code{ACLOCAL_AMFLAGS} (see @ref{Rebuilding} and @ref{Local Macros}),
11045 are two variables that are only useful to the maintainer and have no
11046 user counterpart.
11048 @code{ARFLAGS} (@pxref{A Library}) is usually defined by Automake and
11049 has neither @code{AM_} nor per-target cousin.
11051 Finally you should not think that the existence of a per-target
11052 variable implies the existance of an @code{AM_} variable or of a user
11053 variable.  For instance, the @code{mumble_LDADD} per-target variable
11054 overrides the makefile-wide @code{LDADD} variable (which is not a user
11055 variable), and @code{mumble_LIBADD} exists only as a per-target
11056 variable.  @xref{Program and Library Variables}.
11059 @node Renamed Objects
11060 @section Why are object files sometimes renamed?
11062 This happens when per-target compilation flags are used.  Object
11063 files need to be renamed just in case they would clash with object
11064 files compiled from the same sources, but with different flags.
11065 Consider the following example.
11067 @example
11068 bin_PROGRAMS = true false
11069 true_SOURCES = generic.c
11070 true_CPPFLAGS = -DEXIT_CODE=0
11071 false_SOURCES = generic.c
11072 false_CPPFLAGS = -DEXIT_CODE=1
11073 @end example
11074 @noindent
11075 Obviously the two programs are built from the same source, but it
11076 would be bad if they shared the same object, because @file{generic.o}
11077 cannot be built with both @samp{-DEXIT_CODE=0} @emph{and}
11078 @samp{-DEXIT_CODE=1}.  Therefore @command{automake} outputs rules to
11079 build two different objects: @file{true-generic.o} and
11080 @file{false-generic.o}.
11082 @command{automake} doesn't actually look whether source files are
11083 shared to decide if it must rename objects.  It will just rename all
11084 objects of a target as soon as it sees per-target compilation flags
11085 used.
11087 It's OK to share object files when per-target compilation flags are not
11088 used.  For instance, @file{true} and @file{false} will both use
11089 @file{version.o} in the following example.
11091 @example
11092 AM_CPPFLAGS = -DVERSION=1.0
11093 bin_PROGRAMS = true false
11094 true_SOURCES = true.c version.c
11095 false_SOURCES = false.c version.c
11096 @end example
11098 Note that the renaming of objects is also affected by the
11099 @code{_SHORTNAME} variable (@pxref{Program and Library Variables}).
11102 @node Per-Object Flags
11103 @section Per-Object Flags Emulation
11104 @cindex Per-object flags, emulated
11106 @display
11107 One of my source files needs to be compiled with different flags.  How
11108 do I do?
11109 @end display
11111 Automake supports per-program and per-library compilation flags (see
11112 @ref{Program and Library Variables} and @ref{Flag Variables
11113 Ordering}).  With this you can define compilation flags that apply to
11114 all files compiled for a target.  For instance, in
11116 @example
11117 bin_PROGRAMS = foo
11118 foo_SOURCES = foo.c foo.h bar.c bar.h main.c
11119 foo_CFLAGS = -some -flags
11120 @end example
11122 @noindent
11123 @file{foo-foo.o}, @file{foo-bar.o}, and @file{foo-main.o} will all be
11124 compiled with @samp{-some -flags}.  (If you wonder about the names of
11125 these object files, see @ref{Renamed Objects}.)  Note that
11126 @code{foo_CFLAGS} gives the flags to use when compiling all the C
11127 sources of the @emph{program} @code{foo}, it has nothing to do with
11128 @file{foo.c} or @file{foo-foo.o} specifically.
11130 What if @file{foo.c} needs to be compiled into @file{foo.o} using some
11131 specific flags, that none of the other files requires?  Obviously
11132 per-program flags are not directly applicable here.  Something like
11133 per-object flags are expected, i.e., flags that would be used only
11134 when creating @file{foo-foo.o}.  Automake does not support that,
11135 however this is easy to simulate using a library that contains only
11136 that object, and compiling this library with per-library flags.
11138 @example
11139 bin_PROGRAMS = foo
11140 foo_SOURCES = bar.c bar.h main.c
11141 foo_CFLAGS = -some -flags
11142 foo_LDADD = libfoo.a
11143 noinst_LIBRARIES = libfoo.a
11144 libfoo_a_SOURCES = foo.c foo.h
11145 libfoo_a_CFLAGS = -some -other -flags
11146 @end example
11148 Here @file{foo-bar.o} and @file{foo-main.o} will all be
11149 compiled with @samp{-some -flags}, while @file{libfoo_a-foo.o} will
11150 be compiled using @samp{-some -other -flags}.  Eventually, all
11151 three objects will be linked to form @file{foo}.
11153 This trick can also be achieved using Libtool convenience libraries,
11154 for instance @samp{noinst_LTLIBRARIES = libfoo.la} (@pxref{Libtool
11155 Convenience Libraries}).
11157 Another tempting idea to implement per-object flags is to override the
11158 compile rules @command{automake} would output for these files.
11159 Automake will not define a rule for a target you have defined, so you
11160 could think about defining the @samp{foo-foo.o: foo.c} rule yourself.
11161 We recommend against this, because this is error prone.  For instance,
11162 if you add such a rule to the first example, it will break the day you
11163 decide to remove @code{foo_CFLAGS} (because @file{foo.c} will then be
11164 compiled as @file{foo.o} instead of @file{foo-foo.o}, @pxref{Renamed
11165 Objects}).  Also in order to support dependency tracking, the two
11166 @file{.o}/@file{.obj} extensions, and all the other flags variables
11167 involved in a compilation, you will end up modifying a copy of the
11168 rule previously output by @command{automake} for this file.  If a new
11169 release of Automake generates a different rule, your copy will need to
11170 be updated by hand.
11172 @node Multiple Outputs
11173 @section Handling Tools that Produce Many Outputs
11174 @cindex multiple outputs, rules with
11175 @cindex many outputs, rules with
11176 @cindex rules with multiple outputs
11178 This section describes a @command{make} idiom that can be used when a
11179 tool produces multiple output files.  It is not specific to Automake
11180 and can be used in ordinary @file{Makefile}s.
11182 Suppose we have a program called @command{foo} that will read one file
11183 called @file{data.foo} and produce two files named @file{data.c} and
11184 @file{data.h}.  We want to write a @file{Makefile} rule that captures
11185 this one-to-two dependency.
11187 The naive rule is incorrect:
11189 @example
11190 # This is incorrect.
11191 data.c data.h: data.foo
11192         foo data.foo
11193 @end example
11195 @noindent
11196 What the above rule really says is that @file{data.c} and
11197 @file{data.h} each depend on @file{data.foo}, and can each be built by
11198 running @samp{foo data.foo}.  In other words it is equivalent to:
11200 @example
11201 # We do not want this.
11202 data.c: data.foo
11203         foo data.foo
11204 data.h: data.foo
11205         foo data.foo
11206 @end example
11208 @noindent
11209 which means that @command{foo} can be run twice.  Usually it will not
11210 be run twice, because @command{make} implementations are smart enough
11211 to check for the existence of the second file after the first one has
11212 been built; they will therefore detect that it already exists.
11213 However there are a few situations where it can run twice anyway:
11215 @itemize
11216 @item
11217 The most worrying case is when running a parallel @command{make}.  If
11218 @file{data.c} and @file{data.h} are built in parallel, two @samp{foo
11219 data.foo} commands will run concurrently.  This is harmful.
11220 @item
11221 Another case is when the dependency (here @file{data.foo}) is
11222 (or depends upon) a phony target.
11223 @end itemize
11225 A solution that works with parallel @command{make} but not with
11226 phony dependencies is the following:
11228 @example
11229 data.c data.h: data.foo
11230         foo data.foo
11231 data.h: data.c
11232 @end example
11234 @noindent
11235 The above rules are equivalent to
11237 @example
11238 data.c: data.foo
11239         foo data.foo
11240 data.h: data.foo data.c
11241         foo data.foo
11242 @end example
11243 @noindent
11244 therefore a parallel @command{make} will have to serialize the builds
11245 of @file{data.c} and @file{data.h}, and will detect that the second is
11246 no longer needed once the first is over.
11248 Using this pattern is probably enough for most cases.  However it does
11249 not scale easily to more output files (in this scheme all output files
11250 must be totally ordered by the dependency relation), so we will
11251 explore a more complicated solution.
11253 Another idea is to write the following:
11255 @example
11256 # There is still a problem with this one.
11257 data.c: data.foo
11258         foo data.foo
11259 data.h: data.c
11260 @end example
11262 @noindent
11263 The idea is that @samp{foo data.foo} is run only when @file{data.c}
11264 needs to be updated, but we further state that @file{data.h} depends
11265 upon @file{data.c}.  That way, if @file{data.h} is required and
11266 @file{data.foo} is out of date, the dependency on @file{data.c} will
11267 trigger the build.
11269 This is almost perfect, but suppose we have built @file{data.h} and
11270 @file{data.c}, and then we erase @file{data.h}.  Then, running
11271 @samp{make data.h} will not rebuild @file{data.h}.  The above rules
11272 just state that @file{data.c} must be up-to-date with respect to
11273 @file{data.foo}, and this is already the case.
11275 What we need is a rule that forces a rebuild when @file{data.h} is
11276 missing.  Here it is:
11278 @example
11279 data.c: data.foo
11280         foo data.foo
11281 data.h: data.c
11282 ## Recover from the removal of $@@
11283         @@if test -f $@@; then :; else \
11284           rm -f data.c; \
11285           $(MAKE) $(AM_MAKEFLAGS) data.c; \
11286         fi
11287 @end example
11289 The above scheme can be extended to handle more outputs and more
11290 inputs.  One of the outputs is selected to serve as a witness to the
11291 successful completion of the command, it depends upon all inputs, and
11292 all other outputs depend upon it.  For instance, if @command{foo}
11293 should additionally read @file{data.bar} and also produce
11294 @file{data.w} and @file{data.x}, we would write:
11296 @example
11297 data.c: data.foo data.bar
11298         foo data.foo data.bar
11299 data.h data.w data.x: data.c
11300 ## Recover from the removal of $@@
11301         @@if test -f $@@; then :; else \
11302           rm -f data.c; \
11303           $(MAKE) $(AM_MAKEFLAGS) data.c; \
11304         fi
11305 @end example
11307 However there are now two minor problems in this setup.  One is related
11308 to the timestamp ordering of @file{data.h}, @file{data.w},
11309 @file{data.x}, and @file{data.c}.  The other one is a race condition
11310 if a parallel @command{make} attempts to run multiple instances of the
11311 recover block at once.
11313 Let us deal with the first problem.  @command{foo} outputs four files,
11314 but we do not know in which order these files are created.  Suppose
11315 that @file{data.h} is created before @file{data.c}.  Then we have a
11316 weird situation.  The next time @command{make} is run, @file{data.h}
11317 will appear older than @file{data.c}, the second rule will be
11318 triggered, a shell will be started to execute the @samp{if@dots{}fi}
11319 command, but actually it will just execute the @code{then} branch,
11320 that is: nothing.  In other words, because the witness we selected is
11321 not the first file created by @command{foo}, @command{make} will start
11322 a shell to do nothing each time it is run.
11324 A simple riposte is to fix the timestamps when this happens.
11326 @example
11327 data.c: data.foo data.bar
11328         foo data.foo data.bar
11329 data.h data.w data.x: data.c
11330         @@if test -f $@@; then \
11331           touch $@@; \
11332         else \
11333 ## Recover from the removal of $@@
11334           rm -f data.c; \
11335           $(MAKE) $(AM_MAKEFLAGS) data.c; \
11336         fi
11337 @end example
11339 Another solution is to use a different and dedicated file as witness,
11340 rather than using any of @command{foo}'s outputs.
11342 @example
11343 data.stamp: data.foo data.bar
11344         @@rm -f data.tmp
11345         @@touch data.tmp
11346         foo data.foo data.bar
11347         @@mv -f data.tmp $@@
11348 data.c data.h data.w data.x: data.stamp
11349 ## Recover from the removal of $@@
11350         @@if test -f $@@; then :; else \
11351           rm -f data.stamp; \
11352           $(MAKE) $(AM_MAKEFLAGS) data.stamp; \
11353         fi
11354 @end example
11356 @file{data.tmp} is created before @command{foo} is run, so it has a
11357 timestamp older than output files output by @command{foo}.  It is then
11358 renamed to @file{data.stamp} after @command{foo} has run, because we
11359 do not want to update @file{data.stamp} if @command{foo} fails.
11361 This solution still suffers from the second problem: the race
11362 condition in the recover rule.  If, after a successful build, a user
11363 erases @file{data.c} and @file{data.h}, and runs @samp{make -j}, then
11364 @command{make} may start both recover rules in parallel.  If the two
11365 instances of the rule execute @samp{$(MAKE) $(AM_MAKEFLAGS)
11366 data.stamp} concurrently the build is likely to fail (for instance, the
11367 two rules will create @file{data.tmp}, but only one can rename it).
11369 Admittedly, such a weird situation does not arise during ordinary
11370 builds.  It occurs only when the build tree is mutilated.  Here
11371 @file{data.c} and @file{data.h} have been explicitly removed without
11372 also removing @file{data.stamp} and the other output files.
11373 @code{make clean; make} will always recover from these situations even
11374 with parallel makes, so you may decide that the recover rule is solely
11375 to help non-parallel make users and leave things as-is.  Fixing this
11376 requires some locking mechanism to ensure only one instance of the
11377 recover rule rebuilds @file{data.stamp}.  One could imagine something
11378 along the following lines.
11380 @example
11381 data.c data.h data.w data.x: data.stamp
11382 ## Recover from the removal of $@@
11383         @@if test -f $@@; then :; else \
11384           trap 'rm -rf data.lock data.stamp' 1 2 13 15; \
11385 ## mkdir is a portable test-and-set
11386           if mkdir data.lock 2>/dev/null; then \
11387 ## This code is being executed by the first process.
11388             rm -f data.stamp; \
11389             $(MAKE) $(AM_MAKEFLAGS) data.stamp; \
11390             result=$$?; rm -rf data.lock; exit $$result; \
11391           else \
11392 ## This code is being executed by the follower processes.
11393 ## Wait until the first process is done.
11394             while test -d data.lock; do sleep 1; done; \
11395 ## Succeed if and only if the first process succeeded.
11396             test -f data.stamp; \
11397           fi; \
11398         fi
11399 @end example
11401 Using a dedicated witness, like @file{data.stamp}, is very handy when
11402 the list of output files is not known beforehand.  As an illustration,
11403 consider the following rules to compile many @file{*.el} files into
11404 @file{*.elc} files in a single command.  It does not matter how
11405 @code{ELFILES} is defined (as long as it is not empty: empty targets
11406 are not accepted by POSIX).
11408 @example
11409 ELFILES = one.el two.el three.el @dots{}
11410 ELCFILES = $(ELFILES:=c)
11412 elc-stamp: $(ELFILES)
11413         @@rm -f elc-temp
11414         @@touch elc-temp
11415         $(elisp_comp) $(ELFILES)
11416         @@mv -f elc-temp $@@
11418 $(ELCFILES): elc-stamp
11419 ## Recover from the removal of $@@
11420         @@if test -f $@@; then :; else \
11421           trap 'rm -rf elc-lock elc-stamp' 1 2 13 15; \
11422           if mkdir elc-lock 2>/dev/null; then \
11423 ## This code is being executed by the first process.
11424             rm -f elc-stamp; \
11425             $(MAKE) $(AM_MAKEFLAGS) elc-stamp; \
11426             rmdir elc-lock; \
11427           else \
11428 ## This code is being executed by the follower processes.
11429 ## Wait until the first process is done.
11430             while test -d elc-lock; do sleep 1; done; \
11431 ## Succeed if and only if the first process succeeded.
11432             test -f elc-stamp; exit $$?; \
11433           fi; \
11434         fi
11435 @end example
11437 For completeness it should be noted that GNU @command{make} is able to
11438 express rules with multiple output files using pattern rules
11439 (@pxref{Pattern Examples, , Pattern Rule Examples, make, The GNU Make
11440 Manual}).  We do not discuss pattern rules here because they are not
11441 portable, but they can be convenient in packages that assume GNU
11442 @command{make}.
11445 @node Hard-Coded Install Paths
11446 @section Installing to Hard-Coded Locations
11448 @display
11449 My package needs to install some configuration file.  I tried to use
11450 the following rule, but @samp{make distcheck} fails.  Why?
11452 @example
11453 # Do not do this.
11454 install-data-local:
11455         $(INSTALL_DATA) $(srcdir)/afile $(DESTDIR)/etc/afile
11456 @end example
11457 @end display
11459 @display
11460 My package needs to populate the installation directory of another
11461 package at install-time.  I can easily compute that installation
11462 directory in @file{configure}, but if I install files therein,
11463 @samp{make distcheck} fails.  How else should I do?
11464 @end display
11466 These two setups share their symptoms: @samp{make distcheck} fails
11467 because they are installing files to hard-coded paths.  In the later
11468 case the path is not really hard-coded in the package, but we can
11469 consider it to be hard-coded in the system (or in whichever tool that
11470 supplies the path).  As long as the path does not use any of the
11471 standard directory variables (@samp{$(prefix)}, @samp{$(bindir)},
11472 @samp{$(datadir)}, etc.), the effect will be the same:
11473 user-installations are impossible.
11475 When a (non-root) user wants to install a package, he usually has no
11476 right to install anything in @file{/usr} or @file{/usr/local}.  So he
11477 does something like @samp{./configure --prefix ~/usr} to install
11478 package in his own @file{~/usr} tree.
11480 If a package attempts to install something to some hard-coded path
11481 (e.g., @file{/etc/afile}), regardless of this @option{--prefix} setting,
11482 then the installation will fail.  @samp{make distcheck} performs such
11483 a @option{--prefix} installation, hence it will fail too.
11485 Now, there are some easy solutions.
11487 The above @code{install-data-local} example for installing
11488 @file{/etc/afile} would be better replaced by
11490 @example
11491 sysconf_DATA = afile
11492 @end example
11494 @noindent
11495 by default @code{sysconfdir} will be @samp{$(prefix)/etc}, because
11496 this is what the GNU Standards require.  When such a package is
11497 installed on an FHS compliant system, the installer will have to set
11498 @samp{--sysconfdir=/etc}.  As the maintainer of the package you
11499 should not be concerned by such site policies: use the appropriate
11500 standard directory variable to install your files so that the installer
11501 can easily redefine these variables to match their site conventions.
11503 Installing files that should be used by another package is slightly
11504 more involved.  Let's take an example and assume you want to install
11505 a shared library that is a Python extension module.  If you ask Python
11506 where to install the library, it will answer something like this:
11508 @example
11509 % @kbd{python -c 'from distutils import sysconfig;
11510              print sysconfig.get_python_lib(1,0)'}
11511 /usr/lib/python2.5/site-packages
11512 @end example
11514 If you indeed use this absolute path to install your shared library,
11515 non-root users will not be able to install the package, hence
11516 distcheck fails.
11518 Let's do better.  The @samp{sysconfig.get_python_lib()} function
11519 actually accepts a third argument that will replace Python's
11520 installation prefix.
11522 @example
11523 % @kbd{python -c 'from distutils import sysconfig;
11524              print sysconfig.get_python_lib(1,0,"$@{exec_prefix@}")'}
11525 $@{exec_prefix@}/lib/python2.5/site-packages
11526 @end example
11528 You can also use this new path.  If you do
11529 @itemize @bullet
11530 @item
11531 root users can install your package with the same @option{--prefix}
11532 as Python (you get the behavior of the previous attempt)
11534 @item
11535 non-root users can install your package too, they will have the
11536 extension module in a place that is not searched by Python but they
11537 can work around this using environment variables (and if you installed
11538 scripts that use this shared library, it's easy to tell Python were to
11539 look in the beginning of your script, so the script works in both
11540 cases).
11541 @end itemize
11543 The @code{AM_PATH_PYTHON} macro uses similar commands to define
11544 @samp{$(pythondir)} and @samp{$(pyexecdir)} (@pxref{Python}).
11546 Of course not all tools are as advanced as Python regarding that
11547 substitution of @var{prefix}.  So another strategy is to figure the
11548 part of the installation directory that must be preserved.  For
11549 instance, here is how @code{AM_PATH_LISPDIR} (@pxref{Emacs Lisp})
11550 computes @samp{$(lispdir)}:
11552 @example
11553 $EMACS -batch -q -eval '(while load-path
11554   (princ (concat (car load-path) "\n"))
11555   (setq load-path (cdr load-path)))' >conftest.out
11556 lispdir=`sed -n
11557   -e 's,/$,,'
11558   -e '/.*\/lib\/x*emacs\/site-lisp$/@{
11559         s,.*/lib/\(x*emacs/site-lisp\)$,$@{libdir@}/\1,;p;q;
11560       @}'
11561   -e '/.*\/share\/x*emacs\/site-lisp$/@{
11562         s,.*/share/\(x*emacs/site-lisp\),$@{datarootdir@}/\1,;p;q;
11563       @}'
11564   conftest.out`
11565 @end example
11567 I.e., it just picks the first directory that looks like
11568 @file{*/lib/*emacs/site-lisp} or @file{*/share/*emacs/site-lisp} in
11569 the search path of emacs, and then substitutes @samp{$@{libdir@}} or
11570 @samp{$@{datadir@}} appropriately.
11572 The emacs case looks complicated because it processes a list and
11573 expects two possible layouts, otherwise it's easy, and the benefits for
11574 non-root users are really worth the extra @command{sed} invocation.
11577 @node History
11578 @chapter History of Automake
11580 This chapter presents various aspects of the history of Automake.  The
11581 exhausted reader can safely skip it; this will be more of interest to
11582 nostalgic people, or to those curious to learn about the evolution of
11583 Automake.
11585 @menu
11586 * Timeline::                    The Automake story.
11587 * Dependency Tracking Evolution::  Evolution of Automatic Dependency Tracking
11588 * Releases::                    Statistics about Automake Releases
11589 @end menu
11591 @node Timeline
11592 @section Timeline
11594 @table @asis
11595 @item 1994-09-19 First CVS commit.
11597 If we can trust the CVS repository, David J.@tie{}MacKenzie (djm) started
11598 working on Automake (or AutoMake, as it was spelt then) this Monday.
11600 The first version of the @command{automake} script looks as follows.
11602 @example
11603 #!/bin/sh
11605 status=0
11607 for makefile
11609   if test ! -f $@{makefile@}.am; then
11610     echo "automake: $@{makefile@}.am: No such honkin' file"
11611     status=1
11612     continue
11613   fi
11615   exec 4> $@{makefile@}.in
11617 done
11618 @end example
11620 From this you can already see that Automake will be about reading
11621 @file{*.am} file and producing @file{*.in} files.  You cannot see
11622 anything else, but if you also know that David is the one who created
11623 Autoconf two years before you can guess the rest.
11625 Several commits follow, and by the end of the day Automake is
11626 reported to work for GNU fileutils and GNU m4.
11628 The modus operandi is the one that is still used today: variable
11629 assignments in @file{Makefile.am} files trigger injections of
11630 precanned @file{Makefile} fragments into the generated
11631 @file{Makefile.in}.  The use of @file{Makefile} fragments was inspired
11632 by the 4.4BSD @command{make} and include files, however Automake aims
11633 to be portable and to conform to the GNU standards for @file{Makefile}
11634 variables and targets.
11636 At this point, the most recent release of Autoconf is version 1.11,
11637 and David is preparing to release Autoconf 2.0 in late October.  As a
11638 matter of fact, he will barely touch Automake after September.
11640 @item 1994-11-05 David MacKenzie's last commit.
11642 At this point Automake is a 200 line portable shell script, plus 332
11643 lines of @file{Makefile} fragments.  In the @file{README}, David
11644 states his ambivalence between ``portable shell'' and ``more
11645 appropriate language'':
11647 @quotation
11648 I wrote it keeping in mind the possibility of it becoming an Autoconf
11649 macro, so it would run at configure-time.  That would slow
11650 configuration down a bit, but allow users to modify the Makefile.am
11651 without needing to fetch the AutoMake package.  And, the Makefile.in
11652 files wouldn't need to be distributed.  But all of AutoMake would.  So
11653 I might reimplement AutoMake in Perl, m4, or some other more
11654 appropriate language.
11655 @end quotation
11657 Automake is described as ``an experimental Makefile generator''.
11658 There is no documentation.  Adventurous users are referred to the
11659 examples and patches needed to use Automake with GNU m4 1.3, fileutils
11660 3.9, time 1.6, and development versions of find and indent.
11662 These examples seem to have been lost.  However at the time of writing
11663 (10 years later in September, 2004) the FSF still distributes a
11664 package that uses this version of Automake: check out GNU termutils
11665 2.0.
11667 @item 1995-11-12 Tom Tromey's first commit.
11669 After one year of inactivity, Tom Tromey takes over the package.
11670 Tom was working on GNU cpio back then, and doing this just for fun,
11671 having trouble finding a project to contribute to.  So while hacking
11672 he wanted to bring the @file{Makefile.in} up to GNU standards.  This
11673 was hard, and one day he saw Automake on @url{ftp://alpha.gnu.org/},
11674 grabbed it and tried it out.
11676 Tom didn't talk to djm about it until later, just to make sure he
11677 didn't mind if he made a release.  He did a bunch of early releases to
11678 the Gnits folks.
11680 Gnits was (and still is) totally informal, just a few GNU friends who
11681 Fran@,cois Pinard knew, who were all interested in making a common
11682 infrastructure for GNU projects, and shared a similar outlook on how
11683 to do it.  So they were able to make some progress.  It came along
11684 with Autoconf and extensions thereof, and then Automake from David and
11685 Tom (who were both gnitsians).  One of their ideas was to write a
11686 document paralleling the GNU standards, that was more strict in some
11687 ways and more detailed.  They never finished the GNITS standards, but
11688 the ideas mostly made their way into Automake.
11690 @item 1995-11-23 Automake 0.20
11692 Besides introducing automatic dependency tracking (@pxref{Dependency
11693 Tracking Evolution}), this version also supplies a 9-page manual.
11695 At this time @command{aclocal} and @code{AM_INIT_AUTOMAKE} did not
11696 exist, so many things had to be done by hand.  For instance, here is
11697 what a configure.in (this is the former name of the
11698 @file{configure.ac} we use today) must contain in order to use
11699 Automake 0.20:
11701 @example
11702 PACKAGE=cpio
11703 VERSION=2.3.911
11704 AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE")
11705 AC_DEFINE_UNQUOTED(VERSION, "$VERSION")
11706 AC_SUBST(PACKAGE)
11707 AC_SUBST(VERSION)
11708 AC_ARG_PROGRAM
11709 AC_PROG_INSTALL
11710 @end example
11712 (Today all of the above is achieved by @code{AC_INIT} and
11713 @code{AM_INIT_AUTOMAKE}.)
11715 Here is how programs are specified in @file{Makefile.am}:
11717 @example
11718 PROGRAMS = hello
11719 hello_SOURCES = hello.c
11720 @end example
11722 This looks pretty much like what we do today, except the
11723 @code{PROGRAMS} variable has no directory prefix specifying where
11724 @file{hello} should be installed: all programs are installed in
11725 @samp{$(bindir)}.  @code{LIBPROGRAMS} can be used to specify programs
11726 that must be built but not installed (it is called
11727 @code{noinst_PROGRAMS} nowadays).
11729 Programs can be built conditionally using @code{AC_SUBST}itutions:
11731 @example
11732 PROGRAMS = @@progs@@
11733 AM_PROGRAMS = foo bar baz
11734 @end example
11736 (@code{AM_PROGRAMS} has since then been renamed to
11737 @code{EXTRA_PROGRAMS}.)
11739 Similarly scripts, static libraries, and data can be built and installed
11740 using the @code{LIBRARIES}, @code{SCRIPTS}, and @code{DATA} variables.
11741 However @code{LIBRARIES} were treated a bit specially in that Automake
11742 did automatically supply the @file{lib} and @file{.a} prefixes.
11743 Therefore to build @file{libcpio.a}, one had to write
11745 @example
11746 LIBRARIES = cpio
11747 cpio_SOURCES = ...
11748 @end example
11750 Extra files to distribute must be listed in @code{DIST_OTHER} (the
11751 ancestor of @code{EXTRA_DIST}).  Also extra directories that are to be
11752 distributed should appear in @code{DIST_SUBDIRS}, but the manual
11753 describes this as a temporary ugly hack (today extra directories should
11754 also be listed in @code{EXTRA_DIST}, and @code{DIST_SUBDIRS} is used
11755 for another purpose, @pxref{Conditional Subdirectories}).
11757 @item 1995-11-26 Automake 0.21
11759 In less time than it takes to cook a frozen pizza, Tom rewrites
11760 Automake using Perl.  At this time Perl 5 is only one year old, and
11761 Perl 4.036 is in use at many sites.  Supporting several Perl versions
11762 has been a source of problems through the whole history of Automake.
11764 If you never used Perl 4, imagine Perl 5 without objects, without
11765 @samp{my} variables (only dynamically scoped @samp{local} variables),
11766 without function prototypes, with function calls that needs to be
11767 prefixed with @samp{&}, etc.  Traces of this old style can still be
11768 found in today's @command{automake}.
11770 @item 1995-11-28 Automake 0.22
11771 @itemx 1995-11-29 Automake 0.23
11773 Bug fixes.
11775 @item 1995-12-08 Automake 0.24
11776 @itemx 1995-12-10 Automake 0.25
11778 Releases are raining.  0.24 introduces the uniform naming scheme we
11779 use today, i.e., @code{bin_PROGRAMS} instead of @code{PROGRAMS},
11780 @code{noinst_LIBRARIES} instead of @code{LIBLIBRARIES}, etc.  (However
11781 @code{EXTRA_PROGRAMS} does not exist yet, @code{AM_PROGRAMS} is still
11782 in use; and @code{TEXINFOS} and @code{MANS} still have no directory
11783 prefixes.)  Adding support for prefixes like that was one of the major
11784 ideas in @command{automake}; it has lasted pretty well.
11786 AutoMake is renamed to Automake (Tom seems to recall it was Fran@,cois
11787 Pinard's doing).
11789 0.25 fixes a Perl 4 portability bug.
11791 @item 1995-12-18 Jim Meyering starts using Automake in GNU Textutils.
11792 @item 1995-12-31 Fran@,cois Pinard starts using Automake in GNU tar.
11794 @item 1996-01-03 Automake 0.26
11795 @itemx 1996-01-03 Automake 0.27
11797 Of the many changes and suggestions sent by Fran@,cois Pinard and
11798 included in 0.26, perhaps the most important is the advice that to
11799 ease customization a user rule or variable definition should always
11800 override an Automake rule or definition.
11802 Gordon Matzigkeit and Jim Meyering are two other early contributors
11803 that have been sending fixes.
11805 0.27 fixes yet another Perl 4 portability bug.
11807 @item 1996-01-13 Automake 0.28
11809 Automake starts scanning @file{configure.in} for @code{LIBOBJS}
11810 support.  This is an important step because until this version
11811 Automake only knew about the @file{Makefile.am}s it processed.
11812 @file{configure.in} was Autoconf's world and the link between Autoconf
11813 and Automake had to be done by the @file{Makefile.am} author.  For
11814 instance, if @file{config.h} was generated by @file{configure}, it was the
11815 package maintainer's responsibility to define the @code{CONFIG_HEADER}
11816 variable in each @file{Makefile.am}.
11818 Succeeding releases will rely more and more on scanning
11819 @file{configure.in} to better automate the Autoconf integration.
11821 0.28 also introduces the @code{AUTOMAKE_OPTIONS} variable and the
11822 @option{--gnu} and @option{--gnits} options, the latter being stricter.
11824 @item 1996-02-07 Automake 0.29
11826 Thanks to @file{configure.in} scanning, @code{CONFIG_HEADER} is gone,
11827 and rebuild rules for @file{configure}-generated file are
11828 automatically output.
11830 @code{TEXINFOS} and @code{MANS} converted to the uniform naming
11831 scheme.
11833 @item 1996-02-24 Automake 0.30
11835 The test suite is born.  It contains 9 tests.  From now on test cases
11836 will be added pretty regularly (@pxref{Releases}), and this proved to
11837 be really helpful later on.
11839 @code{EXTRA_PROGRAMS} finally replaces @code{AM_PROGRAMS}.
11841 All the third-party Autoconf macros, written mostly by Fran@,cois
11842 Pinard (and later Jim Meyering), are distributed in Automake's
11843 hand-written @file{aclocal.m4} file.  Package maintainers are expected
11844 to extract the necessary macros from this file.  (In previous versions
11845 you had to copy and paste them from the manual...)
11847 @item 1996-03-11 Automake 0.31
11849 The test suite in 0.30 was run via a long @code{check-local} rule.  Upon
11850 Ulrich Drepper's suggestion, 0.31 makes it an Automake rule output
11851 whenever the @code{TESTS} variable is defined.
11853 @code{DIST_OTHER} is renamed to @code{EXTRA_DIST}, and the @code{check_}
11854 prefix is introduced.  The syntax is now the same as today.
11856 @item 1996-03-15 Gordon Matzigkeit starts writing libtool.
11858 @item 1996-04-27 Automake 0.32
11860 @code{-hook} targets are introduced; an idea from Dieter Baron.
11862 @file{*.info} files, which were output in the build directory are
11863 now built in the source directory, because they are distributed.  It
11864 seems these files like to move back and forth as that will happen
11865 again in future versions.
11867 @item 1996-05-18 Automake 0.33
11869 Gord Matzigkeit's main two contributions:
11871 @itemize
11872 @item very preliminary libtool support
11873 @item the distcheck rule
11874 @end itemize
11876 Although they were very basic at this point, these are probably
11877 among the top features for Automake today.
11879 Jim Meyering also provides the infamous @code{jm_MAINTAINER_MODE},
11880 since then renamed to @code{AM_MAINTAINER_MODE} and abandoned by its
11881 author (@pxref{maintainer-mode}).
11883 @item 1996-05-28 Automake 1.0
11885 After only six months of heavy development, the @command{automake} script is
11886 3134 lines long, plus 973 lines of @file{Makefile} fragments.  The
11887 package has 30 pages of documentation, and 38 test cases.
11888 @file{aclocal.m4} contains 4 macros.
11890 From now on and until version 1.4, new releases will occur at a rate
11891 of about one a year.  1.1 did not exist, actually 1.1b to 1.1p have
11892 been the name of beta releases for 1.2.  This is the first time
11893 Automake uses suffix letters to designate beta releases, an habit that
11894 lasts.
11896 @item 1996-10-10 Kevin Dalley packages Automake 1.0 for Debian GNU/Linux.
11898 @item 1996-11-26 David J.@tie{}MacKenzie releases Autoconf 2.12.
11900 Between June and October, the Autoconf development is almost stalled.
11901 Roland McGrath has been working at the beginning of the year.  David
11902 comes back in November to release 2.12, but he won't touch Autoconf
11903 anymore after this year, and Autoconf then really stagnates.  The
11904 desolate Autoconf @file{ChangeLog} for 1997 lists only 7 commits.
11906 @item 1997-02-28 @email{automake@@gnu.ai.mit.edu} list alive
11908 The mailing list is announced as follows:
11909 @smallexample
11910 I've created the "automake" mailing list.  It is
11911 "automake@@gnu.ai.mit.edu".  Administrivia, as always, to
11912 automake-request@@gnu.ai.mit.edu.
11914 The charter of this list is discussion of automake, autoconf, and
11915 other configuration/portability tools (e.g., libtool).  It is expected
11916 that discussion will range from pleas for help all the way up to
11917 patches.
11919 This list is archived on the FSF machines.  Offhand I don't know if
11920 you can get the archive without an account there.
11922 This list is open to anybody who wants to join.  Tell all your
11923 friends!
11924 -- Tom Tromey
11925 @end smallexample
11927 Before that people were discussing Automake privately, on the Gnits
11928 mailing list (which is not public either), and less frequently on
11929 @code{gnu.misc.discuss}.
11931 @code{gnu.ai.mit.edu} is now @code{gnu.org}, in case you never
11932 noticed.  The archives of the early years of the
11933 @code{automake@@gnu.org} list have been lost, so today it is almost
11934 impossible to find traces of discussions that occurred before 1999.
11935 This has been annoying more than once, as such discussions can be
11936 useful to understand the rationale behind a piece of uncommented code
11937 that was introduced back then.
11939 @item 1997-06-22 Automake 1.2
11941 Automake developments continues, and more and more new Autoconf macros
11942 are required.  Distributing them in @file{aclocal.m4} and requiring
11943 people to browse this file to extract the relevant macros becomes
11944 uncomfortable.  Ideally, some of them should be contributed to
11945 Autoconf so that they can be used directly, however Autoconf is
11946 currently inactive.  Automake 1.2 consequently introduces
11947 @command{aclocal} (@command{aclocal} was actually started on
11948 1996-07-28), a tool that automatically constructs an @file{aclocal.m4}
11949 file from a repository of third-party macros.  Because Autoconf has
11950 stalled, Automake also becomes a kind of repository for such
11951 third-party macros, even macros completely unrelated to Automake (for
11952 instance macros that fix broken Autoconf macros).
11954 The 1.2 release contains 20 macros, including the
11955 @code{AM_INIT_AUTOMAKE} macro that simplifies the creation of
11956 @file{configure.in}.
11958 Libtool is fully supported using @code{*_LTLIBRARIES}.
11960 The missing script is introduced by Fran@,cois Pinard; it is meant to be
11961 a better solution than @code{AM_MAINTAINER_MODE}
11962 (@pxref{maintainer-mode}).
11964 Conditionals support was implemented by Ian Lance Taylor.  At the
11965 time, Tom and Ian were working on an internal project at Cygnus.  They
11966 were using ILU, which is pretty similar to CORBA@.  They wanted to
11967 integrate ILU into their build, which was all @file{configure}-based,
11968 and Ian thought that adding conditionals to @command{automake} was
11969 simpler than doing all the work in @file{configure} (which was the
11970 standard at the time).  So this was actually funded by Cygnus.
11972 This very useful but tricky feature will take a lot of time to
11973 stabilize.  (At the time this text is written, there are still
11974 primaries that have not been updated to support conditional
11975 definitions in Automake 1.9.)
11977 The @command{automake} script has almost doubled: 6089 lines of Perl,
11978 plus 1294 lines of @file{Makefile} fragments.
11980 @item 1997-07-08 Gordon Matzigkeit releases Libtool 1.0.
11982 @item 1998-04-05 Automake 1.3
11984 This is a small advance compared to 1.2.
11985 It adds support for assembly, and preliminary support for Java.
11987 Perl 5.004_04 is out, but fixes to support Perl 4 are still
11988 regularly submitted whenever Automake breaks it.
11990 @item 1998-09-06 @code{sourceware.cygnus.com} is on-line.
11992 Sourceware was setup by Jason Molenda to host open source projects.
11994 @item 1998-09-19  Automake CVS repository moved to @code{sourceware.cygnus.com}
11995 @itemx 1998-10-26  @code{sourceware.cygnus.com} announces it hosts Automake:
11996 Automake is now hosted on @code{sourceware.cygnus.com}.  It has a
11997 publicly accessible CVS repository.  This CVS repository is a copy of
11998 the one Tom was using on his machine, which in turn is based on
11999 a copy of the CVS repository of David MacKenzie.  This is why we still
12000 have to full source history.  (Automake was on Sourceware until 2007-10-29,
12001 when it moved to a git repository on @code{savannah.gnu.org},
12002 but the Sourceware host had been renamed to @code{sources.redhat.com}.)
12004 The oldest file in the administrative directory of the CVS repository
12005 that was created on Sourceware is dated 1998-09-19, while the
12006 announcement that @command{automake} and @command{autoconf} had joined
12007 @command{sourceware} was made on 1998-10-26.  They were among the
12008 first projects to be hosted there.
12010 The heedful reader will have noticed Automake was exactly 4 years old
12011 on 1998-09-19.
12013 @item 1999-01-05 Ben Elliston releases Autoconf 2.13.
12015 @item 1999-01-14 Automake 1.4
12017 This release adds support for Fortran 77 and for the @code{include}
12018 statement.  Also, @samp{+=} assignments are introduced, but it is
12019 still quite easy to fool Automake when mixing this with conditionals.
12021 These two releases, Automake 1.4 and Autoconf 2.13 make a duo that
12022 will be used together for years.
12024 @command{automake} is 7228 lines, plus 1591 lines of Makefile
12025 fragment, 20 macros (some 1.3 macros were finally contributed back to
12026 Autoconf), 197 test cases, and 51 pages of documentation.
12028 @item 1999-03-27 The @code{user-dep-branch} is created on the CVS repository.
12030 This implements a new dependency tracking schemed that should be
12031 able to handle automatic dependency tracking using any compiler (not
12032 just gcc) and any make (not just GNU @command{make}).  In addition,
12033 the new scheme should be more reliable than the old one, as
12034 dependencies are generated on the end user's machine.  Alexandre Oliva
12035 creates depcomp for this purpose.
12037 @xref{Dependency Tracking Evolution}, for more details about the
12038 evolution of automatic dependency tracking in Automake.
12040 @item 1999-11-21 The @code{user-dep-branch} is merged into the main trunk.
12042 This was a huge problem since we also had patches going in on the
12043 trunk.  The merge took a long time and was very painful.
12045 @item 2000-05-10
12047 Since September 1999 and until 2003, Akim Demaille will be zealously
12048 revamping Autoconf.
12050 @quotation
12051 I think the next release should be called "3.0".@*
12052 Let's face it: you've basically rewritten autoconf.@*
12053 Every weekend there are 30 new patches.@*
12054 I don't see how we could call this "2.15" with a straight face.@*
12055 -- Tom Tromey on @email{autoconf@@gnu.org}
12056 @end quotation
12058 Actually Akim works like a submarine: he will pile up patches while he
12059 works off-line during the weekend, and flush them in batch when he
12060 resurfaces on Monday.
12062 @item 2001-01-24
12064 On this Wednesday, Autoconf 2.49c, the last beta before Autoconf 2.50
12065 is out, and Akim has to find something to do during his week-end :)
12067 @item 2001-01-28
12069 Akim sends a batch of 14 patches to @email{automake@@gnu.org}.
12071 @quotation
12072 Aiieeee!  I was dreading the day that the Demaillator turned his
12073 sights on automake@dots{} and now it has arrived! -- Tom Tromey
12074 @end quotation
12076 It's only the beginning: in two months he will send 192 patches.  Then
12077 he would slow down so Tom can catch up and review all this.  Initially
12078 Tom actually read all these patches, then he probably trustingly
12079 answered OK to most of them, and finally gave up and let Akim apply
12080 whatever he wanted.  There was no way to keep up with that patch rate.
12082 @quotation
12083 Anyway the patch below won't apply since it predates Akim's
12084 sourcequake; I have yet to figure where the relevant passage has
12085 been moved :) -- Alexandre Duret-Lutz
12086 @end quotation
12088 All these patches were sent to and discussed on
12089 @email{automake@@gnu.org}, so subscribed users were literally drowning in
12090 technical mails.  Eventually, the @email{automake-patches@@gnu.org}
12091 mailing list was created in May.
12093 Year after year, Automake had drifted away from its initial design:
12094 construct @file{Makefile.in} by assembling various @file{Makefile}
12095 fragments.  In 1.4, lots of @file{Makefile} rules are being emitted at
12096 various places in the @command{automake} script itself; this does not
12097 help ensuring a consistent treatment of these rules (for instance
12098 making sure that user-defined rules override Automake's own rules).
12099 One of Akim's goal was moving all these hard-coded rules to separate
12100 @file{Makefile} fragments, so the logic could be centralized in a
12101 @file{Makefile} fragment processor.
12103 Another significant contribution of Akim is the interface with the
12104 ``trace'' feature of Autoconf.  The way to scan @file{configure.in} at
12105 this time was to read the file and grep the various macro of interest
12106 to Automake.  Doing so could break in many unexpected ways; @command{automake}
12107 could miss some definition (for instance @samp{AC_SUBST([$1], [$2])}
12108 where the arguments are known only when M4 is run), or conversely it
12109 could detect some macro that was not expanded (because it is called
12110 conditionally).  In the CVS version of Autoconf, Akim had implemented
12111 the @option{--trace} option, which provides accurate information about
12112 where macros are actually called and with what arguments.  Akim will
12113 equip Automake with a second @file{configure.in} scanner that uses
12114 this @option{--trace} interface.  Since it was not sensible to drop the
12115 Autoconf 2.13 compatibility yet, this experimental scanner was only
12116 used when an environment variable was set, the traditional
12117 grep-scanner being still the default.
12119 @item 2001-04-25 Gary V.@tie{}Vaughan releases Libtool 1.4
12121 It has been more than two years since Automake 1.4, CVS Automake has
12122 suffered lot's of heavy changes and still is not ready for release.
12123 Libtool 1.4 had to be distributed with a patch against Automake 1.4.
12125 @item 2001-05-08 Automake 1.4-p1
12126 @itemx 2001-05-24 Automake 1.4-p2
12128 Gary V.@tie{}Vaughan, the principal Libtool maintainer, makes a ``patch
12129 release'' of Automake:
12131 @quotation
12132 The main purpose of this release is to have a stable automake
12133 which is compatible with the latest stable libtool.
12134 @end quotation
12136 The release also contains obvious fixes for bugs in Automake 1.4,
12137 some of which were reported almost monthly.
12139 @item 2001-05-21 Akim Demaille releases Autoconf 2.50
12141 @item 2001-06-07 Automake 1.4-p3
12142 @itemx 2001-06-10 Automake 1.4-p4
12143 @itemx 2001-07-15 Automake 1.4-p5
12145 Gary continues his patch-release series.  These also add support for
12146 some new Autoconf 2.50 idioms.  Essentially, Autoconf now advocates
12147 @file{configure.ac} over @file{configure.in}, and it introduces a new
12148 syntax for @code{AC_OUTPUT}ing files.
12150 @item 2001-08-23 Automake 1.5
12152 A major and long-awaited release, that comes more than two years after
12153 1.4.  It brings many changes, among which:
12154 @itemize
12155 @item The new dependency tracking scheme that uses @command{depcomp}.
12156 Aside from the improvement on the dependency tracking itself
12157 (@pxref{Dependency Tracking Evolution}), this also streamlines the use
12158 of @command{automake}-generated @file{Makefile.in}s as the @file{Makefile.in}s
12159 used during development are now the same as those used in
12160 distributions.  Before that the @file{Makefile.in}s generated for
12161 maintainers required GNU @command{make} and GCC, they were different
12162 from the portable @file{Makefile} generated for distribution; this was
12163 causing some confusion.
12165 @item Support for per-target compilation flags.
12167 @item Support for reference to files in subdirectories in most
12168 @file{Makefile.am} variables.
12170 @item Introduction of the @code{dist_}, @code{nodist_}, and @code{nobase_}
12171 prefixes.
12172 @item Perl 4 support is finally dropped.
12173 @end itemize
12175 1.5 did break several packages that worked with 1.4.  Enough so that
12176 Linux distributions could not easily install the new Automake version
12177 without breaking many of the packages for which they had to run
12178 @command{automake}.
12180 Some of these breakages were effectively bugs that would eventually be
12181 fixed in the next release.  However, a lot of damage was caused by
12182 some changes made deliberately to render Automake stricter on some
12183 setup we did consider bogus.  For instance, @samp{make distcheck} was
12184 improved to check that @samp{make uninstall} did remove all the files
12185 @samp{make install} installed, that @samp{make distclean} did not omit
12186 some file, and that a VPATH build would work even if the source
12187 directory was read-only.  Similarly, Automake now rejects multiple
12188 definitions of the same variable (because that would mix very badly
12189 with conditionals), and @samp{+=} assignments with no previous
12190 definition.  Because these changes all occurred suddenly after 1.4 had
12191 been established for more than two years, it hurt users.
12193 To make matter worse, meanwhile Autoconf (now at version 2.52) was
12194 facing similar troubles, for similar reasons.
12196 @item 2002-03-05 Automake 1.6
12198 This release introduced versioned installation (@pxref{API
12199 Versioning}).  This was mainly pushed by Havoc Pennington, taking the
12200 GNOME source tree as motive: due to incompatibilities between the
12201 autotools it's impossible for the GNOME packages to switch to Autoconf
12202 2.53 and Automake 1.5 all at once, so they are currently stuck with
12203 Autoconf 2.13 and Automake 1.4.
12205 The idea was to call this version @file{automake-1.6}, call all its
12206 bug-fix versions identically, and switch to @file{automake-1.7} for
12207 the next release that adds new features or changes some rules.  This
12208 scheme implies maintaining a bug-fix branch in addition to the
12209 development trunk, which means more work from the maintainer, but
12210 providing regular bug-fix releases proved to be really worthwhile.
12212 Like 1.5, 1.6 also introduced a bunch of incompatibilities, intentional or
12213 not.  Perhaps the more annoying was the dependence on the newly
12214 released Autoconf 2.53.  Autoconf seemed to have stabilized enough
12215 since its explosive 2.50 release and included changes required to fix
12216 some bugs in Automake.  In order to upgrade to Automake 1.6, people
12217 now had to upgrade Autoconf too; for some packages it was no picnic.
12219 While versioned installation helped people to upgrade, it also
12220 unfortunately allowed people not to upgrade.  At the time of writing,
12221 some Linux distributions are shipping packages for Automake 1.4, 1.5,
12222 1.6, 1.7, 1.8, and 1.9.  Most of these still install 1.4 by default.
12223 Some distribution also call 1.4 the ``stable'' version, and present
12224 ``1.9'' as the development version; this does not really makes sense
12225 since 1.9 is way more solid than 1.4.  All this does not help the
12226 newcomer.
12228 @item 2002-04-11 Automake 1.6.1
12230 1.6, and the upcoming 1.4-p6 release were the last release by Tom.
12231 This one and those following will be handled by Alexandre
12232 Duret-Lutz.  Tom is still around, and will be there until about 1.7,
12233 but his interest into Automake is drifting away towards projects like
12234 @command{gcj}.
12236 Alexandre has been using Automake since 2000, and started to
12237 contribute mostly on Akim's incitement (Akim and Alexandre have been
12238 working in the same room from 1999 to 2002).  In 2001 and 2002 he had
12239 a lot of free time to enjoy hacking Automake.
12241 @item 2002-06-14 Automake 1.6.2
12243 @item 2002-07-28 Automake 1.6.3
12244 @itemx 2002-07-28 Automake 1.4-p6
12246 Two releases on the same day.  1.6.3 is a bug-fix release.
12248 Tom Tromey backported the versioned installation mechanism on the 1.4
12249 branch, so that Automake 1.6.x and Automake 1.4-p6 could be installed
12250 side by side.  Another request from the GNOME folks.
12252 @item 2002-09-25 Automake 1.7
12254 This release switches to the new @file{configure.ac} scanner Akim
12255 was experimenting in 1.5.
12257 @item 2002-10-16 Automake 1.7.1
12258 @itemx 2002-12-06 Automake 1.7.2
12259 @itemx 2003-02-20 Automake 1.7.3
12260 @itemx 2003-04-23 Automake 1.7.4
12261 @itemx 2003-05-18 Automake 1.7.5
12262 @itemx 2003-07-10 Automake 1.7.6
12263 @itemx 2003-09-07 Automake 1.7.7
12264 @itemx 2003-10-07 Automake 1.7.8
12266 Many bug-fix releases.  1.7 lasted because the development version
12267 (upcoming 1.8) was suffering some major internal revamping.
12269 @item 2003-10-26 Automake on screen
12271 Episode 49, `Repercussions', in the third season of the `Alias' TV
12272 show is first aired.
12274 Marshall, one of the characters, is working on a computer virus that he
12275 has to modify before it gets into the wrong hands or something like
12276 that.  The screenshots you see do not show any program code, they show
12277 a @file{Makefile.in} @code{generated by automake}...
12279 @item 2003-11-09 Automake 1.7.9
12281 @item 2003-12-10 Automake 1.8
12283 The most striking update is probably that of @command{aclocal}.
12285 @command{aclocal} now uses @code{m4_include} in the produced
12286 @file{aclocal.m4} when the included macros are already distributed
12287 with the package (an idiom used in many packages), which reduces code
12288 duplication.  Many people liked that, but in fact this change was
12289 really introduced to fix a bug in rebuild rules: @file{Makefile.in}
12290 must be rebuilt whenever a dependency of @file{configure} changes, but
12291 all the @file{m4} files included in @file{aclocal.m4} where unknown
12292 from @command{automake}.  Now @command{automake} can just trace the
12293 @code{m4_include}s to discover the dependencies.
12295 @command{aclocal} also starts using the @option{--trace} Autoconf option
12296 in order to discover used macros more accurately.  This will turn out
12297 to be very tricky (later releases will improve this) as people had
12298 devised many ways to cope with the limitation of previous
12299 @command{aclocal} versions, notably using handwritten
12300 @code{m4_include}s: @command{aclocal} must make sure not to redefine a
12301 rule that is already included by such statement.
12303 Automake also has seen its guts rewritten.  Although this rewriting
12304 took a lot of efforts, it is only apparent to the users in that some
12305 constructions previously disallowed by the implementation now work
12306 nicely.  Conditionals, Locations, Variable and Rule definitions,
12307 Options: these items on which Automake works have been rewritten as
12308 separate Perl modules, and documented.
12310 @itemx 2004-01-11 Automake 1.8.1
12311 @itemx 2004-01-12 Automake 1.8.2
12312 @itemx 2004-03-07 Automake 1.8.3
12313 @itemx 2004-04-25 Automake 1.8.4
12314 @itemx 2004-05-16 Automake 1.8.5
12316 @item 2004-07-28 Automake 1.9
12318 This release tries to simplify the compilation rules it outputs to
12319 reduce the size of the Makefile.  The complaint initially come from
12320 the libgcj developers.  Their @file{Makefile.in} generated with
12321 Automake 1.4 and custom build rules (1.4 did not support compiled
12322 Java) is 250KB@.  The one generated by 1.8 was over 9MB@!  1.9 gets it
12323 down to 1.2MB@.
12325 Aside from this it contains mainly minor changes and bug-fixes.
12327 @itemx 2004-08-11 Automake 1.9.1
12328 @itemx 2004-09-19 Automake 1.9.2
12330 Automake has ten years.  This chapter of the manual was initially
12331 written for this occasion.
12333 @itemx 2007-10-29 Automake repository moves to @code{savannah.gnu.org} and uses
12334 git as primary repository.
12336 @end table
12338 @node Dependency Tracking Evolution
12339 @section Dependency Tracking in Automake
12341 Over the years Automake has deployed three different dependency
12342 tracking methods.  Each method, including the current one, has had
12343 flaws of various sorts.  Here we lay out the different dependency
12344 tracking methods, their flaws, and their fixes.  We conclude with
12345 recommendations for tool writers, and by indicating future directions
12346 for dependency tracking work in Automake.
12348 @menu
12349 * First Take on Dependencies::  Precomputed dependency tracking
12350 * Dependencies As Side Effects::  Update at developer compile time
12351 * Dependencies for the User::   Update at user compile time
12352 * Techniques for Dependencies:: Alternative approaches
12353 * Recommendations for Tool Writers::  What tool writers can do to help
12354 * Future Directions for Dependencies::  Languages Automake does not know
12355 @end menu
12357 @node First Take on Dependencies
12358 @subsection First Take on Dependency Tracking
12359 @unnumberedsubsubsec Description
12361 Our first attempt at automatic dependency tracking was based on the
12362 method recommended by GNU @command{make}.  (@pxref{Automatic
12363 Prerequisites, , Generating Prerequisites Automatically, make, The GNU
12364 make Manual})
12366 This version worked by precomputing dependencies ahead of time.  For
12367 each source file, it had a special @file{.P} file that held the
12368 dependencies.  There was a rule to generate a @file{.P} file by
12369 invoking the compiler appropriately.  All such @file{.P} files were
12370 included by the @file{Makefile}, thus implicitly becoming dependencies
12371 of @file{Makefile}.
12373 @unnumberedsubsubsec Bugs
12375 This approach had several critical bugs.
12377 @itemize
12378 @item
12379 The code to generate the @file{.P} file relied on @command{gcc}.
12380 (A limitation, not technically a bug.)
12381 @item
12382 The dependency tracking mechanism itself relied on GNU @command{make}.
12383 (A limitation, not technically a bug.)
12384 @item
12385 Because each @file{.P} file was a dependency of @file{Makefile}, this
12386 meant that dependency tracking was done eagerly by @command{make}.
12387 For instance, @samp{make clean} would cause all the dependency files
12388 to be updated, and then immediately removed.  This eagerness also
12389 caused problems with some configurations; if a certain source file
12390 could not be compiled on a given architecture for some reason,
12391 dependency tracking would fail, aborting the entire build.
12392 @item
12393 As dependency tracking was done as a pre-pass, compile times were
12394 doubled--the compiler had to be run twice per source file.
12395 @item
12396 @samp{make dist} re-ran @command{automake} to generate a
12397 @file{Makefile} that did not have automatic dependency tracking (and
12398 that was thus portable to any version of @command{make}).  In order to
12399 do this portably, Automake had to scan the dependency files and remove
12400 any reference that was to a source file not in the distribution.
12401 This process was error-prone.  Also, if @samp{make dist} was run in an
12402 environment where some object file had a dependency on a source file
12403 that was only conditionally created, Automake would generate a
12404 @file{Makefile} that referred to a file that might not appear in the
12405 end user's build.  A special, hacky mechanism was required to work
12406 around this.
12407 @end itemize
12409 @unnumberedsubsubsec Historical Note
12411 The code generated by Automake is often inspired by the
12412 @file{Makefile} style of a particular author.  In the case of the first
12413 implementation of dependency tracking, I believe the impetus and
12414 inspiration was Jim Meyering.  (I could be mistaken.  If you know
12415 otherwise feel free to correct me.)
12417 @node Dependencies As Side Effects
12418 @subsection Dependencies As Side Effects
12419 @unnumberedsubsubsec Description
12421 The next refinement of Automake's automatic dependency tracking scheme
12422 was to implement dependencies as side effects of the compilation.
12423 This was aimed at solving the most commonly reported problems with the
12424 first approach.  In particular we were most concerned with eliminating
12425 the weird rebuilding effect associated with make clean.
12427 In this approach, the @file{.P} files were included using the
12428 @code{-include} command, which let us create these files lazily.  This
12429 avoided the @samp{make clean} problem.
12431 We only computed dependencies when a file was actually compiled.  This
12432 avoided the performance penalty associated with scanning each file
12433 twice.  It also let us avoid the other problems associated with the
12434 first, eager, implementation.  For instance, dependencies would never
12435 be generated for a source file that was not compilable on a given
12436 architecture (because it in fact would never be compiled).
12438 @unnumberedsubsubsec Bugs
12440 @itemize
12441 @item
12442 This approach also relied on the existence of @command{gcc} and GNU
12443 @command{make}.  (A limitation, not technically a bug.)
12444 @item
12445 Dependency tracking was still done by the developer, so the problems
12446 from the first implementation relating to massaging of dependencies by
12447 @samp{make dist} were still in effect.
12448 @item
12449 This implementation suffered from the ``deleted header file'' problem.
12450 Suppose a lazily-created @file{.P} file includes a dependency on a
12451 given header file, like this:
12453 @example
12454 maude.o: maude.c something.h
12455 @end example
12457 Now suppose that the developer removes @file{something.h} and updates
12458 @file{maude.c} so that this include is no longer needed.  If he runs
12459 @command{make}, he will get an error because there is no way to create
12460 @file{something.h}.
12462 We fixed this problem in a later release by further massaging the
12463 output of @command{gcc} to include a dummy dependency for each header
12464 file.
12465 @end itemize
12467 @node Dependencies for the User
12468 @subsection Dependencies for the User
12469 @unnumberedsubsubsec Description
12471 The bugs associated with @samp{make dist}, over time, became a real
12472 problem.  Packages using Automake were being built on a large number
12473 of platforms, and were becoming increasingly complex.  Broken
12474 dependencies were distributed in ``portable'' @file{Makefile.in}s,
12475 leading to user complaints.  Also, the requirement for @command{gcc}
12476 and GNU @command{make} was a constant source of bug reports.  The next
12477 implementation of dependency tracking aimed to remove these problems.
12479 We realized that the only truly reliable way to automatically track
12480 dependencies was to do it when the package itself was built.  This
12481 meant discovering a method portable to any version of make and any
12482 compiler.  Also, we wanted to preserve what we saw as the best point
12483 of the second implementation: dependency computation as a side effect
12484 of compilation.
12486 In the end we found that most modern make implementations support some
12487 form of include directive.  Also, we wrote a wrapper script that let
12488 us abstract away differences between dependency tracking methods for
12489 compilers.  For instance, some compilers cannot generate dependencies
12490 as a side effect of compilation.  In this case we simply have the
12491 script run the compiler twice.  Currently our wrapper script
12492 (@command{depcomp}) knows about twelve different compilers (including
12493 a "compiler" that simply invokes @command{makedepend} and then the
12494 real compiler, which is assumed to be a standard Unix-like C compiler
12495 with no way to do dependency tracking).
12497 @unnumberedsubsubsec Bugs
12499 @itemize
12500 @item
12501 Running a wrapper script for each compilation slows down the build.
12502 @item
12503 Many users don't really care about precise dependencies.
12504 @item
12505 This implementation, like every other automatic dependency tracking
12506 scheme in common use today (indeed, every one we've ever heard of),
12507 suffers from the ``duplicated new header'' bug.
12509 This bug occurs because dependency tracking tools, such as the
12510 compiler, only generate dependencies on the successful opening of a
12511 file, and not on every probe.
12513 Suppose for instance that the compiler searches three directories for
12514 a given header, and that the header is found in the third directory.
12515 If the programmer erroneously adds a header file with the same name to
12516 the first directory, then a clean rebuild from scratch could fail
12517 (suppose the new header file is buggy), whereas an incremental rebuild
12518 will succeed.
12520 What has happened here is that people have a misunderstanding of what
12521 a dependency is.  Tool writers think a dependency encodes information
12522 about which files were read by the compiler.  However, a dependency
12523 must actually encode information about what the compiler tried to do.
12525 This problem is not serious in practice.  Programmers typically do not
12526 use the same name for a header file twice in a given project.  (At
12527 least, not in C or C++.  This problem may be more troublesome in
12528 Java.)  This problem is easy to fix, by modifying dependency
12529 generators to record every probe, instead of every successful open.
12531 @item
12532 Since Automake generates dependencies as a side effect of compilation,
12533 there is a bootstrapping problem when header files are generated by
12534 running a program.  The problem is that, the first time the build is
12535 done, there is no way by default to know that the headers are
12536 required, so make might try to run a compilation for which the headers
12537 have not yet been built.
12539 This was also a problem in the previous dependency tracking implementation.
12541 The current fix is to use @code{BUILT_SOURCES} to list built headers
12542 (@pxref{Sources}).  This causes them to be built before any other
12543 build rules are run.  This is unsatisfactory as a general solution,
12544 however in practice it seems sufficient for most actual programs.
12545 @end itemize
12547 This code is used since Automake 1.5.
12549 In GCC 3.0, we managed to convince the maintainers to add special
12550 command-line options to help Automake more efficiently do its job.  We
12551 hoped this would let us avoid the use of a wrapper script when
12552 Automake's automatic dependency tracking was used with @command{gcc}.
12554 Unfortunately, this code doesn't quite do what we want.  In
12555 particular, it removes the dependency file if the compilation fails;
12556 we'd prefer that it instead only touch the file in any way if the
12557 compilation succeeds.
12559 Nevertheless, since Automake 1.7, when a recent @command{gcc} is
12560 detected at @command{configure} time, we inline the
12561 dependency-generation code and do not use the @command{depcomp}
12562 wrapper script.  This makes compilations faster for those using this
12563 compiler (probably our primary user base).  The counterpart is that
12564 because we have to encode two compilation rules in @file{Makefile}
12565 (with or without @command{depcomp}), the produced @file{Makefile}s are
12566 larger.
12568 @node Techniques for Dependencies
12569 @subsection Techniques for Computing Dependencies
12571 There are actually several ways for a build tool like Automake to
12572 cause tools to generate dependencies.
12574 @table @asis
12575 @item @command{makedepend}
12576 This was a commonly-used method in the past.  The idea is to run a
12577 special program over the source and have it generate dependency
12578 information.  Traditional implementations of @command{makedepend} are
12579 not completely precise; ordinarily they were conservative and
12580 discovered too many dependencies.
12581 @item The tool
12582 An obvious way to generate dependencies is to simply write the tool so
12583 that it can generate the information needed by the build tool.  This is
12584 also the most portable method.  Many compilers have an option to
12585 generate dependencies.  Unfortunately, not all tools provide such an
12586 option.
12587 @item The file system
12588 It is possible to write a special file system that tracks opens,
12589 reads, writes, etc, and then feed this information back to the build
12590 tool.  @command{clearmake} does this.  This is a very powerful
12591 technique, as it doesn't require cooperation from the
12592 tool.  Unfortunately it is also very difficult to implement and also
12593 not practical in the general case.
12594 @item @code{LD_PRELOAD}
12595 Rather than use the file system, one could write a special library to
12596 intercept @code{open} and other syscalls.  This technique is also quite
12597 powerful, but unfortunately it is not portable enough for use in
12598 @command{automake}.
12599 @end table
12601 @node Recommendations for Tool Writers
12602 @subsection Recommendations for Tool Writers
12604 We think that every compilation tool ought to be able to generate
12605 dependencies as a side effect of compilation.  Furthermore, at least
12606 while @command{make}-based tools are nearly universally in use (at
12607 least in the free software community), the tool itself should generate
12608 dummy dependencies for header files, to avoid the deleted header file
12609 bug.  Finally, the tool should generate a dependency for each probe,
12610 instead of each successful file open, in order to avoid the duplicated
12611 new header bug.
12613 @node Future Directions for Dependencies
12614 @subsection Future Directions for Dependencies
12616 Currently, only languages and compilers understood by Automake can
12617 have dependency tracking enabled.  We would like to see if it is
12618 practical (and worthwhile) to let this support be extended by the user
12619 to languages unknown to Automake.
12621 @node Releases
12622 @section Release Statistics
12624 The following table (inspired by @samp{perlhist(1)}) quantifies the
12625 evolution of Automake using these metrics:
12627 @table @asis
12628 @item Date, Rel
12629 The date and version of the release.
12630 @item am
12631 The number of lines of the @command{automake} script.
12632 @item acl
12633 The number of lines of the @command{aclocal} script.
12634 @item pm
12635 The number of lines of the @command{Perl} supporting modules.
12636 @item @file{*.am}
12637 The number of lines of the @file{Makefile} fragments.  The number in
12638 parentheses is the number of files.
12639 @item m4
12640 The number of lines (and files) of Autoconf macros.
12641 @item doc
12642 The number of pages of the documentation (the Postscript version).
12643 @item t
12644 The number of test cases in the test suite.  Of those, the number in
12645 parentheses is the number of generated test cases.
12646 @end table
12648 @multitable {8888-88-88} {8.8-p8} {8888} {8888} {8888} {8888 (88)} {8888 (88)} {888} {888 (88)}
12649 @headitem Date   @tab Rel    @tab   am @tab acl @tab   pm @tab @file{*.am} @tab m4 @tab doc @tab t
12650 @item 1994-09-19 @tab CVS    @tab  141 @tab     @tab      @tab  299 (24) @tab           @tab     @tab
12651 @item 1994-11-05 @tab CVS    @tab  208 @tab     @tab      @tab  332 (28) @tab           @tab     @tab
12652 @item 1995-11-23 @tab 0.20   @tab  533 @tab     @tab      @tab  458 (35) @tab           @tab   9 @tab
12653 @item 1995-11-26 @tab 0.21   @tab  613 @tab     @tab      @tab  480 (36) @tab           @tab  11 @tab
12654 @item 1995-11-28 @tab 0.22   @tab 1116 @tab     @tab      @tab  539 (38) @tab           @tab  12 @tab
12655 @item 1995-11-29 @tab 0.23   @tab 1240 @tab     @tab      @tab  541 (38) @tab           @tab  12 @tab
12656 @item 1995-12-08 @tab 0.24   @tab 1462 @tab     @tab      @tab  504 (33) @tab           @tab  14 @tab
12657 @item 1995-12-10 @tab 0.25   @tab 1513 @tab     @tab      @tab  511 (37) @tab           @tab  15 @tab
12658 @item 1996-01-03 @tab 0.26   @tab 1706 @tab     @tab      @tab  438 (36) @tab           @tab  16 @tab
12659 @item 1996-01-03 @tab 0.27   @tab 1706 @tab     @tab      @tab  438 (36) @tab           @tab  16 @tab
12660 @item 1996-01-13 @tab 0.28   @tab 1964 @tab     @tab      @tab  934 (33) @tab           @tab  16 @tab
12661 @item 1996-02-07 @tab 0.29   @tab 2299 @tab     @tab      @tab  936 (33) @tab           @tab  17 @tab
12662 @item 1996-02-24 @tab 0.30   @tab 2544 @tab     @tab      @tab  919 (32) @tab   85 (1)  @tab  20 @tab 9
12663 @item 1996-03-11 @tab 0.31   @tab 2877 @tab     @tab      @tab  919 (32) @tab   85 (1)  @tab  29 @tab 17
12664 @item 1996-04-27 @tab 0.32   @tab 3058 @tab     @tab      @tab  921 (31) @tab   85 (1)  @tab  30 @tab 26
12665 @item 1996-05-18 @tab 0.33   @tab 3110 @tab     @tab      @tab  926 (31) @tab  105 (1)  @tab  30 @tab 35
12666 @item 1996-05-28 @tab 1.0    @tab 3134 @tab     @tab      @tab  973 (32) @tab  105 (1)  @tab  30 @tab 38
12667 @item 1997-06-22 @tab 1.2    @tab 6089 @tab 385 @tab      @tab 1294 (36) @tab  592 (20) @tab  37 @tab 126
12668 @item 1998-04-05 @tab 1.3    @tab 6415 @tab 422 @tab      @tab 1470 (39) @tab  741 (23) @tab  39 @tab 156
12669 @item 1999-01-14 @tab 1.4    @tab 7240 @tab 426 @tab      @tab 1591 (40) @tab  734 (20) @tab  51 @tab 197
12670 @item 2001-05-08 @tab 1.4-p1 @tab 7251 @tab 426 @tab      @tab 1591 (40) @tab  734 (20) @tab  51 @tab 197
12671 @item 2001-05-24 @tab 1.4-p2 @tab 7268 @tab 439 @tab      @tab 1591 (40) @tab  734 (20) @tab  49 @tab 197
12672 @item 2001-06-07 @tab 1.4-p3 @tab 7312 @tab 439 @tab      @tab 1591 (40) @tab  734 (20) @tab  49 @tab 197
12673 @item 2001-06-10 @tab 1.4-p4 @tab 7321 @tab 439 @tab      @tab 1591 (40) @tab  734 (20) @tab  49 @tab 198
12674 @item 2001-07-15 @tab 1.4-p5 @tab 7228 @tab 426 @tab      @tab 1596 (40) @tab  734 (20) @tab  51 @tab 198
12675 @item 2001-08-23 @tab 1.5    @tab 8016 @tab 475 @tab  600 @tab 2654 (39) @tab 1166 (29) @tab  63 @tab 327
12676 @item 2002-03-05 @tab 1.6    @tab 8465 @tab 475 @tab 1136 @tab 2732 (39) @tab 1603 (27) @tab  66 @tab 365
12677 @item 2002-04-11 @tab 1.6.1  @tab 8544 @tab 475 @tab 1136 @tab 2741 (39) @tab 1603 (27) @tab  66 @tab 372
12678 @item 2002-06-14 @tab 1.6.2  @tab 8575 @tab 475 @tab 1136 @tab 2800 (39) @tab 1609 (27) @tab  67 @tab 386
12679 @item 2002-07-28 @tab 1.6.3  @tab 8600 @tab 475 @tab 1153 @tab 2809 (39) @tab 1609 (27) @tab  67 @tab 391
12680 @item 2002-07-28 @tab 1.4-p6 @tab 7332 @tab 455 @tab      @tab 1596 (40) @tab  735 (20) @tab  49 @tab 197
12681 @item 2002-09-25 @tab 1.7    @tab 9189 @tab 471 @tab 1790 @tab 2965 (39) @tab 1606 (28) @tab  73 @tab 430
12682 @item 2002-10-16 @tab 1.7.1  @tab 9229 @tab 475 @tab 1790 @tab 2977 (39) @tab 1606 (28) @tab  73 @tab 437
12683 @item 2002-12-06 @tab 1.7.2  @tab 9334 @tab 475 @tab 1790 @tab 2988 (39) @tab 1606 (28) @tab  77 @tab 445
12684 @item 2003-02-20 @tab 1.7.3  @tab 9389 @tab 475 @tab 1790 @tab 3023 (39) @tab 1651 (29) @tab  84 @tab 448
12685 @item 2003-04-23 @tab 1.7.4  @tab 9429 @tab 475 @tab 1790 @tab 3031 (39) @tab 1644 (29) @tab  85 @tab 458
12686 @item 2003-05-18 @tab 1.7.5  @tab 9429 @tab 475 @tab 1790 @tab 3033 (39) @tab 1645 (29) @tab  85 @tab 459
12687 @item 2003-07-10 @tab 1.7.6  @tab 9442 @tab 475 @tab 1790 @tab 3033 (39) @tab 1660 (29) @tab  85 @tab 461
12688 @item 2003-09-07 @tab 1.7.7  @tab 9443 @tab 475 @tab 1790 @tab 3041 (39) @tab 1660 (29) @tab  90 @tab 467
12689 @item 2003-10-07 @tab 1.7.8  @tab 9444 @tab 475 @tab 1790 @tab 3041 (39) @tab 1660 (29) @tab  90 @tab 468
12690 @item 2003-11-09 @tab 1.7.9  @tab 9444 @tab 475 @tab 1790 @tab 3048 (39) @tab 1660 (29) @tab  90 @tab 468
12691 @item 2003-12-10 @tab 1.8    @tab 7171 @tab 585 @tab 7730 @tab 3236 (39) @tab 1666 (31) @tab 104 @tab 521
12692 @item 2004-01-11 @tab 1.8.1  @tab 7217 @tab 663 @tab 7726 @tab 3287 (39) @tab 1686 (31) @tab 104 @tab 525
12693 @item 2004-01-12 @tab 1.8.2  @tab 7217 @tab 663 @tab 7726 @tab 3288 (39) @tab 1686 (31) @tab 104 @tab 526
12694 @item 2004-03-07 @tab 1.8.3  @tab 7214 @tab 686 @tab 7735 @tab 3303 (39) @tab 1695 (31) @tab 111 @tab 530
12695 @item 2004-04-25 @tab 1.8.4  @tab 7214 @tab 686 @tab 7736 @tab 3310 (39) @tab 1701 (31) @tab 112 @tab 531
12696 @item 2004-05-16 @tab 1.8.5  @tab 7240 @tab 686 @tab 7736 @tab 3299 (39) @tab 1701 (31) @tab 112 @tab 533
12697 @item 2004-07-28 @tab 1.9    @tab 7508 @tab 715 @tab 7794 @tab 3352 (40) @tab 1812 (32) @tab 115 @tab 551
12698 @item 2004-08-11 @tab 1.9.1  @tab 7512 @tab 715 @tab 7794 @tab 3354 (40) @tab 1812 (32) @tab 115 @tab 552
12699 @item 2004-09-19 @tab 1.9.2  @tab 7512 @tab 715 @tab 7794 @tab 3354 (40) @tab 1812 (32) @tab 132 @tab 554
12700 @item 2004-11-01 @tab 1.9.3  @tab 7507 @tab 718 @tab 7804 @tab 3354 (40) @tab 1812 (32) @tab 134 @tab 556
12701 @item 2004-12-18 @tab 1.9.4  @tab 7508 @tab 718 @tab 7856 @tab 3361 (40) @tab 1811 (32) @tab 140 @tab 560
12702 @item 2005-02-13 @tab 1.9.5  @tab 7523 @tab 719 @tab 7859 @tab 3373 (40) @tab 1453 (32) @tab 142 @tab 562
12703 @item 2005-07-10 @tab 1.9.6  @tab 7539 @tab 699 @tab 7867 @tab 3400 (40) @tab 1453 (32) @tab 144 @tab 570
12704 @item 2006-10-15 @tab 1.10   @tab 7859 @tab 1072 @tab 8024 @tab 3512 (40) @tab 1496 (34) @tab 172 @tab 604
12705 @item 2008-01-19 @tab 1.10.1 @tab 7870 @tab 1089 @tab 8025 @tab 3520 (40) @tab 1499 (34) @tab 173 @tab 617
12706 @item 2009-03-29 @tab 1.10b  @tab 8556 @tab 1092 @tab 8281 @tab 4106 (41) @tab 1608 (35) @tab 178 @tab 720 (20)
12707 @end multitable
12710 @c ========================================================== Appendices
12712 @page
12713 @node Copying This Manual
12714 @appendix Copying This Manual
12716 @menu
12717 * GNU Free Documentation License::  License for copying this manual
12718 @end menu
12720 @node GNU Free Documentation License
12721 @appendixsec GNU Free Documentation License
12722 @include fdl.texi
12724 @page
12725 @node Indices
12726 @appendix Indices
12728 @menu
12729 * Macro Index::                 Index of Autoconf macros
12730 * Variable Index::              Index of Makefile variables
12731 * General Index::               General index
12732 @end menu
12734 @node Macro Index
12735 @appendixsec Macro Index
12737 @printindex fn
12739 @node Variable Index
12740 @appendixsec Variable Index
12742 @printindex vr
12744 @node General Index
12745 @appendixsec General Index
12747 @printindex cp
12750 @page
12751 @contents
12752 @bye
12754 @c  LocalWords:  texinfo setfilename settitle setchapternewpage texi direntry
12755 @c  LocalWords:  dircategory in's aclocal ifinfo titlepage Tromey vskip pt sp
12756 @c  LocalWords:  filll defcodeindex ov cv op tr syncodeindex fn cp vr ifnottex
12757 @c  LocalWords:  dir Automake's ac Dist Gnits gnits cygnus dfn Autoconf's pxref
12758 @c  LocalWords:  cindex Autoconf autoconf perl samp cvs dist trindex SUBST foo
12759 @c  LocalWords:  xs emph FIXME ref vindex pkglibdir pkgincludedir pkgdatadir mt
12760 @c  LocalWords:  pkg libdir cpio bindir sbindir rmt pax sbin zar zardir acindex
12761 @c  LocalWords:  HTML htmldir html noinst TEXINFOS nodist nobase strudel CFLAGS
12762 @c  LocalWords:  libmumble CC YFLAGS ansi knr itemx de fication config url comp
12763 @c  LocalWords:  depcomp elisp sh mdate mkinstalldirs mkdir py tex dvi ps pdf
12764 @c  LocalWords:  ylwrap zardoz INIT gettext acinclude mv FUNCS LIBOBJS LDADD fr
12765 @c  LocalWords:  uref featureful dnl src LINGUAS es ko nl pl sl sv PROG ISC doc
12766 @c  LocalWords:  POSIX STDC fcntl FUNC ALLOCA blksize struct stat intl po chmod
12767 @c  LocalWords:  ChangeLog SUBDIRS gettextize gpl testdata getopt INTLLIBS cpp
12768 @c  LocalWords:  localedir datadir DLOCALEDIR DEXIT CPPFLAGS autoreconf opindex
12769 @c  LocalWords:  AUX var symlink deps Wno Wnone package's aclocal's distclean
12770 @c  LocalWords:  ltmain xref LIBSOURCE LIBSOURCES LIBOBJ MEMCMP vs RANLIB CXX
12771 @c  LocalWords:  LDFLAGS LIBTOOL libtool XTRA LIBS gettext's acdir APIVERSION
12772 @c  LocalWords:  dirlist noindent usr MULTILIB multilib Multilibs TIOCGWINSZ sc
12773 @c  LocalWords:  GWINSZ termios SRCDIR tarball bzip LISPDIR lispdir XEmacs CCAS
12774 @c  LocalWords:  emacsen MicroEmacs CCASFLAGS UX GCJ gcj GCJFLAGS posix DMALLOC
12775 @c  LocalWords:  dmalloc ldmalloc REGEX regex rx DEPDIR DEP DEFUN aclocaldir fi
12776 @c  LocalWords:  mymacro myothermacro AMFLAGS autopoint autogen libtoolize yum
12777 @c  LocalWords:  autoheader README MAKEFLAGS subdir Inetutils sync COND endif
12778 @c  LocalWords:  Miller's installable includedir inc pkgdata EXEEXT libexec bsd
12779 @c  LocalWords:  pkglib libexecdir prog libcpio cpio's dlopen dlpreopen linux
12780 @c  LocalWords:  subsubsection OBJEXT esac lib LTLIBRARIES liblob LIBADD AR ar
12781 @c  LocalWords:  ARFLAGS cru ing maude libgettext lo LTLIBOBJS rpath SGI PRE yy
12782 @c  LocalWords:  libmaude CCLD CXXFLAGS FFLAGS LFLAGS OBJCFLAGS RFLAGS DEFS cc
12783 @c  LocalWords:  SHORTNAME vtable srcdir nostdinc basename yxx cxx ll lxx gdb
12784 @c  LocalWords:  lexers yymaxdepth maxdepth yyparse yylex yyerror yylval lval
12785 @c  LocalWords:  yychar yydebug yypact yyr yydef def yychk chk yypgo pgo yyact
12786 @c  LocalWords:  yyexca exca yyerrflag errflag yynerrs nerrs yyps yypv pv yys
12787 @c  LocalWords:  yystate yytmp tmp yyv yyval val yylloc lloc yyreds yytoks toks
12788 @c  LocalWords:  yylhs yylen yydefred yydgoto yysindex yyrindex yygindex yyname
12789 @c  LocalWords:  yytable yycheck yyrule byacc CXXCOMPILE CXXLINK FLINK cfortran
12790 @c  LocalWords:  Catalogue preprocessable FLIBS libfoo baz JAVACFLAGS java exe
12791 @c  LocalWords:  SunOS fying basenames exeext uninstalled oldinclude kr FSF's
12792 @c  LocalWords:  pkginclude oldincludedir sysconf sharedstate localstate gcc rm
12793 @c  LocalWords:  sysconfdir sharedstatedir localstatedir preexist CLEANFILES gz
12794 @c  LocalWords:  depfile tmpdepfile depmode const interoperate
12795 @c  LocalWords:  JAVAC javac JAVAROOT builddir CLASSPATH ENV pyc pyo pkgpython
12796 @c  LocalWords:  pyexecdir pkgpyexecdir Python's pythondir pkgpythondir txi ois
12797 @c  LocalWords:  installinfo vers MAKEINFO makeinfo MAKEINFOFLAGS noinstall rf
12798 @c  LocalWords:  mandir thesame alsothesame installman myexecbin DESTDIR Pinard
12799 @c  LocalWords:  uninstall installdirs uninstalls MOSTLYCLEANFILES mostlyclean
12800 @c  LocalWords:  DISTCLEANFILES MAINTAINERCLEANFILES GZIP gzip shar exp
12801 @c  LocalWords:  distdir distcheck distcleancheck listfiles distuninstallcheck
12802 @c  LocalWords:  VPATH tarfile stdout XFAIL DejaGnu dejagnu DEJATOOL runtest ln
12803 @c  LocalWords:  RUNTESTDEFAULTFLAGS toolchain RUNTESTFLAGS asis readme DVIPS
12804 @c  LocalWords:  installcheck gzipped tarZ std utils etags mkid multilibbing cd
12805 @c  LocalWords:  ARGS taggable ETAGSFLAGS lang ctags CTAGSFLAGS GTAGS gtags idl
12806 @c  LocalWords:  foocc doit idlC multilibs ABIs cmindex defmac ARG enableval FC
12807 @c  LocalWords:  MSG xtrue DBG pathchk CYGWIN afile proglink versioned CVS's TE
12808 @c  LocalWords:  wildcards Autoconfiscated subsubheading autotools Meyering API
12809 @c  LocalWords:  ois's wildcard Wportability cartouche vrindex printindex Duret
12810 @c  LocalWords:  DSOMEFLAG DVERSION automake Lutz insertcopying versioning FAQ
12811 @c  LocalWords:  LTLIBOBJ Libtool's libtool's libltdl dlopening itutions libbar
12812 @c  LocalWords:  WANTEDLIBS libhello sublibraries libtop libsub dlopened Ratfor
12813 @c  LocalWords:  mymodule timestamps timestamp underquoted MAKEINFOHTMLFLAGS te
12814 @c  LocalWords:  GNUmakefile Subpackages subpackage's subpackages aux
12815 @c  LocalWords:  detailmenu Timeline pwd reldir AUTOM autom PREREQ FOOBAR libc
12816 @c  LocalWords:  libhand subpackage moduleN libmain libmisc FCFLAGS FCCOMPILE
12817 @c  LocalWords:  FCLINK subst sed ELCFILES elc MAKEINFOHTML dvips esyscmd ustar
12818 @c  LocalWords:  tarballs Woverride vfi ELFILES djm AutoMake honkin FSF
12819 @c  LocalWords:  fileutils precanned MacKenzie's reimplement termutils Tromey's
12820 @c  LocalWords:  cois gnitsians LIBPROGRAMS progs LIBLIBRARIES Textutils Ulrich
12821 @c  LocalWords:  Matzigkeit Drepper's Gord Matzigkeit's jm Dalley Debian org
12822 @c  LocalWords:  Administrivia ILU CORBA Sourceware Molenda sourceware Elliston
12823 @c  LocalWords:  dep Oliva Akim Demaille Aiieeee Demaillator Akim's sourcequake
12824 @c  LocalWords:  grep backported screenshots libgcj KB unnumberedsubsubsec pre
12825 @c  LocalWords:  precomputing hacky makedepend inline clearmake LD PRELOAD Rel
12826 @c  LocalWords:  syscalls perlhist acl pm multitable headitem fdl appendixsec
12827 @c  LocalWords:  LTALLOCA MALLOC malloc memcmp strdup alloca libcompat xyz DFOO
12828 @c  LocalWords:  unprefixed buildable preprocessed DBAZ DDATADIR WARNINGCFLAGS
12829 @c  LocalWords:  LIBFOOCFLAGS LIBFOOLDFLAGS ftable testSubDir obj LIBTOOLFLAGS
12830 @c  LocalWords:  barexec Pinard's automatize initialize lzma xz