ar-lib: new 'AM_PROG_AR' macro, triggering the 'ar-lib' script
[automake.git] / doc / automake.texi
blobc789e743371adafb52dcc6aeb07f71939bab74de
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 @set PACKAGE_BUGREPORT bug-automake@@gnu.org
20 @copying
22 This manual is for GNU Automake (version @value{VERSION},
23 @value{UPDATED}), a program that creates GNU standards-compliant
24 Makefiles from template files.
26 Copyright @copyright{} 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
27 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
28 Foundation, Inc.
30 @quotation
31 Permission is granted to copy, distribute and/or modify this document
32 under the terms of the GNU Free Documentation License,
33 Version 1.3 or any later version published by the Free Software
34 Foundation; with no Invariant Sections, with no Front-Cover texts,
35 and with no Back-Cover Texts.  A copy of the license is included in the
36 section entitled ``GNU Free Documentation License.''
38 @end quotation
39 @end copying
41 @c info Automake  points to the Automake package's documentation
42 @c info automake  points to the automake script's documentation
43 @c (Autoconf has a similar setup.)
44 @dircategory Software development
45 @direntry
46 * Automake: (automake).         Making GNU standards-compliant Makefiles.
47 @end direntry
49 @dircategory Individual utilities
50 @direntry
51 * aclocal: (automake)Invoking aclocal.          Generating aclocal.m4.
52 * automake: (automake)Invoking Automake.        Generating Makefile.in.
53 @end direntry
55 @titlepage
56 @title GNU Automake
57 @subtitle For version @value{VERSION}, @value{UPDATED}
58 @author David MacKenzie
59 @author Tom Tromey
60 @author Alexandre Duret-Lutz
61 @page
62 @vskip 0pt plus 1filll
63 @insertcopying
64 @end titlepage
66 @contents
68 @c We use the following macros to define indices:
69 @c   @cindex   concepts, and anything that does not fit elsewhere
70 @c   @vindex   Makefile variables
71 @c   @trindex  targets
72 @c   @acindex  Autoconf/Automake/Libtool/M4/... macros
73 @c   @opindex  tool options
75 @c Define an index of configure macros.
76 @defcodeindex ac
77 @c Define an index of options.
78 @defcodeindex op
79 @c Define an index of targets.
80 @defcodeindex tr
81 @c Define an index of commands.
82 @defcodeindex cm
84 @c Put the macros in the function index.
85 @syncodeindex ac fn
87 @c Put everything else into one index (arbitrarily chosen to be the
88 @c concept index).
89 @syncodeindex op cp
90 @syncodeindex tr cp
91 @syncodeindex cm cp
93 @ifnottex
94 @node Top
95 @comment  node-name,  next,  previous,  up
96 @top GNU Automake
98 @insertcopying
100 @menu
101 * Introduction::                Automake's purpose
102 * Autotools Introduction::      An Introduction to the Autotools
103 * Generalities::                General ideas
104 * Examples::                    Some example packages
105 * Invoking Automake::           Creating a Makefile.in
106 * configure::                   Scanning configure.ac, using aclocal
107 * Directories::                 Declaring subdirectories
108 * Programs::                    Building programs and libraries
109 * Other Objects::               Other derived objects
110 * Other GNU Tools::             Other GNU Tools
111 * Documentation::               Building documentation
112 * Install::                     What gets installed
113 * Clean::                       What gets cleaned
114 * Dist::                        What goes in a distribution
115 * Tests::                       Support for test suites
116 * Rebuilding::                  Automatic rebuilding of Makefile
117 * Options::                     Changing Automake's behavior
118 * Miscellaneous::               Miscellaneous rules
119 * Include::                     Including extra files in an Automake template
120 * Conditionals::                Conditionals
121 * Silencing Make::              Obtain less verbose output from @command{make}
122 * Gnits::                       The effect of @option{--gnu} and @option{--gnits}
123 * Cygnus::                      The effect of @option{--cygnus}
124 * Not Enough::                  When Automake is not Enough
125 * Distributing::                Distributing the Makefile.in
126 * API Versioning::              About compatibility between Automake versions
127 * Upgrading::                   Upgrading to a Newer Automake Version
128 * FAQ::                         Frequently Asked Questions
129 * History::                     Notes about the history of Automake
130 * Copying This Manual::         How to make copies of this manual
131 * Indices::                     Indices of variables, macros, and concepts
133 @detailmenu
134  --- The Detailed Node Listing ---
136 An Introduction to the Autotools
138 * GNU Build System::            Introducing the GNU Build System
139 * Use Cases::                   Use Cases for the GNU Build System
140 * Why Autotools::               How Autotools Help
141 * Hello World::                 A Small Hello World Package
143 Use Cases for the GNU Build System
145 * Basic Installation::          Common installation procedure
146 * Standard Targets::            A list of standard Makefile targets
147 * Standard Directory Variables::  A list of standard directory variables
148 * Standard Configuration Variables::  Using configuration variables
149 * config.site::                 Using a config.site file
150 * VPATH Builds::                Parallel build trees
151 * Two-Part Install::            Installing data and programs separately
152 * Cross-Compilation::           Building for other architectures
153 * Renaming::                    Renaming programs at install time
154 * DESTDIR::                     Building binary packages with DESTDIR
155 * Preparing Distributions::     Rolling out tarballs
156 * Dependency Tracking::         Automatic dependency tracking
157 * Nested Packages::             The GNU Build Systems can be nested
159 A Small Hello World
161 * Creating amhello::            Create @file{amhello-1.0.tar.gz} from scratch
162 * amhello's configure.ac Setup Explained::
163 * amhello's Makefile.am Setup Explained::
165 General ideas
167 * General Operation::           General operation of Automake
168 * Strictness::                  Standards conformance checking
169 * Uniform::                     The Uniform Naming Scheme
170 * Length Limitations::          Staying below the command line length limit
171 * Canonicalization::            How derived variables are named
172 * User Variables::              Variables reserved for the user
173 * Auxiliary Programs::          Programs automake might require
175 Some example packages
177 * Complete::                    A simple example, start to finish
178 * true::                        Building true and false
180 Scanning @file{configure.ac}, using @command{aclocal}
182 * Requirements::                Configuration requirements
183 * Optional::                    Other things Automake recognizes
184 * Invoking aclocal::            Auto-generating aclocal.m4
185 * Macros::                      Autoconf macros supplied with Automake
187 Auto-generating aclocal.m4
189 * aclocal Options::             Options supported by aclocal
190 * Macro Search Path::           How aclocal finds .m4 files
191 * Extending aclocal::           Writing your own aclocal macros
192 * Local Macros::                Organizing local macros
193 * Serials::                     Serial lines in Autoconf macros
194 * Future of aclocal::           aclocal's scheduled death
196 Autoconf macros supplied with Automake
198 * Public Macros::               Macros that you can use.
199 * Obsolete Macros::             Macros that you should stop using.
200 * Private Macros::              Macros that you should not use.
202 Directories
204 * Subdirectories::              Building subdirectories recursively
205 * Conditional Subdirectories::  Conditionally not building directories
206 * Alternative::                 Subdirectories without recursion
207 * Subpackages::                 Nesting packages
209 Conditional Subdirectories
211 * SUBDIRS vs DIST_SUBDIRS::     Two sets of directories
212 * Subdirectories with AM_CONDITIONAL::  Specifying conditional subdirectories
213 * Subdirectories with AC_SUBST::  Another way for conditional recursion
214 * Unconfigured Subdirectories::  Not even creating a @samp{Makefile}
216 Building Programs and Libraries
218 * A Program::                   Building a program
219 * A Library::                   Building a library
220 * A Shared Library::            Building a Libtool library
221 * Program and Library Variables::  Variables controlling program and
222                                 library builds
223 * Default _SOURCES::            Default source files
224 * LIBOBJS::                     Special handling for LIBOBJS and ALLOCA
225 * Program Variables::           Variables used when building a program
226 * Yacc and Lex::                Yacc and Lex support
227 * C++ Support::                 Compiling C++ sources
228 * Objective C Support::         Compiling Objective C sources
229 * Unified Parallel C Support::  Compiling Unified Parallel C sources
230 * Assembly Support::            Compiling assembly sources
231 * Fortran 77 Support::          Compiling Fortran 77 sources
232 * Fortran 9x Support::          Compiling Fortran 9x sources
233 * Java Support::                Compiling Java sources
234 * Vala Support::                Compiling Vala sources
235 * Support for Other Languages::  Compiling other languages
236 * ANSI::                        Automatic de-ANSI-fication (deprecated, soon to be removed)
237 * Dependencies::                Automatic dependency tracking
238 * EXEEXT::                      Support for executable extensions
240 Building a program
242 * Program Sources::             Defining program sources
243 * Linking::                     Linking with libraries or extra objects
244 * Conditional Sources::         Handling conditional sources
245 * Conditional Programs::        Building a program conditionally
247 Building a Shared Library
249 * Libtool Concept::             Introducing Libtool
250 * Libtool Libraries::           Declaring Libtool Libraries
251 * Conditional Libtool Libraries::  Building Libtool Libraries Conditionally
252 * Conditional Libtool Sources::  Choosing Library Sources Conditionally
253 * Libtool Convenience Libraries::  Building Convenience Libtool Libraries
254 * Libtool Modules::             Building Libtool Modules
255 * Libtool Flags::               Using _LIBADD, _LDFLAGS, and _LIBTOOLFLAGS
256 * LTLIBOBJS::                   Using $(LTLIBOBJS) and $(LTALLOCA)
257 * Libtool Issues::              Common Issues Related to Libtool's Use
259 Common Issues Related to Libtool's Use
261 * Error required file ltmain.sh not found::  The need to run libtoolize
262 * Objects created both with libtool and without::  Avoid a specific build race
264 Fortran 77 Support
266 * Preprocessing Fortran 77::    Preprocessing Fortran 77 sources
267 * Compiling Fortran 77 Files::  Compiling Fortran 77 sources
268 * Mixing Fortran 77 With C and C++::  Mixing Fortran 77 With C and C++
270 Mixing Fortran 77 With C and C++
272 * How the Linker is Chosen::    Automatic linker selection
274 Fortran 9x Support
276 * Compiling Fortran 9x Files::  Compiling Fortran 9x sources
278 Other Derived Objects
280 * Scripts::                     Executable scripts
281 * Headers::                     Header files
282 * Data::                        Architecture-independent data files
283 * Sources::                     Derived sources
285 Built Sources
287 * Built Sources Example::       Several ways to handle built sources.
289 Other GNU Tools
291 * Emacs Lisp::                  Emacs Lisp
292 * gettext::                     Gettext
293 * Libtool::                     Libtool
294 * Java::                        Java
295 * Python::                      Python
297 Building documentation
299 * Texinfo::                     Texinfo
300 * Man Pages::                   Man pages
302 What Gets Installed
304 * Basics of Installation::      What gets installed where
305 * The Two Parts of Install::    Installing data and programs separately
306 * Extending Installation::      Adding your own rules for installation
307 * Staged Installs::             Installation in a temporary location
308 * Install Rules for the User::  Useful additional rules
310 What Goes in a Distribution
312 * Basics of Distribution::      Files distributed by default
313 * Fine-grained Distribution Control::  @code{dist_} and @code{nodist_} prefixes
314 * The dist Hook::               A target for last-minute distribution changes
315 * Checking the Distribution::   @samp{make distcheck} explained
316 * The Types of Distributions::  A variety of formats and compression methods
318 Support for test suites
320 * Simple Tests::                Listing programs and scripts in @code{TESTS}
321 * Simple Tests using parallel-tests::  More powerful test driver
322 * DejaGnu Tests::               Interfacing with the external testing framework
323 * Install Tests::               Running tests on installed packages
325 Miscellaneous Rules
327 * Tags::                        Interfacing to etags and mkid
328 * Suffixes::                    Handling new file extensions
329 * Multilibs::                   Support for multilibs.
331 Conditionals
333 * Usage of Conditionals::       Declaring conditional content
334 * Limits of Conditionals::      Enclosing complete statements
336 Silencing Make
338 * Make verbosity::               Make is verbose by default
339 * Tricks For Silencing Make::    Standard and generic ways to silence make
340 * Automake silent-rules Option:: How Automake can help in silencing make
342 When Automake Isn't Enough
344 * Extending::                   Adding new rules or overriding existing ones.
345 * Third-Party Makefiles::       Integrating Non-Automake @file{Makefile}s.
347 Frequently Asked Questions about Automake
349 * CVS::                         CVS and generated files
350 * maintainer-mode::             missing and AM_MAINTAINER_MODE
351 * Wildcards::                   Why doesn't Automake support wildcards?
352 * Limitations on File Names::   Limitations on source and installed file names
353 * distcleancheck::              Files left in build directory after distclean
354 * Flag Variables Ordering::     CFLAGS vs.@: AM_CFLAGS vs.@: mumble_CFLAGS
355 * Renamed Objects::             Why are object files sometimes renamed?
356 * Per-Object Flags::            How to simulate per-object flags?
357 * Multiple Outputs::            Writing rules for tools with many output files
358 * Hard-Coded Install Paths::    Installing to hard-coded locations
359 * Debugging Make Rules::        Strategies when things don't work as expected
360 * Reporting Bugs::              Feedback on bugs and feature requests
362 History of Automake
364 * Timeline::                    The Automake story.
365 * Dependency Tracking Evolution::  Evolution of Automatic Dependency Tracking
366 * Releases::                    Statistics about Automake Releases
368 Dependency Tracking in Automake
370 * First Take on Dependencies::  Precomputed dependency tracking
371 * Dependencies As Side Effects::  Update at developer compile time
372 * Dependencies for the User::   Update at user compile time
373 * Techniques for Dependencies::  Alternative approaches
374 * Recommendations for Tool Writers::  What tool writers can do to help
375 * Future Directions for Dependencies::  Languages Automake does not know
377 Copying This Manual
379 * GNU Free Documentation License::  License for copying this manual
381 Indices
383 * Macro Index::                 Index of Autoconf macros
384 * Variable Index::              Index of Makefile variables
385 * General Index::               General index
387 @end detailmenu
388 @end menu
390 @end ifnottex
393 @node Introduction
394 @chapter Introduction
396 Automake is a tool for automatically generating @file{Makefile.in}s
397 from files called @file{Makefile.am}.  Each @file{Makefile.am} is
398 basically a series of @command{make} variable
399 definitions@footnote{These variables are also called @dfn{make macros}
400 in Make terminology, however in this manual we reserve the term
401 @dfn{macro} for Autoconf's macros.}, with rules being thrown in
402 occasionally.  The generated @file{Makefile.in}s are compliant with
403 the GNU Makefile standards.
405 @cindex GNU Makefile standards
407 The GNU Makefile Standards Document
408 (@pxref{Makefile Conventions, , , standards, The GNU Coding Standards})
409 is long, complicated, and subject to change.  The goal of Automake is to
410 remove the burden of Makefile maintenance from the back of the
411 individual GNU maintainer (and put it on the back of the Automake
412 maintainers).
414 The typical Automake input file is simply a series of variable definitions.
415 Each such file is processed to create a @file{Makefile.in}.  There
416 should generally be one @file{Makefile.am} per directory of a project.
418 @cindex Constraints of Automake
419 @cindex Automake constraints
421 Automake does constrain a project in certain ways; for instance, it
422 assumes that the project uses Autoconf (@pxref{Top, , Introduction,
423 autoconf, The Autoconf Manual}), and enforces certain restrictions on
424 the @file{configure.ac} contents@footnote{Older Autoconf versions used
425 @file{configure.in}.  Autoconf 2.50 and greater promotes
426 @file{configure.ac} over @file{configure.in}.  The rest of this
427 documentation will refer to @file{configure.ac}, but Automake also
428 supports @file{configure.in} for backward compatibility.}.
430 @cindex Automake requirements
431 @cindex Requirements, Automake
433 Automake requires @command{perl} in order to generate the
434 @file{Makefile.in}s.  However, the distributions created by Automake are
435 fully GNU standards-compliant, and do not require @command{perl} in order
436 to be built.
438 @cindex Bugs, reporting
439 @cindex Reporting bugs
440 @cindex E-mail, bug reports
442 For more information on bug reports, @xref{Reporting Bugs}.
444 @node Autotools Introduction
445 @chapter An Introduction to the Autotools
447 If you are new to Automake, maybe you know that it is part of a set of
448 tools called @emph{The Autotools}.  Maybe you've already delved into a
449 package full of files named @file{configure}, @file{configure.ac},
450 @file{Makefile.in}, @file{Makefile.am}, @file{aclocal.m4}, @dots{},
451 some of them claiming to be @emph{generated by} Autoconf or Automake.
452 But the exact purpose of these files and their relations is probably
453 fuzzy.  The goal of this chapter is to introduce you to this machinery,
454 to show you how it works and how powerful it is.  If you've never
455 installed or seen such a package, do not worry: this chapter will walk
456 you through it.
458 If you need some teaching material, more illustrations, or a less
459 @command{automake}-centered continuation, some slides for this
460 introduction are available in Alexandre Duret-Lutz's
461 @uref{http://www.lrde.epita.fr/@/~adl/@/autotools.html,
462 Autotools Tutorial}.
463 This chapter is the written version of the first part of his tutorial.
465 @menu
466 * GNU Build System::            Introducing the GNU Build System
467 * Use Cases::                   Use Cases for the GNU Build System
468 * Why Autotools::               How Autotools Help
469 * Hello World::                 A Small Hello World Package
470 @end menu
472 @node GNU Build System
473 @section Introducing the GNU Build System
474 @cindex GNU Build System, introduction
476 It is a truth universally acknowledged, that as a developer in
477 possession of a new package, you must be in want of a build system.
479 In the Unix world, such a build system is traditionally achieved using
480 the command @command{make} (@pxref{Top, , Overview, make, The GNU Make
481 Manual}).  You express the recipe to build your package in a
482 @file{Makefile}.  This file is a set of rules to build the files in
483 the package.  For instance the program @file{prog} may be built by
484 running the linker on the files @file{main.o}, @file{foo.o}, and
485 @file{bar.o}; the file @file{main.o} may be built by running the
486 compiler on @file{main.c}; etc.  Each time @command{make} is run, it
487 reads @file{Makefile}, checks the existence and modification time of
488 the files mentioned, decides what files need to be built (or rebuilt),
489 and runs the associated commands.
491 When a package needs to be built on a different platform than the one
492 it was developed on, its @file{Makefile} usually needs to be adjusted.
493 For instance the compiler may have another name or require more
494 options.  In 1991, David J. MacKenzie got tired of customizing
495 @file{Makefile} for the 20 platforms he had to deal with.  Instead, he
496 handcrafted a little shell script called @file{configure} to
497 automatically adjust the @file{Makefile} (@pxref{Genesis, , Genesis,
498 autoconf, The Autoconf Manual}).  Compiling his package was now
499 as simple as running @code{./configure && make}.
501 @cindex GNU Coding Standards
503 Today this process has been standardized in the GNU project.  The GNU
504 Coding Standards (@pxref{Managing Releases, The Release Process, ,
505 standards, The GNU Coding Standards}) explains how each package of the
506 GNU project should have a @file{configure} script, and the minimal
507 interface it should have.  The @file{Makefile} too should follow some
508 established conventions.  The result?  A unified build system that
509 makes all packages almost indistinguishable by the installer.  In its
510 simplest scenario, all the installer has to do is to unpack the
511 package, run @code{./configure && make && make install}, and repeat
512 with the next package to install.
514 We call this build system the @dfn{GNU Build System}, since it was
515 grown out of the GNU project.  However it is used by a vast number of
516 other packages: following any existing convention has its advantages.
518 @cindex Autotools, introduction
520 The Autotools are tools that will create a GNU Build System for your
521 package.  Autoconf mostly focuses on @file{configure} and Automake on
522 @file{Makefile}s.  It is entirely possible to create a GNU Build
523 System without the help of these tools.  However it is rather
524 burdensome and error-prone.  We will discuss this again after some
525 illustration of the GNU Build System in action.
527 @node Use Cases
528 @section Use Cases for the GNU Build System
529 @cindex GNU Build System, use cases
530 @cindex GNU Build System, features
531 @cindex Features of the GNU Build System
532 @cindex Use Cases for the GNU Build System
533 @cindex @file{amhello-1.0.tar.gz}, location
534 @cindex @file{amhello-1.0.tar.gz}, use cases
536 In this section we explore several use cases for the GNU Build System.
537 You can replay all these examples on the @file{amhello-1.0.tar.gz}
538 package distributed with Automake.  If Automake is installed on your
539 system, you should find a copy of this file in
540 @file{@var{prefix}/share/doc/automake/amhello-1.0.tar.gz}, where
541 @var{prefix} is the installation prefix specified during configuration
542 (@var{prefix} defaults to @file{/usr/local}, however if Automake was
543 installed by some GNU/Linux distribution it most likely has been set
544 to @file{/usr}).  If you do not have a copy of Automake installed,
545 you can find a copy of this file inside the @file{doc/} directory of
546 the Automake package.
548 Some of the following use cases present features that are in fact
549 extensions to the GNU Build System.  Read: they are not specified by
550 the GNU Coding Standards, but they are nonetheless part of the build
551 system created by the Autotools.  To keep things simple, we do not
552 point out the difference.  Our objective is to show you many of the
553 features that the build system created by the Autotools will offer to
554 you.
556 @menu
557 * Basic Installation::          Common installation procedure
558 * Standard Targets::            A list of standard Makefile targets
559 * Standard Directory Variables::  A list of standard directory variables
560 * Standard Configuration Variables::  Using configuration variables
561 * config.site::                 Using a config.site file
562 * VPATH Builds::                Parallel build trees
563 * Two-Part Install::            Installing data and programs separately
564 * Cross-Compilation::           Building for other architectures
565 * Renaming::                    Renaming programs at install time
566 * DESTDIR::                     Building binary packages with DESTDIR
567 * Preparing Distributions::     Rolling out tarballs
568 * Dependency Tracking::         Automatic dependency tracking
569 * Nested Packages::             The GNU Build Systems can be nested
570 @end menu
572 @node Basic Installation
573 @subsection Basic Installation
574 @cindex Configuration, basics
575 @cindex Installation, basics
576 @cindex GNU Build System, basics
578 The most common installation procedure looks as follows.
580 @example
581 ~ % @kbd{tar zxf amhello-1.0.tar.gz}
582 ~ % @kbd{cd amhello-1.0}
583 ~/amhello-1.0 % @kbd{./configure}
584 @dots{}
585 config.status: creating Makefile
586 config.status: creating src/Makefile
587 @dots{}
588 ~/amhello-1.0 % @kbd{make}
589 @dots{}
590 ~/amhello-1.0 % @kbd{make check}
591 @dots{}
592 ~/amhello-1.0 % @kbd{su}
593 Password:
594 /home/adl/amhello-1.0 # @kbd{make install}
595 @dots{}
596 /home/adl/amhello-1.0 # @kbd{exit}
597 ~/amhello-1.0 % @kbd{make installcheck}
598 @dots{}
599 @end example
601 @cindex Unpacking
603 The user first unpacks the package.  Here, and in the following
604 examples, we will use the non-portable @code{tar zxf} command for
605 simplicity.  On a system without GNU @command{tar} installed, this
606 command should read @code{gunzip -c amhello-1.0.tar.gz | tar xf -}.
608 The user then enters the newly created directory to run the
609 @file{configure} script.  This script probes the system for various
610 features, and finally creates the @file{Makefile}s.  In this toy
611 example there are only two @file{Makefile}s, but in real-world projects,
612 there may be many more, usually one @file{Makefile} per directory.
614 It is now possible to run @code{make}.  This will construct all the
615 programs, libraries, and scripts that need to be constructed for the
616 package.  In our example, this compiles the @file{hello} program.
617 All files are constructed in place, in the source tree; we will see
618 later how this can be changed.
620 @code{make check} causes the package's tests to be run.  This step is
621 not mandatory, but it is often good to make sure the programs that
622 have been built behave as they should, before you decide to install
623 them.  Our example does not contain any tests, so running @code{make
624 check} is a no-op.
626 @cindex su, before @code{make install}
627 After everything has been built, and maybe tested, it is time to
628 install it on the system.  That means copying the programs,
629 libraries, header files, scripts, and other data files from the
630 source directory to their final destination on the system.  The
631 command @code{make install} will do that.  However, by default
632 everything will be installed in subdirectories of @file{/usr/local}:
633 binaries will go into @file{/usr/local/bin}, libraries will end up in
634 @file{/usr/local/lib}, etc.  This destination is usually not writable
635 by any user, so we assume that we have to become root before we can
636 run @code{make install}.  In our example, running @code{make install}
637 will copy the program @file{hello} into @file{/usr/local/bin}
638 and @file{README} into @file{/usr/local/share/doc/amhello}.
640 A last and optional step is to run @code{make installcheck}.  This
641 command may run tests on the installed files.  @code{make check} tests
642 the files in the source tree, while @code{make installcheck} tests
643 their installed copies.  The tests run by the latter can be different
644 from those run by the former.  For instance, there are tests that
645 cannot be run in the source tree.  Conversely, some packages are set
646 up so that @code{make installcheck} will run the very same tests as
647 @code{make check}, only on different files (non-installed
648 vs.@: installed).  It can make a difference, for instance when the
649 source tree's layout is different from that of the installation.
650 Furthermore it may help to diagnose an incomplete installation.
652 Presently most packages do not have any @code{installcheck} tests
653 because the existence of @code{installcheck} is little known, and its
654 usefulness is neglected.  Our little toy package is no better: @code{make
655 installcheck} does nothing.
657 @node Standard Targets
658 @subsection Standard @file{Makefile} Targets
660 So far we have come across four ways to run @command{make} in the GNU
661 Build System: @code{make}, @code{make check}, @code{make install}, and
662 @code{make installcheck}.  The words @code{check}, @code{install}, and
663 @code{installcheck}, passed as arguments to @command{make}, are called
664 @dfn{targets}.  @code{make} is a shorthand for @code{make all},
665 @code{all} being the default target in the GNU Build System.
667 Here is a list of the most useful targets that the GNU Coding Standards
668 specify.
670 @table @code
671 @item make all
672 @trindex all
673 Build programs, libraries, documentation, etc.@: (same as @code{make}).
674 @item make install
675 @trindex install
676 Install what needs to be installed, copying the files from the
677 package's tree to system-wide directories.
678 @item make install-strip
679 @trindex install-strip
680 Same as @code{make install}, then strip debugging symbols.  Some
681 users like to trade space for useful bug reports@enddots{}
682 @item make uninstall
683 @trindex uninstall
684 The opposite of @code{make install}: erase the installed files.
685 (This needs to be run from the same build tree that was installed.)
686 @item make clean
687 @trindex clean
688 Erase from the build tree the files built by @code{make all}.
689 @item make distclean
690 @trindex distclean
691 Additionally erase anything @code{./configure} created.
692 @item make check
693 @trindex check
694 Run the test suite, if any.
695 @item make installcheck
696 @trindex installcheck
697 Check the installed programs or libraries, if supported.
698 @item make dist
699 @trindex dist
700 Recreate @file{@var{package}-@var{version}.tar.gz} from all the source
701 files.
702 @end table
704 @node Standard Directory Variables
705 @subsection Standard Directory Variables
706 @cindex directory variables
708 The GNU Coding Standards also specify a hierarchy of variables to
709 denote installation directories.  Some of these are:
711 @multitable {Directory variable} {@code{$@{datarootdir@}/doc/$@{PACKAGE@}}}
712 @headitem Directory variable    @tab Default value
713 @item @code{prefix}              @tab @code{/usr/local}
714 @item @w{@ @ @code{exec_prefix}} @tab @code{$@{prefix@}}
715 @item @w{@ @ @ @ @code{bindir}}  @tab @code{$@{exec_prefix@}/bin}
716 @item @w{@ @ @ @ @code{libdir}}  @tab @code{$@{exec_prefix@}/lib}
717 @item @w{@ @ @ @ @dots{}}
718 @item @w{@ @ @code{includedir}}  @tab @code{$@{prefix@}/include}
719 @item @w{@ @ @code{datarootdir}} @tab @code{$@{prefix@}/share}
720 @item @w{@ @ @ @ @code{datadir}} @tab @code{$@{datarootdir@}}
721 @item @w{@ @ @ @ @code{mandir}}  @tab @code{$@{datarootdir@}/man}
722 @item @w{@ @ @ @ @code{infodir}} @tab @code{$@{datarootdir@}/info}
723 @item @w{@ @ @ @ @code{docdir}}  @tab @code{$@{datarootdir@}/doc/$@{PACKAGE@}}
724 @item @w{@ @ @dots{}}
725 @end multitable
727 @c We should provide a complete table somewhere, but not here.  The
728 @c complete list of directory variables it too confusing as-is.  It
729 @c requires some explanations that are too complicated for this
730 @c introduction.  Besides listing directories like localstatedir
731 @c would make the explanations in ``Two-Part Install'' harder.
733 Each of these directories has a role which is often obvious from its
734 name.  In a package, any installable file will be installed in one of
735 these directories.  For instance in @code{amhello-1.0}, the program
736 @file{hello} is to be installed in @var{bindir}, the directory for
737 binaries.  The default value for this directory is
738 @file{/usr/local/bin}, but the user can supply a different value when
739 calling @command{configure}.  Also the file @file{README} will be
740 installed into @var{docdir}, which defaults to
741 @file{/usr/local/share/doc/amhello}.
743 @opindex --prefix
745 As a user, if you wish to install a package on your own account, you
746 could proceed as follows:
748 @example
749 ~/amhello-1.0 % @kbd{./configure --prefix ~/usr}
750 @dots{}
751 ~/amhello-1.0 % @kbd{make}
752 @dots{}
753 ~/amhello-1.0 % @kbd{make install}
754 @dots{}
755 @end example
757 This would install @file{~/usr/bin/hello} and
758 @file{~/usr/share/doc/amhello/README}.
760 The list of all such directory options is shown by
761 @code{./configure --help}.
763 @node Standard Configuration Variables
764 @subsection Standard Configuration Variables
765 @cindex configuration variables, overriding
767 The GNU Coding Standards also define a set of standard configuration
768 variables used during the build.  Here are some:
770 @table @asis
771 @item @code{CC}
772 C compiler command
773 @item @code{CFLAGS}
774 C compiler flags
775 @item @code{CXX}
776 C++ compiler command
777 @item @code{CXXFLAGS}
778 C++ compiler flags
779 @item @code{LDFLAGS}
780 linker flags
781 @item @code{CPPFLAGS}
782 C/C++ preprocessor flags
783 @item @dots{}
784 @end table
786 @command{configure} usually does a good job at setting appropriate
787 values for these variables, but there are cases where you may want to
788 override them.  For instance you may have several versions of a
789 compiler installed and would like to use another one, you may have
790 header files installed outside the default search path of the
791 compiler, or even libraries out of the way of the linker.
793 Here is how one would call @command{configure} to force it to use
794 @command{gcc-3} as C compiler, use header files from
795 @file{~/usr/include} when compiling, and libraries from
796 @file{~/usr/lib} when linking.
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 Again, a full list of these variables appears in the output of
804 @code{./configure --help}.
806 @node config.site
807 @subsection Overriding Default Configuration Setting with @file{config.site}
808 @cindex @file{config.site} example
810 When installing several packages using the same setup, it can be
811 convenient to create a file to capture common settings.
812 If a file named @file{@var{prefix}/share/config.site} exists,
813 @command{configure} will source it at the beginning of its execution.
815 Recall the command from the previous section:
817 @example
818 ~/amhello-1.0 % @kbd{./configure --prefix ~/usr CC=gcc-3 \
819 CPPFLAGS=-I$HOME/usr/include LDFLAGS=-L$HOME/usr/lib}
820 @end example
822 Assuming we are installing many package in @file{~/usr}, and will
823 always want to use these definitions of @code{CC}, @code{CPPFLAGS}, and
824 @code{LDFLAGS}, we can automate this by creating the following
825 @file{~/usr/share/config.site} file:
827 @example
828 test -z "$CC" && CC=gcc-3
829 test -z "$CPPFLAGS" && CPPFLAGS=-I$HOME/usr/include
830 test -z "$LDFLAGS" && LDFLAGS=-L$HOME/usr/lib
831 @end example
833 Now, any time a @file{configure} script is using the @file{~/usr}
834 prefix, it will execute the above @file{config.site} and define
835 these three variables.
837 @example
838 ~/amhello-1.0 % @kbd{./configure --prefix ~/usr}
839 configure: loading site script /home/adl/usr/share/config.site
840 @dots{}
841 @end example
843 @xref{Site Defaults, , Setting Site Defaults, autoconf, The Autoconf
844 Manual}, for more information about this feature.
847 @node VPATH Builds
848 @subsection Parallel Build Trees (a.k.a.@: VPATH Builds)
849 @cindex Parallel build trees
850 @cindex VPATH builds
851 @cindex source tree and build tree
852 @cindex build tree and source tree
853 @cindex trees, source vs.@: build
855 The GNU Build System distinguishes two trees: the source tree, and
856 the build tree.
858 The source tree is rooted in the directory containing
859 @file{configure}.  It contains all the sources files (those that are
860 distributed), and may be arranged using several subdirectories.
862 The build tree is rooted in the directory in which @file{configure}
863 was run, and is populated with all object files, programs, libraries,
864 and other derived files built from the sources (and hence not
865 distributed).  The build tree usually has the same subdirectory layout
866 as the source tree; its subdirectories are created automatically by
867 the build system.
869 If @file{configure} is executed in its own directory, the source and
870 build trees are combined: derived files are constructed in the same
871 directories as their sources.  This was the case in our first
872 installation example (@pxref{Basic Installation}).
874 A common request from users is that they want to confine all derived
875 files to a single directory, to keep their source directories
876 uncluttered.  Here is how we could run @file{configure} to build
877 everything in a subdirectory called @file{build/}.
879 @example
880 ~ % @kbd{tar zxf ~/amhello-1.0.tar.gz}
881 ~ % @kbd{cd amhello-1.0}
882 ~/amhello-1.0 % @kbd{mkdir build && cd build}
883 ~/amhello-1.0/build % @kbd{../configure}
884 @dots{}
885 ~/amhello-1.0/build % @kbd{make}
886 @dots{}
887 @end example
889 These setups, where source and build trees are different, are often
890 called @dfn{parallel builds} or @dfn{VPATH builds}.  The expression
891 @emph{parallel build} is misleading: the word @emph{parallel} is a
892 reference to the way the build tree shadows the source tree, it is not
893 about some concurrency in the way build commands are run.  For this
894 reason we refer to such setups using the name @emph{VPATH builds} in
895 the following.  @emph{VPATH} is the name of the @command{make} feature
896 used by the @file{Makefile}s to allow these builds (@pxref{General
897 Search, , @code{VPATH}: Search Path for All Prerequisites, make, The
898 GNU Make Manual}).
900 @cindex multiple configurations, example
901 @cindex debug build, example
902 @cindex optimized build, example
904 VPATH builds have other interesting uses.  One is to build the same
905 sources with multiple configurations.  For instance:
907 @c Keep in sync with amhello-cflags.test.
908 @example
909 ~ % @kbd{tar zxf ~/amhello-1.0.tar.gz}
910 ~ % @kbd{cd amhello-1.0}
911 ~/amhello-1.0 % @kbd{mkdir debug optim && cd debug}
912 ~/amhello-1.0/debug % @kbd{../configure CFLAGS='-g -O0'}
913 @dots{}
914 ~/amhello-1.0/debug % @kbd{make}
915 @dots{}
916 ~/amhello-1.0/debug % cd ../optim
917 ~/amhello-1.0/optim % @kbd{../configure CFLAGS='-O3 -fomit-frame-pointer'}
918 @dots{}
919 ~/amhello-1.0/optim % @kbd{make}
920 @dots{}
921 @end example
923 With network file systems, a similar approach can be used to build the
924 same sources on different machines.  For instance, suppose that the
925 sources are installed on a directory shared by two hosts: @code{HOST1}
926 and @code{HOST2}, which may be different platforms.
928 @example
929 ~ % @kbd{cd /nfs/src}
930 /nfs/src % @kbd{tar zxf ~/amhello-1.0.tar.gz}
931 @end example
933 On the first host, you could create a local build directory:
934 @example
935 [HOST1] ~ % @kbd{mkdir /tmp/amh && cd /tmp/amh}
936 [HOST1] /tmp/amh % @kbd{/nfs/src/amhello-1.0/configure}
938 [HOST1] /tmp/amh % @kbd{make && sudo make install}
940 @end example
942 @noindent
943 (Here we assume that the installer has configured @command{sudo} so it
944 can execute @code{make install} with root privileges; it is more convenient
945 than using @command{su} like in @ref{Basic Installation}).
947 On the second host, you would do exactly the same, possibly at
948 the same time:
949 @example
950 [HOST2] ~ % @kbd{mkdir /tmp/amh && cd /tmp/amh}
951 [HOST2] /tmp/amh % @kbd{/nfs/src/amhello-1.0/configure}
953 [HOST2] /tmp/amh % @kbd{make && sudo make install}
955 @end example
957 @cindex read-only source tree
958 @cindex source tree, read-only
960 In this scenario, nothing forbids the @file{/nfs/src/amhello-1.0}
961 directory from being read-only.  In fact VPATH builds are also a means
962 of building packages from a read-only medium such as a CD-ROM.  (The
963 FSF used to sell CD-ROM with unpacked source code, before the GNU
964 project grew so big.)
966 @node Two-Part Install
967 @subsection Two-Part Installation
969 In our last example (@pxref{VPATH Builds}), a source tree was shared
970 by two hosts, but compilation and installation were done separately on
971 each host.
973 The GNU Build System also supports networked setups where part of the
974 installed files should be shared amongst multiple hosts.  It does so
975 by distinguishing architecture-dependent files from
976 architecture-independent files, and providing two @file{Makefile}
977 targets to install each of these classes of files.
979 @trindex install-exec
980 @trindex install-data
982 These targets are @code{install-exec} for architecture-dependent files
983 and @code{install-data} for architecture-independent files.
984 The command we used up to now, @code{make install}, can be thought of
985 as a shorthand for @code{make install-exec install-data}.
987 From the GNU Build System point of view, the distinction between
988 architecture-dependent files and architecture-independent files is
989 based exclusively on the directory variable used to specify their
990 installation destination.  In the list of directory variables we
991 provided earlier (@pxref{Standard Directory Variables}), all the
992 variables based on @var{exec-prefix} designate architecture-dependent
993 directories whose files will be installed by @code{make install-exec}.
994 The others designate architecture-independent directories and will
995 serve files installed by @code{make install-data}.  @xref{The Two Parts
996 of Install}, for more details.
998 Here is how we could revisit our two-host installation example,
999 assuming that (1) we want to install the package directly in
1000 @file{/usr}, and (2) the directory @file{/usr/share} is shared by the
1001 two hosts.
1003 On the first host we would run
1004 @example
1005 [HOST1] ~ % @kbd{mkdir /tmp/amh && cd /tmp/amh}
1006 [HOST1] /tmp/amh % @kbd{/nfs/src/amhello-1.0/configure --prefix /usr}
1008 [HOST1] /tmp/amh % @kbd{make && sudo make install}
1010 @end example
1012 On the second host, however, we need only install the
1013 architecture-specific files.
1014 @example
1015 [HOST2] ~ % @kbd{mkdir /tmp/amh && cd /tmp/amh}
1016 [HOST2] /tmp/amh % @kbd{/nfs/src/amhello-1.0/configure --prefix /usr}
1018 [HOST2] /tmp/amh % @kbd{make && sudo make install-exec}
1020 @end example
1022 In packages that have installation checks, it would make sense to run
1023 @code{make installcheck} (@pxref{Basic Installation}) to verify that
1024 the package works correctly despite the apparent partial installation.
1026 @node Cross-Compilation
1027 @subsection Cross-Compilation
1028 @cindex cross-compilation
1030 To @dfn{cross-compile} is to build on one platform a binary that will
1031 run on another platform.  When speaking of cross-compilation, it is
1032 important to distinguish between the @dfn{build platform} on which
1033 the compilation is performed, and the @dfn{host platform} on which the
1034 resulting executable is expected to run.  The following
1035 @command{configure} options are used to specify each of them:
1037 @table @option
1038 @item --build=@var{build}
1039 @opindex --build=@var{build}
1040 The system on which the package is built.
1041 @item --host=@var{host}
1042 @opindex --host=@var{host}
1043 The system where built programs and libraries will run.
1044 @end table
1046 When the @option{--host} is used, @command{configure} will search for
1047 the cross-compiling suite for this platform.  Cross-compilation tools
1048 commonly have their target architecture as prefix of their name.  For
1049 instance my cross-compiler for MinGW32 has its binaries called
1050 @code{i586-mingw32msvc-gcc}, @code{i586-mingw32msvc-ld},
1051 @code{i586-mingw32msvc-as}, etc.
1053 @cindex MinGW cross-compilation example
1054 @cindex cross-compilation example
1056 Here is how we could build @code{amhello-1.0} for
1057 @code{i586-mingw32msvc} on a GNU/Linux PC.
1059 @c Keep in sync with amhello-cross-compile.test.
1060 @smallexample
1061 ~/amhello-1.0 % @kbd{./configure --build i686-pc-linux-gnu --host i586-mingw32msvc}
1062 checking for a BSD-compatible install... /usr/bin/install -c
1063 checking whether build environment is sane... yes
1064 checking for gawk... gawk
1065 checking whether make sets $(MAKE)... yes
1066 checking for i586-mingw32msvc-strip... i586-mingw32msvc-strip
1067 checking for i586-mingw32msvc-gcc... i586-mingw32msvc-gcc
1068 checking for C compiler default output file name... a.exe
1069 checking whether the C compiler works... yes
1070 checking whether we are cross compiling... yes
1071 checking for suffix of executables... .exe
1072 checking for suffix of object files... o
1073 checking whether we are using the GNU C compiler... yes
1074 checking whether i586-mingw32msvc-gcc accepts -g... yes
1075 checking for i586-mingw32msvc-gcc option to accept ANSI C...
1076 @dots{}
1077 ~/amhello-1.0 % @kbd{make}
1078 @dots{}
1079 ~/amhello-1.0 % @kbd{cd src; file hello.exe}
1080 hello.exe: MS Windows PE 32-bit Intel 80386 console executable not relocatable
1081 @end smallexample
1083 The @option{--host} and @option{--build} options are usually all we
1084 need for cross-compiling.  The only exception is if the package being
1085 built is itself a cross-compiler: we need a third option to specify
1086 its target architecture.
1088 @table @option
1089 @item --target=@var{target}
1090 @opindex --target=@var{target}
1091 When building compiler tools: the system for which the tools will
1092 create output.
1093 @end table
1095 For instance when installing GCC, the GNU Compiler Collection, we can
1096 use @option{--target=@/@var{target}} to specify that we want to build
1097 GCC as a cross-compiler for @var{target}.  Mixing @option{--build} and
1098 @option{--target}, we can actually cross-compile a cross-compiler;
1099 such a three-way cross-compilation is known as a @dfn{Canadian cross}.
1101 @xref{Specifying Names, , Specifying the System Type, autoconf, The
1102 Autoconf Manual}, for more information about these @command{configure}
1103 options.
1105 @node Renaming
1106 @subsection Renaming Programs at Install Time
1107 @cindex Renaming programs
1108 @cindex Transforming program names
1109 @cindex Programs, renaming during installation
1111 The GNU Build System provides means to automatically rename
1112 executables and manpages before they are installed (@pxref{Man Pages}).
1113 This is especially convenient
1114 when installing a GNU package on a system that already has a
1115 proprietary implementation you do not want to overwrite.  For instance,
1116 you may want to install GNU @command{tar} as @command{gtar} so you can
1117 distinguish it from your vendor's @command{tar}.
1119 This can be done using one of these three @command{configure} options.
1121 @table @option
1122 @item --program-prefix=@var{prefix}
1123 @opindex --program-prefix=@var{prefix}
1124 Prepend @var{prefix} to installed program names.
1125 @item --program-suffix=@var{suffix}
1126 @opindex --program-suffix=@var{suffix}
1127 Append @var{suffix} to installed program names.
1128 @item --program-transform-name=@var{program}
1129 @opindex --program-transform-name=@var{program}
1130 Run @code{sed @var{program}} on installed program names.
1131 @end table
1133 The following commands would install @file{hello}
1134 as @file{/usr/local/bin/test-hello}, for instance.
1136 @example
1137 ~/amhello-1.0 % @kbd{./configure --program-prefix test-}
1138 @dots{}
1139 ~/amhello-1.0 % @kbd{make}
1140 @dots{}
1141 ~/amhello-1.0 % @kbd{sudo make install}
1142 @dots{}
1143 @end example
1145 @node DESTDIR
1146 @subsection Building Binary Packages Using DESTDIR
1147 @vindex DESTDIR
1149 The GNU Build System's @code{make install} and @code{make uninstall}
1150 interface does not exactly fit the needs of a system administrator
1151 who has to deploy and upgrade packages on lots of hosts.  In other
1152 words, the GNU Build System does not replace a package manager.
1154 Such package managers usually need to know which files have been
1155 installed by a package, so a mere @code{make install} is
1156 inappropriate.
1158 @cindex Staged installation
1160 The @code{DESTDIR} variable can be used to perform a staged
1161 installation.  The package should be configured as if it was going to
1162 be installed in its final location (e.g., @code{--prefix /usr}), but
1163 when running @code{make install}, the @code{DESTDIR} should be set to
1164 the absolute name of a directory into which the installation will be
1165 diverted.  From this directory it is easy to review which files are
1166 being installed where, and finally copy them to their final location
1167 by some means.
1169 @cindex Binary package
1171 For instance here is how we could create a binary package containing a
1172 snapshot of all the files to be installed.
1174 @c Keep in sync with amhello-binpkg.test.
1175 @example
1176 ~/amhello-1.0 % @kbd{./configure --prefix /usr}
1177 @dots{}
1178 ~/amhello-1.0 % @kbd{make}
1179 @dots{}
1180 ~/amhello-1.0 % @kbd{make DESTDIR=$HOME/inst install}
1181 @dots{}
1182 ~/amhello-1.0 % @kbd{cd ~/inst}
1183 ~/inst % @kbd{find . -type f -print > ../files.lst}
1184 ~/inst % @kbd{tar zcvf ~/amhello-1.0-i686.tar.gz `cat ../files.lst`}
1185 ./usr/bin/hello
1186 ./usr/share/doc/amhello/README
1187 @end example
1189 After this example, @code{amhello-1.0-i686.tar.gz} is ready to be
1190 uncompressed in @file{/} on many hosts.  (Using @code{`cat ../files.lst`}
1191 instead of @samp{.} as argument for @command{tar} avoids entries for
1192 each subdirectory in the archive: we would not like @command{tar} to
1193 restore the modification time of @file{/}, @file{/usr/}, etc.)
1195 Note that when building packages for several architectures, it might
1196 be convenient to use @code{make install-data} and @code{make
1197 install-exec} (@pxref{Two-Part Install}) to gather
1198 architecture-independent files in a single package.
1200 @xref{Install}, for more information.
1202 @c We should document PRE_INSTALL/POST_INSTALL/NORMAL_INSTALL and their
1203 @c UNINSTALL counterparts.
1205 @node Preparing Distributions
1206 @subsection Preparing Distributions
1207 @cindex Preparing distributions
1208 @cindex Packages, preparation
1209 @cindex Distributions, preparation
1211 We have already mentioned @code{make dist}.  This target collects all
1212 your source files and the necessary parts of the build system to
1213 create a tarball named @file{@var{package}-@var{version}.tar.gz}.
1215 @cindex @code{distcheck} better than @code{dist}
1217 Another, more useful command is @code{make distcheck}.  The
1218 @code{distcheck} target constructs
1219 @file{@var{package}-@var{version}.tar.gz} just as well as @code{dist},
1220 but it additionally ensures most of the use cases presented so far
1221 work:
1223 @itemize @bullet
1224 @item
1225 It attempts a full compilation of the package (@pxref{Basic
1226 Installation}), unpacking the newly constructed tarball, running
1227 @code{make}, @code{make check}, @code{make install}, as well as
1228 @code{make installcheck}, and even @code{make dist},
1229 @item
1230 it tests VPATH builds with read-only source tree (@pxref{VPATH Builds}),
1231 @item
1232 it makes sure @code{make clean}, @code{make distclean}, and @code{make
1233 uninstall} do not omit any file (@pxref{Standard Targets}),
1234 @item
1235 and it checks that @code{DESTDIR} installations work (@pxref{DESTDIR}).
1236 @end itemize
1238 All of these actions are performed in a temporary subdirectory, so
1239 that no root privileges are required.
1241 Releasing a package that fails @code{make distcheck} means that one of
1242 the scenarios we presented will not work and some users will be
1243 disappointed.  Therefore it is a good practice to release a package
1244 only after a successful @code{make distcheck}.  This of course does
1245 not imply that the package will be flawless, but at least it will
1246 prevent some of the embarrassing errors you may find in packages
1247 released by people who have never heard about @code{distcheck} (like
1248 @code{DESTDIR} not working because of a typo, or a distributed file
1249 being erased by @code{make clean}, or even @code{VPATH} builds not
1250 working).
1252 @xref{Creating amhello}, to recreate @file{amhello-1.0.tar.gz} using
1253 @code{make distcheck}.  @xref{Checking the Distribution}, for more
1254 information about @code{distcheck}.
1256 @node Dependency Tracking
1257 @subsection Automatic Dependency Tracking
1258 @cindex Dependency tracking
1260 Dependency tracking is performed as a side-effect of compilation.
1261 Each time the build system compiles a source file, it computes its
1262 list of dependencies (in C these are the header files included by the
1263 source being compiled).  Later, any time @command{make} is run and a
1264 dependency appears to have changed, the dependent files will be
1265 rebuilt.
1267 Automake generates code for automatic dependency tracking by default,
1268 unless the developer chooses to override it; for more information,
1269 @pxref{Dependencies}.
1271 When @command{configure} is executed, you can see it probing each
1272 compiler for the dependency mechanism it supports (several mechanisms
1273 can be used):
1275 @example
1276 ~/amhello-1.0 % @kbd{./configure --prefix /usr}
1277 @dots{}
1278 checking dependency style of gcc... gcc3
1279 @dots{}
1280 @end example
1282 Because dependencies are only computed as a side-effect of the
1283 compilation, no dependency information exists the first time a package
1284 is built.  This is OK because all the files need to be built anyway:
1285 @code{make} does not have to decide which files need to be rebuilt.
1286 In fact, dependency tracking is completely useless for one-time builds
1287 and there is a @command{configure} option to disable this:
1289 @table @option
1290 @item --disable-dependency-tracking
1291 @opindex --disable-dependency-tracking
1292 Speed up one-time builds.
1293 @end table
1295 Some compilers do not offer any practical way to derive the list of
1296 dependencies as a side-effect of the compilation, requiring a separate
1297 run (maybe of another tool) to compute these dependencies.  The
1298 performance penalty implied by these methods is important enough to
1299 disable them by default.  The option @option{--enable-dependency-tracking}
1300 must be passed to @command{configure} to activate them.
1302 @table @option
1303 @item --enable-dependency-tracking
1304 @opindex --enable-dependency-tracking
1305 Do not reject slow dependency extractors.
1306 @end table
1308 @xref{Dependency Tracking Evolution}, for some discussion about the
1309 different dependency tracking schemes used by Automake over the years.
1311 @node Nested Packages
1312 @subsection Nested Packages
1313 @cindex Nested packages
1314 @cindex Packages, nested
1315 @cindex Subpackages
1317 Although nesting packages isn't something we would recommend to
1318 someone who is discovering the Autotools, it is a nice feature worthy
1319 of mention in this small advertising tour.
1321 Autoconfiscated packages (that means packages whose build system have
1322 been created by Autoconf and friends) can be nested to arbitrary
1323 depth.
1325 A typical setup is that package A will distribute one of the libraries
1326 it needs in a subdirectory.  This library B is a complete package with
1327 its own GNU Build System.  The @command{configure} script of A will
1328 run the @command{configure} script of B as part of its execution,
1329 building and installing A will also build and install B.  Generating a
1330 distribution for A will also include B.
1332 It is possible to gather several packages like this.  GCC is a heavy
1333 user of this feature.  This gives installers a single package to
1334 configure, build and install, while it allows developers to work on
1335 subpackages independently.
1337 When configuring nested packages, the @command{configure} options
1338 given to the top-level @command{configure} are passed recursively to
1339 nested @command{configure}s.  A package that does not understand an
1340 option will ignore it, assuming it is meaningful to some other
1341 package.
1343 @opindex --help=recursive
1345 The command @code{configure --help=recursive} can be used to display
1346 the options supported by all the included packages.
1348 @xref{Subpackages}, for an example setup.
1350 @node Why Autotools
1351 @section How Autotools Help
1352 @cindex Autotools, purpose
1354 There are several reasons why you may not want to implement the GNU
1355 Build System yourself (read: write a @file{configure} script and
1356 @file{Makefile}s yourself).
1358 @itemize @bullet
1359 @item
1360 As we have seen, the GNU Build System has a lot of
1361 features (@pxref{Use Cases}).
1362 Some users may expect features you have not implemented because
1363 you did not need them.
1364 @item
1365 Implementing these features portably is difficult and exhausting.
1366 Think of writing portable shell scripts, and portable
1367 @file{Makefile}s, for systems you may not have handy.  @xref{Portable
1368 Shell, , Portable Shell Programming, autoconf, The Autoconf Manual}, to
1369 convince yourself.
1370 @item
1371 You will have to upgrade your setup to follow changes to the GNU
1372 Coding Standards.
1373 @end itemize
1375 The GNU Autotools take all this burden off your back and provide:
1377 @itemize @bullet
1378 @item
1379 Tools to create a portable, complete, and self-contained GNU Build
1380 System, from simple instructions.
1381 @emph{Self-contained} meaning the resulting build system does not
1382 require the GNU Autotools.
1383 @item
1384 A central place where fixes and improvements are made:
1385 a bug-fix for a portability issue will benefit every package.
1386 @end itemize
1388 Yet there also exist reasons why you may want NOT to use the
1389 Autotools@enddots{} For instance you may be already using (or used to)
1390 another incompatible build system.  Autotools will only be useful if
1391 you do accept the concepts of the GNU Build System.  People who have their
1392 own idea of how a build system should work will feel frustrated by the
1393 Autotools.
1395 @node Hello World
1396 @section A Small Hello World
1397 @cindex Example Hello World
1398 @cindex Hello World example
1399 @cindex @file{amhello-1.0.tar.gz}, creation
1401 In this section we recreate the @file{amhello-1.0} package from
1402 scratch.  The first subsection shows how to call the Autotools to
1403 instantiate the GNU Build System, while the second explains the
1404 meaning of the @file{configure.ac} and @file{Makefile.am} files read
1405 by the Autotools.
1407 @anchor{amhello Explained}
1408 @menu
1409 * Creating amhello::            Create @file{amhello-1.0.tar.gz} from scratch
1410 * amhello's configure.ac Setup Explained::
1411 * amhello's Makefile.am Setup Explained::
1412 @end menu
1414 @node Creating amhello
1415 @subsection Creating @file{amhello-1.0.tar.gz}
1417 Here is how we can recreate @file{amhello-1.0.tar.gz} from scratch.
1418 The package is simple enough so that we will only need to write 5
1419 files.  (You may copy them from the final @file{amhello-1.0.tar.gz}
1420 that is distributed with Automake if you do not want to write them.)
1422 Create the following files in an empty directory.
1424 @itemize @bullet
1426 @item
1427 @file{src/main.c} is the source file for the @file{hello} program.  We
1428 store it in the @file{src/} subdirectory, because later, when the package
1429 evolves, it will ease the addition of a @file{man/} directory for man
1430 pages, a @file{data/} directory for data files, etc.
1431 @example
1432 ~/amhello % @kbd{cat src/main.c}
1433 #include <config.h>
1434 #include <stdio.h>
1437 main (void)
1439   puts ("Hello World!");
1440   puts ("This is " PACKAGE_STRING ".");
1441   return 0;
1443 @end example
1445 @item
1446 @file{README} contains some very limited documentation for our little
1447 package.
1448 @example
1449 ~/amhello % @kbd{cat README}
1450 This is a demonstration package for GNU Automake.
1451 Type `info Automake' to read the Automake manual.
1452 @end example
1454 @item
1455 @file{Makefile.am} and @file{src/Makefile.am} contain Automake
1456 instructions for these two directories.
1458 @example
1459 ~/amhello % @kbd{cat src/Makefile.am}
1460 bin_PROGRAMS = hello
1461 hello_SOURCES = main.c
1462 ~/amhello % @kbd{cat Makefile.am}
1463 SUBDIRS = src
1464 dist_doc_DATA = README
1465 @end example
1467 @item
1468 Finally, @file{configure.ac} contains Autoconf instructions to
1469 create the @command{configure} script.
1471 @example
1472 ~/amhello % @kbd{cat configure.ac}
1473 AC_INIT([amhello], [1.0], [@value{PACKAGE_BUGREPORT}])
1474 AM_INIT_AUTOMAKE([-Wall -Werror foreign])
1475 AC_PROG_CC
1476 AC_CONFIG_HEADERS([config.h])
1477 AC_CONFIG_FILES([
1478  Makefile
1479  src/Makefile
1481 AC_OUTPUT
1482 @end example
1483 @end itemize
1485 @cindex @command{autoreconf}, example
1487 Once you have these five files, it is time to run the Autotools to
1488 instantiate the build system.  Do this using the @command{autoreconf}
1489 command as follows:
1491 @example
1492 ~/amhello % @kbd{autoreconf --install}
1493 configure.ac: installing `./install-sh'
1494 configure.ac: installing `./missing'
1495 src/Makefile.am: installing `./depcomp'
1496 @end example
1498 At this point the build system is complete.
1500 In addition to the three scripts mentioned in its output, you can see
1501 that @command{autoreconf} created four other files: @file{configure},
1502 @file{config.h.in}, @file{Makefile.in}, and @file{src/Makefile.in}.
1503 The latter three files are templates that will be adapted to the
1504 system by @command{configure} under the names @file{config.h},
1505 @file{Makefile}, and @file{src/Makefile}.  Let's do this:
1507 @example
1508 ~/amhello % @kbd{./configure}
1509 checking for a BSD-compatible install... /usr/bin/install -c
1510 checking whether build environment is sane... yes
1511 checking for gawk... no
1512 checking for mawk... mawk
1513 checking whether make sets $(MAKE)... yes
1514 checking for gcc... gcc
1515 checking for C compiler default output file name... a.out
1516 checking whether the C compiler works... yes
1517 checking whether we are cross compiling... no
1518 checking for suffix of executables...
1519 checking for suffix of object files... o
1520 checking whether we are using the GNU C compiler... yes
1521 checking whether gcc accepts -g... yes
1522 checking for gcc option to accept ISO C89... none needed
1523 checking for style of include used by make... GNU
1524 checking dependency style of gcc... gcc3
1525 configure: creating ./config.status
1526 config.status: creating Makefile
1527 config.status: creating src/Makefile
1528 config.status: creating config.h
1529 config.status: executing depfiles commands
1530 @end example
1532 @trindex distcheck
1533 @cindex @code{distcheck} example
1535 You can see @file{Makefile}, @file{src/Makefile}, and @file{config.h}
1536 being created at the end after @command{configure} has probed the
1537 system.  It is now possible to run all the targets we wish
1538 (@pxref{Standard Targets}).  For instance:
1540 @example
1541 ~/amhello % @kbd{make}
1542 @dots{}
1543 ~/amhello % @kbd{src/hello}
1544 Hello World!
1545 This is amhello 1.0.
1546 ~/amhello % @kbd{make distcheck}
1547 @dots{}
1548 =============================================
1549 amhello-1.0 archives ready for distribution:
1550 amhello-1.0.tar.gz
1551 =============================================
1552 @end example
1554 Note that running @command{autoreconf} is only needed initially when
1555 the GNU Build System does not exist.  When you later change some
1556 instructions in a @file{Makefile.am} or @file{configure.ac}, the
1557 relevant part of the build system will be regenerated automatically
1558 when you execute @command{make}.
1560 @command{autoreconf} is a script that calls @command{autoconf},
1561 @command{automake}, and a bunch of other commands in the right order.
1562 If you are beginning with these tools, it is not important to figure
1563 out in which order all these tools should be invoked and why.  However,
1564 because Autoconf and Automake have separate manuals, the important
1565 point to understand is that @command{autoconf} is in charge of
1566 creating @file{configure} from @file{configure.ac}, while
1567 @command{automake} is in charge of creating @file{Makefile.in}s from
1568 @file{Makefile.am}s and @file{configure.ac}.  This should at least
1569 direct you to the right manual when seeking answers.
1572 @node amhello's configure.ac Setup Explained
1573 @subsection @code{amhello}'s @file{configure.ac} Setup Explained
1575 @cindex @file{configure.ac}, Hello World
1577 Let us begin with the contents of @file{configure.ac}.
1579 @example
1580 AC_INIT([amhello], [1.0], [@value{PACKAGE_BUGREPORT}])
1581 AM_INIT_AUTOMAKE([-Wall -Werror foreign])
1582 AC_PROG_CC
1583 AC_CONFIG_HEADERS([config.h])
1584 AC_CONFIG_FILES([
1585  Makefile
1586  src/Makefile
1588 AC_OUTPUT
1589 @end example
1591 This file is read by both @command{autoconf} (to create
1592 @file{configure}) and @command{automake} (to create the various
1593 @file{Makefile.in}s).  It contains a series of M4 macros that will be
1594 expanded as shell code to finally form the @file{configure} script.
1595 We will not elaborate on the syntax of this file, because the Autoconf
1596 manual has a whole section about it (@pxref{Writing Autoconf Input, ,
1597 Writing @file{configure.ac}, autoconf, The Autoconf Manual}).
1599 The macros prefixed with @code{AC_} are Autoconf macros, documented
1600 in the Autoconf manual (@pxref{Autoconf Macro Index, , Autoconf Macro
1601 Index, autoconf, The Autoconf Manual}).  The macros that start with
1602 @code{AM_} are Automake macros, documented later in this manual
1603 (@pxref{Macro Index}).
1605 The first two lines of @file{configure.ac} initialize Autoconf and
1606 Automake.  @code{AC_INIT} takes in as parameters the name of the package,
1607 its version number, and a contact address for bug-reports about the
1608 package (this address is output at the end of @code{./configure
1609 --help}, for instance).  When adapting this setup to your own package,
1610 by all means please do not blindly copy Automake's address: use the
1611 mailing list of your package, or your own mail address.
1613 @opindex -Wall
1614 @opindex -Werror
1615 @opindex foreign
1617 The argument to @code{AM_INIT_AUTOMAKE} is a list of options for
1618 @command{automake} (@pxref{Options}).  @option{-Wall} and
1619 @option{-Werror} ask @command{automake} to turn on all warnings and
1620 report them as errors.  We are speaking of @strong{Automake} warnings
1621 here, such as dubious instructions in @file{Makefile.am}.  This has
1622 absolutely nothing to do with how the compiler will be called, even
1623 though it may support options with similar names.  Using @option{-Wall
1624 -Werror} is a safe setting when starting to work on a package: you do
1625 not want to miss any issues.  Later you may decide to relax things a
1626 bit.  The @option{foreign} option tells Automake that this package
1627 will not follow the GNU Standards.  GNU packages should always
1628 distribute additional files such as @file{ChangeLog}, @file{AUTHORS},
1629 etc.  We do not want @command{automake} to complain about these
1630 missing files in our small example.
1632 The @code{AC_PROG_CC} line causes the @command{configure} script to
1633 search for a C compiler and define the variable @code{CC} with its
1634 name.  The @file{src/Makefile.in} file generated by Automake uses the
1635 variable @code{CC} to build @file{hello}, so when @command{configure}
1636 creates @file{src/Makefile} from @file{src/Makefile.in}, it will define
1637 @code{CC} with the value it has found.  If Automake is asked to create
1638 a @file{Makefile.in} that uses @code{CC} but @file{configure.ac} does
1639 not define it, it will suggest you add a call to @code{AC_PROG_CC}.
1641 The @code{AC_CONFIG_HEADERS([config.h])} invocation causes the
1642 @command{configure} script to create a @file{config.h} file gathering
1643 @samp{#define}s defined by other macros in @file{configure.ac}.  In our
1644 case, the @code{AC_INIT} macro already defined a few of them.  Here
1645 is an excerpt of @file{config.h} after @command{configure} has run:
1647 @smallexample
1648 @dots{}
1649 /* Define to the address where bug reports for this package should be sent. */
1650 #define PACKAGE_BUGREPORT "@value{PACKAGE_BUGREPORT}"
1652 /* Define to the full name and version of this package. */
1653 #define PACKAGE_STRING "amhello 1.0"
1654 @dots{}
1655 @end smallexample
1657 As you probably noticed, @file{src/main.c} includes @file{config.h} so
1658 it can use @code{PACKAGE_STRING}.  In a real-world project,
1659 @file{config.h} can grow really big, with one @samp{#define} per
1660 feature probed on the system.
1662 The @code{AC_CONFIG_FILES} macro declares the list of files that
1663 @command{configure} should create from their @file{*.in} templates.
1664 Automake also scans this list to find the @file{Makefile.am} files it must
1665 process.  (This is important to remember: when adding a new directory
1666 to your project, you should add its @file{Makefile} to this list,
1667 otherwise Automake will never process the new @file{Makefile.am} you
1668 wrote in that directory.)
1670 Finally, the @code{AC_OUTPUT} line is a closing command that actually
1671 produces the part of the script in charge of creating the files
1672 registered with @code{AC_CONFIG_HEADERS} and @code{AC_CONFIG_FILES}.
1674 @cindex @command{autoscan}
1676 When starting a new project, we suggest you start with such a simple
1677 @file{configure.ac}, and gradually add the other tests it requires.
1678 The command @command{autoscan} can also suggest a few of the tests
1679 your package may need (@pxref{autoscan Invocation, , Using
1680 @command{autoscan} to Create @file{configure.ac}, autoconf, The
1681 Autoconf Manual}).
1684 @node amhello's Makefile.am Setup Explained
1685 @subsection @code{amhello}'s @file{Makefile.am} Setup Explained
1687 @cindex @file{Makefile.am}, Hello World
1689 We now turn to @file{src/Makefile.am}.  This file contains
1690 Automake instructions to build and install @file{hello}.
1692 @example
1693 bin_PROGRAMS = hello
1694 hello_SOURCES = main.c
1695 @end example
1697 A @file{Makefile.am} has the same syntax as an ordinary
1698 @file{Makefile}.  When @command{automake} processes a
1699 @file{Makefile.am} it copies the entire file into the output
1700 @file{Makefile.in} (that will be later turned into @file{Makefile} by
1701 @command{configure}) but will react to certain variable definitions
1702 by generating some build rules and other variables.
1703 Often @file{Makefile.am}s contain only a list of variable definitions as
1704 above, but they can also contain other variable and rule definitions that
1705 @command{automake} will pass along without interpretation.
1707 Variables that end with @code{_PROGRAMS} are special variables
1708 that list programs that the resulting @file{Makefile} should build.
1709 In Automake speak, this @code{_PROGRAMS} suffix is called a
1710 @dfn{primary}; Automake recognizes other primaries such as
1711 @code{_SCRIPTS}, @code{_DATA}, @code{_LIBRARIES}, etc.@: corresponding
1712 to different types of files.
1714 The @samp{bin} part of the @code{bin_PROGRAMS} tells
1715 @command{automake} that the resulting programs should be installed in
1716 @var{bindir}.  Recall that the GNU Build System uses a set of variables
1717 to denote destination directories and allow users to customize these
1718 locations (@pxref{Standard Directory Variables}).  Any such directory
1719 variable can be put in front of a primary (omitting the @code{dir}
1720 suffix) to tell @command{automake} where to install the listed files.
1722 Programs need to be built from source files, so for each program
1723 @code{@var{prog}} listed in a @code{@w{_PROGRAMS}} variable,
1724 @command{automake} will look for another variable named
1725 @code{@var{prog}_SOURCES} listing its source files.  There may be more
1726 than one source file: they will all be compiled and linked together.
1728 Automake also knows that source files need to be distributed when
1729 creating a tarball (unlike built programs).  So a side-effect of this
1730 @code{hello_SOURCES} declaration is that @file{main.c} will be
1731 part of the tarball created by @code{make dist}.
1733 Finally here are some explanations regarding the top-level
1734 @file{Makefile.am}.
1736 @example
1737 SUBDIRS = src
1738 dist_doc_DATA = README
1739 @end example
1741 @code{SUBDIRS} is a special variable listing all directories that
1742 @command{make} should recurse into before processing the current
1743 directory.  So this line is responsible for @command{make} building
1744 @file{src/hello} even though we run it from the top-level.  This line
1745 also causes @code{make install} to install @file{src/hello} before
1746 installing @file{README} (not that this order matters).
1748 The line @code{dist_doc_DATA = README} causes @file{README} to be
1749 distributed and installed in @var{docdir}.  Files listed with the
1750 @code{_DATA} primary are not automatically part of the tarball built
1751 with @code{make dist}, so we add the @code{dist_} prefix so they get
1752 distributed.  However, for @file{README} it would not have been
1753 necessary: @command{automake} automatically distributes any
1754 @file{README} file it encounters (the list of other files
1755 automatically distributed is presented by @code{automake --help}).
1756 The only important effect of this second line is therefore to install
1757 @file{README} during @code{make install}.
1759 One thing not covered in this example is accessing the installation
1760 directory values (@pxref{Standard Directory Variables}) from your
1761 program code, that is, converting them into defined macros.  For this,
1762 @pxref{Defining Directories,,, autoconf, The Autoconf Manual}.
1765 @node Generalities
1766 @chapter General ideas
1768 The following sections cover a few basic ideas that will help you
1769 understand how Automake works.
1771 @menu
1772 * General Operation::           General operation of Automake
1773 * Strictness::                  Standards conformance checking
1774 * Uniform::                     The Uniform Naming Scheme
1775 * Length Limitations::          Staying below the command line length limit
1776 * Canonicalization::            How derived variables are named
1777 * User Variables::              Variables reserved for the user
1778 * Auxiliary Programs::          Programs automake might require
1779 @end menu
1782 @node General Operation
1783 @section General Operation
1785 Automake works by reading a @file{Makefile.am} and generating a
1786 @file{Makefile.in}.  Certain variables and rules defined in the
1787 @file{Makefile.am} instruct Automake to generate more specialized code;
1788 for instance, a @code{bin_PROGRAMS} variable definition will cause rules
1789 for compiling and linking programs to be generated.
1791 @cindex Non-standard targets
1792 @cindex @code{git-dist}, non-standard example
1793 @trindex git-dist
1795 The variable definitions and rules in the @file{Makefile.am} are
1796 copied mostly verbatim into the generated file, with all variable
1797 definitions preceding all rules.  This allows you to add almost
1798 arbitrary code into the generated @file{Makefile.in}.  For instance,
1799 the Automake distribution includes a non-standard rule for the
1800 @code{git-dist} target, which the Automake maintainer uses to make
1801 distributions from the source control system.
1803 @cindex GNU make extensions
1805 Note that most GNU make extensions are not recognized by Automake.  Using
1806 such extensions in a @file{Makefile.am} will lead to errors or confusing
1807 behavior.
1809 @cindex Append operator
1810 @cmindex +=
1811 A special exception is that the GNU make append operator, @samp{+=}, is
1812 supported.  This operator appends its right hand argument to the variable
1813 specified on the left.  Automake will translate the operator into
1814 an ordinary @samp{=} operator; @samp{+=} will thus work with any make program.
1816 Automake tries to keep comments grouped with any adjoining rules or
1817 variable definitions.
1819 @cindex Limitations of automake parser
1820 @cindex Automake parser, limitations of
1821 @cindex indentation in Makefile.am
1822 Generally, Automake is not particularly smart in the parsing of unusual
1823 Makefile constructs, so you're advised to avoid fancy constructs or
1824 ``creative'' use of whitespaces.
1825 @c Keep this in sync with doc-parsing-buglets-tabs.test.
1826 For example, @key{TAB} characters cannot be used between a target name
1827 and the following ``@code{:}'' character, and variable assignments
1828 shouldn't be indented with @key{TAB} characters.
1829 @c Keep this in sync with doc-parsing-buglets-colneq-subst.test.
1830 Also, using more complex macro in target names can cause trouble:
1832 @example
1833 % @kbd{cat Makefile.am}
1834 $(FOO:=x): bar
1835 % @kbd{automake}
1836 Makefile.am:1: bad characters in variable name `$(FOO'
1837 Makefile.am:1: `:='-style assignments are not portable
1838 @end example
1840 @cindex Make targets, overriding
1841 @cindex Make rules, overriding
1842 @cindex Overriding make rules
1843 @cindex Overriding make targets
1845 A rule defined in @file{Makefile.am} generally overrides any such
1846 rule of a similar name that would be automatically generated by
1847 @command{automake}.  Although this is a supported feature, it is generally
1848 best to avoid making use of it, as sometimes the generated rules are
1849 very particular.
1851 @cindex Variables, overriding
1852 @cindex Overriding make variables
1854 Similarly, a variable defined in @file{Makefile.am} or
1855 @code{AC_SUBST}ed from @file{configure.ac} will override any
1856 definition of the variable that @command{automake} would ordinarily
1857 create.  This feature is more often useful than the ability to
1858 override a rule.  Be warned that many of the variables generated by
1859 @command{automake} are considered to be for internal use only, and their
1860 names might change in future releases.
1862 @cindex Recursive operation of Automake
1863 @cindex Automake, recursive operation
1864 @cindex Example of recursive operation
1866 When examining a variable definition, Automake will recursively examine
1867 variables referenced in the definition.  For example, if Automake is
1868 looking at the content of @code{foo_SOURCES} in this snippet
1870 @c Keep in sync with interp.test.
1871 @example
1872 xs = a.c b.c
1873 foo_SOURCES = c.c $(xs)
1874 @end example
1876 it would use the files @file{a.c}, @file{b.c}, and @file{c.c} as the
1877 contents of @code{foo_SOURCES}.
1879 @cindex @code{##} (special Automake comment)
1880 @cindex Special Automake comment
1881 @cindex Comment, special to Automake
1883 Automake also allows a form of comment that is @emph{not} copied into
1884 the output; all lines beginning with @samp{##} (leading spaces allowed)
1885 are completely ignored by Automake.
1887 It is customary to make the first line of @file{Makefile.am} read:
1889 @cindex Makefile.am, first line
1890 @cindex First line of Makefile.am
1892 @example
1893 ## Process this file with automake to produce Makefile.in
1894 @end example
1896 @c FIXME discuss putting a copyright into Makefile.am here?  I would but
1897 @c I don't know quite what to say.
1899 @c FIXME document customary ordering of Makefile.am here!
1902 @node Strictness
1903 @section Strictness
1905 @cindex Non-GNU packages
1907 While Automake is intended to be used by maintainers of GNU packages, it
1908 does make some effort to accommodate those who wish to use it, but do
1909 not want to use all the GNU conventions.
1911 @cindex Strictness, defined
1912 @cindex Strictness, @option{foreign}
1913 @cindex @option{foreign} strictness
1914 @cindex Strictness, @option{gnu}
1915 @cindex @option{gnu} strictness
1916 @cindex Strictness, @option{gnits}
1917 @cindex @option{gnits} strictness
1919 To this end, Automake supports three levels of @dfn{strictness}---the
1920 strictness indicating how stringently Automake should check standards
1921 conformance.
1923 The valid strictness levels are:
1925 @table @option
1926 @item foreign
1927 Automake will check for only those things that are absolutely
1928 required for proper operations.  For instance, whereas GNU standards
1929 dictate the existence of a @file{NEWS} file, it will not be required in
1930 this mode.  The name comes from the fact that Automake is intended to be
1931 used for GNU programs; these relaxed rules are not the standard mode of
1932 operation.
1934 @item gnu
1935 Automake will check---as much as possible---for compliance to the GNU
1936 standards for packages.  This is the default.
1938 @item gnits
1939 Automake will check for compliance to the as-yet-unwritten @dfn{Gnits
1940 standards}.  These are based on the GNU standards, but are even more
1941 detailed.  Unless you are a Gnits standards contributor, it is
1942 recommended that you avoid this option until such time as the Gnits
1943 standard is actually published (which may never happen).
1944 @end table
1946 @xref{Gnits}, for more information on the precise implications of the
1947 strictness level.
1949 Automake also has a special ``cygnus'' mode that is similar to
1950 strictness but handled differently.  This mode is useful for packages
1951 that are put into a ``Cygnus'' style tree (e.g., the GCC tree).
1952 @xref{Cygnus}, for more information on this mode.
1955 @node Uniform
1956 @section The Uniform Naming Scheme
1958 @cindex Uniform naming scheme
1960 Automake variables generally follow a @dfn{uniform naming scheme} that
1961 makes it easy to decide how programs (and other derived objects) are
1962 built, and how they are installed.  This scheme also supports
1963 @command{configure} time determination of what should be built.
1965 @cindex @code{_PROGRAMS} primary variable
1966 @cindex @code{PROGRAMS} primary variable
1967 @cindex Primary variable, @code{PROGRAMS}
1968 @cindex Primary variable, defined
1969 @vindex _PROGRAMS
1971 At @command{make} time, certain variables are used to determine which
1972 objects are to be built.  The variable names are made of several pieces
1973 that are concatenated together.
1975 The piece that tells @command{automake} what is being built is commonly called
1976 the @dfn{primary}.  For instance, the primary @code{PROGRAMS} holds a
1977 list of programs that are to be compiled and linked.
1978 @vindex PROGRAMS
1980 @cindex @code{pkgdatadir}, defined
1981 @cindex @code{pkgincludedir}, defined
1982 @cindex @code{pkglibdir}, defined
1983 @cindex @code{pkglibexecdir}, defined
1985 @vindex pkgdatadir
1986 @vindex pkgincludedir
1987 @vindex pkglibdir
1988 @vindex pkglibexecdir
1990 @cindex @code{PACKAGE}, directory
1991 A different set of names is used to decide where the built objects
1992 should be installed.  These names are prefixes to the primary, and they
1993 indicate which standard directory should be used as the installation
1994 directory.  The standard directory names are given in the GNU standards
1995 (@pxref{Directory Variables, , , standards, The GNU Coding Standards}).
1996 Automake extends this list with @code{pkgdatadir}, @code{pkgincludedir},
1997 @code{pkglibdir}, and @code{pkglibexecdir}; these are the same as the
1998 non-@samp{pkg} versions, but with @samp{$(PACKAGE)} appended.  For instance,
1999 @code{pkglibdir} is defined as @samp{$(libdir)/$(PACKAGE)}.
2001 @cindex @code{EXTRA_}, prepending
2002 For each primary, there is one additional variable named by prepending
2003 @samp{EXTRA_} to the primary name.  This variable is used to list
2004 objects that may or may not be built, depending on what
2005 @command{configure} decides.  This variable is required because Automake
2006 must statically know the entire list of objects that may be built in
2007 order to generate a @file{Makefile.in} that will work in all cases.
2009 @cindex @code{EXTRA_PROGRAMS}, defined
2010 @cindex Example, @code{EXTRA_PROGRAMS}
2011 @cindex @command{cpio} example
2013 For instance, @command{cpio} decides at configure time which programs
2014 should be built.  Some of the programs are installed in @code{bindir},
2015 and some are installed in @code{sbindir}:
2017 @example
2018 EXTRA_PROGRAMS = mt rmt
2019 bin_PROGRAMS = cpio pax
2020 sbin_PROGRAMS = $(MORE_PROGRAMS)
2021 @end example
2023 Defining a primary without a prefix as a variable, e.g.,
2024 @samp{PROGRAMS}, is an error.
2026 Note that the common @samp{dir} suffix is left off when constructing the
2027 variable names; thus one writes @samp{bin_PROGRAMS} and not
2028 @samp{bindir_PROGRAMS}.
2030 Not every sort of object can be installed in every directory.  Automake
2031 will flag those attempts it finds in error (but see below how to override
2032 the check if you really need to).
2033 Automake will also diagnose obvious misspellings in directory names.
2035 @cindex Extending list of installation directories
2036 @cindex Installation directories, extending list
2038 Sometimes the standard directories---even as augmented by
2039 Automake---are not enough.  In particular it is sometimes useful, for
2040 clarity, to install objects in a subdirectory of some predefined
2041 directory.  To this end, Automake allows you to extend the list of
2042 possible installation directories.  A given prefix (e.g., @samp{zar})
2043 is valid if a variable of the same name with @samp{dir} appended is
2044 defined (e.g., @samp{zardir}).
2046 For instance, the following snippet will install @file{file.xml} into
2047 @samp{$(datadir)/xml}.
2049 @c Keep in sync with primary-prefix-couples-documented-valid.test.
2050 @example
2051 xmldir = $(datadir)/xml
2052 xml_DATA = file.xml
2053 @end example
2055 This feature can also be used to override the sanity checks Automake
2056 performs to diagnose suspicious directory/primary couples (in the
2057 unlikely case these checks are undesirable, and you really know what
2058 you're doing).  For example, Automake would error out on this input:
2060 @c Should be tested in primary-prefix-invalid-couples.test.
2061 @example
2062 # Forbidden directory combinations, automake will error out on this.
2063 pkglib_PROGRAMS = foo
2064 doc_LIBRARIES = libquux.a
2065 @end example
2067 @noindent
2068 but it will succeed with this:
2070 @c Keep in sync with primary-prefix-couples-documented-valid.test.
2071 @example
2072 # Work around forbidden directory combinations.  Do not use this
2073 # without a very good reason!
2074 my_execbindir = $(pkglibdir)
2075 my_doclibdir = $(docdir)
2076 my_execbin_PROGRAMS = foo
2077 my_doclib_LIBRARIES = libquux.a
2078 @end example
2080 The @samp{exec} substring of the @samp{my_execbindir} variable lets
2081 the files be installed at the right time (@pxref{The Two Parts of
2082 Install}).
2084 @cindex @samp{noinst_} primary prefix, definition
2085 @vindex noinst_
2087 The special prefix @samp{noinst_} indicates that the objects in question
2088 should be built but not installed at all.  This is usually used for
2089 objects required to build the rest of your package, for instance static
2090 libraries (@pxref{A Library}), or helper scripts.
2092 @cindex @samp{check_} primary prefix, definition
2093 @vindex check_
2095 The special prefix @samp{check_} indicates that the objects in question
2096 should not be built until the @samp{make check} command is run.  Those
2097 objects are not installed either.
2099 The current primary names are @samp{PROGRAMS}, @samp{LIBRARIES},
2100 @samp{LTLIBRARIES}, @samp{LISP}, @samp{PYTHON}, @samp{JAVA},
2101 @samp{SCRIPTS}, @samp{DATA}, @samp{HEADERS}, @samp{MANS}, and
2102 @samp{TEXINFOS}.
2103 @vindex PROGRAMS
2104 @vindex LIBRARIES
2105 @vindex LTLIBRARIES
2106 @vindex LISP
2107 @vindex PYTHON
2108 @vindex JAVA
2109 @vindex SCRIPTS
2110 @vindex DATA
2111 @vindex HEADERS
2112 @vindex MANS
2113 @vindex TEXINFOS
2115 Some primaries also allow additional prefixes that control other
2116 aspects of @command{automake}'s behavior.  The currently defined prefixes
2117 are @samp{dist_}, @samp{nodist_}, @samp{nobase_}, and @samp{notrans_}.
2118 These prefixes are explained later (@pxref{Program and Library Variables})
2119 (@pxref{Man Pages}).
2122 @node Length Limitations
2123 @section Staying below the command line length limit
2125 @cindex command line length limit
2126 @cindex ARG_MAX
2128 Traditionally, most unix-like systems have a length limitation for the
2129 command line arguments and environment contents when creating new
2130 processes (see for example
2131 @uref{http://www.in-ulm.de/@/~mascheck/@/various/@/argmax/} for an
2132 overview on this issue),
2133 which of course also applies to commands spawned by @command{make}.
2134 POSIX requires this limit to be at least 4096 bytes, and most modern
2135 systems have quite high limits (or are unlimited).
2137 In order to create portable Makefiles that do not trip over these
2138 limits, it is necessary to keep the length of file lists bounded.
2139 Unfortunately, it is not possible to do so fully transparently within
2140 Automake, so your help may be needed.  Typically, you can split long
2141 file lists manually and use different installation directory names for
2142 each list.  For example,
2144 @example
2145 data_DATA = file1 @dots{} file@var{N} file@var{N+1} @dots{} file@var{2N}
2146 @end example
2148 @noindent
2149 may also be written as
2151 @c Keep in sync with primary-prefix-couples-documented-valid.test.
2152 @example
2153 data_DATA = file1 @dots{} file@var{N}
2154 data2dir = $(datadir)
2155 data2_DATA = file@var{N+1} @dots{} file@var{2N}
2156 @end example
2158 @noindent
2159 and will cause Automake to treat the two lists separately during
2160 @code{make install}.  See @ref{The Two Parts of Install} for choosing
2161 directory names that will keep the ordering of the two parts of
2162 installation Note that @code{make dist} may still only work on a host
2163 with a higher length limit in this example.
2165 Automake itself employs a couple of strategies to avoid long command
2166 lines.  For example, when @samp{$@{srcdir@}/} is prepended to file
2167 names, as can happen with above @code{$(data_DATA)} lists, it limits
2168 the amount of arguments passed to external commands.
2170 Unfortunately, some system's @command{make} commands may prepend
2171 @code{VPATH} prefixes like @samp{$@{srcdir@}/} to file names from the
2172 source tree automatically (@pxref{Automatic Rule Rewriting, , Automatic
2173 Rule Rewriting, autoconf, The Autoconf Manual}).  In this case, the user
2174 may have to switch to use GNU Make, or refrain from using VPATH builds,
2175 in order to stay below the length limit.
2177 For libraries and programs built from many sources, convenience archives
2178 may be used as intermediates in order to limit the object list length
2179 (@pxref{Libtool Convenience Libraries}).
2182 @node Canonicalization
2183 @section How derived variables are named
2185 @cindex canonicalizing Automake variables
2187 Sometimes a Makefile variable name is derived from some text the
2188 maintainer supplies.  For instance, a program name listed in
2189 @samp{_PROGRAMS} is rewritten into the name of a @samp{_SOURCES}
2190 variable.  In cases like this, Automake canonicalizes the text, so that
2191 program names and the like do not have to follow Makefile variable naming
2192 rules.  All characters in the name except for letters, numbers, the
2193 strudel (@@), and the underscore are turned into underscores when making
2194 variable references.
2196 For example, if your program is named @file{sniff-glue}, the derived
2197 variable name would be @samp{sniff_glue_SOURCES}, not
2198 @samp{sniff-glue_SOURCES}.  Similarly the sources for a library named
2199 @file{libmumble++.a} should be listed in the
2200 @samp{libmumble___a_SOURCES} variable.
2202 The strudel is an addition, to make the use of Autoconf substitutions in
2203 variable names less obfuscating.
2206 @node User Variables
2207 @section Variables reserved for the user
2209 @cindex variables, reserved for the user
2210 @cindex user variables
2212 Some @file{Makefile} variables are reserved by the GNU Coding Standards
2213 for the use of the ``user''---the person building the package.  For
2214 instance, @code{CFLAGS} is one such variable.
2216 Sometimes package developers are tempted to set user variables such as
2217 @code{CFLAGS} because it appears to make their job easier.  However,
2218 the package itself should never set a user variable, particularly not
2219 to include switches that are required for proper compilation of the
2220 package.  Since these variables are documented as being for the
2221 package builder, that person rightfully expects to be able to override
2222 any of these variables at build time.
2224 To get around this problem, Automake introduces an automake-specific
2225 shadow variable for each user flag variable.  (Shadow variables are
2226 not introduced for variables like @code{CC}, where they would make no
2227 sense.)  The shadow variable is named by prepending @samp{AM_} to the
2228 user variable's name.  For instance, the shadow variable for
2229 @code{YFLAGS} is @code{AM_YFLAGS}.  The package maintainer---that is,
2230 the author(s) of the @file{Makefile.am} and @file{configure.ac}
2231 files---may adjust these shadow variables however necessary.
2233 @xref{Flag Variables Ordering}, for more discussion about these
2234 variables and how they interact with per-target variables.
2236 @node Auxiliary Programs
2237 @section Programs automake might require
2239 @cindex Programs, auxiliary
2240 @cindex Auxiliary programs
2242 Automake sometimes requires helper programs so that the generated
2243 @file{Makefile} can do its work properly.  There are a fairly large
2244 number of them, and we list them here.
2246 Although all of these files are distributed and installed with
2247 Automake, a couple of them are maintained separately.  The Automake
2248 copies are updated before each release, but we mention the original
2249 source in case you need more recent versions.
2251 @table @code
2252 @item ar-lib
2253 This is a wrapper primarily for the Microsoft lib archiver, to make
2254 it more POSIX-like.
2256 @item ansi2knr.c
2257 @itemx ansi2knr.1
2258 These two files are used for de-ANSI-fication support (they are
2259 deprecated now, and @emph{will be removed} in the next major Automake
2260 release; @pxref{ANSI}).
2262 @item compile
2263 This is a wrapper for compilers that do not accept options @option{-c}
2264 and @option{-o} at the same time.  It is only used when absolutely
2265 required.  Such compilers are rare, with the Microsoft C/C++ Compiler
2266 as the most notable exception. This wrapper also makes the following
2267 common options available for that compiler, while performing file name
2268 translation where needed: @option{-I}, @option{-L}, @option{-l},
2269 @option{-Wl,} and @option{-Xlinker}.
2271 @item config.guess
2272 @itemx config.sub
2273 These two programs compute the canonical triplets for the given build,
2274 host, or target architecture.  These programs are updated regularly to
2275 support new architectures and fix probes broken by changes in new
2276 kernel versions.  Each new release of Automake comes with up-to-date
2277 copies of these programs.  If your copy of Automake is getting old,
2278 you are encouraged to fetch the latest versions of these files from
2279 @url{http://savannah.gnu.org/git/?group=config} before making a
2280 release.
2282 @item config-ml.in
2283 This file is not a program, it is a @file{configure} fragment used for
2284 multilib support (@pxref{Multilibs}).  This file is maintained in the
2285 GCC tree at @url{http://gcc.gnu.org/svn.html}.
2287 @item depcomp
2288 This program understands how to run a compiler so that it will
2289 generate not only the desired output but also dependency information
2290 that is then used by the automatic dependency tracking feature
2291 (@pxref{Dependencies}).
2293 @item elisp-comp
2294 This program is used to byte-compile Emacs Lisp code.
2296 @item install-sh
2297 This is a replacement for the @command{install} program that works on
2298 platforms where @command{install} is unavailable or unusable.
2300 @item mdate-sh
2301 This script is used to generate a @file{version.texi} file.  It examines
2302 a file and prints some date information about it.
2304 @item missing
2305 This wraps a number of programs that are typically only required by
2306 maintainers.  If the program in question doesn't exist,
2307 @command{missing} prints an informative warning and attempts to fix
2308 things so that the build can continue.
2310 @item mkinstalldirs
2311 This script used to be a wrapper around @samp{mkdir -p}, which is not
2312 portable.  Now we prefer to use @samp{install-sh -d} when @command{configure}
2313 finds that @samp{mkdir -p} does not work, this makes one less script to
2314 distribute.
2316 For backward compatibility @file{mkinstalldirs} is still used and
2317 distributed when @command{automake} finds it in a package.  But it is no
2318 longer installed automatically, and it should be safe to remove it.
2320 @item py-compile
2321 This is used to byte-compile Python scripts.
2323 @item symlink-tree
2324 This program duplicates a tree of directories, using symbolic links
2325 instead of copying files.  Such an operation is performed when building
2326 multilibs (@pxref{Multilibs}).  This file is maintained in the GCC
2327 tree at @url{http://gcc.gnu.org/svn.html}.
2329 @item texinfo.tex
2330 Not a program, this file is required for @samp{make dvi}, @samp{make
2331 ps} and @samp{make pdf} to work when Texinfo sources are in the
2332 package.  The latest version can be downloaded from
2333 @url{http://www.gnu.org/software/texinfo/}.
2335 @item ylwrap
2336 This program wraps @command{lex} and @command{yacc} to rename their
2337 output files.  It also ensures that, for instance, multiple
2338 @command{yacc} instances can be invoked in a single directory in
2339 parallel.
2341 @end table
2344 @node Examples
2345 @chapter Some example packages
2347 This section contains two small examples.
2349 The first example (@pxref{Complete}) assumes you have an existing
2350 project already using Autoconf, with handcrafted @file{Makefile}s, and
2351 that you want to convert it to using Automake.  If you are discovering
2352 both tools, it is probably better that you look at the Hello World
2353 example presented earlier (@pxref{Hello World}).
2355 The second example (@pxref{true}) shows how two programs can be built
2356 from the same file, using different compilation parameters.  It
2357 contains some technical digressions that are probably best skipped on
2358 first read.
2360 @menu
2361 * Complete::                    A simple example, start to finish
2362 * true::                        Building true and false
2363 @end menu
2366 @node Complete
2367 @section A simple example, start to finish
2369 @cindex Complete example
2371 Let's suppose you just finished writing @code{zardoz}, a program to make
2372 your head float from vortex to vortex.  You've been using Autoconf to
2373 provide a portability framework, but your @file{Makefile.in}s have been
2374 ad-hoc.  You want to make them bulletproof, so you turn to Automake.
2376 @cindex @code{AM_INIT_AUTOMAKE}, example use
2378 The first step is to update your @file{configure.ac} to include the
2379 commands that @command{automake} needs.  The way to do this is to add an
2380 @code{AM_INIT_AUTOMAKE} call just after @code{AC_INIT}:
2382 @example
2383 AC_INIT([zardoz], [1.0])
2384 AM_INIT_AUTOMAKE
2385 @dots{}
2386 @end example
2388 Since your program doesn't have any complicating factors (e.g., it
2389 doesn't use @code{gettext}, it doesn't want to build a shared library),
2390 you're done with this part.  That was easy!
2392 @cindex @command{aclocal} program, introduction
2393 @cindex @file{aclocal.m4}, preexisting
2394 @cindex @file{acinclude.m4}, defined
2396 Now you must regenerate @file{configure}.  But to do that, you'll need
2397 to tell @command{autoconf} how to find the new macro you've used.  The
2398 easiest way to do this is to use the @command{aclocal} program to
2399 generate your @file{aclocal.m4} for you.  But wait@dots{} maybe you
2400 already have an @file{aclocal.m4}, because you had to write some hairy
2401 macros for your program.  The @command{aclocal} program lets you put
2402 your own macros into @file{acinclude.m4}, so simply rename and then
2403 run:
2405 @example
2406 mv aclocal.m4 acinclude.m4
2407 aclocal
2408 autoconf
2409 @end example
2411 @cindex @command{zardoz} example
2413 Now it is time to write your @file{Makefile.am} for @code{zardoz}.
2414 Since @code{zardoz} is a user program, you want to install it where the
2415 rest of the user programs go: @code{bindir}.  Additionally,
2416 @code{zardoz} has some Texinfo documentation.  Your @file{configure.ac}
2417 script uses @code{AC_REPLACE_FUNCS}, so you need to link against
2418 @samp{$(LIBOBJS)}.  So here's what you'd write:
2420 @example
2421 bin_PROGRAMS = zardoz
2422 zardoz_SOURCES = main.c head.c float.c vortex9.c gun.c
2423 zardoz_LDADD = $(LIBOBJS)
2425 info_TEXINFOS = zardoz.texi
2426 @end example
2428 Now you can run @samp{automake --add-missing} to generate your
2429 @file{Makefile.in} and grab any auxiliary files you might need, and
2430 you're done!
2433 @node true
2434 @section Building true and false
2436 @cindex Example, @command{false} and @command{true}
2437 @cindex @command{false} Example
2438 @cindex @command{true} Example
2440 Here is another, trickier example.  It shows how to generate two
2441 programs (@code{true} and @code{false}) from the same source file
2442 (@file{true.c}).  The difficult part is that each compilation of
2443 @file{true.c} requires different @code{cpp} flags.
2445 @example
2446 bin_PROGRAMS = true false
2447 false_SOURCES =
2448 false_LDADD = false.o
2450 true.o: true.c
2451         $(COMPILE) -DEXIT_CODE=0 -c true.c
2453 false.o: true.c
2454         $(COMPILE) -DEXIT_CODE=1 -o false.o -c true.c
2455 @end example
2457 Note that there is no @code{true_SOURCES} definition.  Automake will
2458 implicitly assume that there is a source file named @file{true.c}
2459 (@pxref{Default _SOURCES}), and
2460 define rules to compile @file{true.o} and link @file{true}.  The
2461 @samp{true.o: true.c} rule supplied by the above @file{Makefile.am},
2462 will override the Automake generated rule to build @file{true.o}.
2464 @code{false_SOURCES} is defined to be empty---that way no implicit value
2465 is substituted.  Because we have not listed the source of
2466 @file{false}, we have to tell Automake how to link the program.  This is
2467 the purpose of the @code{false_LDADD} line.  A @code{false_DEPENDENCIES}
2468 variable, holding the dependencies of the @file{false} target will be
2469 automatically generated by Automake from the content of
2470 @code{false_LDADD}.
2472 The above rules won't work if your compiler doesn't accept both
2473 @option{-c} and @option{-o}.  The simplest fix for this is to introduce a
2474 bogus dependency (to avoid problems with a parallel @command{make}):
2476 @example
2477 true.o: true.c false.o
2478         $(COMPILE) -DEXIT_CODE=0 -c true.c
2480 false.o: true.c
2481         $(COMPILE) -DEXIT_CODE=1 -c true.c && mv true.o false.o
2482 @end example
2484 As it turns out, there is also a much easier way to do this same task.
2485 Some of the above technique is useful enough that we've kept the
2486 example in the manual.  However if you were to build @code{true} and
2487 @code{false} in real life, you would probably use per-program
2488 compilation flags, like so:
2490 @c Keep in sync with specflg7.test and specflg8.test.
2491 @example
2492 bin_PROGRAMS = false true
2494 false_SOURCES = true.c
2495 false_CPPFLAGS = -DEXIT_CODE=1
2497 true_SOURCES = true.c
2498 true_CPPFLAGS = -DEXIT_CODE=0
2499 @end example
2501 In this case Automake will cause @file{true.c} to be compiled twice,
2502 with different flags.  In this instance, the names of the object files
2503 would be chosen by automake; they would be @file{false-true.o} and
2504 @file{true-true.o}. (The name of the object files rarely matters.)
2507 @node Invoking Automake
2508 @chapter Creating a @file{Makefile.in}
2510 @cindex Multiple @file{configure.ac} files
2511 @cindex Invoking @command{automake}
2512 @cindex @command{automake}, invoking
2514 To create all the @file{Makefile.in}s for a package, run the
2515 @command{automake} program in the top level directory, with no
2516 arguments.  @command{automake} will automatically find each
2517 appropriate @file{Makefile.am} (by scanning @file{configure.ac};
2518 @pxref{configure}) and generate the corresponding @file{Makefile.in}.
2519 Note that @command{automake} has a rather simplistic view of what
2520 constitutes a package; it assumes that a package has only one
2521 @file{configure.ac}, at the top.  If your package has multiple
2522 @file{configure.ac}s, then you must run @command{automake} in each
2523 directory holding a @file{configure.ac}.  (Alternatively, you may rely
2524 on Autoconf's @command{autoreconf}, which is able to recurse your
2525 package tree and run @command{automake} where appropriate.)
2527 You can optionally give @command{automake} an argument; @file{.am} is
2528 appended to the argument and the result is used as the name of the
2529 input file.  This feature is generally only used to automatically
2530 rebuild an out-of-date @file{Makefile.in}.  Note that
2531 @command{automake} must always be run from the topmost directory of a
2532 project, even if being used to regenerate the @file{Makefile.in} in
2533 some subdirectory.  This is necessary because @command{automake} must
2534 scan @file{configure.ac}, and because @command{automake} uses the
2535 knowledge that a @file{Makefile.in} is in a subdirectory to change its
2536 behavior in some cases.
2538 @vindex AUTOCONF
2539 Automake will run @command{autoconf} to scan @file{configure.ac} and
2540 its dependencies (i.e., @file{aclocal.m4} and any included file),
2541 therefore @command{autoconf} must be in your @env{PATH}.  If there is
2542 an @env{AUTOCONF} variable in your environment it will be used
2543 instead of @command{autoconf}, this allows you to select a particular
2544 version of Autoconf.  By the way, don't misunderstand this paragraph:
2545 @command{automake} runs @command{autoconf} to @strong{scan} your
2546 @file{configure.ac}, this won't build @file{configure} and you still
2547 have to run @command{autoconf} yourself for this purpose.
2549 @cindex @command{automake} options
2550 @cindex Options, @command{automake}
2551 @cindex Strictness, command line
2553 @command{automake} accepts the following options:
2555 @cindex Extra files distributed with Automake
2556 @cindex Files distributed with Automake
2557 @cindex @file{config.guess}
2559 @table @code
2560 @item -a
2561 @itemx --add-missing
2562 @opindex -a
2563 @opindex --add-missing
2564 Automake requires certain common files to exist in certain situations;
2565 for instance, @file{config.guess} is required if @file{configure.ac} invokes
2566 @code{AC_CANONICAL_HOST}.  Automake is distributed with several of these
2567 files (@pxref{Auxiliary Programs}); this option will cause the missing
2568 ones to be automatically added to the package, whenever possible.  In
2569 general if Automake tells you a file is missing, try using this option.
2570 By default Automake tries to make a symbolic link pointing to its own
2571 copy of the missing file; this can be changed with @option{--copy}.
2573 Many of the potentially-missing files are common scripts whose
2574 location may be specified via the @code{AC_CONFIG_AUX_DIR} macro.
2575 Therefore, @code{AC_CONFIG_AUX_DIR}'s setting affects whether a
2576 file is considered missing, and where the missing file is added
2577 (@pxref{Optional}).
2579 In some strictness modes, additional files are installed, see @ref{Gnits}
2580 for more information.
2582 @item --libdir=@var{dir}
2583 @opindex --libdir
2584 Look for Automake data files in directory @var{dir} instead of in the
2585 installation directory.  This is typically used for debugging.
2587 @item -c
2588 @opindex -c
2589 @itemx --copy
2590 @opindex --copy
2591 When used with @option{--add-missing}, causes installed files to be
2592 copied.  The default is to make a symbolic link.
2594 @item --cygnus
2595 @opindex --cygnus
2596 Causes the generated @file{Makefile.in}s to follow Cygnus rules, instead
2597 of GNU or Gnits rules.  For more information, see @ref{Cygnus}.
2599 @item -f
2600 @opindex -f
2601 @itemx --force-missing
2602 @opindex --force-missing
2603 When used with @option{--add-missing}, causes standard files to be reinstalled
2604 even if they already exist in the source tree.  This involves removing
2605 the file from the source tree before creating the new symlink (or, with
2606 @option{--copy}, copying the new file).
2608 @item --foreign
2609 @opindex --foreign
2610 Set the global strictness to @option{foreign}.  For more information, see
2611 @ref{Strictness}.
2613 @item --gnits
2614 @opindex --gnits
2615 Set the global strictness to @option{gnits}.  For more information, see
2616 @ref{Gnits}.
2618 @item --gnu
2619 @opindex --gnu
2620 Set the global strictness to @option{gnu}.  For more information, see
2621 @ref{Gnits}.  This is the default strictness.
2623 @item --help
2624 @opindex --help
2625 Print a summary of the command line options and exit.
2627 @item -i
2628 @itemx --ignore-deps
2629 @opindex -i
2630 This disables the dependency tracking feature in generated
2631 @file{Makefile}s; see @ref{Dependencies}.
2633 @item --include-deps
2634 @opindex --include-deps
2635 This enables the dependency tracking feature.  This feature is enabled
2636 by default.  This option is provided for historical reasons only and
2637 probably should not be used.
2639 @item --no-force
2640 @opindex --no-force
2641 Ordinarily @command{automake} creates all @file{Makefile.in}s mentioned in
2642 @file{configure.ac}.  This option causes it to only update those
2643 @file{Makefile.in}s that are out of date with respect to one of their
2644 dependents.
2646 @item -o @var{dir}
2647 @itemx --output-dir=@var{dir}
2648 @opindex -o
2649 @opindex --output-dir
2650 Put the generated @file{Makefile.in} in the directory @var{dir}.
2651 Ordinarily each @file{Makefile.in} is created in the directory of the
2652 corresponding @file{Makefile.am}.  This option is deprecated and will be
2653 removed in a future release.
2655 @item -v
2656 @itemx --verbose
2657 @opindex -v
2658 @opindex --verbose
2659 Cause Automake to print information about which files are being read or
2660 created.
2662 @item --version
2663 @opindex --version
2664 Print the version number of Automake and exit.
2666 @item -W CATEGORY
2667 @itemx --warnings=@var{category}
2668 @opindex -W
2669 @opindex --warnings
2670 Output warnings falling in @var{category}.  @var{category} can be
2671 one of:
2672 @table @code
2673 @item gnu
2674 warnings related to the GNU Coding Standards
2675 (@pxref{Top, , , standards, The GNU Coding Standards}).
2676 @item obsolete
2677 obsolete features or constructions
2678 @item override
2679 user redefinitions of Automake rules or variables
2680 @item portability
2681 portability issues (e.g., use of @command{make} features that are
2682 known to be not portable)
2683 @item syntax
2684 weird syntax, unused variables, typos
2685 @item unsupported
2686 unsupported or incomplete features
2687 @item all
2688 all the warnings
2689 @item none
2690 turn off all the warnings
2691 @item error
2692 treat warnings as errors
2693 @end table
2695 A category can be turned off by prefixing its name with @samp{no-}.  For
2696 instance, @option{-Wno-syntax} will hide the warnings about unused
2697 variables.
2699 The categories output by default are @samp{syntax} and
2700 @samp{unsupported}.  Additionally, @samp{gnu} and @samp{portability}
2701 are enabled in @option{--gnu} and @option{--gnits} strictness.
2702 On the other hand, the @option{silent-rules} options (@pxref{Options})
2703 turns off portability warnings about recursive variable expansions.
2705 @vindex WARNINGS
2706 The environment variable @env{WARNINGS} can contain a comma separated
2707 list of categories to enable.  It will be taken into account before the
2708 command-line switches, this way @option{-Wnone} will also ignore any
2709 warning category enabled by @env{WARNINGS}.  This variable is also used
2710 by other tools like @command{autoconf}; unknown categories are ignored
2711 for this reason.
2713 @end table
2715 @vindex AUTOMAKE_JOBS
2716 If the environment variable @env{AUTOMAKE_JOBS} contains a positive
2717 number, it is taken as the maximum number of Perl threads to use in
2718 @command{automake} for generating multiple @file{Makefile.in} files
2719 concurrently.  This is an experimental feature.
2722 @node configure
2723 @chapter Scanning @file{configure.ac}, using @command{aclocal}
2725 @cindex @file{configure.ac}, scanning
2726 @cindex Scanning @file{configure.ac}
2727 @cindex Using @command{aclocal}
2728 @cindex @command{aclocal}, using
2730 Automake scans the package's @file{configure.ac} to determine certain
2731 information about the package.  Some @command{autoconf} macros are required
2732 and some variables must be defined in @file{configure.ac}.  Automake
2733 will also use information from @file{configure.ac} to further tailor its
2734 output.
2736 Automake also supplies some Autoconf macros to make the maintenance
2737 easier.  These macros can automatically be put into your
2738 @file{aclocal.m4} using the @command{aclocal} program.
2740 @menu
2741 * Requirements::                Configuration requirements
2742 * Optional::                    Other things Automake recognizes
2743 * Invoking aclocal::            Auto-generating aclocal.m4
2744 * Macros::                      Autoconf macros supplied with Automake
2745 @end menu
2748 @node Requirements
2749 @section Configuration requirements
2751 @cindex Automake requirements
2752 @cindex Requirements of Automake
2754 @acindex AM_INIT_AUTOMAKE
2755 The one real requirement of Automake is that your @file{configure.ac}
2756 call @code{AM_INIT_AUTOMAKE}.  This macro does several things that are
2757 required for proper Automake operation (@pxref{Macros}).
2759 Here are the other macros that Automake requires but which are not run
2760 by @code{AM_INIT_AUTOMAKE}:
2762 @table @code
2763 @item AC_CONFIG_FILES
2764 @itemx AC_OUTPUT
2765 @acindex AC_CONFIG_FILES
2766 @acindex AC_OUTPUT
2767 These two macros are usually invoked as follows near the end of
2768 @file{configure.ac}.
2770 @example
2771 @dots{}
2772 AC_CONFIG_FILES([
2773   Makefile
2774   doc/Makefile
2775   src/Makefile
2776   src/lib/Makefile
2777   @dots{}
2779 AC_OUTPUT
2780 @end example
2782 Automake uses these to determine which files to create (@pxref{Output, ,
2783 Creating Output Files, autoconf, The Autoconf Manual}).  A listed file
2784 is considered to be an Automake generated @file{Makefile} if there
2785 exists a file with the same name and the @file{.am} extension appended.
2786 Typically, @samp{AC_CONFIG_FILES([foo/Makefile])} will cause Automake to
2787 generate @file{foo/Makefile.in} if @file{foo/Makefile.am} exists.
2789 When using @code{AC_CONFIG_FILES} with multiple input files, as in
2791 @example
2792 AC_CONFIG_FILES([Makefile:top.in:Makefile.in:bot.in])
2793 @end example
2795 @noindent
2796 @command{automake} will generate the first @file{.in} input file for
2797 which a @file{.am} file exists.  If no such file exists the output
2798 file is not considered to be generated by Automake.
2800 Files created by @code{AC_CONFIG_FILES}, be they Automake
2801 @file{Makefile}s or not, are all removed by @samp{make distclean}.
2802 Their inputs are automatically distributed, unless they
2803 are the output of prior @code{AC_CONFIG_FILES} commands.
2804 Finally, rebuild rules are generated in the Automake @file{Makefile}
2805 existing in the subdirectory of the output file, if there is one, or
2806 in the top-level @file{Makefile} otherwise.
2808 The above machinery (cleaning, distributing, and rebuilding) works
2809 fine if the @code{AC_CONFIG_FILES} specifications contain only
2810 literals.  If part of the specification uses shell variables,
2811 @command{automake} will not be able to fulfill this setup, and you will
2812 have to complete the missing bits by hand.  For instance, on
2814 @c Keep in sync with output11.test.
2815 @example
2816 file=input
2817 @dots{}
2818 AC_CONFIG_FILES([output:$file],, [file=$file])
2819 @end example
2821 @noindent
2822 @command{automake} will output rules to clean @file{output}, and
2823 rebuild it.  However the rebuild rule will not depend on @file{input},
2824 and this file will not be distributed either.  (You must add
2825 @samp{EXTRA_DIST = input} to your @file{Makefile.am} if @file{input} is a
2826 source file.)
2828 Similarly
2830 @c Keep in sync with output11.test.
2831 @example
2832 file=output
2833 file2=out:in
2834 @dots{}
2835 AC_CONFIG_FILES([$file:input],, [file=$file])
2836 AC_CONFIG_FILES([$file2],, [file2=$file2])
2837 @end example
2839 @noindent
2840 will only cause @file{input} to be distributed.  No file will be
2841 cleaned automatically (add @samp{DISTCLEANFILES = output out}
2842 yourself), and no rebuild rule will be output.
2844 Obviously @command{automake} cannot guess what value @samp{$file} is
2845 going to hold later when @file{configure} is run, and it cannot use
2846 the shell variable @samp{$file} in a @file{Makefile}.  However, if you
2847 make reference to @samp{$file} as @samp{$@{file@}} (i.e., in a way
2848 that is compatible with @command{make}'s syntax) and furthermore use
2849 @code{AC_SUBST} to ensure that @samp{$@{file@}} is meaningful in a
2850 @file{Makefile}, then @command{automake} will be able to use
2851 @samp{$@{file@}} to generate all these rules.  For instance, here is
2852 how the Automake package itself generates versioned scripts for its
2853 test suite:
2855 @example
2856 AC_SUBST([APIVERSION], @dots{})
2857 @dots{}
2858 AC_CONFIG_FILES(
2859   [tests/aclocal-$@{APIVERSION@}:tests/aclocal.in],
2860   [chmod +x tests/aclocal-$@{APIVERSION@}],
2861   [APIVERSION=$APIVERSION])
2862 AC_CONFIG_FILES(
2863   [tests/automake-$@{APIVERSION@}:tests/automake.in],
2864   [chmod +x tests/automake-$@{APIVERSION@}])
2865 @end example
2867 @noindent
2868 Here cleaning, distributing, and rebuilding are done automatically,
2869 because @samp{$@{APIVERSION@}} is known at @command{make}-time.
2871 Note that you should not use shell variables to declare
2872 @file{Makefile} files for which @command{automake} must create
2873 @file{Makefile.in}.  Even @code{AC_SUBST} does not help here, because
2874 @command{automake} needs to know the file name when it runs in order
2875 to check whether @file{Makefile.am} exists.  (In the very hairy case
2876 that your setup requires such use of variables, you will have to tell
2877 Automake which @file{Makefile.in}s to generate on the command-line.)
2879 It is possible to let @command{automake} emit conditional rules for
2880 @code{AC_CONFIG_FILES} with the help of @code{AM_COND_IF}
2881 (@pxref{Optional}).
2883 To summarize:
2884 @itemize @bullet
2885 @item
2886 Use literals for @file{Makefile}s, and for other files whenever possible.
2887 @item
2888 Use @samp{$file} (or @samp{$@{file@}} without @samp{AC_SUBST([file])})
2889 for files that @command{automake} should ignore.
2890 @item
2891 Use @samp{$@{file@}} and @samp{AC_SUBST([file])} for files
2892 that @command{automake} should not ignore.
2893 @end itemize
2895 @end table
2898 @node Optional
2899 @section Other things Automake recognizes
2901 @cindex Macros Automake recognizes
2902 @cindex Recognized macros by Automake
2904 Every time Automake is run it calls Autoconf to trace
2905 @file{configure.ac}.  This way it can recognize the use of certain
2906 macros and tailor the generated @file{Makefile.in} appropriately.
2907 Currently recognized macros and their effects are:
2909 @ftable @code
2910 @item AC_CANONICAL_BUILD
2911 @itemx AC_CANONICAL_HOST
2912 @itemx AC_CANONICAL_TARGET
2913 @vindex build_triplet
2914 @vindex host_triplet
2915 @vindex target_triplet
2916 Automake will ensure that @file{config.guess} and @file{config.sub}
2917 exist.  Also, the @file{Makefile} variables @code{build_triplet},
2918 @code{host_triplet} and @code{target_triplet} are introduced.  See
2919 @ref{Canonicalizing, , Getting the Canonical System Type, autoconf,
2920 The Autoconf Manual}.
2922 @item AC_CONFIG_AUX_DIR
2923 Automake will look for various helper scripts, such as
2924 @file{install-sh}, in the directory named in this macro invocation.
2925 @c This list is accurate relative to version 1.8
2926 (The full list of scripts is: @file{ar-lib}, @file{config.guess},
2927 @file{config.sub}, @file{depcomp}, @file{elisp-comp}, @file{compile},
2928 @file{install-sh}, @file{ltmain.sh}, @file{mdate-sh}, @file{missing},
2929 @file{mkinstalldirs}, @file{py-compile}, @file{texinfo.tex}, and
2930 @file{ylwrap}.)  Not all scripts are always searched for; some scripts
2931 will only be sought if the generated @file{Makefile.in} requires them.
2933 If @code{AC_CONFIG_AUX_DIR} is not given, the scripts are looked for in
2934 their standard locations.  For @file{mdate-sh},
2935 @file{texinfo.tex}, and @file{ylwrap}, the standard location is the
2936 source directory corresponding to the current @file{Makefile.am}.  For
2937 the rest, the standard location is the first one of @file{.}, @file{..},
2938 or @file{../..} (relative to the top source directory) that provides any
2939 one of the helper scripts.  @xref{Input, , Finding `configure' Input,
2940 autoconf, The Autoconf Manual}.
2942 Required files from @code{AC_CONFIG_AUX_DIR} are automatically
2943 distributed, even if there is no @file{Makefile.am} in this directory.
2945 @item AC_CONFIG_LIBOBJ_DIR
2946 Automake will require the sources file declared with
2947 @code{AC_LIBSOURCE} (see below) in the directory specified by this
2948 macro.
2950 @item AC_CONFIG_HEADERS
2951 Automake will generate rules to rebuild these headers.  Older versions
2952 of Automake required the use of @code{AM_CONFIG_HEADER}
2953 (@pxref{Macros}); this is no longer the case.
2955 As with @code{AC_CONFIG_FILES} (@pxref{Requirements}), parts of the
2956 specification using shell variables will be ignored as far as
2957 cleaning, distributing, and rebuilding is concerned.
2959 @item AC_CONFIG_LINKS
2960 Automake will generate rules to remove @file{configure} generated
2961 links on @samp{make distclean} and to distribute named source files as
2962 part of @samp{make dist}.
2964 As for @code{AC_CONFIG_FILES} (@pxref{Requirements}), parts of the
2965 specification using shell variables will be ignored as far as cleaning
2966 and distributing is concerned.  (There are no rebuild rules for links.)
2968 @item AC_LIBOBJ
2969 @itemx AC_LIBSOURCE
2970 @itemx AC_LIBSOURCES
2971 @vindex LIBOBJS
2972 Automake will automatically distribute any file listed in
2973 @code{AC_LIBSOURCE} or @code{AC_LIBSOURCES}.
2975 Note that the @code{AC_LIBOBJ} macro calls @code{AC_LIBSOURCE}.  So if
2976 an Autoconf macro is documented to call @samp{AC_LIBOBJ([file])}, then
2977 @file{file.c} will be distributed automatically by Automake.  This
2978 encompasses many macros like @code{AC_FUNC_ALLOCA},
2979 @code{AC_FUNC_MEMCMP}, @code{AC_REPLACE_FUNCS}, and others.
2981 By the way, direct assignments to @code{LIBOBJS} are no longer
2982 supported.  You should always use @code{AC_LIBOBJ} for this purpose.
2983 @xref{AC_LIBOBJ vs LIBOBJS, , @code{AC_LIBOBJ} vs.@: @code{LIBOBJS},
2984 autoconf, The Autoconf Manual}.
2986 @item AC_PROG_RANLIB
2987 This is required if any libraries are built in the package.
2988 @xref{Particular Programs, , Particular Program Checks, autoconf, The
2989 Autoconf Manual}.
2991 @item AC_PROG_CXX
2992 This is required if any C++ source is included.  @xref{Particular
2993 Programs, , Particular Program Checks, autoconf, The Autoconf Manual}.
2995 @item AC_PROG_OBJC
2996 This is required if any Objective C source is included.  @xref{Particular
2997 Programs, , Particular Program Checks, autoconf, The Autoconf Manual}.
2999 @item AC_PROG_F77
3000 This is required if any Fortran 77 source is included.  This macro is
3001 distributed with Autoconf version 2.13 and later.  @xref{Particular
3002 Programs, , Particular Program Checks, autoconf, The Autoconf Manual}.
3004 @item AC_F77_LIBRARY_LDFLAGS
3005 This is required for programs and shared libraries that are a mixture of
3006 languages that include Fortran 77 (@pxref{Mixing Fortran 77 With C and
3007 C++}).  @xref{Macros, , Autoconf macros supplied with Automake}.
3009 @item AC_FC_SRCEXT
3010 Automake will add the flags computed by @code{AC_FC_SRCEXT} to compilation
3011 of files with the respective source extension (@pxref{Fortran Compiler, ,
3012 Fortran Compiler Characteristics, autoconf, The Autoconf Manual}).
3014 @item AC_PROG_FC
3015 This is required if any Fortran 90/95 source is included.  This macro is
3016 distributed with Autoconf version 2.58 and later.  @xref{Particular
3017 Programs, , Particular Program Checks, autoconf, The Autoconf Manual}.
3019 @item AC_PROG_LIBTOOL
3020 Automake will turn on processing for @command{libtool} (@pxref{Top, ,
3021 Introduction, libtool, The Libtool Manual}).
3023 @item AC_PROG_YACC
3024 @vindex YACC
3025 If a Yacc source file is seen, then you must either use this macro or
3026 define the variable @code{YACC} in @file{configure.ac}.  The former is
3027 preferred (@pxref{Particular Programs, , Particular Program Checks,
3028 autoconf, The Autoconf Manual}).
3030 @item AC_PROG_LEX
3031 If a Lex source file is seen, then this macro must be used.
3032 @xref{Particular Programs, , Particular Program Checks, autoconf, The
3033 Autoconf Manual}.
3035 @item AC_REQUIRE_AUX_FILE
3036 For each @code{AC_REQUIRE_AUX_FILE([@var{file}])},
3037 @command{automake} will ensure that @file{@var{file}} exists in the
3038 aux directory, and will complain otherwise.  It
3039 will also automatically distribute the file.  This macro should be
3040 used by third-party Autoconf macros that require some supporting
3041 files in the aux directory specified with @code{AC_CONFIG_AUX_DIR}
3042 above.  @xref{Input, , Finding @command{configure} Input, autoconf,
3043 The Autoconf Manual}.
3045 @item AC_SUBST
3046 The first argument is automatically defined as a variable in each
3047 generated @file{Makefile.in}, unless @code{AM_SUBST_NOTMAKE} is also
3048 used for this variable.  @xref{Setting Output Variables, , Setting
3049 Output Variables, autoconf, The Autoconf Manual}.
3051 For every substituted variable @var{var}, @command{automake} will add
3052 a line @code{@var{var} = @var{value}} to each @file{Makefile.in} file.
3053 Many Autoconf macros invoke @code{AC_SUBST} to set output variables
3054 this way, e.g., @code{AC_PATH_XTRA} defines @code{X_CFLAGS} and
3055 @code{X_LIBS}.  Thus, you can access these variables as
3056 @code{$(X_CFLAGS)} and @code{$(X_LIBS)} in any @file{Makefile.am}
3057 if @code{AC_PATH_XTRA} is called.
3059 @item AM_C_PROTOTYPES
3060 This is required when using the deprecated de-ANSI-fication feature;
3061 @pxref{ANSI}.  @emph{It will be removed} in the next major Automake
3062 release.
3064 @item AM_CONDITIONAL
3065 This introduces an Automake conditional (@pxref{Conditionals}).
3067 @item AM_COND_IF
3068 This macro allows @code{automake} to detect subsequent access within
3069 @file{configure.ac} to a conditional previously introduced with
3070 @code{AM_CONDITIONAL}, thus enabling conditional @code{AC_CONFIG_FILES}
3071 (@pxref{Usage of Conditionals}).
3073 @item AM_GNU_GETTEXT
3074 This macro is required for packages that use GNU gettext
3075 (@pxref{gettext}).  It is distributed with gettext.  If Automake sees
3076 this macro it ensures that the package meets some of gettext's
3077 requirements.
3079 @item AM_GNU_GETTEXT_INTL_SUBDIR
3080 This macro specifies that the @file{intl/} subdirectory is to be built,
3081 even if the @code{AM_GNU_GETTEXT} macro was invoked with a first argument
3082 of @samp{external}.
3084 @item AM_MAINTAINER_MODE(@ovar{default-mode})
3085 @opindex --enable-maintainer-mode
3086 @opindex --disable-maintainer-mode
3087 This macro adds an @option{--enable-maintainer-mode} option to
3088 @command{configure}.  If this is used, @command{automake} will cause
3089 ``maintainer-only'' rules to be turned off by default in the
3090 generated @file{Makefile.in}s, unless @var{default-mode} is
3091 @samp{enable}.  This macro defines the @code{MAINTAINER_MODE}
3092 conditional, which you can use in your own @file{Makefile.am}.
3093 @xref{maintainer-mode}.
3095 @item AM_SUBST_NOTMAKE(@var{var})
3096 Prevent Automake from defining a variable @var{var}, even if it is
3097 substituted by @command{config.status}.  Normally, Automake defines a
3098 @command{make} variable for each @command{configure} substitution,
3099 i.e., for each @code{AC_SUBST([@var{var}])}.  This macro prevents that
3100 definition from Automake.  If @code{AC_SUBST} has not been called
3101 for this variable, then @code{AM_SUBST_NOTMAKE} has no effects.
3102 Preventing variable definitions may be useful for substitution of
3103 multi-line values, where @code{@var{var} = @@@var{value}@@} might yield
3104 unintended results.
3106 @item m4_include
3107 Files included by @file{configure.ac} using this macro will be
3108 detected by Automake and automatically distributed.  They will also
3109 appear as dependencies in @file{Makefile} rules.
3111 @code{m4_include} is seldom used by @file{configure.ac} authors, but
3112 can appear in @file{aclocal.m4} when @command{aclocal} detects that
3113 some required macros come from files local to your package (as opposed
3114 to macros installed in a system-wide directory, @pxref{Invoking
3115 aclocal}).
3117 @end ftable
3120 @node Invoking aclocal
3121 @section Auto-generating aclocal.m4
3123 @cindex Invoking @command{aclocal}
3124 @cindex @command{aclocal}, Invoking
3126 Automake includes a number of Autoconf macros that can be used in
3127 your package (@pxref{Macros}); some of them are actually required by
3128 Automake in certain situations.  These macros must be defined in your
3129 @file{aclocal.m4}; otherwise they will not be seen by
3130 @command{autoconf}.
3132 The @command{aclocal} program will automatically generate
3133 @file{aclocal.m4} files based on the contents of @file{configure.ac}.
3134 This provides a convenient way to get Automake-provided macros,
3135 without having to search around.  The @command{aclocal} mechanism
3136 allows other packages to supply their own macros (@pxref{Extending
3137 aclocal}).  You can also use it to maintain your own set of custom
3138 macros (@pxref{Local Macros}).
3140 At startup, @command{aclocal} scans all the @file{.m4} files it can
3141 find, looking for macro definitions (@pxref{Macro Search Path}).  Then
3142 it scans @file{configure.ac}.  Any mention of one of the macros found
3143 in the first step causes that macro, and any macros it in turn
3144 requires, to be put into @file{aclocal.m4}.
3146 @emph{Putting} the file that contains the macro definition into
3147 @file{aclocal.m4} is usually done by copying the entire text of this
3148 file, including unused macro definitions as well as both @samp{#} and
3149 @samp{dnl} comments.  If you want to make a comment that will be
3150 completely ignored by @command{aclocal}, use @samp{##} as the comment
3151 leader.
3153 When a file selected by @command{aclocal} is located in a subdirectory
3154 specified as a relative search path with @command{aclocal}'s @option{-I}
3155 argument, @command{aclocal} assumes the file belongs to the package
3156 and uses @code{m4_include} instead of copying it into
3157 @file{aclocal.m4}.  This makes the package smaller, eases dependency
3158 tracking, and cause the file to be distributed automatically.
3159 (@xref{Local Macros}, for an example.)  Any macro that is found in a
3160 system-wide directory, or via an absolute search path will be copied.
3161 So use @samp{-I `pwd`/reldir} instead of @samp{-I reldir} whenever
3162 some relative directory should be considered outside the package.
3164 The contents of @file{acinclude.m4}, if this file exists, are also
3165 automatically included in @file{aclocal.m4}.  We recommend against
3166 using @file{acinclude.m4} in new packages (@pxref{Local Macros}).
3168 @vindex AUTOM4TE
3169 @cindex autom4te
3170 While computing @file{aclocal.m4}, @command{aclocal} runs
3171 @command{autom4te} (@pxref{Using autom4te, , Using @command{Autom4te},
3172 autoconf, The Autoconf Manual}) in order to trace the macros that are
3173 really used, and omit from @file{aclocal.m4} all macros that are
3174 mentioned but otherwise unexpanded (this can happen when a macro is
3175 called conditionally).  @command{autom4te} is expected to be in the
3176 @env{PATH}, just as @command{autoconf}.  Its location can be
3177 overridden using the @env{AUTOM4TE} environment variable.
3179 @menu
3180 * aclocal Options::             Options supported by aclocal
3181 * Macro Search Path::           How aclocal finds .m4 files
3182 * Extending aclocal::           Writing your own aclocal macros
3183 * Local Macros::                Organizing local macros
3184 * Serials::                     Serial lines in Autoconf macros
3185 * Future of aclocal::           aclocal's scheduled death
3186 @end menu
3188 @node aclocal Options
3189 @subsection aclocal Options
3191 @cindex @command{aclocal}, Options
3192 @cindex Options, @command{aclocal}
3194 @command{aclocal} accepts the following options:
3196 @table @code
3197 @item --acdir=@var{dir}
3198 @opindex --acdir
3199 Look for the macro files in @var{dir} instead of the installation
3200 directory.  This is typically used for debugging.
3202 @item --diff[=@var{command}]
3203 @opindex --diff
3204 Run @var{command} on M4 file that would be installed or overwritten
3205 by @option{--install}.  The default @var{command} is @samp{diff -u}.
3206 This option implies @option{--install} and @option{--dry-run}.
3208 @item --dry-run
3209 @opindex --dry-run
3210 Do not actually overwrite (or create) @file{aclocal.m4} and M4
3211 files installed by @option{--install}.
3213 @item --help
3214 @opindex --help
3215 Print a summary of the command line options and exit.
3217 @item -I @var{dir}
3218 @opindex -I
3219 Add the directory @var{dir} to the list of directories searched for
3220 @file{.m4} files.
3222 @item --install
3223 @opindex --install
3224 Install system-wide third-party macros into the first directory
3225 specified with @samp{-I @var{dir}} instead of copying them in the
3226 output file.
3228 @cindex serial number and @option{--install}
3229 When this option is used, and only when this option is used,
3230 @command{aclocal} will also honor @samp{#serial @var{number}} lines
3231 that appear in macros: an M4 file is ignored if there exists another
3232 M4 file with the same basename and a greater serial number in the
3233 search path (@pxref{Serials}).
3235 @item --force
3236 @opindex --force
3237 Always overwrite the output file.  The default is to overwrite the output
3238 file only when really needed, i.e., when its contents changes or if one
3239 of its dependencies is younger.
3241 This option forces the update of @file{aclocal.m4} (or the file
3242 specified with @file{--output} below) and only this file, it has
3243 absolutely no influence on files that may need to be installed by
3244 @option{--install}.
3246 @item --output=@var{file}
3247 @opindex --output
3248 Cause the output to be put into @var{file} instead of @file{aclocal.m4}.
3250 @item --print-ac-dir
3251 @opindex --print-ac-dir
3252 Prints the name of the directory that @command{aclocal} will search to
3253 find third-party @file{.m4} files.  When this option is given, normal
3254 processing is suppressed.  This option can be used by a package to
3255 determine where to install a macro file.
3257 @item --verbose
3258 @opindex --verbose
3259 Print the names of the files it examines.
3261 @item --version
3262 @opindex --version
3263 Print the version number of Automake and exit.
3265 @item -W CATEGORY
3266 @item --warnings=@var{category}
3267 @opindex -W
3268 @opindex --warnings
3269 Output warnings falling in @var{category}.  @var{category} can be
3270 one of:
3271 @table @code
3272 @item syntax
3273 dubious syntactic constructs, underquoted macros, unused macros, etc.
3274 @item unsupported
3275 unknown macros
3276 @item all
3277 all the warnings, this is the default
3278 @item none
3279 turn off all the warnings
3280 @item error
3281 treat warnings as errors
3282 @end table
3284 All warnings are output by default.
3286 @vindex WARNINGS
3287 The environment variable @env{WARNINGS} is honored in the same
3288 way as it is for @command{automake} (@pxref{Invoking Automake}).
3290 @end table
3292 @node Macro Search Path
3293 @subsection Macro Search Path
3295 @cindex Macro search path
3296 @cindex @command{aclocal} search path
3298 By default, @command{aclocal} searches for @file{.m4} files in the following
3299 directories, in this order:
3301 @table @code
3302 @item @var{acdir-APIVERSION}
3303 This is where the @file{.m4} macros distributed with Automake itself
3304 are stored.  @var{APIVERSION} depends on the Automake release used;
3305 for Automake 1.6.x, @var{APIVERSION} = @code{1.6}.
3307 @item @var{acdir}
3308 This directory is intended for third party @file{.m4} files, and is
3309 configured when @command{automake} itself is built.  This is
3310 @file{@@datadir@@/aclocal/}, which typically
3311 expands to @file{$@{prefix@}/share/aclocal/}.  To find the compiled-in
3312 value of @var{acdir}, use the @option{--print-ac-dir} option
3313 (@pxref{aclocal Options}).
3314 @end table
3316 As an example, suppose that @command{automake-1.6.2} was configured with
3317 @option{--prefix=@-/usr/local}.  Then, the search path would be:
3319 @enumerate
3320 @item @file{/usr/local/share/aclocal-1.6/}
3321 @item @file{/usr/local/share/aclocal/}
3322 @end enumerate
3324 As explained in (@pxref{aclocal Options}), there are several options that
3325 can be used to change or extend this search path.
3327 @subsubheading Modifying the Macro Search Path: @option{--acdir}
3329 The most erroneous option to modify the search path is
3330 @option{--acdir=@var{dir}}, which changes default directory and
3331 drops the @var{APIVERSION} directory.  For example, if one specifies
3332 @samp{--acdir=/opt/private/}, then the search path becomes:
3334 @enumerate
3335 @item @file{/opt/private/}
3336 @end enumerate
3338 This option, @option{--acdir}, is intended for use by the internal
3339 Automake test suite only; it is not ordinarily needed by end-users.
3341 @subsubheading Modifying the Macro Search Path: @samp{-I @var{dir}}
3343 Any extra directories specified using @option{-I} options
3344 (@pxref{aclocal Options}) are @emph{prepended} to this search list.  Thus,
3345 @samp{aclocal -I /foo -I /bar} results in the following search path:
3347 @enumerate
3348 @item @file{/foo}
3349 @item @file{/bar}
3350 @item @var{acdir}-@var{APIVERSION}
3351 @item @var{acdir}
3352 @end enumerate
3354 @subsubheading Modifying the Macro Search Path: @file{dirlist}
3355 @cindex @file{dirlist}
3357 There is a third mechanism for customizing the search path.  If a
3358 @file{dirlist} file exists in @var{acdir}, then that file is assumed to
3359 contain a list of directory patterns, one per line.  @command{aclocal}
3360 expands these patterns to directory names, and adds them to the search
3361 list @emph{after} all other directories.  @file{dirlist} entries may
3362 use shell wildcards such as @samp{*}, @samp{?}, or @code{[...]}.
3364 For example, suppose
3365 @file{@var{acdir}/dirlist} contains the following:
3367 @example
3368 /test1
3369 /test2
3370 /test3*
3371 @end example
3373 @noindent
3374 and that @command{aclocal} was called with the @samp{-I /foo -I /bar} options.
3375 Then, the search path would be
3377 @c @code looks better than @file here
3378 @enumerate
3379 @item @code{/foo}
3380 @item @code{/bar}
3381 @item @var{acdir}-@var{APIVERSION}
3382 @item @var{acdir}
3383 @item @code{/test1}
3384 @item @code{/test2}
3385 @end enumerate
3387 @noindent
3388 and all directories with path names starting with @code{/test3}.
3390 If the @option{--acdir=@var{dir}} option is used, then @command{aclocal}
3391 will search for the @file{dirlist} file in @var{dir}.  In the
3392 @samp{--acdir=/opt/private/} example above, @command{aclocal} would look
3393 for @file{/opt/private/dirlist}.  Again, however, the @option{--acdir}
3394 option is intended for use by the internal Automake test suite only;
3395 @option{--acdir} is not ordinarily needed by end-users.
3397 @file{dirlist} is useful in the following situation: suppose that
3398 @command{automake} version @code{1.6.2} is installed with
3399 @samp{--prefix=/usr} by the system vendor.  Thus, the default search
3400 directories are
3402 @c @code looks better than @file here
3403 @enumerate
3404 @item @code{/usr/share/aclocal-1.6/}
3405 @item @code{/usr/share/aclocal/}
3406 @end enumerate
3408 However, suppose further that many packages have been manually
3409 installed on the system, with $prefix=/usr/local, as is typical.  In
3410 that case, many of these ``extra'' @file{.m4} files are in
3411 @file{/usr/local/share/aclocal}.  The only way to force
3412 @file{/usr/bin/aclocal} to find these ``extra'' @file{.m4} files is to
3413 always call @samp{aclocal -I /usr/local/share/aclocal}.  This is
3414 inconvenient.  With @file{dirlist}, one may create a file
3415 @file{/usr/share/aclocal/dirlist} containing only the single line
3417 @example
3418 /usr/local/share/aclocal
3419 @end example
3421 Now, the ``default'' search path on the affected system is
3423 @c @code looks better than @file here
3424 @enumerate
3425 @item @code{/usr/share/aclocal-1.6/}
3426 @item @code{/usr/share/aclocal/}
3427 @item @code{/usr/local/share/aclocal/}
3428 @end enumerate
3430 without the need for @option{-I} options; @option{-I} options can be reserved
3431 for project-specific needs (@file{my-source-dir/m4/}), rather than
3432 using it to work around local system-dependent tool installation
3433 directories.
3435 Similarly, @file{dirlist} can be handy if you have installed a local
3436 copy of Automake in your account and want @command{aclocal} to look for
3437 macros installed at other places on the system.
3440 @node Extending aclocal
3441 @subsection Writing your own aclocal macros
3443 @cindex @command{aclocal}, extending
3444 @cindex Extending @command{aclocal}
3446 The @command{aclocal} program doesn't have any built-in knowledge of any
3447 macros, so it is easy to extend it with your own macros.
3449 This can be used by libraries that want to supply their own Autoconf
3450 macros for use by other programs.  For instance, the @command{gettext}
3451 library supplies a macro @code{AM_GNU_GETTEXT} that should be used by
3452 any package using @command{gettext}.  When the library is installed, it
3453 installs this macro so that @command{aclocal} will find it.
3455 A macro file's name should end in @file{.m4}.  Such files should be
3456 installed in @file{$(datadir)/aclocal}.  This is as simple as writing:
3458 @c Keep in sync with primary-prefix-couples-documented-valid.test.
3459 @example
3460 aclocaldir = $(datadir)/aclocal
3461 aclocal_DATA = mymacro.m4 myothermacro.m4
3462 @end example
3464 @noindent
3465 Please do use @file{$(datadir)/aclocal}, and not something based on
3466 the result of @samp{aclocal --print-ac-dir}.  @xref{Hard-Coded Install
3467 Paths}, for arguments.
3469 A file of macros should be a series of properly quoted
3470 @code{AC_DEFUN}'s (@pxref{Macro Definitions, , , autoconf, The
3471 Autoconf Manual}).  The @command{aclocal} programs also understands
3472 @code{AC_REQUIRE} (@pxref{Prerequisite Macros, , , autoconf, The
3473 Autoconf Manual}), so it is safe to put each macro in a separate file.
3474 Each file should have no side effects but macro definitions.
3475 Especially, any call to @code{AC_PREREQ} should be done inside the
3476 defined macro, not at the beginning of the file.
3478 @cindex underquoted @code{AC_DEFUN}
3479 @acindex AC_DEFUN
3480 @acindex AC_PREREQ
3482 Starting with Automake 1.8, @command{aclocal} will warn about all
3483 underquoted calls to @code{AC_DEFUN}.  We realize this will annoy a
3484 lot of people, because @command{aclocal} was not so strict in the past
3485 and many third party macros are underquoted; and we have to apologize
3486 for this temporary inconvenience.  The reason we have to be stricter
3487 is that a future implementation of @command{aclocal} (@pxref{Future of
3488 aclocal}) will have to temporarily include all these third party
3489 @file{.m4} files, maybe several times, including even files that are
3490 not actually needed.  Doing so should alleviate many problems of the
3491 current implementation, however it requires a stricter style from the
3492 macro authors.  Hopefully it is easy to revise the existing macros.
3493 For instance,
3495 @example
3496 # bad style
3497 AC_PREREQ(2.57)
3498 AC_DEFUN(AX_FOOBAR,
3499 [AC_REQUIRE([AX_SOMETHING])dnl
3500 AX_FOO
3501 AX_BAR
3503 @end example
3505 @noindent
3506 should be rewritten as
3508 @example
3509 AC_DEFUN([AX_FOOBAR],
3510 [AC_PREREQ([2.57])dnl
3511 AC_REQUIRE([AX_SOMETHING])dnl
3512 AX_FOO
3513 AX_BAR
3515 @end example
3517 Wrapping the @code{AC_PREREQ} call inside the macro ensures that
3518 Autoconf 2.57 will not be required if @code{AX_FOOBAR} is not actually
3519 used.  Most importantly, quoting the first argument of @code{AC_DEFUN}
3520 allows the macro to be redefined or included twice (otherwise this
3521 first argument would be expanded during the second definition).  For
3522 consistency we like to quote even arguments such as @code{2.57} that
3523 do not require it.
3525 If you have been directed here by the @command{aclocal} diagnostic but
3526 are not the maintainer of the implicated macro, you will want to
3527 contact the maintainer of that macro.  Please make sure you have the
3528 latest version of the macro and that the problem hasn't already been
3529 reported before doing so: people tend to work faster when they aren't
3530 flooded by mails.
3532 Another situation where @command{aclocal} is commonly used is to
3533 manage macros that are used locally by the package, @ref{Local
3534 Macros}.
3536 @node Local Macros
3537 @subsection Handling Local Macros
3539 Feature tests offered by Autoconf do not cover all needs.  People
3540 often have to supplement existing tests with their own macros, or
3541 with third-party macros.
3543 There are two ways to organize custom macros in a package.
3545 The first possibility (the historical practice) is to list all your
3546 macros in @file{acinclude.m4}.  This file will be included in
3547 @file{aclocal.m4} when you run @command{aclocal}, and its macro(s) will
3548 henceforth be visible to @command{autoconf}.  However if it contains
3549 numerous macros, it will rapidly become difficult to maintain, and it
3550 will be almost impossible to share macros between packages.
3552 @vindex ACLOCAL_AMFLAGS
3553 The second possibility, which we do recommend, is to write each macro
3554 in its own file and gather all these files in a directory.  This
3555 directory is usually called @file{m4/}.  To build @file{aclocal.m4},
3556 one should therefore instruct @command{aclocal} to scan @file{m4/}.
3557 From the command line, this is done with @samp{aclocal -I m4}.  The
3558 top-level @file{Makefile.am} should also be updated to define
3560 @example
3561 ACLOCAL_AMFLAGS = -I m4
3562 @end example
3564 @code{ACLOCAL_AMFLAGS} contains options to pass to @command{aclocal}
3565 when @file{aclocal.m4} is to be rebuilt by @command{make}.  This line is
3566 also used by @command{autoreconf} (@pxref{autoreconf Invocation, ,
3567 Using @command{autoreconf} to Update @file{configure} Scripts,
3568 autoconf, The Autoconf Manual}) to run @command{aclocal} with suitable
3569 options, or by @command{autopoint} (@pxref{autopoint Invocation, ,
3570 Invoking the @command{autopoint} Program, gettext, GNU gettext tools})
3571 and @command{gettextize} (@pxref{gettextize Invocation, , Invoking the
3572 @command{gettextize} Program, gettext, GNU gettext tools}) to locate
3573 the place where Gettext's macros should be installed.  So even if you
3574 do not really care about the rebuild rules, you should define
3575 @code{ACLOCAL_AMFLAGS}.
3577 When @samp{aclocal -I m4} is run, it will build an @file{aclocal.m4}
3578 that @code{m4_include}s any file from @file{m4/} that defines a
3579 required macro.  Macros not found locally will still be searched in
3580 system-wide directories, as explained in @ref{Macro Search Path}.
3582 Custom macros should be distributed for the same reason that
3583 @file{configure.ac} is: so that other people have all the sources of
3584 your package if they want to work on it.  Actually, this distribution
3585 happens automatically because all @code{m4_include}d files are
3586 distributed.
3588 However there is no consensus on the distribution of third-party
3589 macros that your package may use.  Many libraries install their own
3590 macro in the system-wide @command{aclocal} directory (@pxref{Extending
3591 aclocal}).  For instance, Guile ships with a file called
3592 @file{guile.m4} that contains the macro @code{GUILE_FLAGS} that can
3593 be used to define setup compiler and linker flags appropriate for
3594 using Guile.  Using @code{GUILE_FLAGS} in @file{configure.ac} will
3595 cause @command{aclocal} to copy @file{guile.m4} into
3596 @file{aclocal.m4}, but as @file{guile.m4} is not part of the project,
3597 it will not be distributed.  Technically, that means a user who
3598 needs to rebuild @file{aclocal.m4} will have to install Guile first.
3599 This is probably OK, if Guile already is a requirement to build the
3600 package.  However, if Guile is only an optional feature, or if your
3601 package might run on architectures where Guile cannot be installed,
3602 this requirement will hinder development.  An easy solution is to copy
3603 such third-party macros in your local @file{m4/} directory so they get
3604 distributed.
3606 Since Automake 1.10, @command{aclocal} offers an option to copy these
3607 system-wide third-party macros in your local macro directory, solving
3608 the above problem.  Simply use:
3610 @example
3611 ACLOCAL_AMFLAGS = -I m4 --install
3612 @end example
3614 @noindent
3615 With this setup, system-wide macros will be copied to @file{m4/}
3616 the first time you run @command{autoreconf}.  Then the locally
3617 installed macros will have precedence over the system-wide installed
3618 macros each time @command{aclocal} is run again.
3620 One reason why you should keep @option{--install} in the flags even
3621 after the first run is that when you later edit @file{configure.ac}
3622 and depend on a new macro, this macro will be installed in your
3623 @file{m4/} automatically.  Another one is that serial numbers
3624 (@pxref{Serials}) can be used to update the macros in your source tree
3625 automatically when new system-wide versions are installed.  A serial
3626 number should be a single line of the form
3628 @example
3629 #serial @var{nnn}
3630 @end example
3632 @noindent
3633 where @var{nnn} contains only digits and dots.  It should appear in
3634 the M4 file before any macro definition.  It is a good practice to
3635 maintain a serial number for each macro you distribute, even if you do
3636 not use the @option{--install} option of @command{aclocal}: this allows
3637 other people to use it.
3640 @node Serials
3641 @subsection Serial Numbers
3642 @cindex serial numbers in macros
3643 @cindex macro serial numbers
3644 @cindex @code{#serial} syntax
3645 @cindex @command{aclocal} and serial numbers
3647 Because third-party macros defined in @file{*.m4} files are naturally
3648 shared between multiple projects, some people like to version them.
3649 This makes it easier to tell which of two M4 files is newer.  Since at
3650 least 1996, the tradition is to use a @samp{#serial} line for this.
3652 A serial number should be a single line of the form
3654 @example
3655 # serial @var{version}
3656 @end example
3658 @noindent
3659 where @var{version} is a version number containing only digits and
3660 dots.  Usually people use a single integer, and they increment it each
3661 time they change the macro (hence the name of ``serial'').  Such a
3662 line should appear in the M4 file before any macro definition.
3664 The @samp{#} must be the first character on the line,
3665 and it is OK to have extra words after the version, as in
3667 @example
3668 #serial @var{version} @var{garbage}
3669 @end example
3671 Normally these serial numbers are completely ignored by
3672 @command{aclocal} and @command{autoconf}, like any genuine comment.
3673 However when using @command{aclocal}'s @option{--install} feature, these
3674 serial numbers will modify the way @command{aclocal} selects the
3675 macros to install in the package: if two files with the same basename
3676 exist in your search path, and if at least one of them uses a
3677 @samp{#serial} line, @command{aclocal} will ignore the file that has
3678 the older @samp{#serial} line (or the file that has none).
3680 Note that a serial number applies to a whole M4 file, not to any macro
3681 it contains.  A file can contains multiple macros, but only one
3682 serial.
3684 Here is a use case that illustrates the use of @option{--install} and
3685 its interaction with serial numbers.  Let's assume we maintain a
3686 package called MyPackage, the @file{configure.ac} of which requires a
3687 third-party macro @code{AX_THIRD_PARTY} defined in
3688 @file{/usr/share/aclocal/thirdparty.m4} as follows:
3690 @example
3691 # serial 1
3692 AC_DEFUN([AX_THIRD_PARTY], [...])
3693 @end example
3695 MyPackage uses an @file{m4/} directory to store local macros as
3696 explained in @ref{Local Macros}, and has
3698 @example
3699 ACLOCAL_AMFLAGS = -I m4 --install
3700 @end example
3702 @noindent
3703 in its top-level @file{Makefile.am}.
3705 Initially the @file{m4/} directory is empty.  The first time we run
3706 @command{autoreconf}, it will fetch the options to pass to
3707 @command{aclocal} in @file{Makefile.am}, and run @samp{aclocal -I m4
3708 --install}.  @command{aclocal} will notice that
3710 @itemize @bullet
3711 @item
3712 @file{configure.ac} uses @code{AX_THIRD_PARTY}
3713 @item
3714 No local macros define @code{AX_THIRD_PARTY}
3715 @item
3716 @file{/usr/share/aclocal/thirdparty.m4} defines @code{AX_THIRD_PARTY}
3717 with serial 1.
3718 @end itemize
3720 @noindent
3721 Because @file{/usr/share/aclocal/thirdparty.m4} is a system-wide macro
3722 and @command{aclocal} was given the @option{--install} option, it will
3723 copy this file in @file{m4/thirdparty.m4}, and output an
3724 @file{aclocal.m4} that contains @samp{m4_include([m4/thirdparty.m4])}.
3726 The next time @samp{aclocal -I m4 --install} is run (either via
3727 @command{autoreconf}, by hand, or from the @file{Makefile} rebuild
3728 rules) something different happens.  @command{aclocal} notices that
3730 @itemize @bullet
3731 @item
3732 @file{configure.ac} uses @code{AX_THIRD_PARTY}
3733 @item
3734 @file{m4/thirdparty.m4} defines @code{AX_THIRD_PARTY}
3735 with serial 1.
3736 @item
3737 @file{/usr/share/aclocal/thirdparty.m4} defines @code{AX_THIRD_PARTY}
3738 with serial 1.
3739 @end itemize
3741 @noindent
3742 Because both files have the same serial number, @command{aclocal} uses
3743 the first it found in its search path order (@pxref{Macro Search
3744 Path}).  @command{aclocal} therefore ignores
3745 @file{/usr/share/aclocal/thirdparty.m4} and outputs an
3746 @file{aclocal.m4} that contains @samp{m4_include([m4/thirdparty.m4])}.
3748 Local directories specified with @option{-I} are always searched before
3749 system-wide directories, so a local file will always be preferred to
3750 the system-wide file in case of equal serial numbers.
3752 Now suppose the system-wide third-party macro is changed.  This can
3753 happen if the package installing this macro is updated.  Let's suppose
3754 the new macro has serial number 2.  The next time @samp{aclocal -I m4
3755 --install} is run the situation is the following:
3757 @itemize @bullet
3758 @item
3759 @file{configure.ac} uses @code{AX_THIRD_PARTY}
3760 @item
3761 @file{m4/thirdparty.m4} defines @code{AX_THIRD_PARTY}
3762 with serial 1.
3763 @item
3764 @file{/usr/share/aclocal/thirdparty.m4} defines @code{AX_THIRD_PARTY}
3765 with serial 2.
3766 @end itemize
3768 @noindent
3769 When @command{aclocal} sees a greater serial number, it immediately
3770 forgets anything it knows from files that have the same basename and a
3771 smaller serial number.  So after it has found
3772 @file{/usr/share/aclocal/thirdparty.m4} with serial 2,
3773 @command{aclocal} will proceed as if it had never seen
3774 @file{m4/thirdparty.m4}.  This brings us back to a situation similar
3775 to that at the beginning of our example, where no local file defined
3776 the macro.  @command{aclocal} will install the new version of the
3777 macro in @file{m4/thirdparty.m4}, in this case overriding the old
3778 version.  MyPackage just had its macro updated as a side effect of
3779 running @command{aclocal}.
3781 If you are leery of letting @command{aclocal} update your local macro,
3782 you can run @samp{aclocal -I m4 --diff} to review the changes
3783 @samp{aclocal -I m4 --install} would perform on these macros.
3785 Finally, note that the @option{--force} option of @command{aclocal} has
3786 absolutely no effect on the files installed by @option{--install}.  For
3787 instance, if you have modified your local macros, do not expect
3788 @option{--install --force} to replace the local macros by their
3789 system-wide versions.  If you want to do so, simply erase the local
3790 macros you want to revert, and run @samp{aclocal -I m4 --install}.
3793 @node Future of aclocal
3794 @subsection The Future of @command{aclocal}
3795 @cindex @command{aclocal}'s scheduled death
3797 @command{aclocal} is expected to disappear.  This feature really
3798 should not be offered by Automake.  Automake should focus on
3799 generating @file{Makefile}s; dealing with M4 macros really is
3800 Autoconf's job.  The fact that some people install Automake just to use
3801 @command{aclocal}, but do not use @command{automake} otherwise is an
3802 indication of how that feature is misplaced.
3804 The new implementation will probably be done slightly differently.
3805 For instance, it could enforce the @file{m4/}-style layout discussed in
3806 @ref{Local Macros}.
3808 We have no idea when and how this will happen.  This has been
3809 discussed several times in the past, but someone still has to commit
3810 to that non-trivial task.
3812 From the user point of view, @command{aclocal}'s removal might turn
3813 out to be painful.  There is a simple precaution that you may take to
3814 make that switch more seamless: never call @command{aclocal} yourself.
3815 Keep this guy under the exclusive control of @command{autoreconf} and
3816 Automake's rebuild rules.  Hopefully you won't need to worry about
3817 things breaking, when @command{aclocal} disappears, because everything
3818 will have been taken care of.  If otherwise you used to call
3819 @command{aclocal} directly yourself or from some script, you will
3820 quickly notice the change.
3822 Many packages come with a script called @file{bootstrap.sh} or
3823 @file{autogen.sh}, that will just call @command{aclocal},
3824 @command{libtoolize}, @command{gettextize} or @command{autopoint},
3825 @command{autoconf}, @command{autoheader}, and @command{automake} in
3826 the right order.  Actually this is precisely what @command{autoreconf}
3827 can do for you.  If your package has such a @file{bootstrap.sh} or
3828 @file{autogen.sh} script, consider using @command{autoreconf}.  That
3829 should simplify its logic a lot (less things to maintain, yum!), it's
3830 even likely you will not need the script anymore, and more to the point
3831 you will not call @command{aclocal} directly anymore.
3833 For the time being, third-party packages should continue to install
3834 public macros into @file{/usr/share/aclocal/}.  If @command{aclocal}
3835 is replaced by another tool it might make sense to rename the
3836 directory, but supporting @file{/usr/share/aclocal/} for backward
3837 compatibility should be really easy provided all macros are properly
3838 written (@pxref{Extending aclocal}).
3842 @node Macros
3843 @section Autoconf macros supplied with Automake
3845 Automake ships with several Autoconf macros that you can use from your
3846 @file{configure.ac}.  When you use one of them it will be included by
3847 @command{aclocal} in @file{aclocal.m4}.
3849 @menu
3850 * Public Macros::               Macros that you can use.
3851 * Obsolete Macros::             Macros that you should stop using.
3852 * Private Macros::              Macros that you should not use.
3853 @end menu
3855 @c consider generating the following subsections automatically from m4 files.
3857 @node Public Macros
3858 @subsection Public Macros
3860 @table @code
3862 @item AM_ENABLE_MULTILIB
3863 @acindex AM_ENABLE_MULTILIB
3864 This is used when a ``multilib'' library is being built.  The first
3865 optional argument is the name of the @file{Makefile} being generated; it
3866 defaults to @samp{Makefile}.  The second optional argument is used to find
3867 the top source directory; it defaults to the empty string (generally
3868 this should not be used unless you are familiar with the internals).
3869 @xref{Multilibs}.
3871 @item AM_INIT_AUTOMAKE([OPTIONS])
3872 @itemx AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
3873 @acindex AM_INIT_AUTOMAKE
3874 Runs many macros required for proper operation of the generated Makefiles.
3876 @vindex AUTOMAKE_OPTIONS
3877 This macro has two forms, the first of which is preferred.
3878 In this form, @code{AM_INIT_AUTOMAKE} is called with a
3879 single argument: a space-separated list of Automake options that should
3880 be applied to every @file{Makefile.am} in the tree.  The effect is as if
3881 each option were listed in @code{AUTOMAKE_OPTIONS} (@pxref{Options}).
3883 @acindex AC_INIT
3884 The second, deprecated, form of @code{AM_INIT_AUTOMAKE} has two required
3885 arguments: the package and the version number.  This form is
3886 obsolete because the @var{package} and @var{version} can be obtained
3887 from Autoconf's @code{AC_INIT} macro (which itself has an old and a new
3888 form).
3890 If your @file{configure.ac} has:
3892 @example
3893 AC_INIT([src/foo.c])
3894 AM_INIT_AUTOMAKE([mumble], [1.5])
3895 @end example
3897 @noindent
3898 you can modernize it as follows:
3900 @example
3901 AC_INIT([mumble], [1.5])
3902 AC_CONFIG_SRCDIR([src/foo.c])
3903 AM_INIT_AUTOMAKE
3904 @end example
3906 Note that if you're upgrading your @file{configure.ac} from an earlier
3907 version of Automake, it is not always correct to simply move the
3908 package and version arguments from @code{AM_INIT_AUTOMAKE} directly to
3909 @code{AC_INIT}, as in the example above.  The first argument to
3910 @code{AC_INIT} should be the name of your package (e.g., @samp{GNU
3911 Automake}), not the tarball name (e.g., @samp{automake}) that you used
3912 to pass to @code{AM_INIT_AUTOMAKE}.  Autoconf tries to derive a
3913 tarball name from the package name, which should work for most but not
3914 all package names.  (If it doesn't work for yours, you can use the
3915 four-argument form of @code{AC_INIT} to provide the tarball name
3916 explicitly).
3918 @cindex @code{PACKAGE}, prevent definition
3919 @cindex @code{VERSION}, prevent definition
3920 @opindex no-define
3921 By default this macro @code{AC_DEFINE}'s @code{PACKAGE} and
3922 @code{VERSION}.  This can be avoided by passing the @option{no-define}
3923 option, as in:
3924 @example
3925 AM_INIT_AUTOMAKE([gnits 1.5 no-define dist-bzip2])
3926 @end example
3927 or by passing a third non-empty argument to the obsolete form.
3929 @item AM_PATH_LISPDIR
3930 @acindex AM_PATH_LISPDIR
3931 @vindex EMACS
3932 @vindex lispdir
3933 Searches for the program @command{emacs}, and, if found, sets the
3934 output variable @code{lispdir} to the full path to Emacs' site-lisp
3935 directory.
3937 Note that this test assumes the @command{emacs} found to be a version
3938 that supports Emacs Lisp (such as GNU Emacs or XEmacs).  Other
3939 emacsen can cause this test to hang (some, like old versions of
3940 MicroEmacs, start up in interactive mode, requiring @kbd{C-x C-c} to
3941 exit, which is hardly obvious for a non-emacs user).  In most cases,
3942 however, you should be able to use @kbd{C-c} to kill the test.  In
3943 order to avoid problems, you can set @env{EMACS} to ``no'' in the
3944 environment, or use the @option{--with-lispdir} option to
3945 @command{configure} to explicitly set the correct path (if you're sure
3946 you have an @command{emacs} that supports Emacs Lisp).
3948 @item AM_PROG_AR(@ovar{act-if-fail})
3949 @acindex AM_PROG_AR
3950 @vindex AR
3951 You must use this macro when you use the archiver in your project, if
3952 you want support for unusual archivers such as Microsoft lib.  The
3953 content of the optional argument is executed if the archiver
3954 interface is not recognized; the default action is to abort configure
3955 with an error message.
3957 @item AM_PROG_AS
3958 @acindex AM_PROG_AS
3959 @vindex CCAS
3960 @vindex CCASFLAGS
3961 Use this macro when you have assembly code in your project.  This will
3962 choose the assembler for you (by default the C compiler) and set
3963 @code{CCAS}, and will also set @code{CCASFLAGS} if required.
3965 @item AM_PROG_CC_C_O
3966 @acindex AM_PROG_CC_C_O
3967 @acindex AC_PROG_CC_C_O
3968 This is like @code{AC_PROG_CC_C_O}, but it generates its results in
3969 the manner required by Automake.  You must use this instead of
3970 @code{AC_PROG_CC_C_O} when you need this functionality, that is, when
3971 using per-target flags or subdir-objects with C sources.
3973 @item AM_PROG_LEX
3974 @acindex AM_PROG_LEX
3975 @acindex AC_PROG_LEX
3976 @cindex HP-UX 10, @command{lex} problems
3977 @cindex @command{lex} problems with HP-UX 10
3978 Like @code{AC_PROG_LEX} (@pxref{Particular Programs, , Particular
3979 Program Checks, autoconf, The Autoconf Manual}), but uses the
3980 @command{missing} script on systems that do not have @command{lex}.
3981 HP-UX 10 is one such system.
3983 @item AM_PROG_GCJ
3984 @acindex AM_PROG_GCJ
3985 @vindex GCJ
3986 @vindex GCJFLAGS
3987 This macro finds the @command{gcj} program or causes an error.  It sets
3988 @code{GCJ} and @code{GCJFLAGS}.  @command{gcj} is the Java front-end to the
3989 GNU Compiler Collection.
3991 @item AM_PROG_UPC([@var{compiler-search-list}])
3992 @acindex AM_PROG_UPC
3993 @vindex UPC
3994 Find a compiler for Unified Parallel C and define the @code{UPC}
3995 variable.  The default @var{compiler-search-list} is @samp{upcc upc}.
3996 This macro will abort @command{configure} if no Unified Parallel C
3997 compiler is found.
3999 @item AM_SILENT_RULES
4000 @acindex AM_SILENT_RULES
4001 Enable the machinery for less verbose build output (@pxref{Options}).
4003 @item AM_WITH_DMALLOC
4004 @acindex AM_WITH_DMALLOC
4005 @cindex @command{dmalloc}, support for
4006 @vindex WITH_DMALLOC
4007 @opindex --with-dmalloc
4008 Add support for the @uref{http://dmalloc.com/, Dmalloc package}.  If
4009 the user runs @command{configure} with @option{--with-dmalloc}, then
4010 define @code{WITH_DMALLOC} and add @option{-ldmalloc} to @code{LIBS}.
4012 @item AM_WITH_REGEX
4013 @acindex AM_WITH_REGEX
4014 @vindex WITH_REGEX
4015 @opindex --with-regex
4016 @cindex regex package
4017 @cindex rx package
4018 Adds @option{--with-regex} to the @command{configure} command line.  If
4019 specified (the default), then the @samp{regex} regular expression
4020 library is used, @file{regex.o} is put into @code{LIBOBJS}, and
4021 @code{WITH_REGEX} is defined.  If @option{--without-regex} is given, then
4022 the @code{rx} regular expression library is used, and @file{rx.o} is put
4023 into @code{LIBOBJS}.
4025 @end table
4028 @node Obsolete Macros
4029 @subsection Obsolete Macros
4030 @cindex obsolete macros
4031 @cindex autoupdate
4033 Although using some of the following macros was required in past
4034 releases, you should not use any of them in new code.  Running
4035 @command{autoupdate} should adjust your @file{configure.ac}
4036 automatically (@pxref{autoupdate Invocation, , Using
4037 @command{autoupdate} to Modernize @file{configure.ac}, autoconf, The
4038 Autoconf Manual}).
4040 @table @code
4041 @item AM_C_PROTOTYPES
4042 @acindex AM_C_PROTOTYPES
4043 @vindex ANSI2KNR
4044 @vindex U
4045 Check to see if function prototypes are understood by the compiler.  If
4046 so, define @samp{PROTOTYPES} and set the output variables @code{U} and
4047 @code{ANSI2KNR} to the empty string.  Otherwise, set @code{U} to
4048 @samp{_} and @code{ANSI2KNR} to @samp{./ansi2knr}.  Automake used these
4049 values to implement the deprecated de-ANSI-fication feature; however,
4050 support for @emph{that feature will be removed} in the next major Automake
4051 release, and then @emph{these macros and variables will go away as well}.
4053 @item AM_CONFIG_HEADER
4054 @acindex AM_CONFIG_HEADER
4055 Automake will generate rules to automatically regenerate the config
4056 header.  This obsolete macro is a synonym of @code{AC_CONFIG_HEADERS}
4057 today (@pxref{Optional}).
4059 @item AM_HEADER_TIOCGWINSZ_NEEDS_SYS_IOCTL
4060 @acindex AM_HEADER_TIOCGWINSZ_NEEDS_SYS_IOCTL
4061 If the use of @code{TIOCGWINSZ} requires @file{<sys/ioctl.h>}, then
4062 define @code{GWINSZ_IN_SYS_IOCTL}.  Otherwise @code{TIOCGWINSZ} can be
4063 found in @file{<termios.h>}.  This macro is obsolete, you should
4064 use Autoconf's @code{AC_HEADER_TIOCGWINSZ} instead.
4066 @item AM_PROG_MKDIR_P
4067 @acindex AM_PROG_MKDIR_P
4068 @cindex @code{mkdir -p}, macro check
4069 @vindex MKDIR_P
4070 @vindex mkdir_p
4072 From Automake 1.8 to 1.9.6 this macro used to define the output
4073 variable @code{mkdir_p} to one of @code{mkdir -p}, @code{install-sh
4074 -d}, or @code{mkinstalldirs}.
4076 Nowadays Autoconf provides a similar functionality with
4077 @code{AC_PROG_MKDIR_P} (@pxref{Particular Programs, , Particular
4078 Program Checks, autoconf, The Autoconf Manual}), however this defines
4079 the output variable @code{MKDIR_P} instead.  Therefore
4080 @code{AM_PROG_MKDIR_P} has been rewritten as a thin wrapper around
4081 @code{AC_PROG_MKDIR_P} to define @code{mkdir_p} to the same value as
4082 @code{MKDIR_P} for backward compatibility.
4084 If you are using Automake, there is normally no reason to call this
4085 macro, because @code{AM_INIT_AUTOMAKE} already does so.  However, make
4086 sure that the custom rules in your @file{Makefile}s use
4087 @code{$(MKDIR_P)} and not @code{$(mkdir_p)}.  Even if both variables
4088 still work, the latter should be considered obsolete.
4090 If you are not using Automake, please call @code{AC_PROG_MKDIR_P}
4091 instead of @code{AM_PROG_MKDIR_P}.
4093 @item AM_SYS_POSIX_TERMIOS
4094 @acindex AM_SYS_POSIX_TERMIOS
4095 @cindex POSIX termios headers
4096 @cindex termios POSIX headers
4097 Check to see if POSIX termios headers and functions are available on the
4098 system.  If so, set the shell variable @code{am_cv_sys_posix_termios} to
4099 @samp{yes}.  If not, set the variable to @samp{no}.  This macro is obsolete,
4100 you should use Autoconf's @code{AC_SYS_POSIX_TERMIOS} instead.
4102 @end table
4105 @node Private Macros
4106 @subsection Private Macros
4108 The following macros are private macros you should not call directly.
4109 They are called by the other public macros when appropriate.  Do not
4110 rely on them, as they might be changed in a future version.  Consider
4111 them as implementation details; or better, do not consider them at all:
4112 skip this section!
4114 @ftable @code
4115 @item _AM_DEPENDENCIES
4116 @itemx AM_SET_DEPDIR
4117 @itemx AM_DEP_TRACK
4118 @itemx AM_OUTPUT_DEPENDENCY_COMMANDS
4119 These macros are used to implement Automake's automatic dependency
4120 tracking scheme.  They are called automatically by Automake when
4121 required, and there should be no need to invoke them manually.
4123 @item AM_MAKE_INCLUDE
4124 This macro is used to discover how the user's @command{make} handles
4125 @code{include} statements.  This macro is automatically invoked when
4126 needed; there should be no need to invoke it manually.
4128 @item AM_PROG_INSTALL_STRIP
4129 This is used to find a version of @code{install} that can be used to
4130 strip a program at installation time.  This macro is automatically
4131 included when required.
4133 @item AM_SANITY_CHECK
4134 This checks to make sure that a file created in the build directory is
4135 newer than a file in the source directory.  This can fail on systems
4136 where the clock is set incorrectly.  This macro is automatically run
4137 from @code{AM_INIT_AUTOMAKE}.
4139 @end ftable
4142 @node Directories
4143 @chapter Directories
4145 For simple projects that distribute all files in the same directory
4146 it is enough to have a single @file{Makefile.am} that builds
4147 everything in place.
4149 In larger projects it is common to organize files in different
4150 directories, in a tree.  For instance one directory per program, per
4151 library or per module.  The traditional approach is to build these
4152 subdirectories recursively: each directory contains its @file{Makefile}
4153 (generated from @file{Makefile.am}), and when @command{make} is run
4154 from the top level directory it enters each subdirectory in turn to
4155 build its contents.
4157 @menu
4158 * Subdirectories::              Building subdirectories recursively
4159 * Conditional Subdirectories::  Conditionally not building directories
4160 * Alternative::                 Subdirectories without recursion
4161 * Subpackages::                 Nesting packages
4162 @end menu
4164 @node Subdirectories
4165 @section Recursing subdirectories
4167 @cindex @code{SUBDIRS}, explained
4169 In packages with subdirectories, the top level @file{Makefile.am} must
4170 tell Automake which subdirectories are to be built.  This is done via
4171 the @code{SUBDIRS} variable.
4172 @vindex SUBDIRS
4174 The @code{SUBDIRS} variable holds a list of subdirectories in which
4175 building of various sorts can occur.  The rules for many targets
4176 (e.g., @code{all}) in the generated @file{Makefile} will run commands
4177 both locally and in all specified subdirectories.  Note that the
4178 directories listed in @code{SUBDIRS} are not required to contain
4179 @file{Makefile.am}s; only @file{Makefile}s (after configuration).
4180 This allows inclusion of libraries from packages that do not use
4181 Automake (such as @code{gettext}; see also @ref{Third-Party
4182 Makefiles}).
4184 In packages that use subdirectories, the top-level @file{Makefile.am} is
4185 often very short.  For instance, here is the @file{Makefile.am} from the
4186 GNU Hello distribution:
4188 @example
4189 EXTRA_DIST = BUGS ChangeLog.O README-alpha
4190 SUBDIRS = doc intl po src tests
4191 @end example
4193 When Automake invokes @command{make} in a subdirectory, it uses the value
4194 of the @code{MAKE} variable.  It passes the value of the variable
4195 @code{AM_MAKEFLAGS} to the @command{make} invocation; this can be set in
4196 @file{Makefile.am} if there are flags you must always pass to
4197 @command{make}.
4198 @vindex MAKE
4199 @vindex AM_MAKEFLAGS
4201 The directories mentioned in @code{SUBDIRS} are usually direct
4202 children of the current directory, each subdirectory containing its
4203 own @file{Makefile.am} with a @code{SUBDIRS} pointing to deeper
4204 subdirectories.  Automake can be used to construct packages of
4205 arbitrary depth this way.
4207 By default, Automake generates @file{Makefiles} that work depth-first
4208 in postfix order: the subdirectories are built before the current
4209 directory.  However, it is possible to change this ordering.  You can
4210 do this by putting @samp{.} into @code{SUBDIRS}.  For instance,
4211 putting @samp{.} first will cause a prefix ordering of
4212 directories.
4214 Using
4216 @example
4217 SUBDIRS = lib src . test
4218 @end example
4220 @noindent
4221 will cause @file{lib/} to be built before @file{src/}, then the
4222 current directory will be built, finally the @file{test/} directory
4223 will be built.  It is customary to arrange test directories to be
4224 built after everything else since they are meant to test what has
4225 been constructed.
4227 All @code{clean} rules are run in reverse order of build rules.
4229 @node Conditional Subdirectories
4230 @section Conditional Subdirectories
4231 @cindex Subdirectories, building conditionally
4232 @cindex Conditional subdirectories
4233 @cindex @code{SUBDIRS}, conditional
4234 @cindex Conditional @code{SUBDIRS}
4236 It is possible to define the @code{SUBDIRS} variable conditionally if,
4237 like in the case of GNU Inetutils, you want to only build a subset of
4238 the entire package.
4240 To illustrate how this works, let's assume we have two directories
4241 @file{src/} and @file{opt/}.  @file{src/} should always be built, but we
4242 want to decide in @command{configure} whether @file{opt/} will be built
4243 or not.  (For this example we will assume that @file{opt/} should be
4244 built when the variable @samp{$want_opt} was set to @samp{yes}.)
4246 Running @command{make} should thus recurse into @file{src/} always, and
4247 then maybe in @file{opt/}.
4249 However @samp{make dist} should always recurse into both @file{src/}
4250 and @file{opt/}.  Because @file{opt/} should be distributed even if it
4251 is not needed in the current configuration.  This means
4252 @file{opt/Makefile} should be created @emph{unconditionally}.
4254 There are two ways to setup a project like this.  You can use Automake
4255 conditionals (@pxref{Conditionals}) or use Autoconf @code{AC_SUBST}
4256 variables (@pxref{Setting Output Variables, , Setting Output
4257 Variables, autoconf, The Autoconf Manual}).  Using Automake
4258 conditionals is the preferred solution.  Before we illustrate these
4259 two possibilities, let's introduce @code{DIST_SUBDIRS}.
4261 @menu
4262 * SUBDIRS vs DIST_SUBDIRS::     Two sets of directories
4263 * Subdirectories with AM_CONDITIONAL::  Specifying conditional subdirectories
4264 * Subdirectories with AC_SUBST::  Another way for conditional recursion
4265 * Unconfigured Subdirectories::  Not even creating a @samp{Makefile}
4266 @end menu
4268 @node SUBDIRS vs DIST_SUBDIRS
4269 @subsection @code{SUBDIRS} vs.@: @code{DIST_SUBDIRS}
4270 @cindex @code{DIST_SUBDIRS}, explained
4272 Automake considers two sets of directories, defined by the variables
4273 @code{SUBDIRS} and @code{DIST_SUBDIRS}.
4275 @code{SUBDIRS} contains the subdirectories of the current directory
4276 that must be built (@pxref{Subdirectories}).  It must be defined
4277 manually; Automake will never guess a directory is to be built.  As we
4278 will see in the next two sections, it is possible to define it
4279 conditionally so that some directory will be omitted from the build.
4281 @code{DIST_SUBDIRS} is used in rules that need to recurse in all
4282 directories, even those that have been conditionally left out of the
4283 build.  Recall our example where we may not want to build subdirectory
4284 @file{opt/}, but yet we want to distribute it?  This is where
4285 @code{DIST_SUBDIRS} comes into play: @samp{opt} may not appear in
4286 @code{SUBDIRS}, but it must appear in @code{DIST_SUBDIRS}.
4288 Precisely, @code{DIST_SUBDIRS} is used by @samp{make
4289 maintainer-clean}, @samp{make distclean} and @samp{make dist}.  All
4290 other recursive rules use @code{SUBDIRS}.
4292 If @code{SUBDIRS} is defined conditionally using Automake
4293 conditionals, Automake will define @code{DIST_SUBDIRS} automatically
4294 from the possible values of @code{SUBDIRS} in all conditions.
4296 If @code{SUBDIRS} contains @code{AC_SUBST} variables,
4297 @code{DIST_SUBDIRS} will not be defined correctly because Automake
4298 does not know the possible values of these variables.  In this case
4299 @code{DIST_SUBDIRS} needs to be defined manually.
4301 @node Subdirectories with AM_CONDITIONAL
4302 @subsection Subdirectories with @code{AM_CONDITIONAL}
4303 @cindex @code{SUBDIRS} and @code{AM_CONDITIONAL}
4304 @cindex @code{AM_CONDITIONAL} and @code{SUBDIRS}
4306 @c Keep in sync with subcond2.test.
4308 @file{configure} should output the @file{Makefile} for each directory
4309 and define a condition into which @file{opt/} should be built.
4311 @example
4312 @dots{}
4313 AM_CONDITIONAL([COND_OPT], [test "$want_opt" = yes])
4314 AC_CONFIG_FILES([Makefile src/Makefile opt/Makefile])
4315 @dots{}
4316 @end example
4318 Then @code{SUBDIRS} can be defined in the top-level @file{Makefile.am}
4319 as follows.
4321 @example
4322 if COND_OPT
4323   MAYBE_OPT = opt
4324 endif
4325 SUBDIRS = src $(MAYBE_OPT)
4326 @end example
4328 As you can see, running @command{make} will rightly recurse into
4329 @file{src/} and maybe @file{opt/}.
4331 @vindex DIST_SUBDIRS
4332 As you can't see, running @samp{make dist} will recurse into both
4333 @file{src/} and @file{opt/} directories because @samp{make dist}, unlike
4334 @samp{make all}, doesn't use the @code{SUBDIRS} variable.  It uses the
4335 @code{DIST_SUBDIRS} variable.
4337 In this case Automake will define @samp{DIST_SUBDIRS = src opt}
4338 automatically because it knows that @code{MAYBE_OPT} can contain
4339 @samp{opt} in some condition.
4341 @node Subdirectories with AC_SUBST
4342 @subsection Subdirectories with @code{AC_SUBST}
4343 @cindex @code{SUBDIRS} and @code{AC_SUBST}
4344 @cindex @code{AC_SUBST} and @code{SUBDIRS}
4346 @c Keep in sync with subcond3.test.
4348 Another possibility is to define @code{MAYBE_OPT} from
4349 @file{./configure} using @code{AC_SUBST}:
4351 @example
4352 @dots{}
4353 if test "$want_opt" = yes; then
4354   MAYBE_OPT=opt
4355 else
4356   MAYBE_OPT=
4358 AC_SUBST([MAYBE_OPT])
4359 AC_CONFIG_FILES([Makefile src/Makefile opt/Makefile])
4360 @dots{}
4361 @end example
4363 In this case the top-level @file{Makefile.am} should look as follows.
4365 @example
4366 SUBDIRS = src $(MAYBE_OPT)
4367 DIST_SUBDIRS = src opt
4368 @end example
4370 The drawback is that since Automake cannot guess what the possible
4371 values of @code{MAYBE_OPT} are, it is necessary to define
4372 @code{DIST_SUBDIRS}.
4374 @node Unconfigured Subdirectories
4375 @subsection Unconfigured Subdirectories
4376 @cindex Subdirectories, configured conditionally
4378 The semantics of @code{DIST_SUBDIRS} are often misunderstood by some
4379 users that try to @emph{configure and build} subdirectories
4380 conditionally.  Here by configuring we mean creating the
4381 @file{Makefile} (it might also involve running a nested
4382 @command{configure} script: this is a costly operation that explains
4383 why people want to do it conditionally, but only the @file{Makefile}
4384 is relevant to the discussion).
4386 The above examples all assume that every @file{Makefile} is created,
4387 even in directories that are not going to be built.  The simple reason
4388 is that we want @samp{make dist} to distribute even the directories
4389 that are not being built (e.g., platform-dependent code), hence
4390 @file{make dist} must recurse into the subdirectory, hence this
4391 directory must be configured and appear in @code{DIST_SUBDIRS}.
4393 Building packages that do not configure every subdirectory is a tricky
4394 business, and we do not recommend it to the novice as it is easy to
4395 produce an incomplete tarball by mistake.  We will not discuss this
4396 topic in depth here, yet for the adventurous here are a few rules to
4397 remember.
4399 @cartouche
4400 @itemize
4401 @item @code{SUBDIRS} should always be a subset of @code{DIST_SUBDIRS}.
4403 It makes little sense to have a directory in @code{SUBDIRS} that
4404 is not in @code{DIST_SUBDIRS}.  Think of the former as a way to tell
4405 which directories listed in the latter should be built.
4406 @item Any directory listed in @code{DIST_SUBDIRS} and @code{SUBDIRS}
4407 must be configured.
4409 I.e., the @file{Makefile} must exists or the recursive @command{make}
4410 rules will not be able to process the directory.
4411 @item Any configured directory must be listed in @code{DIST_SUBDIRS}.
4413 So that the cleaning rules remove the generated @file{Makefile}s.
4414 It would be correct to see @code{DIST_SUBDIRS} as a variable that
4415 lists all the directories that have been configured.
4416 @end itemize
4417 @end cartouche
4419 In order to prevent recursion in some unconfigured directory you
4420 must therefore ensure that this directory does not appear in
4421 @code{DIST_SUBDIRS} (and @code{SUBDIRS}).  For instance, if you define
4422 @code{SUBDIRS} conditionally using @code{AC_SUBST} and do not define
4423 @code{DIST_SUBDIRS} explicitly, it will be default to
4424 @samp{$(SUBDIRS)}; another possibility is to force @code{DIST_SUBDIRS
4425 = $(SUBDIRS)}.
4427 Of course, directories that are omitted from @code{DIST_SUBDIRS} will
4428 not be distributed unless you make other arrangements for this to
4429 happen (for instance, always running @samp{make dist} in a
4430 configuration where all directories are known to appear in
4431 @code{DIST_SUBDIRS}; or writing a @code{dist-hook} target to
4432 distribute these directories).
4434 @cindex Subdirectories, not distributed
4435 In few packages, unconfigured directories are not even expected to
4436 be distributed.  Although these packages do not require the
4437 aforementioned extra arrangements, there is another pitfall.  If the
4438 name of a directory appears in @code{SUBDIRS} or @code{DIST_SUBDIRS},
4439 @command{automake} will make sure the directory exists.  Consequently
4440 @command{automake} cannot be run on such a distribution when one
4441 directory has been omitted.  One way to avoid this check is to use the
4442 @code{AC_SUBST} method to declare conditional directories; since
4443 @command{automake} does not know the values of @code{AC_SUBST}
4444 variables it cannot ensure the corresponding directory exists.
4446 @node Alternative
4447 @section An Alternative Approach to Subdirectories
4449 If you've ever read Peter Miller's excellent paper,
4450 @uref{http://miller.emu.id.au/pmiller/books/rmch/,
4451 Recursive Make Considered Harmful}, the preceding sections on the use of
4452 subdirectories will probably come as unwelcome advice.  For those who
4453 haven't read the paper, Miller's main thesis is that recursive
4454 @command{make} invocations are both slow and error-prone.
4456 Automake provides sufficient cross-directory support @footnote{We
4457 believe.  This work is new and there are probably warts.
4458 @xref{Introduction}, for information on reporting bugs.} to enable you
4459 to write a single @file{Makefile.am} for a complex multi-directory
4460 package.
4463 By default an installable file specified in a subdirectory will have its
4464 directory name stripped before installation.  For instance, in this
4465 example, the header file will be installed as
4466 @file{$(includedir)/stdio.h}:
4468 @example
4469 include_HEADERS = inc/stdio.h
4470 @end example
4472 @vindex nobase_
4473 @cindex @code{nobase_} prefix
4474 @cindex Path stripping, avoiding
4475 @cindex Avoiding path stripping
4477 However, the @samp{nobase_} prefix can be used to circumvent this path
4478 stripping.  In this example, the header file will be installed as
4479 @file{$(includedir)/sys/types.h}:
4481 @example
4482 nobase_include_HEADERS = sys/types.h
4483 @end example
4485 @cindex @code{nobase_} and @code{dist_} or @code{nodist_}
4486 @cindex @code{dist_} and @code{nobase_}
4487 @cindex @code{nodist_} and @code{nobase_}
4488 @vindex dist_
4489 @vindex nodist_
4491 @samp{nobase_} should be specified first when used in conjunction with
4492 either @samp{dist_} or @samp{nodist_} (@pxref{Fine-grained Distribution
4493 Control}).  For instance:
4495 @example
4496 nobase_dist_pkgdata_DATA = images/vortex.pgm sounds/whirl.ogg
4497 @end example
4499 Finally, note that a variable using the @samp{nobase_} prefix can
4500 often be replaced by several variables, one for each destination
4501 directory (@pxref{Uniform}).  For instance, the last example could be
4502 rewritten as follows:
4504 @c Keep in sync with primary-prefix-couples-documented-valid.test.
4505 @example
4506 imagesdir = $(pkgdatadir)/images
4507 soundsdir = $(pkgdatadir)/sounds
4508 dist_images_DATA = images/vortex.pgm
4509 dist_sounds_DATA = sounds/whirl.ogg
4510 @end example
4512 @noindent
4513 This latter syntax makes it possible to change one destination
4514 directory without changing the layout of the source tree.
4516 Currently, @samp{nobase_*_LTLIBRARIES} are the only exception to this
4517 rule, in that there is no particular installation order guarantee for
4518 an otherwise equivalent set of variables without @samp{nobase_} prefix.
4520 @node Subpackages
4521 @section Nesting Packages
4522 @cindex Nesting packages
4523 @cindex Subpackages
4524 @acindex AC_CONFIG_SUBDIRS
4525 @acindex AC_CONFIG_AUX_DIR
4528 In the GNU Build System, packages can be nested to arbitrary depth.
4529 This means that a package can embed other packages with their own
4530 @file{configure}, @file{Makefile}s, etc.
4532 These other packages should just appear as subdirectories of their
4533 parent package.  They must be listed in @code{SUBDIRS} like other
4534 ordinary directories.  However the subpackage's @file{Makefile}s
4535 should be output by its own @file{configure} script, not by the
4536 parent's @file{configure}.  This is achieved using the
4537 @code{AC_CONFIG_SUBDIRS} Autoconf macro (@pxref{Subdirectories,
4538 AC_CONFIG_SUBDIRS, Configuring Other Packages in Subdirectories,
4539 autoconf, The Autoconf Manual}).
4541 Here is an example package for an @code{arm} program that links with
4542 a @code{hand} library that is a nested package in subdirectory
4543 @file{hand/}.
4545 @code{arm}'s @file{configure.ac}:
4547 @example
4548 AC_INIT([arm], [1.0])
4549 AC_CONFIG_AUX_DIR([.])
4550 AM_INIT_AUTOMAKE
4551 AC_PROG_CC
4552 AC_CONFIG_FILES([Makefile])
4553 # Call hand's ./configure script recursively.
4554 AC_CONFIG_SUBDIRS([hand])
4555 AC_OUTPUT
4556 @end example
4558 @code{arm}'s @file{Makefile.am}:
4560 @example
4561 # Build the library in the hand subdirectory first.
4562 SUBDIRS = hand
4564 # Include hand's header when compiling this directory.
4565 AM_CPPFLAGS = -I$(srcdir)/hand
4567 bin_PROGRAMS = arm
4568 arm_SOURCES = arm.c
4569 # link with the hand library.
4570 arm_LDADD = hand/libhand.a
4571 @end example
4573 Now here is @code{hand}'s @file{hand/configure.ac}:
4575 @example
4576 AC_INIT([hand], [1.2])
4577 AC_CONFIG_AUX_DIR([.])
4578 AM_INIT_AUTOMAKE
4579 AC_PROG_CC
4580 AM_PROG_AR
4581 AC_PROG_RANLIB
4582 AC_CONFIG_FILES([Makefile])
4583 AC_OUTPUT
4584 @end example
4586 @noindent
4587 and its @file{hand/Makefile.am}:
4589 @example
4590 lib_LIBRARIES = libhand.a
4591 libhand_a_SOURCES = hand.c
4592 @end example
4594 When @samp{make dist} is run from the top-level directory it will
4595 create an archive @file{arm-1.0.tar.gz} that contains the @code{arm}
4596 code as well as the @file{hand} subdirectory.  This package can be
4597 built and installed like any ordinary package, with the usual
4598 @samp{./configure && make && make install} sequence (the @code{hand}
4599 subpackage will be built and installed by the process).
4601 When @samp{make dist} is run from the hand directory, it will create a
4602 self-contained @file{hand-1.2.tar.gz} archive.  So although it appears
4603 to be embedded in another package, it can still be used separately.
4605 The purpose of the @samp{AC_CONFIG_AUX_DIR([.])} instruction is to
4606 force Automake and Autoconf to search for auxiliary scripts in the
4607 current directory.  For instance, this means that there will be two
4608 copies of @file{install-sh}: one in the top-level of the @code{arm}
4609 package, and another one in the @file{hand/} subdirectory for the
4610 @code{hand} package.
4612 The historical default is to search for these auxiliary scripts in
4613 the parent directory and the grandparent directory.  So if the
4614 @samp{AC_CONFIG_AUX_DIR([.])} line was removed from
4615 @file{hand/configure.ac}, that subpackage would share the auxiliary
4616 script of the @code{arm} package.  This may looks like a gain in size
4617 (a few kilobytes), but it is actually a loss of modularity as the
4618 @code{hand} subpackage is no longer self-contained (@samp{make dist}
4619 in the subdirectory will not work anymore).
4621 Packages that do not use Automake need more work to be integrated this
4622 way.  @xref{Third-Party Makefiles}.
4624 @node Programs
4625 @chapter Building Programs and Libraries
4627 A large part of Automake's functionality is dedicated to making it easy
4628 to build programs and libraries.
4630 @menu
4631 * A Program::                   Building a program
4632 * A Library::                   Building a library
4633 * A Shared Library::            Building a Libtool library
4634 * Program and Library Variables::  Variables controlling program and
4635                                 library builds
4636 * Default _SOURCES::            Default source files
4637 * LIBOBJS::                     Special handling for LIBOBJS and ALLOCA
4638 * Program Variables::           Variables used when building a program
4639 * Yacc and Lex::                Yacc and Lex support
4640 * C++ Support::                 Compiling C++ sources
4641 * Objective C Support::         Compiling Objective C sources
4642 * Unified Parallel C Support::  Compiling Unified Parallel C sources
4643 * Assembly Support::            Compiling assembly sources
4644 * Fortran 77 Support::          Compiling Fortran 77 sources
4645 * Fortran 9x Support::          Compiling Fortran 9x sources
4646 * Java Support::                Compiling Java sources
4647 * Vala Support::                Compiling Vala sources
4648 * Support for Other Languages::  Compiling other languages
4649 * ANSI::                        Automatic de-ANSI-fication (deprecated, soon to be removed)
4650 * Dependencies::                Automatic dependency tracking
4651 * EXEEXT::                      Support for executable extensions
4652 @end menu
4655 @node A Program
4656 @section Building a program
4658 In order to build a program, you need to tell Automake which sources
4659 are part of it, and which libraries it should be linked with.
4661 This section also covers conditional compilation of sources or
4662 programs.  Most of the comments about these also apply to libraries
4663 (@pxref{A Library}) and libtool libraries (@pxref{A Shared Library}).
4665 @menu
4666 * Program Sources::             Defining program sources
4667 * Linking::                     Linking with libraries or extra objects
4668 * Conditional Sources::         Handling conditional sources
4669 * Conditional Programs::        Building a program conditionally
4670 @end menu
4672 @node Program Sources
4673 @subsection Defining program sources
4675 @cindex @code{PROGRAMS}, @code{bindir}
4676 @vindex _PROGRAMS
4677 @vindex bin_PROGRAMS
4678 @vindex sbin_PROGRAMS
4679 @vindex libexec_PROGRAMS
4680 @vindex pkglibexec_PROGRAMS
4681 @vindex noinst_PROGRAMS
4682 @vindex check_PROGRAMS
4684 In a directory containing source that gets built into a program (as
4685 opposed to a library or a script), the @code{PROGRAMS} primary is used.
4686 Programs can be installed in @code{bindir}, @code{sbindir},
4687 @code{libexecdir}, @code{pkglibexecdir}, or not at all
4688 (@code{noinst_}).  They can also be built only for @samp{make check}, in
4689 which case the prefix is @samp{check_}.
4691 For instance:
4693 @example
4694 bin_PROGRAMS = hello
4695 @end example
4697 In this simple case, the resulting @file{Makefile.in} will contain code
4698 to generate a program named @code{hello}.
4700 Associated with each program are several assisting variables that are
4701 named after the program.  These variables are all optional, and have
4702 reasonable defaults.  Each variable, its use, and default is spelled out
4703 below; we use the ``hello'' example throughout.
4705 The variable @code{hello_SOURCES} is used to specify which source files
4706 get built into an executable:
4708 @example
4709 hello_SOURCES = hello.c version.c getopt.c getopt1.c getopt.h system.h
4710 @end example
4712 This causes each mentioned @file{.c} file to be compiled into the
4713 corresponding @file{.o}.  Then all are linked to produce @file{hello}.
4715 @cindex @code{_SOURCES} primary, defined
4716 @cindex @code{SOURCES} primary, defined
4717 @cindex Primary variable, @code{SOURCES}
4718 @vindex _SOURCES
4720 If @code{hello_SOURCES} is not specified, then it defaults to the single
4721 file @file{hello.c} (@pxref{Default _SOURCES}).
4722 @vindex _SOURCES
4723 @vindex SOURCES
4725 Multiple programs can be built in a single directory.  Multiple programs
4726 can share a single source file, which must be listed in each
4727 @code{_SOURCES} definition.
4729 @cindex Header files in @code{_SOURCES}
4730 @cindex @code{_SOURCES} and header files
4732 Header files listed in a @code{_SOURCES} definition will be included in
4733 the distribution but otherwise ignored.  In case it isn't obvious, you
4734 should not include the header file generated by @file{configure} in a
4735 @code{_SOURCES} variable; this file should not be distributed.  Lex
4736 (@file{.l}) and Yacc (@file{.y}) files can also be listed; see @ref{Yacc
4737 and Lex}.
4740 @node Linking
4741 @subsection Linking the program
4743 If you need to link against libraries that are not found by
4744 @command{configure}, you can use @code{LDADD} to do so.  This variable is
4745 used to specify additional objects or libraries to link with; it is
4746 inappropriate for specifying specific linker flags, you should use
4747 @code{AM_LDFLAGS} for this purpose.
4748 @vindex LDADD
4749 @vindex AM_LDFLAGS
4751 @cindex @code{prog_LDADD}, defined
4753 Sometimes, multiple programs are built in one directory but do not share
4754 the same link-time requirements.  In this case, you can use the
4755 @code{@var{prog}_LDADD} variable (where @var{prog} is the name of the
4756 program as it appears in some @code{_PROGRAMS} variable, and usually
4757 written in lowercase) to override @code{LDADD}.  If this variable exists
4758 for a given program, then that program is not linked using @code{LDADD}.
4759 @vindex maude_LDADD
4761 For instance, in GNU cpio, @code{pax}, @code{cpio} and @code{mt} are
4762 linked against the library @file{libcpio.a}.  However, @code{rmt} is
4763 built in the same directory, and has no such link requirement.  Also,
4764 @code{mt} and @code{rmt} are only built on certain architectures.  Here
4765 is what cpio's @file{src/Makefile.am} looks like (abridged):
4767 @example
4768 bin_PROGRAMS = cpio pax $(MT)
4769 libexec_PROGRAMS = $(RMT)
4770 EXTRA_PROGRAMS = mt rmt
4772 LDADD = ../lib/libcpio.a $(INTLLIBS)
4773 rmt_LDADD =
4775 cpio_SOURCES = @dots{}
4776 pax_SOURCES = @dots{}
4777 mt_SOURCES = @dots{}
4778 rmt_SOURCES = @dots{}
4779 @end example
4781 @cindex @code{_LDFLAGS}, defined
4782 @vindex maude_LDFLAGS
4783 @code{@var{prog}_LDADD} is inappropriate for passing program-specific
4784 linker flags (except for @option{-l}, @option{-L}, @option{-dlopen} and
4785 @option{-dlpreopen}).  So, use the @code{@var{prog}_LDFLAGS} variable for
4786 this purpose.
4788 @cindex @code{_DEPENDENCIES}, defined
4789 @vindex maude_DEPENDENCIES
4790 It is also occasionally useful to have a program depend on some other
4791 target that is not actually part of that program.  This can be done
4792 using the @code{@var{prog}_DEPENDENCIES} variable.  Each program
4793 depends on the contents of such a variable, but no further
4794 interpretation is done.
4796 Since these dependencies are associated to the link rule used to
4797 create the programs they should normally list files used by the link
4798 command.  That is @file{*.$(OBJEXT)}, @file{*.a}, or @file{*.la}
4799 files.  In rare cases you may need to add other kinds of files such as
4800 linker scripts, but @emph{listing a source file in
4801 @code{_DEPENDENCIES} is wrong}.  If some source file needs to be built
4802 before all the components of a program are built, consider using the
4803 @code{BUILT_SOURCES} variable instead (@pxref{Sources}).
4805 If @code{@var{prog}_DEPENDENCIES} is not supplied, it is computed by
4806 Automake.  The automatically-assigned value is the contents of
4807 @code{@var{prog}_LDADD}, with most configure substitutions, @option{-l},
4808 @option{-L}, @option{-dlopen} and @option{-dlpreopen} options removed.  The
4809 configure substitutions that are left in are only @samp{$(LIBOBJS)} and
4810 @samp{$(ALLOCA)}; these are left because it is known that they will not
4811 cause an invalid value for @code{@var{prog}_DEPENDENCIES} to be
4812 generated.
4814 @ref{Conditional Sources} shows a situation where @code{_DEPENDENCIES}
4815 may be used.
4817 @cindex @code{LDADD} and @option{-l}
4818 @cindex @option{-l} and @code{LDADD}
4819 We recommend that you avoid using @option{-l} options in @code{LDADD}
4820 or @code{@var{prog}_LDADD} when referring to libraries built by your
4821 package.  Instead, write the file name of the library explicitly as in
4822 the above @code{cpio} example.  Use @option{-l} only to list
4823 third-party libraries.  If you follow this rule, the default value of
4824 @code{@var{prog}_DEPENDENCIES} will list all your local libraries and
4825 omit the other ones.
4828 @node Conditional Sources
4829 @subsection Conditional compilation of sources
4831 You can't put a configure substitution (e.g., @samp{@@FOO@@} or
4832 @samp{$(FOO)} where @code{FOO} is defined via @code{AC_SUBST}) into a
4833 @code{_SOURCES} variable.  The reason for this is a bit hard to
4834 explain, but suffice to say that it simply won't work.  Automake will
4835 give an error if you try to do this.
4837 Fortunately there are two other ways to achieve the same result.  One is
4838 to use configure substitutions in @code{_LDADD} variables, the other is
4839 to use an Automake conditional.
4841 @subsubheading Conditional Compilation using @code{_LDADD} Substitutions
4843 @cindex @code{EXTRA_prog_SOURCES}, defined
4845 Automake must know all the source files that could possibly go into a
4846 program, even if not all the files are built in every circumstance.  Any
4847 files that are only conditionally built should be listed in the
4848 appropriate @code{EXTRA_} variable.  For instance, if
4849 @file{hello-linux.c} or @file{hello-generic.c} were conditionally included
4850 in @code{hello}, the @file{Makefile.am} would contain:
4852 @example
4853 bin_PROGRAMS = hello
4854 hello_SOURCES = hello-common.c
4855 EXTRA_hello_SOURCES = hello-linux.c hello-generic.c
4856 hello_LDADD = $(HELLO_SYSTEM)
4857 hello_DEPENDENCIES = $(HELLO_SYSTEM)
4858 @end example
4860 @noindent
4861 You can then setup the @samp{$(HELLO_SYSTEM)} substitution from
4862 @file{configure.ac}:
4864 @example
4865 @dots{}
4866 case $host in
4867   *linux*) HELLO_SYSTEM='hello-linux.$(OBJEXT)' ;;
4868   *)       HELLO_SYSTEM='hello-generic.$(OBJEXT)' ;;
4869 esac
4870 AC_SUBST([HELLO_SYSTEM])
4871 @dots{}
4872 @end example
4874 In this case, the variable @code{HELLO_SYSTEM} should be replaced by
4875 either @file{hello-linux.o} or @file{hello-generic.o}, and added to
4876 both @code{hello_DEPENDENCIES} and @code{hello_LDADD} in order to be
4877 built and linked in.
4879 @subsubheading Conditional Compilation using Automake Conditionals
4881 An often simpler way to compile source files conditionally is to use
4882 Automake conditionals.  For instance, you could use this
4883 @file{Makefile.am} construct to build the same @file{hello} example:
4885 @example
4886 bin_PROGRAMS = hello
4887 if LINUX
4888 hello_SOURCES = hello-linux.c hello-common.c
4889 else
4890 hello_SOURCES = hello-generic.c hello-common.c
4891 endif
4892 @end example
4894 In this case, @file{configure.ac} should setup the @code{LINUX}
4895 conditional using @code{AM_CONDITIONAL} (@pxref{Conditionals}).
4897 When using conditionals like this you don't need to use the
4898 @code{EXTRA_} variable, because Automake will examine the contents of
4899 each variable to construct the complete list of source files.
4901 If your program uses a lot of files, you will probably prefer a
4902 conditional @samp{+=}.
4904 @example
4905 bin_PROGRAMS = hello
4906 hello_SOURCES = hello-common.c
4907 if LINUX
4908 hello_SOURCES += hello-linux.c
4909 else
4910 hello_SOURCES += hello-generic.c
4911 endif
4912 @end example
4914 @node Conditional Programs
4915 @subsection Conditional compilation of programs
4916 @cindex Conditional programs
4917 @cindex Programs, conditional
4919 Sometimes it is useful to determine the programs that are to be built
4920 at configure time.  For instance, GNU @code{cpio} only builds
4921 @code{mt} and @code{rmt} under special circumstances.  The means to
4922 achieve conditional compilation of programs are the same you can use
4923 to compile source files conditionally: substitutions or conditionals.
4925 @subsubheading Conditional Programs using @command{configure} Substitutions
4927 @vindex EXTRA_PROGRAMS
4928 @cindex @code{EXTRA_PROGRAMS}, defined
4929 In this case, you must notify Automake of all the programs that can
4930 possibly be built, but at the same time cause the generated
4931 @file{Makefile.in} to use the programs specified by @command{configure}.
4932 This is done by having @command{configure} substitute values into each
4933 @code{_PROGRAMS} definition, while listing all optionally built programs
4934 in @code{EXTRA_PROGRAMS}.
4936 @example
4937 bin_PROGRAMS = cpio pax $(MT)
4938 libexec_PROGRAMS = $(RMT)
4939 EXTRA_PROGRAMS = mt rmt
4940 @end example
4942 As explained in @ref{EXEEXT}, Automake will rewrite
4943 @code{bin_PROGRAMS}, @code{libexec_PROGRAMS}, and
4944 @code{EXTRA_PROGRAMS}, appending @samp{$(EXEEXT)} to each binary.
4945 Obviously it cannot rewrite values obtained at run-time through
4946 @command{configure} substitutions, therefore you should take care of
4947 appending @samp{$(EXEEXT)} yourself, as in @samp{AC_SUBST([MT],
4948 ['mt$@{EXEEXT@}'])}.
4950 @subsubheading Conditional Programs using Automake Conditionals
4952 You can also use Automake conditionals (@pxref{Conditionals}) to
4953 select programs to be built.  In this case you don't have to worry
4954 about @samp{$(EXEEXT)} or @code{EXTRA_PROGRAMS}.
4956 @c Keep in sync with exeext.test.
4957 @example
4958 bin_PROGRAMS = cpio pax
4959 if WANT_MT
4960   bin_PROGRAMS += mt
4961 endif
4962 if WANT_RMT
4963   libexec_PROGRAMS = rmt
4964 endif
4965 @end example
4968 @node A Library
4969 @section Building a library
4971 @cindex @code{_LIBRARIES} primary, defined
4972 @cindex @code{LIBRARIES} primary, defined
4973 @cindex Primary variable, @code{LIBRARIES}
4974 @vindex _LIBRARIES
4976 @vindex lib_LIBRARIES
4977 @vindex pkglib_LIBRARIES
4978 @vindex noinst_LIBRARIES
4980 Building a library is much like building a program.  In this case, the
4981 name of the primary is @code{LIBRARIES}.  Libraries can be installed in
4982 @code{libdir} or @code{pkglibdir}.
4984 @xref{A Shared Library}, for information on how to build shared
4985 libraries using libtool and the @code{LTLIBRARIES} primary.
4987 Each @code{_LIBRARIES} variable is a list of the libraries to be built.
4988 For instance, to create a library named @file{libcpio.a}, but not install
4989 it, you would write:
4991 @example
4992 noinst_LIBRARIES = libcpio.a
4993 libcpio_a_SOURCES = @dots{}
4994 @end example
4996 The sources that go into a library are determined exactly as they are
4997 for programs, via the @code{_SOURCES} variables.  Note that the library
4998 name is canonicalized (@pxref{Canonicalization}), so the @code{_SOURCES}
4999 variable corresponding to @file{libcpio.a} is @samp{libcpio_a_SOURCES},
5000 not @samp{libcpio.a_SOURCES}.
5002 @vindex maude_LIBADD
5003 Extra objects can be added to a library using the
5004 @code{@var{library}_LIBADD} variable.  This should be used for objects
5005 determined by @command{configure}.  Again from @code{cpio}:
5007 @c Keep in sync with pr401c.test.
5008 @example
5009 libcpio_a_LIBADD = $(LIBOBJS) $(ALLOCA)
5010 @end example
5012 In addition, sources for extra objects that will not exist until
5013 configure-time must be added to the @code{BUILT_SOURCES} variable
5014 (@pxref{Sources}).
5016 Building a static library is done by compiling all object files, then
5017 by invoking @samp{$(AR) $(ARFLAGS)} followed by the name of the
5018 library and the list of objects, and finally by calling
5019 @samp{$(RANLIB)} on that library.  You should call
5020 @code{AC_PROG_RANLIB} from your @file{configure.ac} to define
5021 @code{RANLIB} (Automake will complain otherwise).  You should also
5022 call @code{AM_PROG_AR} to define @code{AR}, in order to support unusual
5023 archivers such as Microsoft lib.  @code{ARFLAGS} will default to
5024 @code{cru}; you can override this variable by setting it in your
5025 @file{Makefile.am} or by @code{AC_SUBST}ing it from your
5026 @file{configure.ac}.  You can override the @code{AR} variable by
5027 defining a per-library @code{maude_AR} variable (@pxref{Program and
5028 Library Variables}).
5030 @cindex Empty libraries
5031 Be careful when selecting library components conditionally.  Because
5032 building an empty library is not portable, you should ensure that any
5033 library always contains at least one object.
5035 To use a static library when building a program, add it to
5036 @code{LDADD} for this program.  In the following example, the program
5037 @file{cpio} is statically linked with the library @file{libcpio.a}.
5039 @example
5040 noinst_LIBRARIES = libcpio.a
5041 libcpio_a_SOURCES = @dots{}
5043 bin_PROGRAMS = cpio
5044 cpio_SOURCES = cpio.c @dots{}
5045 cpio_LDADD = libcpio.a
5046 @end example
5049 @node A Shared Library
5050 @section Building a Shared Library
5052 @cindex Shared libraries, support for
5054 Building shared libraries portably is a relatively complex matter.
5055 For this reason, GNU Libtool (@pxref{Top, , Introduction, libtool, The
5056 Libtool Manual}) was created to help build shared libraries in a
5057 platform-independent way.
5059 @menu
5060 * Libtool Concept::             Introducing Libtool
5061 * Libtool Libraries::           Declaring Libtool Libraries
5062 * Conditional Libtool Libraries::  Building Libtool Libraries Conditionally
5063 * Conditional Libtool Sources::  Choosing Library Sources Conditionally
5064 * Libtool Convenience Libraries::  Building Convenience Libtool Libraries
5065 * Libtool Modules::             Building Libtool Modules
5066 * Libtool Flags::               Using _LIBADD, _LDFLAGS, and _LIBTOOLFLAGS
5067 * LTLIBOBJS::                   Using $(LTLIBOBJS) and $(LTALLOCA)
5068 * Libtool Issues::              Common Issues Related to Libtool's Use
5069 @end menu
5071 @node Libtool Concept
5072 @subsection The Libtool Concept
5074 @cindex @command{libtool}, introduction
5075 @cindex libtool library, definition
5076 @cindex suffix @file{.la}, defined
5077 @cindex @file{.la} suffix, defined
5079 Libtool abstracts shared and static libraries into a unified concept
5080 henceforth called @dfn{libtool libraries}.  Libtool libraries are
5081 files using the @file{.la} suffix, and can designate a static library,
5082 a shared library, or maybe both.  Their exact nature cannot be
5083 determined until @file{./configure} is run: not all platforms support
5084 all kinds of libraries, and users can explicitly select which
5085 libraries should be built.  (However the package's maintainers can
5086 tune the default, @pxref{AC_PROG_LIBTOOL, , The @code{AC_PROG_LIBTOOL}
5087 macro, libtool, The Libtool Manual}.)
5089 @cindex suffix @file{.lo}, defined
5090 Because object files for shared and static libraries must be compiled
5091 differently, libtool is also used during compilation.  Object files
5092 built by libtool are called @dfn{libtool objects}: these are files
5093 using the @file{.lo} suffix.  Libtool libraries are built from these
5094 libtool objects.
5096 You should not assume anything about the structure of @file{.la} or
5097 @file{.lo} files and how libtool constructs them: this is libtool's
5098 concern, and the last thing one wants is to learn about libtool's
5099 guts.  However the existence of these files matters, because they are
5100 used as targets and dependencies in @file{Makefile}s rules when
5101 building libtool libraries.  There are situations where you may have
5102 to refer to these, for instance when expressing dependencies for
5103 building source files conditionally (@pxref{Conditional Libtool
5104 Sources}).
5106 @cindex @file{libltdl}, introduction
5108 People considering writing a plug-in system, with dynamically loaded
5109 modules, should look into @file{libltdl}: libtool's dlopening library
5110 (@pxref{Using libltdl, , Using libltdl, libtool, The Libtool Manual}).
5111 This offers a portable dlopening facility to load libtool libraries
5112 dynamically, and can also achieve static linking where unavoidable.
5114 Before we discuss how to use libtool with Automake in details, it
5115 should be noted that the libtool manual also has a section about how
5116 to use Automake with libtool (@pxref{Using Automake, , Using Automake
5117 with Libtool, libtool, The Libtool Manual}).
5119 @node Libtool Libraries
5120 @subsection Building Libtool Libraries
5122 @cindex @code{_LTLIBRARIES} primary, defined
5123 @cindex @code{LTLIBRARIES} primary, defined
5124 @cindex Primary variable, @code{LTLIBRARIES}
5125 @cindex Example of shared libraries
5126 @vindex lib_LTLIBRARIES
5127 @vindex pkglib_LTLIBRARIES
5128 @vindex _LTLIBRARIES
5130 Automake uses libtool to build libraries declared with the
5131 @code{LTLIBRARIES} primary.  Each @code{_LTLIBRARIES} variable is a
5132 list of libtool libraries to build.  For instance, to create a libtool
5133 library named @file{libgettext.la}, and install it in @code{libdir},
5134 write:
5136 @example
5137 lib_LTLIBRARIES = libgettext.la
5138 libgettext_la_SOURCES = gettext.c gettext.h @dots{}
5139 @end example
5141 Automake predefines the variable @code{pkglibdir}, so you can use
5142 @code{pkglib_LTLIBRARIES} to install libraries in
5143 @samp{$(libdir)/@@PACKAGE@@/}.
5145 If @file{gettext.h} is a public header file that needs to be installed
5146 in order for people to use the library, it should be declared using a
5147 @code{_HEADERS} variable, not in @code{libgettext_la_SOURCES}.
5148 Headers listed in the latter should be internal headers that are not
5149 part of the public interface.
5151 @example
5152 lib_LTLIBRARIES = libgettext.la
5153 libgettext_la_SOURCES = gettext.c @dots{}
5154 include_HEADERS = gettext.h @dots{}
5155 @end example
5157 A package can build and install such a library along with other
5158 programs that use it.  This dependency should be specified using
5159 @code{LDADD}.  The following example builds a program named
5160 @file{hello} that is linked with @file{libgettext.la}.
5162 @example
5163 lib_LTLIBRARIES = libgettext.la
5164 libgettext_la_SOURCES = gettext.c @dots{}
5166 bin_PROGRAMS = hello
5167 hello_SOURCES = hello.c @dots{}
5168 hello_LDADD = libgettext.la
5169 @end example
5171 @noindent
5172 Whether @file{hello} is statically or dynamically linked with
5173 @file{libgettext.la} is not yet known: this will depend on the
5174 configuration of libtool and the capabilities of the host.
5177 @node Conditional Libtool Libraries
5178 @subsection Building Libtool Libraries Conditionally
5179 @cindex libtool libraries, conditional
5180 @cindex conditional libtool libraries
5182 Like conditional programs (@pxref{Conditional Programs}), there are
5183 two main ways to build conditional libraries: using Automake
5184 conditionals or using Autoconf @code{AC_SUBST}itutions.
5186 The important implementation detail you have to be aware of is that
5187 the place where a library will be installed matters to libtool: it
5188 needs to be indicated @emph{at link-time} using the @option{-rpath}
5189 option.
5191 For libraries whose destination directory is known when Automake runs,
5192 Automake will automatically supply the appropriate @option{-rpath}
5193 option to libtool.  This is the case for libraries listed explicitly in
5194 some installable @code{_LTLIBRARIES} variables such as
5195 @code{lib_LTLIBRARIES}.
5197 However, for libraries determined at configure time (and thus
5198 mentioned in @code{EXTRA_LTLIBRARIES}), Automake does not know the
5199 final installation directory.  For such libraries you must add the
5200 @option{-rpath} option to the appropriate @code{_LDFLAGS} variable by
5201 hand.
5203 The examples below illustrate the differences between these two methods.
5205 Here is an example where @code{WANTEDLIBS} is an @code{AC_SUBST}ed
5206 variable set at @file{./configure}-time to either @file{libfoo.la},
5207 @file{libbar.la}, both, or none.  Although @samp{$(WANTEDLIBS)}
5208 appears in the @code{lib_LTLIBRARIES}, Automake cannot guess it
5209 relates to @file{libfoo.la} or @file{libbar.la} at the time it creates
5210 the link rule for these two libraries.  Therefore the @option{-rpath}
5211 argument must be explicitly supplied.
5213 @c Keep in sync with ltcond.test.
5214 @example
5215 EXTRA_LTLIBRARIES = libfoo.la libbar.la
5216 lib_LTLIBRARIES = $(WANTEDLIBS)
5217 libfoo_la_SOURCES = foo.c @dots{}
5218 libfoo_la_LDFLAGS = -rpath '$(libdir)'
5219 libbar_la_SOURCES = bar.c @dots{}
5220 libbar_la_LDFLAGS = -rpath '$(libdir)'
5221 @end example
5223 Here is how the same @file{Makefile.am} would look using Automake
5224 conditionals named @code{WANT_LIBFOO} and @code{WANT_LIBBAR}.  Now
5225 Automake is able to compute the @option{-rpath} setting itself, because
5226 it's clear that both libraries will end up in @samp{$(libdir)} if they
5227 are installed.
5229 @c Keep in sync with ltcond.test.
5230 @example
5231 lib_LTLIBRARIES =
5232 if WANT_LIBFOO
5233 lib_LTLIBRARIES += libfoo.la
5234 endif
5235 if WANT_LIBBAR
5236 lib_LTLIBRARIES += libbar.la
5237 endif
5238 libfoo_la_SOURCES = foo.c @dots{}
5239 libbar_la_SOURCES = bar.c @dots{}
5240 @end example
5242 @node Conditional Libtool Sources
5243 @subsection Libtool Libraries with Conditional Sources
5245 Conditional compilation of sources in a library can be achieved in the
5246 same way as conditional compilation of sources in a program
5247 (@pxref{Conditional Sources}).  The only difference is that
5248 @code{_LIBADD} should be used instead of @code{_LDADD} and that it
5249 should mention libtool objects (@file{.lo} files).
5251 So, to mimic the @file{hello} example from @ref{Conditional Sources},
5252 we could build a @file{libhello.la} library using either
5253 @file{hello-linux.c} or @file{hello-generic.c} with the following
5254 @file{Makefile.am}.
5256 @c Keep in sync with ltcond2.test.
5257 @example
5258 lib_LTLIBRARIES = libhello.la
5259 libhello_la_SOURCES = hello-common.c
5260 EXTRA_libhello_la_SOURCES = hello-linux.c hello-generic.c
5261 libhello_la_LIBADD = $(HELLO_SYSTEM)
5262 libhello_la_DEPENDENCIES = $(HELLO_SYSTEM)
5263 @end example
5265 @noindent
5266 And make sure @command{configure} defines @code{HELLO_SYSTEM} as
5267 either @file{hello-linux.lo} or @file{hello-@-generic.lo}.
5269 Or we could simply use an Automake conditional as follows.
5271 @c Keep in sync with ltcond2.test.
5272 @example
5273 lib_LTLIBRARIES = libhello.la
5274 libhello_la_SOURCES = hello-common.c
5275 if LINUX
5276 libhello_la_SOURCES += hello-linux.c
5277 else
5278 libhello_la_SOURCES += hello-generic.c
5279 endif
5280 @end example
5282 @node Libtool Convenience Libraries
5283 @subsection Libtool Convenience Libraries
5284 @cindex convenience libraries, libtool
5285 @cindex libtool convenience libraries
5286 @vindex noinst_LTLIBRARIES
5287 @vindex check_LTLIBRARIES
5289 Sometimes you want to build libtool libraries that should not be
5290 installed.  These are called @dfn{libtool convenience libraries} and
5291 are typically used to encapsulate many sublibraries, later gathered
5292 into one big installed library.
5294 Libtool convenience libraries are declared by directory-less variables
5295 such as @code{noinst_LTLIBRARIES}, @code{check_LTLIBRARIES}, or even
5296 @code{EXTRA_LTLIBRARIES}.  Unlike installed libtool libraries they do
5297 not need an @option{-rpath} flag at link time (actually this is the only
5298 difference).
5300 Convenience libraries listed in @code{noinst_LTLIBRARIES} are always
5301 built.  Those listed in @code{check_LTLIBRARIES} are built only upon
5302 @samp{make check}.  Finally, libraries listed in
5303 @code{EXTRA_LTLIBRARIES} are never built explicitly: Automake outputs
5304 rules to build them, but if the library does not appear as a Makefile
5305 dependency anywhere it won't be built (this is why
5306 @code{EXTRA_LTLIBRARIES} is used for conditional compilation).
5308 Here is a sample setup merging libtool convenience libraries from
5309 subdirectories into one main @file{libtop.la} library.
5311 @c Keep in sync with ltconv.test.
5312 @example
5313 # -- Top-level Makefile.am --
5314 SUBDIRS = sub1 sub2 @dots{}
5315 lib_LTLIBRARIES = libtop.la
5316 libtop_la_SOURCES =
5317 libtop_la_LIBADD = \
5318   sub1/libsub1.la \
5319   sub2/libsub2.la \
5320   @dots{}
5322 # -- sub1/Makefile.am --
5323 noinst_LTLIBRARIES = libsub1.la
5324 libsub1_la_SOURCES = @dots{}
5326 # -- sub2/Makefile.am --
5327 # showing nested convenience libraries
5328 SUBDIRS = sub2.1 sub2.2 @dots{}
5329 noinst_LTLIBRARIES = libsub2.la
5330 libsub2_la_SOURCES =
5331 libsub2_la_LIBADD = \
5332   sub21/libsub21.la \
5333   sub22/libsub22.la \
5334   @dots{}
5335 @end example
5337 When using such setup, beware that @command{automake} will assume
5338 @file{libtop.la} is to be linked with the C linker.  This is because
5339 @code{libtop_la_SOURCES} is empty, so @command{automake} picks C as
5340 default language.  If @code{libtop_la_SOURCES} was not empty,
5341 @command{automake} would select the linker as explained in @ref{How
5342 the Linker is Chosen}.
5344 If one of the sublibraries contains non-C source, it is important that
5345 the appropriate linker be chosen.  One way to achieve this is to
5346 pretend that there is such a non-C file among the sources of the
5347 library, thus forcing @command{automake} to select the appropriate
5348 linker.  Here is the top-level @file{Makefile} of our example updated
5349 to force C++ linking.
5351 @example
5352 SUBDIRS = sub1 sub2 @dots{}
5353 lib_LTLIBRARIES = libtop.la
5354 libtop_la_SOURCES =
5355 # Dummy C++ source to cause C++ linking.
5356 nodist_EXTRA_libtop_la_SOURCES = dummy.cxx
5357 libtop_la_LIBADD = \
5358   sub1/libsub1.la \
5359   sub2/libsub2.la \
5360   @dots{}
5361 @end example
5363 @samp{EXTRA_*_SOURCES} variables are used to keep track of source
5364 files that might be compiled (this is mostly useful when doing
5365 conditional compilation using @code{AC_SUBST}, @pxref{Conditional
5366 Libtool Sources}), and the @code{nodist_} prefix means the listed
5367 sources are not to be distributed (@pxref{Program and Library
5368 Variables}).  In effect the file @file{dummy.cxx} does not need to
5369 exist in the source tree.  Of course if you have some real source file
5370 to list in @code{libtop_la_SOURCES} there is no point in cheating with
5371 @code{nodist_EXTRA_libtop_la_SOURCES}.
5374 @node Libtool Modules
5375 @subsection Libtool Modules
5376 @cindex modules, libtool
5377 @cindex libtool modules
5378 @cindex @option{-module}, libtool
5380 These are libtool libraries meant to be dlopened.  They are
5381 indicated to libtool by passing @option{-module} at link-time.
5383 @example
5384 pkglib_LTLIBRARIES = mymodule.la
5385 mymodule_la_SOURCES = doit.c
5386 mymodule_la_LDFLAGS = -module
5387 @end example
5389 Ordinarily, Automake requires that a library's name start with
5390 @code{lib}.  However, when building a dynamically loadable module you
5391 might wish to use a "nonstandard" name.  Automake will not complain
5392 about such nonstandard names if it knows the library being built is a
5393 libtool module, i.e., if @option{-module} explicitly appears in the
5394 library's @code{_LDFLAGS} variable (or in the common @code{AM_LDFLAGS}
5395 variable when no per-library @code{_LDFLAGS} variable is defined).
5397 As always, @code{AC_SUBST} variables are black boxes to Automake since
5398 their values are not yet known when @command{automake} is run.
5399 Therefore if @option{-module} is set via such a variable, Automake
5400 cannot notice it and will proceed as if the library was an ordinary
5401 libtool library, with strict naming.
5403 If @code{mymodule_la_SOURCES} is not specified, then it defaults to
5404 the single file @file{mymodule.c} (@pxref{Default _SOURCES}).
5406 @node Libtool Flags
5407 @subsection @code{_LIBADD}, @code{_LDFLAGS}, and @code{_LIBTOOLFLAGS}
5408 @cindex @code{_LIBADD}, libtool
5409 @cindex @code{_LDFLAGS}, libtool
5410 @cindex @code{_LIBTOOLFLAGS}, libtool
5411 @vindex AM_LIBTOOLFLAGS
5412 @vindex LIBTOOLFLAGS
5413 @vindex maude_LIBTOOLFLAGS
5415 As shown in previous sections, the @samp{@var{library}_LIBADD}
5416 variable should be used to list extra libtool objects (@file{.lo}
5417 files) or libtool libraries (@file{.la}) to add to @var{library}.
5419 The @samp{@var{library}_LDFLAGS} variable is the place to list
5420 additional libtool linking flags, such as @option{-version-info},
5421 @option{-static}, and a lot more.  @xref{Link mode, , Link mode,
5422 libtool, The Libtool Manual}.
5424 The @command{libtool} command has two kinds of options: mode-specific
5425 options and generic options.  Mode-specific options such as the
5426 aforementioned linking flags should be lumped with the other flags
5427 passed to the tool invoked by @command{libtool} (hence the use of
5428 @samp{@var{library}_LDFLAGS} for libtool linking flags).  Generic
5429 options include @option{--tag=@var{tag}} and @option{--silent}
5430 (@pxref{Invoking libtool, , Invoking @command{libtool}, libtool, The
5431 Libtool Manual} for more options) should appear before the mode
5432 selection on the command line; in @file{Makefile.am}s they should
5433 be listed in the @samp{@var{library}_LIBTOOLFLAGS} variable.
5435 If @samp{@var{library}_LIBTOOLFLAGS} is not defined, then the variable
5436 @code{AM_LIBTOOLFLAGS} is used instead.
5438 These flags are passed to libtool after the @option{--tag=@var{tag}}
5439 option computed by Automake (if any), so
5440 @samp{@var{library}_LIBTOOLFLAGS} (or @code{AM_LIBTOOLFLAGS}) is a
5441 good place to override or supplement the @option{--tag=@var{tag}}
5442 setting.
5444 The libtool rules also use a @code{LIBTOOLFLAGS} variable that should
5445 not be set in @file{Makefile.am}: this is a user variable (@pxref{Flag
5446 Variables Ordering}.  It allows users to run @samp{make
5447 LIBTOOLFLAGS=--silent}, for instance.  Note that the verbosity of
5448 @command{libtool} can also be influenced with the Automake
5449 @option{silent-rules} option (@pxref{Options}).
5452 @node LTLIBOBJS, Libtool Issues, Libtool Flags, A Shared Library
5453 @subsection @code{LTLIBOBJS} and @code{LTALLOCA}
5454 @cindex @code{LTLIBOBJS}, special handling
5455 @cindex @code{LIBOBJS}, and Libtool
5456 @cindex @code{LTALLOCA}, special handling
5457 @cindex @code{ALLOCA}, and Libtool
5458 @vindex LTLIBOBJS
5459 @vindex LIBOBJS
5460 @vindex LTALLOCA
5461 @vindex ALLOCA
5462 @acindex AC_LIBOBJ
5464 Where an ordinary library might include @samp{$(LIBOBJS)} or
5465 @samp{$(ALLOCA)} (@pxref{LIBOBJS}), a libtool library must use
5466 @samp{$(LTLIBOBJS)} or @samp{$(LTALLOCA)}.  This is required because
5467 the object files that libtool operates on do not necessarily end in
5468 @file{.o}.
5470 Nowadays, the computation of @code{LTLIBOBJS} from @code{LIBOBJS} is
5471 performed automatically by Autoconf (@pxref{AC_LIBOBJ vs LIBOBJS, ,
5472 @code{AC_LIBOBJ} vs.@: @code{LIBOBJS}, autoconf, The Autoconf Manual}).
5474 @node Libtool Issues
5475 @subsection Common Issues Related to Libtool's Use
5477 @menu
5478 * Error required file ltmain.sh not found::  The need to run libtoolize
5479 * Objects created both with libtool and without::  Avoid a specific build race
5480 @end menu
5482 @node Error required file ltmain.sh not found
5483 @subsubsection Error: @samp{required file `./ltmain.sh' not found}
5484 @cindex @file{ltmain.sh} not found
5485 @cindex @command{libtoolize}, no longer run by @command{automake}
5486 @cindex @command{libtoolize} and @command{autoreconf}
5487 @cindex @command{autoreconf} and @command{libtoolize}
5488 @cindex @file{bootstrap.sh} and @command{autoreconf}
5489 @cindex @file{autogen.sh} and @command{autoreconf}
5491 Libtool comes with a tool called @command{libtoolize} that will
5492 install libtool's supporting files into a package.  Running this
5493 command will install @file{ltmain.sh}.  You should execute it before
5494 @command{aclocal} and @command{automake}.
5496 People upgrading old packages to newer autotools are likely to face
5497 this issue because older Automake versions used to call
5498 @command{libtoolize}.  Therefore old build scripts do not call
5499 @command{libtoolize}.
5501 Since Automake 1.6, it has been decided that running
5502 @command{libtoolize} was none of Automake's business.  Instead, that
5503 functionality has been moved into the @command{autoreconf} command
5504 (@pxref{autoreconf Invocation, , Using @command{autoreconf}, autoconf,
5505 The Autoconf Manual}).  If you do not want to remember what to run and
5506 when, just learn the @command{autoreconf} command.  Hopefully,
5507 replacing existing @file{bootstrap.sh} or @file{autogen.sh} scripts by
5508 a call to @command{autoreconf} should also free you from any similar
5509 incompatible change in the future.
5511 @node Objects created both with libtool and without
5512 @subsubsection Objects @samp{created with both libtool and without}
5514 Sometimes, the same source file is used both to build a libtool
5515 library and to build another non-libtool target (be it a program or
5516 another library).
5518 Let's consider the following @file{Makefile.am}.
5520 @example
5521 bin_PROGRAMS = prog
5522 prog_SOURCES = prog.c foo.c @dots{}
5524 lib_LTLIBRARIES = libfoo.la
5525 libfoo_la_SOURCES = foo.c @dots{}
5526 @end example
5528 @noindent
5529 (In this trivial case the issue could be avoided by linking
5530 @file{libfoo.la} with @file{prog} instead of listing @file{foo.c} in
5531 @code{prog_SOURCES}.  But let's assume we really want to keep
5532 @file{prog} and @file{libfoo.la} separate.)
5534 Technically, it means that we should build @file{foo.$(OBJEXT)} for
5535 @file{prog}, and @file{foo.lo} for @file{libfoo.la}.  The problem is
5536 that in the course of creating @file{foo.lo}, libtool may erase (or
5537 replace) @file{foo.$(OBJEXT)}, and this cannot be avoided.
5539 Therefore, when Automake detects this situation it will complain
5540 with a message such as
5541 @example
5542 object `foo.$(OBJEXT)' created both with libtool and without
5543 @end example
5545 A workaround for this issue is to ensure that these two objects get
5546 different basenames.  As explained in @ref{Renamed Objects}, this
5547 happens automatically when per-targets flags are used.
5549 @example
5550 bin_PROGRAMS = prog
5551 prog_SOURCES = prog.c foo.c @dots{}
5552 prog_CFLAGS = $(AM_CFLAGS)
5554 lib_LTLIBRARIES = libfoo.la
5555 libfoo_la_SOURCES = foo.c @dots{}
5556 @end example
5558 @noindent
5559 Adding @samp{prog_CFLAGS = $(AM_CFLAGS)} is almost a no-op, because
5560 when the @code{prog_CFLAGS} is defined, it is used instead of
5561 @code{AM_CFLAGS}.  However as a side effect it will cause
5562 @file{prog.c} and @file{foo.c} to be compiled as
5563 @file{prog-prog.$(OBJEXT)} and @file{prog-foo.$(OBJEXT)}, which solves
5564 the issue.
5566 @node Program and Library Variables
5567 @section Program and Library Variables
5569 Associated with each program is a collection of variables that can be
5570 used to modify how that program is built.  There is a similar list of
5571 such variables for each library.  The canonical name of the program (or
5572 library) is used as a base for naming these variables.
5574 In the list below, we use the name ``maude'' to refer to the program or
5575 library.  In your @file{Makefile.am} you would replace this with the
5576 canonical name of your program.  This list also refers to ``maude'' as a
5577 program, but in general the same rules apply for both static and dynamic
5578 libraries; the documentation below notes situations where programs and
5579 libraries differ.
5581 @vtable @code
5582 @item maude_SOURCES
5583 This variable, if it exists, lists all the source files that are
5584 compiled to build the program.  These files are added to the
5585 distribution by default.  When building the program, Automake will cause
5586 each source file to be compiled to a single @file{.o} file (or
5587 @file{.lo} when using libtool).  Normally these object files are named
5588 after the source file, but other factors can change this.  If a file in
5589 the @code{_SOURCES} variable has an unrecognized extension, Automake
5590 will do one of two things with it.  If a suffix rule exists for turning
5591 files with the unrecognized extension into @file{.o} files, then
5592 @command{automake} will treat this file as it will any other source file
5593 (@pxref{Support for Other Languages}).  Otherwise, the file will be
5594 ignored as though it were a header file.
5596 The prefixes @code{dist_} and @code{nodist_} can be used to control
5597 whether files listed in a @code{_SOURCES} variable are distributed.
5598 @code{dist_} is redundant, as sources are distributed by default, but it
5599 can be specified for clarity if desired.
5601 It is possible to have both @code{dist_} and @code{nodist_} variants of
5602 a given @code{_SOURCES} variable at once; this lets you easily
5603 distribute some files and not others, for instance:
5605 @example
5606 nodist_maude_SOURCES = nodist.c
5607 dist_maude_SOURCES = dist-me.c
5608 @end example
5610 By default the output file (on Unix systems, the @file{.o} file) will
5611 be put into the current build directory.  However, if the option
5612 @option{subdir-objects} is in effect in the current directory then the
5613 @file{.o} file will be put into the subdirectory named after the
5614 source file.  For instance, with @option{subdir-objects} enabled,
5615 @file{sub/dir/file.c} will be compiled to @file{sub/dir/file.o}.  Some
5616 people prefer this mode of operation.  You can specify
5617 @option{subdir-objects} in @code{AUTOMAKE_OPTIONS} (@pxref{Options}).
5618 @cindex Subdirectory, objects in
5619 @cindex Objects in subdirectory
5622 @item EXTRA_maude_SOURCES
5623 Automake needs to know the list of files you intend to compile
5624 @emph{statically}.  For one thing, this is the only way Automake has of
5625 knowing what sort of language support a given @file{Makefile.in}
5626 requires.  @footnote{There are other, more obscure reasons for
5627 this limitation as well.}  This means that, for example, you can't put a
5628 configure substitution like @samp{@@my_sources@@} into a @samp{_SOURCES}
5629 variable.  If you intend to conditionally compile source files and use
5630 @file{configure} to substitute the appropriate object names into, e.g.,
5631 @code{_LDADD} (see below), then you should list the corresponding source
5632 files in the @code{EXTRA_} variable.
5634 This variable also supports @code{dist_} and @code{nodist_} prefixes.
5635 For instance, @code{nodist_EXTRA_maude_SOURCES} would list extra
5636 sources that may need to be built, but should not be distributed.
5638 @item maude_AR
5639 A static library is created by default by invoking @samp{$(AR)
5640 $(ARFLAGS)} followed by the name of the library and then the objects
5641 being put into the library.  You can override this by setting the
5642 @code{_AR} variable.  This is usually used with C++; some C++
5643 compilers require a special invocation in order to instantiate all the
5644 templates that should go into a library.  For instance, the SGI C++
5645 compiler likes this variable set like so:
5646 @example
5647 libmaude_a_AR = $(CXX) -ar -o
5648 @end example
5650 @item maude_LIBADD
5651 Extra objects can be added to a @emph{library} using the @code{_LIBADD}
5652 variable.  For instance, this should be used for objects determined by
5653 @command{configure} (@pxref{A Library}).
5655 In the case of libtool libraries, @code{maude_LIBADD} can also refer
5656 to other libtool libraries.
5658 @item maude_LDADD
5659 Extra objects (@file{*.$(OBJEXT)}) and libraries (@file{*.a},
5660 @file{*.la}) can be added to a @emph{program} by listing them in the
5661 @code{_LDADD} variable.  For instance, this should be used for objects
5662 determined by @command{configure} (@pxref{Linking}).
5664 @code{_LDADD} and @code{_LIBADD} are inappropriate for passing
5665 program-specific linker flags (except for @option{-l}, @option{-L},
5666 @option{-dlopen} and @option{-dlpreopen}).  Use the @code{_LDFLAGS} variable
5667 for this purpose.
5669 For instance, if your @file{configure.ac} uses @code{AC_PATH_XTRA}, you
5670 could link your program against the X libraries like so:
5672 @example
5673 maude_LDADD = $(X_PRE_LIBS) $(X_LIBS) $(X_EXTRA_LIBS)
5674 @end example
5676 We recommend that you use @option{-l} and @option{-L} only when
5677 referring to third-party libraries, and give the explicit file names
5678 of any library built by your package.  Doing so will ensure that
5679 @code{maude_DEPENDENCIES} (see below) is correctly defined by default.
5681 @item maude_LDFLAGS
5682 This variable is used to pass extra flags to the link step of a program
5683 or a shared library.  It overrides the @code{AM_LDFLAGS} variable.
5685 @item maude_LIBTOOLFLAGS
5686 This variable is used to pass extra options to @command{libtool}.
5687 It overrides the @code{AM_LIBTOOLFLAGS} variable.
5688 These options are output before @command{libtool}'s @option{--mode=@var{mode}}
5689 option, so they should not be mode-specific options (those belong to
5690 the compiler or linker flags).  @xref{Libtool Flags}.
5692 @item maude_DEPENDENCIES
5693 It is also occasionally useful to have a target (program or library)
5694 depend on some other file that is not actually part of that target.
5695 This can be done using the @code{_DEPENDENCIES} variable.  Each
5696 target depends on the contents of such a variable, but no further
5697 interpretation is done.
5699 Since these dependencies are associated to the link rule used to
5700 create the programs they should normally list files used by the link
5701 command.  That is @file{*.$(OBJEXT)}, @file{*.a}, or @file{*.la} files
5702 for programs; @file{*.lo} and @file{*.la} files for Libtool libraries;
5703 and @file{*.$(OBJEXT)} files for static libraries.  In rare cases you
5704 may need to add other kinds of files such as linker scripts, but
5705 @emph{listing a source file in @code{_DEPENDENCIES} is wrong}.  If
5706 some source file needs to be built before all the components of a
5707 program are built, consider using the @code{BUILT_SOURCES} variable
5708 (@pxref{Sources}).
5710 If @code{_DEPENDENCIES} is not supplied, it is computed by Automake.
5711 The automatically-assigned value is the contents of @code{_LDADD} or
5712 @code{_LIBADD}, with most configure substitutions, @option{-l}, @option{-L},
5713 @option{-dlopen} and @option{-dlpreopen} options removed.  The configure
5714 substitutions that are left in are only @samp{$(LIBOBJS)} and
5715 @samp{$(ALLOCA)}; these are left because it is known that they will not
5716 cause an invalid value for @code{_DEPENDENCIES} to be generated.
5718 @code{_DEPENDENCIES} is more likely used to perform conditional
5719 compilation using an @code{AC_SUBST} variable that contains a list of
5720 objects.  @xref{Conditional Sources}, and @ref{Conditional Libtool
5721 Sources}.
5723 @item maude_LINK
5724 You can override the linker on a per-program basis.  By default the
5725 linker is chosen according to the languages used by the program.  For
5726 instance, a program that includes C++ source code would use the C++
5727 compiler to link.  The @code{_LINK} variable must hold the name of a
5728 command that can be passed all the @file{.o} file names and libraries
5729 to link against as arguments.  Note that the name of the underlying
5730 program is @emph{not} passed to @code{_LINK}; typically one uses
5731 @samp{$@@}:
5733 @example
5734 maude_LINK = $(CCLD) -magic -o $@@
5735 @end example
5737 If a @code{_LINK} variable is not supplied, it may still be generated
5738 and used by Automake due to the use of per-target link flags such as
5739 @code{_CFLAGS}, @code{_LDFLAGS} or @code{_LIBTOOLFLAGS}, in cases where
5740 they apply.
5742 @item maude_CCASFLAGS
5743 @itemx maude_CFLAGS
5744 @itemx maude_CPPFLAGS
5745 @itemx maude_CXXFLAGS
5746 @itemx maude_FFLAGS
5747 @itemx maude_GCJFLAGS
5748 @itemx maude_LFLAGS
5749 @itemx maude_OBJCFLAGS
5750 @itemx maude_RFLAGS
5751 @itemx maude_UPCFLAGS
5752 @itemx maude_YFLAGS
5753 @cindex per-target compilation flags, defined
5754 Automake allows you to set compilation flags on a per-program (or
5755 per-library) basis.  A single source file can be included in several
5756 programs, and it will potentially be compiled with different flags for
5757 each program.  This works for any language directly supported by
5758 Automake.  These @dfn{per-target compilation flags} are
5759 @samp{_CCASFLAGS},
5760 @samp{_CFLAGS},
5761 @samp{_CPPFLAGS},
5762 @samp{_CXXFLAGS},
5763 @samp{_FFLAGS},
5764 @samp{_GCJFLAGS},
5765 @samp{_LFLAGS},
5766 @samp{_OBJCFLAGS},
5767 @samp{_RFLAGS},
5768 @samp{_UPCFLAGS}, and
5769 @samp{_YFLAGS}.
5771 When using a per-target compilation flag, Automake will choose a
5772 different name for the intermediate object files.  Ordinarily a file
5773 like @file{sample.c} will be compiled to produce @file{sample.o}.
5774 However, if the program's @code{_CFLAGS} variable is set, then the
5775 object file will be named, for instance, @file{maude-sample.o}.  (See
5776 also @ref{Renamed Objects}.)  The use of per-target compilation flags
5777 with C sources requires that the macro @code{AM_PROG_CC_C_O} be called
5778 from @file{configure.ac}.
5780 In compilations with per-target flags, the ordinary @samp{AM_} form of
5781 the flags variable is @emph{not} automatically included in the
5782 compilation (however, the user form of the variable @emph{is} included).
5783 So for instance, if you want the hypothetical @file{maude} compilations
5784 to also use the value of @code{AM_CFLAGS}, you would need to write:
5786 @example
5787 maude_CFLAGS = @dots{} your flags @dots{} $(AM_CFLAGS)
5788 @end example
5790 @xref{Flag Variables Ordering}, for more discussion about the
5791 interaction between user variables, @samp{AM_} shadow variables, and
5792 per-target variables.
5794 @item maude_SHORTNAME
5795 On some platforms the allowable file names are very short.  In order to
5796 support these systems and per-target compilation flags at the same
5797 time, Automake allows you to set a ``short name'' that will influence
5798 how intermediate object files are named.  For instance, in the following
5799 example,
5801 @example
5802 bin_PROGRAMS = maude
5803 maude_CPPFLAGS = -DSOMEFLAG
5804 maude_SHORTNAME = m
5805 maude_SOURCES = sample.c @dots{}
5806 @end example
5808 @noindent
5809 the object file would be named @file{m-sample.o} rather than
5810 @file{maude-sample.o}.
5812 This facility is rarely needed in practice,
5813 and we recommend avoiding it until you find it is required.
5814 @end vtable
5816 @node Default _SOURCES
5817 @section Default @code{_SOURCES}
5819 @vindex _SOURCES
5820 @vindex SOURCES
5821 @cindex @code{_SOURCES}, default
5822 @cindex default @code{_SOURCES}
5823 @vindex AM_DEFAULT_SOURCE_EXT
5825 @code{_SOURCES} variables are used to specify source files of programs
5826 (@pxref{A Program}), libraries (@pxref{A Library}), and Libtool
5827 libraries (@pxref{A Shared Library}).
5829 When no such variable is specified for a target, Automake will define
5830 one itself.  The default is to compile a single C file whose base name
5831 is the name of the target itself, with any extension replaced by
5832 @code{AM_DEFAULT_SOURCE_EXT}, which defaults to @file{.c}.
5834 For example if you have the following somewhere in your
5835 @file{Makefile.am} with no corresponding @code{libfoo_a_SOURCES}:
5837 @example
5838 lib_LIBRARIES = libfoo.a sub/libc++.a
5839 @end example
5841 @noindent
5842 @file{libfoo.a} will be built using a default source file named
5843 @file{libfoo.c}, and @file{sub/libc++.a} will be built from
5844 @file{sub/libc++.c}.  (In older versions @file{sub/libc++.a}
5845 would be built from @file{sub_libc___a.c}, i.e., the default source
5846 was the canonized name of the target, with @file{.c} appended.
5847 We believe the new behavior is more sensible, but for backward
5848 compatibility @command{automake} will use the old name if a file or a rule
5849 with that name exists and @code{AM_DEFAULT_SOURCE_EXT} is not used.)
5851 @cindex @code{check_PROGRAMS} example
5852 @vindex check_PROGRAMS
5853 Default sources are mainly useful in test suites, when building many
5854 test programs each from a single source.  For instance, in
5856 @example
5857 check_PROGRAMS = test1 test2 test3
5858 AM_DEFAULT_SOURCE_EXT = .cpp
5859 @end example
5861 @noindent
5862 @file{test1}, @file{test2}, and @file{test3} will be built
5863 from @file{test1.cpp}, @file{test2.cpp}, and @file{test3.cpp}.
5864 Without the last line, they will be built from @file{test1.c},
5865 @file{test2.c}, and @file{test3.c}.
5867 @cindex Libtool modules, default source example
5868 @cindex default source, Libtool modules example
5869 Another case where this is convenient is building many Libtool modules
5870 (@file{module@var{n}.la}), each defined in its own file
5871 (@file{module@var{n}.c}).
5873 @example
5874 AM_LDFLAGS = -module
5875 lib_LTLIBRARIES = module1.la module2.la module3.la
5876 @end example
5878 @cindex empty @code{_SOURCES}
5879 @cindex @code{_SOURCES}, empty
5880 Finally, there is one situation where this default source computation
5881 needs to be avoided: when a target should not be built from sources.
5882 We already saw such an example in @ref{true}; this happens when all
5883 the constituents of a target have already been compiled and just need
5884 to be combined using a @code{_LDADD} variable.  Then it is necessary
5885 to define an empty @code{_SOURCES} variable, so that @command{automake}
5886 does not compute a default.
5888 @example
5889 bin_PROGRAMS = target
5890 target_SOURCES =
5891 target_LDADD = libmain.a libmisc.a
5892 @end example
5894 @node LIBOBJS
5895 @section Special handling for @code{LIBOBJS} and @code{ALLOCA}
5897 @cindex @code{LIBOBJS}, example
5898 @cindex @code{ALLOCA}, example
5899 @cindex @code{LIBOBJS}, special handling
5900 @cindex @code{ALLOCA}, special handling
5901 @vindex LTLIBOBJS
5902 @vindex LIBOBJS
5903 @vindex LTALLOCA
5904 @vindex ALLOCA
5906 The @samp{$(LIBOBJS)} and @samp{$(ALLOCA)} variables list object
5907 files that should be compiled into the project to provide an
5908 implementation for functions that are missing or broken on the host
5909 system.  They are substituted by @file{configure}.
5911 @acindex AC_LIBOBJ
5913 These variables are defined by Autoconf macros such as
5914 @code{AC_LIBOBJ}, @code{AC_REPLACE_FUNCS} (@pxref{Generic Functions, ,
5915 Generic Function Checks, autoconf, The Autoconf Manual}), or
5916 @code{AC_FUNC_ALLOCA} (@pxref{Particular Functions, , Particular
5917 Function Checks, autoconf, The Autoconf Manual}).  Many other Autoconf
5918 macros call @code{AC_LIBOBJ} or @code{AC_REPLACE_FUNCS} to
5919 populate @samp{$(LIBOBJS)}.
5921 @acindex AC_LIBSOURCE
5923 Using these variables is very similar to doing conditional compilation
5924 using @code{AC_SUBST} variables, as described in @ref{Conditional
5925 Sources}.  That is, when building a program, @samp{$(LIBOBJS)} and
5926 @samp{$(ALLOCA)} should be added to the associated @samp{*_LDADD}
5927 variable, or to the @samp{*_LIBADD} variable when building a library.
5928 However there is no need to list the corresponding sources in
5929 @samp{EXTRA_*_SOURCES} nor to define @samp{*_DEPENDENCIES}.  Automake
5930 automatically adds @samp{$(LIBOBJS)} and @samp{$(ALLOCA)} to the
5931 dependencies, and it will discover the list of corresponding source
5932 files automatically (by tracing the invocations of the
5933 @code{AC_LIBSOURCE} Autoconf macros).  However, if you have already
5934 defined @samp{*_DEPENDENCIES} explicitly for an unrelated reason, then
5935 you have to add these variables manually.
5937 These variables are usually used to build a portability library that
5938 is linked with all the programs of the project.  We now review a
5939 sample setup.  First, @file{configure.ac} contains some checks that
5940 affect either @code{LIBOBJS} or @code{ALLOCA}.
5942 @example
5943 # configure.ac
5944 @dots{}
5945 AC_CONFIG_LIBOBJ_DIR([lib])
5946 @dots{}
5947 AC_FUNC_MALLOC             dnl May add malloc.$(OBJEXT) to LIBOBJS
5948 AC_FUNC_MEMCMP             dnl May add memcmp.$(OBJEXT) to LIBOBJS
5949 AC_REPLACE_FUNCS([strdup]) dnl May add strdup.$(OBJEXT) to LIBOBJS
5950 AC_FUNC_ALLOCA             dnl May add alloca.$(OBJEXT) to ALLOCA
5951 @dots{}
5952 AC_CONFIG_FILES([
5953   lib/Makefile
5954   src/Makefile
5956 AC_OUTPUT
5957 @end example
5959 @acindex AC_CONFIG_LIBOBJ_DIR
5961 The @code{AC_CONFIG_LIBOBJ_DIR} tells Autoconf that the source files
5962 of these object files are to be found in the @file{lib/} directory.
5963 Automake can also use this information, otherwise it expects the
5964 source files are to be in the directory where the @samp{$(LIBOBJS)}
5965 and @samp{$(ALLOCA)} variables are used.
5967 The @file{lib/} directory should therefore contain @file{malloc.c},
5968 @file{memcmp.c}, @file{strdup.c}, @file{alloca.c}.  Here is its
5969 @file{Makefile.am}:
5971 @example
5972 # lib/Makefile.am
5974 noinst_LIBRARIES = libcompat.a
5975 libcompat_a_SOURCES =
5976 libcompat_a_LIBADD = $(LIBOBJS) $(ALLOCA)
5977 @end example
5979 The library can have any name, of course, and anyway it is not going
5980 to be installed: it just holds the replacement versions of the missing
5981 or broken functions so we can later link them in.  Many projects
5982 also include extra functions, specific to the project, in that
5983 library: they are simply added on the @code{_SOURCES} line.
5985 @cindex Empty libraries and @samp{$(LIBOBJS)}
5986 @cindex @samp{$(LIBOBJS)} and empty libraries
5987 There is a small trap here, though: @samp{$(LIBOBJS)} and
5988 @samp{$(ALLOCA)} might be empty, and building an empty library is not
5989 portable.  You should ensure that there is always something to put in
5990 @file{libcompat.a}.  Most projects will also add some utility
5991 functions in that directory, and list them in
5992 @code{libcompat_a_SOURCES}, so in practice @file{libcompat.a} cannot
5993 be empty.
5995 Finally here is how this library could be used from the @file{src/}
5996 directory.
5998 @example
5999 # src/Makefile.am
6001 # Link all programs in this directory with libcompat.a
6002 LDADD = ../lib/libcompat.a
6004 bin_PROGRAMS = tool1 tool2 @dots{}
6005 tool1_SOURCES = @dots{}
6006 tool2_SOURCES = @dots{}
6007 @end example
6009 When option @option{subdir-objects} is not used, as in the above
6010 example, the variables @samp{$(LIBOBJS)} or @samp{$(ALLOCA)} can only
6011 be used in the directory where their sources lie.  E.g., here it would
6012 be wrong to use @samp{$(LIBOBJS)} or @samp{$(ALLOCA)} in
6013 @file{src/Makefile.am}.  However if both @option{subdir-objects} and
6014 @code{AC_CONFIG_LIBOBJ_DIR} are used, it is OK to use these variables
6015 in other directories.  For instance @file{src/Makefile.am} could be
6016 changed as follows.
6018 @example
6019 # src/Makefile.am
6021 AUTOMAKE_OPTIONS = subdir-objects
6022 LDADD = $(LIBOBJS) $(ALLOCA)
6024 bin_PROGRAMS = tool1 tool2 @dots{}
6025 tool1_SOURCES = @dots{}
6026 tool2_SOURCES = @dots{}
6027 @end example
6029 Because @samp{$(LIBOBJS)} and @samp{$(ALLOCA)} contain object
6030 file names that end with @samp{.$(OBJEXT)}, they are not suitable for
6031 Libtool libraries (where the expected object extension is @file{.lo}):
6032 @code{LTLIBOBJS} and @code{LTALLOCA} should be used instead.
6034 @code{LTLIBOBJS} is defined automatically by Autoconf and should not
6035 be defined by hand (as in the past), however at the time of writing
6036 @code{LTALLOCA} still needs to be defined from @code{ALLOCA} manually.
6037 @xref{AC_LIBOBJ vs LIBOBJS, , @code{AC_LIBOBJ} vs.@: @code{LIBOBJS},
6038 autoconf, The Autoconf Manual}.
6041 @node Program Variables
6042 @section Variables used when building a program
6044 Occasionally it is useful to know which @file{Makefile} variables
6045 Automake uses for compilations, and in which order (@pxref{Flag
6046 Variables Ordering}); for instance, you might need to do your own
6047 compilation in some special cases.
6049 Some variables are inherited from Autoconf; these are @code{CC},
6050 @code{CFLAGS}, @code{CPPFLAGS}, @code{DEFS}, @code{LDFLAGS}, and
6051 @code{LIBS}.
6052 @vindex CC
6053 @vindex CFLAGS
6054 @vindex CPPFLAGS
6055 @vindex DEFS
6056 @vindex LDFLAGS
6057 @vindex LIBS
6059 There are some additional variables that Automake defines on its own:
6061 @vtable @code
6062 @item AM_CPPFLAGS
6063 The contents of this variable are passed to every compilation that invokes
6064 the C preprocessor; it is a list of arguments to the preprocessor.  For
6065 instance, @option{-I} and @option{-D} options should be listed here.
6067 Automake already provides some @option{-I} options automatically, in a
6068 separate variable that is also passed to every compilation that invokes
6069 the C preprocessor.  In particular it generates @samp{-I.},
6070 @samp{-I$(srcdir)}, and a @option{-I} pointing to the directory holding
6071 @file{config.h} (if you've used @code{AC_CONFIG_HEADERS} or
6072 @code{AM_CONFIG_HEADER}).  You can disable the default @option{-I}
6073 options using the @option{nostdinc} option.
6075 When a file to be included is generated during the build and not part
6076 of a distribution tarball, its location is under @code{$(builddir)},
6077 not under @code{$(srcdir)}.  This matters especially for packages that
6078 use header files placed in sub-directories and want to allow builds
6079 outside the source tree (@pxref{VPATH Builds}). In that case we
6080 recommend to use a pair of @option{-I} options, such as, e.g.,
6081 @samp{-Isome/subdir -I$(srcdir)/some/subdir} or
6082 @samp{-I$(top_builddir)/some/subdir -I$(top_srcdir)/some/subdir}.
6083 Note that the reference to the build tree should come before the
6084 reference to the source tree, so that accidentally leftover generated
6085 files in the source directory are ignored.
6087 @code{AM_CPPFLAGS} is ignored in preference to a per-executable (or
6088 per-library) @code{_CPPFLAGS} variable if it is defined.
6090 @item INCLUDES
6091 This does the same job as @code{AM_CPPFLAGS} (or any per-target
6092 @code{_CPPFLAGS} variable if it is used).  It is an older name for the
6093 same functionality.  This variable is deprecated; we suggest using
6094 @code{AM_CPPFLAGS} and per-target @code{_CPPFLAGS} instead.
6096 @item AM_CFLAGS
6097 This is the variable the @file{Makefile.am} author can use to pass
6098 in additional C compiler flags.  It is more fully documented elsewhere.
6099 In some situations, this is not used, in preference to the
6100 per-executable (or per-library) @code{_CFLAGS}.
6102 @item COMPILE
6103 This is the command used to actually compile a C source file.  The
6104 file name is appended to form the complete command line.
6106 @item AM_LDFLAGS
6107 This is the variable the @file{Makefile.am} author can use to pass
6108 in additional linker flags.  In some situations, this is not used, in
6109 preference to the per-executable (or per-library) @code{_LDFLAGS}.
6111 @item LINK
6112 This is the command used to actually link a C program.  It already
6113 includes @samp{-o $@@} and the usual variable references (for instance,
6114 @code{CFLAGS}); it takes as ``arguments'' the names of the object files
6115 and libraries to link in.  This variable is not used when the linker is
6116 overridden with a per-target @code{_LINK} variable or per-target flags
6117 cause Automake to define such a @code{_LINK} variable.
6118 @end vtable
6121 @node Yacc and Lex
6122 @section Yacc and Lex support
6124 Automake has somewhat idiosyncratic support for Yacc and Lex.
6126 Automake assumes that the @file{.c} file generated by @command{yacc}
6127 (or @command{lex}) should be named using the basename of the input
6128 file.  That is, for a yacc source file @file{foo.y}, Automake will
6129 cause the intermediate file to be named @file{foo.c} (as opposed to
6130 @file{y.tab.c}, which is more traditional).
6132 The extension of a yacc source file is used to determine the extension
6133 of the resulting C or C++ file.  Files with the extension @file{.y}
6134 will be turned into @file{.c} files; likewise, @file{.yy} will become
6135 @file{.cc}; @file{.y++}, @file{c++}; @file{.yxx}, @file{.cxx}; and
6136 @file{.ypp}, @file{.cpp}.
6138 Likewise, lex source files can be used to generate C or C++; the
6139 extensions @file{.l}, @file{.ll}, @file{.l++}, @file{.lxx}, and
6140 @file{.lpp} are recognized.
6142 You should never explicitly mention the intermediate (C or C++) file
6143 in any @code{SOURCES} variable; only list the source file.
6145 The intermediate files generated by @command{yacc} (or @command{lex})
6146 will be included in any distribution that is made.  That way the user
6147 doesn't need to have @command{yacc} or @command{lex}.
6149 If a @command{yacc} source file is seen, then your @file{configure.ac} must
6150 define the variable @code{YACC}.  This is most easily done by invoking
6151 the macro @code{AC_PROG_YACC} (@pxref{Particular Programs, , Particular
6152 Program Checks, autoconf, The Autoconf Manual}).
6154 @vindex YFLAGS
6155 @vindex AM_YFLAGS
6156 When @code{yacc} is invoked, it is passed @code{AM_YFLAGS} and
6157 @code{YFLAGS}.  The latter is a user variable and the former is
6158 intended for the @file{Makefile.am} author.
6160 @code{AM_YFLAGS} is usually used to pass the @option{-d} option to
6161 @command{yacc}.  Automake knows what this means and will automatically
6162 adjust its rules to update and distribute the header file built by
6163 @samp{yacc -d}@footnote{Please note that @command{automake} recognizes
6164 @option{-d} in @code{AM_YFLAGS} only if it is not clustered with other
6165 options; for example, it won't be recognized if @code{AM_YFLAGS} is
6166 @option{-dt}, but it will be if @code{AM_YFLAGS} is @option{-d -t} or
6167 @option{-d -t}}.
6168 What Automake cannot guess, though, is where this
6169 header will be used: it is up to you to ensure the header gets built
6170 before it is first used.  Typically this is necessary in order for
6171 dependency tracking to work when the header is included by another
6172 file.  The common solution is listing the header file in
6173 @code{BUILT_SOURCES} (@pxref{Sources}) as follows.
6175 @example
6176 BUILT_SOURCES = parser.h
6177 AM_YFLAGS = -d
6178 bin_PROGRAMS = foo
6179 foo_SOURCES = @dots{} parser.y @dots{}
6180 @end example
6182 If a @command{lex} source file is seen, then your @file{configure.ac}
6183 must define the variable @code{LEX}.  You can use @code{AC_PROG_LEX}
6184 to do this (@pxref{Particular Programs, , Particular Program Checks,
6185 autoconf, The Autoconf Manual}), but using @code{AM_PROG_LEX} macro
6186 (@pxref{Macros}) is recommended.
6188 @vindex LFLAGS
6189 @vindex AM_LFLAGS
6190 When @command{lex} is invoked, it is passed @code{AM_LFLAGS} and
6191 @code{LFLAGS}.  The latter is a user variable and the former is
6192 intended for the @file{Makefile.am} author.
6194 When @code{AM_MAINTAINER_MODE} (@pxref{maintainer-mode}) is used, the
6195 rebuild rule for distributed Yacc and Lex sources are only used when
6196 @code{maintainer-mode} is enabled, or when the files have been erased.
6198 @cindex @command{ylwrap}
6199 @cindex @command{yacc}, multiple parsers
6200 @cindex Multiple @command{yacc} parsers
6201 @cindex Multiple @command{lex} lexers
6202 @cindex @command{lex}, multiple lexers
6204 When @command{lex} or @command{yacc} sources are used, @code{automake
6205 -i} automatically installs an auxiliary program called
6206 @command{ylwrap} in your package (@pxref{Auxiliary Programs}).  This
6207 program is used by the build rules to rename the output of these
6208 tools, and makes it possible to include multiple @command{yacc} (or
6209 @command{lex}) source files in a single directory.  (This is necessary
6210 because yacc's output file name is fixed, and a parallel make could
6211 conceivably invoke more than one instance of @command{yacc}
6212 simultaneously.)
6214 For @command{yacc}, simply managing locking is insufficient.  The output of
6215 @command{yacc} always uses the same symbol names internally, so it isn't
6216 possible to link two @command{yacc} parsers into the same executable.
6218 We recommend using the following renaming hack used in @command{gdb}:
6219 @example
6220 #define yymaxdepth c_maxdepth
6221 #define yyparse c_parse
6222 #define yylex   c_lex
6223 #define yyerror c_error
6224 #define yylval  c_lval
6225 #define yychar  c_char
6226 #define yydebug c_debug
6227 #define yypact  c_pact
6228 #define yyr1    c_r1
6229 #define yyr2    c_r2
6230 #define yydef   c_def
6231 #define yychk   c_chk
6232 #define yypgo   c_pgo
6233 #define yyact   c_act
6234 #define yyexca  c_exca
6235 #define yyerrflag c_errflag
6236 #define yynerrs c_nerrs
6237 #define yyps    c_ps
6238 #define yypv    c_pv
6239 #define yys     c_s
6240 #define yy_yys  c_yys
6241 #define yystate c_state
6242 #define yytmp   c_tmp
6243 #define yyv     c_v
6244 #define yy_yyv  c_yyv
6245 #define yyval   c_val
6246 #define yylloc  c_lloc
6247 #define yyreds  c_reds
6248 #define yytoks  c_toks
6249 #define yylhs   c_yylhs
6250 #define yylen   c_yylen
6251 #define yydefred c_yydefred
6252 #define yydgoto  c_yydgoto
6253 #define yysindex c_yysindex
6254 #define yyrindex c_yyrindex
6255 #define yygindex c_yygindex
6256 #define yytable  c_yytable
6257 #define yycheck  c_yycheck
6258 #define yyname   c_yyname
6259 #define yyrule   c_yyrule
6260 @end example
6262 For each define, replace the @samp{c_} prefix with whatever you like.
6263 These defines work for @command{bison}, @command{byacc}, and
6264 traditional @code{yacc}s.  If you find a parser generator that uses a
6265 symbol not covered here, please report the new name so it can be added
6266 to the list.
6269 @node C++ Support
6270 @section C++ Support
6272 @cindex C++ support
6273 @cindex Support for C++
6275 Automake includes full support for C++.
6277 Any package including C++ code must define the output variable
6278 @code{CXX} in @file{configure.ac}; the simplest way to do this is to use
6279 the @code{AC_PROG_CXX} macro (@pxref{Particular Programs, , Particular
6280 Program Checks, autoconf, The Autoconf Manual}).
6282 A few additional variables are defined when a C++ source file is seen:
6284 @vtable @code
6285 @item CXX
6286 The name of the C++ compiler.
6288 @item CXXFLAGS
6289 Any flags to pass to the C++ compiler.
6291 @item AM_CXXFLAGS
6292 The maintainer's variant of @code{CXXFLAGS}.
6294 @item CXXCOMPILE
6295 The command used to actually compile a C++ source file.  The file name
6296 is appended to form the complete command line.
6298 @item CXXLINK
6299 The command used to actually link a C++ program.
6300 @end vtable
6303 @node Objective C Support
6304 @section Objective C Support
6306 @cindex Objective C support
6307 @cindex Support for Objective C
6309 Automake includes some support for Objective C.
6311 Any package including Objective C code must define the output variable
6312 @code{OBJC} in @file{configure.ac}; the simplest way to do this is to use
6313 the @code{AC_PROG_OBJC} macro (@pxref{Particular Programs, , Particular
6314 Program Checks, autoconf, The Autoconf Manual}).
6316 A few additional variables are defined when an Objective C source file
6317 is seen:
6319 @vtable @code
6320 @item OBJC
6321 The name of the Objective C compiler.
6323 @item OBJCFLAGS
6324 Any flags to pass to the Objective C compiler.
6326 @item AM_OBJCFLAGS
6327 The maintainer's variant of @code{OBJCFLAGS}.
6329 @item OBJCCOMPILE
6330 The command used to actually compile an Objective C source file.  The
6331 file name is appended to form the complete command line.
6333 @item OBJCLINK
6334 The command used to actually link an Objective C program.
6335 @end vtable
6338 @node Unified Parallel C Support
6339 @section Unified Parallel C Support
6341 @cindex Unified Parallel C support
6342 @cindex Support for Unified Parallel C
6344 Automake includes some support for Unified Parallel C.
6346 Any package including Unified Parallel C code must define the output
6347 variable @code{UPC} in @file{configure.ac}; the simplest way to do
6348 this is to use the @code{AM_PROG_UPC} macro (@pxref{Public Macros}).
6350 A few additional variables are defined when a Unified Parallel C
6351 source file is seen:
6353 @vtable @code
6354 @item UPC
6355 The name of the Unified Parallel C compiler.
6357 @item UPCFLAGS
6358 Any flags to pass to the Unified Parallel C compiler.
6360 @item AM_UPCFLAGS
6361 The maintainer's variant of @code{UPCFLAGS}.
6363 @item UPCCOMPILE
6364 The command used to actually compile a Unified Parallel C source file.
6365 The file name is appended to form the complete command line.
6367 @item UPCLINK
6368 The command used to actually link a Unified Parallel C program.
6369 @end vtable
6372 @node Assembly Support
6373 @section Assembly Support
6375 Automake includes some support for assembly code.  There are two forms
6376 of assembler files: normal (@file{*.s}) and preprocessed by @code{CPP}
6377 (@file{*.S} or @file{*.sx}).
6379 @vindex CCAS
6380 @vindex CCASFLAGS
6381 @vindex CPPFLAGS
6382 @vindex AM_CCASFLAGS
6383 @vindex AM_CPPFLAGS
6384 The variable @code{CCAS} holds the name of the compiler used to build
6385 assembly code.  This compiler must work a bit like a C compiler; in
6386 particular it must accept @option{-c} and @option{-o}.  The values of
6387 @code{CCASFLAGS} and @code{AM_CCASFLAGS} (or its per-target
6388 definition) is passed to the compilation.  For preprocessed files,
6389 @code{DEFS}, @code{DEFAULT_INCLUDES}, @code{INCLUDES}, @code{CPPFLAGS}
6390 and @code{AM_CPPFLAGS} are also used.
6392 The autoconf macro @code{AM_PROG_AS} will define @code{CCAS} and
6393 @code{CCASFLAGS} for you (unless they are already set, it simply sets
6394 @code{CCAS} to the C compiler and @code{CCASFLAGS} to the C compiler
6395 flags), but you are free to define these variables by other means.
6397 Only the suffixes @file{.s}, @file{.S}, and @file{.sx} are recognized by
6398 @command{automake} as being files containing assembly code.
6401 @node Fortran 77 Support
6402 @comment  node-name,  next,  previous,  up
6403 @section Fortran 77 Support
6405 @cindex Fortran 77 support
6406 @cindex Support for Fortran 77
6408 Automake includes full support for Fortran 77.
6410 Any package including Fortran 77 code must define the output variable
6411 @code{F77} in @file{configure.ac}; the simplest way to do this is to use
6412 the @code{AC_PROG_F77} macro (@pxref{Particular Programs, , Particular
6413 Program Checks, autoconf, The Autoconf Manual}).
6415 A few additional variables are defined when a Fortran 77 source file is
6416 seen:
6418 @vtable @code
6420 @item F77
6421 The name of the Fortran 77 compiler.
6423 @item FFLAGS
6424 Any flags to pass to the Fortran 77 compiler.
6426 @item AM_FFLAGS
6427 The maintainer's variant of @code{FFLAGS}.
6429 @item RFLAGS
6430 Any flags to pass to the Ratfor compiler.
6432 @item AM_RFLAGS
6433 The maintainer's variant of @code{RFLAGS}.
6435 @item F77COMPILE
6436 The command used to actually compile a Fortran 77 source file.  The file
6437 name is appended to form the complete command line.
6439 @item FLINK
6440 The command used to actually link a pure Fortran 77 program or shared
6441 library.
6443 @end vtable
6445 Automake can handle preprocessing Fortran 77 and Ratfor source files in
6446 addition to compiling them@footnote{Much, if not most, of the
6447 information in the following sections pertaining to preprocessing
6448 Fortran 77 programs was taken almost verbatim from @ref{Catalogue of
6449 Rules, , Catalogue of Rules, make, The GNU Make Manual}.}.  Automake
6450 also contains some support for creating programs and shared libraries
6451 that are a mixture of Fortran 77 and other languages (@pxref{Mixing
6452 Fortran 77 With C and C++}).
6454 These issues are covered in the following sections.
6456 @menu
6457 * Preprocessing Fortran 77::    Preprocessing Fortran 77 sources
6458 * Compiling Fortran 77 Files::  Compiling Fortran 77 sources
6459 * Mixing Fortran 77 With C and C++::  Mixing Fortran 77 With C and C++
6460 @end menu
6463 @node Preprocessing Fortran 77
6464 @comment  node-name,  next,  previous,  up
6465 @subsection Preprocessing Fortran 77
6467 @cindex Preprocessing Fortran 77
6468 @cindex Fortran 77, Preprocessing
6469 @cindex Ratfor programs
6471 @file{N.f} is made automatically from @file{N.F} or @file{N.r}.  This
6472 rule runs just the preprocessor to convert a preprocessable Fortran 77
6473 or Ratfor source file into a strict Fortran 77 source file.  The precise
6474 command used is as follows:
6476 @table @file
6478 @item .F
6479 @code{$(F77) -F $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS)@*
6480 $(AM_FFLAGS) $(FFLAGS)}
6482 @item .r
6483 @code{$(F77) -F $(AM_FFLAGS) $(FFLAGS) $(AM_RFLAGS) $(RFLAGS)}
6485 @end table
6488 @node Compiling Fortran 77 Files
6489 @comment  node-name,  next,  previous,  up
6490 @subsection Compiling Fortran 77 Files
6492 @file{N.o} is made automatically from @file{N.f}, @file{N.F} or
6493 @file{N.r} by running the Fortran 77 compiler.  The precise command used
6494 is as follows:
6496 @table @file
6498 @item .f
6499 @code{$(F77) -c $(AM_FFLAGS) $(FFLAGS)}
6501 @item .F
6502 @code{$(F77) -c $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS)@*
6503 $(AM_FFLAGS) $(FFLAGS)}
6505 @item .r
6506 @code{$(F77) -c $(AM_FFLAGS) $(FFLAGS) $(AM_RFLAGS) $(RFLAGS)}
6508 @end table
6511 @node Mixing Fortran 77 With C and C++
6512 @comment  node-name,  next,  previous,  up
6513 @subsection Mixing Fortran 77 With C and C++
6515 @cindex Fortran 77, mixing with C and C++
6516 @cindex Mixing Fortran 77 with C and C++
6517 @cindex Linking Fortran 77 with C and C++
6518 @cindex cfortran
6519 @cindex Mixing Fortran 77 with C and/or C++
6521 Automake currently provides @emph{limited} support for creating programs
6522 and shared libraries that are a mixture of Fortran 77 and C and/or C++.
6523 However, there are many other issues related to mixing Fortran 77 with
6524 other languages that are @emph{not} (currently) handled by Automake, but
6525 that are handled by other packages@footnote{For example,
6526 @uref{http://www-zeus.desy.de/~burow/cfortran/, the cfortran package}
6527 addresses all of these inter-language issues, and runs under nearly all
6528 Fortran 77, C and C++ compilers on nearly all platforms.  However,
6529 @command{cfortran} is not yet Free Software, but it will be in the next
6530 major release.}.
6532 Automake can help in two ways:
6534 @enumerate
6535 @item
6536 Automatic selection of the linker depending on which combinations of
6537 source code.
6539 @item
6540 Automatic selection of the appropriate linker flags (e.g., @option{-L} and
6541 @option{-l}) to pass to the automatically selected linker in order to link
6542 in the appropriate Fortran 77 intrinsic and run-time libraries.
6544 @cindex @code{FLIBS}, defined
6545 @vindex FLIBS
6546 These extra Fortran 77 linker flags are supplied in the output variable
6547 @code{FLIBS} by the @code{AC_F77_LIBRARY_LDFLAGS} Autoconf macro
6548 supplied with newer versions of Autoconf (Autoconf version 2.13 and
6549 later).  @xref{Fortran Compiler, , Fortran Compiler Characteristics,
6550 autoconf, The Autoconf Manual}.
6551 @end enumerate
6553 If Automake detects that a program or shared library (as mentioned in
6554 some @code{_PROGRAMS} or @code{_LTLIBRARIES} primary) contains source
6555 code that is a mixture of Fortran 77 and C and/or C++, then it requires
6556 that the macro @code{AC_F77_LIBRARY_LDFLAGS} be called in
6557 @file{configure.ac}, and that either @code{$(FLIBS)}
6558 appear in the appropriate @code{_LDADD} (for programs) or @code{_LIBADD}
6559 (for shared libraries) variables.  It is the responsibility of the
6560 person writing the @file{Makefile.am} to make sure that @samp{$(FLIBS)}
6561 appears in the appropriate @code{_LDADD} or
6562 @code{_LIBADD} variable.
6564 @cindex Mixed language example
6565 @cindex Example, mixed language
6567 For example, consider the following @file{Makefile.am}:
6569 @example
6570 bin_PROGRAMS = foo
6571 foo_SOURCES  = main.cc foo.f
6572 foo_LDADD    = libfoo.la $(FLIBS)
6574 pkglib_LTLIBRARIES = libfoo.la
6575 libfoo_la_SOURCES  = bar.f baz.c zardoz.cc
6576 libfoo_la_LIBADD   = $(FLIBS)
6577 @end example
6579 In this case, Automake will insist that @code{AC_F77_LIBRARY_LDFLAGS}
6580 is mentioned in @file{configure.ac}.  Also, if @samp{$(FLIBS)} hadn't
6581 been mentioned in @code{foo_LDADD} and @code{libfoo_la_LIBADD}, then
6582 Automake would have issued a warning.
6584 @menu
6585 * How the Linker is Chosen::    Automatic linker selection
6586 @end menu
6588 @node How the Linker is Chosen
6589 @comment  node-name,  next,  previous,  up
6590 @subsubsection How the Linker is Chosen
6592 @cindex Automatic linker selection
6593 @cindex Selecting the linker automatically
6595 When a program or library mixes several languages, Automake choose the
6596 linker according to the following priorities.  (The names in
6597 parentheses are the variables containing the link command.)
6599 @enumerate
6600 @item
6601 @vindex GCJLINK
6602 Native Java (@code{GCJLINK})
6603 @item
6604 @vindex CXXLINK
6605 C++ (@code{CXXLINK})
6606 @item
6607 @vindex F77LINK
6608 Fortran 77 (@code{F77LINK})
6609 @item
6610 @vindex FCLINK
6611 Fortran (@code{FCLINK})
6612 @item
6613 @vindex OBJCLINK
6614 Objective C (@code{OBJCLINK})
6615 @item
6616 @vindex UPCLINK
6617 Unified Parallel C (@code{UPCLINK})
6618 @item
6619 @vindex LINK
6620 C (@code{LINK})
6621 @end enumerate
6623 For example, if Fortran 77, C and C++ source code is compiled
6624 into a program, then the C++ linker will be used.  In this case, if the
6625 C or Fortran 77 linkers required any special libraries that weren't
6626 included by the C++ linker, then they must be manually added to an
6627 @code{_LDADD} or @code{_LIBADD} variable by the user writing the
6628 @file{Makefile.am}.
6630 Automake only looks at the file names listed in @file{_SOURCES}
6631 variables to choose the linker, and defaults to the C linker.
6632 Sometimes this is inconvenient because you are linking against a
6633 library written in another language and would like to set the linker
6634 more appropriately.  @xref{Libtool Convenience Libraries}, for a
6635 trick with @code{nodist_EXTRA_@dots{}_SOURCES}.
6637 A per-target @code{_LINK} variable will override the above selection.
6638 Per-target link flags will cause Automake to write a per-target
6639 @code{_LINK} variable according to the language chosen as above.
6642 @node Fortran 9x Support
6643 @comment  node-name,  next,  previous,  up
6644 @section Fortran 9x Support
6646 @cindex Fortran 9x support
6647 @cindex Support for Fortran 9x
6649 Automake includes support for Fortran 9x.
6651 Any package including Fortran 9x code must define the output variable
6652 @code{FC} in @file{configure.ac}; the simplest way to do this is to use
6653 the @code{AC_PROG_FC} macro (@pxref{Particular Programs, , Particular
6654 Program Checks, autoconf, The Autoconf Manual}).
6656 A few additional variables are defined when a Fortran 9x source file is
6657 seen:
6659 @vtable @code
6661 @item FC
6662 The name of the Fortran 9x compiler.
6664 @item FCFLAGS
6665 Any flags to pass to the Fortran 9x compiler.
6667 @item AM_FCFLAGS
6668 The maintainer's variant of @code{FCFLAGS}.
6670 @item FCCOMPILE
6671 The command used to actually compile a Fortran 9x source file.  The file
6672 name is appended to form the complete command line.
6674 @item FCLINK
6675 The command used to actually link a pure Fortran 9x program or shared
6676 library.
6678 @end vtable
6680 @menu
6681 * Compiling Fortran 9x Files::  Compiling Fortran 9x sources
6682 @end menu
6684 @node Compiling Fortran 9x Files
6685 @comment  node-name,  next,  previous,  up
6686 @subsection Compiling Fortran 9x Files
6688 @file{@var{file}.o} is made automatically from @file{@var{file}.f90},
6689 @file{@var{file}.f95}, @file{@var{file}.f03}, or @file{@var{file}.f08}
6690 by running the Fortran 9x compiler.  The precise command used
6691 is as follows:
6693 @table @file
6695 @item .f90
6696 @code{$(FC) $(AM_FCFLAGS) $(FCFLAGS) -c $(FCFLAGS_f90) $<}
6698 @item .f95
6699 @code{$(FC) $(AM_FCFLAGS) $(FCFLAGS) -c $(FCFLAGS_f95) $<}
6701 @item .f03
6702 @code{$(FC) $(AM_FCFLAGS) $(FCFLAGS) -c $(FCFLAGS_f03) $<}
6704 @item .f08
6705 @code{$(FC) $(AM_FCFLAGS) $(FCFLAGS) -c $(FCFLAGS_f08) $<}
6707 @end table
6709 @node Java Support
6710 @comment  node-name,  next,  previous,  up
6711 @section Java Support
6713 @cindex Java support
6714 @cindex Support for Java
6716 Automake includes support for natively compiled Java, using @command{gcj},
6717 the Java front end to the GNU Compiler Collection (preliminary support
6718 for compiling Java to bytecode using the @command{javac} compiler is
6719 also present; @pxref{Java}).
6721 Any package including Java code to be compiled must define the output
6722 variable @code{GCJ} in @file{configure.ac}; the variable @code{GCJFLAGS}
6723 must also be defined somehow (either in @file{configure.ac} or
6724 @file{Makefile.am}).  The simplest way to do this is to use the
6725 @code{AM_PROG_GCJ} macro.
6727 @vindex GCJFLAGS
6729 By default, programs including Java source files are linked with
6730 @command{gcj}.
6732 As always, the contents of @code{AM_GCJFLAGS} are passed to every
6733 compilation invoking @command{gcj} (in its role as an ahead-of-time
6734 compiler, when invoking it to create @file{.class} files,
6735 @code{AM_JAVACFLAGS} is used instead).  If it is necessary to pass
6736 options to @command{gcj} from @file{Makefile.am}, this variable, and not
6737 the user variable @code{GCJFLAGS}, should be used.
6739 @vindex AM_GCJFLAGS
6741 @command{gcj} can be used to compile @file{.java}, @file{.class},
6742 @file{.zip}, or @file{.jar} files.
6744 When linking, @command{gcj} requires that the main class be specified
6745 using the @option{--main=} option.  The easiest way to do this is to use
6746 the @code{_LDFLAGS} variable for the program.
6749 @node Vala Support
6750 @comment  node-name,  next,  previous,  up
6751 @section Vala Support
6753 @cindex Vala Support
6754 @cindex Support for Vala
6756 Automake provides initial support for Vala
6757 (@uref{http://www.vala-project.org/}).
6758 This requires valac version 0.7.0 or later, and currently requires
6759 the user to use GNU @command{make}.
6761 @example
6762 foo_SOURCES = foo.vala bar.vala zardoc.c
6763 @end example
6765 Any @file{.vala} file listed in a @code{_SOURCES} variable will be
6766 compiled into C code by the Vala compiler. The generated @file{.c} files are
6767 distributed. The end user does not need to have a Vala compiler installed.
6769 Automake ships with an Autoconf macro called @code{AM_PROG_VALAC}
6770 that will locate the Vala compiler and optionally check its version
6771 number.
6773 @defmac AM_PROG_VALAC (@ovar{minimum-version})
6774 Try to find a Vala compiler in @env{PATH}. If it is found, the variable
6775 @code{VALAC} is set. Optionally a minimum release number of the compiler
6776 can be requested:
6778 @example
6779 AM_PROG_VALAC([0.7.0])
6780 @end example
6781 @end defmac
6783 There are a few variables that are used when compiling Vala sources:
6785 @vtable @code
6786 @item VALAC
6787 Path to the Vala compiler.
6789 @item VALAFLAGS
6790 Additional arguments for the Vala compiler.
6792 @item AM_VALAFLAGS
6793 The maintainer's variant of @code{VALAFLAGS}.
6795 @example
6796 lib_LTLIBRARIES = libfoo.la
6797 libfoo_la_SOURCES = foo.vala
6798 @end example
6799 @end vtable
6801 Note that currently, you cannot use per-target @code{*_VALAFLAGS}
6802 (@pxref{Renamed Objects}) to produce different C files from one Vala
6803 source file.
6806 @node Support for Other Languages
6807 @comment  node-name,  next,  previous,  up
6808 @section Support for Other Languages
6810 Automake currently only includes full support for C, C++ (@pxref{C++
6811 Support}), Objective C (@pxref{Objective C Support}), Fortran 77
6812 (@pxref{Fortran 77 Support}), Fortran 9x (@pxref{Fortran 9x Support}),
6813 and Java (@pxref{Java Support}).  There is only rudimentary support for other
6814 languages, support for which will be improved based on user demand.
6816 Some limited support for adding your own languages is available via the
6817 suffix rule handling (@pxref{Suffixes}).
6820 @node ANSI
6821 @section Automatic de-ANSI-fication (deprecated, soon to be removed)
6823 @cindex de-ANSI-fication, defined
6825 @emph{The features described in this section are deprecated; you must
6826 not use any of them in new code, and remove their use from older but
6827 still maintained code: they will be withdrawn in the next major
6828 Automake release.}
6830 When the C language was standardized in 1989, there was a long
6831 transition period where package developers needed to worry about
6832 porting to older systems that did not support ANSI C by default.
6833 These older systems are no longer in practical use and are no longer
6834 supported by their original suppliers, so developers need not worry
6835 about this problem any more.
6837 Automake allows you to write packages that are portable to K&R C by
6838 @dfn{de-ANSI-fying} each source file before the actual compilation takes
6839 place.
6841 @vindex AUTOMAKE_OPTIONS
6842 @opindex ansi2knr
6844 If the @file{Makefile.am} variable @code{AUTOMAKE_OPTIONS}
6845 (@pxref{Options}) contains the option @option{ansi2knr} then code to
6846 handle de-ANSI-fication is inserted into the generated
6847 @file{Makefile.in}.
6849 This causes each C source file in the directory to be treated as ANSI C@.
6850 If an ANSI C compiler is available, it is used.  If no ANSI C compiler
6851 is available, the @command{ansi2knr} program is used to convert the source
6852 files into K&R C, which is then compiled.
6854 The @command{ansi2knr} program is simple-minded.  It assumes the source
6855 code will be formatted in a particular way; see the @command{ansi2knr} man
6856 page for details.
6858 @acindex AM_C_PROTOTYPES
6859 Support for the obsolete de-ANSI-fication feature
6860 requires the source files @file{ansi2knr.c}
6861 and @file{ansi2knr.1} to be in the same package as the ANSI C source;
6862 these files are distributed with Automake.  Also, the package
6863 @file{configure.ac} must call the macro @code{AM_C_PROTOTYPES}
6864 (@pxref{Macros}).
6866 Automake also handles finding the @command{ansi2knr} support files in some
6867 other directory in the current package.  This is done by prepending the
6868 relative path to the appropriate directory to the @command{ansi2knr}
6869 option.  For instance, suppose the package has ANSI C code in the
6870 @file{src} and @file{lib} subdirectories.  The files @file{ansi2knr.c} and
6871 @file{ansi2knr.1} appear in @file{lib}.  Then this could appear in
6872 @file{src/Makefile.am}:
6874 @example
6875 AUTOMAKE_OPTIONS = ../lib/ansi2knr
6876 @end example
6878 If no directory prefix is given, the files are assumed to be in the
6879 current directory.
6881 Note that automatic de-ANSI-fication will not work when the package is
6882 being built for a different host architecture.  That is because
6883 @command{automake} currently has no way to build @command{ansi2knr}
6884 for the build machine.
6886 @c FIXME: this paragraph might be better moved to an `upgrading' section.
6887 @cindex @code{LTLIBOBJS} and @code{ansi2knr}
6888 @cindex @code{LIBOBJS} and @code{ansi2knr}
6889 @cindex @code{ansi2knr} and @code{LTLIBOBJS}
6890 @cindex @code{ansi2knr} and @code{LIBOBJS}
6891 Using @code{LIBOBJS} with source de-ANSI-fication used to require
6892 hand-crafted code in @file{configure} to append @samp{$U} to basenames
6893 in @code{LIBOBJS}.  This is no longer true today.  Starting with version
6894 2.54, Autoconf takes care of rewriting @code{LIBOBJS} and
6895 @code{LTLIBOBJS}.  (@pxref{AC_LIBOBJ vs LIBOBJS, , @code{AC_LIBOBJ}
6896 vs.@: @code{LIBOBJS}, autoconf, The Autoconf Manual})
6898 @node Dependencies
6899 @section Automatic dependency tracking
6901 As a developer it is often painful to continually update the
6902 @file{Makefile.am} whenever the include-file dependencies change in a
6903 project.  Automake supplies a way to automatically track dependency
6904 changes (@pxref{Dependency Tracking}).
6906 @cindex Dependency tracking
6907 @cindex Automatic dependency tracking
6909 Automake always uses complete dependencies for a compilation,
6910 including system headers.  Automake's model is that dependency
6911 computation should be a side effect of the build.  To this end,
6912 dependencies are computed by running all compilations through a
6913 special wrapper program called @command{depcomp}.  @command{depcomp}
6914 understands how to coax many different C and C++ compilers into
6915 generating dependency information in the format it requires.
6916 @samp{automake -a} will install @command{depcomp} into your source
6917 tree for you.  If @command{depcomp} can't figure out how to properly
6918 invoke your compiler, dependency tracking will simply be disabled for
6919 your build.
6921 @cindex @command{depcomp}
6923 Experience with earlier versions of Automake (@pxref{Dependency
6924 Tracking Evolution}) taught us that it is not reliable to generate
6925 dependencies only on the maintainer's system, as configurations vary
6926 too much.  So instead Automake implements dependency tracking at build
6927 time.
6929 Automatic dependency tracking can be suppressed by putting
6930 @option{no-dependencies} in the variable @code{AUTOMAKE_OPTIONS}, or
6931 passing @option{no-dependencies} as an argument to @code{AM_INIT_AUTOMAKE}
6932 (this should be the preferred way).  Or, you can invoke @command{automake}
6933 with the @option{-i} option.  Dependency tracking is enabled by default.
6935 @vindex AUTOMAKE_OPTIONS
6936 @opindex no-dependencies
6938 The person building your package also can choose to disable dependency
6939 tracking by configuring with @option{--disable-dependency-tracking}.
6941 @cindex Disabling dependency tracking
6942 @cindex Dependency tracking, disabling
6945 @node EXEEXT
6946 @section Support for executable extensions
6948 @cindex Executable extension
6949 @cindex Extension, executable
6950 @cindex Windows
6952 On some platforms, such as Windows, executables are expected to have an
6953 extension such as @file{.exe}.  On these platforms, some compilers (GCC
6954 among them) will automatically generate @file{foo.exe} when asked to
6955 generate @file{foo}.
6957 Automake provides mostly-transparent support for this.  Unfortunately
6958 @emph{mostly} doesn't yet mean @emph{fully}.  Until the English
6959 dictionary is revised, you will have to assist Automake if your package
6960 must support those platforms.
6962 One thing you must be aware of is that, internally, Automake rewrites
6963 something like this:
6965 @example
6966 bin_PROGRAMS = liver
6967 @end example
6969 to this:
6971 @example
6972 bin_PROGRAMS = liver$(EXEEXT)
6973 @end example
6975 The targets Automake generates are likewise given the @samp{$(EXEEXT)}
6976 extension.
6978 The variables @code{TESTS} and @code{XFAIL_TESTS} (@pxref{Simple Tests})
6979 are also rewritten if they contain filenames that have been declared as
6980 programs in the same @file{Makefile}.  (This is mostly useful when some
6981 programs from @code{check_PROGRAMS} are listed in @code{TESTS}.)
6983 However, Automake cannot apply this rewriting to @command{configure}
6984 substitutions.  This means that if you are conditionally building a
6985 program using such a substitution, then your @file{configure.ac} must
6986 take care to add @samp{$(EXEEXT)} when constructing the output variable.
6988 With Autoconf 2.13 and earlier, you must explicitly use @code{AC_EXEEXT}
6989 to get this support.  With Autoconf 2.50, @code{AC_EXEEXT} is run
6990 automatically if you configure a compiler (say, through
6991 @code{AC_PROG_CC}).
6993 Sometimes maintainers like to write an explicit link rule for their
6994 program.  Without executable extension support, this is easy---you
6995 simply write a rule whose target is the name of the program.  However,
6996 when executable extension support is enabled, you must instead add the
6997 @samp{$(EXEEXT)} suffix.
6999 Unfortunately, due to the change in Autoconf 2.50, this means you must
7000 always add this extension.  However, this is a problem for maintainers
7001 who know their package will never run on a platform that has
7002 executable extensions.  For those maintainers, the @option{no-exeext}
7003 option (@pxref{Options}) will disable this feature.  This works in a
7004 fairly ugly way; if @option{no-exeext} is seen, then the presence of a
7005 rule for a target named @code{foo} in @file{Makefile.am} will override
7006 an @command{automake}-generated rule for @samp{foo$(EXEEXT)}.  Without
7007 the @option{no-exeext} option, this use will give a diagnostic.
7010 @node Other Objects
7011 @chapter Other Derived Objects
7013 Automake can handle derived objects that are not C programs.  Sometimes
7014 the support for actually building such objects must be explicitly
7015 supplied, but Automake will still automatically handle installation and
7016 distribution.
7018 @menu
7019 * Scripts::                     Executable scripts
7020 * Headers::                     Header files
7021 * Data::                        Architecture-independent data files
7022 * Sources::                     Derived sources
7023 @end menu
7026 @node Scripts
7027 @section Executable Scripts
7029 @cindex @code{_SCRIPTS} primary, defined
7030 @cindex @code{SCRIPTS} primary, defined
7031 @cindex Primary variable, @code{SCRIPTS}
7032 @vindex _SCRIPTS
7033 @cindex Installing scripts
7035 It is possible to define and install programs that are scripts.  Such
7036 programs are listed using the @code{SCRIPTS} primary name.  When the
7037 script is distributed in its final, installable form, the
7038 @file{Makefile} usually looks as follows:
7039 @vindex SCRIPTS
7041 @example
7042 # Install my_script in $(bindir) and distribute it.
7043 dist_bin_SCRIPTS = my_script
7044 @end example
7046 Scripts are not distributed by default; as we have just seen, those
7047 that should be distributed can be specified using a @code{dist_}
7048 prefix as with other primaries.
7050 @cindex @code{SCRIPTS}, installation directories
7051 @vindex bin_SCRIPTS
7052 @vindex sbin_SCRIPTS
7053 @vindex libexec_SCRIPTS
7054 @vindex pkgdata_SCRIPTS
7055 @vindex noinst_SCRIPTS
7056 @vindex check_SCRIPTS
7058 Scripts can be installed in @code{bindir}, @code{sbindir},
7059 @code{libexecdir}, or @code{pkgdatadir}.
7061 Scripts that need not be installed can be listed in
7062 @code{noinst_SCRIPTS}, and among them, those which are needed only by
7063 @samp{make check} should go in @code{check_SCRIPTS}.
7065 When a script needs to be built, the @file{Makefile.am} should include
7066 the appropriate rules.  For instance the @command{automake} program
7067 itself is a Perl script that is generated from @file{automake.in}.
7068 Here is how this is handled:
7070 @example
7071 bin_SCRIPTS = automake
7072 CLEANFILES = $(bin_SCRIPTS)
7073 EXTRA_DIST = automake.in
7075 do_subst = sed -e 's,[@@]datadir[@@],$(datadir),g' \
7076             -e 's,[@@]PERL[@@],$(PERL),g' \
7077             -e 's,[@@]PACKAGE[@@],$(PACKAGE),g' \
7078             -e 's,[@@]VERSION[@@],$(VERSION),g' \
7079             @dots{}
7081 automake: automake.in Makefile
7082         $(do_subst) < $(srcdir)/automake.in > automake
7083         chmod +x automake
7084 @end example
7086 Such scripts for which a build rule has been supplied need to be
7087 deleted explicitly using @code{CLEANFILES} (@pxref{Clean}), and their
7088 sources have to be distributed, usually with @code{EXTRA_DIST}
7089 (@pxref{Basics of Distribution}).
7091 Another common way to build scripts is to process them from
7092 @file{configure} with @code{AC_CONFIG_FILES}.  In this situation
7093 Automake knows which files should be cleaned and distributed, and what
7094 the rebuild rules should look like.
7096 For instance if @file{configure.ac} contains
7098 @example
7099 AC_CONFIG_FILES([src/my_script], [chmod +x src/my_script])
7100 @end example
7102 @noindent
7103 to build @file{src/my_script} from @file{src/my_script.in}, then a
7104 @file{src/Makefile.am} to install this script in @code{$(bindir)} can
7105 be as simple as
7107 @example
7108 bin_SCRIPTS = my_script
7109 CLEANFILES = $(bin_SCRIPTS)
7110 @end example
7112 @noindent
7113 There is no need for @code{EXTRA_DIST} or any build rule: Automake
7114 infers them from @code{AC_CONFIG_FILES} (@pxref{Requirements}).
7115 @code{CLEANFILES} is still useful, because by default Automake will
7116 clean targets of @code{AC_CONFIG_FILES} in @code{distclean}, not
7117 @code{clean}.
7119 Although this looks simpler, building scripts this way has one
7120 drawback: directory variables such as @code{$(datadir)} are not fully
7121 expanded and may refer to other directory variables.
7123 @node Headers
7124 @section Header files
7126 @cindex @code{_HEADERS} primary, defined
7127 @cindex @code{HEADERS} primary, defined
7128 @cindex Primary variable, @code{HEADERS}
7129 @vindex _HEADERS
7130 @vindex noinst_HEADERS
7131 @cindex @code{HEADERS}, installation directories
7132 @cindex Installing headers
7133 @vindex include_HEADERS
7134 @vindex oldinclude_HEADERS
7135 @vindex pkginclude_HEADERS
7138 Header files that must be installed are specified by the
7139 @code{HEADERS} family of variables.  Headers can be installed in
7140 @code{includedir}, @code{oldincludedir}, @code{pkgincludedir} or any
7141 other directory you may have defined (@pxref{Uniform}).  For instance,
7143 @example
7144 include_HEADERS = foo.h bar/bar.h
7145 @end example
7147 @noindent
7148 will install the two files as @file{$(includedir)/foo.h} and
7149 @file{$(includedir)/bar.h}.
7151 The @code{nobase_} prefix is also supported,
7153 @example
7154 nobase_include_HEADERS = foo.h bar/bar.h
7155 @end example
7157 @noindent
7158 will install the two files as @file{$(includedir)/foo.h} and
7159 @file{$(includedir)/bar/bar.h} (@pxref{Alternative}).
7161 @vindex noinst_HEADERS
7162 Usually, only header files that accompany installed libraries need to
7163 be installed.  Headers used by programs or convenience libraries are
7164 not installed.  The @code{noinst_HEADERS} variable can be used for
7165 such headers.  However when the header actually belongs to a single
7166 convenience library or program, we recommend listing it in the
7167 program's or library's @code{_SOURCES} variable (@pxref{Program
7168 Sources}) instead of in @code{noinst_HEADERS}.  This is clearer for
7169 the @file{Makefile.am} reader.  @code{noinst_HEADERS} would be the
7170 right variable to use in a directory containing only headers and no
7171 associated library or program.
7173 All header files must be listed somewhere; in a @code{_SOURCES}
7174 variable or in a @code{_HEADERS} variable.  Missing ones will not
7175 appear in the distribution.
7177 For header files that are built and must not be distributed, use the
7178 @code{nodist_} prefix as in @code{nodist_include_HEADERS} or
7179 @code{nodist_prog_SOURCES}.  If these generated headers are needed
7180 during the build, you must also ensure they exist before they are
7181 used (@pxref{Sources}).
7184 @node Data
7185 @section Architecture-independent data files
7187 @cindex @code{_DATA} primary, defined
7188 @cindex @code{DATA} primary, defined
7189 @cindex Primary variable, @code{DATA}
7190 @vindex _DATA
7192 Automake supports the installation of miscellaneous data files using the
7193 @code{DATA} family of variables.
7194 @vindex DATA
7196 @vindex data_DATA
7197 @vindex sysconf_DATA
7198 @vindex sharedstate_DATA
7199 @vindex localstate_DATA
7200 @vindex pkgdata_DATA
7202 Such data can be installed in the directories @code{datadir},
7203 @code{sysconfdir}, @code{sharedstatedir}, @code{localstatedir}, or
7204 @code{pkgdatadir}.
7206 By default, data files are @emph{not} included in a distribution.  Of
7207 course, you can use the @code{dist_} prefix to change this on a
7208 per-variable basis.
7210 Here is how Automake declares its auxiliary data files:
7212 @example
7213 dist_pkgdata_DATA = clean-kr.am clean.am @dots{}
7214 @end example
7217 @node Sources
7218 @section Built Sources
7220 Because Automake's automatic dependency tracking works as a side-effect
7221 of compilation (@pxref{Dependencies}) there is a bootstrap issue: a
7222 target should not be compiled before its dependencies are made, but
7223 these dependencies are unknown until the target is first compiled.
7225 Ordinarily this is not a problem, because dependencies are distributed
7226 sources: they preexist and do not need to be built.  Suppose that
7227 @file{foo.c} includes @file{foo.h}.  When it first compiles
7228 @file{foo.o}, @command{make} only knows that @file{foo.o} depends on
7229 @file{foo.c}.  As a side-effect of this compilation @command{depcomp}
7230 records the @file{foo.h} dependency so that following invocations of
7231 @command{make} will honor it.  In these conditions, it's clear there is
7232 no problem: either @file{foo.o} doesn't exist and has to be built
7233 (regardless of the dependencies), or accurate dependencies exist and
7234 they can be used to decide whether @file{foo.o} should be rebuilt.
7236 It's a different story if @file{foo.h} doesn't exist by the first
7237 @command{make} run.  For instance, there might be a rule to build
7238 @file{foo.h}.  This time @file{file.o}'s build will fail because the
7239 compiler can't find @file{foo.h}.  @command{make} failed to trigger the
7240 rule to build @file{foo.h} first by lack of dependency information.
7242 @vindex BUILT_SOURCES
7243 @cindex @code{BUILT_SOURCES}, defined
7245 The @code{BUILT_SOURCES} variable is a workaround for this problem.  A
7246 source file listed in @code{BUILT_SOURCES} is made on @samp{make all}
7247 or @samp{make check} (or even @samp{make install}) before other
7248 targets are processed.  However, such a source file is not
7249 @emph{compiled} unless explicitly requested by mentioning it in some
7250 other @code{_SOURCES} variable.
7252 So, to conclude our introductory example, we could use
7253 @samp{BUILT_SOURCES = foo.h} to ensure @file{foo.h} gets built before
7254 any other target (including @file{foo.o}) during @samp{make all} or
7255 @samp{make check}.
7257 @code{BUILT_SOURCES} is actually a bit of a misnomer, as any file which
7258 must be created early in the build process can be listed in this
7259 variable.  Moreover, all built sources do not necessarily have to be
7260 listed in @code{BUILT_SOURCES}.  For instance, a generated @file{.c} file
7261 doesn't need to appear in @code{BUILT_SOURCES} (unless it is included by
7262 another source), because it's a known dependency of the associated
7263 object.
7265 It might be important to emphasize that @code{BUILT_SOURCES} is
7266 honored only by @samp{make all}, @samp{make check} and @samp{make
7267 install}.  This means you cannot build a specific target (e.g.,
7268 @samp{make foo}) in a clean tree if it depends on a built source.
7269 However it will succeed if you have run @samp{make all} earlier,
7270 because accurate dependencies are already available.
7272 The next section illustrates and discusses the handling of built sources
7273 on a toy example.
7275 @menu
7276 * Built Sources Example::       Several ways to handle built sources.
7277 @end menu
7279 @node Built Sources Example
7280 @subsection Built Sources Example
7282 Suppose that @file{foo.c} includes @file{bindir.h}, which is
7283 installation-dependent and not distributed: it needs to be built.  Here
7284 @file{bindir.h} defines the preprocessor macro @code{bindir} to the
7285 value of the @command{make} variable @code{bindir} (inherited from
7286 @file{configure}).
7288 We suggest several implementations below.  It's not meant to be an
7289 exhaustive listing of all ways to handle built sources, but it will give
7290 you a few ideas if you encounter this issue.
7292 @subsubheading First Try
7294 This first implementation will illustrate the bootstrap issue mentioned
7295 in the previous section (@pxref{Sources}).
7297 Here is a tentative @file{Makefile.am}.
7299 @example
7300 # This won't work.
7301 bin_PROGRAMS = foo
7302 foo_SOURCES = foo.c
7303 nodist_foo_SOURCES = bindir.h
7304 CLEANFILES = bindir.h
7305 bindir.h: Makefile
7306         echo '#define bindir "$(bindir)"' >$@@
7307 @end example
7309 This setup doesn't work, because Automake doesn't know that @file{foo.c}
7310 includes @file{bindir.h}.  Remember, automatic dependency tracking works
7311 as a side-effect of compilation, so the dependencies of @file{foo.o} will
7312 be known only after @file{foo.o} has been compiled (@pxref{Dependencies}).
7313 The symptom is as follows.
7315 @example
7316 % make
7317 source='foo.c' object='foo.o' libtool=no \
7318 depfile='.deps/foo.Po' tmpdepfile='.deps/foo.TPo' \
7319 depmode=gcc /bin/sh ./depcomp \
7320 gcc -I. -I. -g -O2 -c `test -f 'foo.c' || echo './'`foo.c
7321 foo.c:2: bindir.h: No such file or directory
7322 make: *** [foo.o] Error 1
7323 @end example
7325 In this example @file{bindir.h} is not distributed nor installed, and
7326 it is not even being built on-time.  One may wonder if the
7327 @samp{nodist_foo_SOURCES = bindir.h} line has any use at all.  This
7328 line simply states that @file{bindir.h} is a source of @code{foo}, so
7329 for instance, it should be inspected while generating tags
7330 (@pxref{Tags}).  In other words, it does not help our present problem,
7331 and the build would fail identically without it.
7333 @subsubheading Using @code{BUILT_SOURCES}
7335 A solution is to require @file{bindir.h} to be built before anything
7336 else.  This is what @code{BUILT_SOURCES} is meant for (@pxref{Sources}).
7338 @example
7339 bin_PROGRAMS = foo
7340 foo_SOURCES = foo.c
7341 nodist_foo_SOURCES = bindir.h
7342 BUILT_SOURCES = bindir.h
7343 CLEANFILES = bindir.h
7344 bindir.h: Makefile
7345         echo '#define bindir "$(bindir)"' >$@@
7346 @end example
7348 See how @file{bindir.h} gets built first:
7350 @example
7351 % make
7352 echo '#define bindir "/usr/local/bin"' >bindir.h
7353 make  all-am
7354 make[1]: Entering directory `/home/adl/tmp'
7355 source='foo.c' object='foo.o' libtool=no \
7356 depfile='.deps/foo.Po' tmpdepfile='.deps/foo.TPo' \
7357 depmode=gcc /bin/sh ./depcomp \
7358 gcc -I. -I. -g -O2 -c `test -f 'foo.c' || echo './'`foo.c
7359 gcc  -g -O2   -o foo  foo.o
7360 make[1]: Leaving directory `/home/adl/tmp'
7361 @end example
7363 However, as said earlier, @code{BUILT_SOURCES} applies only to the
7364 @code{all}, @code{check}, and @code{install} targets.  It still fails
7365 if you try to run @samp{make foo} explicitly:
7367 @example
7368 % make clean
7369 test -z "bindir.h" || rm -f bindir.h
7370 test -z "foo" || rm -f foo
7371 rm -f *.o
7372 % : > .deps/foo.Po # Suppress previously recorded dependencies
7373 % make foo
7374 source='foo.c' object='foo.o' libtool=no \
7375 depfile='.deps/foo.Po' tmpdepfile='.deps/foo.TPo' \
7376 depmode=gcc /bin/sh ./depcomp \
7377 gcc -I. -I. -g -O2 -c `test -f 'foo.c' || echo './'`foo.c
7378 foo.c:2: bindir.h: No such file or directory
7379 make: *** [foo.o] Error 1
7380 @end example
7382 @subsubheading Recording Dependencies manually
7384 Usually people are happy enough with @code{BUILT_SOURCES} because they
7385 never build targets such as @samp{make foo} before @samp{make all}, as
7386 in the previous example.  However if this matters to you, you can
7387 avoid @code{BUILT_SOURCES} and record such dependencies explicitly in
7388 the @file{Makefile.am}.
7390 @example
7391 bin_PROGRAMS = foo
7392 foo_SOURCES = foo.c
7393 nodist_foo_SOURCES = bindir.h
7394 foo.$(OBJEXT): bindir.h
7395 CLEANFILES = bindir.h
7396 bindir.h: Makefile
7397         echo '#define bindir "$(bindir)"' >$@@
7398 @end example
7400 You don't have to list @emph{all} the dependencies of @file{foo.o}
7401 explicitly, only those that might need to be built.  If a dependency
7402 already exists, it will not hinder the first compilation and will be
7403 recorded by the normal dependency tracking code.  (Note that after
7404 this first compilation the dependency tracking code will also have
7405 recorded the dependency between @file{foo.o} and
7406 @file{bindir.h}; so our explicit dependency is really useful to
7407 the first build only.)
7409 Adding explicit dependencies like this can be a bit dangerous if you are
7410 not careful enough.  This is due to the way Automake tries not to
7411 overwrite your rules (it assumes you know better than it).
7412 @samp{foo.$(OBJEXT): bindir.h} supersedes any rule Automake may want to
7413 output to build @samp{foo.$(OBJEXT)}.  It happens to work in this case
7414 because Automake doesn't have to output any @samp{foo.$(OBJEXT):}
7415 target: it relies on a suffix rule instead (i.e., @samp{.c.$(OBJEXT):}).
7416 Always check the generated @file{Makefile.in} if you do this.
7418 @subsubheading Build @file{bindir.h} from @file{configure}
7420 It's possible to define this preprocessor macro from @file{configure},
7421 either in @file{config.h} (@pxref{Defining Directories, , Defining
7422 Directories, autoconf, The Autoconf Manual}), or by processing a
7423 @file{bindir.h.in} file using @code{AC_CONFIG_FILES}
7424 (@pxref{Configuration Actions, ,Configuration Actions, autoconf, The
7425 Autoconf Manual}).
7427 At this point it should be clear that building @file{bindir.h} from
7428 @file{configure} works well for this example.  @file{bindir.h} will exist
7429 before you build any target, hence will not cause any dependency issue.
7431 The Makefile can be shrunk as follows.  We do not even have to mention
7432 @file{bindir.h}.
7434 @example
7435 bin_PROGRAMS = foo
7436 foo_SOURCES = foo.c
7437 @end example
7439 However, it's not always possible to build sources from
7440 @file{configure}, especially when these sources are generated by a tool
7441 that needs to be built first.
7443 @subsubheading Build @file{bindir.c}, not @file{bindir.h}.
7445 Another attractive idea is to define @code{bindir} as a variable or
7446 function exported from @file{bindir.o}, and build @file{bindir.c}
7447 instead of @file{bindir.h}.
7449 @example
7450 noinst_PROGRAMS = foo
7451 foo_SOURCES = foo.c bindir.h
7452 nodist_foo_SOURCES = bindir.c
7453 CLEANFILES = bindir.c
7454 bindir.c: Makefile
7455         echo 'const char bindir[] = "$(bindir)";' >$@@
7456 @end example
7458 @file{bindir.h} contains just the variable's declaration and doesn't
7459 need to be built, so it won't cause any trouble.  @file{bindir.o} is
7460 always dependent on @file{bindir.c}, so @file{bindir.c} will get built
7461 first.
7463 @subsubheading Which is best?
7465 There is no panacea, of course.  Each solution has its merits and
7466 drawbacks.
7468 You cannot use @code{BUILT_SOURCES} if the ability to run @samp{make
7469 foo} on a clean tree is important to you.
7471 You won't add explicit dependencies if you are leery of overriding
7472 an Automake rule by mistake.
7474 Building files from @file{./configure} is not always possible, neither
7475 is converting @file{.h} files into @file{.c} files.
7478 @node Other GNU Tools
7479 @chapter Other GNU Tools
7481 Since Automake is primarily intended to generate @file{Makefile.in}s for
7482 use in GNU programs, it tries hard to interoperate with other GNU tools.
7484 @menu
7485 * Emacs Lisp::                  Emacs Lisp
7486 * gettext::                     Gettext
7487 * Libtool::                     Libtool
7488 * Java::                        Java
7489 * Python::                      Python
7490 @end menu
7493 @node Emacs Lisp
7494 @section Emacs Lisp
7496 @cindex @code{_LISP} primary, defined
7497 @cindex @code{LISP} primary, defined
7498 @cindex Primary variable, @code{LISP}
7500 @vindex _LISP
7501 @vindex lisp_LISP
7502 @vindex noinst_LISP
7504 Automake provides some support for Emacs Lisp.  The @code{LISP} primary
7505 is used to hold a list of @file{.el} files.  Possible prefixes for this
7506 primary are @code{lisp_} and @code{noinst_}.  Note that if
7507 @code{lisp_LISP} is defined, then @file{configure.ac} must run
7508 @code{AM_PATH_LISPDIR} (@pxref{Macros}).
7510 @vindex dist_lisp_LISP
7511 @vindex dist_noinst_LISP
7512 Lisp sources are not distributed by default.  You can prefix the
7513 @code{LISP} primary with @code{dist_}, as in @code{dist_lisp_LISP} or
7514 @code{dist_noinst_LISP}, to indicate that these files should be
7515 distributed.
7517 Automake will byte-compile all Emacs Lisp source files using the Emacs
7518 found by @code{AM_PATH_LISPDIR}, if any was found.
7520 Byte-compiled Emacs Lisp files are not portable among all versions of
7521 Emacs, so it makes sense to turn this off if you expect sites to have
7522 more than one version of Emacs installed.  Furthermore, many packages
7523 don't actually benefit from byte-compilation.  Still, we recommend
7524 that you byte-compile your Emacs Lisp sources.  It is probably better
7525 for sites with strange setups to cope for themselves than to make the
7526 installation less nice for everybody else.
7528 There are two ways to avoid byte-compiling.  Historically, we have
7529 recommended the following construct.
7531 @example
7532 lisp_LISP = file1.el file2.el
7533 ELCFILES =
7534 @end example
7536 @noindent
7537 @code{ELCFILES} is an internal Automake variable that normally lists
7538 all @file{.elc} files that must be byte-compiled.  Automake defines
7539 @code{ELCFILES} automatically from @code{lisp_LISP}.  Emptying this
7540 variable explicitly prevents byte-compilation.
7542 Since Automake 1.8, we now recommend using @code{lisp_DATA} instead:
7544 @c Keep in sync with primary-prefix-couples-documented-valid.test.
7545 @example
7546 lisp_DATA = file1.el file2.el
7547 @end example
7549 Note that these two constructs are not equivalent.  @code{_LISP} will
7550 not install a file if Emacs is not installed, while @code{_DATA} will
7551 always install its files.
7553 @node gettext
7554 @section Gettext
7556 @cindex GNU Gettext support
7557 @cindex Gettext support
7558 @cindex Support for GNU Gettext
7560 If @code{AM_GNU_GETTEXT} is seen in @file{configure.ac}, then Automake
7561 turns on support for GNU gettext, a message catalog system for
7562 internationalization
7563 (@pxref{Top, , Introduction, gettext, GNU gettext utilities}).
7565 The @code{gettext} support in Automake requires the addition of one or
7566 two subdirectories to the package: @file{po} and possibly also @file{intl}.
7567 The latter is needed if @code{AM_GNU_GETTEXT} is not invoked with the
7568 @samp{external} argument, or if @code{AM_GNU_GETTEXT_INTL_SUBDIR} is used.
7569 Automake ensures that these directories exist and are mentioned in
7570 @code{SUBDIRS}.
7572 @node Libtool
7573 @section Libtool
7575 Automake provides support for GNU Libtool (@pxref{Top, , Introduction,
7576 libtool, The Libtool Manual}) with the @code{LTLIBRARIES} primary.
7577 @xref{A Shared Library}.
7580 @node Java
7581 @section Java
7583 @cindex @code{_JAVA} primary, defined
7584 @cindex @code{JAVA} primary, defined
7585 @cindex Primary variable, @code{JAVA}
7587 Automake provides some minimal support for Java bytecode compilation with
7588 the @code{JAVA} primary (in addition to the support for compiling Java to
7589 native machine code; @pxref{Java Support}).
7591 Any @file{.java} files listed in a @code{_JAVA} variable will be
7592 compiled with @code{JAVAC} at build time.  By default, @file{.java}
7593 files are not included in the distribution, you should use the
7594 @code{dist_} prefix to distribute them.
7596 Here is a typical setup for distributing @file{.java} files and
7597 installing the @file{.class} files resulting from their compilation.
7599 @c Keep in sync with primary-prefix-couples-documented-valid.test.
7600 @example
7601 javadir = $(datadir)/java
7602 dist_java_JAVA = a.java b.java @dots{}
7603 @end example
7605 @cindex @code{JAVA} restrictions
7606 @cindex Restrictions for @code{JAVA}
7608 Currently Automake enforces the restriction that only one @code{_JAVA}
7609 primary can be used in a given @file{Makefile.am}.  The reason for this
7610 restriction is that, in general, it isn't possible to know which
7611 @file{.class} files were generated from which @file{.java} files, so
7612 it would be impossible to know which files to install where.  For
7613 instance, a @file{.java} file can define multiple classes; the resulting
7614 @file{.class} file names cannot be predicted without parsing the
7615 @file{.java} file.
7617 There are a few variables that are used when compiling Java sources:
7619 @vtable @code
7620 @item JAVAC
7621 The name of the Java compiler.  This defaults to @samp{javac}.
7623 @item JAVACFLAGS
7624 The flags to pass to the compiler.  This is considered to be a user
7625 variable (@pxref{User Variables}).
7627 @item AM_JAVACFLAGS
7628 More flags to pass to the Java compiler.  This, and not
7629 @code{JAVACFLAGS}, should be used when it is necessary to put Java
7630 compiler flags into @file{Makefile.am}.
7632 @item JAVAROOT
7633 The value of this variable is passed to the @option{-d} option to
7634 @code{javac}.  It defaults to @samp{$(top_builddir)}.
7636 @item CLASSPATH_ENV
7637 This variable is a shell expression that is used to set the
7638 @env{CLASSPATH} environment variable on the @code{javac} command line.
7639 (In the future we will probably handle class path setting differently.)
7640 @end vtable
7643 @node Python
7644 @section Python
7646 @cindex @code{_PYTHON} primary, defined
7647 @cindex @code{PYTHON} primary, defined
7648 @cindex Primary variable, @code{PYTHON}
7649 @vindex _PYTHON
7651 Automake provides support for Python compilation with the
7652 @code{PYTHON} primary.  A typical setup is to call
7653 @code{AM_PATH_PYTHON} in @file{configure.ac} and use a line like the
7654 following in @file{Makefile.am}:
7656 @example
7657 python_PYTHON = tree.py leave.py
7658 @end example
7660 Any files listed in a @code{_PYTHON} variable will be byte-compiled
7661 with @command{py-compile} at install time.  @command{py-compile}
7662 actually creates both standard (@file{.pyc}) and optimized
7663 (@file{.pyo}) byte-compiled versions of the source files.  Note that
7664 because byte-compilation occurs at install time, any files listed in
7665 @code{noinst_PYTHON} will not be compiled.  Python source files are
7666 included in the distribution by default, prepend @code{nodist_} (as in
7667 @code{nodist_python_PYTHON}) to omit them.
7669 Automake ships with an Autoconf macro called @code{AM_PATH_PYTHON}
7670 that will determine some Python-related directory variables (see
7671 below).  If you have called @code{AM_PATH_PYTHON} from
7672 @file{configure.ac}, then you may use the variables
7673 @c Keep in sync with primary-prefix-couples-documented-valid.test.
7674 @code{python_PYTHON} or @code{pkgpython_PYTHON} to list Python source
7675 files in your @file{Makefile.am}, depending on where you want your files
7676 installed (see the definitions of @code{pythondir} and
7677 @code{pkgpythondir} below).
7679 @defmac AM_PATH_PYTHON (@ovar{version}, @ovar{action-if-found},
7680   @ovar{action-if-not-found})
7682 Search for a Python interpreter on the system.  This macro takes three
7683 optional arguments.  The first argument, if present, is the minimum
7684 version of Python required for this package: @code{AM_PATH_PYTHON}
7685 will skip any Python interpreter that is older than @var{version}.
7686 If an interpreter is found and satisfies @var{version}, then
7687 @var{action-if-found} is run.  Otherwise, @var{action-if-not-found} is
7688 run.
7690 If @var{action-if-not-found} is not specified, as in the following
7691 example, the default is to abort @command{configure}.
7693 @example
7694 AM_PATH_PYTHON([2.2])
7695 @end example
7697 @noindent
7698 This is fine when Python is an absolute requirement for the package.
7699 If Python >= 2.5 was only @emph{optional} to the package,
7700 @code{AM_PATH_PYTHON} could be called as follows.
7702 @example
7703 AM_PATH_PYTHON([2.5],, [:])
7704 @end example
7706 If the @env{PYTHON} variable is set when @code{AM_PATH_PYTHON} is
7707 called, then that will be the only Python interpreter that is tried.
7709 @code{AM_PATH_PYTHON} creates the following output variables based on
7710 the Python installation found during configuration.
7711 @end defmac
7713 @vtable @code
7714 @item PYTHON
7715 The name of the Python executable, or @samp{:} if no suitable
7716 interpreter could be found.
7718 Assuming @var{action-if-not-found} is used (otherwise @file{./configure}
7719 will abort if Python is absent), the value of @code{PYTHON} can be used
7720 to setup a conditional in order to disable the relevant part of a build
7721 as follows.
7723 @example
7724 AM_PATH_PYTHON(,, [:])
7725 AM_CONDITIONAL([HAVE_PYTHON], [test "$PYTHON" != :])
7726 @end example
7728 @item PYTHON_VERSION
7729 The Python version number, in the form @var{major}.@var{minor}
7730 (e.g., @samp{2.5}).  This is currently the value of
7731 @samp{sys.version[:3]}.
7733 @item PYTHON_PREFIX
7734 The string @samp{$@{prefix@}}.  This term may be used in future work
7735 that needs the contents of Python's @samp{sys.prefix}, but general
7736 consensus is to always use the value from @command{configure}.
7738 @item PYTHON_EXEC_PREFIX
7739 The string @samp{$@{exec_prefix@}}.  This term may be used in future work
7740 that needs the contents of Python's @samp{sys.exec_prefix}, but general
7741 consensus is to always use the value from @command{configure}.
7743 @item PYTHON_PLATFORM
7744 The canonical name used by Python to describe the operating system, as
7745 given by @samp{sys.platform}.  This value is sometimes needed when
7746 building Python extensions.
7748 @item pythondir
7749 The directory name for the @file{site-packages} subdirectory of the
7750 standard Python install tree.
7752 @item pkgpythondir
7753 This is the directory under @code{pythondir} that is named after the
7754 package.  That is, it is @samp{$(pythondir)/$(PACKAGE)}.  It is provided
7755 as a convenience.
7757 @item pyexecdir
7758 This is the directory where Python extension modules (shared libraries)
7759 should be installed.  An extension module written in C could be declared
7760 as follows to Automake:
7762 @c Keep in sync with primary-prefix-couples-documented-valid.test.
7763 @example
7764 pyexec_LTLIBRARIES = quaternion.la
7765 quaternion_la_SOURCES = quaternion.c support.c support.h
7766 quaternion_la_LDFLAGS = -avoid-version -module
7767 @end example
7769 @item pkgpyexecdir
7770 This is a convenience variable that is defined as
7771 @samp{$(pyexecdir)/$(PACKAGE)}.
7772 @end vtable
7774 All these directory variables have values that start with either
7775 @samp{$@{prefix@}} or @samp{$@{exec_prefix@}} unexpanded.  This works
7776 fine in @file{Makefiles}, but it makes these variables hard to use in
7777 @file{configure}.  This is mandated by the GNU coding standards, so
7778 that the user can run @samp{make prefix=/foo install}.  The Autoconf
7779 manual has a section with more details on this topic
7780 (@pxref{Installation Directory Variables, , Installation Directory
7781 Variables, autoconf, The Autoconf Manual}).  See also @ref{Hard-Coded
7782 Install Paths}.
7785 @node Documentation
7786 @chapter Building documentation
7788 Currently Automake provides support for Texinfo and man pages.
7790 @menu
7791 * Texinfo::                     Texinfo
7792 * Man Pages::                   Man pages
7793 @end menu
7796 @node Texinfo
7797 @section Texinfo
7799 @cindex @code{_TEXINFOS} primary, defined
7800 @cindex @code{TEXINFOS} primary, defined
7801 @cindex Primary variable, @code{TEXINFOS}
7802 @cindex HTML output using Texinfo
7803 @cindex PDF output using Texinfo
7804 @cindex PS output using Texinfo
7805 @cindex DVI output using Texinfo
7806 @vindex _TEXINFOS
7807 @vindex info_TEXINFOS
7809 If the current directory contains Texinfo source, you must declare it
7810 with the @code{TEXINFOS} primary.  Generally Texinfo files are converted
7811 into info, and thus the @code{info_TEXINFOS} variable is most commonly used
7812 here.  Any Texinfo source file must end in the @file{.texi},
7813 @file{.txi}, or @file{.texinfo} extension.  We recommend @file{.texi}
7814 for new manuals.
7816 Automake generates rules to build @file{.info}, @file{.dvi},
7817 @file{.ps}, @file{.pdf} and @file{.html} files from your Texinfo
7818 sources.  Following the GNU Coding Standards, only the @file{.info}
7819 files are built by @samp{make all} and installed by @samp{make
7820 install} (unless you use @option{no-installinfo}, see below).
7821 Furthermore, @file{.info} files are automatically distributed so that
7822 Texinfo is not a prerequisite for installing your package.
7824 @trindex dvi
7825 @trindex html
7826 @trindex pdf
7827 @trindex ps
7828 @trindex install-dvi
7829 @trindex install-html
7830 @trindex install-pdf
7831 @trindex install-ps
7832 Other documentation formats can be built on request by @samp{make
7833 dvi}, @samp{make ps}, @samp{make pdf} and @samp{make html}, and they
7834 can be installed with @samp{make install-dvi}, @samp{make install-ps},
7835 @samp{make install-pdf} and @samp{make install-html} explicitly.
7836 @samp{make uninstall} will remove everything: the Texinfo
7837 documentation installed by default as well as all the above optional
7838 formats.
7840 All these targets can be extended using @samp{-local} rules
7841 (@pxref{Extending}).
7843 @cindex Texinfo flag, @code{VERSION}
7844 @cindex Texinfo flag, @code{UPDATED}
7845 @cindex Texinfo flag, @code{EDITION}
7846 @cindex Texinfo flag, @code{UPDATED-MONTH}
7848 @cindex @code{VERSION} Texinfo flag
7849 @cindex @code{UPDATED} Texinfo flag
7850 @cindex @code{EDITION} Texinfo flag
7851 @cindex @code{UPDATED-MONTH} Texinfo flag
7853 @cindex @file{mdate-sh}
7855 If the @file{.texi} file @code{@@include}s @file{version.texi}, then
7856 that file will be automatically generated.  The file @file{version.texi}
7857 defines four Texinfo flag you can reference using
7858 @code{@@value@{EDITION@}}, @code{@@value@{VERSION@}},
7859 @code{@@value@{UPDATED@}}, and @code{@@value@{UPDATED-MONTH@}}.
7861 @table @code
7862 @item EDITION
7863 @itemx VERSION
7864 Both of these flags hold the version number of your program.  They are
7865 kept separate for clarity.
7867 @item UPDATED
7868 This holds the date the primary @file{.texi} file was last modified.
7870 @item UPDATED-MONTH
7871 This holds the name of the month in which the primary @file{.texi} file
7872 was last modified.
7873 @end table
7875 The @file{version.texi} support requires the @command{mdate-sh}
7876 script; this script is supplied with Automake and automatically
7877 included when @command{automake} is invoked with the
7878 @option{--add-missing} option.
7880 If you have multiple Texinfo files, and you want to use the
7881 @file{version.texi} feature, then you have to have a separate version
7882 file for each Texinfo file.  Automake will treat any include in a
7883 Texinfo file that matches @file{vers*.texi} just as an automatically
7884 generated version file.
7886 Sometimes an info file actually depends on more than one @file{.texi}
7887 file.  For instance, in GNU Hello, @file{hello.texi} includes the file
7888 @file{fdl.texi}.  You can tell Automake about these dependencies using
7889 the @code{@var{texi}_TEXINFOS} variable.  Here is how GNU Hello does it:
7890 @vindex TEXINFOS
7891 @vindex _TEXINFOS
7893 @example
7894 info_TEXINFOS = hello.texi
7895 hello_TEXINFOS = fdl.texi
7896 @end example
7898 @cindex @file{texinfo.tex}
7900 By default, Automake requires the file @file{texinfo.tex} to appear in
7901 the same directory as the @file{Makefile.am} file that lists the
7902 @file{.texi} files.  If you used @code{AC_CONFIG_AUX_DIR} in
7903 @file{configure.ac} (@pxref{Input, , Finding `configure' Input,
7904 autoconf, The Autoconf Manual}), then @file{texinfo.tex} is looked for
7905 there.  In both cases, @command{automake} then supplies @file{texinfo.tex} if
7906 @option{--add-missing} is given, and takes care of its distribution.
7907 However, if you set the @code{TEXINFO_TEX} variable (see below),
7908 it overrides the location of the file and turns off its installation
7909 into the source as well as its distribution.
7911 The option @option{no-texinfo.tex} can be used to eliminate the
7912 requirement for the file @file{texinfo.tex}.  Use of the variable
7913 @code{TEXINFO_TEX} is preferable, however, because that allows the
7914 @code{dvi}, @code{ps}, and @code{pdf} targets to still work.
7916 @cindex Option, @code{no-installinfo}
7917 @cindex Target, @code{install-info}
7918 @cindex @code{install-info} target
7919 @cindex @code{no-installinfo} option
7921 @opindex no-installinfo
7922 @trindex install-info
7924 Automake generates an @code{install-info} rule; some people apparently
7925 use this.  By default, info pages are installed by @samp{make
7926 install}, so running @code{make install-info} is pointless.  This can
7927 be prevented via the @code{no-installinfo} option.  In this case,
7928 @file{.info} files are not installed by default, and user must
7929 request this explicitly using @samp{make install-info}.
7931 The following variables are used by the Texinfo build rules.
7933 @vtable @code
7934 @item MAKEINFO
7935 The name of the program invoked to build @file{.info} files.  This
7936 variable is defined by Automake.  If the @command{makeinfo} program is
7937 found on the system then it will be used by default; otherwise
7938 @command{missing} will be used instead.
7940 @item MAKEINFOHTML
7941 The command invoked to build @file{.html} files.  Automake
7942 defines this to @samp{$(MAKEINFO) --html}.
7944 @item MAKEINFOFLAGS
7945 User flags passed to each invocation of @samp{$(MAKEINFO)} and
7946 @samp{$(MAKEINFOHTML)}.  This user variable (@pxref{User Variables}) is
7947 not expected to be defined in any @file{Makefile}; it can be used by
7948 users to pass extra flags to suit their needs.
7950 @item AM_MAKEINFOFLAGS
7951 @itemx AM_MAKEINFOHTMLFLAGS
7952 Maintainer flags passed to each @command{makeinfo} invocation.  Unlike
7953 @code{MAKEINFOFLAGS}, these variables are meant to be defined by
7954 maintainers in @file{Makefile.am}.  @samp{$(AM_MAKEINFOFLAGS)} is
7955 passed to @code{makeinfo} when building @file{.info} files; and
7956 @samp{$(AM_MAKEINFOHTMLFLAGS)} is used when building @file{.html}
7957 files.
7959 @c Keep in sync with txinfo21.test.
7960 For instance, the following setting can be used to obtain one single
7961 @file{.html} file per manual, without node separators.
7962 @example
7963 AM_MAKEINFOHTMLFLAGS = --no-headers --no-split
7964 @end example
7966 @code{AM_MAKEINFOHTMLFLAGS} defaults to @samp{$(AM_MAKEINFOFLAGS)}.
7967 This means that defining @code{AM_MAKEINFOFLAGS} without defining
7968 @code{AM_MAKEINFOHTMLFLAGS} will impact builds of both @file{.info}
7969 and @file{.html} files.
7971 @item TEXI2DVI
7972 The name of the command that converts a @file{.texi} file into a
7973 @file{.dvi} file.  This defaults to @samp{texi2dvi}, a script that ships
7974 with the Texinfo package.
7976 @item TEXI2PDF
7977 The name of the command that translates a @file{.texi} file into a
7978 @file{.pdf} file.  This defaults to @samp{$(TEXI2DVI) --pdf --batch}.
7980 @item DVIPS
7981 The name of the command that builds a @file{.ps} file out of a
7982 @file{.dvi} file.  This defaults to @samp{dvips}.
7984 @item TEXINFO_TEX
7986 If your package has Texinfo files in many directories, you can use the
7987 variable @code{TEXINFO_TEX} to tell Automake where to find the canonical
7988 @file{texinfo.tex} for your package.  The value of this variable should
7989 be the relative path from the current @file{Makefile.am} to
7990 @file{texinfo.tex}:
7992 @example
7993 TEXINFO_TEX = ../doc/texinfo.tex
7994 @end example
7995 @end vtable
7998 @node Man Pages
7999 @section Man Pages
8001 @cindex @code{_MANS} primary, defined
8002 @cindex @code{MANS} primary, defined
8003 @cindex Primary variable, @code{MANS}
8005 @vindex _MANS
8006 @vindex man_MANS
8007 A package can also include man pages (but see the GNU standards on this
8008 matter, @ref{Man Pages, , , standards, The GNU Coding Standards}.)  Man
8009 pages are declared using the @code{MANS} primary.  Generally the
8010 @code{man_MANS} variable is used.  Man pages are automatically installed in
8011 the correct subdirectory of @code{mandir}, based on the file extension.
8013 File extensions such as @file{.1c} are handled by looking for the valid
8014 part of the extension and using that to determine the correct
8015 subdirectory of @code{mandir}.  Valid section names are the digits
8016 @samp{0} through @samp{9}, and the letters @samp{l} and @samp{n}.
8018 Sometimes developers prefer to name a man page something like
8019 @file{foo.man} in the source, and then rename it to have the correct
8020 suffix, for example @file{foo.1}, when installing the file.  Automake
8021 also supports this mode.  For a valid section named @var{section},
8022 there is a corresponding directory named @samp{man@var{section}dir},
8023 and a corresponding @code{_MANS} variable.  Files listed in such a
8024 variable are installed in the indicated section.  If the file already
8025 has a valid suffix, then it is installed as-is; otherwise the file
8026 suffix is changed to match the section.
8028 For instance, consider this example:
8029 @example
8030 man1_MANS = rename.man thesame.1 alsothesame.1c
8031 @end example
8033 @noindent
8034 In this case, @file{rename.man} will be renamed to @file{rename.1} when
8035 installed, but the other files will keep their names.
8037 @cindex Target, @code{install-man}
8038 @cindex Option, @option{no-installman}
8039 @cindex @code{install-man} target
8040 @cindex @option{no-installman} option
8041 @opindex no-installman
8042 @trindex install-man
8044 By default, man pages are installed by @samp{make install}.  However,
8045 since the GNU project does not require man pages, many maintainers do
8046 not expend effort to keep the man pages up to date.  In these cases, the
8047 @option{no-installman} option will prevent the man pages from being
8048 installed by default.  The user can still explicitly install them via
8049 @samp{make install-man}.
8051 For fast installation, with many files it is preferable to use
8052 @samp{man@var{section}_MANS} over @samp{man_MANS} as well as files that
8053 do not need to be renamed.
8055 Man pages are not currently considered to be source, because it is not
8056 uncommon for man pages to be automatically generated.  Therefore they
8057 are not automatically included in the distribution.  However, this can
8058 be changed by use of the @code{dist_} prefix.  For instance here is
8059 how to distribute and install the two man pages of GNU @command{cpio}
8060 (which includes both Texinfo documentation and man pages):
8062 @example
8063 dist_man_MANS = cpio.1 mt.1
8064 @end example
8066 The @code{nobase_} prefix is meaningless for man pages and is
8067 disallowed.
8069 @vindex notrans_
8070 @cindex @code{notrans_} prefix
8071 @cindex Man page renaming, avoiding
8072 @cindex Avoiding man page renaming
8074 Executables and manpages may be renamed upon installation
8075 (@pxref{Renaming}).  For manpages this can be avoided by use of the
8076 @code{notrans_} prefix.  For instance, suppose an executable @samp{foo}
8077 allowing to access a library function @samp{foo} from the command line.
8078 The way to avoid renaming of the @file{foo.3} manpage is:
8080 @example
8081 man_MANS = foo.1
8082 notrans_man_MANS = foo.3
8083 @end example
8085 @cindex @code{notrans_} and @code{dist_} or @code{nodist_}
8086 @cindex @code{dist_} and @code{notrans_}
8087 @cindex @code{nodist_} and @code{notrans_}
8089 @samp{notrans_} must be specified first when used in conjunction with
8090 either @samp{dist_} or @samp{nodist_} (@pxref{Fine-grained Distribution
8091 Control}).  For instance:
8093 @example
8094 notrans_dist_man3_MANS = bar.3
8095 @end example
8097 @node Install
8098 @chapter What Gets Installed
8100 @cindex Installation support
8101 @cindex @samp{make install} support
8103 Naturally, Automake handles the details of actually installing your
8104 program once it has been built.  All files named by the various
8105 primaries are automatically installed in the appropriate places when the
8106 user runs @samp{make install}.
8108 @menu
8109 * Basics of Installation::      What gets installed where
8110 * The Two Parts of Install::    Installing data and programs separately
8111 * Extending Installation::      Adding your own rules for installation
8112 * Staged Installs::             Installation in a temporary location
8113 * Install Rules for the User::  Useful additional rules
8114 @end menu
8116 @node Basics of Installation
8117 @section Basics of Installation
8119 A file named in a primary is installed by copying the built file into
8120 the appropriate directory.  The base name of the file is used when
8121 installing.
8123 @example
8124 bin_PROGRAMS = hello subdir/goodbye
8125 @end example
8127 In this example, both @samp{hello} and @samp{goodbye} will be installed
8128 in @samp{$(bindir)}.
8130 Sometimes it is useful to avoid the basename step at install time.  For
8131 instance, you might have a number of header files in subdirectories of
8132 the source tree that are laid out precisely how you want to install
8133 them.  In this situation you can use the @code{nobase_} prefix to
8134 suppress the base name step.  For example:
8136 @example
8137 nobase_include_HEADERS = stdio.h sys/types.h
8138 @end example
8140 @noindent
8141 will install @file{stdio.h} in @samp{$(includedir)} and @file{types.h}
8142 in @samp{$(includedir)/sys}.
8144 For most file types, Automake will install multiple files at once, while
8145 avoiding command line length issues (@pxref{Length Limitations}).  Since
8146 some @command{install} programs will not install the same file twice in
8147 one invocation, you may need to ensure that file lists are unique within
8148 one variable such as @samp{nobase_include_HEADERS} above.
8150 You should not rely on the order in which files listed in one variable
8151 are installed.  Likewise, to cater for parallel make, you should not
8152 rely on any particular file installation order even among different
8153 file types (library dependencies are an exception here).
8156 @node The Two Parts of Install
8157 @section The Two Parts of Install
8159 Automake generates separate @code{install-data} and @code{install-exec}
8160 rules, in case the installer is installing on multiple machines that
8161 share directory structure---these targets allow the machine-independent
8162 parts to be installed only once.  @code{install-exec} installs
8163 platform-dependent files, and @code{install-data} installs
8164 platform-independent files.  The @code{install} target depends on both
8165 of these targets.  While Automake tries to automatically segregate
8166 objects into the correct category, the @file{Makefile.am} author is, in
8167 the end, responsible for making sure this is done correctly.
8168 @trindex install-data
8169 @trindex install-exec
8170 @trindex install
8171 @cindex Install, two parts of
8173 Variables using the standard directory prefixes @samp{data},
8174 @samp{info}, @samp{man}, @samp{include}, @samp{oldinclude},
8175 @samp{pkgdata}, or @samp{pkginclude} are installed by
8176 @code{install-data}.
8178 Variables using the standard directory prefixes @samp{bin},
8179 @samp{sbin}, @samp{libexec}, @samp{sysconf}, @samp{localstate},
8180 @samp{lib}, or @samp{pkglib} are installed by @code{install-exec}.
8182 For instance, @code{data_DATA} files are installed by @code{install-data},
8183 while @code{bin_PROGRAMS} files are installed by @code{install-exec}.
8185 Any variable using a user-defined directory prefix with
8186 @samp{exec} in the name (e.g.,
8187 @c Keep in sync with primary-prefix-couples-documented-valid.test.
8188 @code{myexecbin_PROGRAMS}) is installed by @code{install-exec}.  All
8189 other user-defined prefixes are installed by @code{install-data}.
8191 @node Extending Installation
8192 @section Extending Installation
8194 It is possible to extend this mechanism by defining an
8195 @code{install-exec-local} or @code{install-data-local} rule.  If these
8196 rules exist, they will be run at @samp{make install} time.  These
8197 rules can do almost anything; care is required.
8198 @trindex install-exec-local
8199 @trindex install-data-local
8201 Automake also supports two install hooks, @code{install-exec-hook} and
8202 @code{install-data-hook}.  These hooks are run after all other install
8203 rules of the appropriate type, exec or data, have completed.  So, for
8204 instance, it is possible to perform post-installation modifications
8205 using an install hook.  @xref{Extending}, for some examples.
8206 @cindex Install hook
8208 @node Staged Installs
8209 @section Staged Installs
8211 @vindex DESTDIR
8212 Automake generates support for the @code{DESTDIR} variable in all
8213 install rules.  @code{DESTDIR} is used during the @samp{make install}
8214 step to relocate install objects into a staging area.  Each object and
8215 path is prefixed with the value of @code{DESTDIR} before being copied
8216 into the install area.  Here is an example of typical DESTDIR usage:
8218 @example
8219 mkdir /tmp/staging &&
8220 make DESTDIR=/tmp/staging install
8221 @end example
8223 The @command{mkdir} command avoids a security problem if the attacker
8224 creates a symbolic link from @file{/tmp/staging} to a victim area;
8225 then @command{make} places install objects in a directory tree built under
8226 @file{/tmp/staging}.  If @file{/gnu/bin/foo} and
8227 @file{/gnu/share/aclocal/foo.m4} are to be installed, the above command
8228 would install @file{/tmp/staging/gnu/bin/foo} and
8229 @file{/tmp/staging/gnu/share/aclocal/foo.m4}.
8231 This feature is commonly used to build install images and packages
8232 (@pxref{DESTDIR}).
8234 Support for @code{DESTDIR} is implemented by coding it directly into
8235 the install rules.  If your @file{Makefile.am} uses a local install
8236 rule (e.g., @code{install-exec-local}) or an install hook, then you
8237 must write that code to respect @code{DESTDIR}.
8239 @xref{Makefile Conventions, , , standards, The GNU Coding Standards},
8240 for another usage example.
8242 @node Install Rules for the User
8243 @section Install Rules for the User
8245 Automake also generates rules for targets @code{uninstall},
8246 @code{installdirs}, and @code{install-strip}.
8247 @trindex uninstall
8248 @trindex installdirs
8249 @trindex install-strip
8251 Automake supports @code{uninstall-local} and @code{uninstall-hook}.
8252 There is no notion of separate uninstalls for ``exec'' and ``data'', as
8253 these features would not provide additional functionality.
8255 Note that @code{uninstall} is not meant as a replacement for a real
8256 packaging tool.
8259 @node Clean
8260 @chapter What Gets Cleaned
8262 @cindex @samp{make clean} support
8264 The GNU Makefile Standards specify a number of different clean rules.
8265 @xref{Standard Targets, , Standard Targets for Users, standards,
8266 The GNU Coding Standards}.
8268 Generally the files that can be cleaned are determined automatically by
8269 Automake.  Of course, Automake also recognizes some variables that can
8270 be defined to specify additional files to clean.  These variables are
8271 @code{MOSTLYCLEANFILES}, @code{CLEANFILES}, @code{DISTCLEANFILES}, and
8272 @code{MAINTAINERCLEANFILES}.
8273 @vindex MOSTLYCLEANFILES
8274 @vindex CLEANFILES
8275 @vindex DISTCLEANFILES
8276 @vindex MAINTAINERCLEANFILES
8278 @trindex mostlyclean-local
8279 @trindex clean-local
8280 @trindex distclean-local
8281 @trindex maintainer-clean-local
8282 When cleaning involves more than deleting some hard-coded list of
8283 files, it is also possible to supplement the cleaning rules with your
8284 own commands.  Simply define a rule for any of the
8285 @code{mostlyclean-local}, @code{clean-local}, @code{distclean-local},
8286 or @code{maintainer-clean-local} targets (@pxref{Extending}).  A common
8287 case is deleting a directory, for instance, a directory created by the
8288 test suite:
8290 @example
8291 clean-local:
8292         -rm -rf testSubDir
8293 @end example
8295 Since @command{make} allows only one set of rules for a given target,
8296 a more extensible way of writing this is to use a separate target
8297 listed as a dependency:
8299 @example
8300 clean-local: clean-local-check
8301 .PHONY: clean-local-check
8302 clean-local-check:
8303         -rm -rf testSubDir
8304 @end example
8306 As the GNU Standards aren't always explicit as to which files should
8307 be removed by which rule, we've adopted a heuristic that we believe
8308 was first formulated by Fran@,{c}ois Pinard:
8310 @itemize @bullet
8311 @item
8312 If @command{make} built it, and it is commonly something that one would
8313 want to rebuild (for instance, a @file{.o} file), then
8314 @code{mostlyclean} should delete it.
8316 @item
8317 Otherwise, if @command{make} built it, then @code{clean} should delete it.
8319 @item
8320 If @command{configure} built it, then @code{distclean} should delete it.
8322 @item
8323 If the maintainer built it (for instance, a @file{.info} file), then
8324 @code{maintainer-clean} should delete it.  However
8325 @code{maintainer-clean} should not delete anything that needs to exist
8326 in order to run @samp{./configure && make}.
8327 @end itemize
8329 We recommend that you follow this same set of heuristics in your
8330 @file{Makefile.am}.
8333 @node Dist
8334 @chapter What Goes in a Distribution
8336 @menu
8337 * Basics of Distribution::      Files distributed by default
8338 * Fine-grained Distribution Control::  @code{dist_} and @code{nodist_} prefixes
8339 * The dist Hook::               A target for last-minute distribution changes
8340 * Checking the Distribution::   @samp{make distcheck} explained
8341 * The Types of Distributions::  A variety of formats and compression methods
8342 @end menu
8344 @node Basics of Distribution
8345 @section Basics of Distribution
8347 @cindex @samp{make dist}
8349 @vindex PACKAGE
8350 @vindex VERSION
8351 @trindex dist
8352 The @code{dist} rule in the generated @file{Makefile.in} can be used
8353 to generate a gzipped @code{tar} file and other flavors of archive for
8354 distribution.  The file is named based on the @code{PACKAGE} and
8355 @code{VERSION} variables defined by @code{AM_INIT_AUTOMAKE}
8356 (@pxref{Macros}); more precisely the gzipped @code{tar} file is named
8357 @samp{@var{package}-@var{version}.tar.gz}.
8358 @vindex GZIP_ENV
8359 You can use the @command{make} variable @code{GZIP_ENV} to control how gzip
8360 is run.  The default setting is @option{--best}.
8362 @cindex @code{m4_include}, distribution
8363 @cindex @code{include}, distribution
8364 @acindex m4_include
8365 @cmindex include
8366 For the most part, the files to distribute are automatically found by
8367 Automake: all source files are automatically included in a distribution,
8368 as are all @file{Makefile.am} and @file{Makefile.in} files.  Automake also
8369 has a built-in list of commonly used files that are automatically
8370 included if they are found in the current directory (either physically,
8371 or as the target of a @file{Makefile.am} rule); this list is printed by
8372 @samp{automake --help}.  Note that some files in this list are actually
8373 distributed only if other certain conditions hold (for example,
8374 @c Keep in sync with autodist-config-headers.test.
8375 the @file{config.h.top} and @file{config.h.bot} files are automatically
8376 distributed only if, e.g., @samp{AC_CONFIG_HEADERS([config.h])} is used
8377 in @file{configure.ac}).  Also, files that are read by @command{configure}
8378 (i.e.@: the source files corresponding to the files specified in various
8379 Autoconf macros such as @code{AC_CONFIG_FILES} and siblings) are
8380 automatically distributed.  Files included in a @file{Makefile.am} (using
8381 @code{include}) or in @file{configure.ac} (using @code{m4_include}), and
8382 helper scripts installed with @samp{automake --add-missing} are also
8383 distributed.
8385 @vindex EXTRA_DIST
8386 Still, sometimes there are files that must be distributed, but which
8387 are not covered in the automatic rules.  These files should be listed in
8388 the @code{EXTRA_DIST} variable.  You can mention files from
8389 subdirectories in @code{EXTRA_DIST}.
8391 You can also mention a directory in @code{EXTRA_DIST}; in this case the
8392 entire directory will be recursively copied into the distribution.
8393 Please note that this will also copy @emph{everything} in the directory,
8394 including, e.g., Subversion's @file{.svn} private directories or CVS/RCS
8395 version control files.  We recommend against using this feature.
8397 @vindex SUBDIRS
8398 @vindex DIST_SUBDIRS
8399 If you define @code{SUBDIRS}, Automake will recursively include the
8400 subdirectories in the distribution.  If @code{SUBDIRS} is defined
8401 conditionally (@pxref{Conditionals}), Automake will normally include
8402 all directories that could possibly appear in @code{SUBDIRS} in the
8403 distribution.  If you need to specify the set of directories
8404 conditionally, you can set the variable @code{DIST_SUBDIRS} to the
8405 exact list of subdirectories to include in the distribution
8406 (@pxref{Conditional Subdirectories}).
8409 @node Fine-grained Distribution Control
8410 @section Fine-grained Distribution Control
8412 @vindex dist_
8413 @vindex nodist_
8414 Sometimes you need tighter control over what does @emph{not} go into the
8415 distribution; for instance, you might have source files that are
8416 generated and that you do not want to distribute.  In this case
8417 Automake gives fine-grained control using the @code{dist} and
8418 @code{nodist} prefixes.  Any primary or @code{_SOURCES} variable can be
8419 prefixed with @code{dist_} to add the listed files to the distribution.
8420 Similarly, @code{nodist_} can be used to omit the files from the
8421 distribution.
8423 As an example, here is how you would cause some data to be distributed
8424 while leaving some source code out of the distribution:
8426 @example
8427 dist_data_DATA = distribute-this
8428 bin_PROGRAMS = foo
8429 nodist_foo_SOURCES = do-not-distribute.c
8430 @end example
8432 @node The dist Hook
8433 @section The dist Hook
8435 @trindex dist-hook
8437 Occasionally it is useful to be able to change the distribution before
8438 it is packaged up.  If the @code{dist-hook} rule exists, it is run
8439 after the distribution directory is filled, but before the actual tar
8440 (or shar) file is created.  One way to use this is for distributing
8441 files in subdirectories for which a new @file{Makefile.am} is overkill:
8443 @example
8444 dist-hook:
8445         mkdir $(distdir)/random
8446         cp -p $(srcdir)/random/a1 $(srcdir)/random/a2 $(distdir)/random
8447 @end example
8449 Another way to use this is for removing unnecessary files that get
8450 recursively included by specifying a directory in EXTRA_DIST:
8452 @example
8453 EXTRA_DIST = doc
8455 dist-hook:
8456         rm -rf `find $(distdir)/doc -type d -name .svn`
8457 @end example
8459 @vindex distdir
8460 @vindex top_distdir
8461 Two variables that come handy when writing @code{dist-hook} rules are
8462 @samp{$(distdir)} and @samp{$(top_distdir)}.
8464 @samp{$(distdir)} points to the directory where the @code{dist} rule
8465 will copy files from the current directory before creating the
8466 tarball.  If you are at the top-level directory, then @samp{distdir =
8467 $(PACKAGE)-$(VERSION)}.  When used from subdirectory named
8468 @file{foo/}, then @samp{distdir = ../$(PACKAGE)-$(VERSION)/foo}.
8469 @samp{$(distdir)} can be a relative or absolute path, do not assume
8470 any form.
8472 @samp{$(top_distdir)} always points to the root directory of the
8473 distributed tree.  At the top-level it's equal to @samp{$(distdir)}.
8474 In the @file{foo/} subdirectory
8475 @samp{top_distdir = ../$(PACKAGE)-$(VERSION)}.
8476 @samp{$(top_distdir)} too can be a relative or absolute path.
8478 Note that when packages are nested using @code{AC_CONFIG_SUBDIRS}
8479 (@pxref{Subpackages}), then @samp{$(distdir)} and
8480 @samp{$(top_distdir)} are relative to the package where @samp{make
8481 dist} was run, not to any sub-packages involved.
8483 @node Checking the Distribution
8484 @section Checking the Distribution
8486 @cindex @samp{make distcheck}
8487 @cindex @samp{make distcleancheck}
8488 @vindex distcleancheck_listfiles
8489 @cindex @samp{make distuninstallcheck}
8490 @vindex distuninstallcheck_listfiles
8492 @trindex distcheck
8493 Automake also generates a @code{distcheck} rule that can be of help to
8494 ensure that a given distribution will actually work.  @code{distcheck}
8495 makes a distribution, then tries to do a @code{VPATH} build
8496 (@pxref{VPATH Builds}), run the test suite, and finally make another
8497 tarball to ensure the distribution is self-contained.
8499 @vindex AM_DISTCHECK_CONFIGURE_FLAGS
8500 @vindex DISTCHECK_CONFIGURE_FLAGS
8501 Building the package involves running @samp{./configure}.  If you need
8502 to supply additional flags to @command{configure}, define them in the
8503 @code{AM_DISTCHECK_CONFIGURE_FLAGS} variable in your top-level
8504 @file{Makefile.am}.  The user can still extend or override the flags
8505 provided there by defining the @code{DISTCHECK_CONFIGURE_FLAGS} variable,
8506 on the command line when invoking @command{make}.
8508 Still, developers are encouraged to strive to make their code buildable
8509 without requiring any special configure option; thus, in general, you
8510 shouldn't define @code{AM_DISTCHECK_CONFIGURE_FLAGS}. However, there
8511 might be few scenarios in which the use of this variable is justified.
8512 GNU @command{m4} offers an example.  GNU @command{m4} configures by
8513 default with its experimental and seldom used "changeword" feature
8514 disabled; so in its case it is useful to have @command{make distcheck}
8515 run configure with the @option{--with-changeword} option, to ensure that
8516 the code for changeword support still compiles correctly.
8517 GNU @command{m4} also employs the @code{AM_DISTCHECK_CONFIGURE_FLAGS}
8518 variable to stress-test the use of @option{--program-prefix=g}, since at
8519 one point the @command{m4} build system had a bug where @command{make
8520 installcheck} was wrongly assuming it could blindly test "@command{m4}",
8521 rather than the just-installed "@command{gm4}".
8523 @trindex distcheck-hook
8524 If the @code{distcheck-hook} rule is defined in your top-level
8525 @file{Makefile.am}, then it will be invoked by @code{distcheck} after
8526 the new distribution has been unpacked, but before the unpacked copy
8527 is configured and built.  Your @code{distcheck-hook} can do almost
8528 anything, though as always caution is advised.  Generally this hook is
8529 used to check for potential distribution errors not caught by the
8530 standard mechanism.  Note that @code{distcheck-hook} as well as
8531 @code{AM_DISTCHECK_CONFIGURE_FLAGS} and @code{DISTCHECK_CONFIGURE_FLAGS}
8532 are not honored in a subpackage @file{Makefile.am}, but the flags from
8533 @code{AM_DISTCHECK_CONFIGURE_FLAGS} and @code{DISTCHECK_CONFIGURE_FLAGS}
8534 are passed down to the @command{configure} script of the subpackage.
8536 @trindex distcleancheck
8537 @vindex DISTCLEANFILES
8538 @vindex distcleancheck_listfiles
8539 Speaking of potential distribution errors, @code{distcheck} also
8540 ensures that the @code{distclean} rule actually removes all built
8541 files.  This is done by running @samp{make distcleancheck} at the end of
8542 the @code{VPATH} build.  By default, @code{distcleancheck} will run
8543 @code{distclean} and then make sure the build tree has been emptied by
8544 running @samp{$(distcleancheck_listfiles)}.  Usually this check will
8545 find generated files that you forgot to add to the @code{DISTCLEANFILES}
8546 variable (@pxref{Clean}).
8548 The @code{distcleancheck} behavior should be OK for most packages,
8549 otherwise you have the possibility to override the definition of
8550 either the @code{distcleancheck} rule, or the
8551 @samp{$(distcleancheck_listfiles)} variable.  For instance, to disable
8552 @code{distcleancheck} completely, add the following rule to your
8553 top-level @file{Makefile.am}:
8555 @example
8556 distcleancheck:
8557         @@:
8558 @end example
8560 If you want @code{distcleancheck} to ignore built files that have not
8561 been cleaned because they are also part of the distribution, add the
8562 following definition instead:
8564 @c Keep in sync with distcleancheck.test.
8565 @example
8566 distcleancheck_listfiles = \
8567   find . -type f -exec sh -c 'test -f $(srcdir)/$$1 || echo $$1' \
8568        sh '@{@}' ';'
8569 @end example
8571 The above definition is not the default because it's usually an error if
8572 your Makefiles cause some distributed files to be rebuilt when the user
8573 build the package.  (Think about the user missing the tool required to
8574 build the file; or if the required tool is built by your package,
8575 consider the cross-compilation case where it can't be run.)  There is
8576 an entry in the FAQ about this (@pxref{distcleancheck}), make sure you
8577 read it before playing with @code{distcleancheck_listfiles}.
8579 @code{distcheck} also checks that the @code{uninstall} rule works
8580 properly, both for ordinary and @code{DESTDIR} builds.  It does this
8581 by invoking @samp{make uninstall}, and then it checks the install tree
8582 to see if any files are left over.  This check will make sure that you
8583 correctly coded your @code{uninstall}-related rules.
8585 By default, the checking is done by the @code{distuninstallcheck} rule,
8586 and the list of files in the install tree is generated by
8587 @samp{$(distuninstallcheck_listfiles)} (this is a variable whose value is
8588 a shell command to run that prints the list of files to stdout).
8590 Either of these can be overridden to modify the behavior of
8591 @code{distcheck}.  For instance, to disable this check completely, you
8592 would write:
8594 @example
8595 distuninstallcheck:
8596         @@:
8597 @end example
8599 @node The Types of Distributions
8600 @section The Types of Distributions
8602 Automake generates rules to provide archives of the project for
8603 distributions in various formats.  Their targets are:
8605 @table @asis
8606 @item @code{dist-bzip2}
8607 Generate a bzip2 tar archive of the distribution.  bzip2 archives are
8608 frequently smaller than gzipped archives.
8609 @trindex dist-bzip2
8611 @item @code{dist-gzip}
8612 Generate a gzip tar archive of the distribution.
8613 @trindex dist-gzip
8615 @item @code{dist-lzma}
8616 Generate an @samp{lzma} tar archive of the distribution.  @command{lzma}
8617 archives are frequently smaller than @command{bzip2}-compressed archives.
8618 The @samp{lzma} format is obsolete, you should use the @samp{xz} format
8619 instead.
8620 @trindex dist-lzma
8622 @item @code{dist-shar}
8623 Generate a shar archive of the distribution.
8624 @trindex dist-shar
8626 @item @code{dist-xz}
8627 Generate an @samp{xz} tar archive of the distribution.  @command{xz}
8628 archives are frequently smaller than @command{bzip2}-compressed archives.
8629 The @samp{xz} format displaces the obsolete @samp{lzma} format.
8630 @trindex dist-xz
8632 @item @code{dist-zip}
8633 Generate a zip archive of the distribution.
8634 @trindex dist-zip
8636 @item @code{dist-tarZ}
8637 Generate a compressed tar archive of
8638 the distribution.
8639 @trindex dist-tarZ
8640 @end table
8642 The rule @code{dist} (and its historical synonym @code{dist-all}) will
8643 create archives in all the enabled formats, @ref{Options}.  By
8644 default, only the @code{dist-gzip} target is hooked to @code{dist}.
8647 @node Tests
8648 @chapter Support for test suites
8650 @cindex Test suites
8651 @cindex @code{make check}
8652 @trindex check
8654 Automake supports three forms of test suites, the first two of which
8655 are very similar.
8657 @menu
8658 * Simple Tests::                Listing programs and scripts in @code{TESTS}
8659 * Simple Tests using parallel-tests::  More powerful test driver
8660 * DejaGnu Tests::               Interfacing with the external testing framework
8661 * Install Tests::               Running tests on installed packages
8662 @end menu
8664 @node Simple Tests
8665 @section Simple Tests
8667 If the variable @code{TESTS} is defined, its value is taken to be a
8668 list of programs or scripts to run in order to do the testing.
8669 Programs needing data files should look for them in @code{srcdir}
8670 (which is both an environment variable and a make variable) so they
8671 work when building in a separate directory (@pxref{Build Directories,
8672 , Build Directories , autoconf, The Autoconf Manual}), and in
8673 particular for the @code{distcheck} rule (@pxref{Checking the
8674 Distribution}).
8676 For each of the @code{TESTS}, the result of execution is printed along
8677 with the test name, where @code{PASS} denotes a successful test,
8678 @code{FAIL} denotes a failed test, @code{XFAIL} an expected failure,
8679 @code{XPASS} an unexpected pass for a test that is supposed to fail,
8680 and @code{SKIP} denotes a skipped test.
8682 @cindex Exit status 77, special interpretation
8684 The number of failures will be printed at the end of the run.  If a
8685 given test program exits with a status of 77, then its result is ignored
8686 in the final count.  This feature allows non-portable tests to be
8687 ignored in environments where they don't make sense.
8689 @vindex AM_COLOR_TESTS
8690 If the Automake option @code{color-tests} is used (@pxref{Options})
8691 and standard output is connected to a capable terminal, then the test
8692 results and the summary are colored appropriately.  The user can disable
8693 colored output by setting the @command{make} variable
8694 @samp{AM_COLOR_TESTS=no}, or force colored output even without a connecting
8695 terminal with @samp{AM_COLOR_TESTS=always}.
8697 Note that the semantics of some @command{make} implementations when used
8698 in parallel mode (@pxref{Parallel make,,, autoconf, The Autoconf Manual})
8699 can cause the automatic detection of a connection to a capable terminal
8700 to fail.  In that case, you can still resort to the use of
8701 @samp{AM_COLOR_TESTS=always}.
8703 @vindex TESTS
8704 @vindex TESTS_ENVIRONMENT
8705 The variable @code{TESTS_ENVIRONMENT} can be used to set environment
8706 variables for the test run; the environment variable @env{srcdir} is
8707 set in the rule.  If all your test programs are scripts, you can also
8708 set @code{TESTS_ENVIRONMENT} to an invocation of the shell (e.g.
8709 @samp{$(SHELL) -x} can be useful for debugging the tests), or any other
8710 interpreter.  For instance, the following setup may be used to run tests
8711 with Perl:
8713 @c Keep in sync with tests-environment-backcompat.test.
8714 @example
8715 TESTS_ENVIRONMENT = $(PERL) -Mstrict -w
8716 TESTS = foo.pl bar.pl baz.pl
8717 @end example
8719 Note that the @option{parallel-tests} driver provides a more elegant
8720 way to achieve the same effect, freeing the @code{TESTS_ENVIRONMENT}
8721 variable for the user to override (@pxref{Simple Tests using
8722 parallel-tests}).
8725 @cindex Tests, expected failure
8726 @cindex Expected test failure
8728 @vindex XFAIL_TESTS
8729 You may define the variable @code{XFAIL_TESTS} to a list of tests
8730 (usually a subset of @code{TESTS}) that are expected to fail.  This will
8731 reverse the result of those tests.
8733 Automake ensures that each file listed in @code{TESTS} is built before
8734 any tests are run; you can list both source and derived programs (or
8735 scripts) in @code{TESTS}; the generated rule will look both in
8736 @code{srcdir} and @file{.}.  For instance, you might want to run a C
8737 program as a test.  To do this you would list its name in @code{TESTS}
8738 and also in @code{check_PROGRAMS}, and then specify it as you would
8739 any other program.
8741 Programs listed in @code{check_PROGRAMS} (and @code{check_LIBRARIES},
8742 @code{check_LTLIBRARIES}...) are only built during @code{make check},
8743 not during @code{make all}.  You should list there any program needed
8744 by your tests that does not need to be built by @code{make all}.  Note
8745 that @code{check_PROGRAMS} are @emph{not} automatically added to
8746 @code{TESTS} because @code{check_PROGRAMS} usually lists programs used
8747 by the tests, not the tests themselves.  Of course you can set
8748 @code{TESTS = $(check_PROGRAMS)} if all your programs are test cases.
8751 @node Simple Tests using parallel-tests
8752 @section Simple Tests using @samp{parallel-tests}
8753 @cindex @option{parallel-tests}, Using
8755 The option @option{parallel-tests} (@pxref{Options}) enables a test
8756 suite driver that is mostly compatible to the simple test driver described
8757 in the previous section, but provides a few more features and slightly different
8758 semantics.  It features concurrent execution of tests with @code{make -j},
8759 allows to specify inter-test dependencies, lazy reruns of tests that
8760 have not completed in a prior run, summary and verbose output in
8761 @samp{RST} (reStructuredText) and @samp{HTML} format, and hard errors
8762 for exceptional failures.  Similar to the simple test driver,
8763 @code{TESTS_ENVIRONMENT}, @code{AM_COLOR_TESTS}, @code{XFAIL_TESTS}, and
8764 the @code{check_*} variables are honored, and the environment variable
8765 @env{srcdir} is set during test execution.
8767 This test driver is still experimental and may undergo changes in order
8768 to satisfy additional portability requirements.
8770 @vindex TEST_SUITE_LOG
8771 @vindex TESTS
8772 The driver operates by defining a set of @command{make} rules to create
8773 a summary log file, @code{TEST_SUITE_LOG}, which defaults to
8774 @file{test-suite.log} and requires a @file{.log} suffix.  This file
8775 depends upon log files created for each single test program listed in
8776 @code{TESTS}, which in turn contain all output produced by the
8777 corresponding tests.
8779 @vindex TEST_EXTENSIONS
8780 @vindex TEST_LOGS
8781 Each log file is created when the corresponding test has completed.
8782 The set of log files is listed in the read-only variable
8783 @code{TEST_LOGS}, and defaults to @code{TESTS}, with the executable
8784 extension if any (@pxref{EXEEXT}), as well as any suffix listed in
8785 @code{TEST_EXTENSIONS} removed, and @file{.log} appended.
8786 @code{TEST_EXTENSIONS} defaults to @file{.test}.  Results are undefined
8787 if a test file name ends in several concatenated suffixes.
8789 @vindex _LOG_COMPILE
8790 @vindex _LOG_COMPILER
8791 @vindex _LOG_FLAGS
8792 @vindex LOG_COMPILE
8793 @vindex LOG_COMPILER
8794 @vindex LOG_FLAGS
8795 @vindex @var{ext}_LOG_COMPILE
8796 @vindex @var{ext}_LOG_COMPILER
8797 @vindex @var{ext}_LOG_FLAGS
8798 @vindex AM_@var{ext}_LOG_FLAGS
8799 @vindex AM_LOG_FLAGS
8800 For tests that match an extension @code{.@var{ext}} listed in
8801 @code{TEST_EXTENSIONS}, you can provide a test driver using the variable
8802 @code{@var{ext}_LOG_COMPILER} (note the upper-case extension) and pass
8803 options in @code{AM_@var{ext}_LOG_FLAGS} and allow the user to pass
8804 options in @code{@var{ext}_LOG_FLAGS}.  It will cause all tests with
8805 this extension to be called with this driver.  For all tests without a
8806 registered extension, the variables @code{LOG_COMPILER},
8807 @code{AM_LOG_FLAGS}, and @code{LOG_FLAGS} may be used.  For example,
8809 @c Keep in sync with parallel-tests-log-compiler-example.test.
8810 @example
8811 TESTS = foo.pl bar.py baz
8812 TEST_EXTENSIONS = .pl .py
8813 PL_LOG_COMPILER = $(PERL)
8814 AM_PL_LOG_FLAGS = -w
8815 PY_LOG_COMPILER = $(PYTHON)
8816 AM_PY_LOG_FLAGS = -v
8817 LOG_COMPILER = ./wrapper-script
8818 AM_LOG_FLAGS = -d
8819 @end example
8821 @noindent
8822 will invoke @samp{$(PERL) -w foo.pl}, @samp{$(PYTHON) -v bar.py},
8823 and @samp{./wrapper-script -d baz} to produce @file{foo.log},
8824 @file{bar.log}, and @file{baz.log}, respectively.  The
8825 @samp{TESTS_ENVIRONMENT} variable is still expanded before the driver,
8826 but should be reserved for the user.
8828 @vindex VERBOSE
8829 As with the simple driver above, by default one status line is printed
8830 per completed test, and a short summary after the suite has completed.
8831 However, standard output and standard error of the test are redirected
8832 to a per-test log file, so that parallel execution does not produce
8833 intermingled output.  The output from failed tests is collected in the
8834 @file{test-suite.log} file.  If the variable @samp{VERBOSE} is set, this
8835 file is output after the summary.  For best results, the tests should be
8836 verbose by default now.
8838 @trindex mostlyclean
8839 @trindex check-html
8840 @vindex RST2HTML
8841 @vindex TEST_SUITE_HTML
8842 With @code{make check-html}, the log files may be converted from RST
8843 (reStructuredText, see @uref{http://docutils.sourceforge.net/@/rst.html})
8844 to HTML using @samp{RST2HTML}, which defaults to @command{rst2html} or
8845 @command{rst2html.py}.  The variable @samp{TEST_SUITE_HTML} contains the
8846 set of converted log files.  The log and HTML files are removed upon
8847 @code{make mostlyclean}.
8849 @vindex DISABLE_HARD_ERRORS
8850 @cindex Exit status 99, special interpretation
8851 @cindex hard error
8852 Even in the presence of expected failures (see @code{XFAIL_TESTS}), there
8853 may be conditions under which a test outcome needs attention.  For
8854 example, with test-driven development, you may write tests for features
8855 that you have not implemented yet, and thus mark these tests as expected
8856 to fail.  However, you may still be interested in exceptional conditions,
8857 for example, tests that fail due to a segmentation violation or another
8858 error that is independent of the feature awaiting implementation.
8859 Tests can exit with an exit status of 99 to signal such a @emph{hard
8860 error}.  Unless the variable @code{DISABLE_HARD_ERRORS} is set to a
8861 nonempty value, such tests will be counted as failed.
8863 By default, the test suite driver will run all tests, but there are
8864 several ways to limit the set of tests that are run:
8866 @itemize @bullet
8867 @item
8868 You can set the @code{TESTS} variable, similarly to how you can with
8869 the simple test driver from the previous section.  For example, you can
8870 use a command like this to run only a subset of the tests:
8872 @example
8873 env TESTS="foo.test bar.test" make -e check
8874 @end example
8876 Note however that the command above will unconditionally overwrite the
8877 @file{test-suite.log} file, thus clobbering the recorded results
8878 of any previous testsuite run.  This might be undesirable for packages
8879 whose testsuite takes long time to execute.  Luckily, this problem can
8880 easily be avoided by overriding also @code{TEST_SUITE_LOG} at runtime;
8881 for example,
8883 @c Keep in sync with parallel-tests-log-override-2.test.
8884 @example
8885 env TEST_SUITE_LOG=partial.log TESTS="..." make -e check
8886 @end example
8888 will write the result of the partial testsuite runs to the
8889 @file{partial.log}, without touching @file{test-suite.log}.
8891 @item
8892 You can set the @code{TEST_LOGS} variable.  By default, this variable is
8893 computed at @command{make} run time from the value of @code{TESTS} as
8894 described above.  For example, you can use the following:
8896 @example
8897 set x subset*.log; shift
8898 env TEST_LOGS="foo.log $*" make -e check
8899 @end example
8901 The comments made above about @code{TEST_SUITE_LOG} overriding applies
8902 here too.
8904 @item
8905 @vindex RECHECK_LOGS
8906 @cindex lazy test execution
8907 By default, the test driver removes all old per-test log files before it
8908 starts running tests to regenerate them.  The variable
8909 @code{RECHECK_LOGS} contains the set of log files which are removed.
8910 @code{RECHECK_LOGS} defaults to @code{TEST_LOGS}, which means all tests
8911 need to be rechecked.  By overriding this variable, you can choose which
8912 tests need to be reconsidered.  For example, you can lazily rerun only
8913 those tests which are outdated, i.e., older than their prerequisite test
8914 files, by setting this variable to the empty value:
8916 @example
8917 env RECHECK_LOGS= make -e check
8918 @end example
8920 @item
8921 @trindex recheck
8922 @trindex recheck-html
8923 You can ensure that all tests are rerun which have failed or passed
8924 unexpectedly, by running @code{make recheck} in the test directory.
8925 This convenience target will set @code{RECHECK_LOGS} appropriately
8926 before invoking the main test driver.  The @code{recheck-html} target
8927 does the same as @code{recheck} but again converts the resulting log
8928 file in HTML format, like the @code{check-html} target.
8929 @end itemize
8931 In order to guarantee an ordering between tests even with @code{make
8932 -j@var{N}}, dependencies between the corresponding log files may be
8933 specified through usual @command{make} dependencies.  For example, the
8934 following snippet lets the test named @file{foo-execute.test} depend
8935 upon completion of the test @file{foo-compile.test}:
8937 @example
8938 TESTS = foo-compile.test foo-execute.test
8939 foo-execute.log: foo-compile.log
8940 @end example
8942 @noindent
8943 Please note that this ordering ignores the @emph{results} of required
8944 tests, thus the test @file{foo-execute.test} is run even if the test
8945 @file{foo-compile.test} failed or was skipped beforehand.  Further,
8946 please note that specifying such dependencies currently works only for
8947 tests that end in one of the suffixes listed in @code{TEST_EXTENSIONS}.
8949 Tests without such specified dependencies may be run concurrently with
8950 parallel @command{make -j@var{N}}, so be sure they are prepared for
8951 concurrent execution.
8953 @cindex Unit tests
8954 The combination of lazy test execution and correct dependencies between
8955 tests and their sources may be exploited for efficient unit testing
8956 during development.  To further speed up the edit-compile-test cycle, it
8957 may even be useful to specify compiled programs in @code{EXTRA_PROGRAMS}
8958 instead of with @code{check_PROGRAMS}, as the former allows intertwined
8959 compilation and test execution (but note that @code{EXTRA_PROGRAMS} are
8960 not cleaned automatically, @pxref{Uniform}).
8962 The variables @code{TESTS} and @code{XFAIL_TESTS} may contain
8963 conditional parts as well as configure substitutions.  In the latter
8964 case, however, certain restrictions apply: substituted test names
8965 must end with a nonempty test suffix like @file{.test}, so that one of
8966 the inference rules generated by @command{automake} can apply.  For
8967 literal test names, @command{automake} can generate per-target rules
8968 to avoid this limitation.
8970 Please note that it is currently not possible to use @code{$(srcdir)/}
8971 or @code{$(top_srcdir)/} in the @code{TESTS} variable.  This technical
8972 limitation is necessary to avoid generating test logs in the source tree
8973 and has the unfortunate consequence that it is not possible to specify
8974 distributed tests that are themselves generated by means of explicit
8975 rules, in a way that is portable to all @command{make} implementations
8976 (@pxref{Make Target Lookup,,, autoconf, The Autoconf Manual}, the
8977 semantics of FreeBSD and OpenBSD @command{make} conflict with this).
8978 In case of doubt you may want to require to use GNU @command{make},
8979 or work around the issue with inference rules to generate the tests.
8982 @node DejaGnu Tests
8983 @section DejaGnu Tests
8985 If @uref{ftp://ftp.gnu.org/gnu/dejagnu/, @command{dejagnu}} appears in
8986 @code{AUTOMAKE_OPTIONS}, then a @command{dejagnu}-based test suite is
8987 assumed.  The variable @code{DEJATOOL} is a list of names that are
8988 passed, one at a time, as the @option{--tool} argument to
8989 @command{runtest} invocations; it defaults to the name of the package.
8991 The variable @code{RUNTESTDEFAULTFLAGS} holds the @option{--tool} and
8992 @option{--srcdir} flags that are passed to dejagnu by default; this can be
8993 overridden if necessary.
8994 @vindex RUNTESTDEFAULTFLAGS
8996 The variables @code{EXPECT} and @code{RUNTEST} can
8997 also be overridden to provide project-specific values.  For instance,
8998 you will need to do this if you are testing a compiler toolchain,
8999 because the default values do not take into account host and target
9000 names.
9001 @opindex dejagnu
9002 @vindex DEJATOOL
9003 @vindex EXPECT
9004 @vindex RUNTEST
9006 The contents of the variable @code{RUNTESTFLAGS} are passed to the
9007 @code{runtest} invocation.  This is considered a ``user variable''
9008 (@pxref{User Variables}).  If you need to set @command{runtest} flags in
9009 @file{Makefile.am}, you can use @code{AM_RUNTESTFLAGS} instead.
9010 @vindex RUNTESTFLAGS
9011 @vindex AM_RUNTESTFLAGS
9013 @cindex @file{site.exp}
9014 Automake will generate rules to create a local @file{site.exp} file,
9015 defining various variables detected by @command{configure}.  This file
9016 is automatically read by DejaGnu.  It is OK for the user of a package
9017 to edit this file in order to tune the test suite.  However this is
9018 not the place where the test suite author should define new variables:
9019 this should be done elsewhere in the real test suite code.
9020 Especially, @file{site.exp} should not be distributed.
9022 For more information regarding DejaGnu test suites, see @ref{Top, , ,
9023 dejagnu, The DejaGnu Manual}.
9025 In either case, the testing is done via @samp{make check}.
9027 @node Install Tests
9028 @section Install Tests
9030 The @code{installcheck} target is available to the user as a way to
9031 run any tests after the package has been installed.  You can add tests
9032 to this by writing an @code{installcheck-local} rule.
9035 @node Rebuilding
9036 @chapter Rebuilding Makefiles
9037 @cindex rebuild rules
9039 Automake generates rules to automatically rebuild @file{Makefile}s,
9040 @file{configure}, and other derived files like @file{Makefile.in}.
9042 @acindex AM_MAINTAINER_MODE
9043 If you are using @code{AM_MAINTAINER_MODE} in @file{configure.ac}, then
9044 these automatic rebuilding rules are only enabled in maintainer mode.
9046 @vindex ACLOCAL_AMFLAGS
9047 Sometimes you need to run @command{aclocal} with an argument like
9048 @option{-I} to tell it where to find @file{.m4} files.  Since
9049 sometimes @command{make} will automatically run @command{aclocal}, you
9050 need a way to specify these arguments.  You can do this by defining
9051 @code{ACLOCAL_AMFLAGS}; this holds arguments that are passed verbatim
9052 to @command{aclocal}.  This variable is only useful in the top-level
9053 @file{Makefile.am}.
9055 @vindex CONFIG_STATUS_DEPENDENCIES
9056 @vindex CONFIGURE_DEPENDENCIES
9057 @cindex @file{version.sh}, example
9058 @cindex @file{version.m4}, example
9060 Sometimes it is convenient to supplement the rebuild rules for
9061 @file{configure} or @file{config.status} with additional dependencies.
9062 The variables @code{CONFIGURE_DEPENDENCIES} and
9063 @code{CONFIG_STATUS_DEPENDENCIES} can be used to list these extra
9064 dependencies.  These variables should be defined in all
9065 @file{Makefile}s of the tree (because these two rebuild rules are
9066 output in all them), so it is safer and easier to @code{AC_SUBST} them
9067 from @file{configure.ac}.  For instance, the following statement will
9068 cause @file{configure} to be rerun each time @file{version.sh} is
9069 changed.
9071 @example
9072 AC_SUBST([CONFIG_STATUS_DEPENDENCIES], ['$(top_srcdir)/version.sh'])
9073 @end example
9075 @noindent
9076 Note the @samp{$(top_srcdir)/} in the file name.  Since this variable
9077 is to be used in all @file{Makefile}s, its value must be sensible at
9078 any level in the build hierarchy.
9080 Beware not to mistake @code{CONFIGURE_DEPENDENCIES} for
9081 @code{CONFIG_STATUS_DEPENDENCIES}.
9083 @code{CONFIGURE_DEPENDENCIES} adds dependencies to the
9084 @file{configure} rule, whose effect is to run @command{autoconf}.  This
9085 variable should be seldom used, because @command{automake} already tracks
9086 @code{m4_include}d files.  However it can be useful when playing
9087 tricky games with @code{m4_esyscmd} or similar non-recommendable
9088 macros with side effects.
9090 @code{CONFIG_STATUS_DEPENDENCIES} adds dependencies to the
9091 @file{config.status} rule, whose effect is to run @file{configure}.
9092 This variable should therefore carry any non-standard source that may
9093 be read as a side effect of running @command{configure}, like @file{version.sh}
9094 in the example above.
9096 Speaking of @file{version.sh} scripts, we recommend against them
9097 today.  They are mainly used when the version of a package is updated
9098 automatically by a script (e.g., in daily builds).  Here is what some
9099 old-style @file{configure.ac}s may look like:
9101 @example
9102 AC_INIT
9103 . $srcdir/version.sh
9104 AM_INIT_AUTOMAKE([name], $VERSION_NUMBER)
9105 @dots{}
9106 @end example
9108 @noindent
9109 Here, @file{version.sh} is a shell fragment that sets
9110 @code{VERSION_NUMBER}.  The problem with this example is that
9111 @command{automake} cannot track dependencies (listing @file{version.sh}
9112 in @command{CONFIG_STATUS_DEPENDENCIES}, and distributing this file is up
9113 to the user), and that it uses the obsolete form of @code{AC_INIT} and
9114 @code{AM_INIT_AUTOMAKE}.  Upgrading to the new syntax is not
9115 straightforward, because shell variables are not allowed in
9116 @code{AC_INIT}'s arguments.  We recommend that @file{version.sh} be
9117 replaced by an M4 file that is included by @file{configure.ac}:
9119 @example
9120 m4_include([version.m4])
9121 AC_INIT([name], VERSION_NUMBER)
9122 AM_INIT_AUTOMAKE
9123 @dots{}
9124 @end example
9126 @noindent
9127 Here @file{version.m4} could contain something like
9128 @samp{m4_define([VERSION_NUMBER], [1.2])}.  The advantage of this
9129 second form is that @command{automake} will take care of the
9130 dependencies when defining the rebuild rule, and will also distribute
9131 the file automatically.  An inconvenience is that @command{autoconf}
9132 will now be rerun each time the version number is bumped, when only
9133 @file{configure} had to be rerun in the previous setup.
9136 @node Options
9137 @chapter Changing Automake's Behavior
9139 Various features of Automake can be controlled by options.  Except where
9140 noted otherwise, options can be specified in one of several ways: Most
9141 options can be applied on a per-@file{Makefile} basis when listed in a
9142 special @file{Makefile} variable named @code{AUTOMAKE_OPTIONS}.  Some
9143 of these options only make sense when specified in the toplevel
9144 @file{Makefile.am} file.  Options are applied globally to all processed
9145 @file{Makefile} files when listed in the first argument of
9146 @code{AM_INIT_AUTOMAKE} in @file{configure.ac}, and some options which
9147 require changes to the @command{configure} script can only be specified
9148 there.  These are annotated below.
9150 Currently understood options are:
9151 @vindex AUTOMAKE_OPTIONS
9153 @table @asis
9154 @item @option{gnits}
9155 @itemx @option{gnu}
9156 @itemx @option{foreign}
9157 @itemx @option{cygnus}
9158 @cindex Option, @option{gnits}
9159 @cindex Option, @option{gnu}
9160 @cindex Option, @option{foreign}
9161 @cindex Option, @option{cygnus}
9162 @opindex gnits
9163 @opindex gnu
9164 @opindex foreign
9165 @opindex cygnus
9167 Set the strictness as appropriate.  The @option{gnits} option also
9168 implies options @option{readme-alpha} and @option{check-news}.
9170 @item @option{ansi2knr}
9171 @itemx @option{@var{path}/ansi2knr}
9172 @cindex Option, @option{ansi2knr}
9173 @opindex ansi2knr
9174 Turn on the deprecated de-ANSI-fication feature (@pxref{ANSI}).  Note
9175 that that feature and this option @emph{will be removed} in the next
9176 major Automake release.
9178 If preceded by a
9179 path, the generated @file{Makefile.in} will look in the specified
9180 directory to find the @file{ansi2knr} program.  The path should be a
9181 relative path to another directory in the same distribution (Automake
9182 does not check this).
9184 @item @option{check-news}
9185 @cindex Option, @option{check-news}
9186 @opindex check-news
9187 Cause @samp{make dist} to fail unless the current version number appears
9188 in the first few lines of the @file{NEWS} file.
9190 @item @option{color-tests}
9191 @cindex Option, @option{color-tests}
9192 @opindex color-tests
9193 Cause output of the simple test suite (@pxref{Simple Tests}) to be
9194 colorized on capable terminals.
9196 @item @option{dejagnu}
9197 @cindex Option, @option{dejagnu}
9198 @opindex dejagnu
9199 Cause @command{dejagnu}-specific rules to be generated.  @xref{DejaGnu Tests}.
9201 @item @option{dist-bzip2}
9202 @cindex Option, @option{dist-bzip2}
9203 @opindex dist-bzip2
9204 Hook @code{dist-bzip2} to @code{dist}.
9205 @trindex dist-bzip2
9207 @item @option{dist-lzma}
9208 @cindex Option, @option{dist-lzma}
9209 @opindex dist-lzma
9210 Hook @code{dist-lzma} to @code{dist}.  Obsoleted by @code{dist-xz}.
9211 @trindex dist-lzma
9213 @item @option{dist-shar}
9214 @cindex Option, @option{dist-shar}
9215 @opindex dist-shar
9216 Hook @code{dist-shar} to @code{dist}.
9217 @trindex dist-shar
9219 @item @option{dist-zip}
9220 @cindex Option, @option{dist-zip}
9221 @opindex dist-zip
9222 Hook @code{dist-zip} to @code{dist}.
9223 @trindex dist-zip
9225 @item @option{dist-tarZ}
9226 @cindex Option, @option{dist-tarZ}
9227 @opindex dist-tarZ
9228 Hook @code{dist-tarZ} to @code{dist}.
9229 @trindex dist-tarZ
9231 @item @option{filename-length-max=99}
9232 @cindex Option, @option{filename-length-max=99}
9233 @opindex filename-length-max=99
9234 Abort if file names longer than 99 characters are found during
9235 @samp{make dist}.  Such long file names are generally considered not to
9236 be portable in tarballs.  See the @option{tar-v7} and @option{tar-ustar}
9237 options below.  This option should be used in the top-level
9238 @file{Makefile.am} or as an argument of @code{AM_INIT_AUTOMAKE} in
9239 @file{configure.ac}, it will be ignored otherwise.  It will also be
9240 ignored in sub-packages of nested packages (@pxref{Subpackages}).
9242 @item @option{no-define}
9243 @cindex Option, @option{no-define}
9244 @opindex no-define
9245 This option is meaningful only when passed as an argument to
9246 @code{AM_INIT_AUTOMAKE}.  It will prevent the @code{PACKAGE} and
9247 @code{VERSION} variables from being @code{AC_DEFINE}d.
9249 @item @option{no-dependencies}
9250 @cindex Option, @option{no-dependencies}
9251 @opindex no-dependencies
9252 This is similar to using @option{--ignore-deps} on the command line,
9253 but is useful for those situations where you don't have the necessary
9254 bits to make automatic dependency tracking work
9255 (@pxref{Dependencies}).  In this case the effect is to effectively
9256 disable automatic dependency tracking.
9258 @item @option{no-dist}
9259 @cindex Option, @option{no-dist}
9260 @opindex no-dist
9261 Don't emit any code related to @code{dist} target.  This is useful
9262 when a package has its own method for making distributions.
9264 @item @option{no-dist-gzip}
9265 @cindex Option, @option{no-dist-gzip}
9266 @opindex no-dist-gzip
9267 Do not hook @code{dist-gzip} to @code{dist}.
9268 @trindex no-dist-gzip
9270 @item @option{no-exeext}
9271 @cindex Option, @option{no-exeext}
9272 @opindex no-exeext
9273 If your @file{Makefile.am} defines a rule for target @code{foo}, it
9274 will override a rule for a target named @samp{foo$(EXEEXT)}.  This is
9275 necessary when @code{EXEEXT} is found to be empty.  However, by
9276 default @command{automake} will generate an error for this use.  The
9277 @option{no-exeext} option will disable this error.  This is intended for
9278 use only where it is known in advance that the package will not be
9279 ported to Windows, or any other operating system using extensions on
9280 executables.
9282 @item @option{no-installinfo}
9283 @cindex Option, @option{no-installinfo}
9284 @opindex no-installinfo
9285 The generated @file{Makefile.in} will not cause info pages to be built
9286 or installed by default.  However, @code{info} and @code{install-info}
9287 targets will still be available.  This option is disallowed at
9288 @option{gnu} strictness and above.
9289 @trindex info
9290 @trindex install-info
9292 @item @option{no-installman}
9293 @cindex Option, @option{no-installman}
9294 @opindex no-installman
9295 The generated @file{Makefile.in} will not cause man pages to be
9296 installed by default.  However, an @code{install-man} target will still
9297 be available for optional installation.  This option is disallowed at
9298 @option{gnu} strictness and above.
9299 @trindex install-man
9301 @item @option{nostdinc}
9302 @cindex Option, @option{nostdinc}
9303 @opindex nostdinc
9304 This option can be used to disable the standard @option{-I} options that
9305 are ordinarily automatically provided by Automake.
9307 @item @option{no-texinfo.tex}
9308 @cindex Option, @option{no-texinfo.tex}
9309 @opindex no-texinfo.tex
9310 Don't require @file{texinfo.tex}, even if there are texinfo files in
9311 this directory.
9313 @item @option{parallel-tests}
9314 @cindex Option, @option{parallel-tests}
9315 @opindex parallel-tests
9316 Enable test suite driver for @code{TESTS} that can run tests in parallel
9317 (@pxref{Simple Tests using parallel-tests}, for more information).
9319 @item @option{readme-alpha}
9320 @cindex Option, @option{readme-alpha}
9321 @opindex readme-alpha
9322 If this release is an alpha release, and the file @file{README-alpha}
9323 exists, then it will be added to the distribution.  If this option is
9324 given, version numbers are expected to follow one of two forms.  The
9325 first form is @samp{@var{major}.@var{minor}.@var{alpha}}, where each
9326 element is a number; the final period and number should be left off for
9327 non-alpha releases.  The second form is
9328 @samp{@var{major}.@var{minor}@var{alpha}}, where @var{alpha} is a
9329 letter; it should be omitted for non-alpha releases.
9331 @item @option{silent-rules}
9332 @cindex Option, @option{silent-rules}
9333 @opindex silent-rules
9334 Enable less verbose build rules.  This can be used to let build rules
9335 output status lines of the form:
9336 @example
9337 GEN @var{output-file}
9338  CC @var{object-file}
9339 @end example
9340 @noindent
9341 instead of printing the command that will be executed to update
9342 @var{output-file} or to compile @var{object-file}.  It can also
9343 silence @command{libtool} output.
9345 For more information about how to use, enable, or disable silent
9346 rules, @pxref{Automake silent-rules Option}.
9348 @item @option{std-options}
9349 @cindex Options, @option{std-options}
9350 @cindex @samp{make installcheck}, testing @option{--help} and @option{--version}
9351 @cindex @option{--help} check
9352 @cindex @option{--version} check
9353 @opindex std-options
9355 Make the @code{installcheck} rule check that installed scripts and
9356 programs support the @option{--help} and @option{--version} options.
9357 This also provides a basic check that the program's
9358 run-time dependencies are satisfied after installation.
9360 @vindex AM_INSTALLCHECK_STD_OPTIONS_EXEMPT
9361 In a few situations, programs (or scripts) have to be exempted from this
9362 test.  For instance, @command{false} (from GNU coreutils) is never
9363 successful, even for @option{--help} or @option{--version}.  You can list
9364 such programs in the variable @code{AM_INSTALLCHECK_STD_OPTIONS_EXEMPT}.
9365 Programs (not scripts) listed in this variable should be suffixed by
9366 @samp{$(EXEEXT)} for the sake of Win32 or OS/2.  For instance, suppose we
9367 build @file{false} as a program but @file{true.sh} as a script, and that
9368 neither of them support @option{--help} or @option{--version}:
9370 @example
9371 AUTOMAKE_OPTIONS = std-options
9372 bin_PROGRAMS = false ...
9373 bin_SCRIPTS = true.sh ...
9374 AM_INSTALLCHECK_STD_OPTIONS_EXEMPT = false$(EXEEXT) true.sh
9375 @end example
9377 @item @option{subdir-objects}
9378 @cindex Options, @option{subdir-objects}
9379 @opindex subdir-objects
9380 If this option is specified, then objects are placed into the
9381 subdirectory of the build directory corresponding to the subdirectory of
9382 the source file.  For instance, if the source file is
9383 @file{subdir/file.cxx}, then the output file would be
9384 @file{subdir/file.o}.
9386 In order to use this option with C sources, you should add
9387 @code{AM_PROG_CC_C_O} to @file{configure.ac}.
9389 @anchor{tar-formats}
9390 @item @option{tar-v7}
9391 @itemx @option{tar-ustar}
9392 @itemx @option{tar-pax}
9393 @cindex Option, @option{tar-v7}
9394 @cindex Option, @option{tar-ustar}
9395 @cindex Option, @option{tar-pax}
9396 @cindex @command{tar} formats
9397 @cindex v7 @command{tar} format
9398 @cindex ustar format
9399 @cindex pax format
9400 @opindex tar-v7
9401 @opindex tar-ustar
9402 @opindex tar-pax
9404 These three mutually exclusive options select the tar format to use
9405 when generating tarballs with @samp{make dist}.  (The tar file created
9406 is then compressed according to the set of @option{no-dist-gzip},
9407 @option{dist-bzip2}, @option{dist-xz} and @option{dist-tarZ} options in use.)
9409 These options must be passed as arguments to @code{AM_INIT_AUTOMAKE}
9410 (@pxref{Macros}) because they can require additional configure checks.
9411 Automake will complain if it sees such options in an
9412 @code{AUTOMAKE_OPTIONS} variable.
9414 @option{tar-v7} selects the old V7 tar format.  This is the historical
9415 default.  This antiquated format is understood by all tar
9416 implementations and supports file names with up to 99 characters.  When
9417 given longer file names some tar implementations will diagnose the
9418 problem while other will generate broken tarballs or use non-portable
9419 extensions.  Furthermore, the V7 format cannot store empty
9420 directories.  When using this format, consider using the
9421 @option{filename-length-max=99} option to catch file names too long.
9423 @option{tar-ustar} selects the ustar format defined by POSIX
9424 1003.1-1988.  This format is believed to be old enough to be portable.
9425 It fully supports empty directories.  It can store file names with up
9426 to 256 characters, provided that the file name can be split at
9427 directory separator in two parts, first of them being at most 155
9428 bytes long.  So, in most cases the maximum file name length will be
9429 shorter than 256 characters.  However you may run against broken tar
9430 implementations that incorrectly handle file names longer than 99
9431 characters (please report them to @email{@value{PACKAGE_BUGREPORT}} so we
9432 can document this accurately).
9434 @option{tar-pax} selects the new pax interchange format defined by POSIX
9435 1003.1-2001.  It does not limit the length of file names.  However,
9436 this format is very young and should probably be restricted to
9437 packages that target only very modern platforms.  There are moves to
9438 change the pax format in an upward-compatible way, so this option may
9439 refer to a more recent version in the future.
9441 @xref{Formats, , Controlling the Archive Format, tar, GNU Tar}, for
9442 further discussion about tar formats.
9444 @command{configure} knows several ways to construct these formats.  It
9445 will not abort if it cannot find a tool up to the task (so that the
9446 package can still be built), but @samp{make dist} will fail.
9448 @item @var{version}
9449 @cindex Option, @var{version}
9450 A version number (e.g., @samp{0.30}) can be specified.  If Automake is not
9451 newer than the version specified, creation of the @file{Makefile.in}
9452 will be suppressed.
9454 @item @option{-W@var{category}} or @option{--warnings=@var{category}}
9455 @cindex Option, warnings
9456 @cindex Option, @option{-W@var{category}}
9457 @cindex Option, @option{--warnings=@var{category}}
9458 These options behave exactly like their command-line counterpart
9459 (@pxref{Invoking Automake}).  This allows you to enable or disable some
9460 warning categories on a per-file basis.  You can also setup some warnings
9461 for your entire project; for instance, try @samp{AM_INIT_AUTOMAKE([-Wall])}
9462 in your @file{configure.ac}.
9464 @end table
9466 Unrecognized options are diagnosed by @command{automake}.
9468 If you want an option to apply to all the files in the tree, you can use
9469 the @code{AM_INIT_AUTOMAKE} macro in @file{configure.ac}.
9470 @xref{Macros}.
9473 @node Miscellaneous
9474 @chapter Miscellaneous Rules
9476 There are a few rules and variables that didn't fit anywhere else.
9478 @menu
9479 * Tags::                        Interfacing to etags and mkid
9480 * Suffixes::                    Handling new file extensions
9481 * Multilibs::                   Support for multilibs.
9482 @end menu
9485 @node Tags
9486 @section Interfacing to @command{etags}
9488 @cindex @file{TAGS} support
9490 Automake will generate rules to generate @file{TAGS} files for use with
9491 GNU Emacs under some circumstances.
9493 @trindex tags
9494 If any C, C++ or Fortran 77 source code or headers are present, then
9495 @code{tags} and @code{TAGS} rules will be generated for the directory.
9496 All files listed using the @code{_SOURCES}, @code{_HEADERS}, and
9497 @code{_LISP} primaries will be used to generate tags.  Note that
9498 generated source files that are not distributed must be declared in
9499 variables like @code{nodist_noinst_HEADERS} or
9500 @code{nodist_@var{prog}_SOURCES} or they will be ignored.
9502 A @code{tags} rule will be output at the topmost directory of a
9503 multi-directory package.  When run from this topmost directory,
9504 @samp{make tags} will generate a @file{TAGS} file that includes by
9505 reference all @file{TAGS} files from subdirectories.
9507 The @code{tags} rule will also be generated if the variable
9508 @code{ETAGS_ARGS} is defined.  This variable is intended for use in
9509 directories that contain taggable source that @command{etags} does
9510 not understand.  The user can use the @code{ETAGSFLAGS} to pass
9511 additional flags to @command{etags}; @code{AM_ETAGSFLAGS} is also
9512 available for use in @file{Makefile.am}.
9513 @vindex ETAGS_ARGS
9514 @vindex ETAGSFLAGS
9515 @vindex AM_ETAGSFLAGS
9517 Here is how Automake generates tags for its source, and for nodes in its
9518 Texinfo file:
9520 @example
9521 ETAGS_ARGS = automake.in --lang=none \
9522  --regex='/^@@node[ \t]+\([^,]+\)/\1/' automake.texi
9523 @end example
9525 If you add file names to @code{ETAGS_ARGS}, you will probably also
9526 want to define @code{TAGS_DEPENDENCIES}.  The contents of this variable
9527 are added directly to the dependencies for the @code{tags} rule.
9528 @vindex TAGS_DEPENDENCIES
9530 Automake also generates a @code{ctags} rule that can be used to
9531 build @command{vi}-style @file{tags} files.  The variable @code{CTAGS}
9532 is the name of the program to invoke (by default @command{ctags});
9533 @code{CTAGSFLAGS} can be used by the user to pass additional flags,
9534 and @code{AM_CTAGSFLAGS} can be used by the @file{Makefile.am}.
9536 Automake will also generate an @code{ID} rule that will run
9537 @command{mkid} on the source.  This is only supported on a
9538 directory-by-directory basis.
9539 @trindex id
9541 Finally, Automake also emits rules to support the
9542 @uref{http://www.gnu.org/software/global/, GNU Global Tags program}.
9543 The @code{GTAGS} rule runs Global Tags and puts the
9544 result in the top build directory.  The variable @code{GTAGS_ARGS}
9545 holds arguments that are passed to @command{gtags}.
9546 @vindex GTAGS_ARGS
9549 @node Suffixes
9550 @section Handling new file extensions
9552 @cindex Adding new @code{SUFFIXES}
9553 @cindex @code{SUFFIXES}, adding
9554 @vindex SUFFIXES
9556 It is sometimes useful to introduce a new implicit rule to handle a file
9557 type that Automake does not know about.
9559 For instance, suppose you had a compiler that could compile @file{.foo}
9560 files to @file{.o} files.  You would simply define a suffix rule for
9561 your language:
9563 @example
9564 .foo.o:
9565         foocc -c -o $@@ $<
9566 @end example
9568 Then you could directly use a @file{.foo} file in a @code{_SOURCES}
9569 variable and expect the correct results:
9571 @example
9572 bin_PROGRAMS = doit
9573 doit_SOURCES = doit.foo
9574 @end example
9576 This was the simpler and more common case.  In other cases, you will
9577 have to help Automake to figure out which extensions you are defining your
9578 suffix rule for.  This usually happens when your extension does not
9579 start with a dot.  Then, all you have to do is to put a list of new
9580 suffixes in the @code{SUFFIXES} variable @strong{before} you define your
9581 implicit rule.
9583 For instance, the following definition prevents Automake from misinterpreting
9584 the @samp{.idlC.cpp:} rule as an attempt to transform @file{.idlC} files into
9585 @file{.cpp} files.
9587 @c Keep in sync with suffix7.test.
9588 @example
9589 SUFFIXES = .idl C.cpp
9590 .idlC.cpp:
9591         # whatever
9592 @end example
9594 As you may have noted, the @code{SUFFIXES} variable behaves like the
9595 @code{.SUFFIXES} special target of @command{make}.  You should not touch
9596 @code{.SUFFIXES} yourself, but use @code{SUFFIXES} instead and let
9597 Automake generate the suffix list for @code{.SUFFIXES}.  Any given
9598 @code{SUFFIXES} go at the start of the generated suffixes list, followed
9599 by Automake generated suffixes not already in the list.
9601 @node Multilibs
9602 @section Support for Multilibs
9604 Automake has support for an obscure feature called multilibs.  A
9605 @dfn{multilib} is a library that is built for multiple different ABIs
9606 at a single time; each time the library is built with a different target
9607 flag combination.  This is only useful when the library is intended to
9608 be cross-compiled, and it is almost exclusively used for compiler
9609 support libraries.
9611 The multilib support is still experimental.  Only use it if you are
9612 familiar with multilibs and can debug problems you might encounter.
9615 @node Include
9616 @chapter Include
9618 @cmindex include
9619 @cindex Including @file{Makefile} fragment
9620 @cindex @file{Makefile} fragment, including
9622 Automake supports an @code{include} directive that  can be used to
9623 include other @file{Makefile} fragments when @command{automake} is run.
9624 Note that these fragments are read and interpreted by @command{automake},
9625 not by @command{make}.  As with conditionals, @command{make} has no idea that
9626 @code{include} is in use.
9628 There are two forms of @code{include}:
9630 @table @code
9631 @item include $(srcdir)/file
9632 Include a fragment that is found relative to the current source
9633 directory.
9635 @item include $(top_srcdir)/file
9636 Include a fragment that is found relative to the top source directory.
9637 @end table
9639 Note that if a fragment is included inside a conditional, then the
9640 condition applies to the entire contents of that fragment.
9642 Makefile fragments included this way are always distributed because
9643 they are needed to rebuild @file{Makefile.in}.
9645 @node Conditionals
9646 @chapter Conditionals
9648 @cindex Conditionals
9650 Automake supports a simple type of conditionals.
9652 These conditionals are not the same as conditionals in
9653 GNU Make.  Automake conditionals are checked at configure time by the
9654 @file{configure} script, and affect the translation from
9655 @file{Makefile.in} to @file{Makefile}.  They are based on options passed
9656 to @file{configure} and on results that @file{configure} has discovered
9657 about the host system.  GNU Make conditionals are checked at @command{make}
9658 time, and are based on variables passed to the make program or defined
9659 in the @file{Makefile}.
9661 Automake conditionals will work with any make program.
9663 @menu
9664 * Usage of Conditionals::       Declaring conditional content
9665 * Limits of Conditionals::      Enclosing complete statements
9666 @end menu
9668 @node Usage of Conditionals
9669 @section Usage of Conditionals
9671 @acindex AM_CONDITIONAL
9672 Before using a conditional, you must define it by using
9673 @code{AM_CONDITIONAL} in the @file{configure.ac} file (@pxref{Macros}).
9675 @defmac AM_CONDITIONAL (@var{conditional}, @var{condition})
9676 The conditional name, @var{conditional}, should be a simple string
9677 starting with a letter and containing only letters, digits, and
9678 underscores.  It must be different from @samp{TRUE} and @samp{FALSE}
9679 that are reserved by Automake.
9681 The shell @var{condition} (suitable for use in a shell @code{if}
9682 statement) is evaluated when @command{configure} is run.  Note that you
9683 must arrange for @emph{every} @code{AM_CONDITIONAL} to be invoked every
9684 time @command{configure} is run.  If @code{AM_CONDITIONAL} is run
9685 conditionally (e.g., in a shell @code{if} statement), then the result
9686 will confuse @command{automake}.
9687 @end defmac
9689 @cindex @option{--enable-debug}, example
9690 @cindex Example conditional @option{--enable-debug}
9691 @cindex Conditional example, @option{--enable-debug}
9693 Conditionals typically depend upon options that the user provides to
9694 the @command{configure} script.  Here is an example of how to write a
9695 conditional that is true if the user uses the @option{--enable-debug}
9696 option.
9698 @example
9699 AC_ARG_ENABLE([debug],
9700 [  --enable-debug    Turn on debugging],
9701 [case "$@{enableval@}" in
9702   yes) debug=true ;;
9703   no)  debug=false ;;
9704   *) AC_MSG_ERROR([bad value $@{enableval@} for --enable-debug]) ;;
9705 esac],[debug=false])
9706 AM_CONDITIONAL([DEBUG], [test x$debug = xtrue])
9707 @end example
9709 Here is an example of how to use that conditional in @file{Makefile.am}:
9711 @cmindex if
9712 @cmindex endif
9713 @cmindex else
9715 @example
9716 if DEBUG
9717 DBG = debug
9718 else
9719 DBG =
9720 endif
9721 noinst_PROGRAMS = $(DBG)
9722 @end example
9724 This trivial example could also be handled using @code{EXTRA_PROGRAMS}
9725 (@pxref{Conditional Programs}).
9727 You may only test a single variable in an @code{if} statement, possibly
9728 negated using @samp{!}.  The @code{else} statement may be omitted.
9729 Conditionals may be nested to any depth.  You may specify an argument to
9730 @code{else} in which case it must be the negation of the condition used
9731 for the current @code{if}.  Similarly you may specify the condition
9732 that is closed on the @code{endif} line:
9734 @example
9735 if DEBUG
9736 DBG = debug
9737 else !DEBUG
9738 DBG =
9739 endif !DEBUG
9740 @end example
9742 @noindent
9743 Unbalanced conditions are errors.  The @code{if}, @code{else}, and
9744 @code{endif} statements should not be indented, i.e., start on column
9745 one.
9747 The @code{else} branch of the above two examples could be omitted,
9748 since assigning the empty string to an otherwise undefined variable
9749 makes no difference.
9751 @acindex AM_COND_IF
9752 In order to allow access to the condition registered by
9753 @code{AM_CONDITIONAL} inside @file{configure.ac}, and to allow
9754 conditional @code{AC_CONFIG_FILES}, @code{AM_COND_IF} may be used:
9756 @defmac AM_COND_IF (@var{conditional}, @ovar{if-true}, @ovar{if-false})
9757 If @var{conditional} is fulfilled, execute @var{if-true}, otherwise
9758 execute @var{if-false}.  If either branch contains @code{AC_CONFIG_FILES},
9759 it will cause @command{automake} to output the rules for the respective
9760 files only for the given condition.
9761 @end defmac
9763 @code{AM_COND_IF} macros may be nested when m4 quotation is used
9764 properly (@pxref{M4 Quotation, ,, autoconf, The Autoconf Manual}).
9766 @cindex Example conditional @code{AC_CONFIG_FILES}
9767 @cindex @code{AC_CONFIG_FILES}, conditional
9769 Here is an example of how to define a conditional config file:
9771 @example
9772 AM_CONDITIONAL([SHELL_WRAPPER], [test "x$with_wrapper" = xtrue])
9773 AM_COND_IF([SHELL_WRAPPER],
9774            [AC_CONFIG_FILES([wrapper:wrapper.in])])
9775 @end example
9777 @node Limits of Conditionals
9778 @section Limits of Conditionals
9780 Conditionals should enclose complete statements like variables or
9781 rules definitions.  Automake cannot deal with conditionals used inside
9782 a variable definition, for instance, and is not even able to diagnose
9783 this situation.  The following example would not work:
9785 @example
9786 # This syntax is not understood by Automake
9787 AM_CPPFLAGS = \
9788   -DFEATURE_A \
9789 if WANT_DEBUG
9790   -DDEBUG \
9791 endif
9792   -DFEATURE_B
9793 @end example
9795 However the intended definition of @code{AM_CPPFLAGS} can be achieved
9796 with
9798 @example
9799 if WANT_DEBUG
9800   DEBUGFLAGS = -DDEBUG
9801 endif
9802 AM_CPPFLAGS = -DFEATURE_A $(DEBUGFLAGS) -DFEATURE_B
9803 @end example
9805 @noindent
9808 @example
9809 AM_CPPFLAGS = -DFEATURE_A
9810 if WANT_DEBUG
9811 AM_CPPFLAGS += -DDEBUG
9812 endif
9813 AM_CPPFLAGS += -DFEATURE_B
9814 @end example
9816 More details and examples of conditionals are described alongside
9817 various Automake features in this manual (@pxref{Conditional
9818 Subdirectories}, @pxref{Conditional Sources}, @pxref{Conditional
9819 Programs}, @pxref{Conditional Libtool Libraries}, @pxref{Conditional
9820 Libtool Sources}).
9822 @node Silencing Make
9823 @chapter Silencing @command{make}
9825 @cindex Silent @command{make}
9826 @cindex Silencing @command{make}
9827 @cindex Silent rules
9828 @cindex Silent @command{make} rules
9830 @menu
9831 * Make verbosity::               Make is verbose by default
9832 * Tricks For Silencing Make::    Standard and generic ways to silence make
9833 * Automake silent-rules Option:: How Automake can help in silencing make
9834 @end menu
9836 @node Make verbosity
9837 @section Make is verbose by default
9839 Normally, when executing the set of rules associated with a target,
9840 @command{make} prints each rule before it is executed.  This behaviour,
9841 while having been in place for a long time, and being even mandated by
9842 the POSIX standard, starkly violates the ``silence is golden'' UNIX
9843 principle@footnote{See also
9844 @uref{http://catb.org/~esr/writings/taoup/html/ch11s09.html}.}:
9846 @quotation
9847 When a program has nothing interesting or surprising to say, it should
9848 say nothing.  Well-behaved Unix programs do their jobs unobtrusively,
9849 with a minimum of fuss and bother.  Silence is golden.
9850 @end quotation
9852 In fact, while such verbosity of @command{make} can theoretically be
9853 useful to track bugs and understand reasons of failures right away, it
9854 can also hide warning and error messages from @command{make}-invoked
9855 tools, drowning them in a flood of uninteresting and seldom useful
9856 messages, and thus allowing them to go easily undetected.
9858 This problem can be very annoying, especially for developers, who usually
9859 know quite well what's going on behind the scenes, and for whom the
9860 verbose output from @command{make} ends up being mostly noise that hampers
9861 the easy detection of potentially important warning messages.
9863 @node Tricks For Silencing Make
9864 @section Standard and generic ways to silence make
9866 Here we describe some common idioms/tricks to obtain a quieter make
9867 output, with their relative advantages and drawbacks.  In the next
9868 section (@ref{Automake silent-rules Option}) we'll see how Automake
9869 can help in this respect.
9871 @itemize @bullet
9873 @item @command{make -s}
9875 This simply causes @command{make} not to print @emph{any} rule before
9876 executing it.
9878 The @option{-s} flag is mandated by POSIX, universally supported, and
9879 its purpose and function are easy to understand.
9881 But it also has its serious limitations too.  First of all, it embodies
9882 an ``all or nothing'' strategy, i.e., either everything is silenced, or
9883 nothing is; this lack of granularity can sometimes be a fatal flaw.
9884 Moreover, when the @option{-s} flag is used, the @command{make} output
9885 might turn out to be too much terse; in case of errors, the user won't
9886 be able to easily see what rule or command have caused them, or even,
9887 in case of tools with poor error reporting, what the errors were!
9889 @item @command{make >/dev/null || make}
9891 Apparently, this perfectly obeys the ``silence is golden'' rule: warnings
9892 from stderr are passed through, output reporting is done only in case of
9893 error, and in that case it should provide a verbose-enough report to allow
9894 an easy determination of the error location and causes.
9896 However, calling @command{make} two times in a row might hide errors
9897 (especially intermittent ones), or subtly change the expected semantic
9898 of the @command{make} calls --- things these which can clearly make
9899 debugging and error assessment very difficult.
9901 @item @command{make --no-print-directory}
9903 This is GNU @command{make} specific.  When called with the
9904 @option{--no-print-directory} option, GNU @command{make} will disable
9905 printing of the working directory by invoked sub-@command{make}s (the
9906 well-known ``@i{Entering/Leaving directory ...}'' messages).  This helps
9907 to decrease the verbosity of the output, but experience has shown that
9908 it can also often render debugging considerably harder in projects using
9909 deeply-nested @command{make} recursion.
9911 As an aside, notice that the @option{--no-print-directory} option is
9912 automatically activated if the @option{-s} flag is used.
9914 @c TODO: Other tricks?
9915 @c TODO: Maybe speak about the @code{.SILENT} target?
9916 @c TODO:  - Pros: More granularity on what to silence.
9917 @c TODO:  - Cons: No easy way to temporarily override.
9919 @end itemize
9921 @node Automake silent-rules Option
9922 @section How Automake can help in silencing make
9924 The tricks and idioms for silencing @command{make} described in the
9925 previous section can be useful from time to time, but we've seen that
9926 they all have their serious drawbacks and limitations.  That's why
9927 automake provides support for a more advanced and flexible way of
9928 obtaining quieter output from @command{make}: the @option{silent-rules}
9929 mode.
9931 @c TODO: Maybe describe in brief the precedent set by the build system
9932 @c of the Linux Kernel, from which Automake took inspiration ... Links?
9934 To give the gist of what @option{silent-rules} can do, here is a simple
9935 comparison between a typical @command{make} output (where silent rules
9936 are disabled) and one with silent rules enabled:
9938 @example
9939 % @kbd{cat Makefile.am}
9940 bin_PROGRAMS = foo
9941 foo_SOURCES = main.c func.c
9942 % @kbd{cat main.c}
9943 int main (void) @{ return func (); @}  /* func used undeclared */
9944 % @kbd{cat func.c}
9945 int func (void) @{ int i; return i; @} /* i used uninitialized */
9947 @i{The make output is by default very verbose.  This causes warnings
9948 from the compiler to be somewhat hidden, and not immediate to spot.}
9949 % @kbd{make CFLAGS=-Wall}
9950 gcc -DPACKAGE_NAME=\"foo\" -DPACKAGE_TARNAME=\"foo\" ...
9951 -DPACKAGE_STRING=\"foo\ 1.0\" -DPACKAGE_BUGREPORT=\"\" ...
9952 -DPACKAGE=\"foo\" -DVERSION=\"1.0\" -I. -Wall -MT main.o
9953 -MD -MP -MF .deps/main.Tpo -c -o main.o main.c
9954 main.c: In function â€˜main’:
9955 main.c:3:3: warning: implicit declaration of function â€˜func’
9956 mv -f .deps/main.Tpo .deps/main.Po
9957 gcc -DPACKAGE_NAME=\"foo\" -DPACKAGE_TARNAME=\"foo\" ...
9958 -DPACKAGE_STRING=\"foo\ 1.0\" -DPACKAGE_BUGREPORT=\"\" ...
9959 -DPACKAGE=\"foo\" -DVERSION=\"1.0\" -I. -Wall -MT func.o
9960 -MD -MP -MF .deps/func.Tpo -c -o func.o func.c
9961 func.c: In function â€˜func’:
9962 func.c:4:3: warning: â€˜i’ used uninitialized in this function
9963 mv -f .deps/func.Tpo .deps/func.Po
9964 gcc -Wall -o foo main.o func.o
9966 @i{Clean up, so that we we can rebuild everything from scratch.}
9967 % @kbd{make clean}
9968 test -z "foo" || rm -f foo
9969 rm -f *.o
9971 @i{Silent rules enabled: the output is minimal but informative.  In
9972 particular, the warnings from the compiler stick out very clearly.}
9973 % @kbd{make V=0 CFLAGS=-Wall}
9974   CC     main.o
9975 main.c: In function â€˜main’:
9976 main.c:3:3: warning: implicit declaration of function â€˜func’
9977   CC     func.o
9978 func.c: In function â€˜func’:
9979 func.c:4:3: warning: â€˜i’ used uninitialized in this function
9980   CCLD   foo
9981 @end example
9983 @cindex silent-rules and libtool
9984 Also, in projects using @command{libtool}, the use of silent rules can
9985 automatically enable the @command{libtool}'s @option{--silent} option:
9987 @example
9988 % @kbd{cat Makefile.am}
9989 lib_LTLIBRARIES = libx.la
9991 % @kbd{make # Both make and libtool are verbose by default.}
9993 libtool: compile: gcc -DPACKAGE_NAME=\"foo\" ... -DLT_OBJDIR=\".libs/\"
9994   -I. -g -O2 -MT libx.lo -MD -MP -MF .deps/libx.Tpo -c libx.c -fPIC
9995   -DPIC -o .libs/libx.o
9996 mv -f .deps/libx.Tpo .deps/libx.Plo
9997 /bin/sh ./libtool --tag=CC --mode=link gcc -g -O2 -o libx.la -rpath
9998   /usr/local/lib libx.lo
9999 libtool: link: gcc -shared .libs/libx.o -Wl,-soname -Wl,libx.so.0
10000   -o .libs/libx.so.0.0.0
10001 libtool: link: cd .libs && rm -f libx.so && ln -s libx.so.0.0.0 libx.so
10004 % @kbd{make V=0}
10005   CC     libx.lo
10006   CCLD   libx.la
10007 @end example
10009 Let's now see how the @option{silent-rules} mode interfaces with the
10010 package developer and the package user.
10012 To enable the use of @option{silent-rules} in his package, a developer
10013 needs to do either of the following:
10015 @itemize @bullet
10016 @item
10017 Add the @option{silent-rules} option as argument to @code{AM_INIT_AUTOMAKE}.
10018 @item
10019 Call the @code{AM_SILENT_RULES} macro from within the @file{configure.ac}
10020 file.
10021 @end itemize
10023 It is not possible to instead specify @option{silent-rules} in a
10024 @file{Makefile.am} file.
10026 If the developer has done either of the above, then the user of the
10027 package may influence the verbosity at @command{configure} run time as
10028 well as at @command{make} run time:
10030 @itemize @bullet
10031 @item
10032 @opindex --enable-silent-rules
10033 @opindex --disable-silent-rules
10034 Passing @option{--enable-silent-rules} to @command{configure} will cause
10035 build rules to be less verbose; the option @option{--disable-silent-rules}
10036 will cause normal verbose output.
10037 @item
10038 @vindex @code{V}
10039 At @command{make} run time, the default chosen at @command{configure}
10040 time may be overridden: @code{make V=1} will produce verbose output,
10041 @code{make V=0} less verbose output.
10042 @end itemize
10044 @cindex default verbosity for silent-rules
10045 Note that silent rules are @emph{disabled} by default; the user must
10046 enable them explicitly at either @command{configure} run time or at
10047 @command{make} run time.  We think that this is a good policy, since
10048 it provides the casual user with enough information to prepare a good
10049 bug report in case anything breaks.
10051 Still, notwithstanding the rationales above, a developer who wants to
10052 make silent rules enabled by default in his own package can do so by
10053 adding a @samp{yes} argument to the @code{AM_SILENT_RULES} call in
10054 @file{configure.ac}.  We advise against this approach, though.
10056 @c Keep in sync with silent-configsite.test
10057 Users who prefer to have silent rules enabled by default can edit their
10058 @file{config.site} file to make the variable @code{enable_silent_rules}
10059 default to @samp{yes}.  This should still allow disabling silent rules
10060 at @command{configure} time and at @command{make} time.
10062 @c FIXME: there's really a need to specify this explicitly?
10063 For portability to different @command{make} implementations, package authors
10064 are advised to not set the variable @code{V} inside the @file{Makefile.am}
10065 file, to allow the user to override the value for subdirectories as well.
10067 The current implementation of this feature relies on a non-POSIX, but in
10068 practice rather widely supported @file{Makefile} construct of nested
10069 variable expansion @samp{$(@var{var1}$(V))}.  Do not use the
10070 @option{silent-rules} option if your package needs to build with
10071 @command{make} implementations that do not support it.  The
10072 @option{silent-rules} option turns off warnings about recursive variable
10073 expansion, which are in turn enabled by @option{-Wportability}
10074 (@pxref{Invoking Automake}).
10076 @vindex @code{AM_V_GEN}
10077 @vindex @code{AM_V_at}
10078 @vindex @code{AM_DEFAULT_VERBOSITY}
10079 To extend the silent mode to your own rules, you have two choices:
10081 @itemize @bullet
10082 @item
10083 You can use the predefined variable @code{AM_V_GEN} as a prefix to
10084 commands that should output a status line in silent mode, and
10085 @code{AM_V_at} as a prefix to commands that should not output anything
10086 in silent mode.  When output is to be verbose, both of these variables
10087 will expand to the empty string.
10088 @item
10089 You can add your own variables, so strings of your own choice are shown.
10090 The following snippet shows how you would define your own equivalent of
10091 @code{AM_V_GEN}:
10093 @example
10094 pkg_verbose = $(pkg_verbose_$(V))
10095 pkg_verbose_ = $(pkg_verbose_$(AM_DEFAULT_VERBOSITY))
10096 pkg_verbose_0 = @@echo PKG-GEN $@@;
10098 foo: foo.in
10099         $(pkg_verbose)cp $(srcdir)/foo.in $@@
10100 @end example
10102 @end itemize
10104 As a final note, observe that, even when silent rules are enabled,
10105 the @option{--no-print-directory} option is still required with GNU
10106 @command{make} if the ``@i{Entering/Leaving directory ...}'' messages
10107 are to be disabled.
10109 @node Gnits
10110 @chapter The effect of @option{--gnu} and @option{--gnits}
10112 @cindex @option{--gnu}, required files
10113 @cindex @option{--gnu}, complete description
10115 The @option{--gnu} option (or @option{gnu} in the
10116 @code{AUTOMAKE_OPTIONS} variable) causes @command{automake} to check
10117 the following:
10119 @itemize @bullet
10120 @item
10121 The files @file{INSTALL}, @file{NEWS}, @file{README}, @file{AUTHORS},
10122 and @file{ChangeLog}, plus one of @file{COPYING.LIB}, @file{COPYING.LESSER}
10123 or @file{COPYING}, are required at the topmost directory of the package.
10125 If the @option{--add-missing} option is given, @command{automake} will
10126 add a generic version of the @file{INSTALL} file as well as the
10127 @file{COPYING} file containing the text of the current version of the
10128 GNU General Public License existing at the time of this Automake release
10129 (version 3 as this is written, @uref{http://www.gnu.org/@/copyleft/@/gpl.html}).
10130 However, an existing @file{COPYING} file will never be overwritten by
10131 @command{automake}.
10133 @item
10134 The options @option{no-installman} and @option{no-installinfo} are
10135 prohibited.
10136 @end itemize
10138 Note that this option will be extended in the future to do even more
10139 checking; it is advisable to be familiar with the precise requirements
10140 of the GNU standards.  Also, @option{--gnu} can require certain
10141 non-standard GNU programs to exist for use by various maintainer-only
10142 rules; for instance, in the future @command{pathchk} might be required for
10143 @samp{make dist}.
10145 @cindex @option{--gnits}, complete description
10147 The @option{--gnits} option does everything that @option{--gnu} does, and
10148 checks the following as well:
10150 @itemize @bullet
10151 @item
10152 @samp{make installcheck} will check to make sure that the @option{--help}
10153 and @option{--version} really print a usage message and a version string,
10154 respectively.  This is the @option{std-options} option (@pxref{Options}).
10156 @item
10157 @samp{make dist} will check to make sure the @file{NEWS} file has been
10158 updated to the current version.
10160 @item
10161 @code{VERSION} is checked to make sure its format complies with Gnits
10162 standards.
10163 @c FIXME xref when standards are finished
10165 @item
10166 @cindex @file{README-alpha}
10167 If @code{VERSION} indicates that this is an alpha release, and the file
10168 @file{README-alpha} appears in the topmost directory of a package, then
10169 it is included in the distribution.  This is done in @option{--gnits}
10170 mode, and no other, because this mode is the only one where version
10171 number formats are constrained, and hence the only mode where Automake
10172 can automatically determine whether @file{README-alpha} should be
10173 included.
10175 @item
10176 The file @file{THANKS} is required.
10177 @end itemize
10180 @node Cygnus
10181 @chapter The effect of @option{--cygnus}
10183 @cindex @option{cygnus} strictness
10185 Some packages, notably GNU GCC and GNU gdb, have a build environment
10186 originally written at Cygnus Support (subsequently renamed Cygnus
10187 Solutions, and then later purchased by Red Hat).  Packages with this
10188 ancestry are sometimes referred to as ``Cygnus'' trees.
10190 A Cygnus tree has slightly different rules for how a
10191 @file{Makefile.in} is to be constructed.  Passing @option{--cygnus} to
10192 @command{automake} will cause any generated @file{Makefile.in} to
10193 comply with Cygnus rules.
10195 Here are the precise effects of @option{--cygnus}:
10197 @itemize @bullet
10198 @item
10199 Info files are always created in the build directory, and not in the
10200 source directory.
10202 @item
10203 @file{texinfo.tex} is not required if a Texinfo source file is
10204 specified.  The assumption is that the file will be supplied, but in a
10205 place that Automake cannot find.  This assumption is an artifact of how
10206 Cygnus packages are typically bundled.
10208 @item
10209 @samp{make dist} is not supported, and the rules for it are not
10210 generated.  Cygnus-style trees use their own distribution mechanism.
10212 @item
10213 Certain tools will be searched for in the build tree as well as in the
10214 user's @env{PATH}.  These tools are @command{runtest}, @command{expect},
10215 @command{makeinfo} and @command{texi2dvi}.
10217 @item
10218 @option{--foreign} is implied.
10220 @item
10221 The options @option{no-installinfo} and @option{no-dependencies} are
10222 implied.
10224 @item
10225 The macro @code{AM_MAINTAINER_MODE} is required.
10227 @item
10228 The @code{check} target doesn't depend on @code{all}.
10229 @end itemize
10231 GNU maintainers are advised to use @option{gnu} strictness in preference
10232 to the special Cygnus mode.  Some day, perhaps, the differences between
10233 Cygnus trees and GNU trees will disappear (for instance, as GCC is made
10234 more standards compliant).  At that time the special Cygnus mode will be
10235 removed.
10238 @node Not Enough
10239 @chapter When Automake Isn't Enough
10241 In some situations, where Automake is not up to one task, one has to
10242 resort to handwritten rules or even handwritten @file{Makefile}s.
10244 @menu
10245 * Extending::                   Adding new rules or overriding existing ones.
10246 * Third-Party Makefiles::       Integrating Non-Automake @file{Makefile}s.
10247 @end menu
10249 @node Extending
10250 @section Extending Automake Rules
10252 With some minor exceptions (for example @code{_PROGRAMS} variables,
10253 @code{TESTS}, or @code{XFAIL_TESTS}) being rewritten to append
10254 @samp{$(EXEEXT)}), the contents of a @file{Makefile.am} is copied to
10255 @file{Makefile.in} verbatim.
10257 @cindex copying semantics
10259 These copying semantics mean that many problems can be worked around
10260 by simply adding some @command{make} variables and rules to
10261 @file{Makefile.am}.  Automake will ignore these additions.
10263 @cindex conflicting definitions
10264 @cindex rules, conflicting
10265 @cindex variables, conflicting
10266 @cindex definitions, conflicts
10268 Since a @file{Makefile.in} is built from data gathered from three
10269 different places (@file{Makefile.am}, @file{configure.ac}, and
10270 @command{automake} itself), it is possible to have conflicting
10271 definitions of rules or variables.  When building @file{Makefile.in}
10272 the following priorities are respected by @command{automake} to ensure
10273 the user always has the last word:
10275 @itemize
10276 @item
10277 User defined variables in @file{Makefile.am} have priority over
10278 variables @code{AC_SUBST}ed from @file{configure.ac}, and
10279 @code{AC_SUBST}ed variables have priority over
10280 @command{automake}-defined variables.
10281 @item
10282 As far as rules are concerned, a user-defined rule overrides any
10283 @command{automake}-defined rule for the same target.
10284 @end itemize
10286 @cindex overriding rules
10287 @cindex overriding semantics
10288 @cindex rules, overriding
10290 These overriding semantics make it possible to fine tune some default
10291 settings of Automake, or replace some of its rules.  Overriding
10292 Automake rules is often inadvisable, particularly in the topmost
10293 directory of a package with subdirectories.  The @option{-Woverride}
10294 option (@pxref{Invoking Automake}) comes in handy to catch overridden
10295 definitions.
10297 Note that Automake does not make any distinction between rules with
10298 commands and rules that only specify dependencies.  So it is not
10299 possible to append new dependencies to an @command{automake}-defined
10300 target without redefining the entire rule.
10302 @cindex @option{-local} targets
10303 @cindex local targets
10305 However, various useful targets have a @samp{-local} version you can
10306 specify in your @file{Makefile.am}.  Automake will supplement the
10307 standard target with these user-supplied targets.
10309 @trindex  all
10310 @trindex  all-local
10311 @trindex  info
10312 @trindex  info-local
10313 @trindex  dvi
10314 @trindex  dvi-local
10315 @trindex  ps
10316 @trindex  ps-local
10317 @trindex  pdf
10318 @trindex  pdf-local
10319 @trindex  html
10320 @trindex  html-local
10321 @trindex  check
10322 @trindex  check-local
10323 @trindex  install
10324 @trindex  install-data
10325 @trindex  install-data-local
10326 @trindex  install-dvi
10327 @trindex  install-dvi-local
10328 @trindex  install-exec
10329 @trindex  install-exec-local
10330 @trindex  install-html
10331 @trindex  install-html-local
10332 @trindex  install-info
10333 @trindex  install-info-local
10334 @trindex  install-pdf
10335 @trindex  install-pdf-local
10336 @trindex  install-ps
10337 @trindex  install-ps-local
10338 @trindex  uninstall
10339 @trindex  uninstall-local
10340 @trindex  mostlyclean
10341 @trindex  mostlyclean-local
10342 @trindex  clean
10343 @trindex  clean-local
10344 @trindex  distclean
10345 @trindex  distclean-local
10346 @trindex  installdirs
10347 @trindex  installdirs-local
10348 @trindex  installcheck
10349 @trindex  installcheck-local
10351 The targets that support a local version are @code{all}, @code{info},
10352 @code{dvi}, @code{ps}, @code{pdf}, @code{html}, @code{check},
10353 @code{install-data}, @code{install-dvi}, @code{install-exec},
10354 @code{install-html}, @code{install-info}, @code{install-pdf},
10355 @code{install-ps}, @code{uninstall}, @code{installdirs},
10356 @code{installcheck} and the various @code{clean} targets
10357 (@code{mostlyclean}, @code{clean}, @code{distclean}, and
10358 @code{maintainer-clean}).
10360 Note that there are no @code{uninstall-exec-local} or
10361 @code{uninstall-data-local} targets; just use @code{uninstall-local}.
10362 It doesn't make sense to uninstall just data or just executables.
10364 For instance, here is one way to erase a subdirectory during
10365 @samp{make clean} (@pxref{Clean}).
10367 @example
10368 clean-local:
10369         -rm -rf testSubDir
10370 @end example
10372 You may be tempted to use @code{install-data-local} to install a file
10373 to some hard-coded location, but you should avoid this
10374 (@pxref{Hard-Coded Install Paths}).
10376 With the @code{-local} targets, there is no particular guarantee of
10377 execution order; typically, they are run early, but with parallel
10378 make, there is no way to be sure of that.
10380 @cindex @option{-hook} targets
10381 @cindex hook targets
10382 @trindex install-data-hook
10383 @trindex install-exec-hook
10384 @trindex uninstall-hook
10385 @trindex dist-hook
10387 In contrast, some rules also have a way to run another rule, called a
10388 @dfn{hook}; hooks are always executed after the main rule's work is done.
10389 The hook is named after the principal target, with @samp{-hook} appended.
10390 The targets allowing hooks are @code{install-data},
10391 @code{install-exec}, @code{uninstall}, @code{dist}, and
10392 @code{distcheck}.
10394 For instance, here is how to create a hard link to an installed program:
10396 @example
10397 install-exec-hook:
10398         ln $(DESTDIR)$(bindir)/program$(EXEEXT) \
10399            $(DESTDIR)$(bindir)/proglink$(EXEEXT)
10400 @end example
10402 Although cheaper and more portable than symbolic links, hard links
10403 will not work everywhere (for instance, OS/2 does not have
10404 @command{ln}).  Ideally you should fall back to @samp{cp -p} when
10405 @command{ln} does not work.  An easy way, if symbolic links are
10406 acceptable to you, is to add @code{AC_PROG_LN_S} to
10407 @file{configure.ac} (@pxref{Particular Programs, , Particular Program
10408 Checks, autoconf, The Autoconf Manual}) and use @samp{$(LN_S)} in
10409 @file{Makefile.am}.
10411 @cindex versioned binaries, installing
10412 @cindex installing versioned binaries
10413 @cindex @code{LN_S} example
10414 For instance, here is how you could install a versioned copy of a
10415 program using @samp{$(LN_S)}:
10417 @c Keep in sync with insthook.test
10418 @example
10419 install-exec-hook:
10420         cd $(DESTDIR)$(bindir) && \
10421           mv -f prog$(EXEEXT) prog-$(VERSION)$(EXEEXT) && \
10422           $(LN_S) prog-$(VERSION)$(EXEEXT) prog$(EXEEXT)
10423 @end example
10425 Note that we rename the program so that a new version will erase the
10426 symbolic link, not the real binary.  Also we @command{cd} into the
10427 destination directory in order to create relative links.
10429 When writing @code{install-exec-hook} or @code{install-data-hook},
10430 please bear in mind that the exec/data distinction is based on the
10431 installation directory, not on the primary used (@pxref{The Two Parts of
10432 Install}).
10433 @c Keep in sync with primary-prefix-couples-documented-valid.test.
10434 So a @code{foo_SCRIPTS} will be installed by
10435 @code{install-data}, and a @code{barexec_SCRIPTS} will be installed by
10436 @code{install-exec}.  You should define your hooks consequently.
10438 @c FIXME should include discussion of variables you can use in these
10439 @c rules
10441 @node Third-Party Makefiles
10442 @section Third-Party @file{Makefile}s
10444 @cindex Third-party packages, interfacing with
10445 @cindex Interfacing with third-party packages
10447 In most projects all @file{Makefile}s are generated by Automake.  In
10448 some cases, however, projects need to embed subdirectories with
10449 handwritten @file{Makefile}s.  For instance, one subdirectory could be
10450 a third-party project with its own build system, not using Automake.
10452 It is possible to list arbitrary directories in @code{SUBDIRS} or
10453 @code{DIST_SUBDIRS} provided each of these directories has a
10454 @file{Makefile} that recognizes all the following recursive targets.
10456 @cindex recursive targets and third-party @file{Makefile}s
10457 When a user runs one of these targets, that target is run recursively
10458 in all subdirectories.  This is why it is important that even
10459 third-party @file{Makefile}s support them.
10461 @table @code
10462 @item all
10463 Compile the entire package.  This is the default target in
10464 Automake-generated @file{Makefile}s, but it does not need to be the
10465 default in third-party @file{Makefile}s.
10467 @item distdir
10468 @trindex distdir
10469 @vindex distdir
10470 @vindex top_distdir
10471 Copy files to distribute into @samp{$(distdir)}, before a tarball is
10472 constructed.  Of course this target is not required if the
10473 @option{no-dist} option (@pxref{Options}) is used.
10475 The variables @samp{$(top_distdir)} and @samp{$(distdir)}
10476 (@pxref{The dist Hook}) will be passed from the outer package to the subpackage
10477 when the @code{distdir} target is invoked.  These two variables have
10478 been adjusted for the directory that is being recursed into, so they
10479 are ready to use.
10481 @item install
10482 @itemx install-data
10483 @itemx install-exec
10484 @itemx uninstall
10485 Install or uninstall files (@pxref{Install}).
10487 @item install-dvi
10488 @itemx install-html
10489 @itemx install-info
10490 @itemx install-ps
10491 @itemx install-pdf
10492 Install only some specific documentation format (@pxref{Texinfo}).
10494 @item installdirs
10495 Create install directories, but do not install any files.
10497 @item check
10498 @itemx installcheck
10499 Check the package (@pxref{Tests}).
10501 @item mostlyclean
10502 @itemx clean
10503 @itemx distclean
10504 @itemx maintainer-clean
10505 Cleaning rules (@pxref{Clean}).
10507 @item dvi
10508 @itemx pdf
10509 @itemx ps
10510 @itemx info
10511 @itemx html
10512 Build the documentation in various formats (@pxref{Texinfo}).
10514 @item tags
10515 @itemx ctags
10516 Build @file{TAGS} and @file{CTAGS} (@pxref{Tags}).
10517 @end table
10519 If you have ever used Gettext in a project, this is a good example of
10520 how third-party @file{Makefile}s can be used with Automake.  The
10521 @file{Makefile}s @command{gettextize} puts in the @file{po/} and
10522 @file{intl/} directories are handwritten @file{Makefile}s that
10523 implement all these targets.  That way they can be added to
10524 @code{SUBDIRS} in Automake packages.
10526 Directories that are only listed in @code{DIST_SUBDIRS} but not in
10527 @code{SUBDIRS} need only the @code{distclean},
10528 @code{maintainer-clean}, and @code{distdir} rules (@pxref{Conditional
10529 Subdirectories}).
10531 Usually, many of these rules are irrelevant to the third-party
10532 subproject, but they are required for the whole package to work.  It's
10533 OK to have a rule that does nothing, so if you are integrating a
10534 third-party project with no documentation or tag support, you could
10535 simply augment its @file{Makefile} as follows:
10537 @example
10538 EMPTY_AUTOMAKE_TARGETS = dvi pdf ps info html tags ctags
10539 .PHONY: $(EMPTY_AUTOMAKE_TARGETS)
10540 $(EMPTY_AUTOMAKE_TARGETS):
10541 @end example
10543 Another aspect of integrating third-party build systems is whether
10544 they support VPATH builds (@pxref{VPATH Builds}).  Obviously if the
10545 subpackage does not support VPATH builds the whole package will not
10546 support VPATH builds.  This in turns means that @samp{make distcheck}
10547 will not work, because it relies on VPATH builds.  Some people can
10548 live without this (actually, many Automake users have never heard of
10549 @samp{make distcheck}).  Other people may prefer to revamp the
10550 existing @file{Makefile}s to support VPATH@.  Doing so does not
10551 necessarily require Automake, only Autoconf is needed (@pxref{Build
10552 Directories, , Build Directories, autoconf, The Autoconf Manual}).
10553 The necessary substitutions: @samp{@@srcdir@@}, @samp{@@top_srcdir@@},
10554 and @samp{@@top_builddir@@} are defined by @file{configure} when it
10555 processes a @file{Makefile} (@pxref{Preset Output Variables, , Preset
10556 Output Variables, autoconf, The Autoconf Manual}), they are not
10557 computed by the Makefile like the aforementioned @samp{$(distdir)} and
10558 @samp{$(top_distdir)} variables.
10560 It is sometimes inconvenient to modify a third-party @file{Makefile}
10561 to introduce the above required targets.  For instance, one may want to
10562 keep the third-party sources untouched to ease upgrades to new
10563 versions.
10565 @cindex @file{GNUmakefile} including @file{Makefile}
10566 Here are two other ideas.  If GNU make is assumed, one possibility is
10567 to add to that subdirectory a @file{GNUmakefile} that defines the
10568 required targets and includes the third-party @file{Makefile}.  For
10569 this to work in VPATH builds, @file{GNUmakefile} must lie in the build
10570 directory; the easiest way to do this is to write a
10571 @file{GNUmakefile.in} instead, and have it processed with
10572 @code{AC_CONFIG_FILES} from the outer package.  For example if we
10573 assume @file{Makefile} defines all targets except the documentation
10574 targets, and that the @code{check} target is actually called
10575 @code{test}, we could write @file{GNUmakefile} (or
10576 @file{GNUmakefile.in}) like this:
10578 @example
10579 # First, include the real Makefile
10580 include Makefile
10581 # Then, define the other targets needed by Automake Makefiles.
10582 .PHONY: dvi pdf ps info html check
10583 dvi pdf ps info html:
10584 check: test
10585 @end example
10587 @cindex Proxy @file{Makefile} for third-party packages
10588 A similar idea that does not use @code{include} is to write a proxy
10589 @file{Makefile} that dispatches rules to the real @file{Makefile},
10590 either with @samp{$(MAKE) -f Makefile.real $(AM_MAKEFLAGS) target} (if
10591 it's OK to rename the original @file{Makefile}) or with @samp{cd
10592 subdir && $(MAKE) $(AM_MAKEFLAGS) target} (if it's OK to store the
10593 subdirectory project one directory deeper).  The good news is that
10594 this proxy @file{Makefile} can be generated with Automake.  All we
10595 need are @option{-local} targets (@pxref{Extending}) that perform the
10596 dispatch.  Of course the other Automake features are available, so you
10597 could decide to let Automake perform distribution or installation.
10598 Here is a possible @file{Makefile.am}:
10600 @example
10601 all-local:
10602         cd subdir && $(MAKE) $(AM_MAKEFLAGS) all
10603 check-local:
10604         cd subdir && $(MAKE) $(AM_MAKEFLAGS) test
10605 clean-local:
10606         cd subdir && $(MAKE) $(AM_MAKEFLAGS) clean
10608 # Assuming the package knows how to install itself
10609 install-data-local:
10610         cd subdir && $(MAKE) $(AM_MAKEFLAGS) install-data
10611 install-exec-local:
10612         cd subdir && $(MAKE) $(AM_MAKEFLAGS) install-exec
10613 uninstall-local:
10614         cd subdir && $(MAKE) $(AM_MAKEFLAGS) uninstall
10616 # Distribute files from here.
10617 EXTRA_DIST = subdir/Makefile subdir/program.c ...
10618 @end example
10620 Pushing this idea to the extreme, it is also possible to ignore the
10621 subproject build system and build everything from this proxy
10622 @file{Makefile.am}.  This might sound very sensible if you need VPATH
10623 builds but the subproject does not support them.
10625 @node Distributing
10626 @chapter Distributing @file{Makefile.in}s
10628 Automake places no restrictions on the distribution of the resulting
10629 @file{Makefile.in}s.  We still encourage software authors to
10630 distribute their work under terms like those of the GPL, but doing so
10631 is not required to use Automake.
10633 Some of the files that can be automatically installed via the
10634 @option{--add-missing} switch do fall under the GPL@.  However, these also
10635 have a special exception allowing you to distribute them with your
10636 package, regardless of the licensing you choose.
10639 @node API Versioning
10640 @chapter Automake API Versioning
10642 New Automake releases usually include bug fixes and new features.
10643 Unfortunately they may also introduce new bugs and incompatibilities.
10644 This makes four reasons why a package may require a particular Automake
10645 version.
10647 Things get worse when maintaining a large tree of packages, each one
10648 requiring a different version of Automake.  In the past, this meant that
10649 any developer (and sometimes users) had to install several versions of
10650 Automake in different places, and switch @samp{$PATH} appropriately for
10651 each package.
10653 Starting with version 1.6, Automake installs versioned binaries.  This
10654 means you can install several versions of Automake in the same
10655 @samp{$prefix}, and can select an arbitrary Automake version by running
10656 @command{automake-1.6} or @command{automake-1.7} without juggling with
10657 @samp{$PATH}.  Furthermore, @file{Makefile}'s generated by Automake 1.6
10658 will use @command{automake-1.6} explicitly in their rebuild rules.
10660 The number @samp{1.6} in @command{automake-1.6} is Automake's API version,
10661 not Automake's version.  If a bug fix release is made, for instance
10662 Automake 1.6.1, the API version will remain 1.6.  This means that a
10663 package that works with Automake 1.6 should also work with 1.6.1; after
10664 all, this is what people expect from bug fix releases.
10666 If your package relies on a feature or a bug fix introduced in
10667 a release, you can pass this version as an option to Automake to ensure
10668 older releases will not be used.  For instance, use this in your
10669 @file{configure.ac}:
10671 @example
10672   AM_INIT_AUTOMAKE([1.6.1])    dnl Require Automake 1.6.1 or better.
10673 @end example
10675 @noindent
10676 or, in a particular @file{Makefile.am}:
10678 @example
10679   AUTOMAKE_OPTIONS = 1.6.1   # Require Automake 1.6.1 or better.
10680 @end example
10682 @noindent
10683 Automake will print an error message if its version is
10684 older than the requested version.
10687 @heading What is in the API
10689 Automake's programming interface is not easy to define.  Basically it
10690 should include at least all @strong{documented} variables and targets
10691 that a @file{Makefile.am} author can use, any behavior associated with
10692 them (e.g., the places where @samp{-hook}'s are run), the command line
10693 interface of @command{automake} and @command{aclocal}, @dots{}
10695 @heading What is not in the API
10697 Every undocumented variable, target, or command line option, is not part
10698 of the API@.  You should avoid using them, as they could change from one
10699 version to the other (even in bug fix releases, if this helps to fix a
10700 bug).
10702 If it turns out you need to use such an undocumented feature, contact
10703 @email{automake@@gnu.org} and try to get it documented and exercised by
10704 the test-suite.
10706 @node Upgrading
10707 @chapter Upgrading a Package to a Newer Automake Version
10709 Automake maintains three kind of files in a package.
10711 @itemize
10712 @item @file{aclocal.m4}
10713 @item @file{Makefile.in}s
10714 @item auxiliary tools like @file{install-sh} or @file{py-compile}
10715 @end itemize
10717 @file{aclocal.m4} is generated by @command{aclocal} and contains some
10718 Automake-supplied M4 macros.  Auxiliary tools are installed by
10719 @samp{automake --add-missing} when needed.  @file{Makefile.in}s are
10720 built from @file{Makefile.am} by @command{automake}, and rely on the
10721 definitions of the M4 macros put in @file{aclocal.m4} as well as the
10722 behavior of the auxiliary tools installed.
10724 Because all these files are closely related, it is important to
10725 regenerate all of them when upgrading to a newer Automake release.
10726 The usual way to do that is
10728 @example
10729 aclocal # with any option needed (such a -I m4)
10730 autoconf
10731 automake --add-missing --force-missing
10732 @end example
10734 @noindent
10735 or more conveniently:
10737 @example
10738 autoreconf -vfi
10739 @end example
10741 The use of @option{--force-missing} ensures that auxiliary tools will be
10742 overridden by new versions (@pxref{Invoking Automake}).
10744 It is important to regenerate all these files each time Automake is
10745 upgraded, even between bug fixes releases.  For instance, it is not
10746 unusual for a bug fix to involve changes to both the rules generated
10747 in @file{Makefile.in} and the supporting M4 macros copied to
10748 @file{aclocal.m4}.
10750 Presently @command{automake} is able to diagnose situations where
10751 @file{aclocal.m4} has been generated with another version of
10752 @command{aclocal}.  However it never checks whether auxiliary scripts
10753 are up-to-date.  In other words, @command{automake} will tell you when
10754 @command{aclocal} needs to be rerun, but it will never diagnose a
10755 missing @option{--force-missing}.
10757 Before upgrading to a new major release, it is a good idea to read the
10758 file @file{NEWS}.  This file lists all changes between releases: new
10759 features, obsolete constructs, known incompatibilities, and
10760 workarounds.
10762 @node FAQ
10763 @chapter Frequently Asked Questions about Automake
10765 This chapter covers some questions that often come up on the mailing
10766 lists.
10768 @menu
10769 * CVS::                         CVS and generated files
10770 * maintainer-mode::             missing and AM_MAINTAINER_MODE
10771 * Wildcards::                   Why doesn't Automake support wildcards?
10772 * Limitations on File Names::   Limitations on source and installed file names
10773 * distcleancheck::              Files left in build directory after distclean
10774 * Flag Variables Ordering::     CFLAGS vs.@: AM_CFLAGS vs.@: mumble_CFLAGS
10775 * Renamed Objects::             Why are object files sometimes renamed?
10776 * Per-Object Flags::            How to simulate per-object flags?
10777 * Multiple Outputs::            Writing rules for tools with many output files
10778 * Hard-Coded Install Paths::    Installing to hard-coded locations
10779 * Debugging Make Rules::        Strategies when things don't work as expected
10780 * Reporting Bugs::              Feedback on bugs and feature requests
10781 @end menu
10783 @node CVS
10784 @section CVS and generated files
10786 @subheading Background: distributed generated Files
10787 @cindex generated files, distributed
10788 @cindex rebuild rules
10790 Packages made with Autoconf and Automake ship with some generated
10791 files like @file{configure} or @file{Makefile.in}.  These files were
10792 generated on the developer's host and are distributed so that
10793 end-users do not have to install the maintainer tools required to
10794 rebuild them.  Other generated files like Lex scanners, Yacc parsers,
10795 or Info documentation, are usually distributed on similar grounds.
10797 Automake outputs rules in @file{Makefile}s to rebuild these files.  For
10798 instance, @command{make} will run @command{autoconf} to rebuild
10799 @file{configure} whenever @file{configure.ac} is changed.  This makes
10800 development safer by ensuring a @file{configure} is never out-of-date
10801 with respect to @file{configure.ac}.
10803 As generated files shipped in packages are up-to-date, and because
10804 @command{tar} preserves times-tamps, these rebuild rules are not
10805 triggered when a user unpacks and builds a package.
10807 @subheading Background: CVS and Timestamps
10808 @cindex timestamps and CVS
10809 @cindex CVS and timestamps
10811 Unless you use CVS keywords (in which case files must be updated at
10812 commit time), CVS preserves timestamp during @samp{cvs commit} and
10813 @samp{cvs import -d} operations.
10815 When you check out a file using @samp{cvs checkout} its timestamp is
10816 set to that of the revision that is being checked out.
10818 However, during @command{cvs update}, files will have the date of the
10819 update, not the original timestamp of this revision.  This is meant to
10820 make sure that @command{make} notices sources files have been updated.
10822 This timestamp shift is troublesome when both sources and generated
10823 files are kept under CVS@.  Because CVS processes files in lexical
10824 order, @file{configure.ac} will appear newer than @file{configure}
10825 after a @command{cvs update} that updates both files, even if
10826 @file{configure} was newer than @file{configure.ac} when it was
10827 checked in.  Calling @command{make} will then trigger a spurious rebuild
10828 of @file{configure}.
10830 @subheading Living with CVS in Autoconfiscated Projects
10831 @cindex CVS and generated files
10832 @cindex generated files and CVS
10834 There are basically two clans amongst maintainers: those who keep all
10835 distributed files under CVS, including generated files, and those who
10836 keep generated files @emph{out} of CVS.
10838 @subsubheading All Files in CVS
10840 @itemize @bullet
10841 @item
10842 The CVS repository contains all distributed files so you know exactly
10843 what is distributed, and you can checkout any prior version entirely.
10845 @item
10846 Maintainers can see how generated files evolve (for instance, you can
10847 see what happens to your @file{Makefile.in}s when you upgrade Automake
10848 and make sure they look OK).
10850 @item
10851 Users do not need the autotools to build a checkout of the project, it
10852 works just like a released tarball.
10854 @item
10855 If users use @command{cvs update} to update their copy, instead of
10856 @command{cvs checkout} to fetch a fresh one, timestamps will be
10857 inaccurate.  Some rebuild rules will be triggered and attempt to
10858 run developer tools such as @command{autoconf} or @command{automake}.
10860 Actually, calls to such tools are all wrapped into a call to the
10861 @command{missing} script discussed later (@pxref{maintainer-mode}).
10862 @command{missing} will take care of fixing the timestamps when these
10863 tools are not installed, so that the build can continue.
10865 @item
10866 In distributed development, developers are likely to have different
10867 version of the maintainer tools installed.  In this case rebuilds
10868 triggered by timestamp lossage will lead to spurious changes
10869 to generated files.  There are several solutions to this:
10871 @itemize
10872 @item
10873 All developers should use the same versions, so that the rebuilt files
10874 are identical to files in CVS@.  (This starts to be difficult when each
10875 project you work on uses different versions.)
10876 @item
10877 Or people use a script to fix the timestamp after a checkout (the GCC
10878 folks have such a script).
10879 @item
10880 Or @file{configure.ac} uses @code{AM_MAINTAINER_MODE}, which will
10881 disable all these rebuild rules by default.  This is further discussed
10882 in @ref{maintainer-mode}.
10883 @end itemize
10885 @item
10886 Although we focused on spurious rebuilds, the converse can also
10887 happen.  CVS's timestamp handling can also let you think an
10888 out-of-date file is up-to-date.
10890 For instance, suppose a developer has modified @file{Makefile.am} and
10891 has rebuilt @file{Makefile.in}, and then decides to do a last-minute
10892 change to @file{Makefile.am} right before checking in both files
10893 (without rebuilding @file{Makefile.in} to account for the change).
10895 This last change to @file{Makefile.am} makes the copy of
10896 @file{Makefile.in} out-of-date.  Since CVS processes files
10897 alphabetically, when another developer @samp{cvs update}s his or her
10898 tree, @file{Makefile.in} will happen to be newer than
10899 @file{Makefile.am}.  This other developer will not see that
10900 @file{Makefile.in} is out-of-date.
10902 @end itemize
10904 @subsubheading Generated Files out of CVS
10906 One way to get CVS and @command{make} working peacefully is to never
10907 store generated files in CVS, i.e., do not CVS-control files that
10908 are @file{Makefile} targets (also called @emph{derived} files).
10910 This way developers are not annoyed by changes to generated files.  It
10911 does not matter if they all have different versions (assuming they are
10912 compatible, of course).  And finally, timestamps are not lost, changes
10913 to sources files can't be missed as in the
10914 @file{Makefile.am}/@file{Makefile.in} example discussed earlier.
10916 The drawback is that the CVS repository is not an exact copy of what
10917 is distributed and that users now need to install various development
10918 tools (maybe even specific versions) before they can build a checkout.
10919 But, after all, CVS's job is versioning, not distribution.
10921 Allowing developers to use different versions of their tools can also
10922 hide bugs during distributed development.  Indeed, developers will be
10923 using (hence testing) their own generated files, instead of the
10924 generated files that will be released actually.  The developer who
10925 prepares the tarball might be using a version of the tool that
10926 produces bogus output (for instance a non-portable C file), something
10927 other developers could have noticed if they weren't using their own
10928 versions of this tool.
10930 @subheading Third-party Files
10931 @cindex CVS and third-party files
10932 @cindex third-party files and CVS
10934 Another class of files not discussed here (because they do not cause
10935 timestamp issues) are files that are shipped with a package, but
10936 maintained elsewhere.  For instance, tools like @command{gettextize}
10937 and @command{autopoint} (from Gettext) or @command{libtoolize} (from
10938 Libtool), will install or update files in your package.
10940 These files, whether they are kept under CVS or not, raise similar
10941 concerns about version mismatch between developers' tools.  The
10942 Gettext manual has a section about this, see @ref{CVS Issues, CVS
10943 Issues, Integrating with CVS, gettext, GNU gettext tools}.
10945 @node maintainer-mode
10946 @section @command{missing} and @code{AM_MAINTAINER_MODE}
10948 @subheading @command{missing}
10949 @cindex @command{missing}, purpose
10951 The @command{missing} script is a wrapper around several maintainer
10952 tools, designed to warn users if a maintainer tool is required but
10953 missing.  Typical maintainer tools are @command{autoconf},
10954 @command{automake}, @command{bison}, etc.  Because file generated by
10955 these tools are shipped with the other sources of a package, these
10956 tools shouldn't be required during a user build and they are not
10957 checked for in @file{configure}.
10959 However, if for some reason a rebuild rule is triggered and involves a
10960 missing tool, @command{missing} will notice it and warn the user.
10961 Besides the warning, when a tool is missing, @command{missing} will
10962 attempt to fix timestamps in a way that allows the build to continue.
10963 For instance, @command{missing} will touch @file{configure} if
10964 @command{autoconf} is not installed.  When all distributed files are
10965 kept under version control, this feature of @command{missing} allows a
10966 user @emph{with no maintainer tools} to build a package off its version
10967 control repository, bypassing any timestamp inconsistency (implied by
10968 e.g.@: @samp{cvs update} or @samp{git clone}).
10970 If the required tool is installed, @command{missing} will run it and
10971 won't attempt to continue after failures.  This is correct during
10972 development: developers love fixing failures.  However, users with
10973 wrong versions of maintainer tools may get an error when the rebuild
10974 rule is spuriously triggered, halting the build.  This failure to let
10975 the build continue is one of the arguments of the
10976 @code{AM_MAINTAINER_MODE} advocates.
10978 @subheading @code{AM_MAINTAINER_MODE}
10979 @cindex @code{AM_MAINTAINER_MODE}, purpose
10980 @acindex AM_MAINTAINER_MODE
10982 @code{AM_MAINTAINER_MODE} allows you to choose whether the so called
10983 "rebuild rules" should be enabled or disabled.  With
10984 @code{AM_MAINTAINER_MODE([enable])}, they are enabled by default,
10985 otherwise they are disabled by default.  In the latter case, if
10986 you have @code{AM_MAINTAINER_MODE} in @file{configure.ac}, and run
10987 @samp{./configure && make}, then @command{make} will *never* attempt to
10988 rebuild @file{configure}, @file{Makefile.in}s, Lex or Yacc outputs, etc.
10989 I.e., this disables build rules for files that are usually distributed
10990 and that users should normally not have to update.
10992 The user can override the default setting by passing either
10993 @samp{--enable-maintainer-mode} or @samp{--disable-maintainer-mode}
10994 to @command{configure}.
10996 People use @code{AM_MAINTAINER_MODE} either because they do not want their
10997 users (or themselves) annoyed by timestamps lossage (@pxref{CVS}), or
10998 because they simply can't stand the rebuild rules and prefer running
10999 maintainer tools explicitly.
11001 @code{AM_MAINTAINER_MODE} also allows you to disable some custom build
11002 rules conditionally.  Some developers use this feature to disable
11003 rules that need exotic tools that users may not have available.
11005 Several years ago Fran@,{c}ois Pinard pointed out several arguments
11006 against this @code{AM_MAINTAINER_MODE} macro.  Most of them relate to
11007 insecurity.  By removing dependencies you get non-dependable builds:
11008 changes to sources files can have no effect on generated files and this
11009 can be very confusing when unnoticed.  He adds that security shouldn't
11010 be reserved to maintainers (what @option{--enable-maintainer-mode}
11011 suggests), on the contrary.  If one user has to modify a
11012 @file{Makefile.am}, then either @file{Makefile.in} should be updated
11013 or a warning should be output (this is what Automake uses
11014 @command{missing} for) but the last thing you want is that nothing
11015 happens and the user doesn't notice it (this is what happens when
11016 rebuild rules are disabled by @code{AM_MAINTAINER_MODE}).
11018 Jim Meyering, the inventor of the @code{AM_MAINTAINER_MODE} macro was
11019 swayed by Fran@,{c}ois's arguments, and got rid of
11020 @code{AM_MAINTAINER_MODE} in all of his packages.
11022 Still many people continue to use @code{AM_MAINTAINER_MODE}, because
11023 it helps them working on projects where all files are kept under version
11024 control, and because @command{missing} isn't enough if you have the
11025 wrong version of the tools.
11028 @node Wildcards
11029 @section Why doesn't Automake support wildcards?
11030 @cindex wildcards
11032 Developers are lazy.  They would often like to use wildcards in
11033 @file{Makefile.am}s, so that they would not need to remember to
11034 update @file{Makefile.am}s every time they add, delete, or rename
11035 a file.
11037 There are several objections to this:
11038 @itemize
11039 @item
11040 When using CVS (or similar) developers need to remember they have to
11041 run @samp{cvs add} or @samp{cvs rm} anyway.  Updating
11042 @file{Makefile.am} accordingly quickly becomes a reflex.
11044 Conversely, if your application doesn't compile
11045 because you forgot to add a file in @file{Makefile.am}, it will help
11046 you remember to @samp{cvs add} it.
11048 @item
11049 Using wildcards makes it easy to distribute files by mistake.  For
11050 instance, some code a developer is experimenting with (a test case,
11051 say) that should not be part of the distribution.
11053 @item
11054 Using wildcards it's easy to omit some files by mistake.  For
11055 instance, one developer creates a new file, uses it in many places,
11056 but forgets to commit it.  Another developer then checks out the
11057 incomplete project and is able to run @samp{make dist} successfully,
11058 even though a file is missing. By listing files, @samp{make dist}
11059 @emph{will} complain.
11061 @item
11062 Wildcards are not portable to some non-GNU @command{make} implementations,
11063 e.g., NetBSD @command{make} will not expand globs such as @samp{*} in
11064 prerequisites of a target.
11066 @item
11067 Finally, it's really hard to @emph{forget} to add a file to
11068 @file{Makefile.am}: files that are not listed in @file{Makefile.am} are
11069 not compiled or installed, so you can't even test them.
11070 @end itemize
11072 Still, these are philosophical objections, and as such you may disagree,
11073 or find enough value in wildcards to dismiss all of them.  Before you
11074 start writing a patch against Automake to teach it about wildcards,
11075 let's see the main technical issue: portability.
11077 Although @samp{$(wildcard ...)} works with GNU @command{make}, it is
11078 not portable to other @command{make} implementations.
11080 The only way Automake could support @command{$(wildcard ...)} is by
11081 expending @command{$(wildcard ...)} when @command{automake} is run.
11082 The resulting @file{Makefile.in}s would be portable since they would
11083 list all files and not use @samp{$(wildcard ...)}.  However that
11084 means developers would need to remember to run @command{automake} each
11085 time they add, delete, or rename files.
11087 Compared to editing @file{Makefile.am}, this is a very small gain.  Sure,
11088 it's easier and faster to type @samp{automake; make} than to type
11089 @samp{emacs Makefile.am; make}.  But nobody bothered enough to write a
11090 patch to add support for this syntax.  Some people use scripts to
11091 generate file lists in @file{Makefile.am} or in separate
11092 @file{Makefile} fragments.
11094 Even if you don't care about portability, and are tempted to use
11095 @samp{$(wildcard ...)} anyway because you target only GNU Make, you
11096 should know there are many places where Automake needs to know exactly
11097 which files should be processed.  As Automake doesn't know how to
11098 expand @samp{$(wildcard ...)}, you cannot use it in these places.
11099 @samp{$(wildcard ...)} is a black box comparable to @code{AC_SUBST}ed
11100 variables as far Automake is concerned.
11102 You can get warnings about @samp{$(wildcard ...}) constructs using the
11103 @option{-Wportability} flag.
11105 @node Limitations on File Names
11106 @section Limitations on File Names
11107 @cindex file names, limitations on
11109 Automake attempts to support all kinds of file names, even those that
11110 contain unusual characters or are unusually long.  However, some
11111 limitations are imposed by the underlying operating system and tools.
11113 Most operating systems prohibit the use of the null byte in file
11114 names, and reserve @samp{/} as a directory separator.  Also, they
11115 require that file names are properly encoded for the user's locale.
11116 Automake is subject to these limits.
11118 Portable packages should limit themselves to POSIX file
11119 names.  These can contain ASCII letters and digits,
11120 @samp{_}, @samp{.}, and @samp{-}.  File names consist of components
11121 separated by @samp{/}.  File name components cannot begin with
11122 @samp{-}.
11124 Portable POSIX file names cannot contain components that exceed a
11125 14-byte limit, but nowadays it's normally safe to assume the
11126 more-generous XOPEN limit of 255 bytes.  POSIX
11127 limits file names to 255 bytes (XOPEN allows 1023 bytes),
11128 but you may want to limit a source tarball to file names of 99 bytes
11129 to avoid interoperability problems with old versions of @command{tar}.
11131 If you depart from these rules (e.g., by using non-ASCII
11132 characters in file names, or by using lengthy file names), your
11133 installers may have problems for reasons unrelated to Automake.
11134 However, if this does not concern you, you should know about the
11135 limitations imposed by Automake itself.  These limitations are
11136 undesirable, but some of them seem to be inherent to underlying tools
11137 like Autoconf, Make, M4, and the shell.  They fall into three
11138 categories: install directories, build directories, and file names.
11140 The following characters:
11142 @example
11143 @r{newline} " # $ ' `
11144 @end example
11146 should not appear in the names of install directories.  For example,
11147 the operand of @command{configure}'s @option{--prefix} option should
11148 not contain these characters.
11150 Build directories suffer the same limitations as install directories,
11151 and in addition should not contain the following characters:
11153 @example
11154 & @@ \
11155 @end example
11157 For example, the full name of the directory containing the source
11158 files should not contain these characters.
11160 Source and installation file names like @file{main.c} are limited even
11161 further: they should conform to the POSIX/XOPEN
11162 rules described above.  In addition, if you plan to port to
11163 non-POSIX environments, you should avoid file names that
11164 differ only in case (e.g., @file{makefile} and @file{Makefile}).
11165 Nowadays it is no longer worth worrying about the 8.3 limits of
11166 DOS file systems.
11168 @node distcleancheck
11169 @section Files left in build directory after distclean
11170 @cindex @code{distclean}, diagnostic
11171 @cindex @samp{make distclean}, diagnostic
11172 @cindex dependencies and distributed files
11173 @trindex distclean
11174 @trindex distcleancheck
11176 This is a diagnostic you might encounter while running @samp{make
11177 distcheck}.
11179 As explained in @ref{Checking the Distribution}, @samp{make distcheck}
11180 attempts to build and check your package for errors like this one.
11182 @samp{make distcheck} will perform a @code{VPATH} build of your
11183 package (@pxref{VPATH Builds}), and then call @samp{make distclean}.
11184 Files left in the build directory after @samp{make distclean} has run
11185 are listed after this error.
11187 This diagnostic really covers two kinds of errors:
11189 @itemize @bullet
11190 @item
11191 files that are forgotten by distclean;
11192 @item
11193 distributed files that are erroneously rebuilt.
11194 @end itemize
11196 The former left-over files are not distributed, so the fix is to mark
11197 them for cleaning (@pxref{Clean}), this is obvious and doesn't deserve
11198 more explanations.
11200 The latter bug is not always easy to understand and fix, so let's
11201 proceed with an example.  Suppose our package contains a program for
11202 which we want to build a man page using @command{help2man}.  GNU
11203 @command{help2man} produces simple manual pages from the @option{--help}
11204 and @option{--version} output of other commands (@pxref{Top, , Overview,
11205 help2man, The Help2man Manual}).  Because we don't want to force our
11206 users to install @command{help2man}, we decide to distribute the
11207 generated man page using the following setup.
11209 @example
11210 # This Makefile.am is bogus.
11211 bin_PROGRAMS = foo
11212 foo_SOURCES = foo.c
11213 dist_man_MANS = foo.1
11215 foo.1: foo$(EXEEXT)
11216         help2man --output=foo.1 ./foo$(EXEEXT)
11217 @end example
11219 This will effectively distribute the man page.  However,
11220 @samp{make distcheck} will fail with:
11222 @example
11223 ERROR: files left in build directory after distclean:
11224 ./foo.1
11225 @end example
11227 Why was @file{foo.1} rebuilt?  Because although distributed,
11228 @file{foo.1} depends on a non-distributed built file:
11229 @file{foo$(EXEEXT)}.  @file{foo$(EXEEXT)} is built by the user, so it
11230 will always appear to be newer than the distributed @file{foo.1}.
11232 @samp{make distcheck} caught an inconsistency in our package.  Our
11233 intent was to distribute @file{foo.1} so users do not need to install
11234 @command{help2man}, however since this rule causes this file to be
11235 always rebuilt, users @emph{do} need @command{help2man}.  Either we
11236 should ensure that @file{foo.1} is not rebuilt by users, or there is
11237 no point in distributing @file{foo.1}.
11239 More generally, the rule is that distributed files should never depend
11240 on non-distributed built files.  If you distribute something
11241 generated, distribute its sources.
11243 One way to fix the above example, while still distributing
11244 @file{foo.1} is to not depend on @file{foo$(EXEEXT)}.  For instance,
11245 assuming @command{foo --version} and @command{foo --help} do not
11246 change unless @file{foo.c} or @file{configure.ac} change, we could
11247 write the following @file{Makefile.am}:
11249 @example
11250 bin_PROGRAMS = foo
11251 foo_SOURCES = foo.c
11252 dist_man_MANS = foo.1
11254 foo.1: foo.c $(top_srcdir)/configure.ac
11255         $(MAKE) $(AM_MAKEFLAGS) foo$(EXEEXT)
11256         help2man --output=foo.1 ./foo$(EXEEXT)
11257 @end example
11259 This way, @file{foo.1} will not get rebuilt every time
11260 @file{foo$(EXEEXT)} changes.  The @command{make} call makes sure
11261 @file{foo$(EXEEXT)} is up-to-date before @command{help2man}.  Another
11262 way to ensure this would be to use separate directories for binaries
11263 and man pages, and set @code{SUBDIRS} so that binaries are built
11264 before man pages.
11266 We could also decide not to distribute @file{foo.1}.  In
11267 this case it's fine to have @file{foo.1} dependent upon
11268 @file{foo$(EXEEXT)}, since both will have to be rebuilt.
11269 However it would be impossible to build the package in a
11270 cross-compilation, because building @file{foo.1} involves
11271 an @emph{execution} of @file{foo$(EXEEXT)}.
11273 Another context where such errors are common is when distributed files
11274 are built by tools that are built by the package.  The pattern is
11275 similar:
11277 @example
11278 distributed-file: built-tools distributed-sources
11279         build-command
11280 @end example
11282 @noindent
11283 should be changed to
11285 @example
11286 distributed-file: distributed-sources
11287         $(MAKE) $(AM_MAKEFLAGS) built-tools
11288         build-command
11289 @end example
11291 @noindent
11292 or you could choose not to distribute @file{distributed-file}, if
11293 cross-compilation does not matter.
11295 The points made through these examples are worth a summary:
11297 @cartouche
11298 @itemize
11299 @item
11300 Distributed files should never depend upon non-distributed built
11301 files.
11302 @item
11303 Distributed files should be distributed with all their dependencies.
11304 @item
11305 If a file is @emph{intended} to be rebuilt by users, then there is no point
11306 in distributing it.
11307 @end itemize
11308 @end cartouche
11310 @vrindex distcleancheck_listfiles
11311 For desperate cases, it's always possible to disable this check by
11312 setting @code{distcleancheck_listfiles} as documented in @ref{Checking
11313 the Distribution}.
11314 Make sure you do understand the reason why @samp{make distcheck}
11315 complains before you do this.  @code{distcleancheck_listfiles} is a
11316 way to @emph{hide} errors, not to fix them.  You can always do better.
11318 @node Flag Variables Ordering
11319 @section Flag Variables Ordering
11320 @cindex Ordering flag variables
11321 @cindex Flag variables, ordering
11323 @display
11324 What is the difference between @code{AM_CFLAGS}, @code{CFLAGS}, and
11325 @code{mumble_CFLAGS}?
11326 @end display
11328 @display
11329 Why does @command{automake} output @code{CPPFLAGS} after
11330 @code{AM_CPPFLAGS} on compile lines?  Shouldn't it be the converse?
11331 @end display
11333 @display
11334 My @file{configure} adds some warning flags into @code{CXXFLAGS}.  In
11335 one @file{Makefile.am} I would like to append a new flag, however if I
11336 put the flag into @code{AM_CXXFLAGS} it is prepended to the other
11337 flags, not appended.
11338 @end display
11340 @subheading Compile Flag Variables
11341 @cindex Flag Variables, Ordering
11342 @cindex Compile Flag Variables
11343 @cindex @code{AM_CCASFLAGS} and @code{CCASFLAGS}
11344 @cindex @code{AM_CFLAGS} and @code{CFLAGS}
11345 @cindex @code{AM_CPPFLAGS} and @code{CPPFLAGS}
11346 @cindex @code{AM_CXXFLAGS} and @code{CXXFLAGS}
11347 @cindex @code{AM_FCFLAGS} and @code{FCFLAGS}
11348 @cindex @code{AM_FFLAGS} and @code{FFLAGS}
11349 @cindex @code{AM_GCJFLAGS} and @code{GCJFLAGS}
11350 @cindex @code{AM_LDFLAGS} and @code{LDFLAGS}
11351 @cindex @code{AM_LFLAGS} and @code{LFLAGS}
11352 @cindex @code{AM_LIBTOOLFLAGS} and @code{LIBTOOLFLAGS}
11353 @cindex @code{AM_OBJCFLAGS} and @code{OBJCFLAGS}
11354 @cindex @code{AM_RFLAGS} and @code{RFLAGS}
11355 @cindex @code{AM_UPCFLAGS} and @code{UPCFLAGS}
11356 @cindex @code{AM_YFLAGS} and @code{YFLAGS}
11357 @cindex @code{CCASFLAGS} and @code{AM_CCASFLAGS}
11358 @cindex @code{CFLAGS} and @code{AM_CFLAGS}
11359 @cindex @code{CPPFLAGS} and @code{AM_CPPFLAGS}
11360 @cindex @code{CXXFLAGS} and @code{AM_CXXFLAGS}
11361 @cindex @code{FCFLAGS} and @code{AM_FCFLAGS}
11362 @cindex @code{FFLAGS} and @code{AM_FFLAGS}
11363 @cindex @code{GCJFLAGS} and @code{AM_GCJFLAGS}
11364 @cindex @code{LDFLAGS} and @code{AM_LDFLAGS}
11365 @cindex @code{LFLAGS} and @code{AM_LFLAGS}
11366 @cindex @code{LIBTOOLFLAGS} and @code{AM_LIBTOOLFLAGS}
11367 @cindex @code{OBJCFLAGS} and @code{AM_OBJCFLAGS}
11368 @cindex @code{RFLAGS} and @code{AM_RFLAGS}
11369 @cindex @code{UPCFLAGS} and @code{AM_UPCFLAGS}
11370 @cindex @code{YFLAGS} and @code{AM_YFLAGS}
11372 This section attempts to answer all the above questions.  We will
11373 mostly discuss @code{CPPFLAGS} in our examples, but actually the
11374 answer holds for all the compile flags used in Automake:
11375 @code{CCASFLAGS}, @code{CFLAGS}, @code{CPPFLAGS}, @code{CXXFLAGS},
11376 @code{FCFLAGS}, @code{FFLAGS}, @code{GCJFLAGS}, @code{LDFLAGS},
11377 @code{LFLAGS}, @code{LIBTOOLFLAGS}, @code{OBJCFLAGS}, @code{RFLAGS},
11378 @code{UPCFLAGS}, and @code{YFLAGS}.
11380 @code{CPPFLAGS}, @code{AM_CPPFLAGS}, and @code{mumble_CPPFLAGS} are
11381 three variables that can be used to pass flags to the C preprocessor
11382 (actually these variables are also used for other languages like C++
11383 or preprocessed Fortran).  @code{CPPFLAGS} is the user variable
11384 (@pxref{User Variables}), @code{AM_CPPFLAGS} is the Automake variable,
11385 and @code{mumble_CPPFLAGS} is the variable specific to the
11386 @code{mumble} target (we call this a per-target variable,
11387 @pxref{Program and Library Variables}).
11389 Automake always uses two of these variables when compiling C sources
11390 files.  When compiling an object file for the @code{mumble} target,
11391 the first variable will be @code{mumble_CPPFLAGS} if it is defined, or
11392 @code{AM_CPPFLAGS} otherwise.  The second variable is always
11393 @code{CPPFLAGS}.
11395 In the following example,
11397 @example
11398 bin_PROGRAMS = foo bar
11399 foo_SOURCES = xyz.c
11400 bar_SOURCES = main.c
11401 foo_CPPFLAGS = -DFOO
11402 AM_CPPFLAGS = -DBAZ
11403 @end example
11405 @noindent
11406 @file{xyz.o} will be compiled with @samp{$(foo_CPPFLAGS) $(CPPFLAGS)},
11407 (because @file{xyz.o} is part of the @code{foo} target), while
11408 @file{main.o} will be compiled with @samp{$(AM_CPPFLAGS) $(CPPFLAGS)}
11409 (because there is no per-target variable for target @code{bar}).
11411 The difference between @code{mumble_CPPFLAGS} and @code{AM_CPPFLAGS}
11412 being clear enough, let's focus on @code{CPPFLAGS}.  @code{CPPFLAGS}
11413 is a user variable, i.e., a variable that users are entitled to modify
11414 in order to compile the package.  This variable, like many others,
11415 is documented at the end of the output of @samp{configure --help}.
11417 For instance, someone who needs to add @file{/home/my/usr/include} to
11418 the C compiler's search path would configure a package with
11420 @example
11421 ./configure CPPFLAGS='-I /home/my/usr/include'
11422 @end example
11424 @noindent
11425 and this flag would be propagated to the compile rules of all
11426 @file{Makefile}s.
11428 It is also not uncommon to override a user variable at
11429 @command{make}-time.  Many installers do this with @code{prefix}, but
11430 this can be useful with compiler flags too.  For instance, if, while
11431 debugging a C++ project, you need to disable optimization in one
11432 specific object file, you can run something like
11434 @example
11435 rm file.o
11436 make CXXFLAGS=-O0 file.o
11437 make
11438 @end example
11440 The reason @samp{$(CPPFLAGS)} appears after @samp{$(AM_CPPFLAGS)} or
11441 @samp{$(mumble_CPPFLAGS)} in the compile command is that users
11442 should always have the last say.  It probably makes more sense if you
11443 think about it while looking at the @samp{CXXFLAGS=-O0} above, which
11444 should supersede any other switch from @code{AM_CXXFLAGS} or
11445 @code{mumble_CXXFLAGS} (and this of course replaces the previous value
11446 of @code{CXXFLAGS}).
11448 You should never redefine a user variable such as @code{CPPFLAGS} in
11449 @file{Makefile.am}.  Use @samp{automake -Woverride} to diagnose such
11450 mistakes.  Even something like
11452 @example
11453 CPPFLAGS = -DDATADIR=\"$(datadir)\" @@CPPFLAGS@@
11454 @end example
11456 @noindent
11457 is erroneous.  Although this preserves @file{configure}'s value of
11458 @code{CPPFLAGS}, the definition of @code{DATADIR} will disappear if a
11459 user attempts to override @code{CPPFLAGS} from the @command{make}
11460 command line.
11462 @example
11463 AM_CPPFLAGS = -DDATADIR=\"$(datadir)\"
11464 @end example
11466 @noindent
11467 is all that is needed here if no per-target flags are used.
11469 You should not add options to these user variables within
11470 @file{configure} either, for the same reason.  Occasionally you need
11471 to modify these variables to perform a test, but you should reset
11472 their values afterwards.  In contrast, it is OK to modify the
11473 @samp{AM_} variables within @file{configure} if you @code{AC_SUBST}
11474 them, but it is rather rare that you need to do this, unless you
11475 really want to change the default definitions of the @samp{AM_}
11476 variables in all @file{Makefile}s.
11478 What we recommend is that you define extra flags in separate
11479 variables.  For instance, you may write an Autoconf macro that computes
11480 a set of warning options for the C compiler, and @code{AC_SUBST} them
11481 in @code{WARNINGCFLAGS}; you may also have an Autoconf macro that
11482 determines which compiler and which linker flags should be used to
11483 link with library @file{libfoo}, and @code{AC_SUBST} these in
11484 @code{LIBFOOCFLAGS} and @code{LIBFOOLDFLAGS}.  Then, a
11485 @file{Makefile.am} could use these variables as follows:
11487 @example
11488 AM_CFLAGS = $(WARNINGCFLAGS)
11489 bin_PROGRAMS = prog1 prog2
11490 prog1_SOURCES = @dots{}
11491 prog2_SOURCES = @dots{}
11492 prog2_CFLAGS = $(LIBFOOCFLAGS) $(AM_CFLAGS)
11493 prog2_LDFLAGS = $(LIBFOOLDFLAGS)
11494 @end example
11496 In this example both programs will be compiled with the flags
11497 substituted into @samp{$(WARNINGCFLAGS)}, and @code{prog2} will
11498 additionally be compiled with the flags required to link with
11499 @file{libfoo}.
11501 Note that listing @code{AM_CFLAGS} in a per-target @code{CFLAGS}
11502 variable is a common idiom to ensure that @code{AM_CFLAGS} applies to
11503 every target in a @file{Makefile.in}.
11505 Using variables like this gives you full control over the ordering of
11506 the flags.  For instance, if there is a flag in $(WARNINGCFLAGS) that
11507 you want to negate for a particular target, you can use something like
11508 @samp{prog1_CFLAGS = $(AM_CFLAGS) -no-flag}.  If all these flags had
11509 been forcefully appended to @code{CFLAGS}, there would be no way to
11510 disable one flag.  Yet another reason to leave user variables to
11511 users.
11513 Finally, we have avoided naming the variable of the example
11514 @code{LIBFOO_LDFLAGS} (with an underscore) because that would cause
11515 Automake to think that this is actually a per-target variable (like
11516 @code{mumble_LDFLAGS}) for some non-declared @code{LIBFOO} target.
11518 @subheading Other Variables
11520 There are other variables in Automake that follow similar principles
11521 to allow user options.  For instance, Texinfo rules (@pxref{Texinfo})
11522 use @code{MAKEINFOFLAGS} and @code{AM_MAKEINFOFLAGS}.  Similarly,
11523 DejaGnu tests (@pxref{DejaGnu Tests}) use @code{RUNTESTDEFAULTFLAGS} and
11524 @code{AM_RUNTESTDEFAULTFLAGS}.  The tags and ctags rules
11525 (@pxref{Tags}) use @code{ETAGSFLAGS}, @code{AM_ETAGSFLAGS},
11526 @code{CTAGSFLAGS}, and @code{AM_CTAGSFLAGS}.  Java rules
11527 (@pxref{Java}) use @code{JAVACFLAGS} and @code{AM_JAVACFLAGS}.  None
11528 of these rules support per-target flags (yet).
11530 To some extent, even @code{AM_MAKEFLAGS} (@pxref{Subdirectories})
11531 obeys this naming scheme.  The slight difference is that
11532 @code{MAKEFLAGS} is passed to sub-@command{make}s implicitly by
11533 @command{make} itself.
11535 However you should not think that all variables ending with
11536 @code{FLAGS} follow this convention.  For instance,
11537 @code{DISTCHECK_CONFIGURE_FLAGS} (@pxref{Checking the Distribution}) and
11538 @code{ACLOCAL_AMFLAGS} (see @ref{Rebuilding} and @ref{Local Macros}),
11539 are two variables that are only useful to the maintainer and have no
11540 user counterpart.
11542 @code{ARFLAGS} (@pxref{A Library}) is usually defined by Automake and
11543 has neither @code{AM_} nor per-target cousin.
11545 Finally you should not think that the existence of a per-target
11546 variable implies the existance of an @code{AM_} variable or of a user
11547 variable.  For instance, the @code{mumble_LDADD} per-target variable
11548 overrides the makefile-wide @code{LDADD} variable (which is not a user
11549 variable), and @code{mumble_LIBADD} exists only as a per-target
11550 variable.  @xref{Program and Library Variables}.
11553 @node Renamed Objects
11554 @section Why are object files sometimes renamed?
11556 This happens when per-target compilation flags are used.  Object
11557 files need to be renamed just in case they would clash with object
11558 files compiled from the same sources, but with different flags.
11559 Consider the following example.
11561 @example
11562 bin_PROGRAMS = true false
11563 true_SOURCES = generic.c
11564 true_CPPFLAGS = -DEXIT_CODE=0
11565 false_SOURCES = generic.c
11566 false_CPPFLAGS = -DEXIT_CODE=1
11567 @end example
11569 @noindent
11570 Obviously the two programs are built from the same source, but it
11571 would be bad if they shared the same object, because @file{generic.o}
11572 cannot be built with both @samp{-DEXIT_CODE=0} @emph{and}
11573 @samp{-DEXIT_CODE=1}.  Therefore @command{automake} outputs rules to
11574 build two different objects: @file{true-generic.o} and
11575 @file{false-generic.o}.
11577 @command{automake} doesn't actually look whether source files are
11578 shared to decide if it must rename objects.  It will just rename all
11579 objects of a target as soon as it sees per-target compilation flags
11580 used.
11582 It's OK to share object files when per-target compilation flags are not
11583 used.  For instance, @file{true} and @file{false} will both use
11584 @file{version.o} in the following example.
11586 @example
11587 AM_CPPFLAGS = -DVERSION=1.0
11588 bin_PROGRAMS = true false
11589 true_SOURCES = true.c version.c
11590 false_SOURCES = false.c version.c
11591 @end example
11593 Note that the renaming of objects is also affected by the
11594 @code{_SHORTNAME} variable (@pxref{Program and Library Variables}).
11597 @node Per-Object Flags
11598 @section Per-Object Flags Emulation
11599 @cindex Per-object flags, emulated
11601 @display
11602 One of my source files needs to be compiled with different flags.  How
11603 do I do?
11604 @end display
11606 Automake supports per-program and per-library compilation flags (see
11607 @ref{Program and Library Variables} and @ref{Flag Variables
11608 Ordering}).  With this you can define compilation flags that apply to
11609 all files compiled for a target.  For instance, in
11611 @example
11612 bin_PROGRAMS = foo
11613 foo_SOURCES = foo.c foo.h bar.c bar.h main.c
11614 foo_CFLAGS = -some -flags
11615 @end example
11617 @noindent
11618 @file{foo-foo.o}, @file{foo-bar.o}, and @file{foo-main.o} will all be
11619 compiled with @samp{-some -flags}.  (If you wonder about the names of
11620 these object files, see @ref{Renamed Objects}.)  Note that
11621 @code{foo_CFLAGS} gives the flags to use when compiling all the C
11622 sources of the @emph{program} @code{foo}, it has nothing to do with
11623 @file{foo.c} or @file{foo-foo.o} specifically.
11625 What if @file{foo.c} needs to be compiled into @file{foo.o} using some
11626 specific flags, that none of the other files requires?  Obviously
11627 per-program flags are not directly applicable here.  Something like
11628 per-object flags are expected, i.e., flags that would be used only
11629 when creating @file{foo-foo.o}.  Automake does not support that,
11630 however this is easy to simulate using a library that contains only
11631 that object, and compiling this library with per-library flags.
11633 @example
11634 bin_PROGRAMS = foo
11635 foo_SOURCES = bar.c bar.h main.c
11636 foo_CFLAGS = -some -flags
11637 foo_LDADD = libfoo.a
11638 noinst_LIBRARIES = libfoo.a
11639 libfoo_a_SOURCES = foo.c foo.h
11640 libfoo_a_CFLAGS = -some -other -flags
11641 @end example
11643 Here @file{foo-bar.o} and @file{foo-main.o} will all be
11644 compiled with @samp{-some -flags}, while @file{libfoo_a-foo.o} will
11645 be compiled using @samp{-some -other -flags}.  Eventually, all
11646 three objects will be linked to form @file{foo}.
11648 This trick can also be achieved using Libtool convenience libraries,
11649 for instance @samp{noinst_LTLIBRARIES = libfoo.la} (@pxref{Libtool
11650 Convenience Libraries}).
11652 Another tempting idea to implement per-object flags is to override the
11653 compile rules @command{automake} would output for these files.
11654 Automake will not define a rule for a target you have defined, so you
11655 could think about defining the @samp{foo-foo.o: foo.c} rule yourself.
11656 We recommend against this, because this is error prone.  For instance,
11657 if you add such a rule to the first example, it will break the day you
11658 decide to remove @code{foo_CFLAGS} (because @file{foo.c} will then be
11659 compiled as @file{foo.o} instead of @file{foo-foo.o}, @pxref{Renamed
11660 Objects}).  Also in order to support dependency tracking, the two
11661 @file{.o}/@file{.obj} extensions, and all the other flags variables
11662 involved in a compilation, you will end up modifying a copy of the
11663 rule previously output by @command{automake} for this file.  If a new
11664 release of Automake generates a different rule, your copy will need to
11665 be updated by hand.
11667 @node Multiple Outputs
11668 @section Handling Tools that Produce Many Outputs
11669 @cindex multiple outputs, rules with
11670 @cindex many outputs, rules with
11671 @cindex rules with multiple outputs
11673 This section describes a @command{make} idiom that can be used when a
11674 tool produces multiple output files.  It is not specific to Automake
11675 and can be used in ordinary @file{Makefile}s.
11677 Suppose we have a program called @command{foo} that will read one file
11678 called @file{data.foo} and produce two files named @file{data.c} and
11679 @file{data.h}.  We want to write a @file{Makefile} rule that captures
11680 this one-to-two dependency.
11682 The naive rule is incorrect:
11684 @example
11685 # This is incorrect.
11686 data.c data.h: data.foo
11687         foo data.foo
11688 @end example
11690 @noindent
11691 What the above rule really says is that @file{data.c} and
11692 @file{data.h} each depend on @file{data.foo}, and can each be built by
11693 running @samp{foo data.foo}.  In other words it is equivalent to:
11695 @example
11696 # We do not want this.
11697 data.c: data.foo
11698         foo data.foo
11699 data.h: data.foo
11700         foo data.foo
11701 @end example
11703 @noindent
11704 which means that @command{foo} can be run twice.  Usually it will not
11705 be run twice, because @command{make} implementations are smart enough
11706 to check for the existence of the second file after the first one has
11707 been built; they will therefore detect that it already exists.
11708 However there are a few situations where it can run twice anyway:
11710 @itemize
11711 @item
11712 The most worrying case is when running a parallel @command{make}.  If
11713 @file{data.c} and @file{data.h} are built in parallel, two @samp{foo
11714 data.foo} commands will run concurrently.  This is harmful.
11715 @item
11716 Another case is when the dependency (here @file{data.foo}) is
11717 (or depends upon) a phony target.
11718 @end itemize
11720 A solution that works with parallel @command{make} but not with
11721 phony dependencies is the following:
11723 @example
11724 data.c data.h: data.foo
11725         foo data.foo
11726 data.h: data.c
11727 @end example
11729 @noindent
11730 The above rules are equivalent to
11732 @example
11733 data.c: data.foo
11734         foo data.foo
11735 data.h: data.foo data.c
11736         foo data.foo
11737 @end example
11739 @noindent
11740 therefore a parallel @command{make} will have to serialize the builds
11741 of @file{data.c} and @file{data.h}, and will detect that the second is
11742 no longer needed once the first is over.
11744 Using this pattern is probably enough for most cases.  However it does
11745 not scale easily to more output files (in this scheme all output files
11746 must be totally ordered by the dependency relation), so we will
11747 explore a more complicated solution.
11749 Another idea is to write the following:
11751 @example
11752 # There is still a problem with this one.
11753 data.c: data.foo
11754         foo data.foo
11755 data.h: data.c
11756 @end example
11758 @noindent
11759 The idea is that @samp{foo data.foo} is run only when @file{data.c}
11760 needs to be updated, but we further state that @file{data.h} depends
11761 upon @file{data.c}.  That way, if @file{data.h} is required and
11762 @file{data.foo} is out of date, the dependency on @file{data.c} will
11763 trigger the build.
11765 This is almost perfect, but suppose we have built @file{data.h} and
11766 @file{data.c}, and then we erase @file{data.h}.  Then, running
11767 @samp{make data.h} will not rebuild @file{data.h}.  The above rules
11768 just state that @file{data.c} must be up-to-date with respect to
11769 @file{data.foo}, and this is already the case.
11771 What we need is a rule that forces a rebuild when @file{data.h} is
11772 missing.  Here it is:
11774 @example
11775 data.c: data.foo
11776         foo data.foo
11777 data.h: data.c
11778 ## Recover from the removal of $@@
11779         @@if test -f $@@; then :; else \
11780           rm -f data.c; \
11781           $(MAKE) $(AM_MAKEFLAGS) data.c; \
11782         fi
11783 @end example
11785 The above scheme can be extended to handle more outputs and more
11786 inputs.  One of the outputs is selected to serve as a witness to the
11787 successful completion of the command, it depends upon all inputs, and
11788 all other outputs depend upon it.  For instance, if @command{foo}
11789 should additionally read @file{data.bar} and also produce
11790 @file{data.w} and @file{data.x}, we would write:
11792 @example
11793 data.c: data.foo data.bar
11794         foo data.foo data.bar
11795 data.h data.w data.x: data.c
11796 ## Recover from the removal of $@@
11797         @@if test -f $@@; then :; else \
11798           rm -f data.c; \
11799           $(MAKE) $(AM_MAKEFLAGS) data.c; \
11800         fi
11801 @end example
11803 However there are now three minor problems in this setup.  One is related
11804 to the timestamp ordering of @file{data.h}, @file{data.w},
11805 @file{data.x}, and @file{data.c}.  Another one is a race condition
11806 if a parallel @command{make} attempts to run multiple instances of the
11807 recover block at once.  Finally, the recursive rule breaks @samp{make -n}
11808 when run with GNU @command{make} (as well as some other @command{make}
11809 implementations), as it may remove @file{data.h} even when it should not
11810 (@pxref{MAKE Variable, , How the @code{MAKE} Variable Works, make,
11811 The GNU Make Manual}).
11813 Let us deal with the first problem.  @command{foo} outputs four files,
11814 but we do not know in which order these files are created.  Suppose
11815 that @file{data.h} is created before @file{data.c}.  Then we have a
11816 weird situation.  The next time @command{make} is run, @file{data.h}
11817 will appear older than @file{data.c}, the second rule will be
11818 triggered, a shell will be started to execute the @samp{if@dots{}fi}
11819 command, but actually it will just execute the @code{then} branch,
11820 that is: nothing.  In other words, because the witness we selected is
11821 not the first file created by @command{foo}, @command{make} will start
11822 a shell to do nothing each time it is run.
11824 A simple riposte is to fix the timestamps when this happens.
11826 @example
11827 data.c: data.foo data.bar
11828         foo data.foo data.bar
11829 data.h data.w data.x: data.c
11830         @@if test -f $@@; then \
11831           touch $@@; \
11832         else \
11833 ## Recover from the removal of $@@
11834           rm -f data.c; \
11835           $(MAKE) $(AM_MAKEFLAGS) data.c; \
11836         fi
11837 @end example
11839 Another solution is to use a different and dedicated file as witness,
11840 rather than using any of @command{foo}'s outputs.
11842 @example
11843 data.stamp: data.foo data.bar
11844         @@rm -f data.tmp
11845         @@touch data.tmp
11846         foo data.foo data.bar
11847         @@mv -f data.tmp $@@
11848 data.c data.h data.w data.x: data.stamp
11849 ## Recover from the removal of $@@
11850         @@if test -f $@@; then :; else \
11851           rm -f data.stamp; \
11852           $(MAKE) $(AM_MAKEFLAGS) data.stamp; \
11853         fi
11854 @end example
11856 @file{data.tmp} is created before @command{foo} is run, so it has a
11857 timestamp older than output files output by @command{foo}.  It is then
11858 renamed to @file{data.stamp} after @command{foo} has run, because we
11859 do not want to update @file{data.stamp} if @command{foo} fails.
11861 This solution still suffers from the second problem: the race
11862 condition in the recover rule.  If, after a successful build, a user
11863 erases @file{data.c} and @file{data.h}, and runs @samp{make -j}, then
11864 @command{make} may start both recover rules in parallel.  If the two
11865 instances of the rule execute @samp{$(MAKE) $(AM_MAKEFLAGS)
11866 data.stamp} concurrently the build is likely to fail (for instance, the
11867 two rules will create @file{data.tmp}, but only one can rename it).
11869 Admittedly, such a weird situation does not arise during ordinary
11870 builds.  It occurs only when the build tree is mutilated.  Here
11871 @file{data.c} and @file{data.h} have been explicitly removed without
11872 also removing @file{data.stamp} and the other output files.
11873 @code{make clean; make} will always recover from these situations even
11874 with parallel makes, so you may decide that the recover rule is solely
11875 to help non-parallel make users and leave things as-is.  Fixing this
11876 requires some locking mechanism to ensure only one instance of the
11877 recover rule rebuilds @file{data.stamp}.  One could imagine something
11878 along the following lines.
11880 @example
11881 data.c data.h data.w data.x: data.stamp
11882 ## Recover from the removal of $@@
11883         @@if test -f $@@; then :; else \
11884           trap 'rm -rf data.lock data.stamp' 1 2 13 15; \
11885 ## mkdir is a portable test-and-set
11886           if mkdir data.lock 2>/dev/null; then \
11887 ## This code is being executed by the first process.
11888             rm -f data.stamp; \
11889             $(MAKE) $(AM_MAKEFLAGS) data.stamp; \
11890             result=$$?; rm -rf data.lock; exit $$result; \
11891           else \
11892 ## This code is being executed by the follower processes.
11893 ## Wait until the first process is done.
11894             while test -d data.lock; do sleep 1; done; \
11895 ## Succeed if and only if the first process succeeded.
11896             test -f data.stamp; \
11897           fi; \
11898         fi
11899 @end example
11901 Using a dedicated witness, like @file{data.stamp}, is very handy when
11902 the list of output files is not known beforehand.  As an illustration,
11903 consider the following rules to compile many @file{*.el} files into
11904 @file{*.elc} files in a single command.  It does not matter how
11905 @code{ELFILES} is defined (as long as it is not empty: empty targets
11906 are not accepted by POSIX).
11908 @example
11909 ELFILES = one.el two.el three.el @dots{}
11910 ELCFILES = $(ELFILES:=c)
11912 elc-stamp: $(ELFILES)
11913         @@rm -f elc-temp
11914         @@touch elc-temp
11915         $(elisp_comp) $(ELFILES)
11916         @@mv -f elc-temp $@@
11918 $(ELCFILES): elc-stamp
11919         @@if test -f $@@; then :; else \
11920 ## Recover from the removal of $@@
11921           trap 'rm -rf elc-lock elc-stamp' 1 2 13 15; \
11922           if mkdir elc-lock 2>/dev/null; then \
11923 ## This code is being executed by the first process.
11924             rm -f elc-stamp; \
11925             $(MAKE) $(AM_MAKEFLAGS) elc-stamp; \
11926             rmdir elc-lock; \
11927           else \
11928 ## This code is being executed by the follower processes.
11929 ## Wait until the first process is done.
11930             while test -d elc-lock; do sleep 1; done; \
11931 ## Succeed if and only if the first process succeeded.
11932             test -f elc-stamp; exit $$?; \
11933 @c $$
11934           fi; \
11935         fi
11936 @end example
11938 These solutions all still suffer from the third problem, namely that
11939 they break the promise that @samp{make -n} should not cause any actual
11940 changes to the tree.  For those solutions that do not create lock files,
11941 it is possible to split the recover rules into two separate recipe
11942 commands, one of which does all work but the recursion, and the
11943 other invokes the recursive @samp{$(MAKE)}.  The solutions involving
11944 locking could act upon the contents of the @samp{MAKEFLAGS} variable,
11945 but parsing that portably is not easy (@pxref{The Make Macro MAKEFLAGS,,,
11946 autoconf, The Autoconf Manual}).  Here is an example:
11948 @example
11949 ELFILES = one.el two.el three.el @dots{}
11950 ELCFILES = $(ELFILES:=c)
11952 elc-stamp: $(ELFILES)
11953         @@rm -f elc-temp
11954         @@touch elc-temp
11955         $(elisp_comp) $(ELFILES)
11956         @@mv -f elc-temp $@@
11958 $(ELCFILES): elc-stamp
11959 ## Recover from the removal of $@@
11960         @@dry=; for f in x $$MAKEFLAGS; do \
11961           case $$f in \
11962             *=*|--*);; \
11963             *n*) dry=:;; \
11964           esac; \
11965         done; \
11966         if test -f $@@; then :; else \
11967           $$dry trap 'rm -rf elc-lock elc-stamp' 1 2 13 15; \
11968           if $$dry mkdir elc-lock 2>/dev/null; then \
11969 ## This code is being executed by the first process.
11970             $$dry rm -f elc-stamp; \
11971             $(MAKE) $(AM_MAKEFLAGS) elc-stamp; \
11972             $$dry rmdir elc-lock; \
11973           else \
11974 ## This code is being executed by the follower processes.
11975 ## Wait until the first process is done.
11976             while test -d elc-lock && test -z "$$dry"; do \
11977 @c $$
11978               sleep 1; \
11979             done; \
11980 ## Succeed if and only if the first process succeeded.
11981             $$dry test -f elc-stamp; exit $$?; \
11982           fi; \
11983         fi
11984 @end example
11986 For completeness it should be noted that GNU @command{make} is able to
11987 express rules with multiple output files using pattern rules
11988 (@pxref{Pattern Examples, , Pattern Rule Examples, make, The GNU Make
11989 Manual}).  We do not discuss pattern rules here because they are not
11990 portable, but they can be convenient in packages that assume GNU
11991 @command{make}.
11994 @node Hard-Coded Install Paths
11995 @section Installing to Hard-Coded Locations
11997 @display
11998 My package needs to install some configuration file.  I tried to use
11999 the following rule, but @samp{make distcheck} fails.  Why?
12001 @example
12002 # Do not do this.
12003 install-data-local:
12004         $(INSTALL_DATA) $(srcdir)/afile $(DESTDIR)/etc/afile
12005 @end example
12006 @end display
12008 @display
12009 My package needs to populate the installation directory of another
12010 package at install-time.  I can easily compute that installation
12011 directory in @file{configure}, but if I install files therein,
12012 @samp{make distcheck} fails.  How else should I do?
12013 @end display
12015 These two setups share their symptoms: @samp{make distcheck} fails
12016 because they are installing files to hard-coded paths.  In the later
12017 case the path is not really hard-coded in the package, but we can
12018 consider it to be hard-coded in the system (or in whichever tool that
12019 supplies the path).  As long as the path does not use any of the
12020 standard directory variables (@samp{$(prefix)}, @samp{$(bindir)},
12021 @samp{$(datadir)}, etc.), the effect will be the same:
12022 user-installations are impossible.
12024 As a (non-root) user who wants to install a package, you usually have no
12025 right to install anything in @file{/usr} or @file{/usr/local}.  So you
12026 do something like @samp{./configure --prefix ~/usr} to install a
12027 package in your own @file{~/usr} tree.
12029 If a package attempts to install something to some hard-coded path
12030 (e.g., @file{/etc/afile}), regardless of this @option{--prefix} setting,
12031 then the installation will fail.  @samp{make distcheck} performs such
12032 a @option{--prefix} installation, hence it will fail too.
12034 Now, there are some easy solutions.
12036 The above @code{install-data-local} example for installing
12037 @file{/etc/afile} would be better replaced by
12039 @example
12040 sysconf_DATA = afile
12041 @end example
12043 @noindent
12044 by default @code{sysconfdir} will be @samp{$(prefix)/etc}, because
12045 this is what the GNU Standards require.  When such a package is
12046 installed on an FHS compliant system, the installer will have to set
12047 @samp{--sysconfdir=/etc}.  As the maintainer of the package you
12048 should not be concerned by such site policies: use the appropriate
12049 standard directory variable to install your files so that the installer
12050 can easily redefine these variables to match their site conventions.
12052 Installing files that should be used by another package is slightly
12053 more involved.  Let's take an example and assume you want to install
12054 a shared library that is a Python extension module.  If you ask Python
12055 where to install the library, it will answer something like this:
12057 @example
12058 % @kbd{python -c 'from distutils import sysconfig;
12059              print sysconfig.get_python_lib(1,0)'}
12060 /usr/lib/python2.5/site-packages
12061 @end example
12063 If you indeed use this absolute path to install your shared library,
12064 non-root users will not be able to install the package, hence
12065 distcheck fails.
12067 Let's do better.  The @samp{sysconfig.get_python_lib()} function
12068 actually accepts a third argument that will replace Python's
12069 installation prefix.
12071 @example
12072 % @kbd{python -c 'from distutils import sysconfig;
12073              print sysconfig.get_python_lib(1,0,"$@{exec_prefix@}")'}
12074 $@{exec_prefix@}/lib/python2.5/site-packages
12075 @end example
12077 You can also use this new path.  If you do
12078 @itemize @bullet
12079 @item
12080 root users can install your package with the same @option{--prefix}
12081 as Python (you get the behavior of the previous attempt)
12083 @item
12084 non-root users can install your package too, they will have the
12085 extension module in a place that is not searched by Python but they
12086 can work around this using environment variables (and if you installed
12087 scripts that use this shared library, it's easy to tell Python were to
12088 look in the beginning of your script, so the script works in both
12089 cases).
12090 @end itemize
12092 The @code{AM_PATH_PYTHON} macro uses similar commands to define
12093 @samp{$(pythondir)} and @samp{$(pyexecdir)} (@pxref{Python}).
12095 Of course not all tools are as advanced as Python regarding that
12096 substitution of @var{prefix}.  So another strategy is to figure the
12097 part of the installation directory that must be preserved.  For
12098 instance, here is how @code{AM_PATH_LISPDIR} (@pxref{Emacs Lisp})
12099 computes @samp{$(lispdir)}:
12101 @example
12102 $EMACS -batch -q -eval '(while load-path
12103   (princ (concat (car load-path) "\n"))
12104   (setq load-path (cdr load-path)))' >conftest.out
12105 lispdir=`sed -n
12106   -e 's,/$,,'
12107   -e '/.*\/lib\/x*emacs\/site-lisp$/@{
12108         s,.*/lib/\(x*emacs/site-lisp\)$,$@{libdir@}/\1,;p;q;
12109       @}'
12110   -e '/.*\/share\/x*emacs\/site-lisp$/@{
12111         s,.*/share/\(x*emacs/site-lisp\),$@{datarootdir@}/\1,;p;q;
12112       @}'
12113   conftest.out`
12114 @end example
12116 I.e., it just picks the first directory that looks like
12117 @file{*/lib/*emacs/site-lisp} or @file{*/share/*emacs/site-lisp} in
12118 the search path of emacs, and then substitutes @samp{$@{libdir@}} or
12119 @samp{$@{datadir@}} appropriately.
12121 The emacs case looks complicated because it processes a list and
12122 expects two possible layouts, otherwise it's easy, and the benefits for
12123 non-root users are really worth the extra @command{sed} invocation.
12126 @node Debugging Make Rules
12127 @section Debugging Make Rules
12128 @cindex debugging rules
12129 @cindex rules, debugging
12131 The rules and dependency trees generated by @command{automake} can get
12132 rather complex, and leave the developer head-scratching when things
12133 don't work as expected.  Besides the debug options provided by the
12134 @command{make} command (@pxref{Options Summary,,, make, The GNU Make
12135 Manual}), here's a couple of further hints for debugging makefiles
12136 generated by @command{automake} effectively:
12138 @itemize
12139 @item
12140 If less verbose output has been enabled in the package with the
12141 @samp{silent-rules} option (@pxref{Options}), you can use
12142 @code{make V=1} to see the commands being executed.
12143 @item
12144 @code{make -n} can help show what would be done without actually doing
12145 it.  Note however, that this will @emph{still execute} commands prefixed
12146 with @samp{+}, and, when using GNU @command{make}, commands that contain
12147 the strings @samp{$(MAKE)} or @samp{$@{MAKE@}} (@pxref{Instead of
12148 Execution,,, make, The GNU Make Manual}).
12149 Typically, this is helpful to show what recursive rules would do, but it
12150 means that, in your own rules, you should not mix such recursion with
12151 actions that change any files.@footnote{Automake's @samp{dist} and
12152 @samp{distcheck} rules had a bug in this regard in that they created
12153 directories even with @option{-n}, but this has been fixed in Automake
12154 1.11.}  Furthermore, note that GNU @command{make} will update
12155 prerequisites for the @file{Makefile} file itself even with @option{-n}
12156 (@pxref{Remaking Makefiles,,, make, The GNU Make Manual}).
12157 @item
12158 @code{make SHELL="/bin/bash -vx"} can help debug complex rules.
12159 @xref{The Make Macro SHELL,,, autoconf, The Autoconf Manual}, for some
12160 portability quirks associated with this construct.
12161 @item
12162 @code{echo 'print: ; @@echo "$(VAR)"' | make -f Makefile -f - print}
12163 can be handy to examine the expanded value of variables.  You may need
12164 to use a target other than @samp{print} if that is already used or a
12165 file with that name exists.
12166 @item
12167 @url{http://bashdb.sourceforge.net/@/remake/} provides a modified
12168 GNU @command{make} command called @command{remake} that copes with
12169 complex GNU @command{make}-specific Makefiles and allows to trace
12170 execution, examine variables, and call rules interactively, much like
12171 a debugger.
12172 @end itemize
12175 @node Reporting Bugs
12176 @section Reporting Bugs
12178 Most nontrivial software has bugs.  Automake is no exception.  Although
12179 we cannot promise we can or will fix a bug, and we might not even agree
12180 that it is a bug, we want to hear about problems you encounter. Often we
12181 agree they are bugs and want to fix them.
12183 To make it possible for us to fix a bug, please report it. In order to
12184 do so effectively, it helps to know when and how to do it.
12186 Before reporting a bug, it is a good idea to see if it is already known.
12187 You can look at the @uref{http://debbugs.gnu.org/, GNU Bug Tracker}
12188 and the @uref{http://lists.gnu.org/@/archive/@/html/@/bug-automake/,
12189 bug-automake mailing list archives} for previous bug reports.  We
12190 previously used a
12191 @uref{http://sourceware.org/@/cgi-bin/@/gnatsweb.pl?database=automake,
12192 Gnats database} for bug tracking, so some bugs might have been reported
12193 there already.  Please do not use it for new bug reports, however.
12195 If the bug is not already known, it should be reported.  It is very
12196 important to report bugs in a way that is useful and efficient.  For
12197 this, please familiarize yourself with
12198 @uref{http://www.chiark.greenend.org.uk/@/~sgtatham/@/bugs.html, How to
12199 Report Bugs Effectively} and
12200 @uref{http://catb.org/@/~esr/@/faqs/@/smart-questions.html, How to Ask
12201 Questions the Smart Way}.  This helps you and developers to save time
12202 which can then be spent on fixing more bugs and implementing more
12203 features.
12205 For a bug report, a feature request or other suggestions, please send
12206 email to @email{@value{PACKAGE_BUGREPORT}}.  This will then open a new
12207 bug in the @uref{http://debbugs.gnu.org/@/automake, bug tracker}.  Be
12208 sure to include the versions of Autoconf and Automake that you use.
12209 Ideally, post a minimal @file{Makefile.am} and @file{configure.ac} that
12210 reproduces the problem you encounter.  If you have encountered test
12211 suite failures, please attach the @file{tests/test-suite.log} file.
12214 @node History
12215 @chapter History of Automake
12217 This chapter presents various aspects of the history of Automake.  The
12218 exhausted reader can safely skip it; this will be more of interest to
12219 nostalgic people, or to those curious to learn about the evolution of
12220 Automake.
12222 @menu
12223 * Timeline::                    The Automake story.
12224 * Dependency Tracking Evolution::  Evolution of Automatic Dependency Tracking
12225 * Releases::                    Statistics about Automake Releases
12226 @end menu
12228 @node Timeline
12229 @section Timeline
12231 @table @asis
12232 @item 1994-09-19 First CVS commit.
12234 If we can trust the CVS repository, David J.@tie{}MacKenzie (djm) started
12235 working on Automake (or AutoMake, as it was spelt then) this Monday.
12237 The first version of the @command{automake} script looks as follows.
12239 @example
12240 #!/bin/sh
12242 status=0
12244 for makefile
12246   if test ! -f $@{makefile@}.am; then
12247     echo "automake: $@{makefile@}.am: No such honkin' file"
12248     status=1
12249     continue
12250   fi
12252   exec 4> $@{makefile@}.in
12254 done
12255 @end example
12257 From this you can already see that Automake will be about reading
12258 @file{*.am} file and producing @file{*.in} files.  You cannot see
12259 anything else, but if you also know that David is the one who created
12260 Autoconf two years before you can guess the rest.
12262 Several commits follow, and by the end of the day Automake is
12263 reported to work for GNU fileutils and GNU m4.
12265 The modus operandi is the one that is still used today: variable
12266 assignments in @file{Makefile.am} files trigger injections of
12267 precanned @file{Makefile} fragments into the generated
12268 @file{Makefile.in}.  The use of @file{Makefile} fragments was inspired
12269 by the 4.4BSD @command{make} and include files, however Automake aims
12270 to be portable and to conform to the GNU standards for @file{Makefile}
12271 variables and targets.
12273 At this point, the most recent release of Autoconf is version 1.11,
12274 and David is preparing to release Autoconf 2.0 in late October.  As a
12275 matter of fact, he will barely touch Automake after September.
12277 @item 1994-11-05 David MacKenzie's last commit.
12279 At this point Automake is a 200 line portable shell script, plus 332
12280 lines of @file{Makefile} fragments.  In the @file{README}, David
12281 states his ambivalence between ``portable shell'' and ``more
12282 appropriate language'':
12284 @quotation
12285 I wrote it keeping in mind the possibility of it becoming an Autoconf
12286 macro, so it would run at configure-time.  That would slow
12287 configuration down a bit, but allow users to modify the Makefile.am
12288 without needing to fetch the AutoMake package.  And, the Makefile.in
12289 files wouldn't need to be distributed.  But all of AutoMake would.  So
12290 I might reimplement AutoMake in Perl, m4, or some other more
12291 appropriate language.
12292 @end quotation
12294 Automake is described as ``an experimental Makefile generator''.
12295 There is no documentation.  Adventurous users are referred to the
12296 examples and patches needed to use Automake with GNU m4 1.3, fileutils
12297 3.9, time 1.6, and development versions of find and indent.
12299 These examples seem to have been lost.  However at the time of writing
12300 (10 years later in September, 2004) the FSF still distributes a
12301 package that uses this version of Automake: check out GNU termutils
12302 2.0.
12304 @item 1995-11-12 Tom Tromey's first commit.
12306 After one year of inactivity, Tom Tromey takes over the package.
12307 Tom was working on GNU cpio back then, and doing this just for fun,
12308 having trouble finding a project to contribute to.  So while hacking
12309 he wanted to bring the @file{Makefile.in} up to GNU standards.  This
12310 was hard, and one day he saw Automake on @url{ftp://alpha.gnu.org/},
12311 grabbed it and tried it out.
12313 Tom didn't talk to djm about it until later, just to make sure he
12314 didn't mind if he made a release.  He did a bunch of early releases to
12315 the Gnits folks.
12317 Gnits was (and still is) totally informal, just a few GNU friends who
12318 Fran@,cois Pinard knew, who were all interested in making a common
12319 infrastructure for GNU projects, and shared a similar outlook on how
12320 to do it.  So they were able to make some progress.  It came along
12321 with Autoconf and extensions thereof, and then Automake from David and
12322 Tom (who were both gnitsians).  One of their ideas was to write a
12323 document paralleling the GNU standards, that was more strict in some
12324 ways and more detailed.  They never finished the GNITS standards, but
12325 the ideas mostly made their way into Automake.
12327 @item 1995-11-23 Automake 0.20
12329 Besides introducing automatic dependency tracking (@pxref{Dependency
12330 Tracking Evolution}), this version also supplies a 9-page manual.
12332 At this time @command{aclocal} and @code{AM_INIT_AUTOMAKE} did not
12333 exist, so many things had to be done by hand.  For instance, here is
12334 what a configure.in (this is the former name of the
12335 @file{configure.ac} we use today) must contain in order to use
12336 Automake 0.20:
12338 @example
12339 PACKAGE=cpio
12340 VERSION=2.3.911
12341 AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE")
12342 AC_DEFINE_UNQUOTED(VERSION, "$VERSION")
12343 AC_SUBST(PACKAGE)
12344 AC_SUBST(VERSION)
12345 AC_ARG_PROGRAM
12346 AC_PROG_INSTALL
12347 @end example
12349 (Today all of the above is achieved by @code{AC_INIT} and
12350 @code{AM_INIT_AUTOMAKE}.)
12352 Here is how programs are specified in @file{Makefile.am}:
12354 @example
12355 PROGRAMS = hello
12356 hello_SOURCES = hello.c
12357 @end example
12359 This looks pretty much like what we do today, except the
12360 @code{PROGRAMS} variable has no directory prefix specifying where
12361 @file{hello} should be installed: all programs are installed in
12362 @samp{$(bindir)}.  @code{LIBPROGRAMS} can be used to specify programs
12363 that must be built but not installed (it is called
12364 @code{noinst_PROGRAMS} nowadays).
12366 Programs can be built conditionally using @code{AC_SUBST}itutions:
12368 @example
12369 PROGRAMS = @@progs@@
12370 AM_PROGRAMS = foo bar baz
12371 @end example
12373 (@code{AM_PROGRAMS} has since then been renamed to
12374 @code{EXTRA_PROGRAMS}.)
12376 Similarly scripts, static libraries, and data can be built and installed
12377 using the @code{LIBRARIES}, @code{SCRIPTS}, and @code{DATA} variables.
12378 However @code{LIBRARIES} were treated a bit specially in that Automake
12379 did automatically supply the @file{lib} and @file{.a} prefixes.
12380 Therefore to build @file{libcpio.a}, one had to write
12382 @example
12383 LIBRARIES = cpio
12384 cpio_SOURCES = ...
12385 @end example
12387 Extra files to distribute must be listed in @code{DIST_OTHER} (the
12388 ancestor of @code{EXTRA_DIST}).  Also extra directories that are to be
12389 distributed should appear in @code{DIST_SUBDIRS}, but the manual
12390 describes this as a temporary ugly hack (today extra directories should
12391 also be listed in @code{EXTRA_DIST}, and @code{DIST_SUBDIRS} is used
12392 for another purpose, @pxref{Conditional Subdirectories}).
12394 @item 1995-11-26 Automake 0.21
12396 In less time than it takes to cook a frozen pizza, Tom rewrites
12397 Automake using Perl.  At this time Perl 5 is only one year old, and
12398 Perl 4.036 is in use at many sites.  Supporting several Perl versions
12399 has been a source of problems through the whole history of Automake.
12401 If you never used Perl 4, imagine Perl 5 without objects, without
12402 @samp{my} variables (only dynamically scoped @samp{local} variables),
12403 without function prototypes, with function calls that needs to be
12404 prefixed with @samp{&}, etc.  Traces of this old style can still be
12405 found in today's @command{automake}.
12407 @item 1995-11-28 Automake 0.22
12408 @itemx 1995-11-29 Automake 0.23
12410 Bug fixes.
12412 @item 1995-12-08 Automake 0.24
12413 @itemx 1995-12-10 Automake 0.25
12415 Releases are raining.  0.24 introduces the uniform naming scheme we
12416 use today, i.e., @code{bin_PROGRAMS} instead of @code{PROGRAMS},
12417 @code{noinst_LIBRARIES} instead of @code{LIBLIBRARIES}, etc.  (However
12418 @code{EXTRA_PROGRAMS} does not exist yet, @code{AM_PROGRAMS} is still
12419 in use; and @code{TEXINFOS} and @code{MANS} still have no directory
12420 prefixes.)  Adding support for prefixes like that was one of the major
12421 ideas in @command{automake}; it has lasted pretty well.
12423 AutoMake is renamed to Automake (Tom seems to recall it was Fran@,cois
12424 Pinard's doing).
12426 0.25 fixes a Perl 4 portability bug.
12428 @item 1995-12-18 Jim Meyering starts using Automake in GNU Textutils.
12429 @item 1995-12-31 Fran@,cois Pinard starts using Automake in GNU tar.
12431 @item 1996-01-03 Automake 0.26
12432 @itemx 1996-01-03 Automake 0.27
12434 Of the many changes and suggestions sent by Fran@,cois Pinard and
12435 included in 0.26, perhaps the most important is the advice that to
12436 ease customization a user rule or variable definition should always
12437 override an Automake rule or definition.
12439 Gordon Matzigkeit and Jim Meyering are two other early contributors
12440 that have been sending fixes.
12442 0.27 fixes yet another Perl 4 portability bug.
12444 @item 1996-01-13 Automake 0.28
12446 Automake starts scanning @file{configure.in} for @code{LIBOBJS}
12447 support.  This is an important step because until this version
12448 Automake only knew about the @file{Makefile.am}s it processed.
12449 @file{configure.in} was Autoconf's world and the link between Autoconf
12450 and Automake had to be done by the @file{Makefile.am} author.  For
12451 instance, if @file{config.h} was generated by @file{configure}, it was the
12452 package maintainer's responsibility to define the @code{CONFIG_HEADER}
12453 variable in each @file{Makefile.am}.
12455 Succeeding releases will rely more and more on scanning
12456 @file{configure.in} to better automate the Autoconf integration.
12458 0.28 also introduces the @code{AUTOMAKE_OPTIONS} variable and the
12459 @option{--gnu} and @option{--gnits} options, the latter being stricter.
12461 @item 1996-02-07 Automake 0.29
12463 Thanks to @file{configure.in} scanning, @code{CONFIG_HEADER} is gone,
12464 and rebuild rules for @file{configure}-generated file are
12465 automatically output.
12467 @code{TEXINFOS} and @code{MANS} converted to the uniform naming
12468 scheme.
12470 @item 1996-02-24 Automake 0.30
12472 The test suite is born.  It contains 9 tests.  From now on test cases
12473 will be added pretty regularly (@pxref{Releases}), and this proved to
12474 be really helpful later on.
12476 @code{EXTRA_PROGRAMS} finally replaces @code{AM_PROGRAMS}.
12478 All the third-party Autoconf macros, written mostly by Fran@,cois
12479 Pinard (and later Jim Meyering), are distributed in Automake's
12480 hand-written @file{aclocal.m4} file.  Package maintainers are expected
12481 to extract the necessary macros from this file.  (In previous versions
12482 you had to copy and paste them from the manual...)
12484 @item 1996-03-11 Automake 0.31
12486 The test suite in 0.30 was run via a long @code{check-local} rule.  Upon
12487 Ulrich Drepper's suggestion, 0.31 makes it an Automake rule output
12488 whenever the @code{TESTS} variable is defined.
12490 @code{DIST_OTHER} is renamed to @code{EXTRA_DIST}, and the @code{check_}
12491 prefix is introduced.  The syntax is now the same as today.
12493 @item 1996-03-15 Gordon Matzigkeit starts writing libtool.
12495 @item 1996-04-27 Automake 0.32
12497 @code{-hook} targets are introduced; an idea from Dieter Baron.
12499 @file{*.info} files, which were output in the build directory are
12500 now built in the source directory, because they are distributed.  It
12501 seems these files like to move back and forth as that will happen
12502 again in future versions.
12504 @item 1996-05-18 Automake 0.33
12506 Gord Matzigkeit's main two contributions:
12508 @itemize
12509 @item very preliminary libtool support
12510 @item the distcheck rule
12511 @end itemize
12513 Although they were very basic at this point, these are probably
12514 among the top features for Automake today.
12516 Jim Meyering also provides the infamous @code{jm_MAINTAINER_MODE},
12517 since then renamed to @code{AM_MAINTAINER_MODE} and abandoned by its
12518 author (@pxref{maintainer-mode}).
12520 @item 1996-05-28 Automake 1.0
12522 After only six months of heavy development, the @command{automake} script is
12523 3134 lines long, plus 973 lines of @file{Makefile} fragments.  The
12524 package has 30 pages of documentation, and 38 test cases.
12525 @file{aclocal.m4} contains 4 macros.
12527 From now on and until version 1.4, new releases will occur at a rate
12528 of about one a year.  1.1 did not exist, actually 1.1b to 1.1p have
12529 been the name of beta releases for 1.2.  This is the first time
12530 Automake uses suffix letters to designate beta releases, a habit that
12531 lasts.
12533 @item 1996-10-10 Kevin Dalley packages Automake 1.0 for Debian GNU/Linux.
12535 @item 1996-11-26 David J.@tie{}MacKenzie releases Autoconf 2.12.
12537 Between June and October, the Autoconf development is almost stalled.
12538 Roland McGrath has been working at the beginning of the year.  David
12539 comes back in November to release 2.12, but he won't touch Autoconf
12540 anymore after this year, and Autoconf then really stagnates.  The
12541 desolate Autoconf @file{ChangeLog} for 1997 lists only 7 commits.
12543 @item 1997-02-28 @email{automake@@gnu.ai.mit.edu} list alive
12545 The mailing list is announced as follows:
12546 @smallexample
12547 I've created the "automake" mailing list.  It is
12548 "automake@@gnu.ai.mit.edu".  Administrivia, as always, to
12549 automake-request@@gnu.ai.mit.edu.
12551 The charter of this list is discussion of automake, autoconf, and
12552 other configuration/portability tools (e.g., libtool).  It is expected
12553 that discussion will range from pleas for help all the way up to
12554 patches.
12556 This list is archived on the FSF machines.  Offhand I don't know if
12557 you can get the archive without an account there.
12559 This list is open to anybody who wants to join.  Tell all your
12560 friends!
12561 -- Tom Tromey
12562 @end smallexample
12564 Before that people were discussing Automake privately, on the Gnits
12565 mailing list (which is not public either), and less frequently on
12566 @code{gnu.misc.discuss}.
12568 @code{gnu.ai.mit.edu} is now @code{gnu.org}, in case you never
12569 noticed.  The archives of the early years of the
12570 @code{automake@@gnu.org} list have been lost, so today it is almost
12571 impossible to find traces of discussions that occurred before 1999.
12572 This has been annoying more than once, as such discussions can be
12573 useful to understand the rationale behind a piece of uncommented code
12574 that was introduced back then.
12576 @item 1997-06-22 Automake 1.2
12578 Automake developments continues, and more and more new Autoconf macros
12579 are required.  Distributing them in @file{aclocal.m4} and requiring
12580 people to browse this file to extract the relevant macros becomes
12581 uncomfortable.  Ideally, some of them should be contributed to
12582 Autoconf so that they can be used directly, however Autoconf is
12583 currently inactive.  Automake 1.2 consequently introduces
12584 @command{aclocal} (@command{aclocal} was actually started on
12585 1996-07-28), a tool that automatically constructs an @file{aclocal.m4}
12586 file from a repository of third-party macros.  Because Autoconf has
12587 stalled, Automake also becomes a kind of repository for such
12588 third-party macros, even macros completely unrelated to Automake (for
12589 instance macros that fix broken Autoconf macros).
12591 The 1.2 release contains 20 macros, including the
12592 @code{AM_INIT_AUTOMAKE} macro that simplifies the creation of
12593 @file{configure.in}.
12595 Libtool is fully supported using @code{*_LTLIBRARIES}.
12597 The missing script is introduced by Fran@,cois Pinard; it is meant to be
12598 a better solution than @code{AM_MAINTAINER_MODE}
12599 (@pxref{maintainer-mode}).
12601 Conditionals support was implemented by Ian Lance Taylor.  At the
12602 time, Tom and Ian were working on an internal project at Cygnus.  They
12603 were using ILU, which is pretty similar to CORBA@.  They wanted to
12604 integrate ILU into their build, which was all @file{configure}-based,
12605 and Ian thought that adding conditionals to @command{automake} was
12606 simpler than doing all the work in @file{configure} (which was the
12607 standard at the time).  So this was actually funded by Cygnus.
12609 This very useful but tricky feature will take a lot of time to
12610 stabilize.  (At the time this text is written, there are still
12611 primaries that have not been updated to support conditional
12612 definitions in Automake 1.9.)
12614 The @command{automake} script has almost doubled: 6089 lines of Perl,
12615 plus 1294 lines of @file{Makefile} fragments.
12617 @item 1997-07-08 Gordon Matzigkeit releases Libtool 1.0.
12619 @item 1998-04-05 Automake 1.3
12621 This is a small advance compared to 1.2.
12622 It adds support for assembly, and preliminary support for Java.
12624 Perl 5.004_04 is out, but fixes to support Perl 4 are still
12625 regularly submitted whenever Automake breaks it.
12627 @item 1998-09-06 @code{sourceware.cygnus.com} is on-line.
12629 Sourceware was setup by Jason Molenda to host open source projects.
12631 @item 1998-09-19  Automake CVS repository moved to @code{sourceware.cygnus.com}
12632 @itemx 1998-10-26  @code{sourceware.cygnus.com} announces it hosts Automake:
12633 Automake is now hosted on @code{sourceware.cygnus.com}.  It has a
12634 publicly accessible CVS repository.  This CVS repository is a copy of
12635 the one Tom was using on his machine, which in turn is based on
12636 a copy of the CVS repository of David MacKenzie.  This is why we still
12637 have to full source history.  (Automake was on Sourceware until 2007-10-29,
12638 when it moved to a git repository on @code{savannah.gnu.org},
12639 but the Sourceware host had been renamed to @code{sources.redhat.com}.)
12641 The oldest file in the administrative directory of the CVS repository
12642 that was created on Sourceware is dated 1998-09-19, while the
12643 announcement that @command{automake} and @command{autoconf} had joined
12644 @command{sourceware} was made on 1998-10-26.  They were among the
12645 first projects to be hosted there.
12647 The heedful reader will have noticed Automake was exactly 4 years old
12648 on 1998-09-19.
12650 @item 1999-01-05 Ben Elliston releases Autoconf 2.13.
12652 @item 1999-01-14 Automake 1.4
12654 This release adds support for Fortran 77 and for the @code{include}
12655 statement.  Also, @samp{+=} assignments are introduced, but it is
12656 still quite easy to fool Automake when mixing this with conditionals.
12658 These two releases, Automake 1.4 and Autoconf 2.13 make a duo that
12659 will be used together for years.
12661 @command{automake} is 7228 lines, plus 1591 lines of Makefile
12662 fragment, 20 macros (some 1.3 macros were finally contributed back to
12663 Autoconf), 197 test cases, and 51 pages of documentation.
12665 @item 1999-03-27 The @code{user-dep-branch} is created on the CVS repository.
12667 This implements a new dependency tracking schemed that should be
12668 able to handle automatic dependency tracking using any compiler (not
12669 just gcc) and any make (not just GNU @command{make}).  In addition,
12670 the new scheme should be more reliable than the old one, as
12671 dependencies are generated on the end user's machine.  Alexandre Oliva
12672 creates depcomp for this purpose.
12674 @xref{Dependency Tracking Evolution}, for more details about the
12675 evolution of automatic dependency tracking in Automake.
12677 @item 1999-11-21 The @code{user-dep-branch} is merged into the main trunk.
12679 This was a huge problem since we also had patches going in on the
12680 trunk.  The merge took a long time and was very painful.
12682 @item 2000-05-10
12684 Since September 1999 and until 2003, Akim Demaille will be zealously
12685 revamping Autoconf.
12687 @quotation
12688 I think the next release should be called "3.0".@*
12689 Let's face it: you've basically rewritten autoconf.@*
12690 Every weekend there are 30 new patches.@*
12691 I don't see how we could call this "2.15" with a straight face.@*
12692 -- Tom Tromey on @email{autoconf@@gnu.org}
12693 @end quotation
12695 Actually Akim works like a submarine: he will pile up patches while he
12696 works off-line during the weekend, and flush them in batch when he
12697 resurfaces on Monday.
12699 @item 2001-01-24
12701 On this Wednesday, Autoconf 2.49c, the last beta before Autoconf 2.50
12702 is out, and Akim has to find something to do during his week-end :)
12704 @item 2001-01-28
12706 Akim sends a batch of 14 patches to @email{automake@@gnu.org}.
12708 @quotation
12709 Aiieeee!  I was dreading the day that the Demaillator turned his
12710 sights on automake@dots{} and now it has arrived! -- Tom Tromey
12711 @end quotation
12713 It's only the beginning: in two months he will send 192 patches.  Then
12714 he would slow down so Tom can catch up and review all this.  Initially
12715 Tom actually read all these patches, then he probably trustingly
12716 answered OK to most of them, and finally gave up and let Akim apply
12717 whatever he wanted.  There was no way to keep up with that patch rate.
12719 @quotation
12720 Anyway the patch below won't apply since it predates Akim's
12721 sourcequake; I have yet to figure where the relevant passage has
12722 been moved :) -- Alexandre Duret-Lutz
12723 @end quotation
12725 All these patches were sent to and discussed on
12726 @email{automake@@gnu.org}, so subscribed users were literally drowning in
12727 technical mails.  Eventually, the @email{automake-patches@@gnu.org}
12728 mailing list was created in May.
12730 Year after year, Automake had drifted away from its initial design:
12731 construct @file{Makefile.in} by assembling various @file{Makefile}
12732 fragments.  In 1.4, lots of @file{Makefile} rules are being emitted at
12733 various places in the @command{automake} script itself; this does not
12734 help ensuring a consistent treatment of these rules (for instance
12735 making sure that user-defined rules override Automake's own rules).
12736 One of Akim's goal was moving all these hard-coded rules to separate
12737 @file{Makefile} fragments, so the logic could be centralized in a
12738 @file{Makefile} fragment processor.
12740 Another significant contribution of Akim is the interface with the
12741 ``trace'' feature of Autoconf.  The way to scan @file{configure.in} at
12742 this time was to read the file and grep the various macro of interest
12743 to Automake.  Doing so could break in many unexpected ways; @command{automake}
12744 could miss some definition (for instance @samp{AC_SUBST([$1], [$2])}
12745 where the arguments are known only when M4 is run), or conversely it
12746 could detect some macro that was not expanded (because it is called
12747 conditionally).  In the CVS version of Autoconf, Akim had implemented
12748 the @option{--trace} option, which provides accurate information about
12749 where macros are actually called and with what arguments.  Akim will
12750 equip Automake with a second @file{configure.in} scanner that uses
12751 this @option{--trace} interface.  Since it was not sensible to drop the
12752 Autoconf 2.13 compatibility yet, this experimental scanner was only
12753 used when an environment variable was set, the traditional
12754 grep-scanner being still the default.
12756 @item 2001-04-25 Gary V.@tie{}Vaughan releases Libtool 1.4
12758 It has been more than two years since Automake 1.4, CVS Automake has
12759 suffered lot's of heavy changes and still is not ready for release.
12760 Libtool 1.4 had to be distributed with a patch against Automake 1.4.
12762 @item 2001-05-08 Automake 1.4-p1
12763 @itemx 2001-05-24 Automake 1.4-p2
12765 Gary V.@tie{}Vaughan, the principal Libtool maintainer, makes a ``patch
12766 release'' of Automake:
12768 @quotation
12769 The main purpose of this release is to have a stable automake
12770 which is compatible with the latest stable libtool.
12771 @end quotation
12773 The release also contains obvious fixes for bugs in Automake 1.4,
12774 some of which were reported almost monthly.
12776 @item 2001-05-21 Akim Demaille releases Autoconf 2.50
12778 @item 2001-06-07 Automake 1.4-p3
12779 @itemx 2001-06-10 Automake 1.4-p4
12780 @itemx 2001-07-15 Automake 1.4-p5
12782 Gary continues his patch-release series.  These also add support for
12783 some new Autoconf 2.50 idioms.  Essentially, Autoconf now advocates
12784 @file{configure.ac} over @file{configure.in}, and it introduces a new
12785 syntax for @code{AC_OUTPUT}ing files.
12787 @item 2001-08-23 Automake 1.5
12789 A major and long-awaited release, that comes more than two years after
12790 1.4.  It brings many changes, among which:
12791 @itemize
12792 @item The new dependency tracking scheme that uses @command{depcomp}.
12793 Aside from the improvement on the dependency tracking itself
12794 (@pxref{Dependency Tracking Evolution}), this also streamlines the use
12795 of @command{automake}-generated @file{Makefile.in}s as the @file{Makefile.in}s
12796 used during development are now the same as those used in
12797 distributions.  Before that the @file{Makefile.in}s generated for
12798 maintainers required GNU @command{make} and GCC, they were different
12799 from the portable @file{Makefile} generated for distribution; this was
12800 causing some confusion.
12802 @item Support for per-target compilation flags.
12804 @item Support for reference to files in subdirectories in most
12805 @file{Makefile.am} variables.
12807 @item Introduction of the @code{dist_}, @code{nodist_}, and @code{nobase_}
12808 prefixes.
12809 @item Perl 4 support is finally dropped.
12810 @end itemize
12812 1.5 did break several packages that worked with 1.4.  Enough so that
12813 Linux distributions could not easily install the new Automake version
12814 without breaking many of the packages for which they had to run
12815 @command{automake}.
12817 Some of these breakages were effectively bugs that would eventually be
12818 fixed in the next release.  However, a lot of damage was caused by
12819 some changes made deliberately to render Automake stricter on some
12820 setup we did consider bogus.  For instance, @samp{make distcheck} was
12821 improved to check that @samp{make uninstall} did remove all the files
12822 @samp{make install} installed, that @samp{make distclean} did not omit
12823 some file, and that a VPATH build would work even if the source
12824 directory was read-only.  Similarly, Automake now rejects multiple
12825 definitions of the same variable (because that would mix very badly
12826 with conditionals), and @samp{+=} assignments with no previous
12827 definition.  Because these changes all occurred suddenly after 1.4 had
12828 been established for more than two years, it hurt users.
12830 To make matter worse, meanwhile Autoconf (now at version 2.52) was
12831 facing similar troubles, for similar reasons.
12833 @item 2002-03-05 Automake 1.6
12835 This release introduced versioned installation (@pxref{API
12836 Versioning}).  This was mainly pushed by Havoc Pennington, taking the
12837 GNOME source tree as motive: due to incompatibilities between the
12838 autotools it's impossible for the GNOME packages to switch to Autoconf
12839 2.53 and Automake 1.5 all at once, so they are currently stuck with
12840 Autoconf 2.13 and Automake 1.4.
12842 The idea was to call this version @file{automake-1.6}, call all its
12843 bug-fix versions identically, and switch to @file{automake-1.7} for
12844 the next release that adds new features or changes some rules.  This
12845 scheme implies maintaining a bug-fix branch in addition to the
12846 development trunk, which means more work from the maintainer, but
12847 providing regular bug-fix releases proved to be really worthwhile.
12849 Like 1.5, 1.6 also introduced a bunch of incompatibilities, intentional or
12850 not.  Perhaps the more annoying was the dependence on the newly
12851 released Autoconf 2.53.  Autoconf seemed to have stabilized enough
12852 since its explosive 2.50 release and included changes required to fix
12853 some bugs in Automake.  In order to upgrade to Automake 1.6, people
12854 now had to upgrade Autoconf too; for some packages it was no picnic.
12856 While versioned installation helped people to upgrade, it also
12857 unfortunately allowed people not to upgrade.  At the time of writing,
12858 some Linux distributions are shipping packages for Automake 1.4, 1.5,
12859 1.6, 1.7, 1.8, and 1.9.  Most of these still install 1.4 by default.
12860 Some distribution also call 1.4 the ``stable'' version, and present
12861 ``1.9'' as the development version; this does not really makes sense
12862 since 1.9 is way more solid than 1.4.  All this does not help the
12863 newcomer.
12865 @item 2002-04-11 Automake 1.6.1
12867 1.6, and the upcoming 1.4-p6 release were the last release by Tom.
12868 This one and those following will be handled by Alexandre
12869 Duret-Lutz.  Tom is still around, and will be there until about 1.7,
12870 but his interest into Automake is drifting away towards projects like
12871 @command{gcj}.
12873 Alexandre has been using Automake since 2000, and started to
12874 contribute mostly on Akim's incitement (Akim and Alexandre have been
12875 working in the same room from 1999 to 2002).  In 2001 and 2002 he had
12876 a lot of free time to enjoy hacking Automake.
12878 @item 2002-06-14 Automake 1.6.2
12880 @item 2002-07-28 Automake 1.6.3
12881 @itemx 2002-07-28 Automake 1.4-p6
12883 Two releases on the same day.  1.6.3 is a bug-fix release.
12885 Tom Tromey backported the versioned installation mechanism on the 1.4
12886 branch, so that Automake 1.6.x and Automake 1.4-p6 could be installed
12887 side by side.  Another request from the GNOME folks.
12889 @item 2002-09-25 Automake 1.7
12891 This release switches to the new @file{configure.ac} scanner Akim
12892 was experimenting in 1.5.
12894 @item 2002-10-16 Automake 1.7.1
12895 @itemx 2002-12-06 Automake 1.7.2
12896 @itemx 2003-02-20 Automake 1.7.3
12897 @itemx 2003-04-23 Automake 1.7.4
12898 @itemx 2003-05-18 Automake 1.7.5
12899 @itemx 2003-07-10 Automake 1.7.6
12900 @itemx 2003-09-07 Automake 1.7.7
12901 @itemx 2003-10-07 Automake 1.7.8
12903 Many bug-fix releases.  1.7 lasted because the development version
12904 (upcoming 1.8) was suffering some major internal revamping.
12906 @item 2003-10-26 Automake on screen
12908 Episode 49, `Repercussions', in the third season of the `Alias' TV
12909 show is first aired.
12911 Marshall, one of the characters, is working on a computer virus that he
12912 has to modify before it gets into the wrong hands or something like
12913 that.  The screenshots you see do not show any program code, they show
12914 a @file{Makefile.in} @code{generated by automake}...
12916 @item 2003-11-09 Automake 1.7.9
12918 @item 2003-12-10 Automake 1.8
12920 The most striking update is probably that of @command{aclocal}.
12922 @command{aclocal} now uses @code{m4_include} in the produced
12923 @file{aclocal.m4} when the included macros are already distributed
12924 with the package (an idiom used in many packages), which reduces code
12925 duplication.  Many people liked that, but in fact this change was
12926 really introduced to fix a bug in rebuild rules: @file{Makefile.in}
12927 must be rebuilt whenever a dependency of @file{configure} changes, but
12928 all the @file{m4} files included in @file{aclocal.m4} where unknown
12929 from @command{automake}.  Now @command{automake} can just trace the
12930 @code{m4_include}s to discover the dependencies.
12932 @command{aclocal} also starts using the @option{--trace} Autoconf option
12933 in order to discover used macros more accurately.  This will turn out
12934 to be very tricky (later releases will improve this) as people had
12935 devised many ways to cope with the limitation of previous
12936 @command{aclocal} versions, notably using handwritten
12937 @code{m4_include}s: @command{aclocal} must make sure not to redefine a
12938 rule that is already included by such statement.
12940 Automake also has seen its guts rewritten.  Although this rewriting
12941 took a lot of efforts, it is only apparent to the users in that some
12942 constructions previously disallowed by the implementation now work
12943 nicely.  Conditionals, Locations, Variable and Rule definitions,
12944 Options: these items on which Automake works have been rewritten as
12945 separate Perl modules, and documented.
12947 @itemx 2004-01-11 Automake 1.8.1
12948 @itemx 2004-01-12 Automake 1.8.2
12949 @itemx 2004-03-07 Automake 1.8.3
12950 @itemx 2004-04-25 Automake 1.8.4
12951 @itemx 2004-05-16 Automake 1.8.5
12953 @item 2004-07-28 Automake 1.9
12955 This release tries to simplify the compilation rules it outputs to
12956 reduce the size of the Makefile.  The complaint initially come from
12957 the libgcj developers.  Their @file{Makefile.in} generated with
12958 Automake 1.4 and custom build rules (1.4 did not support compiled
12959 Java) is 250KB@.  The one generated by 1.8 was over 9MB@!  1.9 gets it
12960 down to 1.2MB@.
12962 Aside from this it contains mainly minor changes and bug-fixes.
12964 @itemx 2004-08-11 Automake 1.9.1
12965 @itemx 2004-09-19 Automake 1.9.2
12967 Automake has ten years.  This chapter of the manual was initially
12968 written for this occasion.
12970 @itemx 2007-10-29 Automake repository moves to @code{savannah.gnu.org} and uses
12971 git as primary repository.
12973 @end table
12975 @node Dependency Tracking Evolution
12976 @section Dependency Tracking in Automake
12978 Over the years Automake has deployed three different dependency
12979 tracking methods.  Each method, including the current one, has had
12980 flaws of various sorts.  Here we lay out the different dependency
12981 tracking methods, their flaws, and their fixes.  We conclude with
12982 recommendations for tool writers, and by indicating future directions
12983 for dependency tracking work in Automake.
12985 @menu
12986 * First Take on Dependencies::  Precomputed dependency tracking
12987 * Dependencies As Side Effects::  Update at developer compile time
12988 * Dependencies for the User::   Update at user compile time
12989 * Techniques for Dependencies::  Alternative approaches
12990 * Recommendations for Tool Writers::  What tool writers can do to help
12991 * Future Directions for Dependencies::  Languages Automake does not know
12992 @end menu
12994 @node First Take on Dependencies
12995 @subsection First Take on Dependency Tracking
12996 @unnumberedsubsubsec Description
12998 Our first attempt at automatic dependency tracking was based on the
12999 method recommended by GNU @command{make}.  (@pxref{Automatic
13000 Prerequisites, , Generating Prerequisites Automatically, make, The GNU
13001 make Manual})
13003 This version worked by precomputing dependencies ahead of time.  For
13004 each source file, it had a special @file{.P} file that held the
13005 dependencies.  There was a rule to generate a @file{.P} file by
13006 invoking the compiler appropriately.  All such @file{.P} files were
13007 included by the @file{Makefile}, thus implicitly becoming dependencies
13008 of @file{Makefile}.
13010 @unnumberedsubsubsec Bugs
13012 This approach had several critical bugs.
13014 @itemize
13015 @item
13016 The code to generate the @file{.P} file relied on @command{gcc}.
13017 (A limitation, not technically a bug.)
13018 @item
13019 The dependency tracking mechanism itself relied on GNU @command{make}.
13020 (A limitation, not technically a bug.)
13021 @item
13022 Because each @file{.P} file was a dependency of @file{Makefile}, this
13023 meant that dependency tracking was done eagerly by @command{make}.
13024 For instance, @samp{make clean} would cause all the dependency files
13025 to be updated, and then immediately removed.  This eagerness also
13026 caused problems with some configurations; if a certain source file
13027 could not be compiled on a given architecture for some reason,
13028 dependency tracking would fail, aborting the entire build.
13029 @item
13030 As dependency tracking was done as a pre-pass, compile times were
13031 doubled--the compiler had to be run twice per source file.
13032 @item
13033 @samp{make dist} re-ran @command{automake} to generate a
13034 @file{Makefile} that did not have automatic dependency tracking (and
13035 that was thus portable to any version of @command{make}).  In order to
13036 do this portably, Automake had to scan the dependency files and remove
13037 any reference that was to a source file not in the distribution.
13038 This process was error-prone.  Also, if @samp{make dist} was run in an
13039 environment where some object file had a dependency on a source file
13040 that was only conditionally created, Automake would generate a
13041 @file{Makefile} that referred to a file that might not appear in the
13042 end user's build.  A special, hacky mechanism was required to work
13043 around this.
13044 @end itemize
13046 @unnumberedsubsubsec Historical Note
13048 The code generated by Automake is often inspired by the
13049 @file{Makefile} style of a particular author.  In the case of the first
13050 implementation of dependency tracking, I believe the impetus and
13051 inspiration was Jim Meyering.  (I could be mistaken.  If you know
13052 otherwise feel free to correct me.)
13054 @node Dependencies As Side Effects
13055 @subsection Dependencies As Side Effects
13056 @unnumberedsubsubsec Description
13058 The next refinement of Automake's automatic dependency tracking scheme
13059 was to implement dependencies as side effects of the compilation.
13060 This was aimed at solving the most commonly reported problems with the
13061 first approach.  In particular we were most concerned with eliminating
13062 the weird rebuilding effect associated with make clean.
13064 In this approach, the @file{.P} files were included using the
13065 @code{-include} command, which let us create these files lazily.  This
13066 avoided the @samp{make clean} problem.
13068 We only computed dependencies when a file was actually compiled.  This
13069 avoided the performance penalty associated with scanning each file
13070 twice.  It also let us avoid the other problems associated with the
13071 first, eager, implementation.  For instance, dependencies would never
13072 be generated for a source file that was not compilable on a given
13073 architecture (because it in fact would never be compiled).
13075 @unnumberedsubsubsec Bugs
13077 @itemize
13078 @item
13079 This approach also relied on the existence of @command{gcc} and GNU
13080 @command{make}.  (A limitation, not technically a bug.)
13081 @item
13082 Dependency tracking was still done by the developer, so the problems
13083 from the first implementation relating to massaging of dependencies by
13084 @samp{make dist} were still in effect.
13085 @item
13086 This implementation suffered from the ``deleted header file'' problem.
13087 Suppose a lazily-created @file{.P} file includes a dependency on a
13088 given header file, like this:
13090 @example
13091 maude.o: maude.c something.h
13092 @end example
13094 Now suppose that you remove @file{something.h} and update @file{maude.c}
13095 so that this include is no longer needed.  If you run @command{make},
13096 you will get an error because there is no way to create
13097 @file{something.h}.
13099 We fixed this problem in a later release by further massaging the
13100 output of @command{gcc} to include a dummy dependency for each header
13101 file.
13102 @end itemize
13104 @node Dependencies for the User
13105 @subsection Dependencies for the User
13106 @unnumberedsubsubsec Description
13108 The bugs associated with @samp{make dist}, over time, became a real
13109 problem.  Packages using Automake were being built on a large number
13110 of platforms, and were becoming increasingly complex.  Broken
13111 dependencies were distributed in ``portable'' @file{Makefile.in}s,
13112 leading to user complaints.  Also, the requirement for @command{gcc}
13113 and GNU @command{make} was a constant source of bug reports.  The next
13114 implementation of dependency tracking aimed to remove these problems.
13116 We realized that the only truly reliable way to automatically track
13117 dependencies was to do it when the package itself was built.  This
13118 meant discovering a method portable to any version of make and any
13119 compiler.  Also, we wanted to preserve what we saw as the best point
13120 of the second implementation: dependency computation as a side effect
13121 of compilation.
13123 In the end we found that most modern make implementations support some
13124 form of include directive.  Also, we wrote a wrapper script that let
13125 us abstract away differences between dependency tracking methods for
13126 compilers.  For instance, some compilers cannot generate dependencies
13127 as a side effect of compilation.  In this case we simply have the
13128 script run the compiler twice.  Currently our wrapper script
13129 (@command{depcomp}) knows about twelve different compilers (including
13130 a "compiler" that simply invokes @command{makedepend} and then the
13131 real compiler, which is assumed to be a standard Unix-like C compiler
13132 with no way to do dependency tracking).
13134 @unnumberedsubsubsec Bugs
13136 @itemize
13137 @item
13138 Running a wrapper script for each compilation slows down the build.
13139 @item
13140 Many users don't really care about precise dependencies.
13141 @item
13142 This implementation, like every other automatic dependency tracking
13143 scheme in common use today (indeed, every one we've ever heard of),
13144 suffers from the ``duplicated new header'' bug.
13146 This bug occurs because dependency tracking tools, such as the
13147 compiler, only generate dependencies on the successful opening of a
13148 file, and not on every probe.
13150 Suppose for instance that the compiler searches three directories for
13151 a given header, and that the header is found in the third directory.
13152 If the programmer erroneously adds a header file with the same name to
13153 the first directory, then a clean rebuild from scratch could fail
13154 (suppose the new header file is buggy), whereas an incremental rebuild
13155 will succeed.
13157 What has happened here is that people have a misunderstanding of what
13158 a dependency is.  Tool writers think a dependency encodes information
13159 about which files were read by the compiler.  However, a dependency
13160 must actually encode information about what the compiler tried to do.
13162 This problem is not serious in practice.  Programmers typically do not
13163 use the same name for a header file twice in a given project.  (At
13164 least, not in C or C++.  This problem may be more troublesome in
13165 Java.)  This problem is easy to fix, by modifying dependency
13166 generators to record every probe, instead of every successful open.
13168 @item
13169 Since Automake generates dependencies as a side effect of compilation,
13170 there is a bootstrapping problem when header files are generated by
13171 running a program.  The problem is that, the first time the build is
13172 done, there is no way by default to know that the headers are
13173 required, so make might try to run a compilation for which the headers
13174 have not yet been built.
13176 This was also a problem in the previous dependency tracking implementation.
13178 The current fix is to use @code{BUILT_SOURCES} to list built headers
13179 (@pxref{Sources}).  This causes them to be built before any other
13180 build rules are run.  This is unsatisfactory as a general solution,
13181 however in practice it seems sufficient for most actual programs.
13182 @end itemize
13184 This code is used since Automake 1.5.
13186 In GCC 3.0, we managed to convince the maintainers to add special
13187 command-line options to help Automake more efficiently do its job.  We
13188 hoped this would let us avoid the use of a wrapper script when
13189 Automake's automatic dependency tracking was used with @command{gcc}.
13191 Unfortunately, this code doesn't quite do what we want.  In
13192 particular, it removes the dependency file if the compilation fails;
13193 we'd prefer that it instead only touch the file in any way if the
13194 compilation succeeds.
13196 Nevertheless, since Automake 1.7, when a recent @command{gcc} is
13197 detected at @command{configure} time, we inline the
13198 dependency-generation code and do not use the @command{depcomp}
13199 wrapper script.  This makes compilations faster for those using this
13200 compiler (probably our primary user base).  The counterpart is that
13201 because we have to encode two compilation rules in @file{Makefile}
13202 (with or without @command{depcomp}), the produced @file{Makefile}s are
13203 larger.
13205 @node Techniques for Dependencies
13206 @subsection Techniques for Computing Dependencies
13208 There are actually several ways for a build tool like Automake to
13209 cause tools to generate dependencies.
13211 @table @asis
13212 @item @command{makedepend}
13213 This was a commonly-used method in the past.  The idea is to run a
13214 special program over the source and have it generate dependency
13215 information.  Traditional implementations of @command{makedepend} are
13216 not completely precise; ordinarily they were conservative and
13217 discovered too many dependencies.
13218 @item The tool
13219 An obvious way to generate dependencies is to simply write the tool so
13220 that it can generate the information needed by the build tool.  This is
13221 also the most portable method.  Many compilers have an option to
13222 generate dependencies.  Unfortunately, not all tools provide such an
13223 option.
13224 @item The file system
13225 It is possible to write a special file system that tracks opens,
13226 reads, writes, etc, and then feed this information back to the build
13227 tool.  @command{clearmake} does this.  This is a very powerful
13228 technique, as it doesn't require cooperation from the
13229 tool.  Unfortunately it is also very difficult to implement and also
13230 not practical in the general case.
13231 @item @code{LD_PRELOAD}
13232 Rather than use the file system, one could write a special library to
13233 intercept @code{open} and other syscalls.  This technique is also quite
13234 powerful, but unfortunately it is not portable enough for use in
13235 @command{automake}.
13236 @end table
13238 @node Recommendations for Tool Writers
13239 @subsection Recommendations for Tool Writers
13241 We think that every compilation tool ought to be able to generate
13242 dependencies as a side effect of compilation.  Furthermore, at least
13243 while @command{make}-based tools are nearly universally in use (at
13244 least in the free software community), the tool itself should generate
13245 dummy dependencies for header files, to avoid the deleted header file
13246 bug.  Finally, the tool should generate a dependency for each probe,
13247 instead of each successful file open, in order to avoid the duplicated
13248 new header bug.
13250 @node Future Directions for Dependencies
13251 @subsection Future Directions for Dependencies
13253 Currently, only languages and compilers understood by Automake can
13254 have dependency tracking enabled.  We would like to see if it is
13255 practical (and worthwhile) to let this support be extended by the user
13256 to languages unknown to Automake.
13258 @node Releases
13259 @section Release Statistics
13261 The following table (inspired by @samp{perlhist(1)}) quantifies the
13262 evolution of Automake using these metrics:
13264 @table @asis
13265 @item Date, Rel
13266 The date and version of the release.
13267 @item am
13268 The number of lines of the @command{automake} script.
13269 @item acl
13270 The number of lines of the @command{aclocal} script.
13271 @item pm
13272 The number of lines of the @command{Perl} supporting modules.
13273 @item @file{*.am}
13274 The number of lines of the @file{Makefile} fragments.  The number in
13275 parentheses is the number of files.
13276 @item m4
13277 The number of lines (and files) of Autoconf macros.
13278 @item doc
13279 The number of pages of the documentation (the Postscript version).
13280 @item t
13281 The number of test cases in the test suite.  Of those, the number in
13282 parentheses is the number of generated test cases.
13283 @end table
13285 @multitable {8888-88-88} {8.8-p8} {8888} {8888} {8888} {8888 (88)} {8888 (88)} {888} {888 (88)}
13286 @headitem Date   @tab Rel    @tab   am @tab acl @tab   pm @tab @file{*.am} @tab m4 @tab doc @tab t
13287 @item 1994-09-19 @tab CVS    @tab  141 @tab     @tab      @tab  299 (24) @tab           @tab     @tab
13288 @item 1994-11-05 @tab CVS    @tab  208 @tab     @tab      @tab  332 (28) @tab           @tab     @tab
13289 @item 1995-11-23 @tab 0.20   @tab  533 @tab     @tab      @tab  458 (35) @tab           @tab   9 @tab
13290 @item 1995-11-26 @tab 0.21   @tab  613 @tab     @tab      @tab  480 (36) @tab           @tab  11 @tab
13291 @item 1995-11-28 @tab 0.22   @tab 1116 @tab     @tab      @tab  539 (38) @tab           @tab  12 @tab
13292 @item 1995-11-29 @tab 0.23   @tab 1240 @tab     @tab      @tab  541 (38) @tab           @tab  12 @tab
13293 @item 1995-12-08 @tab 0.24   @tab 1462 @tab     @tab      @tab  504 (33) @tab           @tab  14 @tab
13294 @item 1995-12-10 @tab 0.25   @tab 1513 @tab     @tab      @tab  511 (37) @tab           @tab  15 @tab
13295 @item 1996-01-03 @tab 0.26   @tab 1706 @tab     @tab      @tab  438 (36) @tab           @tab  16 @tab
13296 @item 1996-01-03 @tab 0.27   @tab 1706 @tab     @tab      @tab  438 (36) @tab           @tab  16 @tab
13297 @item 1996-01-13 @tab 0.28   @tab 1964 @tab     @tab      @tab  934 (33) @tab           @tab  16 @tab
13298 @item 1996-02-07 @tab 0.29   @tab 2299 @tab     @tab      @tab  936 (33) @tab           @tab  17 @tab
13299 @item 1996-02-24 @tab 0.30   @tab 2544 @tab     @tab      @tab  919 (32) @tab   85 (1)  @tab  20 @tab 9
13300 @item 1996-03-11 @tab 0.31   @tab 2877 @tab     @tab      @tab  919 (32) @tab   85 (1)  @tab  29 @tab 17
13301 @item 1996-04-27 @tab 0.32   @tab 3058 @tab     @tab      @tab  921 (31) @tab   85 (1)  @tab  30 @tab 26
13302 @item 1996-05-18 @tab 0.33   @tab 3110 @tab     @tab      @tab  926 (31) @tab  105 (1)  @tab  30 @tab 35
13303 @item 1996-05-28 @tab 1.0    @tab 3134 @tab     @tab      @tab  973 (32) @tab  105 (1)  @tab  30 @tab 38
13304 @item 1997-06-22 @tab 1.2    @tab 6089 @tab 385 @tab      @tab 1294 (36) @tab  592 (20) @tab  37 @tab 126
13305 @item 1998-04-05 @tab 1.3    @tab 6415 @tab 422 @tab      @tab 1470 (39) @tab  741 (23) @tab  39 @tab 156
13306 @item 1999-01-14 @tab 1.4    @tab 7240 @tab 426 @tab      @tab 1591 (40) @tab  734 (20) @tab  51 @tab 197
13307 @item 2001-05-08 @tab 1.4-p1 @tab 7251 @tab 426 @tab      @tab 1591 (40) @tab  734 (20) @tab  51 @tab 197
13308 @item 2001-05-24 @tab 1.4-p2 @tab 7268 @tab 439 @tab      @tab 1591 (40) @tab  734 (20) @tab  49 @tab 197
13309 @item 2001-06-07 @tab 1.4-p3 @tab 7312 @tab 439 @tab      @tab 1591 (40) @tab  734 (20) @tab  49 @tab 197
13310 @item 2001-06-10 @tab 1.4-p4 @tab 7321 @tab 439 @tab      @tab 1591 (40) @tab  734 (20) @tab  49 @tab 198
13311 @item 2001-07-15 @tab 1.4-p5 @tab 7228 @tab 426 @tab      @tab 1596 (40) @tab  734 (20) @tab  51 @tab 198
13312 @item 2001-08-23 @tab 1.5    @tab 8016 @tab 475 @tab  600 @tab 2654 (39) @tab 1166 (29) @tab  63 @tab 327
13313 @item 2002-03-05 @tab 1.6    @tab 8465 @tab 475 @tab 1136 @tab 2732 (39) @tab 1603 (27) @tab  66 @tab 365
13314 @item 2002-04-11 @tab 1.6.1  @tab 8544 @tab 475 @tab 1136 @tab 2741 (39) @tab 1603 (27) @tab  66 @tab 372
13315 @item 2002-06-14 @tab 1.6.2  @tab 8575 @tab 475 @tab 1136 @tab 2800 (39) @tab 1609 (27) @tab  67 @tab 386
13316 @item 2002-07-28 @tab 1.6.3  @tab 8600 @tab 475 @tab 1153 @tab 2809 (39) @tab 1609 (27) @tab  67 @tab 391
13317 @item 2002-07-28 @tab 1.4-p6 @tab 7332 @tab 455 @tab      @tab 1596 (40) @tab  735 (20) @tab  49 @tab 197
13318 @item 2002-09-25 @tab 1.7    @tab 9189 @tab 471 @tab 1790 @tab 2965 (39) @tab 1606 (28) @tab  73 @tab 430
13319 @item 2002-10-16 @tab 1.7.1  @tab 9229 @tab 475 @tab 1790 @tab 2977 (39) @tab 1606 (28) @tab  73 @tab 437
13320 @item 2002-12-06 @tab 1.7.2  @tab 9334 @tab 475 @tab 1790 @tab 2988 (39) @tab 1606 (28) @tab  77 @tab 445
13321 @item 2003-02-20 @tab 1.7.3  @tab 9389 @tab 475 @tab 1790 @tab 3023 (39) @tab 1651 (29) @tab  84 @tab 448
13322 @item 2003-04-23 @tab 1.7.4  @tab 9429 @tab 475 @tab 1790 @tab 3031 (39) @tab 1644 (29) @tab  85 @tab 458
13323 @item 2003-05-18 @tab 1.7.5  @tab 9429 @tab 475 @tab 1790 @tab 3033 (39) @tab 1645 (29) @tab  85 @tab 459
13324 @item 2003-07-10 @tab 1.7.6  @tab 9442 @tab 475 @tab 1790 @tab 3033 (39) @tab 1660 (29) @tab  85 @tab 461
13325 @item 2003-09-07 @tab 1.7.7  @tab 9443 @tab 475 @tab 1790 @tab 3041 (39) @tab 1660 (29) @tab  90 @tab 467
13326 @item 2003-10-07 @tab 1.7.8  @tab 9444 @tab 475 @tab 1790 @tab 3041 (39) @tab 1660 (29) @tab  90 @tab 468
13327 @item 2003-11-09 @tab 1.7.9  @tab 9444 @tab 475 @tab 1790 @tab 3048 (39) @tab 1660 (29) @tab  90 @tab 468
13328 @item 2003-12-10 @tab 1.8    @tab 7171 @tab 585 @tab 7730 @tab 3236 (39) @tab 1666 (31) @tab 104 @tab 521
13329 @item 2004-01-11 @tab 1.8.1  @tab 7217 @tab 663 @tab 7726 @tab 3287 (39) @tab 1686 (31) @tab 104 @tab 525
13330 @item 2004-01-12 @tab 1.8.2  @tab 7217 @tab 663 @tab 7726 @tab 3288 (39) @tab 1686 (31) @tab 104 @tab 526
13331 @item 2004-03-07 @tab 1.8.3  @tab 7214 @tab 686 @tab 7735 @tab 3303 (39) @tab 1695 (31) @tab 111 @tab 530
13332 @item 2004-04-25 @tab 1.8.4  @tab 7214 @tab 686 @tab 7736 @tab 3310 (39) @tab 1701 (31) @tab 112 @tab 531
13333 @item 2004-05-16 @tab 1.8.5  @tab 7240 @tab 686 @tab 7736 @tab 3299 (39) @tab 1701 (31) @tab 112 @tab 533
13334 @item 2004-07-28 @tab 1.9    @tab 7508 @tab 715 @tab 7794 @tab 3352 (40) @tab 1812 (32) @tab 115 @tab 551
13335 @item 2004-08-11 @tab 1.9.1  @tab 7512 @tab 715 @tab 7794 @tab 3354 (40) @tab 1812 (32) @tab 115 @tab 552
13336 @item 2004-09-19 @tab 1.9.2  @tab 7512 @tab 715 @tab 7794 @tab 3354 (40) @tab 1812 (32) @tab 132 @tab 554
13337 @item 2004-11-01 @tab 1.9.3  @tab 7507 @tab 718 @tab 7804 @tab 3354 (40) @tab 1812 (32) @tab 134 @tab 556
13338 @item 2004-12-18 @tab 1.9.4  @tab 7508 @tab 718 @tab 7856 @tab 3361 (40) @tab 1811 (32) @tab 140 @tab 560
13339 @item 2005-02-13 @tab 1.9.5  @tab 7523 @tab 719 @tab 7859 @tab 3373 (40) @tab 1453 (32) @tab 142 @tab 562
13340 @item 2005-07-10 @tab 1.9.6  @tab 7539 @tab 699 @tab 7867 @tab 3400 (40) @tab 1453 (32) @tab 144 @tab 570
13341 @item 2006-10-15 @tab 1.10   @tab 7859 @tab 1072 @tab 8024 @tab 3512 (40) @tab 1496 (34) @tab 172 @tab 604
13342 @item 2008-01-19 @tab 1.10.1 @tab 7870 @tab 1089 @tab 8025 @tab 3520 (40) @tab 1499 (34) @tab 173 @tab 617
13343 @item 2008-11-23 @tab 1.10.2 @tab 7882 @tab 1089 @tab 8027 @tab 3540 (40) @tab 1509 (34) @tab 176 @tab 628
13344 @item 2009-05-17 @tab 1.11   @tab 8721 @tab 1092 @tab 8289 @tab 4164 (42) @tab 1714 (37) @tab 181 @tab 732 (20)
13345 @end multitable
13348 @c ========================================================== Appendices
13350 @page
13351 @node Copying This Manual
13352 @appendix Copying This Manual
13354 @menu
13355 * GNU Free Documentation License::  License for copying this manual
13356 @end menu
13358 @node GNU Free Documentation License
13359 @appendixsec GNU Free Documentation License
13360 @include fdl.texi
13362 @page
13363 @node Indices
13364 @appendix Indices
13366 @menu
13367 * Macro Index::                 Index of Autoconf macros
13368 * Variable Index::              Index of Makefile variables
13369 * General Index::               General index
13370 @end menu
13372 @node Macro Index
13373 @appendixsec Macro Index
13375 @printindex fn
13377 @node Variable Index
13378 @appendixsec Variable Index
13380 @printindex vr
13382 @node General Index
13383 @appendixsec General Index
13385 @printindex cp
13388 @bye
13390 @c  LocalWords:  texinfo setfilename settitle setchapternewpage texi direntry
13391 @c  LocalWords:  dircategory in's aclocal ifinfo titlepage Tromey vskip pt sp
13392 @c  LocalWords:  filll defcodeindex ov cv op tr syncodeindex fn cp vr ifnottex
13393 @c  LocalWords:  dir Automake's ac Dist Gnits gnits cygnus dfn Autoconf's pxref
13394 @c  LocalWords:  cindex Autoconf autoconf perl samp cvs dist trindex SUBST foo
13395 @c  LocalWords:  xs emph FIXME ref vindex pkglibdir pkgincludedir pkgdatadir mt
13396 @c  LocalWords:  pkg libdir cpio bindir sbindir rmt pax sbin zar zardir acindex
13397 @c  LocalWords:  HTML htmldir html noinst TEXINFOS nodist nobase strudel CFLAGS
13398 @c  LocalWords:  libmumble CC YFLAGS ansi knr itemx de fication config url comp
13399 @c  LocalWords:  depcomp elisp sh mdate mkinstalldirs mkdir py tex dvi ps pdf
13400 @c  LocalWords:  ylwrap zardoz INIT gettext acinclude mv FUNCS LIBOBJS LDADD fr
13401 @c  LocalWords:  uref featureful dnl src LINGUAS es ko nl pl sl sv PROG ISC doc
13402 @c  LocalWords:  POSIX STDC fcntl FUNC ALLOCA blksize struct stat intl po chmod
13403 @c  LocalWords:  ChangeLog SUBDIRS gettextize gpl testdata getopt INTLLIBS cpp
13404 @c  LocalWords:  localedir datadir DLOCALEDIR DEXIT CPPFLAGS autoreconf opindex
13405 @c  LocalWords:  AUX var symlink deps Wno Wnone package's aclocal's distclean
13406 @c  LocalWords:  ltmain xref LIBSOURCE LIBSOURCES LIBOBJ MEMCMP vs RANLIB CXX
13407 @c  LocalWords:  LDFLAGS LIBTOOL libtool XTRA LIBS gettext's acdir APIVERSION
13408 @c  LocalWords:  dirlist noindent usr MULTILIB multilib Multilibs TIOCGWINSZ sc
13409 @c  LocalWords:  GWINSZ termios SRCDIR tarball bzip LISPDIR lispdir XEmacs CCAS
13410 @c  LocalWords:  emacsen MicroEmacs CCASFLAGS UX GCJ gcj GCJFLAGS posix DMALLOC
13411 @c  LocalWords:  dmalloc ldmalloc REGEX regex rx DEPDIR DEP DEFUN aclocaldir fi
13412 @c  LocalWords:  mymacro myothermacro AMFLAGS autopoint autogen libtoolize yum
13413 @c  LocalWords:  autoheader README MAKEFLAGS subdir Inetutils sync COND endif
13414 @c  LocalWords:  Miller's installable includedir inc pkgdata EXEEXT libexec bsd
13415 @c  LocalWords:  pkglib libexecdir prog libcpio cpio's dlopen dlpreopen linux
13416 @c  LocalWords:  subsubsection OBJEXT esac lib LTLIBRARIES liblob LIBADD AR ar
13417 @c  LocalWords:  ARFLAGS cru ing maude libgettext lo LTLIBOBJS rpath SGI PRE yy
13418 @c  LocalWords:  libmaude CCLD CXXFLAGS FFLAGS LFLAGS OBJCFLAGS RFLAGS DEFS cc
13419 @c  LocalWords:  SHORTNAME vtable srcdir nostdinc basename yxx cxx ll lxx gdb
13420 @c  LocalWords:  lexers yymaxdepth maxdepth yyparse yylex yyerror yylval lval
13421 @c  LocalWords:  yychar yydebug yypact yyr yydef def yychk chk yypgo pgo yyact
13422 @c  LocalWords:  yyexca exca yyerrflag errflag yynerrs nerrs yyps yypv pv yys
13423 @c  LocalWords:  yystate yytmp tmp yyv yyval val yylloc lloc yyreds yytoks toks
13424 @c  LocalWords:  yylhs yylen yydefred yydgoto yysindex yyrindex yygindex yyname
13425 @c  LocalWords:  yytable yycheck yyrule byacc CXXCOMPILE CXXLINK FLINK cfortran
13426 @c  LocalWords:  Catalogue preprocessable FLIBS libfoo baz JAVACFLAGS java exe
13427 @c  LocalWords:  SunOS fying basenames exeext uninstalled oldinclude kr FSF's
13428 @c  LocalWords:  pkginclude oldincludedir sysconf sharedstate localstate gcc rm
13429 @c  LocalWords:  sysconfdir sharedstatedir localstatedir preexist CLEANFILES gz
13430 @c  LocalWords:  depfile tmpdepfile depmode const interoperate
13431 @c  LocalWords:  JAVAC javac JAVAROOT builddir CLASSPATH ENV pyc pyo pkgpython
13432 @c  LocalWords:  pyexecdir pkgpyexecdir Python's pythondir pkgpythondir txi ois
13433 @c  LocalWords:  installinfo vers MAKEINFO makeinfo MAKEINFOFLAGS noinstall rf
13434 @c  LocalWords:  mandir thesame alsothesame installman myexecbin DESTDIR Pinard
13435 @c  LocalWords:  uninstall installdirs uninstalls MOSTLYCLEANFILES mostlyclean
13436 @c  LocalWords:  DISTCLEANFILES MAINTAINERCLEANFILES GZIP gzip shar exp
13437 @c  LocalWords:  distdir distcheck distcleancheck listfiles distuninstallcheck
13438 @c  LocalWords:  VPATH tarfile stdout XFAIL DejaGnu dejagnu DEJATOOL runtest ln
13439 @c  LocalWords:  RUNTESTDEFAULTFLAGS toolchain RUNTESTFLAGS asis readme DVIPS
13440 @c  LocalWords:  installcheck gzipped tarZ std utils etags mkid multilibbing cd
13441 @c  LocalWords:  ARGS taggable ETAGSFLAGS lang ctags CTAGSFLAGS GTAGS gtags idl
13442 @c  LocalWords:  foocc doit idlC multilibs ABIs cmindex defmac ARG enableval FC
13443 @c  LocalWords:  MSG xtrue DBG pathchk CYGWIN afile proglink versioned CVS's TE
13444 @c  LocalWords:  wildcards Autoconfiscated subsubheading autotools Meyering API
13445 @c  LocalWords:  ois's wildcard Wportability cartouche vrindex printindex Duret
13446 @c  LocalWords:  DSOMEFLAG DVERSION automake Lutz insertcopying versioning FAQ
13447 @c  LocalWords:  LTLIBOBJ Libtool's libtool's libltdl dlopening itutions libbar
13448 @c  LocalWords:  WANTEDLIBS libhello sublibraries libtop libsub dlopened Ratfor
13449 @c  LocalWords:  mymodule timestamps timestamp underquoted MAKEINFOHTMLFLAGS te
13450 @c  LocalWords:  GNUmakefile Subpackages subpackage's subpackages aux
13451 @c  LocalWords:  detailmenu Timeline pwd reldir AUTOM autom PREREQ FOOBAR libc
13452 @c  LocalWords:  libhand subpackage moduleN libmain libmisc FCFLAGS FCCOMPILE
13453 @c  LocalWords:  FCLINK subst sed ELCFILES elc MAKEINFOHTML dvips esyscmd ustar
13454 @c  LocalWords:  tarballs Woverride vfi ELFILES djm AutoMake honkin FSF
13455 @c  LocalWords:  fileutils precanned MacKenzie's reimplement termutils Tromey's
13456 @c  LocalWords:  cois gnitsians LIBPROGRAMS progs LIBLIBRARIES Textutils Ulrich
13457 @c  LocalWords:  Matzigkeit Drepper's Gord Matzigkeit's jm Dalley Debian org
13458 @c  LocalWords:  Administrivia ILU CORBA Sourceware Molenda sourceware Elliston
13459 @c  LocalWords:  dep Oliva Akim Demaille Aiieeee Demaillator Akim's sourcequake
13460 @c  LocalWords:  grep backported screenshots libgcj KB unnumberedsubsubsec pre
13461 @c  LocalWords:  precomputing hacky makedepend inline clearmake LD PRELOAD Rel
13462 @c  LocalWords:  syscalls perlhist acl pm multitable headitem fdl appendixsec
13463 @c  LocalWords:  LTALLOCA MALLOC malloc memcmp strdup alloca libcompat xyz DFOO
13464 @c  LocalWords:  unprefixed buildable preprocessed DBAZ DDATADIR WARNINGCFLAGS
13465 @c  LocalWords:  LIBFOOCFLAGS LIBFOOLDFLAGS ftable testSubDir obj LIBTOOLFLAGS
13466 @c  LocalWords:  barexec Pinard's automatize initialize lzma xz