build: Extend PATH from 'pre-inst-env' script
[automake.git] / doc / automake.texi
blob544f7c1e4861e4d5908e522ea261946f78091d60
1 \input texinfo   @c -*-texinfo-*-
2 @c %**start of header
3 @setfilename automake.info
4 @settitle automake
5 @documentencoding UTF-8
6 @documentlanguage en
7 @setchapternewpage off
8 @c %**end of header
10 @include version.texi
12 @c @ovar(ARG, DEFAULT)
13 @c -------------------
14 @c The ARG is an optional argument.  To be used for macro arguments in
15 @c their documentation (@defmac).
16 @macro ovar{varname}
17 @r{[}@var{\varname\}@r{]}
18 @end macro
20 @set PACKAGE_BUGREPORT bug-automake@@gnu.org
22 @copying
24 This manual is for GNU Automake (version @value{VERSION},
25 @value{UPDATED}), a program that creates GNU standards-compliant
26 Makefiles from template files.
28 Copyright @copyright{} 1995-2017 Free Software 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 @dircategory Software development
42 @direntry
43 * Automake: (automake).         Making GNU standards-compliant Makefiles.
44 @end direntry
46 @dircategory Individual utilities
47 @direntry
48 * aclocal-invocation: (automake)aclocal Invocation.   Generating aclocal.m4.
49 * automake-invocation: (automake)automake Invocation. Generating Makefile.in.
50 @end direntry
52 @titlepage
53 @title GNU Automake
54 @subtitle For version @value{VERSION}, @value{UPDATED}
55 @author David MacKenzie
56 @author Tom Tromey
57 @author Alexandre Duret-Lutz
58 @author Ralf Wildenhues
59 @author Stefano Lattarini
60 @page
61 @vskip 0pt plus 1filll
62 @insertcopying
63 @end titlepage
65 @contents
67 @c We use the following macros to define indices:
68 @c   @cindex   concepts, and anything that does not fit elsewhere
69 @c   @vindex   Makefile variables
70 @c   @trindex  targets
71 @c   @acindex  Autoconf/Automake/Libtool/M4/... macros
72 @c   @opindex  tool options
74 @c Define an index of configure macros.
75 @defcodeindex ac
76 @c Define an index of options.
77 @defcodeindex op
78 @c Define an index of targets.
79 @defcodeindex tr
80 @c Define an index of commands.
81 @defcodeindex cm
83 @c Put the macros in the function index.
84 @syncodeindex ac fn
86 @c Put everything else into one index (arbitrarily chosen to be the
87 @c concept index).
88 @syncodeindex op cp
89 @syncodeindex tr cp
90 @syncodeindex cm cp
92 @ifnottex
93 @node Top
94 @comment  node-name,  next,  previous,  up
95 @top GNU Automake
97 @insertcopying
99 @menu
100 * Introduction::                Automake's purpose
101 * Autotools Introduction::      An Introduction to the Autotools
102 * Generalities::                General ideas
103 * Examples::                    Some example packages
104 * automake Invocation::         Creating a Makefile.in
105 * configure::                   Scanning configure.ac, using aclocal
106 * Directories::                 Declaring subdirectories
107 * Programs::                    Building programs and libraries
108 * Other Objects::               Other derived objects
109 * Other GNU Tools::             Other GNU Tools
110 * Documentation::               Building documentation
111 * Install::                     What gets installed
112 * Clean::                       What gets cleaned
113 * Dist::                        What goes in a distribution
114 * Tests::                       Support for test suites
115 * Rebuilding::                  Automatic rebuilding of Makefile
116 * Options::                     Changing Automake's behavior
117 * Miscellaneous::               Miscellaneous rules
118 * Include::                     Including extra files in an Automake template
119 * Conditionals::                Conditionals
120 * Silencing Make::              Obtain less verbose output from @command{make}
121 * Gnits::                       The effect of @option{--gnu} and @option{--gnits}
122 * Not Enough::                  When Automake is not Enough
123 * Distributing::                Distributing the Makefile.in
124 * API Versioning::              About compatibility between Automake versions
125 * Upgrading::                   Upgrading to a Newer Automake Version
126 * FAQ::                         Frequently Asked Questions
127 * Copying This Manual::         How to make copies of this manual
128 * Indices::                     Indices of variables, macros, and concepts
130 @detailmenu
131  --- The Detailed Node Listing ---
133 An Introduction to the Autotools
135 * GNU Build System::            Introducing the GNU Build System
136 * Use Cases::                   Use Cases for the GNU Build System
137 * Why Autotools::               How Autotools Help
138 * Hello World::                 A Small Hello World Package
140 Use Cases for the GNU Build System
142 * Basic Installation::          Common installation procedure
143 * Standard Targets::            A list of standard Makefile targets
144 * Standard Directory Variables::  A list of standard directory variables
145 * Standard Configuration Variables::  Using configuration variables
146 * config.site::                 Using a config.site file
147 * VPATH Builds::                Parallel build trees
148 * Two-Part Install::            Installing data and programs separately
149 * Cross-Compilation::           Building for other architectures
150 * Renaming::                    Renaming programs at install time
151 * DESTDIR::                     Building binary packages with DESTDIR
152 * Preparing Distributions::     Rolling out tarballs
153 * Dependency Tracking::         Automatic dependency tracking
154 * Nested Packages::             The GNU Build Systems can be nested
156 A Small Hello World
158 * Creating amhello::            Create @file{amhello-1.0.tar.gz} from scratch
159 * amhello's configure.ac Setup Explained::
160 * amhello's Makefile.am Setup Explained::
162 General ideas
164 * General Operation::           General operation of Automake
165 * Strictness::                  Standards conformance checking
166 * Uniform::                     The Uniform Naming Scheme
167 * Length Limitations::          Staying below the command line length limit
168 * Canonicalization::            How derived variables are named
169 * User Variables::              Variables reserved for the user
170 * Auxiliary Programs::          Programs automake might require
172 Some example packages
174 * Complete::                    A simple example, start to finish
175 * true::                        Building true and false
177 Scanning @file{configure.ac}, using @command{aclocal}
179 * Requirements::                Configuration requirements
180 * Optional::                    Other things Automake recognizes
181 * aclocal Invocation::          Auto-generating aclocal.m4
182 * Macros::                      Autoconf macros supplied with Automake
184 Auto-generating aclocal.m4
186 * aclocal Options::             Options supported by aclocal
187 * Macro Search Path::           How aclocal finds .m4 files
188 * Extending aclocal::           Writing your own aclocal macros
189 * Local Macros::                Organizing local macros
190 * Serials::                     Serial lines in Autoconf macros
191 * Future of aclocal::           aclocal's scheduled death
193 Autoconf macros supplied with Automake
195 * Public Macros::               Macros that you can use.
196 * Private Macros::              Macros that you should not use.
198 Directories
200 * Subdirectories::              Building subdirectories recursively
201 * Conditional Subdirectories::  Conditionally not building directories
202 * Alternative::                 Subdirectories without recursion
203 * Subpackages::                 Nesting packages
205 Conditional Subdirectories
207 * SUBDIRS vs DIST_SUBDIRS::     Two sets of directories
208 * Subdirectories with AM_CONDITIONAL::  Specifying conditional subdirectories
209 * Subdirectories with AC_SUBST::  Another way for conditional recursion
210 * Unconfigured Subdirectories::  Not even creating a @samp{Makefile}
212 Building Programs and Libraries
214 * A Program::                   Building a program
215 * A Library::                   Building a library
216 * A Shared Library::            Building a Libtool library
217 * Program and Library Variables::  Variables controlling program and
218                                 library builds
219 * Default _SOURCES::            Default source files
220 * LIBOBJS::                     Special handling for LIBOBJS and ALLOCA
221 * Program Variables::           Variables used when building a program
222 * Yacc and Lex::                Yacc and Lex support
223 * C++ Support::                 Compiling C++ sources
224 * Objective C Support::         Compiling Objective C sources
225 * Objective C++ Support::       Compiling Objective C++ sources
226 * Unified Parallel C Support::  Compiling Unified Parallel C sources
227 * Assembly Support::            Compiling assembly sources
228 * Fortran 77 Support::          Compiling Fortran 77 sources
229 * Fortran 9x Support::          Compiling Fortran 9x sources
230 * Java Support with gcj::       Compiling Java sources using gcj
231 * Vala Support::                Compiling Vala sources
232 * Support for Other Languages::  Compiling other languages
233 * Dependencies::                Automatic dependency tracking
234 * EXEEXT::                      Support for executable extensions
236 Building a program
238 * Program Sources::             Defining program sources
239 * Linking::                     Linking with libraries or extra objects
240 * Conditional Sources::         Handling conditional sources
241 * Conditional Programs::        Building a program conditionally
243 Building a Shared Library
245 * Libtool Concept::             Introducing Libtool
246 * Libtool Libraries::           Declaring Libtool Libraries
247 * Conditional Libtool Libraries::  Building Libtool Libraries Conditionally
248 * Conditional Libtool Sources::  Choosing Library Sources Conditionally
249 * Libtool Convenience Libraries::  Building Convenience Libtool Libraries
250 * Libtool Modules::             Building Libtool Modules
251 * Libtool Flags::               Using _LIBADD, _LDFLAGS, and _LIBTOOLFLAGS
252 * LTLIBOBJS::                   Using $(LTLIBOBJS) and $(LTALLOCA)
253 * Libtool Issues::              Common Issues Related to Libtool's Use
255 Common Issues Related to Libtool's Use
257 * Error required file ltmain.sh not found::  The need to run libtoolize
258 * Objects created both with libtool and without::  Avoid a specific build race
260 Fortran 77 Support
262 * Preprocessing Fortran 77::    Preprocessing Fortran 77 sources
263 * Compiling Fortran 77 Files::  Compiling Fortran 77 sources
264 * Mixing Fortran 77 With C and C++::  Mixing Fortran 77 With C and C++
266 Mixing Fortran 77 With C and C++
268 * How the Linker is Chosen::    Automatic linker selection
270 Fortran 9x Support
272 * Compiling Fortran 9x Files::  Compiling Fortran 9x sources
274 Other Derived Objects
276 * Scripts::                     Executable scripts
277 * Headers::                     Header files
278 * Data::                        Architecture-independent data files
279 * Sources::                     Derived sources
281 Built Sources
283 * Built Sources Example::       Several ways to handle built sources.
285 Other GNU Tools
287 * Emacs Lisp::                  Emacs Lisp
288 * gettext::                     Gettext
289 * Libtool::                     Libtool
290 * Java::                        Java bytecode compilation (deprecated)
291 * Python::                      Python
293 Building documentation
295 * Texinfo::                     Texinfo
296 * Man Pages::                   Man pages
298 What Gets Installed
300 * Basics of Installation::      What gets installed where
301 * The Two Parts of Install::    Installing data and programs separately
302 * Extending Installation::      Adding your own rules for installation
303 * Staged Installs::             Installation in a temporary location
304 * Install Rules for the User::  Useful additional rules
306 What Goes in a Distribution
308 * Basics of Distribution::      Files distributed by default
309 * Fine-grained Distribution Control::  @code{dist_} and @code{nodist_} prefixes
310 * The dist Hook::               A target for last-minute distribution changes
311 * Checking the Distribution::   @samp{make distcheck} explained
312 * The Types of Distributions::  A variety of formats and compression methods
314 Support for test suites
316 * Generalities about Testing::  Generic concepts and terminology about testing
317 * Simple Tests::                Listing test scripts in @code{TESTS}
318 * Custom Test Drivers::         Writing and using custom test drivers
319 * Using the TAP test protocol:: Integrating test scripts that use the TAP protocol
320 * DejaGnu Tests::               Interfacing with the @command{dejagnu} testing framework
321 * Install Tests::               Running tests on installed packages
323 Simple Tests
325 * Scripts-based Testsuites::    Automake-specific concepts and terminology
326 * Serial Test Harness::         Older (and discouraged) serial test harness
327 * Parallel Test Harness::       Generic concurrent test harness
329 Using the TAP test protocol
331 * Introduction to TAP::
332 * Use TAP with the Automake test harness::
333 * Incompatibilities with other TAP parsers and drivers::
334 * Links and external resources on TAP::
336 Custom Test Drivers
338 * Overview of Custom Test Drivers Support::
339 * Declaring Custom Test Drivers::
340 * API for Custom Test Drivers::
342 API for Custom Test Drivers
344 * Command-line arguments for test drivers::
345 * Log files generation and test results recording::
346 * Testsuite progress output::
348 Changing Automake's Behavior
350 * Options generalities::        Semantics of Automake option
351 * List of Automake options::    A comprehensive list of Automake options
353 Miscellaneous Rules
355 * Tags::                        Interfacing to cscope, etags and mkid
356 * Suffixes::                    Handling new file extensions
358 Conditionals
360 * Usage of Conditionals::       Declaring conditional content
361 * Limits of Conditionals::      Enclosing complete statements
363 Silencing Make
365 * Make verbosity::              Make is verbose by default
366 * Tricks For Silencing Make::   Standard and generic ways to silence make
367 * Automake Silent Rules::       How Automake can help in silencing make
369 When Automake Isn't Enough
371 * Extending::                   Adding new rules or overriding existing ones.
372 * Third-Party Makefiles::       Integrating Non-Automake @file{Makefile}s.
374 Frequently Asked Questions about Automake
376 * CVS::                         CVS and generated files
377 * maintainer-mode::             missing and AM_MAINTAINER_MODE
378 * Wildcards::                   Why doesn't Automake support wildcards?
379 * Limitations on File Names::   Limitations on source and installed file names
380 * Errors with distclean::       Files left in build directory after distclean
381 * Flag Variables Ordering::     CFLAGS vs.@: AM_CFLAGS vs.@: mumble_CFLAGS
382 * Renamed Objects::             Why are object files sometimes renamed?
383 * Per-Object Flags::            How to simulate per-object flags?
384 * Multiple Outputs::            Writing rules for tools with many output files
385 * Hard-Coded Install Paths::    Installing to hard-coded locations
386 * Debugging Make Rules::        Strategies when things don't work as expected
387 * Reporting Bugs::              Feedback on bugs and feature requests
389 Copying This Manual
391 * GNU Free Documentation License::  License for copying this manual
393 Indices
395 * Macro Index::                 Index of Autoconf macros
396 * Variable Index::              Index of Makefile variables
397 * General Index::               General index
399 @end detailmenu
400 @end menu
402 @end ifnottex
405 @node Introduction
406 @chapter Introduction
408 Automake is a tool for automatically generating @file{Makefile.in}s
409 from files called @file{Makefile.am}.  Each @file{Makefile.am} is
410 basically a series of @command{make} variable
411 definitions@footnote{These variables are also called @dfn{make macros}
412 in Make terminology, however in this manual we reserve the term
413 @dfn{macro} for Autoconf's macros.}, with rules being thrown in
414 occasionally.  The generated @file{Makefile.in}s are compliant with
415 the GNU Makefile standards.
417 @cindex GNU Makefile standards
419 The GNU Makefile Standards Document
420 (@pxref{Makefile Conventions, , , standards, The GNU Coding Standards})
421 is long, complicated, and subject to change.  The goal of Automake is to
422 remove the burden of Makefile maintenance from the back of the
423 individual GNU maintainer (and put it on the back of the Automake
424 maintainers).
426 The typical Automake input file is simply a series of variable definitions.
427 Each such file is processed to create a @file{Makefile.in}.
429 @cindex Constraints of Automake
430 @cindex Automake constraints
432 Automake does constrain a project in certain ways; for instance, it
433 assumes that the project uses Autoconf (@pxref{Top, , Introduction,
434 autoconf, The Autoconf Manual}), and enforces certain restrictions on
435 the @file{configure.ac} contents.
437 @cindex Automake requirements
438 @cindex Requirements, Automake
440 Automake requires @command{perl} in order to generate the
441 @file{Makefile.in}s.  However, the distributions created by Automake are
442 fully GNU standards-compliant, and do not require @command{perl} in order
443 to be built.
445 @cindex Bugs, reporting
446 @cindex Reporting bugs
447 @cindex E-mail, bug reports
449 For more information on bug reports, @xref{Reporting Bugs}.
451 @node Autotools Introduction
452 @chapter An Introduction to the Autotools
454 If you are new to Automake, maybe you know that it is part of a set of
455 tools called @emph{The Autotools}.  Maybe you've already delved into a
456 package full of files named @file{configure}, @file{configure.ac},
457 @file{Makefile.in}, @file{Makefile.am}, @file{aclocal.m4}, @dots{},
458 some of them claiming to be @emph{generated by} Autoconf or Automake.
459 But the exact purpose of these files and their relations is probably
460 fuzzy.  The goal of this chapter is to introduce you to this machinery,
461 to show you how it works and how powerful it is.  If you've never
462 installed or seen such a package, do not worry: this chapter will walk
463 you through it.
465 If you need some teaching material, more illustrations, or a less
466 @command{automake}-centered continuation, some slides for this
467 introduction are available in Alexandre Duret-Lutz's
468 @uref{http://www.lrde.epita.fr/@/~adl/@/autotools.html,
469 Autotools Tutorial}.
470 This chapter is the written version of the first part of his tutorial.
472 @menu
473 * GNU Build System::            Introducing the GNU Build System
474 * Use Cases::                   Use Cases for the GNU Build System
475 * Why Autotools::               How Autotools Help
476 * Hello World::                 A Small Hello World Package
477 @end menu
479 @node GNU Build System
480 @section Introducing the GNU Build System
481 @cindex GNU Build System, introduction
483 It is a truth universally acknowledged, that as a developer in
484 possession of a new package, you must be in want of a build system.
486 In the Unix world, such a build system is traditionally achieved using
487 the command @command{make} (@pxref{Top, , Overview, make, The GNU Make
488 Manual}).  You express the recipe to build your package in a
489 @file{Makefile}.  This file is a set of rules to build the files in
490 the package.  For instance the program @file{prog} may be built by
491 running the linker on the files @file{main.o}, @file{foo.o}, and
492 @file{bar.o}; the file @file{main.o} may be built by running the
493 compiler on @file{main.c}; etc.  Each time @command{make} is run, it
494 reads @file{Makefile}, checks the existence and modification time of
495 the files mentioned, decides what files need to be built (or rebuilt),
496 and runs the associated commands.
498 When a package needs to be built on a different platform than the one
499 it was developed on, its @file{Makefile} usually needs to be adjusted.
500 For instance the compiler may have another name or require more
501 options.  In 1991, David J. MacKenzie got tired of customizing
502 @file{Makefile} for the 20 platforms he had to deal with.  Instead, he
503 handcrafted a little shell script called @file{configure} to
504 automatically adjust the @file{Makefile} (@pxref{Genesis, , Genesis,
505 autoconf, The Autoconf Manual}).  Compiling his package was now
506 as simple as running @code{./configure && make}.
508 @cindex GNU Coding Standards
510 Today this process has been standardized in the GNU project.  The GNU
511 Coding Standards (@pxref{Managing Releases, The Release Process, ,
512 standards, The GNU Coding Standards}) explains how each package of the
513 GNU project should have a @file{configure} script, and the minimal
514 interface it should have.  The @file{Makefile} too should follow some
515 established conventions.  The result?  A unified build system that
516 makes all packages almost indistinguishable by the installer.  In its
517 simplest scenario, all the installer has to do is to unpack the
518 package, run @code{./configure && make && make install}, and repeat
519 with the next package to install.
521 We call this build system the @dfn{GNU Build System}, since it was
522 grown out of the GNU project.  However it is used by a vast number of
523 other packages: following any existing convention has its advantages.
525 @cindex Autotools, introduction
527 The Autotools are tools that will create a GNU Build System for your
528 package.  Autoconf mostly focuses on @file{configure} and Automake on
529 @file{Makefile}s.  It is entirely possible to create a GNU Build
530 System without the help of these tools.  However it is rather
531 burdensome and error-prone.  We will discuss this again after some
532 illustration of the GNU Build System in action.
534 @node Use Cases
535 @section Use Cases for the GNU Build System
536 @cindex GNU Build System, use cases
537 @cindex GNU Build System, features
538 @cindex Features of the GNU Build System
539 @cindex Use Cases for the GNU Build System
540 @cindex @file{amhello-1.0.tar.gz}, location
541 @cindex @file{amhello-1.0.tar.gz}, use cases
543 In this section we explore several use cases for the GNU Build System.
544 You can replay all of these examples on the @file{amhello-1.0.tar.gz}
545 package distributed with Automake.  If Automake is installed on your
546 system, you should find a copy of this file in
547 @file{@var{prefix}/share/doc/automake/amhello-1.0.tar.gz}, where
548 @var{prefix} is the installation prefix specified during configuration
549 (@var{prefix} defaults to @file{/usr/local}, however if Automake was
550 installed by some GNU/Linux distribution it most likely has been set
551 to @file{/usr}).  If you do not have a copy of Automake installed,
552 you can find a copy of this file inside the @file{doc/} directory of
553 the Automake package.
555 Some of the following use cases present features that are in fact
556 extensions to the GNU Build System.  Read: they are not specified by
557 the GNU Coding Standards, but they are nonetheless part of the build
558 system created by the Autotools.  To keep things simple, we do not
559 point out the difference.  Our objective is to show you many of the
560 features that the build system created by the Autotools will offer to
561 you.
563 @menu
564 * Basic Installation::          Common installation procedure
565 * Standard Targets::            A list of standard Makefile targets
566 * Standard Directory Variables::  A list of standard directory variables
567 * Standard Configuration Variables::  Using configuration variables
568 * config.site::                 Using a config.site file
569 * VPATH Builds::                Parallel build trees
570 * Two-Part Install::            Installing data and programs separately
571 * Cross-Compilation::           Building for other architectures
572 * Renaming::                    Renaming programs at install time
573 * DESTDIR::                     Building binary packages with DESTDIR
574 * Preparing Distributions::     Rolling out tarballs
575 * Dependency Tracking::         Automatic dependency tracking
576 * Nested Packages::             The GNU Build Systems can be nested
577 @end menu
579 @node Basic Installation
580 @subsection Basic Installation
581 @cindex Configuration, basics
582 @cindex Installation, basics
583 @cindex GNU Build System, basics
585 The most common installation procedure looks as follows.
587 @example
588 ~ % @kbd{tar zxf amhello-1.0.tar.gz}
589 ~ % @kbd{cd amhello-1.0}
590 ~/amhello-1.0 % @kbd{./configure}
591 @dots{}
592 config.status: creating Makefile
593 config.status: creating src/Makefile
594 @dots{}
595 ~/amhello-1.0 % @kbd{make}
596 @dots{}
597 ~/amhello-1.0 % @kbd{make check}
598 @dots{}
599 ~/amhello-1.0 % @kbd{su}
600 Password:
601 /home/adl/amhello-1.0 # @kbd{make install}
602 @dots{}
603 /home/adl/amhello-1.0 # @kbd{exit}
604 ~/amhello-1.0 % @kbd{make installcheck}
605 @dots{}
606 @end example
608 @cindex Unpacking
610 The user first unpacks the package.  Here, and in the following
611 examples, we will use the non-portable @code{tar zxf} command for
612 simplicity.  On a system without GNU @command{tar} installed, this
613 command should read @code{gunzip -c amhello-1.0.tar.gz | tar xf -}.
615 The user then enters the newly created directory to run the
616 @file{configure} script.  This script probes the system for various
617 features, and finally creates the @file{Makefile}s.  In this toy
618 example there are only two @file{Makefile}s, but in real-world projects,
619 there may be many more, usually one @file{Makefile} per directory.
621 It is now possible to run @code{make}.  This will construct all the
622 programs, libraries, and scripts that need to be constructed for the
623 package.  In our example, this compiles the @file{hello} program.
624 All files are constructed in place, in the source tree; we will see
625 later how this can be changed.
627 @code{make check} causes the package's tests to be run.  This step is
628 not mandatory, but it is often good to make sure the programs that
629 have been built behave as they should, before you decide to install
630 them.  Our example does not contain any tests, so running @code{make
631 check} is a no-op.
633 @cindex su, before @code{make install}
634 After everything has been built, and maybe tested, it is time to
635 install it on the system.  That means copying the programs,
636 libraries, header files, scripts, and other data files from the
637 source directory to their final destination on the system.  The
638 command @code{make install} will do that.  However, by default
639 everything will be installed in subdirectories of @file{/usr/local}:
640 binaries will go into @file{/usr/local/bin}, libraries will end up in
641 @file{/usr/local/lib}, etc.  This destination is usually not writable
642 by any user, so we assume that we have to become root before we can
643 run @code{make install}.  In our example, running @code{make install}
644 will copy the program @file{hello} into @file{/usr/local/bin}
645 and @file{README} into @file{/usr/local/share/doc/amhello}.
647 A last and optional step is to run @code{make installcheck}.  This
648 command may run tests on the installed files.  @code{make check} tests
649 the files in the source tree, while @code{make installcheck} tests
650 their installed copies.  The tests run by the latter can be different
651 from those run by the former.  For instance, there are tests that
652 cannot be run in the source tree.  Conversely, some packages are set
653 up so that @code{make installcheck} will run the very same tests as
654 @code{make check}, only on different files (non-installed
655 vs.@: installed).  It can make a difference, for instance when the
656 source tree's layout is different from that of the installation.
657 Furthermore it may help to diagnose an incomplete installation.
659 Presently most packages do not have any @code{installcheck} tests
660 because the existence of @code{installcheck} is little known, and its
661 usefulness is neglected.  Our little toy package is no better: @code{make
662 installcheck} does nothing.
664 @node Standard Targets
665 @subsection Standard @file{Makefile} Targets
667 So far we have come across four ways to run @command{make} in the GNU
668 Build System: @code{make}, @code{make check}, @code{make install}, and
669 @code{make installcheck}.  The words @code{check}, @code{install}, and
670 @code{installcheck}, passed as arguments to @command{make}, are called
671 @dfn{targets}.  @code{make} is a shorthand for @code{make all},
672 @code{all} being the default target in the GNU Build System.
674 Here is a list of the most useful targets that the GNU Coding Standards
675 specify.
677 @table @code
678 @item make all
679 @trindex all
680 Build programs, libraries, documentation, etc.@: (same as @code{make}).
681 @item make install
682 @trindex install
683 Install what needs to be installed, copying the files from the
684 package's tree to system-wide directories.
685 @item make install-strip
686 @trindex install-strip
687 Same as @code{make install}, then strip debugging symbols.  Some
688 users like to trade space for useful bug reports@enddots{}
689 @item make uninstall
690 @trindex uninstall
691 The opposite of @code{make install}: erase the installed files.
692 (This needs to be run from the same build tree that was installed.)
693 @item make clean
694 @trindex clean
695 Erase from the build tree the files built by @code{make all}.
696 @item make distclean
697 @trindex distclean
698 Additionally erase anything @code{./configure} created.
699 @item make check
700 @trindex check
701 Run the test suite, if any.
702 @item make installcheck
703 @trindex installcheck
704 Check the installed programs or libraries, if supported.
705 @item make dist
706 @trindex dist
707 Recreate @file{@var{package}-@var{version}.tar.gz} from all the source
708 files.
709 @end table
711 @node Standard Directory Variables
712 @subsection Standard Directory Variables
713 @cindex directory variables
715 The GNU Coding Standards also specify a hierarchy of variables to
716 denote installation directories.  Some of these are:
718 @multitable {Directory variable} {@code{$@{datarootdir@}/doc/$@{PACKAGE@}}}
719 @headitem Directory variable    @tab Default value
720 @item @code{prefix}              @tab @code{/usr/local}
721 @item @w{@ @ @code{exec_prefix}} @tab @code{$@{prefix@}}
722 @item @w{@ @ @ @ @code{bindir}}  @tab @code{$@{exec_prefix@}/bin}
723 @item @w{@ @ @ @ @code{libdir}}  @tab @code{$@{exec_prefix@}/lib}
724 @item @w{@ @ @ @ @dots{}}
725 @item @w{@ @ @code{includedir}}  @tab @code{$@{prefix@}/include}
726 @item @w{@ @ @code{datarootdir}} @tab @code{$@{prefix@}/share}
727 @item @w{@ @ @ @ @code{datadir}} @tab @code{$@{datarootdir@}}
728 @item @w{@ @ @ @ @code{mandir}}  @tab @code{$@{datarootdir@}/man}
729 @item @w{@ @ @ @ @code{infodir}} @tab @code{$@{datarootdir@}/info}
730 @item @w{@ @ @ @ @code{docdir}}  @tab @code{$@{datarootdir@}/doc/$@{PACKAGE@}}
731 @item @w{@ @ @dots{}}
732 @end multitable
734 @c We should provide a complete table somewhere, but not here.  The
735 @c complete list of directory variables it too confusing as-is.  It
736 @c requires some explanations that are too complicated for this
737 @c introduction.  Besides listing directories like localstatedir
738 @c would make the explanations in ``Two-Part Install'' harder.
740 Each of these directories has a role which is often obvious from its
741 name.  In a package, any installable file will be installed in one of
742 these directories.  For instance in @code{amhello-1.0}, the program
743 @file{hello} is to be installed in @var{bindir}, the directory for
744 binaries.  The default value for this directory is
745 @file{/usr/local/bin}, but the user can supply a different value when
746 calling @command{configure}.  Also the file @file{README} will be
747 installed into @var{docdir}, which defaults to
748 @file{/usr/local/share/doc/amhello}.
750 @opindex --prefix
752 As a user, if you wish to install a package on your own account, you
753 could proceed as follows:
755 @example
756 ~/amhello-1.0 % @kbd{./configure --prefix ~/usr}
757 @dots{}
758 ~/amhello-1.0 % @kbd{make}
759 @dots{}
760 ~/amhello-1.0 % @kbd{make install}
761 @dots{}
762 @end example
764 This would install @file{~/usr/bin/hello} and
765 @file{~/usr/share/doc/amhello/README}.
767 The list of all such directory options is shown by
768 @code{./configure --help}.
770 @node Standard Configuration Variables
771 @subsection Standard Configuration Variables
772 @cindex configuration variables, overriding
774 The GNU Coding Standards also define a set of standard configuration
775 variables used during the build.  Here are some:
777 @table @asis
778 @item @code{CC}
779 C compiler command
780 @item @code{CFLAGS}
781 C compiler flags
782 @item @code{CXX}
783 C++ compiler command
784 @item @code{CXXFLAGS}
785 C++ compiler flags
786 @item @code{LDFLAGS}
787 linker flags
788 @item @code{CPPFLAGS}
789 C/C++ preprocessor flags
790 @item @dots{}
791 @end table
793 @command{configure} usually does a good job at setting appropriate
794 values for these variables, but there are cases where you may want to
795 override them.  For instance you may have several versions of a
796 compiler installed and would like to use another one, you may have
797 header files installed outside the default search path of the
798 compiler, or even libraries out of the way of the linker.
800 Here is how one would call @command{configure} to force it to use
801 @command{gcc-3} as C compiler, use header files from
802 @file{~/usr/include} when compiling, and libraries from
803 @file{~/usr/lib} when linking.
805 @example
806 ~/amhello-1.0 % @kbd{./configure --prefix ~/usr CC=gcc-3 \
807 CPPFLAGS=-I$HOME/usr/include LDFLAGS=-L$HOME/usr/lib}
808 @end example
810 Again, a full list of these variables appears in the output of
811 @code{./configure --help}.
813 @node config.site
814 @subsection Overriding Default Configuration Setting with @file{config.site}
815 @cindex @file{config.site} example
817 When installing several packages using the same setup, it can be
818 convenient to create a file to capture common settings.
819 If a file named @file{@var{prefix}/share/config.site} exists,
820 @command{configure} will source it at the beginning of its execution.
822 Recall the command from the previous section:
824 @example
825 ~/amhello-1.0 % @kbd{./configure --prefix ~/usr CC=gcc-3 \
826 CPPFLAGS=-I$HOME/usr/include LDFLAGS=-L$HOME/usr/lib}
827 @end example
829 Assuming we are installing many package in @file{~/usr}, and will
830 always want to use these definitions of @code{CC}, @code{CPPFLAGS}, and
831 @code{LDFLAGS}, we can automate this by creating the following
832 @file{~/usr/share/config.site} file:
834 @example
835 test -z "$CC" && CC=gcc-3
836 test -z "$CPPFLAGS" && CPPFLAGS=-I$HOME/usr/include
837 test -z "$LDFLAGS" && LDFLAGS=-L$HOME/usr/lib
838 @end example
840 Now, any time a @file{configure} script is using the @file{~/usr}
841 prefix, it will execute the above @file{config.site} and define
842 these three variables.
844 @example
845 ~/amhello-1.0 % @kbd{./configure --prefix ~/usr}
846 configure: loading site script /home/adl/usr/share/config.site
847 @dots{}
848 @end example
850 @xref{Site Defaults, , Setting Site Defaults, autoconf, The Autoconf
851 Manual}, for more information about this feature.
854 @node VPATH Builds
855 @subsection Parallel Build Trees (a.k.a.@: VPATH Builds)
856 @cindex Parallel build trees
857 @cindex VPATH builds
858 @cindex source tree and build tree
859 @cindex build tree and source tree
860 @cindex trees, source vs.@: build
862 The GNU Build System distinguishes two trees: the source tree, and
863 the build tree.
865 The source tree is rooted in the directory containing
866 @file{configure}.  It contains all the sources files (those that are
867 distributed), and may be arranged using several subdirectories.
869 The build tree is rooted in the directory in which @file{configure}
870 was run, and is populated with all object files, programs, libraries,
871 and other derived files built from the sources (and hence not
872 distributed).  The build tree usually has the same subdirectory layout
873 as the source tree; its subdirectories are created automatically by
874 the build system.
876 If @file{configure} is executed in its own directory, the source and
877 build trees are combined: derived files are constructed in the same
878 directories as their sources.  This was the case in our first
879 installation example (@pxref{Basic Installation}).
881 A common request from users is that they want to confine all derived
882 files to a single directory, to keep their source directories
883 uncluttered.  Here is how we could run @file{configure} to build
884 everything in a subdirectory called @file{build/}.
886 @example
887 ~ % @kbd{tar zxf ~/amhello-1.0.tar.gz}
888 ~ % @kbd{cd amhello-1.0}
889 ~/amhello-1.0 % @kbd{mkdir build && cd build}
890 ~/amhello-1.0/build % @kbd{../configure}
891 @dots{}
892 ~/amhello-1.0/build % @kbd{make}
893 @dots{}
894 @end example
896 These setups, where source and build trees are different, are often
897 called @dfn{parallel builds} or @dfn{VPATH builds}.  The expression
898 @emph{parallel build} is misleading: the word @emph{parallel} is a
899 reference to the way the build tree shadows the source tree, it is not
900 about some concurrency in the way build commands are run.  For this
901 reason we refer to such setups using the name @emph{VPATH builds} in
902 the following.  @emph{VPATH} is the name of the @command{make} feature
903 used by the @file{Makefile}s to allow these builds (@pxref{General
904 Search, , @code{VPATH} Search Path for All Prerequisites, make, The
905 GNU Make Manual}).
907 @cindex multiple configurations, example
908 @cindex debug build, example
909 @cindex optimized build, example
911 VPATH builds have other interesting uses.  One is to build the same
912 sources with multiple configurations.  For instance:
914 @c Keep in sync with amhello-cflags.sh
915 @example
916 ~ % @kbd{tar zxf ~/amhello-1.0.tar.gz}
917 ~ % @kbd{cd amhello-1.0}
918 ~/amhello-1.0 % @kbd{mkdir debug optim && cd debug}
919 ~/amhello-1.0/debug % @kbd{../configure CFLAGS='-g -O0'}
920 @dots{}
921 ~/amhello-1.0/debug % @kbd{make}
922 @dots{}
923 ~/amhello-1.0/debug % cd ../optim
924 ~/amhello-1.0/optim % @kbd{../configure CFLAGS='-O3 -fomit-frame-pointer'}
925 @dots{}
926 ~/amhello-1.0/optim % @kbd{make}
927 @dots{}
928 @end example
930 With network file systems, a similar approach can be used to build the
931 same sources on different machines.  For instance, suppose that the
932 sources are installed on a directory shared by two hosts: @code{HOST1}
933 and @code{HOST2}, which may be different platforms.
935 @example
936 ~ % @kbd{cd /nfs/src}
937 /nfs/src % @kbd{tar zxf ~/amhello-1.0.tar.gz}
938 @end example
940 On the first host, you could create a local build directory:
941 @example
942 [HOST1] ~ % @kbd{mkdir /tmp/amh && cd /tmp/amh}
943 [HOST1] /tmp/amh % @kbd{/nfs/src/amhello-1.0/configure}
945 [HOST1] /tmp/amh % @kbd{make && sudo make install}
947 @end example
949 @noindent
950 (Here we assume that the installer has configured @command{sudo} so it
951 can execute @code{make install} with root privileges; it is more convenient
952 than using @command{su} like in @ref{Basic Installation}).
954 On the second host, you would do exactly the same, possibly at
955 the same time:
956 @example
957 [HOST2] ~ % @kbd{mkdir /tmp/amh && cd /tmp/amh}
958 [HOST2] /tmp/amh % @kbd{/nfs/src/amhello-1.0/configure}
960 [HOST2] /tmp/amh % @kbd{make && sudo make install}
962 @end example
964 @cindex read-only source tree
965 @cindex source tree, read-only
967 In this scenario, nothing forbids the @file{/nfs/src/amhello-1.0}
968 directory from being read-only.  In fact VPATH builds are also a means
969 of building packages from a read-only medium such as a CD-ROM.  (The
970 FSF used to sell CD-ROM with unpacked source code, before the GNU
971 project grew so big.)
973 @node Two-Part Install
974 @subsection Two-Part Installation
976 In our last example (@pxref{VPATH Builds}), a source tree was shared
977 by two hosts, but compilation and installation were done separately on
978 each host.
980 The GNU Build System also supports networked setups where part of the
981 installed files should be shared amongst multiple hosts.  It does so
982 by distinguishing architecture-dependent files from
983 architecture-independent files, and providing two @file{Makefile}
984 targets to install each of these classes of files.
986 @trindex install-exec
987 @trindex install-data
989 These targets are @code{install-exec} for architecture-dependent files
990 and @code{install-data} for architecture-independent files.
991 The command we used up to now, @code{make install}, can be thought of
992 as a shorthand for @code{make install-exec install-data}.
994 From the GNU Build System point of view, the distinction between
995 architecture-dependent files and architecture-independent files is
996 based exclusively on the directory variable used to specify their
997 installation destination.  In the list of directory variables we
998 provided earlier (@pxref{Standard Directory Variables}), all the
999 variables based on @var{exec-prefix} designate architecture-dependent
1000 directories whose files will be installed by @code{make install-exec}.
1001 The others designate architecture-independent directories and will
1002 serve files installed by @code{make install-data}.  @xref{The Two Parts
1003 of Install}, for more details.
1005 Here is how we could revisit our two-host installation example,
1006 assuming that (1) we want to install the package directly in
1007 @file{/usr}, and (2) the directory @file{/usr/share} is shared by the
1008 two hosts.
1010 On the first host we would run
1011 @example
1012 [HOST1] ~ % @kbd{mkdir /tmp/amh && cd /tmp/amh}
1013 [HOST1] /tmp/amh % @kbd{/nfs/src/amhello-1.0/configure --prefix /usr}
1015 [HOST1] /tmp/amh % @kbd{make && sudo make install}
1017 @end example
1019 On the second host, however, we need only install the
1020 architecture-specific files.
1021 @example
1022 [HOST2] ~ % @kbd{mkdir /tmp/amh && cd /tmp/amh}
1023 [HOST2] /tmp/amh % @kbd{/nfs/src/amhello-1.0/configure --prefix /usr}
1025 [HOST2] /tmp/amh % @kbd{make && sudo make install-exec}
1027 @end example
1029 In packages that have installation checks, it would make sense to run
1030 @code{make installcheck} (@pxref{Basic Installation}) to verify that
1031 the package works correctly despite the apparent partial installation.
1033 @node Cross-Compilation
1034 @subsection Cross-Compilation
1035 @cindex cross-compilation
1037 To @dfn{cross-compile} is to build on one platform a binary that will
1038 run on another platform.  When speaking of cross-compilation, it is
1039 important to distinguish between the @dfn{build platform} on which
1040 the compilation is performed, and the @dfn{host platform} on which the
1041 resulting executable is expected to run.  The following
1042 @command{configure} options are used to specify each of them:
1044 @table @option
1045 @item --build=@var{build}
1046 @opindex --build=@var{build}
1047 The system on which the package is built.
1048 @item --host=@var{host}
1049 @opindex --host=@var{host}
1050 The system where built programs and libraries will run.
1051 @end table
1053 When the @option{--host} is used, @command{configure} will search for
1054 the cross-compiling suite for this platform.  Cross-compilation tools
1055 commonly have their target architecture as prefix of their name.  For
1056 instance my cross-compiler for MinGW32 has its binaries called
1057 @code{i586-mingw32msvc-gcc}, @code{i586-mingw32msvc-ld},
1058 @code{i586-mingw32msvc-as}, etc.
1060 @cindex MinGW cross-compilation example
1061 @cindex cross-compilation example
1063 Here is how we could build @code{amhello-1.0} for
1064 @code{i586-mingw32msvc} on a GNU/Linux PC.
1066 @c Keep in sync with amhello-cross-compile.sh
1067 @smallexample
1068 ~/amhello-1.0 % @kbd{./configure --build i686-pc-linux-gnu --host i586-mingw32msvc}
1069 checking for a BSD-compatible install... /usr/bin/install -c
1070 checking whether build environment is sane... yes
1071 checking for gawk... gawk
1072 checking whether make sets $(MAKE)... yes
1073 checking for i586-mingw32msvc-strip... i586-mingw32msvc-strip
1074 checking for i586-mingw32msvc-gcc... i586-mingw32msvc-gcc
1075 checking for C compiler default output file name... a.exe
1076 checking whether the C compiler works... yes
1077 checking whether we are cross compiling... yes
1078 checking for suffix of executables... .exe
1079 checking for suffix of object files... o
1080 checking whether we are using the GNU C compiler... yes
1081 checking whether i586-mingw32msvc-gcc accepts -g... yes
1082 checking for i586-mingw32msvc-gcc option to accept ANSI C...
1083 @dots{}
1084 ~/amhello-1.0 % @kbd{make}
1085 @dots{}
1086 ~/amhello-1.0 % @kbd{cd src; file hello.exe}
1087 hello.exe: MS Windows PE 32-bit Intel 80386 console executable not relocatable
1088 @end smallexample
1090 The @option{--host} and @option{--build} options are usually all we
1091 need for cross-compiling.  The only exception is if the package being
1092 built is itself a cross-compiler: we need a third option to specify
1093 its target architecture.
1095 @table @option
1096 @item --target=@var{target}
1097 @opindex --target=@var{target}
1098 When building compiler tools: the system for which the tools will
1099 create output.
1100 @end table
1102 For instance when installing GCC, the GNU Compiler Collection, we can
1103 use @option{--target=@/@var{target}} to specify that we want to build
1104 GCC as a cross-compiler for @var{target}.  Mixing @option{--build} and
1105 @option{--target}, we can actually cross-compile a cross-compiler;
1106 such a three-way cross-compilation is known as a @dfn{Canadian cross}.
1108 @xref{Specifying Names, , Specifying the System Type, autoconf, The
1109 Autoconf Manual}, for more information about these @command{configure}
1110 options.
1112 @node Renaming
1113 @subsection Renaming Programs at Install Time
1114 @cindex Renaming programs
1115 @cindex Transforming program names
1116 @cindex Programs, renaming during installation
1118 The GNU Build System provides means to automatically rename
1119 executables and manpages before they are installed (@pxref{Man Pages}).
1120 This is especially convenient
1121 when installing a GNU package on a system that already has a
1122 proprietary implementation you do not want to overwrite.  For instance,
1123 you may want to install GNU @command{tar} as @command{gtar} so you can
1124 distinguish it from your vendor's @command{tar}.
1126 This can be done using one of these three @command{configure} options.
1128 @table @option
1129 @item --program-prefix=@var{prefix}
1130 @opindex --program-prefix=@var{prefix}
1131 Prepend @var{prefix} to installed program names.
1132 @item --program-suffix=@var{suffix}
1133 @opindex --program-suffix=@var{suffix}
1134 Append @var{suffix} to installed program names.
1135 @item --program-transform-name=@var{program}
1136 @opindex --program-transform-name=@var{program}
1137 Run @code{sed @var{program}} on installed program names.
1138 @end table
1140 The following commands would install @file{hello}
1141 as @file{/usr/local/bin/test-hello}, for instance.
1143 @example
1144 ~/amhello-1.0 % @kbd{./configure --program-prefix test-}
1145 @dots{}
1146 ~/amhello-1.0 % @kbd{make}
1147 @dots{}
1148 ~/amhello-1.0 % @kbd{sudo make install}
1149 @dots{}
1150 @end example
1152 @node DESTDIR
1153 @subsection Building Binary Packages Using DESTDIR
1154 @vindex DESTDIR
1156 The GNU Build System's @code{make install} and @code{make uninstall}
1157 interface does not exactly fit the needs of a system administrator
1158 who has to deploy and upgrade packages on lots of hosts.  In other
1159 words, the GNU Build System does not replace a package manager.
1161 Such package managers usually need to know which files have been
1162 installed by a package, so a mere @code{make install} is
1163 inappropriate.
1165 @cindex Staged installation
1167 The @code{DESTDIR} variable can be used to perform a staged
1168 installation.  The package should be configured as if it was going to
1169 be installed in its final location (e.g., @code{--prefix /usr}), but
1170 when running @code{make install}, the @code{DESTDIR} should be set to
1171 the absolute name of a directory into which the installation will be
1172 diverted.  From this directory it is easy to review which files are
1173 being installed where, and finally copy them to their final location
1174 by some means.
1176 @cindex Binary package
1178 For instance here is how we could create a binary package containing a
1179 snapshot of all the files to be installed.
1181 @c Keep in sync with amhello-binpkg.sh
1182 @example
1183 ~/amhello-1.0 % @kbd{./configure --prefix /usr}
1184 @dots{}
1185 ~/amhello-1.0 % @kbd{make}
1186 @dots{}
1187 ~/amhello-1.0 % @kbd{make DESTDIR=$HOME/inst install}
1188 @dots{}
1189 ~/amhello-1.0 % @kbd{cd ~/inst}
1190 ~/inst % @kbd{find . -type f -print > ../files.lst}
1191 ~/inst % @kbd{tar zcvf ~/amhello-1.0-i686.tar.gz `cat ../files.lst`}
1192 ./usr/bin/hello
1193 ./usr/share/doc/amhello/README
1194 @end example
1196 After this example, @code{amhello-1.0-i686.tar.gz} is ready to be
1197 uncompressed in @file{/} on many hosts.  (Using @code{`cat ../files.lst`}
1198 instead of @samp{.} as argument for @command{tar} avoids entries for
1199 each subdirectory in the archive: we would not like @command{tar} to
1200 restore the modification time of @file{/}, @file{/usr/}, etc.)
1202 Note that when building packages for several architectures, it might
1203 be convenient to use @code{make install-data} and @code{make
1204 install-exec} (@pxref{Two-Part Install}) to gather
1205 architecture-independent files in a single package.
1207 @xref{Install}, for more information.
1209 @c We should document PRE_INSTALL/POST_INSTALL/NORMAL_INSTALL and their
1210 @c UNINSTALL counterparts.
1212 @node Preparing Distributions
1213 @subsection Preparing Distributions
1214 @cindex Preparing distributions
1215 @cindex Packages, preparation
1216 @cindex Distributions, preparation
1218 We have already mentioned @code{make dist}.  This target collects all
1219 your source files and the necessary parts of the build system to
1220 create a tarball named @file{@var{package}-@var{version}.tar.gz}.
1222 @cindex @code{distcheck} better than @code{dist}
1224 Another, more useful command is @code{make distcheck}.  The
1225 @code{distcheck} target constructs
1226 @file{@var{package}-@var{version}.tar.gz} just as well as @code{dist},
1227 but it additionally ensures most of the use cases presented so far
1228 work:
1230 @itemize @bullet
1231 @item
1232 It attempts a full compilation of the package (@pxref{Basic
1233 Installation}), unpacking the newly constructed tarball, running
1234 @code{make}, @code{make check}, @code{make install}, as well as
1235 @code{make installcheck}, and even @code{make dist},
1236 @item
1237 it tests VPATH builds with read-only source tree (@pxref{VPATH Builds}),
1238 @item
1239 it makes sure @code{make clean}, @code{make distclean}, and @code{make
1240 uninstall} do not omit any file (@pxref{Standard Targets}),
1241 @item
1242 and it checks that @code{DESTDIR} installations work (@pxref{DESTDIR}).
1243 @end itemize
1245 All of these actions are performed in a temporary directory, so that no
1246 root privileges are required.  Please note that the exact location and the
1247 exact structure of such a subdirectory (where the extracted sources are
1248 placed, how the temporary build and install directories are named and how
1249 deeply they are nested, etc.) is to be considered an implementation detail,
1250 which can change at any time; so do not rely on it.
1252 Releasing a package that fails @code{make distcheck} means that one of
1253 the scenarios we presented will not work and some users will be
1254 disappointed.  Therefore it is a good practice to release a package
1255 only after a successful @code{make distcheck}.  This of course does
1256 not imply that the package will be flawless, but at least it will
1257 prevent some of the embarrassing errors you may find in packages
1258 released by people who have never heard about @code{distcheck} (like
1259 @code{DESTDIR} not working because of a typo, or a distributed file
1260 being erased by @code{make clean}, or even @code{VPATH} builds not
1261 working).
1263 @xref{Creating amhello}, to recreate @file{amhello-1.0.tar.gz} using
1264 @code{make distcheck}.  @xref{Checking the Distribution}, for more
1265 information about @code{distcheck}.
1267 @node Dependency Tracking
1268 @subsection Automatic Dependency Tracking
1269 @cindex Dependency tracking
1271 Dependency tracking is performed as a side-effect of compilation.
1272 Each time the build system compiles a source file, it computes its
1273 list of dependencies (in C these are the header files included by the
1274 source being compiled).  Later, any time @command{make} is run and a
1275 dependency appears to have changed, the dependent files will be
1276 rebuilt.
1278 Automake generates code for automatic dependency tracking by default,
1279 unless the developer chooses to override it; for more information,
1280 @pxref{Dependencies}.
1282 When @command{configure} is executed, you can see it probing each
1283 compiler for the dependency mechanism it supports (several mechanisms
1284 can be used):
1286 @example
1287 ~/amhello-1.0 % @kbd{./configure --prefix /usr}
1288 @dots{}
1289 checking dependency style of gcc... gcc3
1290 @dots{}
1291 @end example
1293 Because dependencies are only computed as a side-effect of the
1294 compilation, no dependency information exists the first time a package
1295 is built.  This is OK because all the files need to be built anyway:
1296 @code{make} does not have to decide which files need to be rebuilt.
1297 In fact, dependency tracking is completely useless for one-time builds
1298 and there is a @command{configure} option to disable this:
1300 @table @option
1301 @item --disable-dependency-tracking
1302 @opindex --disable-dependency-tracking
1303 Speed up one-time builds.
1304 @end table
1306 Some compilers do not offer any practical way to derive the list of
1307 dependencies as a side-effect of the compilation, requiring a separate
1308 run (maybe of another tool) to compute these dependencies.  The
1309 performance penalty implied by these methods is important enough to
1310 disable them by default.  The option @option{--enable-dependency-tracking}
1311 must be passed to @command{configure} to activate them.
1313 @table @option
1314 @item --enable-dependency-tracking
1315 @opindex --enable-dependency-tracking
1316 Do not reject slow dependency extractors.
1317 @end table
1319 @xref{Dependency Tracking Evolution, , Dependency Tracking Evolution,
1320 automake-history, Brief History of Automake}, for some discussion about
1321 the different dependency tracking schemes used by Automake over the years.
1323 @node Nested Packages
1324 @subsection Nested Packages
1325 @cindex Nested packages
1326 @cindex Packages, nested
1327 @cindex Subpackages
1329 Although nesting packages isn't something we would recommend to
1330 someone who is discovering the Autotools, it is a nice feature worthy
1331 of mention in this small advertising tour.
1333 Autoconfiscated packages (that means packages whose build system have
1334 been created by Autoconf and friends) can be nested to arbitrary
1335 depth.
1337 A typical setup is that package A will distribute one of the libraries
1338 it needs in a subdirectory.  This library B is a complete package with
1339 its own GNU Build System.  The @command{configure} script of A will
1340 run the @command{configure} script of B as part of its execution,
1341 building and installing A will also build and install B.  Generating a
1342 distribution for A will also include B.
1344 It is possible to gather several packages like this.  GCC is a heavy
1345 user of this feature.  This gives installers a single package to
1346 configure, build and install, while it allows developers to work on
1347 subpackages independently.
1349 When configuring nested packages, the @command{configure} options
1350 given to the top-level @command{configure} are passed recursively to
1351 nested @command{configure}s.  A package that does not understand an
1352 option will ignore it, assuming it is meaningful to some other
1353 package.
1355 @opindex --help=recursive
1357 The command @code{configure --help=recursive} can be used to display
1358 the options supported by all the included packages.
1360 @xref{Subpackages}, for an example setup.
1362 @node Why Autotools
1363 @section How Autotools Help
1364 @cindex Autotools, purpose
1366 There are several reasons why you may not want to implement the GNU
1367 Build System yourself (read: write a @file{configure} script and
1368 @file{Makefile}s yourself).
1370 @itemize @bullet
1371 @item
1372 As we have seen, the GNU Build System has a lot of
1373 features (@pxref{Use Cases}).
1374 Some users may expect features you have not implemented because
1375 you did not need them.
1376 @item
1377 Implementing these features portably is difficult and exhausting.
1378 Think of writing portable shell scripts, and portable
1379 @file{Makefile}s, for systems you may not have handy.  @xref{Portable
1380 Shell, , Portable Shell Programming, autoconf, The Autoconf Manual}, to
1381 convince yourself.
1382 @item
1383 You will have to upgrade your setup to follow changes to the GNU
1384 Coding Standards.
1385 @end itemize
1387 The GNU Autotools take all this burden off your back and provide:
1389 @itemize @bullet
1390 @item
1391 Tools to create a portable, complete, and self-contained GNU Build
1392 System, from simple instructions.
1393 @emph{Self-contained} meaning the resulting build system does not
1394 require the GNU Autotools.
1395 @item
1396 A central place where fixes and improvements are made:
1397 a bug-fix for a portability issue will benefit every package.
1398 @end itemize
1400 Yet there also exist reasons why you may want NOT to use the
1401 Autotools@enddots{} For instance you may be already using (or used to)
1402 another incompatible build system.  Autotools will only be useful if
1403 you do accept the concepts of the GNU Build System.  People who have their
1404 own idea of how a build system should work will feel frustrated by the
1405 Autotools.
1407 @node Hello World
1408 @section A Small Hello World
1409 @cindex Example Hello World
1410 @cindex Hello World example
1411 @cindex @file{amhello-1.0.tar.gz}, creation
1413 In this section we recreate the @file{amhello-1.0} package from
1414 scratch.  The first subsection shows how to call the Autotools to
1415 instantiate the GNU Build System, while the second explains the
1416 meaning of the @file{configure.ac} and @file{Makefile.am} files read
1417 by the Autotools.
1419 @anchor{amhello Explained}
1420 @menu
1421 * Creating amhello::            Create @file{amhello-1.0.tar.gz} from scratch
1422 * amhello's configure.ac Setup Explained::
1423 * amhello's Makefile.am Setup Explained::
1424 @end menu
1426 @node Creating amhello
1427 @subsection Creating @file{amhello-1.0.tar.gz}
1429 Here is how we can recreate @file{amhello-1.0.tar.gz} from scratch.
1430 The package is simple enough so that we will only need to write 5
1431 files.  (You may copy them from the final @file{amhello-1.0.tar.gz}
1432 that is distributed with Automake if you do not want to write them.)
1434 Create the following files in an empty directory.
1436 @itemize @bullet
1438 @item
1439 @file{src/main.c} is the source file for the @file{hello} program.  We
1440 store it in the @file{src/} subdirectory, because later, when the package
1441 evolves, it will ease the addition of a @file{man/} directory for man
1442 pages, a @file{data/} directory for data files, etc.
1443 @example
1444 ~/amhello % @kbd{cat src/main.c}
1445 #include <config.h>
1446 #include <stdio.h>
1449 main (void)
1451   puts ("Hello World!");
1452   puts ("This is " PACKAGE_STRING ".");
1453   return 0;
1455 @end example
1457 @item
1458 @file{README} contains some very limited documentation for our little
1459 package.
1460 @example
1461 ~/amhello % @kbd{cat README}
1462 This is a demonstration package for GNU Automake.
1463 Type 'info Automake' to read the Automake manual.
1464 @end example
1466 @item
1467 @file{Makefile.am} and @file{src/Makefile.am} contain Automake
1468 instructions for these two directories.
1470 @example
1471 ~/amhello % @kbd{cat src/Makefile.am}
1472 bin_PROGRAMS = hello
1473 hello_SOURCES = main.c
1474 ~/amhello % @kbd{cat Makefile.am}
1475 SUBDIRS = src
1476 dist_doc_DATA = README
1477 @end example
1479 @item
1480 Finally, @file{configure.ac} contains Autoconf instructions to
1481 create the @command{configure} script.
1483 @example
1484 ~/amhello % @kbd{cat configure.ac}
1485 AC_INIT([amhello], [1.0], [@value{PACKAGE_BUGREPORT}])
1486 AM_INIT_AUTOMAKE([-Wall -Werror foreign])
1487 AC_PROG_CC
1488 AC_CONFIG_HEADERS([config.h])
1489 AC_CONFIG_FILES([
1490  Makefile
1491  src/Makefile
1493 AC_OUTPUT
1494 @end example
1495 @end itemize
1497 @cindex @command{autoreconf}, example
1499 Once you have these five files, it is time to run the Autotools to
1500 instantiate the build system.  Do this using the @command{autoreconf}
1501 command as follows:
1503 @example
1504 ~/amhello % @kbd{autoreconf --install}
1505 configure.ac: installing './install-sh'
1506 configure.ac: installing './missing'
1507 configure.ac: installing './compile'
1508 src/Makefile.am: installing './depcomp'
1509 @end example
1511 At this point the build system is complete.
1513 In addition to the three scripts mentioned in its output, you can see
1514 that @command{autoreconf} created four other files: @file{configure},
1515 @file{config.h.in}, @file{Makefile.in}, and @file{src/Makefile.in}.
1516 The latter three files are templates that will be adapted to the
1517 system by @command{configure} under the names @file{config.h},
1518 @file{Makefile}, and @file{src/Makefile}.  Let's do this:
1520 @example
1521 ~/amhello % @kbd{./configure}
1522 checking for a BSD-compatible install... /usr/bin/install -c
1523 checking whether build environment is sane... yes
1524 checking for gawk... no
1525 checking for mawk... mawk
1526 checking whether make sets $(MAKE)... yes
1527 checking for gcc... gcc
1528 checking for C compiler default output file name... a.out
1529 checking whether the C compiler works... yes
1530 checking whether we are cross compiling... no
1531 checking for suffix of executables...
1532 checking for suffix of object files... o
1533 checking whether we are using the GNU C compiler... yes
1534 checking whether gcc accepts -g... yes
1535 checking for gcc option to accept ISO C89... none needed
1536 checking for style of include used by make... GNU
1537 checking dependency style of gcc... gcc3
1538 configure: creating ./config.status
1539 config.status: creating Makefile
1540 config.status: creating src/Makefile
1541 config.status: creating config.h
1542 config.status: executing depfiles commands
1543 @end example
1545 @trindex distcheck
1546 @cindex @code{distcheck} example
1548 You can see @file{Makefile}, @file{src/Makefile}, and @file{config.h}
1549 being created at the end after @command{configure} has probed the
1550 system.  It is now possible to run all the targets we wish
1551 (@pxref{Standard Targets}).  For instance:
1553 @example
1554 ~/amhello % @kbd{make}
1555 @dots{}
1556 ~/amhello % @kbd{src/hello}
1557 Hello World!
1558 This is amhello 1.0.
1559 ~/amhello % @kbd{make distcheck}
1560 @dots{}
1561 =============================================
1562 amhello-1.0 archives ready for distribution:
1563 amhello-1.0.tar.gz
1564 =============================================
1565 @end example
1567 Note that running @command{autoreconf} is only needed initially when
1568 the GNU Build System does not exist.  When you later change some
1569 instructions in a @file{Makefile.am} or @file{configure.ac}, the
1570 relevant part of the build system will be regenerated automatically
1571 when you execute @command{make}.
1573 @command{autoreconf} is a script that calls @command{autoconf},
1574 @command{automake}, and a bunch of other commands in the right order.
1575 If you are beginning with these tools, it is not important to figure
1576 out in which order all of these tools should be invoked and why.  However,
1577 because Autoconf and Automake have separate manuals, the important
1578 point to understand is that @command{autoconf} is in charge of
1579 creating @file{configure} from @file{configure.ac}, while
1580 @command{automake} is in charge of creating @file{Makefile.in}s from
1581 @file{Makefile.am}s and @file{configure.ac}.  This should at least
1582 direct you to the right manual when seeking answers.
1585 @node amhello's configure.ac Setup Explained
1586 @subsection @code{amhello}'s @file{configure.ac} Setup Explained
1588 @cindex @file{configure.ac}, Hello World
1590 Let us begin with the contents of @file{configure.ac}.
1592 @example
1593 AC_INIT([amhello], [1.0], [@value{PACKAGE_BUGREPORT}])
1594 AM_INIT_AUTOMAKE([-Wall -Werror foreign])
1595 AC_PROG_CC
1596 AC_CONFIG_HEADERS([config.h])
1597 AC_CONFIG_FILES([
1598  Makefile
1599  src/Makefile
1601 AC_OUTPUT
1602 @end example
1604 This file is read by both @command{autoconf} (to create
1605 @file{configure}) and @command{automake} (to create the various
1606 @file{Makefile.in}s).  It contains a series of M4 macros that will be
1607 expanded as shell code to finally form the @file{configure} script.
1608 We will not elaborate on the syntax of this file, because the Autoconf
1609 manual has a whole section about it (@pxref{Writing Autoconf Input, ,
1610 Writing @file{configure.ac}, autoconf, The Autoconf Manual}).
1612 The macros prefixed with @code{AC_} are Autoconf macros, documented
1613 in the Autoconf manual (@pxref{Autoconf Macro Index, , Autoconf Macro
1614 Index, autoconf, The Autoconf Manual}).  The macros that start with
1615 @code{AM_} are Automake macros, documented later in this manual
1616 (@pxref{Macro Index}).
1618 The first two lines of @file{configure.ac} initialize Autoconf and
1619 Automake.  @code{AC_INIT} takes in as parameters the name of the package,
1620 its version number, and a contact address for bug-reports about the
1621 package (this address is output at the end of @code{./configure
1622 --help}, for instance).  When adapting this setup to your own package,
1623 by all means please do not blindly copy Automake's address: use the
1624 mailing list of your package, or your own mail address.
1626 @opindex -Wall
1627 @opindex -Werror
1628 @opindex foreign
1630 The argument to @code{AM_INIT_AUTOMAKE} is a list of options for
1631 @command{automake} (@pxref{Options}).  @option{-Wall} and
1632 @option{-Werror} ask @command{automake} to turn on all warnings and
1633 report them as errors.  We are speaking of @strong{Automake} warnings
1634 here, such as dubious instructions in @file{Makefile.am}.  This has
1635 absolutely nothing to do with how the compiler will be called, even
1636 though it may support options with similar names.  Using @option{-Wall
1637 -Werror} is a safe setting when starting to work on a package: you do
1638 not want to miss any issues.  Later you may decide to relax things a
1639 bit.  The @option{foreign} option tells Automake that this package
1640 will not follow the GNU Standards.  GNU packages should always
1641 distribute additional files such as @file{ChangeLog}, @file{AUTHORS},
1642 etc.  We do not want @command{automake} to complain about these
1643 missing files in our small example.
1645 The @code{AC_PROG_CC} line causes the @command{configure} script to
1646 search for a C compiler and define the variable @code{CC} with its
1647 name.  The @file{src/Makefile.in} file generated by Automake uses the
1648 variable @code{CC} to build @file{hello}, so when @command{configure}
1649 creates @file{src/Makefile} from @file{src/Makefile.in}, it will define
1650 @code{CC} with the value it has found.  If Automake is asked to create
1651 a @file{Makefile.in} that uses @code{CC} but @file{configure.ac} does
1652 not define it, it will suggest you add a call to @code{AC_PROG_CC}.
1654 The @code{AC_CONFIG_HEADERS([config.h])} invocation causes the
1655 @command{configure} script to create a @file{config.h} file gathering
1656 @samp{#define}s defined by other macros in @file{configure.ac}.  In our
1657 case, the @code{AC_INIT} macro already defined a few of them.  Here
1658 is an excerpt of @file{config.h} after @command{configure} has run:
1660 @smallexample
1661 @dots{}
1662 /* Define to the address where bug reports for this package should be sent. */
1663 #define PACKAGE_BUGREPORT "@value{PACKAGE_BUGREPORT}"
1665 /* Define to the full name and version of this package. */
1666 #define PACKAGE_STRING "amhello 1.0"
1667 @dots{}
1668 @end smallexample
1670 As you probably noticed, @file{src/main.c} includes @file{config.h} so
1671 it can use @code{PACKAGE_STRING}.  In a real-world project,
1672 @file{config.h} can grow really big, with one @samp{#define} per
1673 feature probed on the system.
1675 The @code{AC_CONFIG_FILES} macro declares the list of files that
1676 @command{configure} should create from their @file{*.in} templates.
1677 Automake also scans this list to find the @file{Makefile.am} files it must
1678 process.  (This is important to remember: when adding a new directory
1679 to your project, you should add its @file{Makefile} to this list,
1680 otherwise Automake will never process the new @file{Makefile.am} you
1681 wrote in that directory.)
1683 Finally, the @code{AC_OUTPUT} line is a closing command that actually
1684 produces the part of the script in charge of creating the files
1685 registered with @code{AC_CONFIG_HEADERS} and @code{AC_CONFIG_FILES}.
1687 @cindex @command{autoscan}
1689 When starting a new project, we suggest you start with such a simple
1690 @file{configure.ac}, and gradually add the other tests it requires.
1691 The command @command{autoscan} can also suggest a few of the tests
1692 your package may need (@pxref{autoscan Invocation, , Using
1693 @command{autoscan} to Create @file{configure.ac}, autoconf, The
1694 Autoconf Manual}).
1697 @node amhello's Makefile.am Setup Explained
1698 @subsection @code{amhello}'s @file{Makefile.am} Setup Explained
1700 @cindex @file{Makefile.am}, Hello World
1702 We now turn to @file{src/Makefile.am}.  This file contains
1703 Automake instructions to build and install @file{hello}.
1705 @example
1706 bin_PROGRAMS = hello
1707 hello_SOURCES = main.c
1708 @end example
1710 A @file{Makefile.am} has the same syntax as an ordinary
1711 @file{Makefile}.  When @command{automake} processes a
1712 @file{Makefile.am} it copies the entire file into the output
1713 @file{Makefile.in} (that will be later turned into @file{Makefile} by
1714 @command{configure}) but will react to certain variable definitions
1715 by generating some build rules and other variables.
1716 Often @file{Makefile.am}s contain only a list of variable definitions as
1717 above, but they can also contain other variable and rule definitions that
1718 @command{automake} will pass along without interpretation.
1720 Variables that end with @code{_PROGRAMS} are special variables
1721 that list programs that the resulting @file{Makefile} should build.
1722 In Automake speak, this @code{_PROGRAMS} suffix is called a
1723 @dfn{primary}; Automake recognizes other primaries such as
1724 @code{_SCRIPTS}, @code{_DATA}, @code{_LIBRARIES}, etc.@: corresponding
1725 to different types of files.
1727 The @samp{bin} part of the @code{bin_PROGRAMS} tells
1728 @command{automake} that the resulting programs should be installed in
1729 @var{bindir}.  Recall that the GNU Build System uses a set of variables
1730 to denote destination directories and allow users to customize these
1731 locations (@pxref{Standard Directory Variables}).  Any such directory
1732 variable can be put in front of a primary (omitting the @code{dir}
1733 suffix) to tell @command{automake} where to install the listed files.
1735 Programs need to be built from source files, so for each program
1736 @code{@var{prog}} listed in a @code{@w{_PROGRAMS}} variable,
1737 @command{automake} will look for another variable named
1738 @code{@var{prog}_SOURCES} listing its source files.  There may be more
1739 than one source file: they will all be compiled and linked together.
1741 Automake also knows that source files need to be distributed when
1742 creating a tarball (unlike built programs).  So a side-effect of this
1743 @code{hello_SOURCES} declaration is that @file{main.c} will be
1744 part of the tarball created by @code{make dist}.
1746 Finally here are some explanations regarding the top-level
1747 @file{Makefile.am}.
1749 @example
1750 SUBDIRS = src
1751 dist_doc_DATA = README
1752 @end example
1754 @code{SUBDIRS} is a special variable listing all directories that
1755 @command{make} should recurse into before processing the current
1756 directory.  So this line is responsible for @command{make} building
1757 @file{src/hello} even though we run it from the top-level.  This line
1758 also causes @code{make install} to install @file{src/hello} before
1759 installing @file{README} (not that this order matters).
1761 The line @code{dist_doc_DATA = README} causes @file{README} to be
1762 distributed and installed in @var{docdir}.  Files listed with the
1763 @code{_DATA} primary are not automatically part of the tarball built
1764 with @code{make dist}, so we add the @code{dist_} prefix so they get
1765 distributed.  However, for @file{README} it would not have been
1766 necessary: @command{automake} automatically distributes any
1767 @file{README} file it encounters (the list of other files
1768 automatically distributed is presented by @code{automake --help}).
1769 The only important effect of this second line is therefore to install
1770 @file{README} during @code{make install}.
1772 One thing not covered in this example is accessing the installation
1773 directory values (@pxref{Standard Directory Variables}) from your
1774 program code, that is, converting them into defined macros.  For this,
1775 @pxref{Defining Directories,,, autoconf, The Autoconf Manual}.
1778 @node Generalities
1779 @chapter General ideas
1781 The following sections cover a few basic ideas that will help you
1782 understand how Automake works.
1784 @menu
1785 * General Operation::           General operation of Automake
1786 * Strictness::                  Standards conformance checking
1787 * Uniform::                     The Uniform Naming Scheme
1788 * Length Limitations::          Staying below the command line length limit
1789 * Canonicalization::            How derived variables are named
1790 * User Variables::              Variables reserved for the user
1791 * Auxiliary Programs::          Programs automake might require
1792 @end menu
1795 @node General Operation
1796 @section General Operation
1798 Automake works by reading a @file{Makefile.am} and generating a
1799 @file{Makefile.in}.  Certain variables and rules defined in the
1800 @file{Makefile.am} instruct Automake to generate more specialized code;
1801 for instance, a @code{bin_PROGRAMS} variable definition will cause rules
1802 for compiling and linking programs to be generated.
1804 @cindex Non-standard targets
1805 @cindex @code{git-dist}, non-standard example
1806 @trindex git-dist
1808 The variable definitions and rules in the @file{Makefile.am} are
1809 copied mostly verbatim into the generated file, with all variable
1810 definitions preceding all rules.  This allows you to add almost
1811 arbitrary code into the generated @file{Makefile.in}.  For instance,
1812 the Automake distribution includes a non-standard rule for the
1813 @code{git-dist} target, which the Automake maintainer uses to make
1814 distributions from the source control system.
1816 @cindex GNU make extensions
1818 Note that most GNU make extensions are not recognized by Automake.  Using
1819 such extensions in a @file{Makefile.am} will lead to errors or confusing
1820 behavior.
1822 @cindex Append operator
1823 @cmindex +=
1824 A special exception is that the GNU make append operator, @samp{+=}, is
1825 supported.  This operator appends its right hand argument to the variable
1826 specified on the left.  Automake will translate the operator into
1827 an ordinary @samp{=} operator; @samp{+=} will thus work with any make program.
1829 Automake tries to keep comments grouped with any adjoining rules or
1830 variable definitions.
1832 @cindex Limitations of automake parser
1833 @cindex Automake parser, limitations of
1834 @cindex indentation in Makefile.am
1835 Generally, Automake is not particularly smart in the parsing of unusual
1836 Makefile constructs, so you're advised to avoid fancy constructs or
1837 ``creative'' use of whitespace.
1838 @c Keep this in sync with doc-parsing-buglets-tabs.sh
1839 For example, @key{TAB} characters cannot be used between a target name
1840 and the following ``@code{:}'' character, and variable assignments
1841 shouldn't be indented with @key{TAB} characters.
1842 @c Keep this in sync with doc-parsing-buglets-colneq-subst.sh
1843 Also, using more complex macro in target names can cause trouble:
1845 @example
1846 % @kbd{cat Makefile.am}
1847 $(FOO:=x): bar
1848 % @kbd{automake}
1849 Makefile.am:1: bad characters in variable name '$(FOO'
1850 Makefile.am:1: ':='-style assignments are not portable
1851 @end example
1853 @cindex Make targets, overriding
1854 @cindex Make rules, overriding
1855 @cindex Overriding make rules
1856 @cindex Overriding make targets
1858 A rule defined in @file{Makefile.am} generally overrides any such
1859 rule of a similar name that would be automatically generated by
1860 @command{automake}.  Although this is a supported feature, it is generally
1861 best to avoid making use of it, as sometimes the generated rules are
1862 very particular.
1864 @cindex Variables, overriding
1865 @cindex Overriding make variables
1867 Similarly, a variable defined in @file{Makefile.am} or
1868 @code{AC_SUBST}ed from @file{configure.ac} will override any
1869 definition of the variable that @command{automake} would ordinarily
1870 create.  This feature is more often useful than the ability to
1871 override a rule.  Be warned that many of the variables generated by
1872 @command{automake} are considered to be for internal use only, and their
1873 names might change in future releases.
1875 @cindex Recursive operation of Automake
1876 @cindex Automake, recursive operation
1877 @cindex Example of recursive operation
1879 When examining a variable definition, Automake will recursively examine
1880 variables referenced in the definition.  For example, if Automake is
1881 looking at the content of @code{foo_SOURCES} in this snippet
1883 @c Keep in sync with interp.sh
1884 @example
1885 xs = a.c b.c
1886 foo_SOURCES = c.c $(xs)
1887 @end example
1889 it would use the files @file{a.c}, @file{b.c}, and @file{c.c} as the
1890 contents of @code{foo_SOURCES}.
1892 @cindex @code{##} (special Automake comment)
1893 @cindex Special Automake comment
1894 @cindex Comment, special to Automake
1896 Automake also allows a form of comment that is @emph{not} copied into
1897 the output; all lines beginning with @samp{##} (leading spaces allowed)
1898 are completely ignored by Automake.
1900 It is customary to make the first line of @file{Makefile.am} read:
1902 @cindex Makefile.am, first line
1903 @cindex First line of Makefile.am
1905 @example
1906 ## Process this file with automake to produce Makefile.in
1907 @end example
1909 @c FIXME document customary ordering of Makefile.am here!
1912 @node Strictness
1913 @section Strictness
1915 @cindex Non-GNU packages
1917 While Automake is intended to be used by maintainers of GNU packages, it
1918 does make some effort to accommodate those who wish to use it, but do
1919 not want to use all the GNU conventions.
1921 @cindex Strictness, defined
1922 @cindex Strictness, @option{foreign}
1923 @cindex @option{foreign} strictness
1924 @cindex Strictness, @option{gnu}
1925 @cindex @option{gnu} strictness
1926 @cindex Strictness, @option{gnits}
1927 @cindex @option{gnits} strictness
1929 To this end, Automake supports three levels of @dfn{strictness}---the
1930 strictness indicating how stringently Automake should check standards
1931 conformance.
1933 The valid strictness levels are:
1935 @table @option
1936 @item foreign
1937 Automake will check for only those things that are absolutely
1938 required for proper operations.  For instance, whereas GNU standards
1939 dictate the existence of a @file{NEWS} file, it will not be required in
1940 this mode.  This strictness will also turn off some warnings by default
1941 (among them, portability warnings).
1942 The name comes from the fact that Automake is intended to be
1943 used for GNU programs; these relaxed rules are not the standard mode of
1944 operation.
1946 @item gnu
1947 Automake will check---as much as possible---for compliance to the GNU
1948 standards for packages.  This is the default.
1950 @item gnits
1951 Automake will check for compliance to the as-yet-unwritten @dfn{Gnits
1952 standards}.  These are based on the GNU standards, but are even more
1953 detailed.  Unless you are a Gnits standards contributor, it is
1954 recommended that you avoid this option until such time as the Gnits
1955 standard is actually published (which may never happen).
1956 @end table
1958 @xref{Gnits}, for more information on the precise implications of the
1959 strictness level.
1962 @node Uniform
1963 @section The Uniform Naming Scheme
1965 @cindex Uniform naming scheme
1967 Automake variables generally follow a @dfn{uniform naming scheme} that
1968 makes it easy to decide how programs (and other derived objects) are
1969 built, and how they are installed.  This scheme also supports
1970 @command{configure} time determination of what should be built.
1972 @cindex @code{_PROGRAMS} primary variable
1973 @cindex @code{PROGRAMS} primary variable
1974 @cindex Primary variable, @code{PROGRAMS}
1975 @cindex Primary variable, defined
1976 @vindex _PROGRAMS
1978 At @command{make} time, certain variables are used to determine which
1979 objects are to be built.  The variable names are made of several pieces
1980 that are concatenated together.
1982 The piece that tells @command{automake} what is being built is commonly called
1983 the @dfn{primary}.  For instance, the primary @code{PROGRAMS} holds a
1984 list of programs that are to be compiled and linked.
1985 @vindex PROGRAMS
1987 @cindex @code{pkgdatadir}, defined
1988 @cindex @code{pkgincludedir}, defined
1989 @cindex @code{pkglibdir}, defined
1990 @cindex @code{pkglibexecdir}, defined
1992 @vindex pkgdatadir
1993 @vindex pkgincludedir
1994 @vindex pkglibdir
1995 @vindex pkglibexecdir
1997 @cindex @code{PACKAGE}, directory
1998 A different set of names is used to decide where the built objects
1999 should be installed.  These names are prefixes to the primary, and they
2000 indicate which standard directory should be used as the installation
2001 directory.  The standard directory names are given in the GNU standards
2002 (@pxref{Directory Variables, , , standards, The GNU Coding Standards}).
2003 Automake extends this list with @code{pkgdatadir}, @code{pkgincludedir},
2004 @code{pkglibdir}, and @code{pkglibexecdir}; these are the same as the
2005 non-@samp{pkg} versions, but with @samp{$(PACKAGE)} appended.  For instance,
2006 @code{pkglibdir} is defined as @samp{$(libdir)/$(PACKAGE)}.
2008 @cindex @code{EXTRA_}, prepending
2009 For each primary, there is one additional variable named by prepending
2010 @samp{EXTRA_} to the primary name.  This variable is used to list
2011 objects that may or may not be built, depending on what
2012 @command{configure} decides.  This variable is required because Automake
2013 must statically know the entire list of objects that may be built in
2014 order to generate a @file{Makefile.in} that will work in all cases.
2016 @cindex @code{EXTRA_PROGRAMS}, defined
2017 @cindex Example, @code{EXTRA_PROGRAMS}
2018 @cindex @command{cpio} example
2020 For instance, @command{cpio} decides at configure time which programs
2021 should be built.  Some of the programs are installed in @code{bindir},
2022 and some are installed in @code{sbindir}:
2024 @example
2025 EXTRA_PROGRAMS = mt rmt
2026 bin_PROGRAMS = cpio pax
2027 sbin_PROGRAMS = $(MORE_PROGRAMS)
2028 @end example
2030 Defining a primary without a prefix as a variable, e.g.,
2031 @samp{PROGRAMS}, is an error.
2033 Note that the common @samp{dir} suffix is left off when constructing the
2034 variable names; thus one writes @samp{bin_PROGRAMS} and not
2035 @samp{bindir_PROGRAMS}.
2037 Not every sort of object can be installed in every directory.  Automake
2038 will flag those attempts it finds in error (but see below how to override
2039 the check if you really need to).
2040 Automake will also diagnose obvious misspellings in directory names.
2042 @cindex Extending list of installation directories
2043 @cindex Installation directories, extending list
2045 Sometimes the standard directories---even as augmented by
2046 Automake---are not enough.  In particular it is sometimes useful, for
2047 clarity, to install objects in a subdirectory of some predefined
2048 directory.  To this end, Automake allows you to extend the list of
2049 possible installation directories.  A given prefix (e.g., @samp{zar})
2050 is valid if a variable of the same name with @samp{dir} appended is
2051 defined (e.g., @samp{zardir}).
2053 For instance, the following snippet will install @file{file.xml} into
2054 @samp{$(datadir)/xml}.
2056 @c Keep in sync with primary-prefix-couples-documented-valid.sh
2057 @example
2058 xmldir = $(datadir)/xml
2059 xml_DATA = file.xml
2060 @end example
2062 This feature can also be used to override the sanity checks Automake
2063 performs to diagnose suspicious directory/primary couples (in the
2064 unlikely case these checks are undesirable, and you really know what
2065 you're doing).  For example, Automake would error out on this input:
2067 @c Should be tested in primary-prefix-invalid-couples.sh
2068 @example
2069 # Forbidden directory combinations, automake will error out on this.
2070 pkglib_PROGRAMS = foo
2071 doc_LIBRARIES = libquux.a
2072 @end example
2074 @noindent
2075 but it will succeed with this:
2077 @c Keep in sync with primary-prefix-couples-documented-valid.sh
2078 @example
2079 # Work around forbidden directory combinations.  Do not use this
2080 # without a very good reason!
2081 my_execbindir = $(pkglibdir)
2082 my_doclibdir = $(docdir)
2083 my_execbin_PROGRAMS = foo
2084 my_doclib_LIBRARIES = libquux.a
2085 @end example
2087 The @samp{exec} substring of the @samp{my_execbindir} variable lets
2088 the files be installed at the right time (@pxref{The Two Parts of
2089 Install}).
2091 @cindex @samp{noinst_} primary prefix, definition
2092 @vindex noinst_
2094 The special prefix @samp{noinst_} indicates that the objects in question
2095 should be built but not installed at all.  This is usually used for
2096 objects required to build the rest of your package, for instance static
2097 libraries (@pxref{A Library}), or helper scripts.
2099 @cindex @samp{check_} primary prefix, definition
2100 @vindex check_
2102 The special prefix @samp{check_} indicates that the objects in question
2103 should not be built until the @samp{make check} command is run.  Those
2104 objects are not installed either.
2106 The current primary names are @samp{PROGRAMS}, @samp{LIBRARIES},
2107 @samp{LTLIBRARIES}, @samp{LISP}, @samp{PYTHON}, @samp{JAVA},
2108 @samp{SCRIPTS}, @samp{DATA}, @samp{HEADERS}, @samp{MANS}, and
2109 @samp{TEXINFOS}.
2110 @vindex PROGRAMS
2111 @vindex LIBRARIES
2112 @vindex LTLIBRARIES
2113 @vindex LISP
2114 @vindex PYTHON
2115 @vindex JAVA
2116 @vindex SCRIPTS
2117 @vindex DATA
2118 @vindex HEADERS
2119 @vindex MANS
2120 @vindex TEXINFOS
2122 Some primaries also allow additional prefixes that control other
2123 aspects of @command{automake}'s behavior.  The currently defined prefixes
2124 are @samp{dist_}, @samp{nodist_}, @samp{nobase_}, and @samp{notrans_}.
2125 These prefixes are explained later (@pxref{Program and Library Variables})
2126 (@pxref{Man Pages}).
2129 @node Length Limitations
2130 @section Staying below the command line length limit
2132 @cindex command line length limit
2133 @cindex ARG_MAX
2135 Traditionally, most unix-like systems have a length limitation for the
2136 command line arguments and environment contents when creating new
2137 processes (see for example
2138 @uref{http://www.in-ulm.de/@/~mascheck/@/various/@/argmax/} for an
2139 overview on this issue),
2140 which of course also applies to commands spawned by @command{make}.
2141 POSIX requires this limit to be at least 4096 bytes, and most modern
2142 systems have quite high limits (or are unlimited).
2144 In order to create portable Makefiles that do not trip over these
2145 limits, it is necessary to keep the length of file lists bounded.
2146 Unfortunately, it is not possible to do so fully transparently within
2147 Automake, so your help may be needed.  Typically, you can split long
2148 file lists manually and use different installation directory names for
2149 each list.  For example,
2151 @example
2152 data_DATA = file1 @dots{} file@var{N} file@var{N+1} @dots{} file@var{2N}
2153 @end example
2155 @noindent
2156 may also be written as
2158 @c Keep in sync with primary-prefix-couples-documented-valid.sh
2159 @example
2160 data_DATA = file1 @dots{} file@var{N}
2161 data2dir = $(datadir)
2162 data2_DATA = file@var{N+1} @dots{} file@var{2N}
2163 @end example
2165 @noindent
2166 and will cause Automake to treat the two lists separately during
2167 @code{make install}.  See @ref{The Two Parts of Install} for choosing
2168 directory names that will keep the ordering of the two parts of
2169 installation Note that @code{make dist} may still only work on a host
2170 with a higher length limit in this example.
2172 Automake itself employs a couple of strategies to avoid long command
2173 lines.  For example, when @samp{$@{srcdir@}/} is prepended to file
2174 names, as can happen with above @code{$(data_DATA)} lists, it limits
2175 the amount of arguments passed to external commands.
2177 Unfortunately, some system's @command{make} commands may prepend
2178 @code{VPATH} prefixes like @samp{$@{srcdir@}/} to file names from the
2179 source tree automatically (@pxref{Automatic Rule Rewriting, , Automatic
2180 Rule Rewriting, autoconf, The Autoconf Manual}).  In this case, the user
2181 may have to switch to use GNU Make, or refrain from using VPATH builds,
2182 in order to stay below the length limit.
2184 For libraries and programs built from many sources, convenience archives
2185 may be used as intermediates in order to limit the object list length
2186 (@pxref{Libtool Convenience Libraries}).
2189 @node Canonicalization
2190 @section How derived variables are named
2192 @cindex canonicalizing Automake variables
2194 Sometimes a Makefile variable name is derived from some text the
2195 maintainer supplies.  For instance, a program name listed in
2196 @samp{_PROGRAMS} is rewritten into the name of a @samp{_SOURCES}
2197 variable.  In cases like this, Automake canonicalizes the text, so that
2198 program names and the like do not have to follow Makefile variable naming
2199 rules.  All characters in the name except for letters, numbers, the
2200 strudel (@@), and the underscore are turned into underscores when making
2201 variable references.
2203 For example, if your program is named @file{sniff-glue}, the derived
2204 variable name would be @samp{sniff_glue_SOURCES}, not
2205 @samp{sniff-glue_SOURCES}.  Similarly the sources for a library named
2206 @file{libmumble++.a} should be listed in the
2207 @samp{libmumble___a_SOURCES} variable.
2209 The strudel is an addition, to make the use of Autoconf substitutions in
2210 variable names less obfuscating.
2213 @node User Variables
2214 @section Variables reserved for the user
2216 @cindex variables, reserved for the user
2217 @cindex user variables
2219 Some @file{Makefile} variables are reserved by the GNU Coding Standards
2220 for the use of the ``user''---the person building the package.  For
2221 instance, @code{CFLAGS} is one such variable.
2223 Sometimes package developers are tempted to set user variables such as
2224 @code{CFLAGS} because it appears to make their job easier.  However,
2225 the package itself should never set a user variable, particularly not
2226 to include switches that are required for proper compilation of the
2227 package.  Since these variables are documented as being for the
2228 package builder, that person rightfully expects to be able to override
2229 any of these variables at build time.
2231 To get around this problem, Automake introduces an automake-specific
2232 shadow variable for each user flag variable.  (Shadow variables are
2233 not introduced for variables like @code{CC}, where they would make no
2234 sense.)  The shadow variable is named by prepending @samp{AM_} to the
2235 user variable's name.  For instance, the shadow variable for
2236 @code{YFLAGS} is @code{AM_YFLAGS}.  The package maintainer---that is,
2237 the author(s) of the @file{Makefile.am} and @file{configure.ac}
2238 files---may adjust these shadow variables however necessary.
2240 @xref{Flag Variables Ordering}, for more discussion about these
2241 variables and how they interact with per-target variables.
2243 @node Auxiliary Programs
2244 @section Programs automake might require
2246 @cindex Programs, auxiliary
2247 @cindex Auxiliary programs
2249 Automake sometimes requires helper programs so that the generated
2250 @file{Makefile} can do its work properly.  There are a fairly large
2251 number of them, and we list them here.
2253 Although all of these files are distributed and installed with
2254 Automake, a couple of them are maintained separately.  The Automake
2255 copies are updated before each release, but we mention the original
2256 source in case you need more recent versions.
2258 @table @code
2259 @item ar-lib
2260 This is a wrapper primarily for the Microsoft lib archiver, to make
2261 it more POSIX-like.
2263 @item compile
2264 This is a wrapper for compilers that do not accept options @option{-c}
2265 and @option{-o} at the same time.  It is only used when absolutely
2266 required.  Such compilers are rare, with the Microsoft C/C++ Compiler
2267 as the most notable exception. This wrapper also makes the following
2268 common options available for that compiler, while performing file name
2269 translation where needed: @option{-I}, @option{-L}, @option{-l},
2270 @option{-Wl,} and @option{-Xlinker}.
2272 @item config.guess
2273 @itemx config.sub
2274 These two programs compute the canonical triplets for the given build,
2275 host, or target architecture.  These programs are updated regularly to
2276 support new architectures and fix probes broken by changes in new
2277 kernel versions.  Each new release of Automake comes with up-to-date
2278 copies of these programs.  If your copy of Automake is getting old,
2279 you are encouraged to fetch the latest versions of these files from
2280 @url{http://savannah.gnu.org/git/?group=config} before making a
2281 release.
2283 @item depcomp
2284 This program understands how to run a compiler so that it will
2285 generate not only the desired output but also dependency information
2286 that is then used by the automatic dependency tracking feature
2287 (@pxref{Dependencies}).
2289 @item install-sh
2290 This is a replacement for the @command{install} program that works on
2291 platforms where @command{install} is unavailable or unusable.
2293 @item mdate-sh
2294 This script is used to generate a @file{version.texi} file.  It examines
2295 a file and prints some date information about it.
2297 @item missing
2298 This wraps a number of programs that are typically only required by
2299 maintainers.  If the program in question doesn't exist, or seems to old,
2300 @command{missing} will print an informative warning before failing out,
2301 to provide the user with more context and information.
2303 @item mkinstalldirs
2304 This script used to be a wrapper around @samp{mkdir -p}, which is not
2305 portable.  Now we prefer to use @samp{install-sh -d} when @command{configure}
2306 finds that @samp{mkdir -p} does not work, this makes one less script to
2307 distribute.
2309 For backward compatibility @file{mkinstalldirs} is still used and
2310 distributed when @command{automake} finds it in a package.  But it is no
2311 longer installed automatically, and it should be safe to remove it.
2313 @item py-compile
2314 This is used to byte-compile Python scripts.
2316 @item test-driver
2317 This implements the default test driver offered by the parallel
2318 testsuite harness.
2320 @item texinfo.tex
2321 Not a program, this file is required for @samp{make dvi}, @samp{make
2322 ps} and @samp{make pdf} to work when Texinfo sources are in the
2323 package.  The latest version can be downloaded from
2324 @url{http://www.gnu.org/software/texinfo/}.
2326 @item ylwrap
2327 This program wraps @command{lex} and @command{yacc} to rename their
2328 output files.  It also ensures that, for instance, multiple
2329 @command{yacc} instances can be invoked in a single directory in
2330 parallel.
2332 @end table
2335 @node Examples
2336 @chapter Some example packages
2338 This section contains two small examples.
2340 The first example (@pxref{Complete}) assumes you have an existing
2341 project already using Autoconf, with handcrafted @file{Makefile}s, and
2342 that you want to convert it to using Automake.  If you are discovering
2343 both tools, it is probably better that you look at the Hello World
2344 example presented earlier (@pxref{Hello World}).
2346 The second example (@pxref{true}) shows how two programs can be built
2347 from the same file, using different compilation parameters.  It
2348 contains some technical digressions that are probably best skipped on
2349 first read.
2351 @menu
2352 * Complete::                    A simple example, start to finish
2353 * true::                        Building true and false
2354 @end menu
2357 @node Complete
2358 @section A simple example, start to finish
2360 @cindex Complete example
2362 Let's suppose you just finished writing @code{zardoz}, a program to make
2363 your head float from vortex to vortex.  You've been using Autoconf to
2364 provide a portability framework, but your @file{Makefile.in}s have been
2365 ad-hoc.  You want to make them bulletproof, so you turn to Automake.
2367 @cindex @code{AM_INIT_AUTOMAKE}, example use
2369 The first step is to update your @file{configure.ac} to include the
2370 commands that @command{automake} needs.  The way to do this is to add an
2371 @code{AM_INIT_AUTOMAKE} call just after @code{AC_INIT}:
2373 @example
2374 AC_INIT([zardoz], [1.0])
2375 AM_INIT_AUTOMAKE
2376 @dots{}
2377 @end example
2379 Since your program doesn't have any complicating factors (e.g., it
2380 doesn't use @code{gettext}, it doesn't want to build a shared library),
2381 you're done with this part.  That was easy!
2383 @cindex @command{aclocal} program, introduction
2384 @cindex @file{aclocal.m4}, preexisting
2385 @cindex @file{acinclude.m4}, defined
2387 Now you must regenerate @file{configure}.  But to do that, you'll need
2388 to tell @command{autoconf} how to find the new macro you've used.  The
2389 easiest way to do this is to use the @command{aclocal} program to
2390 generate your @file{aclocal.m4} for you.  But wait@dots{} maybe you
2391 already have an @file{aclocal.m4}, because you had to write some hairy
2392 macros for your program.  The @command{aclocal} program lets you put
2393 your own macros into @file{acinclude.m4}, so simply rename and then
2394 run:
2396 @example
2397 mv aclocal.m4 acinclude.m4
2398 aclocal
2399 autoconf
2400 @end example
2402 @cindex @command{zardoz} example
2404 Now it is time to write your @file{Makefile.am} for @code{zardoz}.
2405 Since @code{zardoz} is a user program, you want to install it where the
2406 rest of the user programs go: @code{bindir}.  Additionally,
2407 @code{zardoz} has some Texinfo documentation.  Your @file{configure.ac}
2408 script uses @code{AC_REPLACE_FUNCS}, so you need to link against
2409 @samp{$(LIBOBJS)}.  So here's what you'd write:
2411 @example
2412 bin_PROGRAMS = zardoz
2413 zardoz_SOURCES = main.c head.c float.c vortex9.c gun.c
2414 zardoz_LDADD = $(LIBOBJS)
2416 info_TEXINFOS = zardoz.texi
2417 @end example
2419 Now you can run @samp{automake --add-missing} to generate your
2420 @file{Makefile.in} and grab any auxiliary files you might need, and
2421 you're done!
2424 @node true
2425 @section Building true and false
2427 @cindex Example, @command{false} and @command{true}
2428 @cindex @command{false} Example
2429 @cindex @command{true} Example
2431 Here is another, trickier example.  It shows how to generate two
2432 programs (@code{true} and @code{false}) from the same source file
2433 (@file{true.c}).  The difficult part is that each compilation of
2434 @file{true.c} requires different @code{cpp} flags.
2436 @example
2437 bin_PROGRAMS = true false
2438 false_SOURCES =
2439 false_LDADD = false.o
2441 true.o: true.c
2442         $(COMPILE) -DEXIT_CODE=0 -c true.c
2444 false.o: true.c
2445         $(COMPILE) -DEXIT_CODE=1 -o false.o -c true.c
2446 @end example
2448 Note that there is no @code{true_SOURCES} definition.  Automake will
2449 implicitly assume that there is a source file named @file{true.c}
2450 (@pxref{Default _SOURCES}), and
2451 define rules to compile @file{true.o} and link @file{true}.  The
2452 @samp{true.o: true.c} rule supplied by the above @file{Makefile.am},
2453 will override the Automake generated rule to build @file{true.o}.
2455 @code{false_SOURCES} is defined to be empty---that way no implicit value
2456 is substituted.  Because we have not listed the source of
2457 @file{false}, we have to tell Automake how to link the program.  This is
2458 the purpose of the @code{false_LDADD} line.  A @code{false_DEPENDENCIES}
2459 variable, holding the dependencies of the @file{false} target will be
2460 automatically generated by Automake from the content of
2461 @code{false_LDADD}.
2463 The above rules won't work if your compiler doesn't accept both
2464 @option{-c} and @option{-o}.  The simplest fix for this is to introduce a
2465 bogus dependency (to avoid problems with a parallel @command{make}):
2467 @example
2468 true.o: true.c false.o
2469         $(COMPILE) -DEXIT_CODE=0 -c true.c
2471 false.o: true.c
2472         $(COMPILE) -DEXIT_CODE=1 -c true.c && mv true.o false.o
2473 @end example
2475 As it turns out, there is also a much easier way to do this same task.
2476 Some of the above technique is useful enough that we've kept the
2477 example in the manual.  However if you were to build @code{true} and
2478 @code{false} in real life, you would probably use per-program
2479 compilation flags, like so:
2481 @c Keep in sync with specflg7.sh and specflg8.sh
2482 @example
2483 bin_PROGRAMS = false true
2485 false_SOURCES = true.c
2486 false_CPPFLAGS = -DEXIT_CODE=1
2488 true_SOURCES = true.c
2489 true_CPPFLAGS = -DEXIT_CODE=0
2490 @end example
2492 In this case Automake will cause @file{true.c} to be compiled twice,
2493 with different flags.  In this instance, the names of the object files
2494 would be chosen by automake; they would be @file{false-true.o} and
2495 @file{true-true.o}. (The name of the object files rarely matters.)
2497 @node automake Invocation
2498 @chapter Creating a @file{Makefile.in}
2499 @c This node used to be named "Invoking automake".  This @anchor
2500 @c allows old links to still work.
2501 @anchor{Invoking automake}
2503 @cindex Multiple @file{configure.ac} files
2504 @cindex Invoking @command{automake}
2505 @cindex @command{automake}, invoking
2506 @cindex Invocation of @command{automake}
2507 @cindex @command{automake}, invocation
2509 To create all the @file{Makefile.in}s for a package, run the
2510 @command{automake} program in the top level directory, with no
2511 arguments.  @command{automake} will automatically find each
2512 appropriate @file{Makefile.am} (by scanning @file{configure.ac};
2513 @pxref{configure}) and generate the corresponding @file{Makefile.in}.
2514 Note that @command{automake} has a rather simplistic view of what
2515 constitutes a package; it assumes that a package has only one
2516 @file{configure.ac}, at the top.  If your package has multiple
2517 @file{configure.ac}s, then you must run @command{automake} in each
2518 directory holding a @file{configure.ac}.  (Alternatively, you may rely
2519 on Autoconf's @command{autoreconf}, which is able to recurse your
2520 package tree and run @command{automake} where appropriate.)
2522 You can optionally give @command{automake} an argument; @file{.am} is
2523 appended to the argument and the result is used as the name of the
2524 input file.  This feature is generally only used to automatically
2525 rebuild an out-of-date @file{Makefile.in}.  Note that
2526 @command{automake} must always be run from the topmost directory of a
2527 project, even if being used to regenerate the @file{Makefile.in} in
2528 some subdirectory.  This is necessary because @command{automake} must
2529 scan @file{configure.ac}, and because @command{automake} uses the
2530 knowledge that a @file{Makefile.in} is in a subdirectory to change its
2531 behavior in some cases.
2533 @vindex AUTOCONF
2534 Automake will run @command{autoconf} to scan @file{configure.ac} and
2535 its dependencies (i.e., @file{aclocal.m4} and any included file),
2536 therefore @command{autoconf} must be in your @env{PATH}.  If there is
2537 an @env{AUTOCONF} variable in your environment it will be used
2538 instead of @command{autoconf}, this allows you to select a particular
2539 version of Autoconf.  By the way, don't misunderstand this paragraph:
2540 @command{automake} runs @command{autoconf} to @strong{scan} your
2541 @file{configure.ac}, this won't build @file{configure} and you still
2542 have to run @command{autoconf} yourself for this purpose.
2544 @cindex @command{automake} options
2545 @cindex Options, @command{automake}
2546 @cindex Strictness, command line
2548 @command{automake} accepts the following options:
2550 @cindex Extra files distributed with Automake
2551 @cindex Files distributed with Automake
2552 @cindex @file{config.guess}
2554 @table @code
2555 @item -a
2556 @itemx --add-missing
2557 @opindex -a
2558 @opindex --add-missing
2559 Automake requires certain common files to exist in certain situations;
2560 for instance, @file{config.guess} is required if @file{configure.ac} invokes
2561 @code{AC_CANONICAL_HOST}.  Automake is distributed with several of these
2562 files (@pxref{Auxiliary Programs}); this option will cause the missing
2563 ones to be automatically added to the package, whenever possible.  In
2564 general if Automake tells you a file is missing, try using this option.
2565 By default Automake tries to make a symbolic link pointing to its own
2566 copy of the missing file; this can be changed with @option{--copy}.
2568 Many of the potentially-missing files are common scripts whose
2569 location may be specified via the @code{AC_CONFIG_AUX_DIR} macro.
2570 Therefore, @code{AC_CONFIG_AUX_DIR}'s setting affects whether a
2571 file is considered missing, and where the missing file is added
2572 (@pxref{Optional}).
2574 In some strictness modes, additional files are installed, see @ref{Gnits}
2575 for more information.
2577 @item --libdir=@var{dir}
2578 @opindex --libdir
2579 Look for Automake data files in directory @var{dir} instead of in the
2580 installation directory.  This is typically used for debugging.
2582 @item --print-libdir
2583 @opindex --print-libdir
2584 Print the path of the installation directory containing Automake-provided
2585 scripts and data files (like e.g., @file{texinfo.texi} and
2586 @file{install-sh}).
2588 @item -c
2589 @opindex -c
2590 @itemx --copy
2591 @opindex --copy
2592 When used with @option{--add-missing}, causes installed files to be
2593 copied.  The default is to make a symbolic link.
2595 @item -f
2596 @opindex -f
2597 @itemx --force-missing
2598 @opindex --force-missing
2599 When used with @option{--add-missing}, causes standard files to be reinstalled
2600 even if they already exist in the source tree.  This involves removing
2601 the file from the source tree before creating the new symlink (or, with
2602 @option{--copy}, copying the new file).
2604 @item --foreign
2605 @opindex --foreign
2606 Set the global strictness to @option{foreign}.  For more information, see
2607 @ref{Strictness}.
2609 @item --gnits
2610 @opindex --gnits
2611 Set the global strictness to @option{gnits}.  For more information, see
2612 @ref{Gnits}.
2614 @item --gnu
2615 @opindex --gnu
2616 Set the global strictness to @option{gnu}.  For more information, see
2617 @ref{Gnits}.  This is the default strictness.
2619 @item --help
2620 @opindex --help
2621 Print a summary of the command line options and exit.
2623 @item -i
2624 @itemx --ignore-deps
2625 @opindex -i
2626 This disables the dependency tracking feature in generated
2627 @file{Makefile}s; see @ref{Dependencies}.
2629 @item --include-deps
2630 @opindex --include-deps
2631 This enables the dependency tracking feature.  This feature is enabled
2632 by default.  This option is provided for historical reasons only and
2633 probably should not be used.
2635 @item --no-force
2636 @opindex --no-force
2637 Ordinarily @command{automake} creates all @file{Makefile.in}s mentioned in
2638 @file{configure.ac}.  This option causes it to only update those
2639 @file{Makefile.in}s that are out of date with respect to one of their
2640 dependents.
2642 @item -o @var{dir}
2643 @itemx --output-dir=@var{dir}
2644 @opindex -o
2645 @opindex --output-dir
2646 Put the generated @file{Makefile.in} in the directory @var{dir}.
2647 Ordinarily each @file{Makefile.in} is created in the directory of the
2648 corresponding @file{Makefile.am}.  This option is deprecated and will be
2649 removed in a future release.
2651 @item -v
2652 @itemx --verbose
2653 @opindex -v
2654 @opindex --verbose
2655 Cause Automake to print information about which files are being read or
2656 created.
2658 @item --version
2659 @opindex --version
2660 Print the version number of Automake and exit.
2662 @item -W CATEGORY
2663 @itemx --warnings=@var{category}
2664 @opindex -W
2665 @opindex --warnings
2666 Output warnings falling in @var{category}.  @var{category} can be
2667 one of:
2668 @table @code
2669 @item gnu
2670 warnings related to the GNU Coding Standards
2671 (@pxref{Top, , , standards, The GNU Coding Standards}).
2672 @item obsolete
2673 obsolete features or constructions
2674 @item override
2675 user redefinitions of Automake rules or variables
2676 @item portability
2677 portability issues (e.g., use of @command{make} features that are
2678 known to be not portable)
2679 @item extra-portability
2680 extra portability issues related to obscure tools.  One example of such
2681 a tool is the Microsoft @command{lib} archiver.
2682 @item syntax
2683 weird syntax, unused variables, typos
2684 @item unsupported
2685 unsupported or incomplete features
2686 @item all
2687 all the warnings
2688 @item none
2689 turn off all the warnings
2690 @item error
2691 treat warnings as errors
2692 @end table
2694 A category can be turned off by prefixing its name with @samp{no-}.  For
2695 instance, @option{-Wno-syntax} will hide the warnings about unused
2696 variables.
2698 The categories output by default are @samp{obsolete}, @samp{syntax} and
2699 @samp{unsupported}.  Additionally, @samp{gnu} and @samp{portability}
2700 are enabled in @option{--gnu} and @option{--gnits} strictness.
2702 @c Checked by extra-portability.sh
2703 Turning off @samp{portability} will also turn off @samp{extra-portability},
2704 and similarly turning on @samp{extra-portability} will also turn on
2705 @samp{portability}.  However, turning on @samp{portability} or turning
2706 off @samp{extra-portability} will not affect the other category.
2708 @vindex WARNINGS
2709 The environment variable @env{WARNINGS} can contain a comma separated
2710 list of categories to enable.  It will be taken into account before the
2711 command-line switches, this way @option{-Wnone} will also ignore any
2712 warning category enabled by @env{WARNINGS}.  This variable is also used
2713 by other tools like @command{autoconf}; unknown categories are ignored
2714 for this reason.
2716 @end table
2718 @vindex AUTOMAKE_JOBS
2719 If the environment variable @env{AUTOMAKE_JOBS} contains a positive
2720 number, it is taken as the maximum number of Perl threads to use in
2721 @command{automake} for generating multiple @file{Makefile.in} files
2722 concurrently.  This is an experimental feature.
2725 @node configure
2726 @chapter Scanning @file{configure.ac}, using @command{aclocal}
2728 @cindex @file{configure.ac}, scanning
2729 @cindex Scanning @file{configure.ac}
2730 @cindex Using @command{aclocal}
2731 @cindex @command{aclocal}, using
2733 Automake scans the package's @file{configure.ac} to determine certain
2734 information about the package.  Some @command{autoconf} macros are required
2735 and some variables must be defined in @file{configure.ac}.  Automake
2736 will also use information from @file{configure.ac} to further tailor its
2737 output.
2739 Automake also supplies some Autoconf macros to make the maintenance
2740 easier.  These macros can automatically be put into your
2741 @file{aclocal.m4} using the @command{aclocal} program.
2743 @menu
2744 * Requirements::                Configuration requirements
2745 * Optional::                    Other things Automake recognizes
2746 * aclocal Invocation::          Auto-generating aclocal.m4
2747 * Macros::                      Autoconf macros supplied with Automake
2748 @end menu
2751 @node Requirements
2752 @section Configuration requirements
2754 @cindex Automake requirements
2755 @cindex Requirements of Automake
2757 @acindex AM_INIT_AUTOMAKE
2758 The one real requirement of Automake is that your @file{configure.ac}
2759 call @code{AM_INIT_AUTOMAKE}.  This macro does several things that are
2760 required for proper Automake operation (@pxref{Macros}).
2762 Here are the other macros that Automake requires but which are not run
2763 by @code{AM_INIT_AUTOMAKE}:
2765 @table @code
2766 @item AC_CONFIG_FILES
2767 @itemx AC_OUTPUT
2768 @acindex AC_CONFIG_FILES
2769 @acindex AC_OUTPUT
2770 These two macros are usually invoked as follows near the end of
2771 @file{configure.ac}.
2773 @example
2774 @dots{}
2775 AC_CONFIG_FILES([
2776   Makefile
2777   doc/Makefile
2778   src/Makefile
2779   src/lib/Makefile
2780   @dots{}
2782 AC_OUTPUT
2783 @end example
2785 Automake uses these to determine which files to create (@pxref{Output, ,
2786 Creating Output Files, autoconf, The Autoconf Manual}).  A listed file
2787 is considered to be an Automake generated @file{Makefile} if there
2788 exists a file with the same name and the @file{.am} extension appended.
2789 Typically, @samp{AC_CONFIG_FILES([foo/Makefile])} will cause Automake to
2790 generate @file{foo/Makefile.in} if @file{foo/Makefile.am} exists.
2792 When using @code{AC_CONFIG_FILES} with multiple input files, as in
2794 @example
2795 AC_CONFIG_FILES([Makefile:top.in:Makefile.in:bot.in])
2796 @end example
2798 @noindent
2799 @command{automake} will generate the first @file{.in} input file for
2800 which a @file{.am} file exists.  If no such file exists the output
2801 file is not considered to be generated by Automake.
2803 Files created by @code{AC_CONFIG_FILES}, be they Automake
2804 @file{Makefile}s or not, are all removed by @samp{make distclean}.
2805 Their inputs are automatically distributed, unless they
2806 are the output of prior @code{AC_CONFIG_FILES} commands.
2807 Finally, rebuild rules are generated in the Automake @file{Makefile}
2808 existing in the subdirectory of the output file, if there is one, or
2809 in the top-level @file{Makefile} otherwise.
2811 The above machinery (cleaning, distributing, and rebuilding) works
2812 fine if the @code{AC_CONFIG_FILES} specifications contain only
2813 literals.  If part of the specification uses shell variables,
2814 @command{automake} will not be able to fulfill this setup, and you will
2815 have to complete the missing bits by hand.  For instance, on
2817 @c Keep in sync with output11.sh
2818 @example
2819 file=input
2820 @dots{}
2821 AC_CONFIG_FILES([output:$file],, [file=$file])
2822 @end example
2824 @noindent
2825 @command{automake} will output rules to clean @file{output}, and
2826 rebuild it.  However the rebuild rule will not depend on @file{input},
2827 and this file will not be distributed either.  (You must add
2828 @samp{EXTRA_DIST = input} to your @file{Makefile.am} if @file{input} is a
2829 source file.)
2831 Similarly
2833 @c Keep in sync with output11.sh
2834 @example
2835 file=output
2836 file2=out:in
2837 @dots{}
2838 AC_CONFIG_FILES([$file:input],, [file=$file])
2839 AC_CONFIG_FILES([$file2],, [file2=$file2])
2840 @end example
2842 @noindent
2843 will only cause @file{input} to be distributed.  No file will be
2844 cleaned automatically (add @samp{DISTCLEANFILES = output out}
2845 yourself), and no rebuild rule will be output.
2847 Obviously @command{automake} cannot guess what value @samp{$file} is
2848 going to hold later when @file{configure} is run, and it cannot use
2849 the shell variable @samp{$file} in a @file{Makefile}.  However, if you
2850 make reference to @samp{$file} as @samp{$@{file@}} (i.e., in a way
2851 that is compatible with @command{make}'s syntax) and furthermore use
2852 @code{AC_SUBST} to ensure that @samp{$@{file@}} is meaningful in a
2853 @file{Makefile}, then @command{automake} will be able to use
2854 @samp{$@{file@}} to generate all of these rules.  For instance, here is
2855 how the Automake package itself generates versioned scripts for its
2856 test suite:
2858 @example
2859 AC_SUBST([APIVERSION], @dots{})
2860 @dots{}
2861 AC_CONFIG_FILES(
2862   [tests/aclocal-$@{APIVERSION@}:tests/aclocal.in],
2863   [chmod +x tests/aclocal-$@{APIVERSION@}],
2864   [APIVERSION=$APIVERSION])
2865 AC_CONFIG_FILES(
2866   [tests/automake-$@{APIVERSION@}:tests/automake.in],
2867   [chmod +x tests/automake-$@{APIVERSION@}])
2868 @end example
2870 @noindent
2871 Here cleaning, distributing, and rebuilding are done automatically,
2872 because @samp{$@{APIVERSION@}} is known at @command{make}-time.
2874 Note that you should not use shell variables to declare
2875 @file{Makefile} files for which @command{automake} must create
2876 @file{Makefile.in}.  Even @code{AC_SUBST} does not help here, because
2877 @command{automake} needs to know the file name when it runs in order
2878 to check whether @file{Makefile.am} exists.  (In the very hairy case
2879 that your setup requires such use of variables, you will have to tell
2880 Automake which @file{Makefile.in}s to generate on the command-line.)
2882 It is possible to let @command{automake} emit conditional rules for
2883 @code{AC_CONFIG_FILES} with the help of @code{AM_COND_IF}
2884 (@pxref{Optional}).
2886 To summarize:
2887 @itemize @bullet
2888 @item
2889 Use literals for @file{Makefile}s, and for other files whenever possible.
2890 @item
2891 Use @samp{$file} (or @samp{$@{file@}} without @samp{AC_SUBST([file])})
2892 for files that @command{automake} should ignore.
2893 @item
2894 Use @samp{$@{file@}} and @samp{AC_SUBST([file])} for files
2895 that @command{automake} should not ignore.
2896 @end itemize
2898 @end table
2901 @node Optional
2902 @section Other things Automake recognizes
2904 @cindex Macros Automake recognizes
2905 @cindex Recognized macros by Automake
2907 Every time Automake is run it calls Autoconf to trace
2908 @file{configure.ac}.  This way it can recognize the use of certain
2909 macros and tailor the generated @file{Makefile.in} appropriately.
2910 Currently recognized macros and their effects are:
2912 @ftable @code
2913 @item AC_CANONICAL_BUILD
2914 @itemx AC_CANONICAL_HOST
2915 @itemx AC_CANONICAL_TARGET
2916 @vindex build_triplet
2917 @vindex host_triplet
2918 @vindex target_triplet
2919 Automake will ensure that @file{config.guess} and @file{config.sub}
2920 exist.  Also, the @file{Makefile} variables @code{build_triplet},
2921 @code{host_triplet} and @code{target_triplet} are introduced.  See
2922 @ref{Canonicalizing, , Getting the Canonical System Type, autoconf,
2923 The Autoconf Manual}.
2925 @item AC_CONFIG_AUX_DIR
2926 Automake will look for various helper scripts, such as
2927 @file{install-sh}, in the directory named in this macro invocation.
2928 @c This list is accurate relative to version 1.11
2929 (The full list of scripts is:
2930 @file{ar-lib},
2931 @file{config.guess},
2932 @file{config.sub},
2933 @file{depcomp},
2934 @file{compile},
2935 @file{install-sh},
2936 @file{ltmain.sh},
2937 @file{mdate-sh},
2938 @file{missing},
2939 @file{mkinstalldirs},
2940 @file{py-compile},
2941 @file{test-driver},
2942 @file{texinfo.tex},
2943 @file{ylwrap}.)
2944 Not all scripts are always searched for; some scripts
2945 will only be sought if the generated @file{Makefile.in} requires them.
2947 If @code{AC_CONFIG_AUX_DIR} is not given, the scripts are looked for in
2948 their standard locations.  For @file{mdate-sh},
2949 @file{texinfo.tex}, and @file{ylwrap}, the standard location is the
2950 source directory corresponding to the current @file{Makefile.am}.  For
2951 the rest, the standard location is the first one of @file{.}, @file{..},
2952 or @file{../..} (relative to the top source directory) that provides any
2953 one of the helper scripts.  @xref{Input, , Finding `configure' Input,
2954 autoconf, The Autoconf Manual}.
2956 Required files from @code{AC_CONFIG_AUX_DIR} are automatically
2957 distributed, even if there is no @file{Makefile.am} in this directory.
2959 @item AC_CONFIG_LIBOBJ_DIR
2960 Automake will require the sources file declared with
2961 @code{AC_LIBSOURCE} (see below) in the directory specified by this
2962 macro.
2964 @item AC_CONFIG_HEADERS
2965 Automake will generate rules to rebuild these headers from the
2966 corresponding templates (usually, the template for a @file{foo.h}
2967 header being @file{foo.h.in}).  Older versions of Automake
2968 required the use of @code{AM_CONFIG_HEADER}; this is no longer
2969 the case, and that macro has indeed been removed.
2971 As with @code{AC_CONFIG_FILES} (@pxref{Requirements}), parts of the
2972 specification using shell variables will be ignored as far as
2973 cleaning, distributing, and rebuilding is concerned.
2975 @item AC_CONFIG_LINKS
2976 Automake will generate rules to remove @file{configure} generated
2977 links on @samp{make distclean} and to distribute named source files as
2978 part of @samp{make dist}.
2980 As for @code{AC_CONFIG_FILES} (@pxref{Requirements}), parts of the
2981 specification using shell variables will be ignored as far as cleaning
2982 and distributing is concerned.  (There are no rebuild rules for links.)
2984 @item AC_LIBOBJ
2985 @itemx AC_LIBSOURCE
2986 @itemx AC_LIBSOURCES
2987 @vindex LIBOBJS
2988 Automake will automatically distribute any file listed in
2989 @code{AC_LIBSOURCE} or @code{AC_LIBSOURCES}.
2991 Note that the @code{AC_LIBOBJ} macro calls @code{AC_LIBSOURCE}.  So if
2992 an Autoconf macro is documented to call @samp{AC_LIBOBJ([file])}, then
2993 @file{file.c} will be distributed automatically by Automake.  This
2994 encompasses many macros like @code{AC_FUNC_ALLOCA},
2995 @code{AC_FUNC_MEMCMP}, @code{AC_REPLACE_FUNCS}, and others.
2997 By the way, direct assignments to @code{LIBOBJS} are no longer
2998 supported.  You should always use @code{AC_LIBOBJ} for this purpose.
2999 @xref{AC_LIBOBJ vs LIBOBJS, , @code{AC_LIBOBJ} vs.@: @code{LIBOBJS},
3000 autoconf, The Autoconf Manual}.
3002 @item AC_PROG_RANLIB
3003 This is required if any libraries are built in the package.
3004 @xref{Particular Programs, , Particular Program Checks, autoconf, The
3005 Autoconf Manual}.
3007 @item AC_PROG_CXX
3008 This is required if any C++ source is included.  @xref{Particular
3009 Programs, , Particular Program Checks, autoconf, The Autoconf Manual}.
3011 @item AC_PROG_OBJC
3012 This is required if any Objective C source is included.  @xref{Particular
3013 Programs, , Particular Program Checks, autoconf, The Autoconf Manual}.
3015 @item AC_PROG_OBJCXX
3016 This is required if any Objective C++ source is included.  @xref{Particular
3017 Programs, , Particular Program Checks, autoconf, The Autoconf Manual}.
3019 @item AC_PROG_F77
3020 This is required if any Fortran 77 source is included.  @xref{Particular
3021 Programs, , Particular Program Checks, autoconf, The Autoconf Manual}.
3023 @item AC_F77_LIBRARY_LDFLAGS
3024 This is required for programs and shared libraries that are a mixture of
3025 languages that include Fortran 77 (@pxref{Mixing Fortran 77 With C and
3026 C++}).  @xref{Macros, , Autoconf macros supplied with Automake}.
3028 @item AC_FC_SRCEXT
3029 Automake will add the flags computed by @code{AC_FC_SRCEXT} to compilation
3030 of files with the respective source extension (@pxref{Fortran Compiler, ,
3031 Fortran Compiler Characteristics, autoconf, The Autoconf Manual}).
3033 @item AC_PROG_FC
3034 This is required if any Fortran 90/95 source is included.  This macro is
3035 distributed with Autoconf version 2.58 and later.  @xref{Particular
3036 Programs, , Particular Program Checks, autoconf, The Autoconf Manual}.
3038 @item AC_PROG_LIBTOOL
3039 Automake will turn on processing for @command{libtool} (@pxref{Top, ,
3040 Introduction, libtool, The Libtool Manual}).
3042 @item AC_PROG_YACC
3043 @vindex YACC
3044 If a Yacc source file is seen, then you must either use this macro or
3045 define the variable @code{YACC} in @file{configure.ac}.  The former is
3046 preferred (@pxref{Particular Programs, , Particular Program Checks,
3047 autoconf, The Autoconf Manual}).
3049 @item AC_PROG_LEX
3050 If a Lex source file is seen, then this macro must be used.
3051 @xref{Particular Programs, , Particular Program Checks, autoconf, The
3052 Autoconf Manual}.
3054 @item AC_REQUIRE_AUX_FILE
3055 For each @code{AC_REQUIRE_AUX_FILE([@var{file}])},
3056 @command{automake} will ensure that @file{@var{file}} exists in the
3057 aux directory, and will complain otherwise.  It
3058 will also automatically distribute the file.  This macro should be
3059 used by third-party Autoconf macros that require some supporting
3060 files in the aux directory specified with @code{AC_CONFIG_AUX_DIR}
3061 above.  @xref{Input, , Finding @command{configure} Input, autoconf,
3062 The Autoconf Manual}.
3064 @item AC_SUBST
3065 The first argument is automatically defined as a variable in each
3066 generated @file{Makefile.in}, unless @code{AM_SUBST_NOTMAKE} is also
3067 used for this variable.  @xref{Setting Output Variables, , Setting
3068 Output Variables, autoconf, The Autoconf Manual}.
3070 For every substituted variable @var{var}, @command{automake} will add
3071 a line @code{@var{var} = @var{value}} to each @file{Makefile.in} file.
3072 Many Autoconf macros invoke @code{AC_SUBST} to set output variables
3073 this way, e.g., @code{AC_PATH_XTRA} defines @code{X_CFLAGS} and
3074 @code{X_LIBS}.  Thus, you can access these variables as
3075 @code{$(X_CFLAGS)} and @code{$(X_LIBS)} in any @file{Makefile.am}
3076 if @code{AC_PATH_XTRA} is called.
3078 @item AM_CONDITIONAL
3079 This introduces an Automake conditional (@pxref{Conditionals}).
3081 @item AM_COND_IF
3082 This macro allows @code{automake} to detect subsequent access within
3083 @file{configure.ac} to a conditional previously introduced with
3084 @code{AM_CONDITIONAL}, thus enabling conditional @code{AC_CONFIG_FILES}
3085 (@pxref{Usage of Conditionals}).
3087 @item AM_GNU_GETTEXT
3088 This macro is required for packages that use GNU gettext
3089 (@pxref{gettext}).  It is distributed with gettext.  If Automake sees
3090 this macro it ensures that the package meets some of gettext's
3091 requirements.
3093 @item AM_GNU_GETTEXT_INTL_SUBDIR
3094 This macro specifies that the @file{intl/} subdirectory is to be built,
3095 even if the @code{AM_GNU_GETTEXT} macro was invoked with a first argument
3096 of @samp{external}.
3098 @item AM_MAINTAINER_MODE(@ovar{default-mode})
3099 @opindex --enable-maintainer-mode
3100 @opindex --disable-maintainer-mode
3101 This macro adds an @option{--enable-maintainer-mode} option to
3102 @command{configure}.  If this is used, @command{automake} will cause
3103 ``maintainer-only'' rules to be turned off by default in the
3104 generated @file{Makefile.in}s, unless @var{default-mode} is
3105 @samp{enable}.  This macro defines the @code{MAINTAINER_MODE}
3106 conditional, which you can use in your own @file{Makefile.am}.
3107 @xref{maintainer-mode}.
3109 @item AM_SUBST_NOTMAKE(@var{var})
3110 Prevent Automake from defining a variable @var{var}, even if it is
3111 substituted by @command{config.status}.  Normally, Automake defines a
3112 @command{make} variable for each @command{configure} substitution,
3113 i.e., for each @code{AC_SUBST([@var{var}])}.  This macro prevents that
3114 definition from Automake.  If @code{AC_SUBST} has not been called
3115 for this variable, then @code{AM_SUBST_NOTMAKE} has no effects.
3116 Preventing variable definitions may be useful for substitution of
3117 multi-line values, where @code{@var{var} = @@@var{value}@@} might yield
3118 unintended results.
3120 @item m4_include
3121 Files included by @file{configure.ac} using this macro will be
3122 detected by Automake and automatically distributed.  They will also
3123 appear as dependencies in @file{Makefile} rules.
3125 @code{m4_include} is seldom used by @file{configure.ac} authors, but
3126 can appear in @file{aclocal.m4} when @command{aclocal} detects that
3127 some required macros come from files local to your package (as opposed to
3128 macros installed in a system-wide directory, @pxref{aclocal Invocation}).
3130 @end ftable
3132 @node aclocal Invocation
3133 @section Auto-generating aclocal.m4
3134 @c This node used to be named "Invoking automake".  This @anchor
3135 @c allows old links to still work.
3136 @anchor{Invoking aclocal}
3138 @cindex Invocation of @command{aclocal}
3139 @cindex @command{aclocal}, Invocation
3140 @cindex Invoking @command{aclocal}
3141 @cindex @command{aclocal}, Invoking
3143 Automake includes a number of Autoconf macros that can be used in
3144 your package (@pxref{Macros}); some of them are actually required by
3145 Automake in certain situations.  These macros must be defined in your
3146 @file{aclocal.m4}; otherwise they will not be seen by
3147 @command{autoconf}.
3149 The @command{aclocal} program will automatically generate
3150 @file{aclocal.m4} files based on the contents of @file{configure.ac}.
3151 This provides a convenient way to get Automake-provided macros,
3152 without having to search around.  The @command{aclocal} mechanism
3153 allows other packages to supply their own macros (@pxref{Extending
3154 aclocal}).  You can also use it to maintain your own set of custom
3155 macros (@pxref{Local Macros}).
3157 At startup, @command{aclocal} scans all the @file{.m4} files it can
3158 find, looking for macro definitions (@pxref{Macro Search Path}).  Then
3159 it scans @file{configure.ac}.  Any mention of one of the macros found
3160 in the first step causes that macro, and any macros it in turn
3161 requires, to be put into @file{aclocal.m4}.
3163 @emph{Putting} the file that contains the macro definition into
3164 @file{aclocal.m4} is usually done by copying the entire text of this
3165 file, including unused macro definitions as well as both @samp{#} and
3166 @samp{dnl} comments.  If you want to make a comment that will be
3167 completely ignored by @command{aclocal}, use @samp{##} as the comment
3168 leader.
3170 When a file selected by @command{aclocal} is located in a subdirectory
3171 specified as a relative search path with @command{aclocal}'s @option{-I}
3172 argument, @command{aclocal} assumes the file belongs to the package
3173 and uses @code{m4_include} instead of copying it into
3174 @file{aclocal.m4}.  This makes the package smaller, eases dependency
3175 tracking, and cause the file to be distributed automatically.
3176 (@xref{Local Macros}, for an example.)  Any macro that is found in a
3177 system-wide directory, or via an absolute search path will be copied.
3178 So use @samp{-I `pwd`/reldir} instead of @samp{-I reldir} whenever
3179 some relative directory should be considered outside the package.
3181 The contents of @file{acinclude.m4}, if this file exists, are also
3182 automatically included in @file{aclocal.m4}.  We recommend against
3183 using @file{acinclude.m4} in new packages (@pxref{Local Macros}).
3185 @vindex AUTOM4TE
3186 @cindex autom4te
3187 While computing @file{aclocal.m4}, @command{aclocal} runs
3188 @command{autom4te} (@pxref{Using autom4te, , Using @command{Autom4te},
3189 autoconf, The Autoconf Manual}) in order to trace the macros that are
3190 really used, and omit from @file{aclocal.m4} all macros that are
3191 mentioned but otherwise unexpanded (this can happen when a macro is
3192 called conditionally).  @command{autom4te} is expected to be in the
3193 @env{PATH}, just as @command{autoconf}.  Its location can be
3194 overridden using the @env{AUTOM4TE} environment variable.
3196 @menu
3197 * aclocal Options::             Options supported by aclocal
3198 * Macro Search Path::           How aclocal finds .m4 files
3199 * Extending aclocal::           Writing your own aclocal macros
3200 * Local Macros::                Organizing local macros
3201 * Serials::                     Serial lines in Autoconf macros
3202 * Future of aclocal::           aclocal's scheduled death
3203 @end menu
3205 @node aclocal Options
3206 @subsection aclocal Options
3208 @cindex @command{aclocal}, Options
3209 @cindex Options, @command{aclocal}
3211 @command{aclocal} accepts the following options:
3213 @table @code
3214 @item --automake-acdir=@var{dir}
3215 @opindex --automake-acdir
3216 Look for the automake-provided macro files in @var{dir} instead of
3217 in the installation directory.  This is typically used for debugging.
3219 @item --system-acdir=@var{dir}
3220 @opindex --system-acdir
3221 Look for the system-wide third-party macro files (and the special
3222 @file{dirlist} file) in @var{dir} instead of in the installation
3223 directory.  This is typically used for debugging.
3225 @item --diff[=@var{command}]
3226 @opindex --diff
3227 Run @var{command} on M4 file that would be installed or overwritten
3228 by @option{--install}.  The default @var{command} is @samp{diff -u}.
3229 This option implies @option{--install} and @option{--dry-run}.
3231 @item --dry-run
3232 @opindex --dry-run
3233 Do not actually overwrite (or create) @file{aclocal.m4} and M4
3234 files installed by @option{--install}.
3236 @item --help
3237 @opindex --help
3238 Print a summary of the command line options and exit.
3240 @item -I @var{dir}
3241 @opindex -I
3242 Add the directory @var{dir} to the list of directories searched for
3243 @file{.m4} files.
3245 @item --install
3246 @opindex --install
3247 Install system-wide third-party macros into the first directory
3248 specified with @samp{-I @var{dir}} instead of copying them in the
3249 output file.
3250 @c Keep in sync with aclocal-install-absdir.sh
3251 Note that this will happen also if @var{dir} is an absolute path.
3253 @cindex serial number and @option{--install}
3254 When this option is used, and only when this option is used,
3255 @command{aclocal} will also honor @samp{#serial @var{number}} lines
3256 that appear in macros: an M4 file is ignored if there exists another
3257 M4 file with the same basename and a greater serial number in the
3258 search path (@pxref{Serials}).
3260 @item --force
3261 @opindex --force
3262 Always overwrite the output file.  The default is to overwrite the output
3263 file only when really needed, i.e., when its contents changes or if one
3264 of its dependencies is younger.
3266 This option forces the update of @file{aclocal.m4} (or the file
3267 specified with @file{--output} below) and only this file, it has
3268 absolutely no influence on files that may need to be installed by
3269 @option{--install}.
3271 @item --output=@var{file}
3272 @opindex --output
3273 Cause the output to be put into @var{file} instead of @file{aclocal.m4}.
3275 @item --print-ac-dir
3276 @opindex --print-ac-dir
3277 Prints the name of the directory that @command{aclocal} will search to
3278 find third-party @file{.m4} files.  When this option is given, normal
3279 processing is suppressed.  This option was used @emph{in the past} by
3280 third-party packages to determine where to install @file{.m4} macro
3281 files, but @emph{this usage is today discouraged}, since it causes
3282 @samp{$(prefix)} not to be thoroughly honored (which violates the
3283 GNU Coding Standards), and a similar semantics can be better obtained
3284 with the @env{ACLOCAL_PATH} environment variable; @pxref{Extending aclocal}.
3286 @item --verbose
3287 @opindex --verbose
3288 Print the names of the files it examines.
3290 @item --version
3291 @opindex --version
3292 Print the version number of Automake and exit.
3294 @item -W CATEGORY
3295 @item --warnings=@var{category}
3296 @opindex -W
3297 @opindex --warnings
3298 Output warnings falling in @var{category}.  @var{category} can be
3299 one of:
3300 @table @code
3301 @item syntax
3302 dubious syntactic constructs, underquoted macros, unused macros, etc.
3303 @item unsupported
3304 unknown macros
3305 @item all
3306 all the warnings, this is the default
3307 @item none
3308 turn off all the warnings
3309 @item error
3310 treat warnings as errors
3311 @end table
3313 All warnings are output by default.
3315 @vindex WARNINGS
3316 The environment variable @env{WARNINGS} is honored in the same
3317 way as it is for @command{automake} (@pxref{automake Invocation}).
3319 @end table
3321 @node Macro Search Path
3322 @subsection Macro Search Path
3324 @cindex Macro search path
3325 @cindex @command{aclocal} search path
3327 By default, @command{aclocal} searches for @file{.m4} files in the following
3328 directories, in this order:
3330 @table @code
3331 @item @var{acdir-APIVERSION}
3332 This is where the @file{.m4} macros distributed with Automake itself
3333 are stored.  @var{APIVERSION} depends on the Automake release used;
3334 for example, for Automake 1.11.x, @var{APIVERSION} = @code{1.11}.
3336 @item @var{acdir}
3337 This directory is intended for third party @file{.m4} files, and is
3338 configured when @command{automake} itself is built.  This is
3339 @file{@@datadir@@/aclocal/}, which typically
3340 expands to @file{$@{prefix@}/share/aclocal/}.  To find the compiled-in
3341 value of @var{acdir}, use the @option{--print-ac-dir} option
3342 (@pxref{aclocal Options}).
3343 @end table
3345 As an example, suppose that @command{automake-1.11.2} was configured with
3346 @option{--prefix=@-/usr/local}.  Then, the search path would be:
3348 @enumerate
3349 @item @file{/usr/local/share/aclocal-1.11.2/}
3350 @item @file{/usr/local/share/aclocal/}
3351 @end enumerate
3353 The paths for the @var{acdir} and @var{acdir-APIVERSION} directories can
3354 be changed respectively through aclocal options @option{--system-acdir}
3355 and @option{--automake-acdir} (@pxref{aclocal Options}).  Note however
3356 that these options are only intended for use by the internal Automake
3357 test suite, or for debugging under highly unusual situations; they are
3358 not ordinarily needed by end-users.
3360 As explained in (@pxref{aclocal Options}), there are several options that
3361 can be used to change or extend this search path.
3363 @subsubheading Modifying the Macro Search Path: @samp{-I @var{dir}}
3365 Any extra directories specified using @option{-I} options
3366 (@pxref{aclocal Options}) are @emph{prepended} to this search list.  Thus,
3367 @samp{aclocal -I /foo -I /bar} results in the following search path:
3369 @enumerate
3370 @item @file{/foo}
3371 @item @file{/bar}
3372 @item @var{acdir}-@var{APIVERSION}
3373 @item @var{acdir}
3374 @end enumerate
3376 @subsubheading Modifying the Macro Search Path: @file{dirlist}
3377 @cindex @file{dirlist}
3379 There is a third mechanism for customizing the search path.  If a
3380 @file{dirlist} file exists in @var{acdir}, then that file is assumed to
3381 contain a list of directory patterns, one per line.  @command{aclocal}
3382 expands these patterns to directory names, and adds them to the search
3383 list @emph{after} all other directories.  @file{dirlist} entries may
3384 use shell wildcards such as @samp{*}, @samp{?}, or @code{[...]}.
3386 For example, suppose
3387 @file{@var{acdir}/dirlist} contains the following:
3389 @example
3390 /test1
3391 /test2
3392 /test3*
3393 @end example
3395 @noindent
3396 and that @command{aclocal} was called with the @samp{-I /foo -I /bar} options.
3397 Then, the search path would be
3399 @c @code looks better than @file here
3400 @enumerate
3401 @item @code{/foo}
3402 @item @code{/bar}
3403 @item @var{acdir}-@var{APIVERSION}
3404 @item @var{acdir}
3405 @item @code{/test1}
3406 @item @code{/test2}
3407 @end enumerate
3409 @noindent
3410 and all directories with path names starting with @code{/test3}.
3412 If the @option{--system-acdir=@var{dir}} option is used, then
3413 @command{aclocal} will search for the @file{dirlist} file in
3414 @var{dir}; but remember the warnings  above against the use of
3415 @option{--system-acdir}.
3417 @file{dirlist} is useful in the following situation: suppose that
3418 @command{automake} version @code{1.11.2} is installed with
3419 @samp{--prefix=/usr} by the system vendor.  Thus, the default search
3420 directories are
3422 @c @code looks better than @file here
3423 @enumerate
3424 @item @code{/usr/share/aclocal-1.11/}
3425 @item @code{/usr/share/aclocal/}
3426 @end enumerate
3428 However, suppose further that many packages have been manually
3429 installed on the system, with $prefix=/usr/local, as is typical.  In
3430 that case, many of these ``extra'' @file{.m4} files are in
3431 @file{/usr/local/share/aclocal}.  The only way to force
3432 @file{/usr/bin/aclocal} to find these ``extra'' @file{.m4} files is to
3433 always call @samp{aclocal -I /usr/local/share/aclocal}.  This is
3434 inconvenient.  With @file{dirlist}, one may create a file
3435 @file{/usr/share/aclocal/dirlist} containing only the single line
3437 @example
3438 /usr/local/share/aclocal
3439 @end example
3441 Now, the ``default'' search path on the affected system is
3443 @c @code looks better than @file here
3444 @enumerate
3445 @item @code{/usr/share/aclocal-1.11/}
3446 @item @code{/usr/share/aclocal/}
3447 @item @code{/usr/local/share/aclocal/}
3448 @end enumerate
3450 without the need for @option{-I} options; @option{-I} options can be reserved
3451 for project-specific needs (@file{my-source-dir/m4/}), rather than
3452 using it to work around local system-dependent tool installation
3453 directories.
3455 Similarly, @file{dirlist} can be handy if you have installed a local
3456 copy of Automake in your account and want @command{aclocal} to look for
3457 macros installed at other places on the system.
3459 @anchor{ACLOCAL_PATH}
3460 @subsubheading Modifying the Macro Search Path: @file{ACLOCAL_PATH}
3461 @cindex @env{ACLOCAL_PATH}
3463 The fourth and last mechanism to customize the macro search path is
3464 also the simplest.  Any directory included in the colon-separated
3465 environment variable @env{ACLOCAL_PATH} is added to the search path
3466 @c Keep in sync with aclocal-path-precedence.sh
3467 and takes precedence over system directories (including those found via
3468 @file{dirlist}), with the exception of the versioned directory
3469 @var{acdir-APIVERSION} (@pxref{Macro Search Path}).  However, directories
3470 passed via @option{-I} will take precedence over directories in
3471 @env{ACLOCAL_PATH}.
3473 @c Keep in sync with aclocal-path-installed.sh
3474 Also note that, if the @option{--install} option is used, any @file{.m4}
3475 file containing a required macro that is found in a directory listed in
3476 @env{ACLOCAL_PATH} will be installed locally.
3477 @c Keep in sync with aclocal-path-installed-serial.sh
3478 In this case, serial numbers in @file{.m4} are honored too,
3479 @pxref{Serials}.
3481 Conversely to @file{dirlist}, @env{ACLOCAL_PATH} is useful if you are
3482 using a global copy of Automake and want @command{aclocal} to look for
3483 macros somewhere under your home directory.
3485 @subsubheading Planned future incompatibilities
3487 The order in which the directories in the macro search path are currently
3488 looked up is confusing and/or suboptimal in various aspects, and is
3489 probably going to be changed in the future Automake release.  In
3490 particular, directories in @env{ACLOCAL_PATH} and @file{@var{acdir}}
3491 might end up taking precedence over @file{@var{acdir-APIVERSION}}, and
3492 directories in @file{@var{acdir}/dirlist} might end up taking precedence
3493 over @file{@var{acdir}}.  @emph{This is a possible future incompatibility!}
3495 @node Extending aclocal
3496 @subsection Writing your own aclocal macros
3498 @cindex @command{aclocal}, extending
3499 @cindex Extending @command{aclocal}
3501 The @command{aclocal} program doesn't have any built-in knowledge of any
3502 macros, so it is easy to extend it with your own macros.
3504 This can be used by libraries that want to supply their own Autoconf
3505 macros for use by other programs.  For instance, the @command{gettext}
3506 library supplies a macro @code{AM_GNU_GETTEXT} that should be used by
3507 any package using @command{gettext}.  When the library is installed, it
3508 installs this macro so that @command{aclocal} will find it.
3510 A macro file's name should end in @file{.m4}.  Such files should be
3511 installed in @file{$(datadir)/aclocal}.  This is as simple as writing:
3513 @c Keep in sync with primary-prefix-couples-documented-valid.sh
3514 @example
3515 aclocaldir = $(datadir)/aclocal
3516 aclocal_DATA = mymacro.m4 myothermacro.m4
3517 @end example
3519 @noindent
3520 Please do use @file{$(datadir)/aclocal}, and not something based on
3521 the result of @samp{aclocal --print-ac-dir} (@pxref{Hard-Coded Install
3522 Paths}, for arguments).  It might also be helpful to suggest to
3523 the user to add the @file{$(datadir)/aclocal} directory to his
3524 @env{ACLOCAL_PATH} variable (@pxref{ACLOCAL_PATH}) so that
3525 @command{aclocal} will find the @file{.m4} files installed by your
3526 package automatically.
3528 A file of macros should be a series of properly quoted
3529 @code{AC_DEFUN}'s (@pxref{Macro Definitions, , , autoconf, The
3530 Autoconf Manual}).  The @command{aclocal} programs also understands
3531 @code{AC_REQUIRE} (@pxref{Prerequisite Macros, , , autoconf, The
3532 Autoconf Manual}), so it is safe to put each macro in a separate file.
3533 Each file should have no side effects but macro definitions.
3534 Especially, any call to @code{AC_PREREQ} should be done inside the
3535 defined macro, not at the beginning of the file.
3537 @cindex underquoted @code{AC_DEFUN}
3538 @acindex AC_DEFUN
3539 @acindex AC_PREREQ
3541 Starting with Automake 1.8, @command{aclocal} will warn about all
3542 underquoted calls to @code{AC_DEFUN}.  We realize this will annoy a
3543 lot of people, because @command{aclocal} was not so strict in the past
3544 and many third party macros are underquoted; and we have to apologize
3545 for this temporary inconvenience.  The reason we have to be stricter
3546 is that a future implementation of @command{aclocal} (@pxref{Future of
3547 aclocal}) will have to temporarily include all of these third party
3548 @file{.m4} files, maybe several times, including even files that are
3549 not actually needed.  Doing so should alleviate many problems of the
3550 current implementation, however it requires a stricter style from the
3551 macro authors.  Hopefully it is easy to revise the existing macros.
3552 For instance,
3554 @example
3555 # bad style
3556 AC_PREREQ(2.68)
3557 AC_DEFUN(AX_FOOBAR,
3558 [AC_REQUIRE([AX_SOMETHING])dnl
3559 AX_FOO
3560 AX_BAR
3562 @end example
3564 @noindent
3565 should be rewritten as
3567 @example
3568 AC_DEFUN([AX_FOOBAR],
3569 [AC_PREREQ([2.68])dnl
3570 AC_REQUIRE([AX_SOMETHING])dnl
3571 AX_FOO
3572 AX_BAR
3574 @end example
3576 Wrapping the @code{AC_PREREQ} call inside the macro ensures that
3577 Autoconf 2.68 will not be required if @code{AX_FOOBAR} is not actually
3578 used.  Most importantly, quoting the first argument of @code{AC_DEFUN}
3579 allows the macro to be redefined or included twice (otherwise this
3580 first argument would be expanded during the second definition).  For
3581 consistency we like to quote even arguments such as @code{2.68} that
3582 do not require it.
3584 If you have been directed here by the @command{aclocal} diagnostic but
3585 are not the maintainer of the implicated macro, you will want to
3586 contact the maintainer of that macro.  Please make sure you have the
3587 latest version of the macro and that the problem hasn't already been
3588 reported before doing so: people tend to work faster when they aren't
3589 flooded by mails.
3591 Another situation where @command{aclocal} is commonly used is to
3592 manage macros that are used locally by the package, @ref{Local
3593 Macros}.
3595 @node Local Macros
3596 @subsection Handling Local Macros
3598 Feature tests offered by Autoconf do not cover all needs.  People
3599 often have to supplement existing tests with their own macros, or
3600 with third-party macros.
3602 There are two ways to organize custom macros in a package.
3604 The first possibility (the historical practice) is to list all your
3605 macros in @file{acinclude.m4}.  This file will be included in
3606 @file{aclocal.m4} when you run @command{aclocal}, and its macro(s) will
3607 henceforth be visible to @command{autoconf}.  However if it contains
3608 numerous macros, it will rapidly become difficult to maintain, and it
3609 will be almost impossible to share macros between packages.
3611 The second possibility, which we do recommend, is to write each macro
3612 in its own file and gather all these files in a directory.  This
3613 directory is usually called @file{m4/}.  Then it's enough to update
3614 @file{configure.ac} by adding a proper call to @code{AC_CONFIG_MACRO_DIRS}:
3616 @example
3617 AC_CONFIG_MACRO_DIRS([m4])
3618 @end example
3620 @command{aclocal} will then take care of automatically adding @file{m4/}
3621 to its search path for m4 files.
3623 When @samp{aclocal} is run, it will build an @file{aclocal.m4}
3624 that @code{m4_include}s any file from @file{m4/} that defines a
3625 required macro.  Macros not found locally will still be searched in
3626 system-wide directories, as explained in @ref{Macro Search Path}.
3628 Custom macros should be distributed for the same reason that
3629 @file{configure.ac} is: so that other people have all the sources of
3630 your package if they want to work on it.  Actually, this distribution
3631 happens automatically because all @code{m4_include}d files are
3632 distributed.
3634 However there is no consensus on the distribution of third-party
3635 macros that your package may use.  Many libraries install their own
3636 macro in the system-wide @command{aclocal} directory (@pxref{Extending
3637 aclocal}).  For instance, Guile ships with a file called
3638 @file{guile.m4} that contains the macro @code{GUILE_FLAGS} that can
3639 be used to define setup compiler and linker flags appropriate for
3640 using Guile.  Using @code{GUILE_FLAGS} in @file{configure.ac} will
3641 cause @command{aclocal} to copy @file{guile.m4} into
3642 @file{aclocal.m4}, but as @file{guile.m4} is not part of the project,
3643 it will not be distributed.  Technically, that means a user who
3644 needs to rebuild @file{aclocal.m4} will have to install Guile first.
3645 This is probably OK, if Guile already is a requirement to build the
3646 package.  However, if Guile is only an optional feature, or if your
3647 package might run on architectures where Guile cannot be installed,
3648 this requirement will hinder development.  An easy solution is to copy
3649 such third-party macros in your local @file{m4/} directory so they get
3650 distributed.
3652 Since Automake 1.10, @command{aclocal} offers the option @code{--install}
3653 to copy these system-wide third-party macros in your local macro directory,
3654 helping to solve the above problem.
3656 With this setup, system-wide macros will be copied to @file{m4/}
3657 the first time you run @command{aclocal}.  Then the locally installed
3658 macros will have precedence over the system-wide installed macros
3659 each time @command{aclocal} is run again.
3661 One reason why you should keep @option{--install} in the flags even
3662 after the first run is that when you later edit @file{configure.ac}
3663 and depend on a new macro, this macro will be installed in your
3664 @file{m4/} automatically.  Another one is that serial numbers
3665 (@pxref{Serials}) can be used to update the macros in your source tree
3666 automatically when new system-wide versions are installed.  A serial
3667 number should be a single line of the form
3669 @example
3670 #serial @var{nnn}
3671 @end example
3673 @noindent
3674 where @var{nnn} contains only digits and dots.  It should appear in
3675 the M4 file before any macro definition.  It is a good practice to
3676 maintain a serial number for each macro you distribute, even if you do
3677 not use the @option{--install} option of @command{aclocal}: this allows
3678 other people to use it.
3681 @node Serials
3682 @subsection Serial Numbers
3683 @cindex serial numbers in macros
3684 @cindex macro serial numbers
3685 @cindex @code{#serial} syntax
3686 @cindex @command{aclocal} and serial numbers
3688 Because third-party macros defined in @file{*.m4} files are naturally
3689 shared between multiple projects, some people like to version them.
3690 This makes it easier to tell which of two M4 files is newer.  Since at
3691 least 1996, the tradition is to use a @samp{#serial} line for this.
3693 A serial number should be a single line of the form
3695 @example
3696 # serial @var{version}
3697 @end example
3699 @noindent
3700 where @var{version} is a version number containing only digits and
3701 dots.  Usually people use a single integer, and they increment it each
3702 time they change the macro (hence the name of ``serial'').  Such a
3703 line should appear in the M4 file before any macro definition.
3705 The @samp{#} must be the first character on the line,
3706 and it is OK to have extra words after the version, as in
3708 @example
3709 #serial @var{version} @var{garbage}
3710 @end example
3712 Normally these serial numbers are completely ignored by
3713 @command{aclocal} and @command{autoconf}, like any genuine comment.
3714 However when using @command{aclocal}'s @option{--install} feature, these
3715 serial numbers will modify the way @command{aclocal} selects the
3716 macros to install in the package: if two files with the same basename
3717 exist in your search path, and if at least one of them uses a
3718 @samp{#serial} line, @command{aclocal} will ignore the file that has
3719 the older @samp{#serial} line (or the file that has none).
3721 Note that a serial number applies to a whole M4 file, not to any macro
3722 it contains.  A file can contains multiple macros, but only one
3723 serial.
3725 Here is a use case that illustrates the use of @option{--install} and
3726 its interaction with serial numbers.  Let's assume we maintain a
3727 package called MyPackage, the @file{configure.ac} of which requires a
3728 third-party macro @code{AX_THIRD_PARTY} defined in
3729 @file{/usr/share/aclocal/thirdparty.m4} as follows:
3731 @example
3732 # serial 1
3733 AC_DEFUN([AX_THIRD_PARTY], [...])
3734 @end example
3736 MyPackage uses an @file{m4/} directory to store local macros as
3737 explained in @ref{Local Macros}, and has
3739 @example
3740 AC_CONFIG_MACRO_DIRS([m4])
3741 @end example
3743 @noindent
3744 in its @file{configure.ac}.
3746 Initially the @file{m4/} directory is empty.  The first time we run
3747 @command{aclocal --install}, it will notice that
3749 @itemize @bullet
3750 @item
3751 @file{configure.ac} uses @code{AX_THIRD_PARTY}
3752 @item
3753 No local macros define @code{AX_THIRD_PARTY}
3754 @item
3755 @file{/usr/share/aclocal/thirdparty.m4} defines @code{AX_THIRD_PARTY}
3756 with serial 1.
3757 @end itemize
3759 @noindent
3760 Because @file{/usr/share/aclocal/thirdparty.m4} is a system-wide macro
3761 and @command{aclocal} was given the @option{--install} option, it will
3762 copy this file in @file{m4/thirdparty.m4}, and output an
3763 @file{aclocal.m4} that contains @samp{m4_include([m4/thirdparty.m4])}.
3765 The next time @samp{aclocal --install} is run, something different
3766 happens.  @command{aclocal} notices that
3768 @itemize @bullet
3769 @item
3770 @file{configure.ac} uses @code{AX_THIRD_PARTY}
3771 @item
3772 @file{m4/thirdparty.m4} defines @code{AX_THIRD_PARTY}
3773 with serial 1.
3774 @item
3775 @file{/usr/share/aclocal/thirdparty.m4} defines @code{AX_THIRD_PARTY}
3776 with serial 1.
3777 @end itemize
3779 @noindent
3780 Because both files have the same serial number, @command{aclocal} uses
3781 the first it found in its search path order (@pxref{Macro Search
3782 Path}).  @command{aclocal} therefore ignores
3783 @file{/usr/share/aclocal/thirdparty.m4} and outputs an
3784 @file{aclocal.m4} that contains @samp{m4_include([m4/thirdparty.m4])}.
3786 Local directories specified with @option{-I} are always searched before
3787 system-wide directories, so a local file will always be preferred to
3788 the system-wide file in case of equal serial numbers.
3790 Now suppose the system-wide third-party macro is changed.  This can
3791 happen if the package installing this macro is updated.  Let's suppose
3792 the new macro has serial number 2.  The next time @samp{aclocal --install}
3793 is run the situation is the following:
3795 @itemize @bullet
3796 @item
3797 @file{configure.ac} uses @code{AX_THIRD_PARTY}
3798 @item
3799 @file{m4/thirdparty.m4} defines @code{AX_THIRD_PARTY}
3800 with serial 1.
3801 @item
3802 @file{/usr/share/aclocal/thirdparty.m4} defines @code{AX_THIRD_PARTY}
3803 with serial 2.
3804 @end itemize
3806 @noindent
3807 When @command{aclocal} sees a greater serial number, it immediately
3808 forgets anything it knows from files that have the same basename and a
3809 smaller serial number.  So after it has found
3810 @file{/usr/share/aclocal/thirdparty.m4} with serial 2,
3811 @command{aclocal} will proceed as if it had never seen
3812 @file{m4/thirdparty.m4}.  This brings us back to a situation similar
3813 to that at the beginning of our example, where no local file defined
3814 the macro.  @command{aclocal} will install the new version of the
3815 macro in @file{m4/thirdparty.m4}, in this case overriding the old
3816 version.  MyPackage just had its macro updated as a side effect of
3817 running @command{aclocal}.
3819 If you are leery of letting @command{aclocal} update your local
3820 macro, you can run @samp{aclocal --diff} to review the changes
3821 @samp{aclocal --install} would perform on these macros.
3823 Finally, note that the @option{--force} option of @command{aclocal} has
3824 absolutely no effect on the files installed by @option{--install}.  For
3825 instance, if you have modified your local macros, do not expect
3826 @option{--install --force} to replace the local macros by their
3827 system-wide versions.  If you want to do so, simply erase the local
3828 macros you want to revert, and run @samp{aclocal --install}.
3831 @node Future of aclocal
3832 @subsection The Future of @command{aclocal}
3833 @cindex @command{aclocal}'s scheduled death
3835 @command{aclocal} is expected to disappear.  This feature really
3836 should not be offered by Automake.  Automake should focus on
3837 generating @file{Makefile}s; dealing with M4 macros really is
3838 Autoconf's job.  The fact that some people install Automake just to use
3839 @command{aclocal}, but do not use @command{automake} otherwise is an
3840 indication of how that feature is misplaced.
3842 The new implementation will probably be done slightly differently.
3843 For instance, it could enforce the @file{m4/}-style layout discussed in
3844 @ref{Local Macros}.
3846 We have no idea when and how this will happen.  This has been
3847 discussed several times in the past, but someone still has to commit
3848 to that non-trivial task.
3850 From the user point of view, @command{aclocal}'s removal might turn
3851 out to be painful.  There is a simple precaution that you may take to
3852 make that switch more seamless: never call @command{aclocal} yourself.
3853 Keep this guy under the exclusive control of @command{autoreconf} and
3854 Automake's rebuild rules.  Hopefully you won't need to worry about
3855 things breaking, when @command{aclocal} disappears, because everything
3856 will have been taken care of.  If otherwise you used to call
3857 @command{aclocal} directly yourself or from some script, you will
3858 quickly notice the change.
3860 Many packages come with a script called @file{bootstrap} or
3861 @file{autogen.sh}, that will just call @command{aclocal},
3862 @command{libtoolize}, @command{gettextize} or @command{autopoint},
3863 @command{autoconf}, @command{autoheader}, and @command{automake} in
3864 the right order.  Actually this is precisely what @command{autoreconf}
3865 can do for you.  If your package has such a @file{bootstrap} or
3866 @file{autogen.sh} script, consider using @command{autoreconf}.  That
3867 should simplify its logic a lot (less things to maintain, yum!), it's
3868 even likely you will not need the script anymore, and more to the point
3869 you will not call @command{aclocal} directly anymore.
3871 For the time being, third-party packages should continue to install
3872 public macros into @file{/usr/share/aclocal/}.  If @command{aclocal}
3873 is replaced by another tool it might make sense to rename the
3874 directory, but supporting @file{/usr/share/aclocal/} for backward
3875 compatibility should be really easy provided all macros are properly
3876 written (@pxref{Extending aclocal}).
3880 @node Macros
3881 @section Autoconf macros supplied with Automake
3883 Automake ships with several Autoconf macros that you can use from your
3884 @file{configure.ac}.  When you use one of them it will be included by
3885 @command{aclocal} in @file{aclocal.m4}.
3887 @menu
3888 * Public Macros::               Macros that you can use.
3889 * Obsolete Macros::             Macros that will soon be removed.
3890 * Private Macros::              Macros that you should not use.
3891 @end menu
3893 @c consider generating the following subsections automatically from m4 files.
3895 @node Public Macros
3896 @subsection Public Macros
3898 @table @code
3900 @item AM_INIT_AUTOMAKE([OPTIONS])
3901 @acindex AM_INIT_AUTOMAKE
3902 Runs many macros required for proper operation of the generated Makefiles.
3904 @vindex AUTOMAKE_OPTIONS
3905 Today, @code{AM_INIT_AUTOMAKE} is called with a single argument: a
3906 space-separated list of Automake options that should be applied to
3907 every @file{Makefile.am} in the tree.  The effect is as if
3908 each option were listed in @code{AUTOMAKE_OPTIONS} (@pxref{Options}).
3910 @acindex AC_INIT
3911 This macro can also be called in another, @emph{deprecated} form:
3912 @code{AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])}.  In this form,
3913 there are two required arguments: the package and the version number.
3914 This usage is mostly obsolete because the @var{package} and @var{version}
3915 can be obtained from Autoconf's @code{AC_INIT} macro.  However,
3916 differently from what happens for @code{AC_INIT} invocations, this
3917 @code{AM_INIT_AUTOMAKE} invocation supports shell variables' expansions
3918 in the @code{PACKAGE} and @code{VERSION} arguments (which otherwise
3919 defaults, respectively, to the @code{PACKAGE_TARNAME} and
3920 @code{PACKAGE_VERSION} defined via the @code{AC_INIT} invocation;
3921 @pxref{AC_INIT, , The @code{AC_INIT} macro, autoconf, The Autoconf Manual});
3922 and this can be still be useful in some selected situations.
3923 Our hope is that future Autoconf versions will improve their support
3924 for package versions defined dynamically at configure runtime; when
3925 (and if) this happens, support for the two-args @code{AM_INIT_AUTOMAKE}
3926 invocation will likely be removed from Automake.
3928 @anchor{Modernize AM_INIT_AUTOMAKE invocation}
3929 If your @file{configure.ac} has:
3931 @example
3932 AC_INIT([src/foo.c])
3933 AM_INIT_AUTOMAKE([mumble], [1.5])
3934 @end example
3936 @noindent
3937 you should modernize it as follows:
3939 @example
3940 AC_INIT([mumble], [1.5])
3941 AC_CONFIG_SRCDIR([src/foo.c])
3942 AM_INIT_AUTOMAKE
3943 @end example
3945 Note that if you're upgrading your @file{configure.ac} from an earlier
3946 version of Automake, it is not always correct to simply move the
3947 package and version arguments from @code{AM_INIT_AUTOMAKE} directly to
3948 @code{AC_INIT}, as in the example above.  The first argument to
3949 @code{AC_INIT} should be the name of your package (e.g., @samp{GNU
3950 Automake}), not the tarball name (e.g., @samp{automake}) that you used
3951 to pass to @code{AM_INIT_AUTOMAKE}.  Autoconf tries to derive a
3952 tarball name from the package name, which should work for most but not
3953 all package names.  (If it doesn't work for yours, you can use the
3954 four-argument form of @code{AC_INIT} to provide the tarball name
3955 explicitly).
3957 @cindex @code{PACKAGE}, prevent definition
3958 @cindex @code{VERSION}, prevent definition
3959 @opindex no-define
3960 By default this macro @code{AC_DEFINE}'s @code{PACKAGE} and
3961 @code{VERSION}.  This can be avoided by passing the @option{no-define}
3962 option (@pxref{List of Automake options}):
3963 @example
3964 AM_INIT_AUTOMAKE([no-define ...])
3965 @end example
3967 @item AM_PATH_LISPDIR
3968 @acindex AM_PATH_LISPDIR
3969 @vindex EMACS
3970 @vindex lispdir
3971 Searches for the program @command{emacs}, and, if found, sets the
3972 output variable @code{lispdir} to the full path to Emacs' site-lisp
3973 directory.
3975 Note that this test assumes the @command{emacs} found to be a version
3976 that supports Emacs Lisp (such as GNU Emacs or XEmacs).  Other
3977 emacsen can cause this test to hang (some, like old versions of
3978 MicroEmacs, start up in interactive mode, requiring @kbd{C-x C-c} to
3979 exit, which is hardly obvious for a non-emacs user).  In most cases,
3980 however, you should be able to use @kbd{C-c} to kill the test.  In
3981 order to avoid problems, you can set @env{EMACS} to ``no'' in the
3982 environment, or use the @option{--with-lispdir} option to
3983 @command{configure} to explicitly set the correct path (if you're sure
3984 you have an @command{emacs} that supports Emacs Lisp).
3986 @item AM_PROG_AR(@ovar{act-if-fail})
3987 @acindex AM_PROG_AR
3988 @vindex AR
3989 You must use this macro when you use the archiver in your project, if
3990 you want support for unusual archivers such as Microsoft @command{lib}.
3991 The content of the optional argument is executed if the archiver
3992 interface is not recognized; the default action is to abort configure
3993 with an error message.
3995 @item AM_PROG_AS
3996 @acindex AM_PROG_AS
3997 @vindex CCAS
3998 @vindex CCASFLAGS
3999 Use this macro when you have assembly code in your project.  This will
4000 choose the assembler for you (by default the C compiler) and set
4001 @code{CCAS}, and will also set @code{CCASFLAGS} if required.
4003 @item AM_PROG_CC_C_O
4004 @acindex AM_PROG_CC_C_O
4005 This is an obsolescent macro that checks that the C compiler supports
4006 the @option{-c} and @option{-o} options together.  Note that, since
4007 Automake 1.14, the @code{AC_PROG_CC} is rewritten to implement such
4008 checks itself, and thus the explicit use of @code{AM_PROG_CC_C_O}
4009 should no longer be required.
4011 @item AM_PROG_LEX
4012 @acindex AM_PROG_LEX
4013 @acindex AC_PROG_LEX
4014 @cindex HP-UX 10, @command{lex} problems
4015 @cindex @command{lex} problems with HP-UX 10
4016 Like @code{AC_PROG_LEX} (@pxref{Particular Programs, , Particular
4017 Program Checks, autoconf, The Autoconf Manual}), but uses the
4018 @command{missing} script on systems that do not have @command{lex}.
4019 HP-UX 10 is one such system.
4021 @item AM_PROG_GCJ
4022 @acindex AM_PROG_GCJ
4023 @vindex GCJ
4024 @vindex GCJFLAGS
4025 This macro finds the @command{gcj} program or causes an error.  It sets
4026 @code{GCJ} and @code{GCJFLAGS}.  @command{gcj} is the Java front-end to the
4027 GNU Compiler Collection.
4029 @item AM_PROG_UPC([@var{compiler-search-list}])
4030 @acindex AM_PROG_UPC
4031 @vindex UPC
4032 Find a compiler for Unified Parallel C and define the @code{UPC}
4033 variable.  The default @var{compiler-search-list} is @samp{upcc upc}.
4034 This macro will abort @command{configure} if no Unified Parallel C
4035 compiler is found.
4037 @item AM_MISSING_PROG(@var{name}, @var{program})
4038 @acindex AM_MISSING_PROG
4039 @vindex MISSING
4040 Find a maintainer tool @var{program} and define the @var{name}
4041 environment variable with its location.  If @var{program} is not
4042 detected, then @var{name} will instead invoke the @command{missing}
4043 script, in order to give useful advice to the user about the missing
4044 maintainer tool.  @xref{maintainer-mode}, for more information on when
4045 the @command{missing} script is appropriate.
4047 @item AM_SILENT_RULES
4048 @acindex AM_SILENT_RULES
4049 Control the machinery for less verbose build output
4050 (@pxref{Automake Silent Rules}).
4052 @item AM_WITH_DMALLOC
4053 @acindex AM_WITH_DMALLOC
4054 @cindex @command{dmalloc}, support for
4055 @vindex WITH_DMALLOC
4056 @opindex --with-dmalloc
4057 Add support for the @uref{http://dmalloc.com/, Dmalloc package}.  If
4058 the user runs @command{configure} with @option{--with-dmalloc}, then
4059 define @code{WITH_DMALLOC} and add @option{-ldmalloc} to @code{LIBS}.
4061 @end table
4064 @node Obsolete Macros
4065 @subsection Obsolete Macros
4066 @cindex obsolete macros
4067 @cindex autoupdate
4069 Although using some of the following macros was required in past
4070 releases, you should not use any of them in new code.  @emph{All
4071 these macros will be removed in the next major Automake version};
4072 if you are still using them, running @command{autoupdate} should
4073 adjust your @file{configure.ac} automatically (@pxref{autoupdate
4074 Invocation, , Using @command{autoupdate} to Modernize
4075 @file{configure.ac}, autoconf, The Autoconf Manual}).
4076 @emph{Do it NOW!}
4078 @table @code
4080 @item AM_PROG_MKDIR_P
4081 @acindex AM_PROG_MKDIR_P
4082 @cindex @code{mkdir -p}, macro check
4083 @vindex MKDIR_P
4084 @vindex mkdir_p
4086 From Automake 1.8 to 1.9.6 this macro used to define the output
4087 variable @code{mkdir_p} to one of @code{mkdir -p}, @code{install-sh
4088 -d}, or @code{mkinstalldirs}.
4090 Nowadays Autoconf provides a similar functionality with
4091 @code{AC_PROG_MKDIR_P} (@pxref{Particular Programs, , Particular
4092 Program Checks, autoconf, The Autoconf Manual}), however this defines
4093 the output variable @code{MKDIR_P} instead.  In case you are still
4094 using the @code{AM_PROG_MKDIR_P} macro in your @file{configure.ac},
4095 or its provided variable @code{$(mkdir_p)} in your @file{Makefile.am},
4096 you are advised to switch ASAP to the more modern Autoconf-provided
4097 interface instead; both the macro and the variable might be removed
4098 in a future major Automake release.
4100 @end table
4103 @node Private Macros
4104 @subsection Private Macros
4106 The following macros are private macros you should not call directly.
4107 They are called by the other public macros when appropriate.  Do not
4108 rely on them, as they might be changed in a future version.  Consider
4109 them as implementation details; or better, do not consider them at all:
4110 skip this section!
4112 @ftable @code
4113 @item _AM_DEPENDENCIES
4114 @itemx AM_SET_DEPDIR
4115 @itemx AM_DEP_TRACK
4116 @itemx AM_OUTPUT_DEPENDENCY_COMMANDS
4117 These macros are used to implement Automake's automatic dependency
4118 tracking scheme.  They are called automatically by Automake when
4119 required, and there should be no need to invoke them manually.
4121 @item AM_MAKE_INCLUDE
4122 This macro is used to discover how the user's @command{make} handles
4123 @code{include} statements.  This macro is automatically invoked when
4124 needed; there should be no need to invoke it manually.
4126 @item AM_PROG_INSTALL_STRIP
4127 This is used to find a version of @code{install} that can be used to
4128 strip a program at installation time.  This macro is automatically
4129 included when required.
4131 @item AM_SANITY_CHECK
4132 This checks to make sure that a file created in the build directory is
4133 newer than a file in the source directory.  This can fail on systems
4134 where the clock is set incorrectly.  This macro is automatically run
4135 from @code{AM_INIT_AUTOMAKE}.
4137 @end ftable
4140 @node Directories
4141 @chapter Directories
4143 For simple projects that distribute all files in the same directory
4144 it is enough to have a single @file{Makefile.am} that builds
4145 everything in place.
4147 In larger projects, it is common to organize files in different
4148 directories, in a tree.  For example, there could be a directory
4149 for the program's source, one for the testsuite, and one for the
4150 documentation; or, for very large projects, there could be one
4151 directory per program, per library or per module.
4153 The traditional approach is to build these subdirectories recursively,
4154 employing @emph{make recursion}: each directory contains its
4155 own @file{Makefile}, and when @command{make} is run from the top-level
4156 directory, it enters each subdirectory in turn, and invokes there a
4157 new @command{make} instance to build the directory's contents.
4159 Because this approach is very widespread, Automake offers built-in
4160 support for it.  However, it is worth nothing that the use of make
4161 recursion has its own serious issues and drawbacks, and that it's
4162 well possible to have packages with a multi directory layout that
4163 make little or no use of such recursion (examples of such packages
4164 are GNU Bison and GNU Automake itself); see also the @ref{Alternative}
4165 section below.
4167 @menu
4168 * Subdirectories::              Building subdirectories recursively
4169 * Conditional Subdirectories::  Conditionally not building directories
4170 * Alternative::                 Subdirectories without recursion
4171 * Subpackages::                 Nesting packages
4172 @end menu
4174 @node Subdirectories
4175 @section Recursing subdirectories
4177 @cindex @code{SUBDIRS}, explained
4179 In packages using make recursion, the top level @file{Makefile.am} must
4180 tell Automake which subdirectories are to be built.  This is done via
4181 the @code{SUBDIRS} variable.
4182 @vindex SUBDIRS
4184 The @code{SUBDIRS} variable holds a list of subdirectories in which
4185 building of various sorts can occur.  The rules for many targets
4186 (e.g., @code{all}) in the generated @file{Makefile} will run commands
4187 both locally and in all specified subdirectories.  Note that the
4188 directories listed in @code{SUBDIRS} are not required to contain
4189 @file{Makefile.am}s; only @file{Makefile}s (after configuration).
4190 This allows inclusion of libraries from packages that do not use
4191 Automake (such as @code{gettext}; see also @ref{Third-Party
4192 Makefiles}).
4194 In packages that use subdirectories, the top-level @file{Makefile.am} is
4195 often very short.  For instance, here is the @file{Makefile.am} from the
4196 GNU Hello distribution:
4198 @example
4199 EXTRA_DIST = BUGS ChangeLog.O README-alpha
4200 SUBDIRS = doc intl po src tests
4201 @end example
4203 When Automake invokes @command{make} in a subdirectory, it uses the value
4204 of the @code{MAKE} variable.  It passes the value of the variable
4205 @code{AM_MAKEFLAGS} to the @command{make} invocation; this can be set in
4206 @file{Makefile.am} if there are flags you must always pass to
4207 @command{make}.
4208 @vindex MAKE
4209 @vindex AM_MAKEFLAGS
4211 The directories mentioned in @code{SUBDIRS} are usually direct
4212 children of the current directory, each subdirectory containing its
4213 own @file{Makefile.am} with a @code{SUBDIRS} pointing to deeper
4214 subdirectories.  Automake can be used to construct packages of
4215 arbitrary depth this way.
4217 By default, Automake generates @file{Makefiles} that work depth-first
4218 in postfix order: the subdirectories are built before the current
4219 directory.  However, it is possible to change this ordering.  You can
4220 do this by putting @samp{.} into @code{SUBDIRS}.  For instance,
4221 putting @samp{.} first will cause a prefix ordering of
4222 directories.
4224 Using
4226 @example
4227 SUBDIRS = lib src . test
4228 @end example
4230 @noindent
4231 will cause @file{lib/} to be built before @file{src/}, then the
4232 current directory will be built, finally the @file{test/} directory
4233 will be built.  It is customary to arrange test directories to be
4234 built after everything else since they are meant to test what has
4235 been constructed.
4237 In addition to the built-in recursive targets defined by Automake
4238 (@code{all}, @code{check}, etc.), the developer can also define his
4239 own recursive targets.  That is done by passing the names of such
4240 targets as arguments to the m4 macro @code{AM_EXTRA_RECURSIVE_TARGETS}
4241 in @file{configure.ac}.  Automake generates rules to handle the
4242 recursion for such targets; and the developer can define real actions
4243 for them by defining corresponding @code{-local} targets.
4245 @example
4246 % @kbd{cat configure.ac}
4247 AC_INIT([pkg-name], [1.0]
4248 AM_INIT_AUTOMAKE
4249 AM_EXTRA_RECURSIVE_TARGETS([foo])
4250 AC_CONFIG_FILES([Makefile sub/Makefile sub/src/Makefile])
4251 AC_OUTPUT
4252 % @kbd{cat Makefile.am}
4253 SUBDIRS = sub
4254 foo-local:
4255         @@echo This will be run by "make foo".
4256 % @kbd{cat sub/Makefile.am}
4257 SUBDIRS = src
4258 % @kbd{cat sub/src/Makefile.am}
4259 foo-local:
4260         @@echo This too will be run by a "make foo" issued either in
4261         @@echo the 'sub/src/' directory, the 'sub/' directory, or the
4262         @@echo top-level directory.
4263 @end example
4265 @node Conditional Subdirectories
4266 @section Conditional Subdirectories
4267 @cindex Subdirectories, building conditionally
4268 @cindex Conditional subdirectories
4269 @cindex @code{SUBDIRS}, conditional
4270 @cindex Conditional @code{SUBDIRS}
4272 It is possible to define the @code{SUBDIRS} variable conditionally if,
4273 like in the case of GNU Inetutils, you want to only build a subset of
4274 the entire package.
4276 To illustrate how this works, let's assume we have two directories
4277 @file{src/} and @file{opt/}.  @file{src/} should always be built, but we
4278 want to decide in @command{configure} whether @file{opt/} will be built
4279 or not.  (For this example we will assume that @file{opt/} should be
4280 built when the variable @samp{$want_opt} was set to @samp{yes}.)
4282 Running @command{make} should thus recurse into @file{src/} always, and
4283 then maybe in @file{opt/}.
4285 However @samp{make dist} should always recurse into both @file{src/}
4286 and @file{opt/}.  Because @file{opt/} should be distributed even if it
4287 is not needed in the current configuration.  This means
4288 @file{opt/Makefile} should be created @emph{unconditionally}.
4290 There are two ways to setup a project like this.  You can use Automake
4291 conditionals (@pxref{Conditionals}) or use Autoconf @code{AC_SUBST}
4292 variables (@pxref{Setting Output Variables, , Setting Output
4293 Variables, autoconf, The Autoconf Manual}).  Using Automake
4294 conditionals is the preferred solution.  Before we illustrate these
4295 two possibilities, let's introduce @code{DIST_SUBDIRS}.
4297 @menu
4298 * SUBDIRS vs DIST_SUBDIRS::     Two sets of directories
4299 * Subdirectories with AM_CONDITIONAL::  Specifying conditional subdirectories
4300 * Subdirectories with AC_SUBST::  Another way for conditional recursion
4301 * Unconfigured Subdirectories::  Not even creating a @samp{Makefile}
4302 @end menu
4304 @node SUBDIRS vs DIST_SUBDIRS
4305 @subsection @code{SUBDIRS} vs.@: @code{DIST_SUBDIRS}
4306 @cindex @code{DIST_SUBDIRS}, explained
4308 Automake considers two sets of directories, defined by the variables
4309 @code{SUBDIRS} and @code{DIST_SUBDIRS}.
4311 @code{SUBDIRS} contains the subdirectories of the current directory
4312 that must be built (@pxref{Subdirectories}).  It must be defined
4313 manually; Automake will never guess a directory is to be built.  As we
4314 will see in the next two sections, it is possible to define it
4315 conditionally so that some directory will be omitted from the build.
4317 @code{DIST_SUBDIRS} is used in rules that need to recurse in all
4318 directories, even those that have been conditionally left out of the
4319 build.  Recall our example where we may not want to build subdirectory
4320 @file{opt/}, but yet we want to distribute it?  This is where
4321 @code{DIST_SUBDIRS} comes into play: @samp{opt} may not appear in
4322 @code{SUBDIRS}, but it must appear in @code{DIST_SUBDIRS}.
4324 Precisely, @code{DIST_SUBDIRS} is used by @samp{make
4325 maintainer-clean}, @samp{make distclean} and @samp{make dist}.  All
4326 other recursive rules use @code{SUBDIRS}.
4328 If @code{SUBDIRS} is defined conditionally using Automake
4329 conditionals, Automake will define @code{DIST_SUBDIRS} automatically
4330 from the possible values of @code{SUBDIRS} in all conditions.
4332 If @code{SUBDIRS} contains @code{AC_SUBST} variables,
4333 @code{DIST_SUBDIRS} will not be defined correctly because Automake
4334 does not know the possible values of these variables.  In this case
4335 @code{DIST_SUBDIRS} needs to be defined manually.
4337 @node Subdirectories with AM_CONDITIONAL
4338 @subsection Subdirectories with @code{AM_CONDITIONAL}
4339 @cindex @code{SUBDIRS} and @code{AM_CONDITIONAL}
4340 @cindex @code{AM_CONDITIONAL} and @code{SUBDIRS}
4342 @c Keep in sync with subdir-am-cond.sh
4344 @file{configure} should output the @file{Makefile} for each directory
4345 and define a condition into which @file{opt/} should be built.
4347 @example
4348 @dots{}
4349 AM_CONDITIONAL([COND_OPT], [test "$want_opt" = yes])
4350 AC_CONFIG_FILES([Makefile src/Makefile opt/Makefile])
4351 @dots{}
4352 @end example
4354 Then @code{SUBDIRS} can be defined in the top-level @file{Makefile.am}
4355 as follows.
4357 @example
4358 if COND_OPT
4359   MAYBE_OPT = opt
4360 endif
4361 SUBDIRS = src $(MAYBE_OPT)
4362 @end example
4364 As you can see, running @command{make} will rightly recurse into
4365 @file{src/} and maybe @file{opt/}.
4367 @vindex DIST_SUBDIRS
4368 As you can't see, running @samp{make dist} will recurse into both
4369 @file{src/} and @file{opt/} directories because @samp{make dist}, unlike
4370 @samp{make all}, doesn't use the @code{SUBDIRS} variable.  It uses the
4371 @code{DIST_SUBDIRS} variable.
4373 In this case Automake will define @samp{DIST_SUBDIRS = src opt}
4374 automatically because it knows that @code{MAYBE_OPT} can contain
4375 @samp{opt} in some condition.
4377 @node Subdirectories with AC_SUBST
4378 @subsection Subdirectories with @code{AC_SUBST}
4379 @cindex @code{SUBDIRS} and @code{AC_SUBST}
4380 @cindex @code{AC_SUBST} and @code{SUBDIRS}
4382 @c Keep in sync with subdir-ac-subst.sh
4384 Another possibility is to define @code{MAYBE_OPT} from
4385 @file{./configure} using @code{AC_SUBST}:
4387 @example
4388 @dots{}
4389 if test "$want_opt" = yes; then
4390   MAYBE_OPT=opt
4391 else
4392   MAYBE_OPT=
4394 AC_SUBST([MAYBE_OPT])
4395 AC_CONFIG_FILES([Makefile src/Makefile opt/Makefile])
4396 @dots{}
4397 @end example
4399 In this case the top-level @file{Makefile.am} should look as follows.
4401 @example
4402 SUBDIRS = src $(MAYBE_OPT)
4403 DIST_SUBDIRS = src opt
4404 @end example
4406 The drawback is that since Automake cannot guess what the possible
4407 values of @code{MAYBE_OPT} are, it is necessary to define
4408 @code{DIST_SUBDIRS}.
4410 @node Unconfigured Subdirectories
4411 @subsection Unconfigured Subdirectories
4412 @cindex Subdirectories, configured conditionally
4414 The semantics of @code{DIST_SUBDIRS} are often misunderstood by some
4415 users that try to @emph{configure and build} subdirectories
4416 conditionally.  Here by configuring we mean creating the
4417 @file{Makefile} (it might also involve running a nested
4418 @command{configure} script: this is a costly operation that explains
4419 why people want to do it conditionally, but only the @file{Makefile}
4420 is relevant to the discussion).
4422 The above examples all assume that every @file{Makefile} is created,
4423 even in directories that are not going to be built.  The simple reason
4424 is that we want @samp{make dist} to distribute even the directories
4425 that are not being built (e.g., platform-dependent code), hence
4426 @file{make dist} must recurse into the subdirectory, hence this
4427 directory must be configured and appear in @code{DIST_SUBDIRS}.
4429 Building packages that do not configure every subdirectory is a tricky
4430 business, and we do not recommend it to the novice as it is easy to
4431 produce an incomplete tarball by mistake.  We will not discuss this
4432 topic in depth here, yet for the adventurous here are a few rules to
4433 remember.
4435 @cartouche
4436 @itemize
4437 @item @code{SUBDIRS} should always be a subset of @code{DIST_SUBDIRS}.
4439 It makes little sense to have a directory in @code{SUBDIRS} that
4440 is not in @code{DIST_SUBDIRS}.  Think of the former as a way to tell
4441 which directories listed in the latter should be built.
4442 @item Any directory listed in @code{DIST_SUBDIRS} and @code{SUBDIRS}
4443 must be configured.
4445 I.e., the @file{Makefile} must exists or the recursive @command{make}
4446 rules will not be able to process the directory.
4447 @item Any configured directory must be listed in @code{DIST_SUBDIRS}.
4449 So that the cleaning rules remove the generated @file{Makefile}s.
4450 It would be correct to see @code{DIST_SUBDIRS} as a variable that
4451 lists all the directories that have been configured.
4452 @end itemize
4453 @end cartouche
4455 In order to prevent recursion in some unconfigured directory you
4456 must therefore ensure that this directory does not appear in
4457 @code{DIST_SUBDIRS} (and @code{SUBDIRS}).  For instance, if you define
4458 @code{SUBDIRS} conditionally using @code{AC_SUBST} and do not define
4459 @code{DIST_SUBDIRS} explicitly, it will be default to
4460 @samp{$(SUBDIRS)}; another possibility is to force @code{DIST_SUBDIRS
4461 = $(SUBDIRS)}.
4463 Of course, directories that are omitted from @code{DIST_SUBDIRS} will
4464 not be distributed unless you make other arrangements for this to
4465 happen (for instance, always running @samp{make dist} in a
4466 configuration where all directories are known to appear in
4467 @code{DIST_SUBDIRS}; or writing a @code{dist-hook} target to
4468 distribute these directories).
4470 @cindex Subdirectories, not distributed
4471 In few packages, unconfigured directories are not even expected to
4472 be distributed.  Although these packages do not require the
4473 aforementioned extra arrangements, there is another pitfall.  If the
4474 name of a directory appears in @code{SUBDIRS} or @code{DIST_SUBDIRS},
4475 @command{automake} will make sure the directory exists.  Consequently
4476 @command{automake} cannot be run on such a distribution when one
4477 directory has been omitted.  One way to avoid this check is to use the
4478 @code{AC_SUBST} method to declare conditional directories; since
4479 @command{automake} does not know the values of @code{AC_SUBST}
4480 variables it cannot ensure the corresponding directory exists.
4482 @node Alternative
4483 @section An Alternative Approach to Subdirectories
4485 If you've ever read Peter Miller's excellent paper,
4486 @uref{http://miller.emu.id.au/pmiller/books/rmch/,
4487 Recursive Make Considered Harmful}, the preceding sections on the use of
4488 make recursion will probably come as unwelcome advice.  For those who
4489 haven't read the paper, Miller's main thesis is that recursive
4490 @command{make} invocations are both slow and error-prone.
4492 Automake provides sufficient cross-directory support @footnote{We
4493 believe.  This work is new and there are probably warts.
4494 @xref{Introduction}, for information on reporting bugs.} to enable you
4495 to write a single @file{Makefile.am} for a complex multi-directory
4496 package.
4498 By default an installable file specified in a subdirectory will have its
4499 directory name stripped before installation.  For instance, in this
4500 example, the header file will be installed as
4501 @file{$(includedir)/stdio.h}:
4503 @example
4504 include_HEADERS = inc/stdio.h
4505 @end example
4507 @vindex nobase_
4508 @cindex @code{nobase_} prefix
4509 @cindex Path stripping, avoiding
4510 @cindex Avoiding path stripping
4512 However, the @samp{nobase_} prefix can be used to circumvent this path
4513 stripping.  In this example, the header file will be installed as
4514 @file{$(includedir)/sys/types.h}:
4516 @example
4517 nobase_include_HEADERS = sys/types.h
4518 @end example
4520 @cindex @code{nobase_} and @code{dist_} or @code{nodist_}
4521 @cindex @code{dist_} and @code{nobase_}
4522 @cindex @code{nodist_} and @code{nobase_}
4523 @vindex dist_
4524 @vindex nodist_
4526 @samp{nobase_} should be specified first when used in conjunction with
4527 either @samp{dist_} or @samp{nodist_} (@pxref{Fine-grained Distribution
4528 Control}).  For instance:
4530 @example
4531 nobase_dist_pkgdata_DATA = images/vortex.pgm sounds/whirl.ogg
4532 @end example
4534 Finally, note that a variable using the @samp{nobase_} prefix can
4535 often be replaced by several variables, one for each destination
4536 directory (@pxref{Uniform}).  For instance, the last example could be
4537 rewritten as follows:
4539 @c Keep in sync with primary-prefix-couples-documented-valid.sh
4540 @example
4541 imagesdir = $(pkgdatadir)/images
4542 soundsdir = $(pkgdatadir)/sounds
4543 dist_images_DATA = images/vortex.pgm
4544 dist_sounds_DATA = sounds/whirl.ogg
4545 @end example
4547 @noindent
4548 This latter syntax makes it possible to change one destination
4549 directory without changing the layout of the source tree.
4551 Currently, @samp{nobase_*_LTLIBRARIES} are the only exception to this
4552 rule, in that there is no particular installation order guarantee for
4553 an otherwise equivalent set of variables without @samp{nobase_} prefix.
4555 @node Subpackages
4556 @section Nesting Packages
4557 @cindex Nesting packages
4558 @cindex Subpackages
4559 @acindex AC_CONFIG_SUBDIRS
4560 @acindex AC_CONFIG_AUX_DIR
4563 In the GNU Build System, packages can be nested to arbitrary depth.
4564 This means that a package can embed other packages with their own
4565 @file{configure}, @file{Makefile}s, etc.
4567 These other packages should just appear as subdirectories of their
4568 parent package.  They must be listed in @code{SUBDIRS} like other
4569 ordinary directories.  However the subpackage's @file{Makefile}s
4570 should be output by its own @file{configure} script, not by the
4571 parent's @file{configure}.  This is achieved using the
4572 @code{AC_CONFIG_SUBDIRS} Autoconf macro (@pxref{Subdirectories,
4573 AC_CONFIG_SUBDIRS, Configuring Other Packages in Subdirectories,
4574 autoconf, The Autoconf Manual}).
4576 Here is an example package for an @code{arm} program that links with
4577 a @code{hand} library that is a nested package in subdirectory
4578 @file{hand/}.
4580 @code{arm}'s @file{configure.ac}:
4582 @example
4583 AC_INIT([arm], [1.0])
4584 AC_CONFIG_AUX_DIR([.])
4585 AM_INIT_AUTOMAKE
4586 AC_PROG_CC
4587 AC_CONFIG_FILES([Makefile])
4588 # Call hand's ./configure script recursively.
4589 AC_CONFIG_SUBDIRS([hand])
4590 AC_OUTPUT
4591 @end example
4593 @code{arm}'s @file{Makefile.am}:
4595 @example
4596 # Build the library in the hand subdirectory first.
4597 SUBDIRS = hand
4599 # Include hand's header when compiling this directory.
4600 AM_CPPFLAGS = -I$(srcdir)/hand
4602 bin_PROGRAMS = arm
4603 arm_SOURCES = arm.c
4604 # link with the hand library.
4605 arm_LDADD = hand/libhand.a
4606 @end example
4608 Now here is @code{hand}'s @file{hand/configure.ac}:
4610 @example
4611 AC_INIT([hand], [1.2])
4612 AC_CONFIG_AUX_DIR([.])
4613 AM_INIT_AUTOMAKE
4614 AC_PROG_CC
4615 AM_PROG_AR
4616 AC_PROG_RANLIB
4617 AC_CONFIG_FILES([Makefile])
4618 AC_OUTPUT
4619 @end example
4621 @noindent
4622 and its @file{hand/Makefile.am}:
4624 @example
4625 lib_LIBRARIES = libhand.a
4626 libhand_a_SOURCES = hand.c
4627 @end example
4629 When @samp{make dist} is run from the top-level directory it will
4630 create an archive @file{arm-1.0.tar.gz} that contains the @code{arm}
4631 code as well as the @file{hand} subdirectory.  This package can be
4632 built and installed like any ordinary package, with the usual
4633 @samp{./configure && make && make install} sequence (the @code{hand}
4634 subpackage will be built and installed by the process).
4636 When @samp{make dist} is run from the hand directory, it will create a
4637 self-contained @file{hand-1.2.tar.gz} archive.  So although it appears
4638 to be embedded in another package, it can still be used separately.
4640 The purpose of the @samp{AC_CONFIG_AUX_DIR([.])} instruction is to
4641 force Automake and Autoconf to search for auxiliary scripts in the
4642 current directory.  For instance, this means that there will be two
4643 copies of @file{install-sh}: one in the top-level of the @code{arm}
4644 package, and another one in the @file{hand/} subdirectory for the
4645 @code{hand} package.
4647 The historical default is to search for these auxiliary scripts in
4648 the parent directory and the grandparent directory.  So if the
4649 @samp{AC_CONFIG_AUX_DIR([.])} line was removed from
4650 @file{hand/configure.ac}, that subpackage would share the auxiliary
4651 script of the @code{arm} package.  This may looks like a gain in size
4652 (a few kilobytes), but it is actually a loss of modularity as the
4653 @code{hand} subpackage is no longer self-contained (@samp{make dist}
4654 in the subdirectory will not work anymore).
4656 Packages that do not use Automake need more work to be integrated this
4657 way.  @xref{Third-Party Makefiles}.
4659 @node Programs
4660 @chapter Building Programs and Libraries
4662 A large part of Automake's functionality is dedicated to making it easy
4663 to build programs and libraries.
4665 @menu
4666 * A Program::                   Building a program
4667 * A Library::                   Building a library
4668 * A Shared Library::            Building a Libtool library
4669 * Program and Library Variables::  Variables controlling program and
4670                                 library builds
4671 * Default _SOURCES::            Default source files
4672 * LIBOBJS::                     Special handling for LIBOBJS and ALLOCA
4673 * Program Variables::           Variables used when building a program
4674 * Yacc and Lex::                Yacc and Lex support
4675 * C++ Support::                 Compiling C++ sources
4676 * Objective C Support::         Compiling Objective C sources
4677 * Objective C++ Support::       Compiling Objective C++ sources
4678 * Unified Parallel C Support::  Compiling Unified Parallel C sources
4679 * Assembly Support::            Compiling assembly sources
4680 * Fortran 77 Support::          Compiling Fortran 77 sources
4681 * Fortran 9x Support::          Compiling Fortran 9x sources
4682 * Java Support with gcj::       Compiling Java sources using gcj
4683 * Vala Support::                Compiling Vala sources
4684 * Support for Other Languages::  Compiling other languages
4685 * Dependencies::                Automatic dependency tracking
4686 * EXEEXT::                      Support for executable extensions
4687 @end menu
4690 @node A Program
4691 @section Building a program
4693 In order to build a program, you need to tell Automake which sources
4694 are part of it, and which libraries it should be linked with.
4696 This section also covers conditional compilation of sources or
4697 programs.  Most of the comments about these also apply to libraries
4698 (@pxref{A Library}) and libtool libraries (@pxref{A Shared Library}).
4700 @menu
4701 * Program Sources::             Defining program sources
4702 * Linking::                     Linking with libraries or extra objects
4703 * Conditional Sources::         Handling conditional sources
4704 * Conditional Programs::        Building a program conditionally
4705 @end menu
4707 @node Program Sources
4708 @subsection Defining program sources
4710 @cindex @code{PROGRAMS}, @code{bindir}
4711 @vindex _PROGRAMS
4712 @vindex bin_PROGRAMS
4713 @vindex sbin_PROGRAMS
4714 @vindex libexec_PROGRAMS
4715 @vindex pkglibexec_PROGRAMS
4716 @vindex noinst_PROGRAMS
4717 @vindex check_PROGRAMS
4719 In a directory containing source that gets built into a program (as
4720 opposed to a library or a script), the @code{PROGRAMS} primary is used.
4721 Programs can be installed in @code{bindir}, @code{sbindir},
4722 @code{libexecdir}, @code{pkglibexecdir}, or not at all
4723 (@code{noinst_}).  They can also be built only for @samp{make check}, in
4724 which case the prefix is @samp{check_}.
4726 For instance:
4728 @example
4729 bin_PROGRAMS = hello
4730 @end example
4732 In this simple case, the resulting @file{Makefile.in} will contain code
4733 to generate a program named @code{hello}.
4735 Associated with each program are several assisting variables that are
4736 named after the program.  These variables are all optional, and have
4737 reasonable defaults.  Each variable, its use, and default is spelled out
4738 below; we use the ``hello'' example throughout.
4740 The variable @code{hello_SOURCES} is used to specify which source files
4741 get built into an executable:
4743 @example
4744 hello_SOURCES = hello.c version.c getopt.c getopt1.c getopt.h system.h
4745 @end example
4747 This causes each mentioned @file{.c} file to be compiled into the
4748 corresponding @file{.o}.  Then all are linked to produce @file{hello}.
4750 @cindex @code{_SOURCES} primary, defined
4751 @cindex @code{SOURCES} primary, defined
4752 @cindex Primary variable, @code{SOURCES}
4753 @vindex _SOURCES
4755 If @code{hello_SOURCES} is not specified, then it defaults to the single
4756 file @file{hello.c} (@pxref{Default _SOURCES}).
4757 @vindex _SOURCES
4758 @vindex SOURCES
4760 Multiple programs can be built in a single directory.  Multiple programs
4761 can share a single source file, which must be listed in each
4762 @code{_SOURCES} definition.
4764 @cindex Header files in @code{_SOURCES}
4765 @cindex @code{_SOURCES} and header files
4767 Header files listed in a @code{_SOURCES} definition will be included in
4768 the distribution but otherwise ignored.  In case it isn't obvious, you
4769 should not include the header file generated by @file{configure} in a
4770 @code{_SOURCES} variable; this file should not be distributed.  Lex
4771 (@file{.l}) and Yacc (@file{.y}) files can also be listed; see @ref{Yacc
4772 and Lex}.
4775 @node Linking
4776 @subsection Linking the program
4778 If you need to link against libraries that are not found by
4779 @command{configure}, you can use @code{LDADD} to do so.  This variable is
4780 used to specify additional objects or libraries to link with; it is
4781 inappropriate for specifying specific linker flags, you should use
4782 @code{AM_LDFLAGS} for this purpose.
4783 @vindex LDADD
4784 @vindex AM_LDFLAGS
4786 @cindex @code{prog_LDADD}, defined
4788 Sometimes, multiple programs are built in one directory but do not share
4789 the same link-time requirements.  In this case, you can use the
4790 @code{@var{prog}_LDADD} variable (where @var{prog} is the name of the
4791 program as it appears in some @code{_PROGRAMS} variable, and usually
4792 written in lowercase) to override @code{LDADD}.  If this variable exists
4793 for a given program, then that program is not linked using @code{LDADD}.
4794 @vindex maude_LDADD
4796 For instance, in GNU cpio, @code{pax}, @code{cpio} and @code{mt} are
4797 linked against the library @file{libcpio.a}.  However, @code{rmt} is
4798 built in the same directory, and has no such link requirement.  Also,
4799 @code{mt} and @code{rmt} are only built on certain architectures.  Here
4800 is what cpio's @file{src/Makefile.am} looks like (abridged):
4802 @example
4803 bin_PROGRAMS = cpio pax $(MT)
4804 libexec_PROGRAMS = $(RMT)
4805 EXTRA_PROGRAMS = mt rmt
4807 LDADD = ../lib/libcpio.a $(INTLLIBS)
4808 rmt_LDADD =
4810 cpio_SOURCES = @dots{}
4811 pax_SOURCES = @dots{}
4812 mt_SOURCES = @dots{}
4813 rmt_SOURCES = @dots{}
4814 @end example
4816 @cindex @code{_LDFLAGS}, defined
4817 @vindex maude_LDFLAGS
4818 @code{@var{prog}_LDADD} is inappropriate for passing program-specific
4819 linker flags (except for @option{-l}, @option{-L}, @option{-dlopen} and
4820 @option{-dlpreopen}).  So, use the @code{@var{prog}_LDFLAGS} variable for
4821 this purpose.
4823 @cindex @code{_DEPENDENCIES}, defined
4824 @vindex maude_DEPENDENCIES
4825 @vindex EXTRA_maude_DEPENDENCIES
4826 It is also occasionally useful to have a program depend on some other
4827 target that is not actually part of that program.  This can be done
4828 using either the @code{@var{prog}_DEPENDENCIES} or the
4829 @code{EXTRA_@var{prog}_DEPENDENCIES} variable.  Each program depends on
4830 the contents both variables, but no further interpretation is done.
4832 Since these dependencies are associated to the link rule used to
4833 create the programs they should normally list files used by the link
4834 command.  That is @file{*.$(OBJEXT)}, @file{*.a}, or @file{*.la}
4835 files.  In rare cases you may need to add other kinds of files such as
4836 linker scripts, but @emph{listing a source file in
4837 @code{_DEPENDENCIES} is wrong}.  If some source file needs to be built
4838 before all the components of a program are built, consider using the
4839 @code{BUILT_SOURCES} variable instead (@pxref{Sources}).
4841 If @code{@var{prog}_DEPENDENCIES} is not supplied, it is computed by
4842 Automake.  The automatically-assigned value is the contents of
4843 @code{@var{prog}_LDADD}, with most configure substitutions, @option{-l},
4844 @option{-L}, @option{-dlopen} and @option{-dlpreopen} options removed.  The
4845 configure substitutions that are left in are only @samp{$(LIBOBJS)} and
4846 @samp{$(ALLOCA)}; these are left because it is known that they will not
4847 cause an invalid value for @code{@var{prog}_DEPENDENCIES} to be
4848 generated.
4850 @ref{Conditional Sources} shows a situation where @code{_DEPENDENCIES}
4851 may be used.
4853 The @code{EXTRA_@var{prog}_DEPENDENCIES} may be useful for cases where
4854 you merely want to augment the @command{automake}-generated
4855 @code{@var{prog}_DEPENDENCIES} rather than replacing it.
4857 @cindex @code{LDADD} and @option{-l}
4858 @cindex @option{-l} and @code{LDADD}
4859 We recommend that you avoid using @option{-l} options in @code{LDADD}
4860 or @code{@var{prog}_LDADD} when referring to libraries built by your
4861 package.  Instead, write the file name of the library explicitly as in
4862 the above @code{cpio} example.  Use @option{-l} only to list
4863 third-party libraries.  If you follow this rule, the default value of
4864 @code{@var{prog}_DEPENDENCIES} will list all your local libraries and
4865 omit the other ones.
4868 @node Conditional Sources
4869 @subsection Conditional compilation of sources
4871 You can't put a configure substitution (e.g., @samp{@@FOO@@} or
4872 @samp{$(FOO)} where @code{FOO} is defined via @code{AC_SUBST}) into a
4873 @code{_SOURCES} variable.  The reason for this is a bit hard to
4874 explain, but suffice to say that it simply won't work.  Automake will
4875 give an error if you try to do this.
4877 Fortunately there are two other ways to achieve the same result.  One is
4878 to use configure substitutions in @code{_LDADD} variables, the other is
4879 to use an Automake conditional.
4881 @subsubheading Conditional Compilation using @code{_LDADD} Substitutions
4883 @cindex @code{EXTRA_prog_SOURCES}, defined
4885 Automake must know all the source files that could possibly go into a
4886 program, even if not all the files are built in every circumstance.  Any
4887 files that are only conditionally built should be listed in the
4888 appropriate @code{EXTRA_} variable.  For instance, if
4889 @file{hello-linux.c} or @file{hello-generic.c} were conditionally included
4890 in @code{hello}, the @file{Makefile.am} would contain:
4892 @example
4893 bin_PROGRAMS = hello
4894 hello_SOURCES = hello-common.c
4895 EXTRA_hello_SOURCES = hello-linux.c hello-generic.c
4896 hello_LDADD = $(HELLO_SYSTEM)
4897 hello_DEPENDENCIES = $(HELLO_SYSTEM)
4898 @end example
4900 @noindent
4901 You can then setup the @samp{$(HELLO_SYSTEM)} substitution from
4902 @file{configure.ac}:
4904 @example
4905 @dots{}
4906 case $host in
4907   *linux*) HELLO_SYSTEM='hello-linux.$(OBJEXT)' ;;
4908   *)       HELLO_SYSTEM='hello-generic.$(OBJEXT)' ;;
4909 esac
4910 AC_SUBST([HELLO_SYSTEM])
4911 @dots{}
4912 @end example
4914 In this case, the variable @code{HELLO_SYSTEM} should be replaced by
4915 either @file{hello-linux.o} or @file{hello-generic.o}, and added to
4916 both @code{hello_DEPENDENCIES} and @code{hello_LDADD} in order to be
4917 built and linked in.
4919 @subsubheading Conditional Compilation using Automake Conditionals
4921 An often simpler way to compile source files conditionally is to use
4922 Automake conditionals.  For instance, you could use this
4923 @file{Makefile.am} construct to build the same @file{hello} example:
4925 @example
4926 bin_PROGRAMS = hello
4927 if LINUX
4928 hello_SOURCES = hello-linux.c hello-common.c
4929 else
4930 hello_SOURCES = hello-generic.c hello-common.c
4931 endif
4932 @end example
4934 In this case, @file{configure.ac} should setup the @code{LINUX}
4935 conditional using @code{AM_CONDITIONAL} (@pxref{Conditionals}).
4937 When using conditionals like this you don't need to use the
4938 @code{EXTRA_} variable, because Automake will examine the contents of
4939 each variable to construct the complete list of source files.
4941 If your program uses a lot of files, you will probably prefer a
4942 conditional @samp{+=}.
4944 @example
4945 bin_PROGRAMS = hello
4946 hello_SOURCES = hello-common.c
4947 if LINUX
4948 hello_SOURCES += hello-linux.c
4949 else
4950 hello_SOURCES += hello-generic.c
4951 endif
4952 @end example
4954 @node Conditional Programs
4955 @subsection Conditional compilation of programs
4956 @cindex Conditional programs
4957 @cindex Programs, conditional
4959 Sometimes it is useful to determine the programs that are to be built
4960 at configure time.  For instance, GNU @code{cpio} only builds
4961 @code{mt} and @code{rmt} under special circumstances.  The means to
4962 achieve conditional compilation of programs are the same you can use
4963 to compile source files conditionally: substitutions or conditionals.
4965 @subsubheading Conditional Programs using @command{configure} Substitutions
4967 @vindex EXTRA_PROGRAMS
4968 @cindex @code{EXTRA_PROGRAMS}, defined
4969 In this case, you must notify Automake of all the programs that can
4970 possibly be built, but at the same time cause the generated
4971 @file{Makefile.in} to use the programs specified by @command{configure}.
4972 This is done by having @command{configure} substitute values into each
4973 @code{_PROGRAMS} definition, while listing all optionally built programs
4974 in @code{EXTRA_PROGRAMS}.
4976 @example
4977 bin_PROGRAMS = cpio pax $(MT)
4978 libexec_PROGRAMS = $(RMT)
4979 EXTRA_PROGRAMS = mt rmt
4980 @end example
4982 As explained in @ref{EXEEXT}, Automake will rewrite
4983 @code{bin_PROGRAMS}, @code{libexec_PROGRAMS}, and
4984 @code{EXTRA_PROGRAMS}, appending @samp{$(EXEEXT)} to each binary.
4985 Obviously it cannot rewrite values obtained at run-time through
4986 @command{configure} substitutions, therefore you should take care of
4987 appending @samp{$(EXEEXT)} yourself, as in @samp{AC_SUBST([MT],
4988 ['mt$@{EXEEXT@}'])}.
4990 @subsubheading Conditional Programs using Automake Conditionals
4992 You can also use Automake conditionals (@pxref{Conditionals}) to
4993 select programs to be built.  In this case you don't have to worry
4994 about @samp{$(EXEEXT)} or @code{EXTRA_PROGRAMS}.
4996 @c Keep in sync with exeext.sh
4997 @example
4998 bin_PROGRAMS = cpio pax
4999 if WANT_MT
5000   bin_PROGRAMS += mt
5001 endif
5002 if WANT_RMT
5003   libexec_PROGRAMS = rmt
5004 endif
5005 @end example
5008 @node A Library
5009 @section Building a library
5011 @cindex @code{_LIBRARIES} primary, defined
5012 @cindex @code{LIBRARIES} primary, defined
5013 @cindex Primary variable, @code{LIBRARIES}
5014 @vindex _LIBRARIES
5016 @vindex lib_LIBRARIES
5017 @vindex pkglib_LIBRARIES
5018 @vindex noinst_LIBRARIES
5020 Building a library is much like building a program.  In this case, the
5021 name of the primary is @code{LIBRARIES}.  Libraries can be installed in
5022 @code{libdir} or @code{pkglibdir}.
5024 @xref{A Shared Library}, for information on how to build shared
5025 libraries using libtool and the @code{LTLIBRARIES} primary.
5027 Each @code{_LIBRARIES} variable is a list of the libraries to be built.
5028 For instance, to create a library named @file{libcpio.a}, but not install
5029 it, you would write:
5031 @example
5032 noinst_LIBRARIES = libcpio.a
5033 libcpio_a_SOURCES = @dots{}
5034 @end example
5036 The sources that go into a library are determined exactly as they are
5037 for programs, via the @code{_SOURCES} variables.  Note that the library
5038 name is canonicalized (@pxref{Canonicalization}), so the @code{_SOURCES}
5039 variable corresponding to @file{libcpio.a} is @samp{libcpio_a_SOURCES},
5040 not @samp{libcpio.a_SOURCES}.
5042 @vindex maude_LIBADD
5043 Extra objects can be added to a library using the
5044 @code{@var{library}_LIBADD} variable.  This should be used for objects
5045 determined by @command{configure}.  Again from @code{cpio}:
5047 @c Keep in sync with pr401c.sh
5048 @example
5049 libcpio_a_LIBADD = $(LIBOBJS) $(ALLOCA)
5050 @end example
5052 In addition, sources for extra objects that will not exist until
5053 configure-time must be added to the @code{BUILT_SOURCES} variable
5054 (@pxref{Sources}).
5056 Building a static library is done by compiling all object files, then
5057 by invoking @samp{$(AR) $(ARFLAGS)} followed by the name of the
5058 library and the list of objects, and finally by calling
5059 @samp{$(RANLIB)} on that library.  You should call
5060 @code{AC_PROG_RANLIB} from your @file{configure.ac} to define
5061 @code{RANLIB} (Automake will complain otherwise).  You should also
5062 call @code{AM_PROG_AR} to define @code{AR}, in order to support unusual
5063 archivers such as Microsoft lib.  @code{ARFLAGS} will default to
5064 @code{cru}; you can override this variable by setting it in your
5065 @file{Makefile.am} or by @code{AC_SUBST}ing it from your
5066 @file{configure.ac}.  You can override the @code{AR} variable by
5067 defining a per-library @code{maude_AR} variable (@pxref{Program and
5068 Library Variables}).
5070 @cindex Empty libraries
5071 Be careful when selecting library components conditionally.  Because
5072 building an empty library is not portable, you should ensure that any
5073 library always contains at least one object.
5075 To use a static library when building a program, add it to
5076 @code{LDADD} for this program.  In the following example, the program
5077 @file{cpio} is statically linked with the library @file{libcpio.a}.
5079 @example
5080 noinst_LIBRARIES = libcpio.a
5081 libcpio_a_SOURCES = @dots{}
5083 bin_PROGRAMS = cpio
5084 cpio_SOURCES = cpio.c @dots{}
5085 cpio_LDADD = libcpio.a
5086 @end example
5089 @node A Shared Library
5090 @section Building a Shared Library
5092 @cindex Shared libraries, support for
5094 Building shared libraries portably is a relatively complex matter.
5095 For this reason, GNU Libtool (@pxref{Top, , Introduction, libtool, The
5096 Libtool Manual}) was created to help build shared libraries in a
5097 platform-independent way.
5099 @menu
5100 * Libtool Concept::             Introducing Libtool
5101 * Libtool Libraries::           Declaring Libtool Libraries
5102 * Conditional Libtool Libraries::  Building Libtool Libraries Conditionally
5103 * Conditional Libtool Sources::  Choosing Library Sources Conditionally
5104 * Libtool Convenience Libraries::  Building Convenience Libtool Libraries
5105 * Libtool Modules::             Building Libtool Modules
5106 * Libtool Flags::               Using _LIBADD, _LDFLAGS, and _LIBTOOLFLAGS
5107 * LTLIBOBJS::                   Using $(LTLIBOBJS) and $(LTALLOCA)
5108 * Libtool Issues::              Common Issues Related to Libtool's Use
5109 @end menu
5111 @node Libtool Concept
5112 @subsection The Libtool Concept
5114 @cindex @command{libtool}, introduction
5115 @cindex libtool library, definition
5116 @cindex suffix @file{.la}, defined
5117 @cindex @file{.la} suffix, defined
5119 Libtool abstracts shared and static libraries into a unified concept
5120 henceforth called @dfn{libtool libraries}.  Libtool libraries are
5121 files using the @file{.la} suffix, and can designate a static library,
5122 a shared library, or maybe both.  Their exact nature cannot be
5123 determined until @file{./configure} is run: not all platforms support
5124 all kinds of libraries, and users can explicitly select which
5125 libraries should be built.  (However the package's maintainers can
5126 tune the default, @pxref{AC_PROG_LIBTOOL, , The @code{AC_PROG_LIBTOOL}
5127 macro, libtool, The Libtool Manual}.)
5129 @cindex suffix @file{.lo}, defined
5130 Because object files for shared and static libraries must be compiled
5131 differently, libtool is also used during compilation.  Object files
5132 built by libtool are called @dfn{libtool objects}: these are files
5133 using the @file{.lo} suffix.  Libtool libraries are built from these
5134 libtool objects.
5136 You should not assume anything about the structure of @file{.la} or
5137 @file{.lo} files and how libtool constructs them: this is libtool's
5138 concern, and the last thing one wants is to learn about libtool's
5139 guts.  However the existence of these files matters, because they are
5140 used as targets and dependencies in @file{Makefile}s rules when
5141 building libtool libraries.  There are situations where you may have
5142 to refer to these, for instance when expressing dependencies for
5143 building source files conditionally (@pxref{Conditional Libtool
5144 Sources}).
5146 @cindex @file{libltdl}, introduction
5148 People considering writing a plug-in system, with dynamically loaded
5149 modules, should look into @file{libltdl}: libtool's dlopening library
5150 (@pxref{Using libltdl, , Using libltdl, libtool, The Libtool Manual}).
5151 This offers a portable dlopening facility to load libtool libraries
5152 dynamically, and can also achieve static linking where unavoidable.
5154 Before we discuss how to use libtool with Automake in details, it
5155 should be noted that the libtool manual also has a section about how
5156 to use Automake with libtool (@pxref{Using Automake, , Using Automake
5157 with Libtool, libtool, The Libtool Manual}).
5159 @node Libtool Libraries
5160 @subsection Building Libtool Libraries
5162 @cindex @code{_LTLIBRARIES} primary, defined
5163 @cindex @code{LTLIBRARIES} primary, defined
5164 @cindex Primary variable, @code{LTLIBRARIES}
5165 @cindex Example of shared libraries
5166 @vindex lib_LTLIBRARIES
5167 @vindex pkglib_LTLIBRARIES
5168 @vindex _LTLIBRARIES
5170 Automake uses libtool to build libraries declared with the
5171 @code{LTLIBRARIES} primary.  Each @code{_LTLIBRARIES} variable is a
5172 list of libtool libraries to build.  For instance, to create a libtool
5173 library named @file{libgettext.la}, and install it in @code{libdir},
5174 write:
5176 @example
5177 lib_LTLIBRARIES = libgettext.la
5178 libgettext_la_SOURCES = gettext.c gettext.h @dots{}
5179 @end example
5181 Automake predefines the variable @code{pkglibdir}, so you can use
5182 @code{pkglib_LTLIBRARIES} to install libraries in
5183 @samp{$(libdir)/@@PACKAGE@@/}.
5185 If @file{gettext.h} is a public header file that needs to be installed
5186 in order for people to use the library, it should be declared using a
5187 @code{_HEADERS} variable, not in @code{libgettext_la_SOURCES}.
5188 Headers listed in the latter should be internal headers that are not
5189 part of the public interface.
5191 @example
5192 lib_LTLIBRARIES = libgettext.la
5193 libgettext_la_SOURCES = gettext.c @dots{}
5194 include_HEADERS = gettext.h @dots{}
5195 @end example
5197 A package can build and install such a library along with other
5198 programs that use it.  This dependency should be specified using
5199 @code{LDADD}.  The following example builds a program named
5200 @file{hello} that is linked with @file{libgettext.la}.
5202 @example
5203 lib_LTLIBRARIES = libgettext.la
5204 libgettext_la_SOURCES = gettext.c @dots{}
5206 bin_PROGRAMS = hello
5207 hello_SOURCES = hello.c @dots{}
5208 hello_LDADD = libgettext.la
5209 @end example
5211 @noindent
5212 Whether @file{hello} is statically or dynamically linked with
5213 @file{libgettext.la} is not yet known: this will depend on the
5214 configuration of libtool and the capabilities of the host.
5217 @node Conditional Libtool Libraries
5218 @subsection Building Libtool Libraries Conditionally
5219 @cindex libtool libraries, conditional
5220 @cindex conditional libtool libraries
5222 Like conditional programs (@pxref{Conditional Programs}), there are
5223 two main ways to build conditional libraries: using Automake
5224 conditionals or using Autoconf @code{AC_SUBST}itutions.
5226 The important implementation detail you have to be aware of is that
5227 the place where a library will be installed matters to libtool: it
5228 needs to be indicated @emph{at link-time} using the @option{-rpath}
5229 option.
5231 For libraries whose destination directory is known when Automake runs,
5232 Automake will automatically supply the appropriate @option{-rpath}
5233 option to libtool.  This is the case for libraries listed explicitly in
5234 some installable @code{_LTLIBRARIES} variables such as
5235 @code{lib_LTLIBRARIES}.
5237 However, for libraries determined at configure time (and thus
5238 mentioned in @code{EXTRA_LTLIBRARIES}), Automake does not know the
5239 final installation directory.  For such libraries you must add the
5240 @option{-rpath} option to the appropriate @code{_LDFLAGS} variable by
5241 hand.
5243 The examples below illustrate the differences between these two methods.
5245 Here is an example where @code{WANTEDLIBS} is an @code{AC_SUBST}ed
5246 variable set at @file{./configure}-time to either @file{libfoo.la},
5247 @file{libbar.la}, both, or none.  Although @samp{$(WANTEDLIBS)}
5248 appears in the @code{lib_LTLIBRARIES}, Automake cannot guess it
5249 relates to @file{libfoo.la} or @file{libbar.la} at the time it creates
5250 the link rule for these two libraries.  Therefore the @option{-rpath}
5251 argument must be explicitly supplied.
5253 @c Keep in sync with ltcond.sh
5254 @example
5255 EXTRA_LTLIBRARIES = libfoo.la libbar.la
5256 lib_LTLIBRARIES = $(WANTEDLIBS)
5257 libfoo_la_SOURCES = foo.c @dots{}
5258 libfoo_la_LDFLAGS = -rpath '$(libdir)'
5259 libbar_la_SOURCES = bar.c @dots{}
5260 libbar_la_LDFLAGS = -rpath '$(libdir)'
5261 @end example
5263 Here is how the same @file{Makefile.am} would look using Automake
5264 conditionals named @code{WANT_LIBFOO} and @code{WANT_LIBBAR}.  Now
5265 Automake is able to compute the @option{-rpath} setting itself, because
5266 it's clear that both libraries will end up in @samp{$(libdir)} if they
5267 are installed.
5269 @c Keep in sync with ltcond.sh
5270 @example
5271 lib_LTLIBRARIES =
5272 if WANT_LIBFOO
5273 lib_LTLIBRARIES += libfoo.la
5274 endif
5275 if WANT_LIBBAR
5276 lib_LTLIBRARIES += libbar.la
5277 endif
5278 libfoo_la_SOURCES = foo.c @dots{}
5279 libbar_la_SOURCES = bar.c @dots{}
5280 @end example
5282 @node Conditional Libtool Sources
5283 @subsection Libtool Libraries with Conditional Sources
5285 Conditional compilation of sources in a library can be achieved in the
5286 same way as conditional compilation of sources in a program
5287 (@pxref{Conditional Sources}).  The only difference is that
5288 @code{_LIBADD} should be used instead of @code{_LDADD} and that it
5289 should mention libtool objects (@file{.lo} files).
5291 So, to mimic the @file{hello} example from @ref{Conditional Sources},
5292 we could build a @file{libhello.la} library using either
5293 @file{hello-linux.c} or @file{hello-generic.c} with the following
5294 @file{Makefile.am}.
5296 @c Keep in sync with ltcond2.sh
5297 @example
5298 lib_LTLIBRARIES = libhello.la
5299 libhello_la_SOURCES = hello-common.c
5300 EXTRA_libhello_la_SOURCES = hello-linux.c hello-generic.c
5301 libhello_la_LIBADD = $(HELLO_SYSTEM)
5302 libhello_la_DEPENDENCIES = $(HELLO_SYSTEM)
5303 @end example
5305 @noindent
5306 And make sure @command{configure} defines @code{HELLO_SYSTEM} as
5307 either @file{hello-linux.lo} or @file{hello-@-generic.lo}.
5309 Or we could simply use an Automake conditional as follows.
5311 @c Keep in sync with ltcond2.sh
5312 @example
5313 lib_LTLIBRARIES = libhello.la
5314 libhello_la_SOURCES = hello-common.c
5315 if LINUX
5316 libhello_la_SOURCES += hello-linux.c
5317 else
5318 libhello_la_SOURCES += hello-generic.c
5319 endif
5320 @end example
5322 @node Libtool Convenience Libraries
5323 @subsection Libtool Convenience Libraries
5324 @cindex convenience libraries, libtool
5325 @cindex libtool convenience libraries
5326 @vindex noinst_LTLIBRARIES
5327 @vindex check_LTLIBRARIES
5329 Sometimes you want to build libtool libraries that should not be
5330 installed.  These are called @dfn{libtool convenience libraries} and
5331 are typically used to encapsulate many sublibraries, later gathered
5332 into one big installed library.
5334 Libtool convenience libraries are declared by directory-less variables
5335 such as @code{noinst_LTLIBRARIES}, @code{check_LTLIBRARIES}, or even
5336 @code{EXTRA_LTLIBRARIES}.  Unlike installed libtool libraries they do
5337 not need an @option{-rpath} flag at link time (actually this is the only
5338 difference).
5340 Convenience libraries listed in @code{noinst_LTLIBRARIES} are always
5341 built.  Those listed in @code{check_LTLIBRARIES} are built only upon
5342 @samp{make check}.  Finally, libraries listed in
5343 @code{EXTRA_LTLIBRARIES} are never built explicitly: Automake outputs
5344 rules to build them, but if the library does not appear as a Makefile
5345 dependency anywhere it won't be built (this is why
5346 @code{EXTRA_LTLIBRARIES} is used for conditional compilation).
5348 Here is a sample setup merging libtool convenience libraries from
5349 subdirectories into one main @file{libtop.la} library.
5351 @c Keep in sync with ltconv.sh
5352 @example
5353 # -- Top-level Makefile.am --
5354 SUBDIRS = sub1 sub2 @dots{}
5355 lib_LTLIBRARIES = libtop.la
5356 libtop_la_SOURCES =
5357 libtop_la_LIBADD = \
5358   sub1/libsub1.la \
5359   sub2/libsub2.la \
5360   @dots{}
5362 # -- sub1/Makefile.am --
5363 noinst_LTLIBRARIES = libsub1.la
5364 libsub1_la_SOURCES = @dots{}
5366 # -- sub2/Makefile.am --
5367 # showing nested convenience libraries
5368 SUBDIRS = sub2.1 sub2.2 @dots{}
5369 noinst_LTLIBRARIES = libsub2.la
5370 libsub2_la_SOURCES =
5371 libsub2_la_LIBADD = \
5372   sub21/libsub21.la \
5373   sub22/libsub22.la \
5374   @dots{}
5375 @end example
5377 When using such setup, beware that @command{automake} will assume
5378 @file{libtop.la} is to be linked with the C linker.  This is because
5379 @code{libtop_la_SOURCES} is empty, so @command{automake} picks C as
5380 default language.  If @code{libtop_la_SOURCES} was not empty,
5381 @command{automake} would select the linker as explained in @ref{How
5382 the Linker is Chosen}.
5384 If one of the sublibraries contains non-C source, it is important that
5385 the appropriate linker be chosen.  One way to achieve this is to
5386 pretend that there is such a non-C file among the sources of the
5387 library, thus forcing @command{automake} to select the appropriate
5388 linker.  Here is the top-level @file{Makefile} of our example updated
5389 to force C++ linking.
5391 @example
5392 SUBDIRS = sub1 sub2 @dots{}
5393 lib_LTLIBRARIES = libtop.la
5394 libtop_la_SOURCES =
5395 # Dummy C++ source to cause C++ linking.
5396 nodist_EXTRA_libtop_la_SOURCES = dummy.cxx
5397 libtop_la_LIBADD = \
5398   sub1/libsub1.la \
5399   sub2/libsub2.la \
5400   @dots{}
5401 @end example
5403 @samp{EXTRA_*_SOURCES} variables are used to keep track of source
5404 files that might be compiled (this is mostly useful when doing
5405 conditional compilation using @code{AC_SUBST}, @pxref{Conditional
5406 Libtool Sources}), and the @code{nodist_} prefix means the listed
5407 sources are not to be distributed (@pxref{Program and Library
5408 Variables}).  In effect the file @file{dummy.cxx} does not need to
5409 exist in the source tree.  Of course if you have some real source file
5410 to list in @code{libtop_la_SOURCES} there is no point in cheating with
5411 @code{nodist_EXTRA_libtop_la_SOURCES}.
5414 @node Libtool Modules
5415 @subsection Libtool Modules
5416 @cindex modules, libtool
5417 @cindex libtool modules
5418 @cindex @option{-module}, libtool
5420 These are libtool libraries meant to be dlopened.  They are
5421 indicated to libtool by passing @option{-module} at link-time.
5423 @example
5424 pkglib_LTLIBRARIES = mymodule.la
5425 mymodule_la_SOURCES = doit.c
5426 mymodule_la_LDFLAGS = -module
5427 @end example
5429 Ordinarily, Automake requires that a library's name start with
5430 @code{lib}.  However, when building a dynamically loadable module you
5431 might wish to use a "nonstandard" name.  Automake will not complain
5432 about such nonstandard names if it knows the library being built is a
5433 libtool module, i.e., if @option{-module} explicitly appears in the
5434 library's @code{_LDFLAGS} variable (or in the common @code{AM_LDFLAGS}
5435 variable when no per-library @code{_LDFLAGS} variable is defined).
5437 As always, @code{AC_SUBST} variables are black boxes to Automake since
5438 their values are not yet known when @command{automake} is run.
5439 Therefore if @option{-module} is set via such a variable, Automake
5440 cannot notice it and will proceed as if the library was an ordinary
5441 libtool library, with strict naming.
5443 If @code{mymodule_la_SOURCES} is not specified, then it defaults to
5444 the single file @file{mymodule.c} (@pxref{Default _SOURCES}).
5446 @node Libtool Flags
5447 @subsection @code{_LIBADD}, @code{_LDFLAGS}, and @code{_LIBTOOLFLAGS}
5448 @cindex @code{_LIBADD}, libtool
5449 @cindex @code{_LDFLAGS}, libtool
5450 @cindex @code{_LIBTOOLFLAGS}, libtool
5451 @vindex AM_LIBTOOLFLAGS
5452 @vindex LIBTOOLFLAGS
5453 @vindex maude_LIBTOOLFLAGS
5455 As shown in previous sections, the @samp{@var{library}_LIBADD}
5456 variable should be used to list extra libtool objects (@file{.lo}
5457 files) or libtool libraries (@file{.la}) to add to @var{library}.
5459 The @samp{@var{library}_LDFLAGS} variable is the place to list
5460 additional libtool linking flags, such as @option{-version-info},
5461 @option{-static}, and a lot more.  @xref{Link mode, , Link mode,
5462 libtool, The Libtool Manual}.
5464 The @command{libtool} command has two kinds of options: mode-specific
5465 options and generic options.  Mode-specific options such as the
5466 aforementioned linking flags should be lumped with the other flags
5467 passed to the tool invoked by @command{libtool} (hence the use of
5468 @samp{@var{library}_LDFLAGS} for libtool linking flags).  Generic
5469 options include @option{--tag=@var{tag}} and @option{--silent}
5470 (@pxref{Invoking libtool, , Invoking @command{libtool}, libtool, The
5471 Libtool Manual} for more options) should appear before the mode
5472 selection on the command line; in @file{Makefile.am}s they should
5473 be listed in the @samp{@var{library}_LIBTOOLFLAGS} variable.
5475 If @samp{@var{library}_LIBTOOLFLAGS} is not defined, then the variable
5476 @code{AM_LIBTOOLFLAGS} is used instead.
5478 These flags are passed to libtool after the @option{--tag=@var{tag}}
5479 option computed by Automake (if any), so
5480 @samp{@var{library}_LIBTOOLFLAGS} (or @code{AM_LIBTOOLFLAGS}) is a
5481 good place to override or supplement the @option{--tag=@var{tag}}
5482 setting.
5484 The libtool rules also use a @code{LIBTOOLFLAGS} variable that should
5485 not be set in @file{Makefile.am}: this is a user variable (@pxref{Flag
5486 Variables Ordering}.  It allows users to run @samp{make
5487 LIBTOOLFLAGS=--silent}, for instance.  Note that the verbosity of
5488 @command{libtool} can also be influenced by the Automake support
5489 for silent rules (@pxref{Automake Silent Rules}).
5491 @node LTLIBOBJS, Libtool Issues, Libtool Flags, A Shared Library
5492 @subsection @code{LTLIBOBJS} and @code{LTALLOCA}
5493 @cindex @code{LTLIBOBJS}, special handling
5494 @cindex @code{LIBOBJS}, and Libtool
5495 @cindex @code{LTALLOCA}, special handling
5496 @cindex @code{ALLOCA}, and Libtool
5497 @vindex LTLIBOBJS
5498 @vindex LIBOBJS
5499 @vindex LTALLOCA
5500 @vindex ALLOCA
5501 @acindex AC_LIBOBJ
5503 Where an ordinary library might include @samp{$(LIBOBJS)} or
5504 @samp{$(ALLOCA)} (@pxref{LIBOBJS}), a libtool library must use
5505 @samp{$(LTLIBOBJS)} or @samp{$(LTALLOCA)}.  This is required because
5506 the object files that libtool operates on do not necessarily end in
5507 @file{.o}.
5509 Nowadays, the computation of @code{LTLIBOBJS} from @code{LIBOBJS} is
5510 performed automatically by Autoconf (@pxref{AC_LIBOBJ vs LIBOBJS, ,
5511 @code{AC_LIBOBJ} vs.@: @code{LIBOBJS}, autoconf, The Autoconf Manual}).
5513 @node Libtool Issues
5514 @subsection Common Issues Related to Libtool's Use
5516 @menu
5517 * Error required file ltmain.sh not found::  The need to run libtoolize
5518 * Objects created both with libtool and without::  Avoid a specific build race
5519 @end menu
5521 @node Error required file ltmain.sh not found
5522 @subsubsection Error: @samp{required file `./ltmain.sh' not found}
5523 @cindex @file{ltmain.sh} not found
5524 @cindex @command{libtoolize}, no longer run by @command{automake}
5525 @cindex @command{libtoolize} and @command{autoreconf}
5526 @cindex @command{autoreconf} and @command{libtoolize}
5527 @cindex @file{bootstrap} and @command{autoreconf}
5528 @cindex @file{autogen.sh} and @command{autoreconf}
5530 Libtool comes with a tool called @command{libtoolize} that will
5531 install libtool's supporting files into a package.  Running this
5532 command will install @file{ltmain.sh}.  You should execute it before
5533 @command{aclocal} and @command{automake}.
5535 People upgrading old packages to newer autotools are likely to face
5536 this issue because older Automake versions used to call
5537 @command{libtoolize}.  Therefore old build scripts do not call
5538 @command{libtoolize}.
5540 Since Automake 1.6, it has been decided that running
5541 @command{libtoolize} was none of Automake's business.  Instead, that
5542 functionality has been moved into the @command{autoreconf} command
5543 (@pxref{autoreconf Invocation, , Using @command{autoreconf}, autoconf,
5544 The Autoconf Manual}).  If you do not want to remember what to run and
5545 when, just learn the @command{autoreconf} command.  Hopefully,
5546 replacing existing @file{bootstrap} or @file{autogen.sh} scripts by
5547 a call to @command{autoreconf} should also free you from any similar
5548 incompatible change in the future.
5550 @node Objects created both with libtool and without
5551 @subsubsection Objects @samp{created with both libtool and without}
5553 Sometimes, the same source file is used both to build a libtool
5554 library and to build another non-libtool target (be it a program or
5555 another library).
5557 Let's consider the following @file{Makefile.am}.
5559 @example
5560 bin_PROGRAMS = prog
5561 prog_SOURCES = prog.c foo.c @dots{}
5563 lib_LTLIBRARIES = libfoo.la
5564 libfoo_la_SOURCES = foo.c @dots{}
5565 @end example
5567 @noindent
5568 (In this trivial case the issue could be avoided by linking
5569 @file{libfoo.la} with @file{prog} instead of listing @file{foo.c} in
5570 @code{prog_SOURCES}.  But let's assume we really want to keep
5571 @file{prog} and @file{libfoo.la} separate.)
5573 Technically, it means that we should build @file{foo.$(OBJEXT)} for
5574 @file{prog}, and @file{foo.lo} for @file{libfoo.la}.  The problem is
5575 that in the course of creating @file{foo.lo}, libtool may erase (or
5576 replace) @file{foo.$(OBJEXT)}, and this cannot be avoided.
5578 Therefore, when Automake detects this situation it will complain
5579 with a message such as
5580 @example
5581 object 'foo.$(OBJEXT)' created both with libtool and without
5582 @end example
5584 A workaround for this issue is to ensure that these two objects get
5585 different basenames.  As explained in @ref{Renamed Objects}, this
5586 happens automatically when per-targets flags are used.
5588 @example
5589 bin_PROGRAMS = prog
5590 prog_SOURCES = prog.c foo.c @dots{}
5591 prog_CFLAGS = $(AM_CFLAGS)
5593 lib_LTLIBRARIES = libfoo.la
5594 libfoo_la_SOURCES = foo.c @dots{}
5595 @end example
5597 @noindent
5598 Adding @samp{prog_CFLAGS = $(AM_CFLAGS)} is almost a no-op, because
5599 when the @code{prog_CFLAGS} is defined, it is used instead of
5600 @code{AM_CFLAGS}.  However as a side effect it will cause
5601 @file{prog.c} and @file{foo.c} to be compiled as
5602 @file{prog-prog.$(OBJEXT)} and @file{prog-foo.$(OBJEXT)}, which solves
5603 the issue.
5605 @node Program and Library Variables
5606 @section Program and Library Variables
5608 Associated with each program is a collection of variables that can be
5609 used to modify how that program is built.  There is a similar list of
5610 such variables for each library.  The canonical name of the program (or
5611 library) is used as a base for naming these variables.
5613 In the list below, we use the name ``maude'' to refer to the program or
5614 library.  In your @file{Makefile.am} you would replace this with the
5615 canonical name of your program.  This list also refers to ``maude'' as a
5616 program, but in general the same rules apply for both static and dynamic
5617 libraries; the documentation below notes situations where programs and
5618 libraries differ.
5620 @vtable @code
5621 @item maude_SOURCES
5622 This variable, if it exists, lists all the source files that are
5623 compiled to build the program.  These files are added to the
5624 distribution by default.  When building the program, Automake will cause
5625 each source file to be compiled to a single @file{.o} file (or
5626 @file{.lo} when using libtool).  Normally these object files are named
5627 after the source file, but other factors can change this.  If a file in
5628 the @code{_SOURCES} variable has an unrecognized extension, Automake
5629 will do one of two things with it.  If a suffix rule exists for turning
5630 files with the unrecognized extension into @file{.o} files, then
5631 @command{automake} will treat this file as it will any other source file
5632 (@pxref{Support for Other Languages}).  Otherwise, the file will be
5633 ignored as though it were a header file.
5635 The prefixes @code{dist_} and @code{nodist_} can be used to control
5636 whether files listed in a @code{_SOURCES} variable are distributed.
5637 @code{dist_} is redundant, as sources are distributed by default, but it
5638 can be specified for clarity if desired.
5640 It is possible to have both @code{dist_} and @code{nodist_} variants of
5641 a given @code{_SOURCES} variable at once; this lets you easily
5642 distribute some files and not others, for instance:
5644 @example
5645 nodist_maude_SOURCES = nodist.c
5646 dist_maude_SOURCES = dist-me.c
5647 @end example
5649 By default the output file (on Unix systems, the @file{.o} file) will
5650 be put into the current build directory.  However, if the option
5651 @option{subdir-objects} is in effect in the current directory then the
5652 @file{.o} file will be put into the subdirectory named after the
5653 source file.  For instance, with @option{subdir-objects} enabled,
5654 @file{sub/dir/file.c} will be compiled to @file{sub/dir/file.o}.  Some
5655 people prefer this mode of operation.  You can specify
5656 @option{subdir-objects} in @code{AUTOMAKE_OPTIONS} (@pxref{Options}).
5657 @cindex Subdirectory, objects in
5658 @cindex Objects in subdirectory
5661 @item EXTRA_maude_SOURCES
5662 Automake needs to know the list of files you intend to compile
5663 @emph{statically}.  For one thing, this is the only way Automake has of
5664 knowing what sort of language support a given @file{Makefile.in}
5665 requires.  @footnote{There are other, more obscure reasons for
5666 this limitation as well.}  This means that, for example, you can't put a
5667 configure substitution like @samp{@@my_sources@@} into a @samp{_SOURCES}
5668 variable.  If you intend to conditionally compile source files and use
5669 @file{configure} to substitute the appropriate object names into, e.g.,
5670 @code{_LDADD} (see below), then you should list the corresponding source
5671 files in the @code{EXTRA_} variable.
5673 This variable also supports @code{dist_} and @code{nodist_} prefixes.
5674 For instance, @code{nodist_EXTRA_maude_SOURCES} would list extra
5675 sources that may need to be built, but should not be distributed.
5677 @item maude_AR
5678 A static library is created by default by invoking @samp{$(AR)
5679 $(ARFLAGS)} followed by the name of the library and then the objects
5680 being put into the library.  You can override this by setting the
5681 @code{_AR} variable.  This is usually used with C++; some C++
5682 compilers require a special invocation in order to instantiate all the
5683 templates that should go into a library.  For instance, the SGI C++
5684 compiler likes this variable set like so:
5685 @example
5686 libmaude_a_AR = $(CXX) -ar -o
5687 @end example
5689 @item maude_LIBADD
5690 Extra objects can be added to a @emph{library} using the @code{_LIBADD}
5691 variable.  For instance, this should be used for objects determined by
5692 @command{configure} (@pxref{A Library}).
5694 In the case of libtool libraries, @code{maude_LIBADD} can also refer
5695 to other libtool libraries.
5697 @item maude_LDADD
5698 Extra objects (@file{*.$(OBJEXT)}) and libraries (@file{*.a},
5699 @file{*.la}) can be added to a @emph{program} by listing them in the
5700 @code{_LDADD} variable.  For instance, this should be used for objects
5701 determined by @command{configure} (@pxref{Linking}).
5703 @code{_LDADD} and @code{_LIBADD} are inappropriate for passing
5704 program-specific linker flags (except for @option{-l}, @option{-L},
5705 @option{-dlopen} and @option{-dlpreopen}).  Use the @code{_LDFLAGS} variable
5706 for this purpose.
5708 For instance, if your @file{configure.ac} uses @code{AC_PATH_XTRA}, you
5709 could link your program against the X libraries like so:
5711 @example
5712 maude_LDADD = $(X_PRE_LIBS) $(X_LIBS) $(X_EXTRA_LIBS)
5713 @end example
5715 We recommend that you use @option{-l} and @option{-L} only when
5716 referring to third-party libraries, and give the explicit file names
5717 of any library built by your package.  Doing so will ensure that
5718 @code{maude_DEPENDENCIES} (see below) is correctly defined by default.
5720 @item maude_LDFLAGS
5721 This variable is used to pass extra flags to the link step of a program
5722 or a shared library.  It overrides the @code{AM_LDFLAGS} variable.
5724 @item maude_LIBTOOLFLAGS
5725 This variable is used to pass extra options to @command{libtool}.
5726 It overrides the @code{AM_LIBTOOLFLAGS} variable.
5727 These options are output before @command{libtool}'s @option{--mode=@var{mode}}
5728 option, so they should not be mode-specific options (those belong to
5729 the compiler or linker flags).  @xref{Libtool Flags}.
5731 @item maude_DEPENDENCIES
5732 @itemx EXTRA_maude_DEPENDENCIES
5733 It is also occasionally useful to have a target (program or library)
5734 depend on some other file that is not actually part of that target.
5735 This can be done using the @code{_DEPENDENCIES} variable.  Each
5736 target depends on the contents of such a variable, but no further
5737 interpretation is done.
5739 Since these dependencies are associated to the link rule used to
5740 create the programs they should normally list files used by the link
5741 command.  That is @file{*.$(OBJEXT)}, @file{*.a}, or @file{*.la} files
5742 for programs; @file{*.lo} and @file{*.la} files for Libtool libraries;
5743 and @file{*.$(OBJEXT)} files for static libraries.  In rare cases you
5744 may need to add other kinds of files such as linker scripts, but
5745 @emph{listing a source file in @code{_DEPENDENCIES} is wrong}.  If
5746 some source file needs to be built before all the components of a
5747 program are built, consider using the @code{BUILT_SOURCES} variable
5748 (@pxref{Sources}).
5750 If @code{_DEPENDENCIES} is not supplied, it is computed by Automake.
5751 The automatically-assigned value is the contents of @code{_LDADD} or
5752 @code{_LIBADD}, with most configure substitutions, @option{-l}, @option{-L},
5753 @option{-dlopen} and @option{-dlpreopen} options removed.  The configure
5754 substitutions that are left in are only @samp{$(LIBOBJS)} and
5755 @samp{$(ALLOCA)}; these are left because it is known that they will not
5756 cause an invalid value for @code{_DEPENDENCIES} to be generated.
5758 @code{_DEPENDENCIES} is more likely used to perform conditional
5759 compilation using an @code{AC_SUBST} variable that contains a list of
5760 objects.  @xref{Conditional Sources}, and @ref{Conditional Libtool
5761 Sources}.
5763 The @code{EXTRA_*_DEPENDENCIES} variable may be useful for cases where
5764 you merely want to augment the @command{automake}-generated
5765 @code{_DEPENDENCIES} variable rather than replacing it.
5767 @item maude_LINK
5768 You can override the linker on a per-program basis.  By default the
5769 linker is chosen according to the languages used by the program.  For
5770 instance, a program that includes C++ source code would use the C++
5771 compiler to link.  The @code{_LINK} variable must hold the name of a
5772 command that can be passed all the @file{.o} file names and libraries
5773 to link against as arguments.  Note that the name of the underlying
5774 program is @emph{not} passed to @code{_LINK}; typically one uses
5775 @samp{$@@}:
5777 @example
5778 maude_LINK = $(CCLD) -magic -o $@@
5779 @end example
5781 If a @code{_LINK} variable is not supplied, it may still be generated
5782 and used by Automake due to the use of per-target link flags such as
5783 @code{_CFLAGS}, @code{_LDFLAGS} or @code{_LIBTOOLFLAGS}, in cases where
5784 they apply.
5786 @item maude_CCASFLAGS
5787 @itemx maude_CFLAGS
5788 @itemx maude_CPPFLAGS
5789 @itemx maude_CXXFLAGS
5790 @itemx maude_FFLAGS
5791 @itemx maude_GCJFLAGS
5792 @itemx maude_LFLAGS
5793 @itemx maude_OBJCFLAGS
5794 @itemx maude_OBJCXXFLAGS
5795 @itemx maude_RFLAGS
5796 @itemx maude_UPCFLAGS
5797 @itemx maude_YFLAGS
5798 @cindex per-target compilation flags, defined
5799 Automake allows you to set compilation flags on a per-program (or
5800 per-library) basis.  A single source file can be included in several
5801 programs, and it will potentially be compiled with different flags for
5802 each program.  This works for any language directly supported by
5803 Automake.  These @dfn{per-target compilation flags} are
5804 @samp{_CCASFLAGS},
5805 @samp{_CFLAGS},
5806 @samp{_CPPFLAGS},
5807 @samp{_CXXFLAGS},
5808 @samp{_FFLAGS},
5809 @samp{_GCJFLAGS},
5810 @samp{_LFLAGS},
5811 @samp{_OBJCFLAGS},
5812 @samp{_OBJCXXFLAGS},
5813 @samp{_RFLAGS},
5814 @samp{_UPCFLAGS}, and
5815 @samp{_YFLAGS}.
5817 When using a per-target compilation flag, Automake will choose a
5818 different name for the intermediate object files.  Ordinarily a file
5819 like @file{sample.c} will be compiled to produce @file{sample.o}.
5820 However, if the program's @code{_CFLAGS} variable is set, then the
5821 object file will be named, for instance, @file{maude-sample.o}.  (See
5822 also @ref{Renamed Objects}).
5824 In compilations with per-target flags, the ordinary @samp{AM_} form of
5825 the flags variable is @emph{not} automatically included in the
5826 compilation (however, the user form of the variable @emph{is} included).
5827 So for instance, if you want the hypothetical @file{maude} compilations
5828 to also use the value of @code{AM_CFLAGS}, you would need to write:
5830 @example
5831 maude_CFLAGS = @dots{} your flags @dots{} $(AM_CFLAGS)
5832 @end example
5834 @xref{Flag Variables Ordering}, for more discussion about the
5835 interaction between user variables, @samp{AM_} shadow variables, and
5836 per-target variables.
5838 @item maude_SHORTNAME
5839 On some platforms the allowable file names are very short.  In order to
5840 support these systems and per-target compilation flags at the same
5841 time, Automake allows you to set a ``short name'' that will influence
5842 how intermediate object files are named.  For instance, in the following
5843 example,
5845 @example
5846 bin_PROGRAMS = maude
5847 maude_CPPFLAGS = -DSOMEFLAG
5848 maude_SHORTNAME = m
5849 maude_SOURCES = sample.c @dots{}
5850 @end example
5852 @noindent
5853 the object file would be named @file{m-sample.o} rather than
5854 @file{maude-sample.o}.
5856 This facility is rarely needed in practice,
5857 and we recommend avoiding it until you find it is required.
5858 @end vtable
5860 @node Default _SOURCES
5861 @section Default @code{_SOURCES}
5863 @vindex _SOURCES
5864 @vindex SOURCES
5865 @cindex @code{_SOURCES}, default
5866 @cindex default @code{_SOURCES}
5867 @vindex AM_DEFAULT_SOURCE_EXT
5869 @code{_SOURCES} variables are used to specify source files of programs
5870 (@pxref{A Program}), libraries (@pxref{A Library}), and Libtool
5871 libraries (@pxref{A Shared Library}).
5873 When no such variable is specified for a target, Automake will define
5874 one itself.  The default is to compile a single C file whose base name
5875 is the name of the target itself, with any extension replaced by
5876 @code{AM_DEFAULT_SOURCE_EXT}, which defaults to @file{.c}.
5878 For example if you have the following somewhere in your
5879 @file{Makefile.am} with no corresponding @code{libfoo_a_SOURCES}:
5881 @example
5882 lib_LIBRARIES = libfoo.a sub/libc++.a
5883 @end example
5885 @noindent
5886 @file{libfoo.a} will be built using a default source file named
5887 @file{libfoo.c}, and @file{sub/libc++.a} will be built from
5888 @file{sub/libc++.c}.  (In older versions @file{sub/libc++.a}
5889 would be built from @file{sub_libc___a.c}, i.e., the default source
5890 was the canonized name of the target, with @file{.c} appended.
5891 We believe the new behavior is more sensible, but for backward
5892 compatibility @command{automake} will use the old name if a file or a rule
5893 with that name exists and @code{AM_DEFAULT_SOURCE_EXT} is not used.)
5895 @cindex @code{check_PROGRAMS} example
5896 @vindex check_PROGRAMS
5897 Default sources are mainly useful in test suites, when building many
5898 test programs each from a single source.  For instance, in
5900 @example
5901 check_PROGRAMS = test1 test2 test3
5902 AM_DEFAULT_SOURCE_EXT = .cpp
5903 @end example
5905 @noindent
5906 @file{test1}, @file{test2}, and @file{test3} will be built
5907 from @file{test1.cpp}, @file{test2.cpp}, and @file{test3.cpp}.
5908 Without the last line, they will be built from @file{test1.c},
5909 @file{test2.c}, and @file{test3.c}.
5911 @cindex Libtool modules, default source example
5912 @cindex default source, Libtool modules example
5913 Another case where this is convenient is building many Libtool modules
5914 (@file{module@var{n}.la}), each defined in its own file
5915 (@file{module@var{n}.c}).
5917 @example
5918 AM_LDFLAGS = -module
5919 lib_LTLIBRARIES = module1.la module2.la module3.la
5920 @end example
5922 @cindex empty @code{_SOURCES}
5923 @cindex @code{_SOURCES}, empty
5924 Finally, there is one situation where this default source computation
5925 needs to be avoided: when a target should not be built from sources.
5926 We already saw such an example in @ref{true}; this happens when all
5927 the constituents of a target have already been compiled and just need
5928 to be combined using a @code{_LDADD} variable.  Then it is necessary
5929 to define an empty @code{_SOURCES} variable, so that @command{automake}
5930 does not compute a default.
5932 @example
5933 bin_PROGRAMS = target
5934 target_SOURCES =
5935 target_LDADD = libmain.a libmisc.a
5936 @end example
5938 @node LIBOBJS
5939 @section Special handling for @code{LIBOBJS} and @code{ALLOCA}
5941 @cindex @code{LIBOBJS}, example
5942 @cindex @code{ALLOCA}, example
5943 @cindex @code{LIBOBJS}, special handling
5944 @cindex @code{ALLOCA}, special handling
5945 @vindex LTLIBOBJS
5946 @vindex LIBOBJS
5947 @vindex LTALLOCA
5948 @vindex ALLOCA
5950 The @samp{$(LIBOBJS)} and @samp{$(ALLOCA)} variables list object
5951 files that should be compiled into the project to provide an
5952 implementation for functions that are missing or broken on the host
5953 system.  They are substituted by @file{configure}.
5955 @acindex AC_LIBOBJ
5957 These variables are defined by Autoconf macros such as
5958 @code{AC_LIBOBJ}, @code{AC_REPLACE_FUNCS} (@pxref{Generic Functions, ,
5959 Generic Function Checks, autoconf, The Autoconf Manual}), or
5960 @code{AC_FUNC_ALLOCA} (@pxref{Particular Functions, , Particular
5961 Function Checks, autoconf, The Autoconf Manual}).  Many other Autoconf
5962 macros call @code{AC_LIBOBJ} or @code{AC_REPLACE_FUNCS} to
5963 populate @samp{$(LIBOBJS)}.
5965 @acindex AC_LIBSOURCE
5967 Using these variables is very similar to doing conditional compilation
5968 using @code{AC_SUBST} variables, as described in @ref{Conditional
5969 Sources}.  That is, when building a program, @samp{$(LIBOBJS)} and
5970 @samp{$(ALLOCA)} should be added to the associated @samp{*_LDADD}
5971 variable, or to the @samp{*_LIBADD} variable when building a library.
5972 However there is no need to list the corresponding sources in
5973 @samp{EXTRA_*_SOURCES} nor to define @samp{*_DEPENDENCIES}.  Automake
5974 automatically adds @samp{$(LIBOBJS)} and @samp{$(ALLOCA)} to the
5975 dependencies, and it will discover the list of corresponding source
5976 files automatically (by tracing the invocations of the
5977 @code{AC_LIBSOURCE} Autoconf macros).  If you have already defined
5978 @samp{*_DEPENDENCIES} explicitly for an unrelated reason, then you
5979 either need to add these variables manually, or use
5980 @samp{EXTRA_*_DEPENDENCIES} instead of @samp{*_DEPENDENCIES}.
5982 These variables are usually used to build a portability library that
5983 is linked with all the programs of the project.  We now review a
5984 sample setup.  First, @file{configure.ac} contains some checks that
5985 affect either @code{LIBOBJS} or @code{ALLOCA}.
5987 @example
5988 # configure.ac
5989 @dots{}
5990 AC_CONFIG_LIBOBJ_DIR([lib])
5991 @dots{}
5992 AC_FUNC_MALLOC             dnl May add malloc.$(OBJEXT) to LIBOBJS
5993 AC_FUNC_MEMCMP             dnl May add memcmp.$(OBJEXT) to LIBOBJS
5994 AC_REPLACE_FUNCS([strdup]) dnl May add strdup.$(OBJEXT) to LIBOBJS
5995 AC_FUNC_ALLOCA             dnl May add alloca.$(OBJEXT) to ALLOCA
5996 @dots{}
5997 AC_CONFIG_FILES([
5998   lib/Makefile
5999   src/Makefile
6001 AC_OUTPUT
6002 @end example
6004 @acindex AC_CONFIG_LIBOBJ_DIR
6006 The @code{AC_CONFIG_LIBOBJ_DIR} tells Autoconf that the source files
6007 of these object files are to be found in the @file{lib/} directory.
6008 Automake can also use this information, otherwise it expects the
6009 source files are to be in the directory where the @samp{$(LIBOBJS)}
6010 and @samp{$(ALLOCA)} variables are used.
6012 The @file{lib/} directory should therefore contain @file{malloc.c},
6013 @file{memcmp.c}, @file{strdup.c}, @file{alloca.c}.  Here is its
6014 @file{Makefile.am}:
6016 @example
6017 # lib/Makefile.am
6019 noinst_LIBRARIES = libcompat.a
6020 libcompat_a_SOURCES =
6021 libcompat_a_LIBADD = $(LIBOBJS) $(ALLOCA)
6022 @end example
6024 The library can have any name, of course, and anyway it is not going
6025 to be installed: it just holds the replacement versions of the missing
6026 or broken functions so we can later link them in.  Many projects
6027 also include extra functions, specific to the project, in that
6028 library: they are simply added on the @code{_SOURCES} line.
6030 @cindex Empty libraries and @samp{$(LIBOBJS)}
6031 @cindex @samp{$(LIBOBJS)} and empty libraries
6032 There is a small trap here, though: @samp{$(LIBOBJS)} and
6033 @samp{$(ALLOCA)} might be empty, and building an empty library is not
6034 portable.  You should ensure that there is always something to put in
6035 @file{libcompat.a}.  Most projects will also add some utility
6036 functions in that directory, and list them in
6037 @code{libcompat_a_SOURCES}, so in practice @file{libcompat.a} cannot
6038 be empty.
6040 Finally here is how this library could be used from the @file{src/}
6041 directory.
6043 @example
6044 # src/Makefile.am
6046 # Link all programs in this directory with libcompat.a
6047 LDADD = ../lib/libcompat.a
6049 bin_PROGRAMS = tool1 tool2 @dots{}
6050 tool1_SOURCES = @dots{}
6051 tool2_SOURCES = @dots{}
6052 @end example
6054 When option @option{subdir-objects} is not used, as in the above
6055 example, the variables @samp{$(LIBOBJS)} or @samp{$(ALLOCA)} can only
6056 be used in the directory where their sources lie.  E.g., here it would
6057 be wrong to use @samp{$(LIBOBJS)} or @samp{$(ALLOCA)} in
6058 @file{src/Makefile.am}.  However if both @option{subdir-objects} and
6059 @code{AC_CONFIG_LIBOBJ_DIR} are used, it is OK to use these variables
6060 in other directories.  For instance @file{src/Makefile.am} could be
6061 changed as follows.
6063 @example
6064 # src/Makefile.am
6066 AUTOMAKE_OPTIONS = subdir-objects
6067 LDADD = $(LIBOBJS) $(ALLOCA)
6069 bin_PROGRAMS = tool1 tool2 @dots{}
6070 tool1_SOURCES = @dots{}
6071 tool2_SOURCES = @dots{}
6072 @end example
6074 Because @samp{$(LIBOBJS)} and @samp{$(ALLOCA)} contain object
6075 file names that end with @samp{.$(OBJEXT)}, they are not suitable for
6076 Libtool libraries (where the expected object extension is @file{.lo}):
6077 @code{LTLIBOBJS} and @code{LTALLOCA} should be used instead.
6079 @code{LTLIBOBJS} is defined automatically by Autoconf and should not
6080 be defined by hand (as in the past), however at the time of writing
6081 @code{LTALLOCA} still needs to be defined from @code{ALLOCA} manually.
6082 @xref{AC_LIBOBJ vs LIBOBJS, , @code{AC_LIBOBJ} vs.@: @code{LIBOBJS},
6083 autoconf, The Autoconf Manual}.
6086 @node Program Variables
6087 @section Variables used when building a program
6089 Occasionally it is useful to know which @file{Makefile} variables
6090 Automake uses for compilations, and in which order (@pxref{Flag
6091 Variables Ordering}); for instance, you might need to do your own
6092 compilation in some special cases.
6094 Some variables are inherited from Autoconf; these are @code{CC},
6095 @code{CFLAGS}, @code{CPPFLAGS}, @code{DEFS}, @code{LDFLAGS}, and
6096 @code{LIBS}.
6097 @vindex CC
6098 @vindex CFLAGS
6099 @vindex CPPFLAGS
6100 @vindex DEFS
6101 @vindex LDFLAGS
6102 @vindex LIBS
6104 There are some additional variables that Automake defines on its own:
6106 @vtable @code
6107 @item AM_CPPFLAGS
6108 The contents of this variable are passed to every compilation that invokes
6109 the C preprocessor; it is a list of arguments to the preprocessor.  For
6110 instance, @option{-I} and @option{-D} options should be listed here.
6112 Automake already provides some @option{-I} options automatically, in a
6113 separate variable that is also passed to every compilation that invokes
6114 the C preprocessor.  In particular it generates @samp{-I.},
6115 @samp{-I$(srcdir)}, and a @option{-I} pointing to the directory holding
6116 @file{config.h} (if you've used @code{AC_CONFIG_HEADERS}).  You can
6117 disable the default @option{-I} options using the @option{nostdinc}
6118 option.
6120 When a file to be included is generated during the build and not part
6121 of a distribution tarball, its location is under @code{$(builddir)},
6122 not under @code{$(srcdir)}.  This matters especially for packages that
6123 use header files placed in sub-directories and want to allow builds
6124 outside the source tree (@pxref{VPATH Builds}). In that case we
6125 recommend to use a pair of @option{-I} options, such as, e.g.,
6126 @samp{-Isome/subdir -I$(srcdir)/some/subdir} or
6127 @samp{-I$(top_builddir)/some/subdir -I$(top_srcdir)/some/subdir}.
6128 Note that the reference to the build tree should come before the
6129 reference to the source tree, so that accidentally leftover generated
6130 files in the source directory are ignored.
6132 @code{AM_CPPFLAGS} is ignored in preference to a per-executable (or
6133 per-library) @code{_CPPFLAGS} variable if it is defined.
6135 @item INCLUDES
6136 This does the same job as @code{AM_CPPFLAGS} (or any per-target
6137 @code{_CPPFLAGS} variable if it is used).  It is an older name for the
6138 same functionality.  This variable is deprecated; we suggest using
6139 @code{AM_CPPFLAGS} and per-target @code{_CPPFLAGS} instead.
6141 @item AM_CFLAGS
6142 This is the variable the @file{Makefile.am} author can use to pass
6143 in additional C compiler flags.  In some situations, this is
6144 not used, in preference to the per-executable (or per-library)
6145 @code{_CFLAGS}.
6147 @item COMPILE
6148 This is the command used to actually compile a C source file.  The
6149 file name is appended to form the complete command line.
6151 @item AM_LDFLAGS
6152 This is the variable the @file{Makefile.am} author can use to pass
6153 in additional linker flags.  In some situations, this is not used, in
6154 preference to the per-executable (or per-library) @code{_LDFLAGS}.
6156 @item LINK
6157 This is the command used to actually link a C program.  It already
6158 includes @samp{-o $@@} and the usual variable references (for instance,
6159 @code{CFLAGS}); it takes as ``arguments'' the names of the object files
6160 and libraries to link in.  This variable is not used when the linker is
6161 overridden with a per-target @code{_LINK} variable or per-target flags
6162 cause Automake to define such a @code{_LINK} variable.
6163 @end vtable
6166 @node Yacc and Lex
6167 @section Yacc and Lex support
6169 Automake has somewhat idiosyncratic support for Yacc and Lex.
6171 Automake assumes that the @file{.c} file generated by @command{yacc}
6172 (or @command{lex}) should be named using the basename of the input
6173 file.  That is, for a yacc source file @file{foo.y}, Automake will
6174 cause the intermediate file to be named @file{foo.c} (as opposed to
6175 @file{y.tab.c}, which is more traditional).
6177 The extension of a yacc source file is used to determine the extension
6178 of the resulting C or C++ source and header files.  Note that header
6179 files are generated only when the @option{-d} Yacc option is used; see
6180 below for more information about this flag, and how to specify it.
6181 Files with the extension @file{.y} will thus be turned into @file{.c}
6182 sources and @file{.h} headers; likewise, @file{.yy} will become
6183 @file{.cc} and @file{.hh}, @file{.y++} will become @file{c++} and
6184 @file{h++}, @file{.yxx} will become @file{.cxx} and @file{.hxx},
6185 and @file{.ypp} will become @file{.cpp} and @file{.hpp}.
6187 Similarly, lex source files can be used to generate C or C++; the
6188 extensions @file{.l}, @file{.ll}, @file{.l++}, @file{.lxx}, and
6189 @file{.lpp} are recognized.
6191 You should never explicitly mention the intermediate (C or C++) file
6192 in any @code{SOURCES} variable; only list the source file.
6194 The intermediate files generated by @command{yacc} (or @command{lex})
6195 will be included in any distribution that is made.  That way the user
6196 doesn't need to have @command{yacc} or @command{lex}.
6198 If a @command{yacc} source file is seen, then your @file{configure.ac} must
6199 define the variable @code{YACC}.  This is most easily done by invoking
6200 the macro @code{AC_PROG_YACC} (@pxref{Particular Programs, , Particular
6201 Program Checks, autoconf, The Autoconf Manual}).
6203 @vindex YFLAGS
6204 @vindex AM_YFLAGS
6205 When @code{yacc} is invoked, it is passed @code{AM_YFLAGS} and
6206 @code{YFLAGS}.  The latter is a user variable and the former is
6207 intended for the @file{Makefile.am} author.
6209 @code{AM_YFLAGS} is usually used to pass the @option{-d} option to
6210 @command{yacc}.  Automake knows what this means and will automatically
6211 adjust its rules to update and distribute the header file built by
6212 @samp{yacc -d}@footnote{Please note that @command{automake} recognizes
6213 @option{-d} in @code{AM_YFLAGS} only if it is not clustered with other
6214 options; for example, it won't be recognized if @code{AM_YFLAGS} is
6215 @option{-dt}, but it will be if @code{AM_YFLAGS} is @option{-d -t} or
6216 @option{-t -d}.}.
6217 What Automake cannot guess, though, is where this
6218 header will be used: it is up to you to ensure the header gets built
6219 before it is first used.  Typically this is necessary in order for
6220 dependency tracking to work when the header is included by another
6221 file.  The common solution is listing the header file in
6222 @code{BUILT_SOURCES} (@pxref{Sources}) as follows.
6224 @example
6225 BUILT_SOURCES = parser.h
6226 AM_YFLAGS = -d
6227 bin_PROGRAMS = foo
6228 foo_SOURCES = @dots{} parser.y @dots{}
6229 @end example
6231 If a @command{lex} source file is seen, then your @file{configure.ac}
6232 must define the variable @code{LEX}.  You can use @code{AC_PROG_LEX}
6233 to do this (@pxref{Particular Programs, , Particular Program Checks,
6234 autoconf, The Autoconf Manual}), but using @code{AM_PROG_LEX} macro
6235 (@pxref{Macros}) is recommended.
6237 @vindex LFLAGS
6238 @vindex AM_LFLAGS
6239 When @command{lex} is invoked, it is passed @code{AM_LFLAGS} and
6240 @code{LFLAGS}.  The latter is a user variable and the former is
6241 intended for the @file{Makefile.am} author.
6243 When @code{AM_MAINTAINER_MODE} (@pxref{maintainer-mode}) is used, the
6244 rebuild rule for distributed Yacc and Lex sources are only used when
6245 @code{maintainer-mode} is enabled, or when the files have been erased.
6247 @cindex @command{ylwrap}
6248 @cindex @command{yacc}, multiple parsers
6249 @cindex Multiple @command{yacc} parsers
6250 @cindex Multiple @command{lex} lexers
6251 @cindex @command{lex}, multiple lexers
6253 When @command{lex} or @command{yacc} sources are used, @code{automake -a}
6254 automatically installs an auxiliary program called @command{ylwrap} in
6255 your package (@pxref{Auxiliary Programs}).
6256 This program is used by the build rules to rename the output of these
6257 tools, and makes it possible to include multiple @command{yacc} (or
6258 @command{lex}) source files in a single directory.  (This is necessary
6259 because yacc's output file name is fixed, and a parallel make could
6260 conceivably invoke more than one instance of @command{yacc}
6261 simultaneously.)
6263 For @command{yacc}, simply managing locking is insufficient.  The output of
6264 @command{yacc} always uses the same symbol names internally, so it isn't
6265 possible to link two @command{yacc} parsers into the same executable.
6267 We recommend using the following renaming hack used in @command{gdb}:
6268 @example
6269 #define yymaxdepth c_maxdepth
6270 #define yyparse c_parse
6271 #define yylex   c_lex
6272 #define yyerror c_error
6273 #define yylval  c_lval
6274 #define yychar  c_char
6275 #define yydebug c_debug
6276 #define yypact  c_pact
6277 #define yyr1    c_r1
6278 #define yyr2    c_r2
6279 #define yydef   c_def
6280 #define yychk   c_chk
6281 #define yypgo   c_pgo
6282 #define yyact   c_act
6283 #define yyexca  c_exca
6284 #define yyerrflag c_errflag
6285 #define yynerrs c_nerrs
6286 #define yyps    c_ps
6287 #define yypv    c_pv
6288 #define yys     c_s
6289 #define yy_yys  c_yys
6290 #define yystate c_state
6291 #define yytmp   c_tmp
6292 #define yyv     c_v
6293 #define yy_yyv  c_yyv
6294 #define yyval   c_val
6295 #define yylloc  c_lloc
6296 #define yyreds  c_reds
6297 #define yytoks  c_toks
6298 #define yylhs   c_yylhs
6299 #define yylen   c_yylen
6300 #define yydefred c_yydefred
6301 #define yydgoto  c_yydgoto
6302 #define yysindex c_yysindex
6303 #define yyrindex c_yyrindex
6304 #define yygindex c_yygindex
6305 #define yytable  c_yytable
6306 #define yycheck  c_yycheck
6307 #define yyname   c_yyname
6308 #define yyrule   c_yyrule
6309 @end example
6311 For each define, replace the @samp{c_} prefix with whatever you like.
6312 These defines work for @command{bison}, @command{byacc}, and
6313 traditional @code{yacc}s.  If you find a parser generator that uses a
6314 symbol not covered here, please report the new name so it can be added
6315 to the list.
6318 @node C++ Support
6319 @section C++ Support
6321 @cindex C++ support
6322 @cindex Support for C++
6324 Automake includes full support for C++.
6326 Any package including C++ code must define the output variable
6327 @code{CXX} in @file{configure.ac}; the simplest way to do this is to use
6328 the @code{AC_PROG_CXX} macro (@pxref{Particular Programs, , Particular
6329 Program Checks, autoconf, The Autoconf Manual}).
6331 A few additional variables are defined when a C++ source file is seen:
6333 @vtable @code
6334 @item CXX
6335 The name of the C++ compiler.
6337 @item CXXFLAGS
6338 Any flags to pass to the C++ compiler.
6340 @item AM_CXXFLAGS
6341 The maintainer's variant of @code{CXXFLAGS}.
6343 @item CXXCOMPILE
6344 The command used to actually compile a C++ source file.  The file name
6345 is appended to form the complete command line.
6347 @item CXXLINK
6348 The command used to actually link a C++ program.
6349 @end vtable
6352 @node Objective C Support
6353 @section Objective C Support
6355 @cindex Objective C support
6356 @cindex Support for Objective C
6358 Automake includes some support for Objective C.
6360 Any package including Objective C code must define the output variable
6361 @code{OBJC} in @file{configure.ac}; the simplest way to do this is to use
6362 the @code{AC_PROG_OBJC} macro (@pxref{Particular Programs, , Particular
6363 Program Checks, autoconf, The Autoconf Manual}).
6365 A few additional variables are defined when an Objective C source file
6366 is seen:
6368 @vtable @code
6369 @item OBJC
6370 The name of the Objective C compiler.
6372 @item OBJCFLAGS
6373 Any flags to pass to the Objective C compiler.
6375 @item AM_OBJCFLAGS
6376 The maintainer's variant of @code{OBJCFLAGS}.
6378 @item OBJCCOMPILE
6379 The command used to actually compile an Objective C source file.  The
6380 file name is appended to form the complete command line.
6382 @item OBJCLINK
6383 The command used to actually link an Objective C program.
6384 @end vtable
6387 @node Objective C++ Support
6388 @section Objective C++ Support
6390 @cindex Objective C++ support
6391 @cindex Support for Objective C++
6393 Automake includes some support for Objective C++.
6395 Any package including Objective C++ code must define the output variable
6396 @code{OBJCXX} in @file{configure.ac}; the simplest way to do this is to use
6397 the @code{AC_PROG_OBJCXX} macro (@pxref{Particular Programs, , Particular
6398 Program Checks, autoconf, The Autoconf Manual}).
6400 A few additional variables are defined when an Objective C++ source file
6401 is seen:
6403 @vtable @code
6404 @item OBJCXX
6405 The name of the Objective C++ compiler.
6407 @item OBJCXXFLAGS
6408 Any flags to pass to the Objective C++ compiler.
6410 @item AM_OBJCXXFLAGS
6411 The maintainer's variant of @code{OBJCXXFLAGS}.
6413 @item OBJCXXCOMPILE
6414 The command used to actually compile an Objective C++ source file.  The
6415 file name is appended to form the complete command line.
6417 @item OBJCXXLINK
6418 The command used to actually link an Objective C++ program.
6419 @end vtable
6422 @node Unified Parallel C Support
6423 @section Unified Parallel C Support
6425 @cindex Unified Parallel C support
6426 @cindex Support for Unified Parallel C
6428 Automake includes some support for Unified Parallel C.
6430 Any package including Unified Parallel C code must define the output
6431 variable @code{UPC} in @file{configure.ac}; the simplest way to do
6432 this is to use the @code{AM_PROG_UPC} macro (@pxref{Public Macros}).
6434 A few additional variables are defined when a Unified Parallel C
6435 source file is seen:
6437 @vtable @code
6438 @item UPC
6439 The name of the Unified Parallel C compiler.
6441 @item UPCFLAGS
6442 Any flags to pass to the Unified Parallel C compiler.
6444 @item AM_UPCFLAGS
6445 The maintainer's variant of @code{UPCFLAGS}.
6447 @item UPCCOMPILE
6448 The command used to actually compile a Unified Parallel C source file.
6449 The file name is appended to form the complete command line.
6451 @item UPCLINK
6452 The command used to actually link a Unified Parallel C program.
6453 @end vtable
6456 @node Assembly Support
6457 @section Assembly Support
6459 Automake includes some support for assembly code.  There are two forms
6460 of assembler files: normal (@file{*.s}) and preprocessed by @code{CPP}
6461 (@file{*.S} or @file{*.sx}).
6463 @vindex CCAS
6464 @vindex CCASFLAGS
6465 @vindex CPPFLAGS
6466 @vindex AM_CCASFLAGS
6467 @vindex AM_CPPFLAGS
6468 The variable @code{CCAS} holds the name of the compiler used to build
6469 assembly code.  This compiler must work a bit like a C compiler; in
6470 particular it must accept @option{-c} and @option{-o}.  The values of
6471 @code{CCASFLAGS} and @code{AM_CCASFLAGS} (or its per-target
6472 definition) is passed to the compilation.  For preprocessed files,
6473 @code{DEFS}, @code{DEFAULT_INCLUDES}, @code{INCLUDES}, @code{CPPFLAGS}
6474 and @code{AM_CPPFLAGS} are also used.
6476 The autoconf macro @code{AM_PROG_AS} will define @code{CCAS} and
6477 @code{CCASFLAGS} for you (unless they are already set, it simply sets
6478 @code{CCAS} to the C compiler and @code{CCASFLAGS} to the C compiler
6479 flags), but you are free to define these variables by other means.
6481 Only the suffixes @file{.s}, @file{.S}, and @file{.sx} are recognized by
6482 @command{automake} as being files containing assembly code.
6485 @node Fortran 77 Support
6486 @comment  node-name,  next,  previous,  up
6487 @section Fortran 77 Support
6489 @cindex Fortran 77 support
6490 @cindex Support for Fortran 77
6492 Automake includes full support for Fortran 77.
6494 Any package including Fortran 77 code must define the output variable
6495 @code{F77} in @file{configure.ac}; the simplest way to do this is to use
6496 the @code{AC_PROG_F77} macro (@pxref{Particular Programs, , Particular
6497 Program Checks, autoconf, The Autoconf Manual}).
6499 A few additional variables are defined when a Fortran 77 source file is
6500 seen:
6502 @vtable @code
6504 @item F77
6505 The name of the Fortran 77 compiler.
6507 @item FFLAGS
6508 Any flags to pass to the Fortran 77 compiler.
6510 @item AM_FFLAGS
6511 The maintainer's variant of @code{FFLAGS}.
6513 @item RFLAGS
6514 Any flags to pass to the Ratfor compiler.
6516 @item AM_RFLAGS
6517 The maintainer's variant of @code{RFLAGS}.
6519 @item F77COMPILE
6520 The command used to actually compile a Fortran 77 source file.  The file
6521 name is appended to form the complete command line.
6523 @item FLINK
6524 The command used to actually link a pure Fortran 77 program or shared
6525 library.
6527 @end vtable
6529 Automake can handle preprocessing Fortran 77 and Ratfor source files in
6530 addition to compiling them@footnote{Much, if not most, of the
6531 information in the following sections pertaining to preprocessing
6532 Fortran 77 programs was taken almost verbatim from @ref{Catalogue of
6533 Rules, , Catalogue of Rules, make, The GNU Make Manual}.}.  Automake
6534 also contains some support for creating programs and shared libraries
6535 that are a mixture of Fortran 77 and other languages (@pxref{Mixing
6536 Fortran 77 With C and C++}).
6538 These issues are covered in the following sections.
6540 @menu
6541 * Preprocessing Fortran 77::    Preprocessing Fortran 77 sources
6542 * Compiling Fortran 77 Files::  Compiling Fortran 77 sources
6543 * Mixing Fortran 77 With C and C++::  Mixing Fortran 77 With C and C++
6544 @end menu
6547 @node Preprocessing Fortran 77
6548 @comment  node-name,  next,  previous,  up
6549 @subsection Preprocessing Fortran 77
6551 @cindex Preprocessing Fortran 77
6552 @cindex Fortran 77, Preprocessing
6553 @cindex Ratfor programs
6555 @file{N.f} is made automatically from @file{N.F} or @file{N.r}.  This
6556 rule runs just the preprocessor to convert a preprocessable Fortran 77
6557 or Ratfor source file into a strict Fortran 77 source file.  The precise
6558 command used is as follows:
6560 @table @file
6562 @item .F
6563 @code{$(F77) -F $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS)@*
6564 $(AM_FFLAGS) $(FFLAGS)}
6566 @item .r
6567 @code{$(F77) -F $(AM_FFLAGS) $(FFLAGS) $(AM_RFLAGS) $(RFLAGS)}
6569 @end table
6572 @node Compiling Fortran 77 Files
6573 @comment  node-name,  next,  previous,  up
6574 @subsection Compiling Fortran 77 Files
6576 @file{N.o} is made automatically from @file{N.f}, @file{N.F} or
6577 @file{N.r} by running the Fortran 77 compiler.  The precise command used
6578 is as follows:
6580 @table @file
6582 @item .f
6583 @code{$(F77) -c $(AM_FFLAGS) $(FFLAGS)}
6585 @item .F
6586 @code{$(F77) -c $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS)@*
6587 $(AM_FFLAGS) $(FFLAGS)}
6589 @item .r
6590 @code{$(F77) -c $(AM_FFLAGS) $(FFLAGS) $(AM_RFLAGS) $(RFLAGS)}
6592 @end table
6595 @node Mixing Fortran 77 With C and C++
6596 @comment  node-name,  next,  previous,  up
6597 @subsection Mixing Fortran 77 With C and C++
6599 @cindex Fortran 77, mixing with C and C++
6600 @cindex Mixing Fortran 77 with C and C++
6601 @cindex Linking Fortran 77 with C and C++
6602 @cindex cfortran
6603 @cindex Mixing Fortran 77 with C and/or C++
6605 Automake currently provides @emph{limited} support for creating programs
6606 and shared libraries that are a mixture of Fortran 77 and C and/or C++.
6607 However, there are many other issues related to mixing Fortran 77 with
6608 other languages that are @emph{not} (currently) handled by Automake, but
6609 that are handled by other packages@footnote{For example,
6610 @uref{http://www-zeus.desy.de/~burow/cfortran/, the cfortran package}
6611 addresses all of these inter-language issues, and runs under nearly all
6612 Fortran 77, C and C++ compilers on nearly all platforms.  However,
6613 @command{cfortran} is not yet Free Software, but it will be in the next
6614 major release.}.
6616 Automake can help in two ways:
6618 @enumerate
6619 @item
6620 Automatic selection of the linker depending on which combinations of
6621 source code.
6623 @item
6624 Automatic selection of the appropriate linker flags (e.g., @option{-L} and
6625 @option{-l}) to pass to the automatically selected linker in order to link
6626 in the appropriate Fortran 77 intrinsic and run-time libraries.
6628 @cindex @code{FLIBS}, defined
6629 @vindex FLIBS
6630 These extra Fortran 77 linker flags are supplied in the output variable
6631 @code{FLIBS} by the @code{AC_F77_LIBRARY_LDFLAGS} Autoconf macro.
6632 @xref{Fortran Compiler, , Fortran Compiler Characteristics, autoconf,
6633 The Autoconf Manual}.
6634 @end enumerate
6636 If Automake detects that a program or shared library (as mentioned in
6637 some @code{_PROGRAMS} or @code{_LTLIBRARIES} primary) contains source
6638 code that is a mixture of Fortran 77 and C and/or C++, then it requires
6639 that the macro @code{AC_F77_LIBRARY_LDFLAGS} be called in
6640 @file{configure.ac}, and that either @code{$(FLIBS)}
6641 appear in the appropriate @code{_LDADD} (for programs) or @code{_LIBADD}
6642 (for shared libraries) variables.  It is the responsibility of the
6643 person writing the @file{Makefile.am} to make sure that @samp{$(FLIBS)}
6644 appears in the appropriate @code{_LDADD} or
6645 @code{_LIBADD} variable.
6647 @cindex Mixed language example
6648 @cindex Example, mixed language
6650 For example, consider the following @file{Makefile.am}:
6652 @example
6653 bin_PROGRAMS = foo
6654 foo_SOURCES  = main.cc foo.f
6655 foo_LDADD    = libfoo.la $(FLIBS)
6657 pkglib_LTLIBRARIES = libfoo.la
6658 libfoo_la_SOURCES  = bar.f baz.c zardoz.cc
6659 libfoo_la_LIBADD   = $(FLIBS)
6660 @end example
6662 In this case, Automake will insist that @code{AC_F77_LIBRARY_LDFLAGS}
6663 is mentioned in @file{configure.ac}.  Also, if @samp{$(FLIBS)} hadn't
6664 been mentioned in @code{foo_LDADD} and @code{libfoo_la_LIBADD}, then
6665 Automake would have issued a warning.
6667 @menu
6668 * How the Linker is Chosen::    Automatic linker selection
6669 @end menu
6671 @node How the Linker is Chosen
6672 @comment  node-name,  next,  previous,  up
6673 @subsubsection How the Linker is Chosen
6675 @cindex Automatic linker selection
6676 @cindex Selecting the linker automatically
6678 When a program or library mixes several languages, Automake choose the
6679 linker according to the following priorities.  (The names in
6680 parentheses are the variables containing the link command.)
6682 @enumerate
6683 @item
6684 @vindex GCJLINK
6685 Native Java (@code{GCJLINK})
6686 @item
6687 @vindex OBJCXXLINK
6688 Objective C++ (@code{OBJCXXLINK})
6689 @item
6690 @vindex CXXLINK
6691 C++ (@code{CXXLINK})
6692 @item
6693 @vindex F77LINK
6694 Fortran 77 (@code{F77LINK})
6695 @item
6696 @vindex FCLINK
6697 Fortran (@code{FCLINK})
6698 @item
6699 @vindex OBJCLINK
6700 Objective C (@code{OBJCLINK})
6701 @item
6702 @vindex UPCLINK
6703 Unified Parallel C (@code{UPCLINK})
6704 @item
6705 @vindex LINK
6706 C (@code{LINK})
6707 @end enumerate
6709 For example, if Fortran 77, C and C++ source code is compiled
6710 into a program, then the C++ linker will be used.  In this case, if the
6711 C or Fortran 77 linkers required any special libraries that weren't
6712 included by the C++ linker, then they must be manually added to an
6713 @code{_LDADD} or @code{_LIBADD} variable by the user writing the
6714 @file{Makefile.am}.
6716 Automake only looks at the file names listed in @file{_SOURCES}
6717 variables to choose the linker, and defaults to the C linker.
6718 Sometimes this is inconvenient because you are linking against a
6719 library written in another language and would like to set the linker
6720 more appropriately.  @xref{Libtool Convenience Libraries}, for a
6721 trick with @code{nodist_EXTRA_@dots{}_SOURCES}.
6723 A per-target @code{_LINK} variable will override the above selection.
6724 Per-target link flags will cause Automake to write a per-target
6725 @code{_LINK} variable according to the language chosen as above.
6728 @node Fortran 9x Support
6729 @comment  node-name,  next,  previous,  up
6730 @section Fortran 9x Support
6732 @cindex Fortran 9x support
6733 @cindex Support for Fortran 9x
6735 Automake includes support for Fortran 9x.
6737 Any package including Fortran 9x code must define the output variable
6738 @code{FC} in @file{configure.ac}; the simplest way to do this is to use
6739 the @code{AC_PROG_FC} macro (@pxref{Particular Programs, , Particular
6740 Program Checks, autoconf, The Autoconf Manual}).
6742 A few additional variables are defined when a Fortran 9x source file is
6743 seen:
6745 @vtable @code
6747 @item FC
6748 The name of the Fortran 9x compiler.
6750 @item FCFLAGS
6751 Any flags to pass to the Fortran 9x compiler.
6753 @item AM_FCFLAGS
6754 The maintainer's variant of @code{FCFLAGS}.
6756 @item FCCOMPILE
6757 The command used to actually compile a Fortran 9x source file.  The file
6758 name is appended to form the complete command line.
6760 @item FCLINK
6761 The command used to actually link a pure Fortran 9x program or shared
6762 library.
6764 @end vtable
6766 @menu
6767 * Compiling Fortran 9x Files::  Compiling Fortran 9x sources
6768 @end menu
6770 @node Compiling Fortran 9x Files
6771 @comment  node-name,  next,  previous,  up
6772 @subsection Compiling Fortran 9x Files
6774 @file{@var{file}.o} is made automatically from @file{@var{file}.f90},
6775 @file{@var{file}.f95}, @file{@var{file}.f03}, or @file{@var{file}.f08}
6776 by running the Fortran 9x compiler.  The precise command used
6777 is as follows:
6779 @table @file
6781 @item .f90
6782 @code{$(FC) $(AM_FCFLAGS) $(FCFLAGS) -c $(FCFLAGS_f90) $<}
6784 @item .f95
6785 @code{$(FC) $(AM_FCFLAGS) $(FCFLAGS) -c $(FCFLAGS_f95) $<}
6787 @item .f03
6788 @code{$(FC) $(AM_FCFLAGS) $(FCFLAGS) -c $(FCFLAGS_f03) $<}
6790 @item .f08
6791 @code{$(FC) $(AM_FCFLAGS) $(FCFLAGS) -c $(FCFLAGS_f08) $<}
6793 @end table
6795 @node Java Support with gcj
6796 @comment  node-name,  next,  previous,  up
6797 @section Compiling Java sources using gcj
6799 @cindex Java support with gcj
6800 @cindex Support for Java with gcj
6801 @cindex Java to native code, compilation
6802 @cindex Compilation of Java to native code
6804 Automake includes support for natively compiled Java, using @command{gcj},
6805 the Java front end to the GNU Compiler Collection (rudimentary support
6806 for compiling Java to bytecode using the @command{javac} compiler is
6807 also present, @emph{albeit deprecated}; @pxref{Java}).
6809 Any package including Java code to be compiled must define the output
6810 variable @code{GCJ} in @file{configure.ac}; the variable @code{GCJFLAGS}
6811 must also be defined somehow (either in @file{configure.ac} or
6812 @file{Makefile.am}).  The simplest way to do this is to use the
6813 @code{AM_PROG_GCJ} macro.
6815 @vindex GCJFLAGS
6817 By default, programs including Java source files are linked with
6818 @command{gcj}.
6820 As always, the contents of @code{AM_GCJFLAGS} are passed to every
6821 compilation invoking @command{gcj} (in its role as an ahead-of-time
6822 compiler, when invoking it to create @file{.class} files,
6823 @code{AM_JAVACFLAGS} is used instead).  If it is necessary to pass
6824 options to @command{gcj} from @file{Makefile.am}, this variable, and not
6825 the user variable @code{GCJFLAGS}, should be used.
6827 @vindex AM_GCJFLAGS
6829 @command{gcj} can be used to compile @file{.java}, @file{.class},
6830 @file{.zip}, or @file{.jar} files.
6832 When linking, @command{gcj} requires that the main class be specified
6833 using the @option{--main=} option.  The easiest way to do this is to use
6834 the @code{_LDFLAGS} variable for the program.
6837 @node Vala Support
6838 @comment  node-name,  next,  previous,  up
6839 @section Vala Support
6841 @cindex Vala Support
6842 @cindex Support for Vala
6844 Automake provides initial support for Vala
6845 (@uref{http://www.vala-project.org/}).
6846 This requires valac version 0.7.0 or later, and currently requires
6847 the user to use GNU @command{make}.
6849 @example
6850 foo_SOURCES = foo.vala bar.vala zardoc.c
6851 @end example
6853 Any @file{.vala} file listed in a @code{_SOURCES} variable will be
6854 compiled into C code by the Vala compiler. The generated @file{.c} files
6855 are distributed. The end user does not need to have a Vala compiler installed.
6857 Automake ships with an Autoconf macro called @code{AM_PROG_VALAC}
6858 that will locate the Vala compiler and optionally check its version
6859 number.
6861 @defmac AM_PROG_VALAC (@ovar{minimum-version}, @ovar{action-if-found},
6862   @ovar{action-if-not-found})
6863 Search for a Vala compiler in @env{PATH}.  If it is found, the variable
6864 @code{VALAC} is set to point to it (see below for more details).  This
6865 macro takes three optional arguments.  The first argument, if present,
6866 is the minimum version of the Vala compiler required to compile this
6867 package.  If a compiler is found and satisfies @var{minimum-version},
6868 then @var{action-if-found} is run (this defaults to do nothing).
6869 Otherwise, @var{action-if-not-found} is run.  If @var{action-if-not-found}
6870 is not specified, the default value is to print a warning in case no
6871 compiler is found, or if a too-old version of the compiler is found.
6872 @end defmac
6874 There are a few variables that are used when compiling Vala sources:
6876 @vtable @code
6877 @item VALAC
6878 Absolute path to the Vala compiler, or simply @samp{valac} if no
6879 suitable compiler Vala could be found at configure runtime.
6881 @item VALAFLAGS
6882 Additional arguments for the Vala compiler.
6884 @item AM_VALAFLAGS
6885 The maintainer's variant of @code{VALAFLAGS}.
6887 @example
6888 lib_LTLIBRARIES = libfoo.la
6889 libfoo_la_SOURCES = foo.vala
6890 @end example
6891 @end vtable
6893 Note that currently, you cannot use per-target @code{*_VALAFLAGS}
6894 (@pxref{Renamed Objects}) to produce different C files from one Vala
6895 source file.
6898 @node Support for Other Languages
6899 @comment  node-name,  next,  previous,  up
6900 @section Support for Other Languages
6902 Automake currently only includes full support for C, C++ (@pxref{C++
6903 Support}), Objective C (@pxref{Objective C Support}),
6904 Objective C++ (@pxref{Objective C++ Support}),
6905 Fortran 77
6906 (@pxref{Fortran 77 Support}), Fortran 9x (@pxref{Fortran 9x Support}),
6907 and Java (@pxref{Java Support with gcj}).  There is only rudimentary
6908 support for other languages, support for which will be improved based
6909 on user demand.
6911 Some limited support for adding your own languages is available via the
6912 suffix rule handling (@pxref{Suffixes}).
6914 @node Dependencies
6915 @section Automatic dependency tracking
6917 As a developer it is often painful to continually update the
6918 @file{Makefile.am} whenever the include-file dependencies change in a
6919 project.  Automake supplies a way to automatically track dependency
6920 changes (@pxref{Dependency Tracking}).
6922 @cindex Dependency tracking
6923 @cindex Automatic dependency tracking
6925 Automake always uses complete dependencies for a compilation,
6926 including system headers.  Automake's model is that dependency
6927 computation should be a side effect of the build.  To this end,
6928 dependencies are computed by running all compilations through a
6929 special wrapper program called @command{depcomp}.  @command{depcomp}
6930 understands how to coax many different C and C++ compilers into
6931 generating dependency information in the format it requires.
6932 @samp{automake -a} will install @command{depcomp} into your source
6933 tree for you.  If @command{depcomp} can't figure out how to properly
6934 invoke your compiler, dependency tracking will simply be disabled for
6935 your build.
6937 @cindex @command{depcomp}
6939 Experience with earlier versions of Automake (@pxref{Dependency Tracking
6940 Evolution, , Dependency Tracking Evolution, automake-history, Brief History
6941 of Automake}) taught us that it is not reliable to generate dependencies
6942 only on the maintainer's system, as configurations vary too much.  So
6943 instead Automake implements dependency tracking at build time.
6945 Automatic dependency tracking can be suppressed by putting
6946 @option{no-dependencies} in the variable @code{AUTOMAKE_OPTIONS}, or
6947 passing @option{no-dependencies} as an argument to @code{AM_INIT_AUTOMAKE}
6948 (this should be the preferred way).  Or, you can invoke @command{automake}
6949 with the @option{-i} option.  Dependency tracking is enabled by default.
6951 @vindex AUTOMAKE_OPTIONS
6952 @opindex no-dependencies
6954 The person building your package also can choose to disable dependency
6955 tracking by configuring with @option{--disable-dependency-tracking}.
6957 @cindex Disabling dependency tracking
6958 @cindex Dependency tracking, disabling
6961 @node EXEEXT
6962 @section Support for executable extensions
6964 @cindex Executable extension
6965 @cindex Extension, executable
6966 @cindex Windows
6968 On some platforms, such as Windows, executables are expected to have an
6969 extension such as @file{.exe}.  On these platforms, some compilers (GCC
6970 among them) will automatically generate @file{foo.exe} when asked to
6971 generate @file{foo}.
6973 Automake provides mostly-transparent support for this.  Unfortunately
6974 @emph{mostly} doesn't yet mean @emph{fully}.  Until the English
6975 dictionary is revised, you will have to assist Automake if your package
6976 must support those platforms.
6978 One thing you must be aware of is that, internally, Automake rewrites
6979 something like this:
6981 @example
6982 bin_PROGRAMS = liver
6983 @end example
6985 to this:
6987 @example
6988 bin_PROGRAMS = liver$(EXEEXT)
6989 @end example
6991 The targets Automake generates are likewise given the @samp{$(EXEEXT)}
6992 extension.
6994 The variables @code{TESTS} and @code{XFAIL_TESTS} (@pxref{Simple Tests})
6995 are also rewritten if they contain filenames that have been declared as
6996 programs in the same @file{Makefile}.  (This is mostly useful when some
6997 programs from @code{check_PROGRAMS} are listed in @code{TESTS}.)
6999 However, Automake cannot apply this rewriting to @command{configure}
7000 substitutions.  This means that if you are conditionally building a
7001 program using such a substitution, then your @file{configure.ac} must
7002 take care to add @samp{$(EXEEXT)} when constructing the output variable.
7004 Sometimes maintainers like to write an explicit link rule for their
7005 program.  Without executable extension support, this is easy---you
7006 simply write a rule whose target is the name of the program.  However,
7007 when executable extension support is enabled, you must instead add the
7008 @samp{$(EXEEXT)} suffix.
7010 This might be a nuisance for maintainers who know their package will
7011 never run on a platform that has
7012 executable extensions.  For those maintainers, the @option{no-exeext}
7013 option (@pxref{Options}) will disable this feature.  This works in a
7014 fairly ugly way; if @option{no-exeext} is seen, then the presence of a
7015 rule for a target named @code{foo} in @file{Makefile.am} will override
7016 an @command{automake}-generated rule for @samp{foo$(EXEEXT)}.  Without
7017 the @option{no-exeext} option, this use will give a diagnostic.
7020 @node Other Objects
7021 @chapter Other Derived Objects
7023 Automake can handle derived objects that are not C programs.  Sometimes
7024 the support for actually building such objects must be explicitly
7025 supplied, but Automake will still automatically handle installation and
7026 distribution.
7028 @menu
7029 * Scripts::                     Executable scripts
7030 * Headers::                     Header files
7031 * Data::                        Architecture-independent data files
7032 * Sources::                     Derived sources
7033 @end menu
7036 @node Scripts
7037 @section Executable Scripts
7039 @cindex @code{_SCRIPTS} primary, defined
7040 @cindex @code{SCRIPTS} primary, defined
7041 @cindex Primary variable, @code{SCRIPTS}
7042 @vindex _SCRIPTS
7043 @cindex Installing scripts
7045 It is possible to define and install programs that are scripts.  Such
7046 programs are listed using the @code{SCRIPTS} primary name.  When the
7047 script is distributed in its final, installable form, the
7048 @file{Makefile} usually looks as follows:
7049 @vindex SCRIPTS
7051 @example
7052 # Install my_script in $(bindir) and distribute it.
7053 dist_bin_SCRIPTS = my_script
7054 @end example
7056 Scripts are not distributed by default; as we have just seen, those
7057 that should be distributed can be specified using a @code{dist_}
7058 prefix as with other primaries.
7060 @cindex @code{SCRIPTS}, installation directories
7061 @vindex bin_SCRIPTS
7062 @vindex sbin_SCRIPTS
7063 @vindex libexec_SCRIPTS
7064 @vindex pkgdata_SCRIPTS
7065 @vindex pkglibexec_SCRIPTS
7066 @vindex noinst_SCRIPTS
7067 @vindex check_SCRIPTS
7069 Scripts can be installed in @code{bindir}, @code{sbindir},
7070 @code{libexecdir}, @code{pkglibexecdir}, or @code{pkgdatadir}.
7072 Scripts that need not be installed can be listed in
7073 @code{noinst_SCRIPTS}, and among them, those which are needed only by
7074 @samp{make check} should go in @code{check_SCRIPTS}.
7076 When a script needs to be built, the @file{Makefile.am} should include
7077 the appropriate rules.  For instance the @command{automake} program
7078 itself is a Perl script that is generated from @file{automake.in}.
7079 Here is how this is handled:
7081 @example
7082 bin_SCRIPTS = automake
7083 CLEANFILES = $(bin_SCRIPTS)
7084 EXTRA_DIST = automake.in
7086 do_subst = sed -e 's,[@@]datadir[@@],$(datadir),g' \
7087             -e 's,[@@]PERL[@@],$(PERL),g' \
7088             -e 's,[@@]PACKAGE[@@],$(PACKAGE),g' \
7089             -e 's,[@@]VERSION[@@],$(VERSION),g' \
7090             @dots{}
7092 automake: automake.in Makefile
7093         $(do_subst) < $(srcdir)/automake.in > automake
7094         chmod +x automake
7095 @end example
7097 Such scripts for which a build rule has been supplied need to be
7098 deleted explicitly using @code{CLEANFILES} (@pxref{Clean}), and their
7099 sources have to be distributed, usually with @code{EXTRA_DIST}
7100 (@pxref{Basics of Distribution}).
7102 Another common way to build scripts is to process them from
7103 @file{configure} with @code{AC_CONFIG_FILES}.  In this situation
7104 Automake knows which files should be cleaned and distributed, and what
7105 the rebuild rules should look like.
7107 For instance if @file{configure.ac} contains
7109 @example
7110 AC_CONFIG_FILES([src/my_script], [chmod +x src/my_script])
7111 @end example
7113 @noindent
7114 to build @file{src/my_script} from @file{src/my_script.in}, then a
7115 @file{src/Makefile.am} to install this script in @code{$(bindir)} can
7116 be as simple as
7118 @example
7119 bin_SCRIPTS = my_script
7120 CLEANFILES = $(bin_SCRIPTS)
7121 @end example
7123 @noindent
7124 There is no need for @code{EXTRA_DIST} or any build rule: Automake
7125 infers them from @code{AC_CONFIG_FILES} (@pxref{Requirements}).
7126 @code{CLEANFILES} is still useful, because by default Automake will
7127 clean targets of @code{AC_CONFIG_FILES} in @code{distclean}, not
7128 @code{clean}.
7130 Although this looks simpler, building scripts this way has one
7131 drawback: directory variables such as @code{$(datadir)} are not fully
7132 expanded and may refer to other directory variables.
7134 @node Headers
7135 @section Header files
7137 @cindex @code{_HEADERS} primary, defined
7138 @cindex @code{HEADERS} primary, defined
7139 @cindex Primary variable, @code{HEADERS}
7140 @vindex _HEADERS
7141 @vindex noinst_HEADERS
7142 @cindex @code{HEADERS}, installation directories
7143 @cindex Installing headers
7144 @vindex include_HEADERS
7145 @vindex oldinclude_HEADERS
7146 @vindex pkginclude_HEADERS
7149 Header files that must be installed are specified by the
7150 @code{HEADERS} family of variables.  Headers can be installed in
7151 @code{includedir}, @code{oldincludedir}, @code{pkgincludedir} or any
7152 other directory you may have defined (@pxref{Uniform}).  For instance,
7154 @example
7155 include_HEADERS = foo.h bar/bar.h
7156 @end example
7158 @noindent
7159 will install the two files as @file{$(includedir)/foo.h} and
7160 @file{$(includedir)/bar.h}.
7162 The @code{nobase_} prefix is also supported,
7164 @example
7165 nobase_include_HEADERS = foo.h bar/bar.h
7166 @end example
7168 @noindent
7169 will install the two files as @file{$(includedir)/foo.h} and
7170 @file{$(includedir)/bar/bar.h} (@pxref{Alternative}).
7172 @vindex noinst_HEADERS
7173 Usually, only header files that accompany installed libraries need to
7174 be installed.  Headers used by programs or convenience libraries are
7175 not installed.  The @code{noinst_HEADERS} variable can be used for
7176 such headers.  However when the header actually belongs to a single
7177 convenience library or program, we recommend listing it in the
7178 program's or library's @code{_SOURCES} variable (@pxref{Program
7179 Sources}) instead of in @code{noinst_HEADERS}.  This is clearer for
7180 the @file{Makefile.am} reader.  @code{noinst_HEADERS} would be the
7181 right variable to use in a directory containing only headers and no
7182 associated library or program.
7184 All header files must be listed somewhere; in a @code{_SOURCES}
7185 variable or in a @code{_HEADERS} variable.  Missing ones will not
7186 appear in the distribution.
7188 For header files that are built and must not be distributed, use the
7189 @code{nodist_} prefix as in @code{nodist_include_HEADERS} or
7190 @code{nodist_prog_SOURCES}.  If these generated headers are needed
7191 during the build, you must also ensure they exist before they are
7192 used (@pxref{Sources}).
7195 @node Data
7196 @section Architecture-independent data files
7198 @cindex @code{_DATA} primary, defined
7199 @cindex @code{DATA} primary, defined
7200 @cindex Primary variable, @code{DATA}
7201 @vindex _DATA
7203 Automake supports the installation of miscellaneous data files using the
7204 @code{DATA} family of variables.
7205 @vindex DATA
7207 @vindex data_DATA
7208 @vindex sysconf_DATA
7209 @vindex sharedstate_DATA
7210 @vindex localstate_DATA
7211 @vindex pkgdata_DATA
7213 Such data can be installed in the directories @code{datadir},
7214 @code{sysconfdir}, @code{sharedstatedir}, @code{localstatedir}, or
7215 @code{pkgdatadir}.
7217 By default, data files are @emph{not} included in a distribution.  Of
7218 course, you can use the @code{dist_} prefix to change this on a
7219 per-variable basis.
7221 Here is how Automake declares its auxiliary data files:
7223 @example
7224 dist_pkgdata_DATA = clean-kr.am clean.am @dots{}
7225 @end example
7228 @node Sources
7229 @section Built Sources
7231 Because Automake's automatic dependency tracking works as a side-effect
7232 of compilation (@pxref{Dependencies}) there is a bootstrap issue: a
7233 target should not be compiled before its dependencies are made, but
7234 these dependencies are unknown until the target is first compiled.
7236 Ordinarily this is not a problem, because dependencies are distributed
7237 sources: they preexist and do not need to be built.  Suppose that
7238 @file{foo.c} includes @file{foo.h}.  When it first compiles
7239 @file{foo.o}, @command{make} only knows that @file{foo.o} depends on
7240 @file{foo.c}.  As a side-effect of this compilation @command{depcomp}
7241 records the @file{foo.h} dependency so that following invocations of
7242 @command{make} will honor it.  In these conditions, it's clear there is
7243 no problem: either @file{foo.o} doesn't exist and has to be built
7244 (regardless of the dependencies), or accurate dependencies exist and
7245 they can be used to decide whether @file{foo.o} should be rebuilt.
7247 It's a different story if @file{foo.h} doesn't exist by the first
7248 @command{make} run.  For instance, there might be a rule to build
7249 @file{foo.h}.  This time @file{file.o}'s build will fail because the
7250 compiler can't find @file{foo.h}.  @command{make} failed to trigger the
7251 rule to build @file{foo.h} first by lack of dependency information.
7253 @vindex BUILT_SOURCES
7254 @cindex @code{BUILT_SOURCES}, defined
7256 The @code{BUILT_SOURCES} variable is a workaround for this problem.  A
7257 source file listed in @code{BUILT_SOURCES} is made on @samp{make all}
7258 or @samp{make check} (or even @samp{make install}) before other
7259 targets are processed.  However, such a source file is not
7260 @emph{compiled} unless explicitly requested by mentioning it in some
7261 other @code{_SOURCES} variable.
7263 So, to conclude our introductory example, we could use
7264 @samp{BUILT_SOURCES = foo.h} to ensure @file{foo.h} gets built before
7265 any other target (including @file{foo.o}) during @samp{make all} or
7266 @samp{make check}.
7268 @code{BUILT_SOURCES} is actually a bit of a misnomer, as any file which
7269 must be created early in the build process can be listed in this
7270 variable.  Moreover, all built sources do not necessarily have to be
7271 listed in @code{BUILT_SOURCES}.  For instance, a generated @file{.c} file
7272 doesn't need to appear in @code{BUILT_SOURCES} (unless it is included by
7273 another source), because it's a known dependency of the associated
7274 object.
7276 It might be important to emphasize that @code{BUILT_SOURCES} is
7277 honored only by @samp{make all}, @samp{make check} and @samp{make
7278 install}.  This means you cannot build a specific target (e.g.,
7279 @samp{make foo}) in a clean tree if it depends on a built source.
7280 However it will succeed if you have run @samp{make all} earlier,
7281 because accurate dependencies are already available.
7283 The next section illustrates and discusses the handling of built sources
7284 on a toy example.
7286 @menu
7287 * Built Sources Example::       Several ways to handle built sources.
7288 @end menu
7290 @node Built Sources Example
7291 @subsection Built Sources Example
7293 Suppose that @file{foo.c} includes @file{bindir.h}, which is
7294 installation-dependent and not distributed: it needs to be built.  Here
7295 @file{bindir.h} defines the preprocessor macro @code{bindir} to the
7296 value of the @command{make} variable @code{bindir} (inherited from
7297 @file{configure}).
7299 We suggest several implementations below.  It's not meant to be an
7300 exhaustive listing of all ways to handle built sources, but it will give
7301 you a few ideas if you encounter this issue.
7303 @subsubheading First Try
7305 This first implementation will illustrate the bootstrap issue mentioned
7306 in the previous section (@pxref{Sources}).
7308 Here is a tentative @file{Makefile.am}.
7310 @example
7311 # This won't work.
7312 bin_PROGRAMS = foo
7313 foo_SOURCES = foo.c
7314 nodist_foo_SOURCES = bindir.h
7315 CLEANFILES = bindir.h
7316 bindir.h: Makefile
7317         echo '#define bindir "$(bindir)"' >$@@
7318 @end example
7320 This setup doesn't work, because Automake doesn't know that @file{foo.c}
7321 includes @file{bindir.h}.  Remember, automatic dependency tracking works
7322 as a side-effect of compilation, so the dependencies of @file{foo.o} will
7323 be known only after @file{foo.o} has been compiled (@pxref{Dependencies}).
7324 The symptom is as follows.
7326 @example
7327 % make
7328 source='foo.c' object='foo.o' libtool=no \
7329 depfile='.deps/foo.Po' tmpdepfile='.deps/foo.TPo' \
7330 depmode=gcc /bin/sh ./depcomp \
7331 gcc -I. -I. -g -O2 -c `test -f 'foo.c' || echo './'`foo.c
7332 foo.c:2: bindir.h: No such file or directory
7333 make: *** [foo.o] Error 1
7334 @end example
7336 In this example @file{bindir.h} is not distributed nor installed, and
7337 it is not even being built on-time.  One may wonder if the
7338 @samp{nodist_foo_SOURCES = bindir.h} line has any use at all.  This
7339 line simply states that @file{bindir.h} is a source of @code{foo}, so
7340 for instance, it should be inspected while generating tags
7341 (@pxref{Tags}).  In other words, it does not help our present problem,
7342 and the build would fail identically without it.
7344 @subsubheading Using @code{BUILT_SOURCES}
7346 A solution is to require @file{bindir.h} to be built before anything
7347 else.  This is what @code{BUILT_SOURCES} is meant for (@pxref{Sources}).
7349 @example
7350 bin_PROGRAMS = foo
7351 foo_SOURCES = foo.c
7352 nodist_foo_SOURCES = bindir.h
7353 BUILT_SOURCES = bindir.h
7354 CLEANFILES = bindir.h
7355 bindir.h: Makefile
7356         echo '#define bindir "$(bindir)"' >$@@
7357 @end example
7359 See how @file{bindir.h} gets built first:
7361 @example
7362 % make
7363 echo '#define bindir "/usr/local/bin"' >bindir.h
7364 make  all-am
7365 make[1]: Entering directory `/home/adl/tmp'
7366 source='foo.c' object='foo.o' libtool=no \
7367 depfile='.deps/foo.Po' tmpdepfile='.deps/foo.TPo' \
7368 depmode=gcc /bin/sh ./depcomp \
7369 gcc -I. -I. -g -O2 -c `test -f 'foo.c' || echo './'`foo.c
7370 gcc  -g -O2   -o foo  foo.o
7371 make[1]: Leaving directory `/home/adl/tmp'
7372 @end example
7374 However, as said earlier, @code{BUILT_SOURCES} applies only to the
7375 @code{all}, @code{check}, and @code{install} targets.  It still fails
7376 if you try to run @samp{make foo} explicitly:
7378 @example
7379 % make clean
7380 test -z "bindir.h" || rm -f bindir.h
7381 test -z "foo" || rm -f foo
7382 rm -f *.o
7383 % : > .deps/foo.Po # Suppress previously recorded dependencies
7384 % make foo
7385 source='foo.c' object='foo.o' libtool=no \
7386 depfile='.deps/foo.Po' tmpdepfile='.deps/foo.TPo' \
7387 depmode=gcc /bin/sh ./depcomp \
7388 gcc -I. -I. -g -O2 -c `test -f 'foo.c' || echo './'`foo.c
7389 foo.c:2: bindir.h: No such file or directory
7390 make: *** [foo.o] Error 1
7391 @end example
7393 @subsubheading Recording Dependencies manually
7395 Usually people are happy enough with @code{BUILT_SOURCES} because they
7396 never build targets such as @samp{make foo} before @samp{make all}, as
7397 in the previous example.  However if this matters to you, you can
7398 avoid @code{BUILT_SOURCES} and record such dependencies explicitly in
7399 the @file{Makefile.am}.
7401 @example
7402 bin_PROGRAMS = foo
7403 foo_SOURCES = foo.c
7404 nodist_foo_SOURCES = bindir.h
7405 foo.$(OBJEXT): bindir.h
7406 CLEANFILES = bindir.h
7407 bindir.h: Makefile
7408         echo '#define bindir "$(bindir)"' >$@@
7409 @end example
7411 You don't have to list @emph{all} the dependencies of @file{foo.o}
7412 explicitly, only those that might need to be built.  If a dependency
7413 already exists, it will not hinder the first compilation and will be
7414 recorded by the normal dependency tracking code.  (Note that after
7415 this first compilation the dependency tracking code will also have
7416 recorded the dependency between @file{foo.o} and
7417 @file{bindir.h}; so our explicit dependency is really useful to
7418 the first build only.)
7420 Adding explicit dependencies like this can be a bit dangerous if you are
7421 not careful enough.  This is due to the way Automake tries not to
7422 overwrite your rules (it assumes you know better than it).
7423 @samp{foo.$(OBJEXT): bindir.h} supersedes any rule Automake may want to
7424 output to build @samp{foo.$(OBJEXT)}.  It happens to work in this case
7425 because Automake doesn't have to output any @samp{foo.$(OBJEXT):}
7426 target: it relies on a suffix rule instead (i.e., @samp{.c.$(OBJEXT):}).
7427 Always check the generated @file{Makefile.in} if you do this.
7429 @subsubheading Build @file{bindir.h} from @file{configure}
7431 It's possible to define this preprocessor macro from @file{configure},
7432 either in @file{config.h} (@pxref{Defining Directories, , Defining
7433 Directories, autoconf, The Autoconf Manual}), or by processing a
7434 @file{bindir.h.in} file using @code{AC_CONFIG_FILES}
7435 (@pxref{Configuration Actions, ,Configuration Actions, autoconf, The
7436 Autoconf Manual}).
7438 At this point it should be clear that building @file{bindir.h} from
7439 @file{configure} works well for this example.  @file{bindir.h} will exist
7440 before you build any target, hence will not cause any dependency issue.
7442 The Makefile can be shrunk as follows.  We do not even have to mention
7443 @file{bindir.h}.
7445 @example
7446 bin_PROGRAMS = foo
7447 foo_SOURCES = foo.c
7448 @end example
7450 However, it's not always possible to build sources from
7451 @file{configure}, especially when these sources are generated by a tool
7452 that needs to be built first.
7454 @subsubheading Build @file{bindir.c}, not @file{bindir.h}.
7456 Another attractive idea is to define @code{bindir} as a variable or
7457 function exported from @file{bindir.o}, and build @file{bindir.c}
7458 instead of @file{bindir.h}.
7460 @example
7461 noinst_PROGRAMS = foo
7462 foo_SOURCES = foo.c bindir.h
7463 nodist_foo_SOURCES = bindir.c
7464 CLEANFILES = bindir.c
7465 bindir.c: Makefile
7466         echo 'const char bindir[] = "$(bindir)";' >$@@
7467 @end example
7469 @file{bindir.h} contains just the variable's declaration and doesn't
7470 need to be built, so it won't cause any trouble.  @file{bindir.o} is
7471 always dependent on @file{bindir.c}, so @file{bindir.c} will get built
7472 first.
7474 @subsubheading Which is best?
7476 There is no panacea, of course.  Each solution has its merits and
7477 drawbacks.
7479 You cannot use @code{BUILT_SOURCES} if the ability to run @samp{make
7480 foo} on a clean tree is important to you.
7482 You won't add explicit dependencies if you are leery of overriding
7483 an Automake rule by mistake.
7485 Building files from @file{./configure} is not always possible, neither
7486 is converting @file{.h} files into @file{.c} files.
7489 @node Other GNU Tools
7490 @chapter Other GNU Tools
7492 Since Automake is primarily intended to generate @file{Makefile.in}s for
7493 use in GNU programs, it tries hard to interoperate with other GNU tools.
7495 @menu
7496 * Emacs Lisp::                  Emacs Lisp
7497 * gettext::                     Gettext
7498 * Libtool::                     Libtool
7499 * Java::                        Java bytecode compilation (deprecated)
7500 * Python::                      Python
7501 @end menu
7504 @node Emacs Lisp
7505 @section Emacs Lisp
7507 @cindex @code{_LISP} primary, defined
7508 @cindex @code{LISP} primary, defined
7509 @cindex Primary variable, @code{LISP}
7511 @vindex _LISP
7512 @vindex lisp_LISP
7513 @vindex noinst_LISP
7515 Automake provides some support for Emacs Lisp.  The @code{LISP} primary
7516 is used to hold a list of @file{.el} files.  Possible prefixes for this
7517 primary are @code{lisp_} and @code{noinst_}.  Note that if
7518 @code{lisp_LISP} is defined, then @file{configure.ac} must run
7519 @code{AM_PATH_LISPDIR} (@pxref{Macros}).
7521 @vindex dist_lisp_LISP
7522 @vindex dist_noinst_LISP
7523 Lisp sources are not distributed by default.  You can prefix the
7524 @code{LISP} primary with @code{dist_}, as in @code{dist_lisp_LISP} or
7525 @code{dist_noinst_LISP}, to indicate that these files should be
7526 distributed.
7528 Automake will byte-compile all Emacs Lisp source files using the Emacs
7529 found by @code{AM_PATH_LISPDIR}, if any was found.  When performing such
7530 byte-compilation, the flags specified in the (developer-reserved)
7531 @code{AM_ELCFLAGS} and (user-reserved) @code{ELCFLAGS} make variables
7532 will be passed to the Emacs invocation.
7534 Byte-compiled Emacs Lisp files are not portable among all versions of
7535 Emacs, so it makes sense to turn this off if you expect sites to have
7536 more than one version of Emacs installed.  Furthermore, many packages
7537 don't actually benefit from byte-compilation.  Still, we recommend
7538 that you byte-compile your Emacs Lisp sources.  It is probably better
7539 for sites with strange setups to cope for themselves than to make the
7540 installation less nice for everybody else.
7542 There are two ways to avoid byte-compiling.  Historically, we have
7543 recommended the following construct.
7545 @example
7546 lisp_LISP = file1.el file2.el
7547 ELCFILES =
7548 @end example
7550 @noindent
7551 @code{ELCFILES} is an internal Automake variable that normally lists
7552 all @file{.elc} files that must be byte-compiled.  Automake defines
7553 @code{ELCFILES} automatically from @code{lisp_LISP}.  Emptying this
7554 variable explicitly prevents byte-compilation.
7556 Since Automake 1.8, we now recommend using @code{lisp_DATA} instead:
7558 @c Keep in sync with primary-prefix-couples-documented-valid.sh
7559 @example
7560 lisp_DATA = file1.el file2.el
7561 @end example
7563 Note that these two constructs are not equivalent.  @code{_LISP} will
7564 not install a file if Emacs is not installed, while @code{_DATA} will
7565 always install its files.
7567 @node gettext
7568 @section Gettext
7570 @cindex GNU Gettext support
7571 @cindex Gettext support
7572 @cindex Support for GNU Gettext
7574 If @code{AM_GNU_GETTEXT} is seen in @file{configure.ac}, then Automake
7575 turns on support for GNU gettext, a message catalog system for
7576 internationalization
7577 (@pxref{Top, , Introduction, gettext, GNU gettext utilities}).
7579 The @code{gettext} support in Automake requires the addition of one or
7580 two subdirectories to the package: @file{po} and possibly also @file{intl}.
7581 The latter is needed if @code{AM_GNU_GETTEXT} is not invoked with the
7582 @samp{external} argument, or if @code{AM_GNU_GETTEXT_INTL_SUBDIR} is used.
7583 Automake ensures that these directories exist and are mentioned in
7584 @code{SUBDIRS}.
7586 @node Libtool
7587 @section Libtool
7589 Automake provides support for GNU Libtool (@pxref{Top, , Introduction,
7590 libtool, The Libtool Manual}) with the @code{LTLIBRARIES} primary.
7591 @xref{A Shared Library}.
7594 @node Java
7595 @section Java bytecode compilation (deprecated)
7597 @cindex @code{_JAVA} primary, defined
7598 @cindex @code{JAVA} primary, defined
7599 @cindex Primary variable, @code{JAVA}
7600 @cindex Java to bytecode, compilation
7601 @cindex Compilation of Java to bytecode
7603 Automake provides some minimal support for Java bytecode compilation with
7604 the @code{JAVA} primary (in addition to the support for compiling Java to
7605 native machine code; @pxref{Java Support with gcj}).  Note however that
7606 @emph{the interface and most features described here are deprecated}.
7607 Future Automake releases will strive to provide a better and cleaner
7608 interface, which however @emph{won't be backward-compatible}; the present
7609 interface will probably be removed altogether some time after the
7610 introduction of the new interface (if that ever materializes).  In any
7611 case, the current @code{JAVA} primary features are frozen and will no
7612 longer be developed, not even to take bug fixes.
7614 Any @file{.java} files listed in a @code{_JAVA} variable will be
7615 compiled with @code{JAVAC} at build time.  By default, @file{.java}
7616 files are not included in the distribution, you should use the
7617 @code{dist_} prefix to distribute them.
7619 Here is a typical setup for distributing @file{.java} files and
7620 installing the @file{.class} files resulting from their compilation.
7622 @c Keep in sync with primary-prefix-couples-documented-valid.sh
7623 @example
7624 javadir = $(datadir)/java
7625 dist_java_JAVA = a.java b.java @dots{}
7626 @end example
7628 @cindex @code{JAVA} restrictions
7629 @cindex Restrictions for @code{JAVA}
7631 Currently Automake enforces the restriction that only one @code{_JAVA}
7632 primary can be used in a given @file{Makefile.am}.  The reason for this
7633 restriction is that, in general, it isn't possible to know which
7634 @file{.class} files were generated from which @file{.java} files, so
7635 it would be impossible to know which files to install where.  For
7636 instance, a @file{.java} file can define multiple classes; the resulting
7637 @file{.class} file names cannot be predicted without parsing the
7638 @file{.java} file.
7640 There are a few variables that are used when compiling Java sources:
7642 @vtable @code
7643 @item JAVAC
7644 The name of the Java compiler.  This defaults to @samp{javac}.
7646 @item JAVACFLAGS
7647 The flags to pass to the compiler.  This is considered to be a user
7648 variable (@pxref{User Variables}).
7650 @item AM_JAVACFLAGS
7651 More flags to pass to the Java compiler.  This, and not
7652 @code{JAVACFLAGS}, should be used when it is necessary to put Java
7653 compiler flags into @file{Makefile.am}.
7655 @item JAVAROOT
7656 The value of this variable is passed to the @option{-d} option to
7657 @code{javac}.  It defaults to @samp{$(top_builddir)}.
7659 @item CLASSPATH_ENV
7660 This variable is a shell expression that is used to set the
7661 @env{CLASSPATH} environment variable on the @code{javac} command line.
7662 (In the future we will probably handle class path setting differently.)
7663 @end vtable
7666 @node Python
7667 @section Python
7669 @cindex @code{_PYTHON} primary, defined
7670 @cindex @code{PYTHON} primary, defined
7671 @cindex Primary variable, @code{PYTHON}
7672 @vindex _PYTHON
7674 Automake provides support for Python compilation with the
7675 @code{PYTHON} primary.  A typical setup is to call
7676 @code{AM_PATH_PYTHON} in @file{configure.ac} and use a line like the
7677 following in @file{Makefile.am}:
7679 @example
7680 python_PYTHON = tree.py leave.py
7681 @end example
7683 Any files listed in a @code{_PYTHON} variable will be byte-compiled
7684 with @command{py-compile} at install time.  @command{py-compile}
7685 actually creates both standard (@file{.pyc}) and optimized
7686 (@file{.pyo}) byte-compiled versions of the source files.  Note that
7687 because byte-compilation occurs at install time, any files listed in
7688 @code{noinst_PYTHON} will not be compiled.  Python source files are
7689 included in the distribution by default, prepend @code{nodist_} (as in
7690 @code{nodist_python_PYTHON}) to omit them.
7692 Automake ships with an Autoconf macro called @code{AM_PATH_PYTHON}
7693 that will determine some Python-related directory variables (see
7694 below).  If you have called @code{AM_PATH_PYTHON} from
7695 @file{configure.ac}, then you may use the variables
7696 @c Keep in sync with primary-prefix-couples-documented-valid.sh
7697 @code{python_PYTHON} or @code{pkgpython_PYTHON} to list Python source
7698 files in your @file{Makefile.am}, depending on where you want your files
7699 installed (see the definitions of @code{pythondir} and
7700 @code{pkgpythondir} below).
7702 @defmac AM_PATH_PYTHON (@ovar{version}, @ovar{action-if-found},
7703   @ovar{action-if-not-found})
7705 Search for a Python interpreter on the system.  This macro takes three
7706 optional arguments.  The first argument, if present, is the minimum
7707 version of Python required for this package: @code{AM_PATH_PYTHON}
7708 will skip any Python interpreter that is older than @var{version}.
7709 If an interpreter is found and satisfies @var{version}, then
7710 @var{action-if-found} is run.  Otherwise, @var{action-if-not-found} is
7711 run.
7713 If @var{action-if-not-found} is not specified, as in the following
7714 example, the default is to abort @command{configure}.
7716 @example
7717 AM_PATH_PYTHON([2.2])
7718 @end example
7720 @noindent
7721 This is fine when Python is an absolute requirement for the package.
7722 If Python >= 2.5 was only @emph{optional} to the package,
7723 @code{AM_PATH_PYTHON} could be called as follows.
7725 @example
7726 AM_PATH_PYTHON([2.5],, [:])
7727 @end example
7729 If the @env{PYTHON} variable is set when @code{AM_PATH_PYTHON} is
7730 called, then that will be the only Python interpreter that is tried.
7732 @code{AM_PATH_PYTHON} creates the following output variables based on
7733 the Python installation found during configuration.
7734 @end defmac
7736 @vtable @code
7737 @item PYTHON
7738 The name of the Python executable, or @samp{:} if no suitable
7739 interpreter could be found.
7741 Assuming @var{action-if-not-found} is used (otherwise @file{./configure}
7742 will abort if Python is absent), the value of @code{PYTHON} can be used
7743 to setup a conditional in order to disable the relevant part of a build
7744 as follows.
7746 @example
7747 AM_PATH_PYTHON(,, [:])
7748 AM_CONDITIONAL([HAVE_PYTHON], [test "$PYTHON" != :])
7749 @end example
7751 @item PYTHON_VERSION
7752 The Python version number, in the form @var{major}.@var{minor}
7753 (e.g., @samp{2.5}).  This is currently the value of
7754 @samp{sys.version[:3]}.
7756 @item PYTHON_PREFIX
7757 The string @samp{$@{prefix@}}.  This term may be used in future work
7758 that needs the contents of Python's @samp{sys.prefix}, but general
7759 consensus is to always use the value from @command{configure}.
7761 @item PYTHON_EXEC_PREFIX
7762 The string @samp{$@{exec_prefix@}}.  This term may be used in future work
7763 that needs the contents of Python's @samp{sys.exec_prefix}, but general
7764 consensus is to always use the value from @command{configure}.
7766 @item PYTHON_PLATFORM
7767 The canonical name used by Python to describe the operating system, as
7768 given by @samp{sys.platform}.  This value is sometimes needed when
7769 building Python extensions.
7771 @item pythondir
7772 The directory name for the @file{site-packages} subdirectory of the
7773 standard Python install tree.
7775 @item pkgpythondir
7776 This is the directory under @code{pythondir} that is named after the
7777 package.  That is, it is @samp{$(pythondir)/$(PACKAGE)}.  It is provided
7778 as a convenience.
7780 @item pyexecdir
7781 This is the directory where Python extension modules (shared libraries)
7782 should be installed.  An extension module written in C could be declared
7783 as follows to Automake:
7785 @c Keep in sync with primary-prefix-couples-documented-valid.sh
7786 @example
7787 pyexec_LTLIBRARIES = quaternion.la
7788 quaternion_la_SOURCES = quaternion.c support.c support.h
7789 quaternion_la_LDFLAGS = -avoid-version -module
7790 @end example
7792 @item pkgpyexecdir
7793 This is a convenience variable that is defined as
7794 @samp{$(pyexecdir)/$(PACKAGE)}.
7795 @end vtable
7797 All of these directory variables have values that start with either
7798 @samp{$@{prefix@}} or @samp{$@{exec_prefix@}} unexpanded.  This works
7799 fine in @file{Makefiles}, but it makes these variables hard to use in
7800 @file{configure}.  This is mandated by the GNU coding standards, so
7801 that the user can run @samp{make prefix=/foo install}.  The Autoconf
7802 manual has a section with more details on this topic
7803 (@pxref{Installation Directory Variables, , Installation Directory
7804 Variables, autoconf, The Autoconf Manual}).  See also @ref{Hard-Coded
7805 Install Paths}.
7808 @node Documentation
7809 @chapter Building documentation
7811 Currently Automake provides support for Texinfo and man pages.
7813 @menu
7814 * Texinfo::                     Texinfo
7815 * Man Pages::                   Man pages
7816 @end menu
7819 @node Texinfo
7820 @section Texinfo
7822 @cindex @code{_TEXINFOS} primary, defined
7823 @cindex @code{TEXINFOS} primary, defined
7824 @cindex Primary variable, @code{TEXINFOS}
7825 @cindex HTML output using Texinfo
7826 @cindex PDF output using Texinfo
7827 @cindex PS output using Texinfo
7828 @cindex DVI output using Texinfo
7829 @vindex _TEXINFOS
7830 @vindex info_TEXINFOS
7832 If the current directory contains Texinfo source, you must declare it
7833 with the @code{TEXINFOS} primary.  Generally Texinfo files are converted
7834 into info, and thus the @code{info_TEXINFOS} variable is most commonly used
7835 here.  Any Texinfo source file should have the @file{.texi} extension.
7836 Automake also accepts @file{.txi} or @file{.texinfo} extensions, but their
7837 use is discouraged now, and will elicit runtime warnings.
7839 Automake generates rules to build @file{.info}, @file{.dvi},
7840 @file{.ps}, @file{.pdf} and @file{.html} files from your Texinfo
7841 sources.  Following the GNU Coding Standards, only the @file{.info}
7842 files are built by @samp{make all} and installed by @samp{make
7843 install} (unless you use @option{no-installinfo}, see below).
7844 Furthermore, @file{.info} files are automatically distributed so that
7845 Texinfo is not a prerequisite for installing your package.
7847 It is worth noting that, contrary to what happens with the other formats,
7848 the generated @file{.info} files are by default placed in @code{srcdir}
7849 rather than in the @code{builddir}.  This can be changed with the
7850 @option{info-in-builddir} option.
7852 @trindex dvi
7853 @trindex html
7854 @trindex pdf
7855 @trindex ps
7856 @trindex install-dvi
7857 @trindex install-html
7858 @trindex install-pdf
7859 @trindex install-ps
7860 Other documentation formats can be built on request by @samp{make
7861 dvi}, @samp{make ps}, @samp{make pdf} and @samp{make html}, and they
7862 can be installed with @samp{make install-dvi}, @samp{make install-ps},
7863 @samp{make install-pdf} and @samp{make install-html} explicitly.
7864 @samp{make uninstall} will remove everything: the Texinfo
7865 documentation installed by default as well as all the above optional
7866 formats.
7868 All of these targets can be extended using @samp{-local} rules
7869 (@pxref{Extending}).
7871 @cindex Texinfo flag, @code{VERSION}
7872 @cindex Texinfo flag, @code{UPDATED}
7873 @cindex Texinfo flag, @code{EDITION}
7874 @cindex Texinfo flag, @code{UPDATED-MONTH}
7876 @cindex @code{VERSION} Texinfo flag
7877 @cindex @code{UPDATED} Texinfo flag
7878 @cindex @code{EDITION} Texinfo flag
7879 @cindex @code{UPDATED-MONTH} Texinfo flag
7881 @cindex @file{mdate-sh}
7883 If the @file{.texi} file @code{@@include}s @file{version.texi}, then
7884 that file will be automatically generated.  The file @file{version.texi}
7885 defines four Texinfo flags you can reference using
7886 @code{@@value@{EDITION@}}, @code{@@value@{VERSION@}},
7887 @code{@@value@{UPDATED@}}, and @code{@@value@{UPDATED-MONTH@}}.
7889 @table @code
7890 @item EDITION
7891 @itemx VERSION
7892 Both of these flags hold the version number of your program.  They are
7893 kept separate for clarity.
7895 @item UPDATED
7896 This holds the date the primary @file{.texi} file was last modified.
7898 @item UPDATED-MONTH
7899 This holds the name of the month in which the primary @file{.texi} file
7900 was last modified.
7901 @end table
7903 The @file{version.texi} support requires the @command{mdate-sh}
7904 script; this script is supplied with Automake and automatically
7905 included when @command{automake} is invoked with the
7906 @option{--add-missing} option.
7908 If you have multiple Texinfo files, and you want to use the
7909 @file{version.texi} feature, then you have to have a separate version
7910 file for each Texinfo file.  Automake will treat any include in a
7911 Texinfo file that matches @file{vers*.texi} just as an automatically
7912 generated version file.
7914 Sometimes an info file actually depends on more than one @file{.texi}
7915 file.  For instance, in GNU Hello, @file{hello.texi} includes the file
7916 @file{fdl.texi}.  You can tell Automake about these dependencies using
7917 the @code{@var{texi}_TEXINFOS} variable.  Here is how GNU Hello does it:
7918 @vindex TEXINFOS
7919 @vindex _TEXINFOS
7921 @example
7922 info_TEXINFOS = hello.texi
7923 hello_TEXINFOS = fdl.texi
7924 @end example
7926 @cindex @file{texinfo.tex}
7928 By default, Automake requires the file @file{texinfo.tex} to appear in
7929 the same directory as the @file{Makefile.am} file that lists the
7930 @file{.texi} files.  If you used @code{AC_CONFIG_AUX_DIR} in
7931 @file{configure.ac} (@pxref{Input, , Finding `configure' Input,
7932 autoconf, The Autoconf Manual}), then @file{texinfo.tex} is looked for
7933 there.  In both cases, @command{automake} then supplies @file{texinfo.tex} if
7934 @option{--add-missing} is given, and takes care of its distribution.
7935 However, if you set the @code{TEXINFO_TEX} variable (see below),
7936 it overrides the location of the file and turns off its installation
7937 into the source as well as its distribution.
7939 The option @option{no-texinfo.tex} can be used to eliminate the
7940 requirement for the file @file{texinfo.tex}.  Use of the variable
7941 @code{TEXINFO_TEX} is preferable, however, because that allows the
7942 @code{dvi}, @code{ps}, and @code{pdf} targets to still work.
7944 @cindex Option, @code{no-installinfo}
7945 @cindex Target, @code{install-info}
7946 @cindex @code{install-info} target
7947 @cindex @code{no-installinfo} option
7949 @opindex no-installinfo
7950 @trindex install-info
7952 Automake generates an @code{install-info} rule; some people apparently
7953 use this.  By default, info pages are installed by @samp{make
7954 install}, so running @code{make install-info} is pointless.  This can
7955 be prevented via the @code{no-installinfo} option.  In this case,
7956 @file{.info} files are not installed by default, and user must
7957 request this explicitly using @samp{make install-info}.
7959 @vindex AM_UPDATE_INFO_DIR
7960 By default, @code{make install-info} and @code{make uninstall-info}
7961 will try to run the @command{install-info} program (if available) to
7962 update (or create/remove) the @file{@code{$@{infodir@}}/dir} index.
7963 If this is undesired, it can be prevented by exporting the
7964 @code{AM_UPDATE_INFO_DIR} variable to "@code{no}".
7966 The following variables are used by the Texinfo build rules.
7968 @vtable @code
7969 @item MAKEINFO
7970 The name of the program invoked to build @file{.info} files.  This
7971 variable is defined by Automake.  If the @command{makeinfo} program is
7972 found on the system then it will be used by default; otherwise
7973 @command{missing} will be used instead.
7975 @item MAKEINFOHTML
7976 The command invoked to build @file{.html} files.  Automake
7977 defines this to @samp{$(MAKEINFO) --html}.
7979 @item MAKEINFOFLAGS
7980 User flags passed to each invocation of @samp{$(MAKEINFO)} and
7981 @samp{$(MAKEINFOHTML)}.  This user variable (@pxref{User Variables}) is
7982 not expected to be defined in any @file{Makefile}; it can be used by
7983 users to pass extra flags to suit their needs.
7985 @item AM_MAKEINFOFLAGS
7986 @itemx AM_MAKEINFOHTMLFLAGS
7987 Maintainer flags passed to each @command{makeinfo} invocation.  Unlike
7988 @code{MAKEINFOFLAGS}, these variables are meant to be defined by
7989 maintainers in @file{Makefile.am}.  @samp{$(AM_MAKEINFOFLAGS)} is
7990 passed to @code{makeinfo} when building @file{.info} files; and
7991 @samp{$(AM_MAKEINFOHTMLFLAGS)} is used when building @file{.html}
7992 files.
7994 @c Keep in sync with txinfo-many-output-formats.sh
7995 For instance, the following setting can be used to obtain one single
7996 @file{.html} file per manual, without node separators.
7997 @example
7998 AM_MAKEINFOHTMLFLAGS = --no-headers --no-split
7999 @end example
8001 @code{AM_MAKEINFOHTMLFLAGS} defaults to @samp{$(AM_MAKEINFOFLAGS)}.
8002 This means that defining @code{AM_MAKEINFOFLAGS} without defining
8003 @code{AM_MAKEINFOHTMLFLAGS} will impact builds of both @file{.info}
8004 and @file{.html} files.
8006 @item TEXI2DVI
8007 The name of the command that converts a @file{.texi} file into a
8008 @file{.dvi} file.  This defaults to @samp{texi2dvi}, a script that ships
8009 with the Texinfo package.
8011 @item TEXI2PDF
8012 The name of the command that translates a @file{.texi} file into a
8013 @file{.pdf} file.  This defaults to @samp{$(TEXI2DVI) --pdf --batch}.
8015 @item DVIPS
8016 The name of the command that builds a @file{.ps} file out of a
8017 @file{.dvi} file.  This defaults to @samp{dvips}.
8019 @item TEXINFO_TEX
8021 If your package has Texinfo files in many directories, you can use the
8022 variable @code{TEXINFO_TEX} to tell Automake where to find the canonical
8023 @file{texinfo.tex} for your package.  The value of this variable should
8024 be the relative path from the current @file{Makefile.am} to
8025 @file{texinfo.tex}:
8027 @example
8028 TEXINFO_TEX = ../doc/texinfo.tex
8029 @end example
8030 @end vtable
8033 @node Man Pages
8034 @section Man Pages
8036 @cindex @code{_MANS} primary, defined
8037 @cindex @code{MANS} primary, defined
8038 @cindex Primary variable, @code{MANS}
8040 @vindex _MANS
8041 @vindex man_MANS
8042 A package can also include man pages (but see the GNU standards on this
8043 matter, @ref{Man Pages, , , standards, The GNU Coding Standards}.)  Man
8044 pages are declared using the @code{MANS} primary.  Generally the
8045 @code{man_MANS} variable is used.  Man pages are automatically installed in
8046 the correct subdirectory of @code{mandir}, based on the file extension.
8048 File extensions such as @file{.1c} are handled by looking for the valid
8049 part of the extension and using that to determine the correct
8050 subdirectory of @code{mandir}.  Valid section names are the digits
8051 @samp{0} through @samp{9}, and the letters @samp{l} and @samp{n}.
8053 Sometimes developers prefer to name a man page something like
8054 @file{foo.man} in the source, and then rename it to have the correct
8055 suffix, for example @file{foo.1}, when installing the file.  Automake
8056 also supports this mode.  For a valid section named @var{section},
8057 there is a corresponding directory named @samp{man@var{section}dir},
8058 and a corresponding @code{_MANS} variable.  Files listed in such a
8059 variable are installed in the indicated section.  If the file already
8060 has a valid suffix, then it is installed as-is; otherwise the file
8061 suffix is changed to match the section.
8063 For instance, consider this example:
8064 @example
8065 man1_MANS = rename.man thesame.1 alsothesame.1c
8066 @end example
8068 @noindent
8069 In this case, @file{rename.man} will be renamed to @file{rename.1} when
8070 installed, but the other files will keep their names.
8072 @cindex Target, @code{install-man}
8073 @cindex Option, @option{no-installman}
8074 @cindex @code{install-man} target
8075 @cindex @option{no-installman} option
8076 @opindex no-installman
8077 @trindex install-man
8079 By default, man pages are installed by @samp{make install}.  However,
8080 since the GNU project does not require man pages, many maintainers do
8081 not expend effort to keep the man pages up to date.  In these cases, the
8082 @option{no-installman} option will prevent the man pages from being
8083 installed by default.  The user can still explicitly install them via
8084 @samp{make install-man}.
8086 For fast installation, with many files it is preferable to use
8087 @samp{man@var{section}_MANS} over @samp{man_MANS} as well as files that
8088 do not need to be renamed.
8090 Man pages are not currently considered to be source, because it is not
8091 uncommon for man pages to be automatically generated.  Therefore they
8092 are not automatically included in the distribution.  However, this can
8093 be changed by use of the @code{dist_} prefix.  For instance here is
8094 how to distribute and install the two man pages of GNU @command{cpio}
8095 (which includes both Texinfo documentation and man pages):
8097 @example
8098 dist_man_MANS = cpio.1 mt.1
8099 @end example
8101 The @code{nobase_} prefix is meaningless for man pages and is
8102 disallowed.
8104 @vindex notrans_
8105 @cindex @code{notrans_} prefix
8106 @cindex Man page renaming, avoiding
8107 @cindex Avoiding man page renaming
8109 Executables and manpages may be renamed upon installation
8110 (@pxref{Renaming}).  For manpages this can be avoided by use of the
8111 @code{notrans_} prefix.  For instance, suppose an executable @samp{foo}
8112 allowing to access a library function @samp{foo} from the command line.
8113 The way to avoid renaming of the @file{foo.3} manpage is:
8115 @example
8116 man_MANS = foo.1
8117 notrans_man_MANS = foo.3
8118 @end example
8120 @cindex @code{notrans_} and @code{dist_} or @code{nodist_}
8121 @cindex @code{dist_} and @code{notrans_}
8122 @cindex @code{nodist_} and @code{notrans_}
8124 @samp{notrans_} must be specified first when used in conjunction with
8125 either @samp{dist_} or @samp{nodist_} (@pxref{Fine-grained Distribution
8126 Control}).  For instance:
8128 @example
8129 notrans_dist_man3_MANS = bar.3
8130 @end example
8132 @node Install
8133 @chapter What Gets Installed
8135 @cindex Installation support
8136 @cindex @samp{make install} support
8138 Naturally, Automake handles the details of actually installing your
8139 program once it has been built.  All files named by the various
8140 primaries are automatically installed in the appropriate places when the
8141 user runs @samp{make install}.
8143 @menu
8144 * Basics of Installation::      What gets installed where
8145 * The Two Parts of Install::    Installing data and programs separately
8146 * Extending Installation::      Adding your own rules for installation
8147 * Staged Installs::             Installation in a temporary location
8148 * Install Rules for the User::  Useful additional rules
8149 @end menu
8151 @node Basics of Installation
8152 @section Basics of Installation
8154 A file named in a primary is installed by copying the built file into
8155 the appropriate directory.  The base name of the file is used when
8156 installing.
8158 @example
8159 bin_PROGRAMS = hello subdir/goodbye
8160 @end example
8162 In this example, both @samp{hello} and @samp{goodbye} will be installed
8163 in @samp{$(bindir)}.
8165 Sometimes it is useful to avoid the basename step at install time.  For
8166 instance, you might have a number of header files in subdirectories of
8167 the source tree that are laid out precisely how you want to install
8168 them.  In this situation you can use the @code{nobase_} prefix to
8169 suppress the base name step.  For example:
8171 @example
8172 nobase_include_HEADERS = stdio.h sys/types.h
8173 @end example
8175 @noindent
8176 will install @file{stdio.h} in @samp{$(includedir)} and @file{types.h}
8177 in @samp{$(includedir)/sys}.
8179 For most file types, Automake will install multiple files at once, while
8180 avoiding command line length issues (@pxref{Length Limitations}).  Since
8181 some @command{install} programs will not install the same file twice in
8182 one invocation, you may need to ensure that file lists are unique within
8183 one variable such as @samp{nobase_include_HEADERS} above.
8185 You should not rely on the order in which files listed in one variable
8186 are installed.  Likewise, to cater for parallel make, you should not
8187 rely on any particular file installation order even among different
8188 file types (library dependencies are an exception here).
8191 @node The Two Parts of Install
8192 @section The Two Parts of Install
8194 Automake generates separate @code{install-data} and @code{install-exec}
8195 rules, in case the installer is installing on multiple machines that
8196 share directory structure---these targets allow the machine-independent
8197 parts to be installed only once.  @code{install-exec} installs
8198 platform-dependent files, and @code{install-data} installs
8199 platform-independent files.  The @code{install} target depends on both
8200 of these targets.  While Automake tries to automatically segregate
8201 objects into the correct category, the @file{Makefile.am} author is, in
8202 the end, responsible for making sure this is done correctly.
8203 @trindex install-data
8204 @trindex install-exec
8205 @trindex install
8206 @cindex Install, two parts of
8208 Variables using the standard directory prefixes @samp{data},
8209 @samp{info}, @samp{man}, @samp{include}, @samp{oldinclude},
8210 @samp{pkgdata}, or @samp{pkginclude} are installed by
8211 @code{install-data}.
8213 Variables using the standard directory prefixes @samp{bin},
8214 @samp{sbin}, @samp{libexec}, @samp{sysconf}, @samp{localstate},
8215 @samp{lib}, or @samp{pkglib} are installed by @code{install-exec}.
8217 For instance, @code{data_DATA} files are installed by @code{install-data},
8218 while @code{bin_PROGRAMS} files are installed by @code{install-exec}.
8220 Any variable using a user-defined directory prefix with
8221 @samp{exec} in the name (e.g.,
8222 @c Keep in sync with primary-prefix-couples-documented-valid.sh
8223 @code{myexecbin_PROGRAMS}) is installed by @code{install-exec}.  All
8224 other user-defined prefixes are installed by @code{install-data}.
8226 @node Extending Installation
8227 @section Extending Installation
8229 It is possible to extend this mechanism by defining an
8230 @code{install-exec-local} or @code{install-data-local} rule.  If these
8231 rules exist, they will be run at @samp{make install} time.  These
8232 rules can do almost anything; care is required.
8233 @trindex install-exec-local
8234 @trindex install-data-local
8236 Automake also supports two install hooks, @code{install-exec-hook} and
8237 @code{install-data-hook}.  These hooks are run after all other install
8238 rules of the appropriate type, exec or data, have completed.  So, for
8239 instance, it is possible to perform post-installation modifications
8240 using an install hook.  @xref{Extending}, for some examples.
8241 @cindex Install hook
8243 @node Staged Installs
8244 @section Staged Installs
8246 @vindex DESTDIR
8247 Automake generates support for the @code{DESTDIR} variable in all
8248 install rules.  @code{DESTDIR} is used during the @samp{make install}
8249 step to relocate install objects into a staging area.  Each object and
8250 path is prefixed with the value of @code{DESTDIR} before being copied
8251 into the install area.  Here is an example of typical DESTDIR usage:
8253 @example
8254 mkdir /tmp/staging &&
8255 make DESTDIR=/tmp/staging install
8256 @end example
8258 The @command{mkdir} command avoids a security problem if the attacker
8259 creates a symbolic link from @file{/tmp/staging} to a victim area;
8260 then @command{make} places install objects in a directory tree built under
8261 @file{/tmp/staging}.  If @file{/gnu/bin/foo} and
8262 @file{/gnu/share/aclocal/foo.m4} are to be installed, the above command
8263 would install @file{/tmp/staging/gnu/bin/foo} and
8264 @file{/tmp/staging/gnu/share/aclocal/foo.m4}.
8266 This feature is commonly used to build install images and packages
8267 (@pxref{DESTDIR}).
8269 Support for @code{DESTDIR} is implemented by coding it directly into
8270 the install rules.  If your @file{Makefile.am} uses a local install
8271 rule (e.g., @code{install-exec-local}) or an install hook, then you
8272 must write that code to respect @code{DESTDIR}.
8274 @xref{Makefile Conventions, , , standards, The GNU Coding Standards},
8275 for another usage example.
8277 @node Install Rules for the User
8278 @section Install Rules for the User
8280 Automake also generates rules for targets @code{uninstall},
8281 @code{installdirs}, and @code{install-strip}.
8282 @trindex uninstall
8283 @trindex installdirs
8284 @trindex install-strip
8286 Automake supports @code{uninstall-local} and @code{uninstall-hook}.
8287 There is no notion of separate uninstalls for ``exec'' and ``data'', as
8288 these features would not provide additional functionality.
8290 Note that @code{uninstall} is not meant as a replacement for a real
8291 packaging tool.
8294 @node Clean
8295 @chapter What Gets Cleaned
8297 @cindex @samp{make clean} support
8299 The GNU Makefile Standards specify a number of different clean rules.
8300 @xref{Standard Targets, , Standard Targets for Users, standards,
8301 The GNU Coding Standards}.
8303 Generally the files that can be cleaned are determined automatically by
8304 Automake.  Of course, Automake also recognizes some variables that can
8305 be defined to specify additional files to clean.  These variables are
8306 @code{MOSTLYCLEANFILES}, @code{CLEANFILES}, @code{DISTCLEANFILES}, and
8307 @code{MAINTAINERCLEANFILES}.
8308 @vindex MOSTLYCLEANFILES
8309 @vindex CLEANFILES
8310 @vindex DISTCLEANFILES
8311 @vindex MAINTAINERCLEANFILES
8313 @trindex mostlyclean-local
8314 @trindex clean-local
8315 @trindex distclean-local
8316 @trindex maintainer-clean-local
8317 When cleaning involves more than deleting some hard-coded list of
8318 files, it is also possible to supplement the cleaning rules with your
8319 own commands.  Simply define a rule for any of the
8320 @code{mostlyclean-local}, @code{clean-local}, @code{distclean-local},
8321 or @code{maintainer-clean-local} targets (@pxref{Extending}).  A common
8322 case is deleting a directory, for instance, a directory created by the
8323 test suite:
8325 @example
8326 clean-local:
8327         -rm -rf testSubDir
8328 @end example
8330 Since @command{make} allows only one set of rules for a given target,
8331 a more extensible way of writing this is to use a separate target
8332 listed as a dependency:
8334 @example
8335 clean-local: clean-local-check
8336 .PHONY: clean-local-check
8337 clean-local-check:
8338         -rm -rf testSubDir
8339 @end example
8341 As the GNU Standards aren't always explicit as to which files should
8342 be removed by which rule, we've adopted a heuristic that we believe
8343 was first formulated by Fran@,{c}ois Pinard:
8345 @itemize @bullet
8346 @item
8347 If @command{make} built it, and it is commonly something that one would
8348 want to rebuild (for instance, a @file{.o} file), then
8349 @code{mostlyclean} should delete it.
8351 @item
8352 Otherwise, if @command{make} built it, then @code{clean} should delete it.
8354 @item
8355 If @command{configure} built it, then @code{distclean} should delete it.
8357 @item
8358 If the maintainer built it (for instance, a @file{.info} file), then
8359 @code{maintainer-clean} should delete it.  However
8360 @code{maintainer-clean} should not delete anything that needs to exist
8361 in order to run @samp{./configure && make}.
8362 @end itemize
8364 We recommend that you follow this same set of heuristics in your
8365 @file{Makefile.am}.
8368 @node Dist
8369 @chapter What Goes in a Distribution
8371 @menu
8372 * Basics of Distribution::      Files distributed by default
8373 * Fine-grained Distribution Control::  @code{dist_} and @code{nodist_} prefixes
8374 * The dist Hook::               A target for last-minute distribution changes
8375 * Checking the Distribution::   @samp{make distcheck} explained
8376 * The Types of Distributions::  A variety of formats and compression methods
8377 @end menu
8379 @node Basics of Distribution
8380 @section Basics of Distribution
8382 @cindex @samp{make dist}
8384 @vindex PACKAGE
8385 @vindex VERSION
8386 @trindex dist
8387 The @code{dist} rule in the generated @file{Makefile.in} can be used
8388 to generate a gzipped @code{tar} file and other flavors of archive for
8389 distribution.  The file is named based on the @code{PACKAGE} and
8390 @code{VERSION} variables automatically defined by either the
8391 @code{AC_INIT} invocation or by a @emph{deprecated} two-arguments
8392 invocation of the @code{AM_INIT_AUTOMAKE} macro (see @ref{Public Macros}
8393 for how these variables get their values, from either defaults or explicit
8394 values -- it's slightly trickier than one would expect).
8395 More precisely the gzipped @code{tar} file is named
8396 @samp{$@{PACKAGE@}-$@{VERSION@}.tar.gz}.
8397 @vindex GZIP_ENV
8398 You can use the @command{make} variable @code{GZIP_ENV} to control how gzip
8399 is run.  The default setting is @option{--best}.
8401 @cindex @code{m4_include}, distribution
8402 @cindex @code{include}, distribution
8403 @acindex m4_include
8404 @cmindex include
8405 For the most part, the files to distribute are automatically found by
8406 Automake: all source files are automatically included in a distribution,
8407 as are all @file{Makefile.am} and @file{Makefile.in} files.  Automake also
8408 has a built-in list of commonly used files that are automatically
8409 included if they are found in the current directory (either physically,
8410 or as the target of a @file{Makefile.am} rule); this list is printed by
8411 @samp{automake --help}.  Note that some files in this list are actually
8412 distributed only if other certain conditions hold (for example,
8413 @c Keep in sync with autodist-config-headers.sh
8414 the @file{config.h.top} and @file{config.h.bot} files are automatically
8415 distributed only if, e.g., @samp{AC_CONFIG_HEADERS([config.h])} is used
8416 in @file{configure.ac}).  Also, files that are read by @command{configure}
8417 (i.e.@: the source files corresponding to the files specified in various
8418 Autoconf macros such as @code{AC_CONFIG_FILES} and siblings) are
8419 automatically distributed.  Files included in a @file{Makefile.am} (using
8420 @code{include}) or in @file{configure.ac} (using @code{m4_include}), and
8421 helper scripts installed with @samp{automake --add-missing} are also
8422 distributed.
8424 @vindex EXTRA_DIST
8425 Still, sometimes there are files that must be distributed, but which
8426 are not covered in the automatic rules.  These files should be listed in
8427 the @code{EXTRA_DIST} variable.  You can mention files from
8428 subdirectories in @code{EXTRA_DIST}.
8430 You can also mention a directory in @code{EXTRA_DIST}; in this case the
8431 entire directory will be recursively copied into the distribution.
8432 Please note that this will also copy @emph{everything} in the directory,
8433 including, e.g., Subversion's @file{.svn} private directories or CVS/RCS
8434 version control files; thus we recommend against using this feature
8435 as-is.  However, you can use the @code{dist-hook} feature to
8436 ameliorate the problem; @pxref{The dist Hook}.
8438 @vindex SUBDIRS
8439 @vindex DIST_SUBDIRS
8440 If you define @code{SUBDIRS}, Automake will recursively include the
8441 subdirectories in the distribution.  If @code{SUBDIRS} is defined
8442 conditionally (@pxref{Conditionals}), Automake will normally include
8443 all directories that could possibly appear in @code{SUBDIRS} in the
8444 distribution.  If you need to specify the set of directories
8445 conditionally, you can set the variable @code{DIST_SUBDIRS} to the
8446 exact list of subdirectories to include in the distribution
8447 (@pxref{Conditional Subdirectories}).
8450 @node Fine-grained Distribution Control
8451 @section Fine-grained Distribution Control
8453 @vindex dist_
8454 @vindex nodist_
8455 Sometimes you need tighter control over what does @emph{not} go into the
8456 distribution; for instance, you might have source files that are
8457 generated and that you do not want to distribute.  In this case
8458 Automake gives fine-grained control using the @code{dist} and
8459 @code{nodist} prefixes.  Any primary or @code{_SOURCES} variable can be
8460 prefixed with @code{dist_} to add the listed files to the distribution.
8461 Similarly, @code{nodist_} can be used to omit the files from the
8462 distribution.
8464 As an example, here is how you would cause some data to be distributed
8465 while leaving some source code out of the distribution:
8467 @example
8468 dist_data_DATA = distribute-this
8469 bin_PROGRAMS = foo
8470 nodist_foo_SOURCES = do-not-distribute.c
8471 @end example
8473 @node The dist Hook
8474 @section The dist Hook
8476 @trindex dist-hook
8478 Occasionally it is useful to be able to change the distribution before
8479 it is packaged up.  If the @code{dist-hook} rule exists, it is run
8480 after the distribution directory is filled, but before the actual
8481 distribution archives are created.  One way to use this is for
8482 removing unnecessary files that get recursively included by specifying
8483 a directory in @code{EXTRA_DIST}:
8485 @example
8486 EXTRA_DIST = doc
8487 dist-hook:
8488         rm -rf `find $(distdir)/doc -type d -name .svn`
8489 @end example
8491 @c The caveats described here should be documented in 'disthook.sh'.
8492 @noindent
8493 Note that the @code{dist-hook} recipe shouldn't assume that the regular
8494 files in the distribution directory are writable; this might not be the
8495 case if one is packaging from a read-only source tree, or when a
8496 @code{make distcheck} is being done.  For similar reasons, the recipe
8497 shouldn't assume that the subdirectories put into the distribution
8498 directory as effect of having them listed in @code{EXTRA_DIST} are
8499 writable.  So, if the @code{dist-hook} recipe wants to modify the
8500 content of an existing file (or @code{EXTRA_DIST} subdirectory) in the
8501 distribution directory, it should explicitly to make it writable first:
8503 @example
8504 EXTRA_DIST = README doc
8505 dist-hook:
8506         chmod u+w $(distdir)/README $(distdir)/doc
8507         echo "Distribution date: `date`" >> README
8508         rm -f $(distdir)/doc/HACKING
8509 @end example
8511 @vindex distdir
8512 @vindex top_distdir
8513 Two variables that come handy when writing @code{dist-hook} rules are
8514 @samp{$(distdir)} and @samp{$(top_distdir)}.
8516 @samp{$(distdir)} points to the directory where the @code{dist} rule
8517 will copy files from the current directory before creating the
8518 tarball.  If you are at the top-level directory, then @samp{distdir =
8519 $(PACKAGE)-$(VERSION)}.  When used from subdirectory named
8520 @file{foo/}, then @samp{distdir = ../$(PACKAGE)-$(VERSION)/foo}.
8521 @samp{$(distdir)} can be a relative or absolute path, do not assume
8522 any form.
8524 @samp{$(top_distdir)} always points to the root directory of the
8525 distributed tree.  At the top-level it's equal to @samp{$(distdir)}.
8526 In the @file{foo/} subdirectory
8527 @samp{top_distdir = ../$(PACKAGE)-$(VERSION)}.
8528 @samp{$(top_distdir)} too can be a relative or absolute path.
8530 Note that when packages are nested using @code{AC_CONFIG_SUBDIRS}
8531 (@pxref{Subpackages}), then @samp{$(distdir)} and
8532 @samp{$(top_distdir)} are relative to the package where @samp{make
8533 dist} was run, not to any sub-packages involved.
8535 @node Checking the Distribution
8536 @section Checking the Distribution
8538 @cindex @samp{make distcheck}
8539 @trindex distcheck
8540 Automake also generates a @code{distcheck} rule that can be of help
8541 to ensure that a given distribution will actually work.  Simplifying
8542 a bit, we can say this rule first makes a distribution, and then,
8543 @emph{operating from it}, takes the following steps:
8544 @itemize
8545 @item
8546 tries to do a @code{VPATH} build (@pxref{VPATH Builds}), with the
8547 @code{srcdir} and all its content made @emph{read-only};
8548 @item
8549 runs the test suite (with @command{make check}) on this fresh build;
8550 @item
8551 installs the package in a temporary directory (with @command{make
8552 install}), and tries runs the test suite on the resulting installation
8553 (with @command{make installcheck});
8554 @item
8555 checks that the package can be correctly uninstalled (by @command{make
8556 uninstall}) and cleaned (by @code{make distclean});
8557 @item
8558 finally, makes another tarball to ensure the distribution is
8559 self-contained.
8560 @end itemize
8562 All of these actions are performed in a temporary directory.  Please
8563 note that the exact location and the exact structure of such a directory
8564 (where the read-only sources are placed, how the temporary build and
8565 install directories are named and how deeply they are nested, etc.) is
8566 to be considered an implementation detail, which can change at any time;
8567 so do not reply on it.
8569 @vindex AM_DISTCHECK_CONFIGURE_FLAGS
8570 @vindex DISTCHECK_CONFIGURE_FLAGS
8571 @subheading DISTCHECK_CONFIGURE_FLAGS
8572 Building the package involves running @samp{./configure}.  If you need
8573 to supply additional flags to @command{configure}, define them in the
8574 @code{AM_DISTCHECK_CONFIGURE_FLAGS} variable in your top-level
8575 @file{Makefile.am}.  The user can still extend or override the flags
8576 provided there by defining the @code{DISTCHECK_CONFIGURE_FLAGS} variable,
8577 on the command line when invoking @command{make}.
8578 @c See automake bug#14991 for more details about how the following holds.
8579 It's worth noting that @command{make distcheck} needs complete control
8580 over the @command{configure} options @option{--srcdir} and
8581 @option{--prefix}, so those options cannot be overridden by
8582 @code{AM_DISTCHECK_CONFIGURE_FLAGS} nor by
8583 @code{DISTCHECK_CONFIGURE_FLAGS}.
8585 Also note that developers are encouraged to strive to make their code
8586 buildable without requiring any special configure option; thus, in
8587 general, you shouldn't define @code{AM_DISTCHECK_CONFIGURE_FLAGS}.
8588 However, there might be few scenarios in which the use of this variable
8589 is justified.
8590 GNU @command{m4} offers an example.  GNU @command{m4} configures by
8591 default with its experimental and seldom used "changeword" feature
8592 disabled; so in its case it is useful to have @command{make distcheck}
8593 run configure with the @option{--with-changeword} option, to ensure that
8594 the code for changeword support still compiles correctly.
8595 GNU @command{m4} also employs the @code{AM_DISTCHECK_CONFIGURE_FLAGS}
8596 variable to stress-test the use of @option{--program-prefix=g}, since at
8597 one point the @command{m4} build system had a bug where @command{make
8598 installcheck} was wrongly assuming it could blindly test "@command{m4}",
8599 rather than the just-installed "@command{gm4}".
8601 @trindex distcheck-hook
8602 @subheading distcheck-hook
8603 If the @code{distcheck-hook} rule is defined in your top-level
8604 @file{Makefile.am}, then it will be invoked by @code{distcheck} after
8605 the new distribution has been unpacked, but before the unpacked copy
8606 is configured and built.  Your @code{distcheck-hook} can do almost
8607 anything, though as always caution is advised.  Generally this hook is
8608 used to check for potential distribution errors not caught by the
8609 standard mechanism.  Note that @code{distcheck-hook} as well as
8610 @code{AM_DISTCHECK_CONFIGURE_FLAGS} and @code{DISTCHECK_CONFIGURE_FLAGS}
8611 are not honored in a subpackage @file{Makefile.am}, but the flags from
8612 @code{AM_DISTCHECK_CONFIGURE_FLAGS} and @code{DISTCHECK_CONFIGURE_FLAGS}
8613 are passed down to the @command{configure} script of the subpackage.
8615 @cindex @samp{make distcleancheck}
8616 @trindex distcleancheck
8617 @vindex DISTCLEANFILES
8618 @vindex distcleancheck_listfiles
8620 @subheading distcleancheck
8621 Speaking of potential distribution errors, @code{distcheck} also
8622 ensures that the @code{distclean} rule actually removes all built
8623 files.  This is done by running @samp{make distcleancheck} at the end of
8624 the @code{VPATH} build.  By default, @code{distcleancheck} will run
8625 @code{distclean} and then make sure the build tree has been emptied by
8626 running @samp{$(distcleancheck_listfiles)}.  Usually this check will
8627 find generated files that you forgot to add to the @code{DISTCLEANFILES}
8628 variable (@pxref{Clean}).
8630 The @code{distcleancheck} behavior should be OK for most packages,
8631 otherwise you have the possibility to override the definition of
8632 either the @code{distcleancheck} rule, or the
8633 @samp{$(distcleancheck_listfiles)} variable.  For instance, to disable
8634 @code{distcleancheck} completely, add the following rule to your
8635 top-level @file{Makefile.am}:
8637 @example
8638 distcleancheck:
8639         @@:
8640 @end example
8642 If you want @code{distcleancheck} to ignore built files that have not
8643 been cleaned because they are also part of the distribution, add the
8644 following definition instead:
8646 @c Keep in sync with distcleancheck.sh
8647 @example
8648 distcleancheck_listfiles = \
8649   find . -type f -exec sh -c 'test -f $(srcdir)/$$1 || echo $$1' \
8650        sh '@{@}' ';'
8651 @end example
8653 The above definition is not the default because it's usually an error if
8654 your Makefiles cause some distributed files to be rebuilt when the user
8655 build the package.  (Think about the user missing the tool required to
8656 build the file; or if the required tool is built by your package,
8657 consider the cross-compilation case where it can't be run.)  There is
8658 an entry in the FAQ about this (@pxref{Errors with distclean}), make
8659 sure you read it before playing with @code{distcleancheck_listfiles}.
8661 @cindex @samp{make distuninstallcheck}
8662 @trindex distuninstallcheck
8663 @vindex distuninstallcheck_listfiles
8665 @subheading distuninstallcheck
8666 @code{distcheck} also checks that the @code{uninstall} rule works
8667 properly, both for ordinary and @code{DESTDIR} builds.  It does this
8668 by invoking @samp{make uninstall}, and then it checks the install tree
8669 to see if any files are left over.  This check will make sure that you
8670 correctly coded your @code{uninstall}-related rules.
8672 By default, the checking is done by the @code{distuninstallcheck} rule,
8673 and the list of files in the install tree is generated by
8674 @samp{$(distuninstallcheck_listfiles)} (this is a variable whose value is
8675 a shell command to run that prints the list of files to stdout).
8677 Either of these can be overridden to modify the behavior of
8678 @code{distcheck}.  For instance, to disable this check completely, you
8679 would write:
8681 @example
8682 distuninstallcheck:
8683         @@:
8684 @end example
8686 @node The Types of Distributions
8687 @section The Types of Distributions
8689 Automake generates rules to provide archives of the project for
8690 distributions in various formats.  Their targets are:
8692 @table @asis
8693 @item @code{dist-gzip}
8694 Generate a @samp{gzip} tar archive of the distribution.  This is the
8695 only format enabled by default.
8696 @trindex dist-gzip
8698 @vindex BZIP2
8699 @item @code{dist-bzip2}
8700 Generate a @samp{bzip2} tar archive of the distribution.  bzip2 archives
8701 are frequently smaller than gzipped archives.
8702 By default, this rule makes @samp{bzip2} use a compression option of @option{-9}.
8703 To make it use a different one, set the @env{BZIP2} environment variable.
8704 For example, @samp{make dist-bzip2 BZIP2=-7}.
8705 @trindex dist-bzip2
8707 @item @code{dist-lzip}
8708 Generate an @samp{lzip} tar archive of the distribution.  @command{lzip}
8709 archives are frequently smaller than @command{bzip2}-compressed archives.
8710 @trindex dist-lzip
8712 @vindex XZ_OPT
8713 @item @code{dist-xz}
8714 Generate an @samp{xz} tar archive of the distribution.  @command{xz}
8715 archives are frequently smaller than @command{bzip2}-compressed archives.
8716 By default, this rule makes @samp{xz} use a compression option of
8717 @option{-e}.  To make it use a different one, set the @env{XZ_OPT}
8718 environment variable.  For example, run this command to use the
8719 default compression ratio, but with a progress indicator:
8720 @samp{make dist-xz XZ_OPT=-ve}.
8721 @trindex dist-xz
8723 @item @code{dist-zip}
8724 Generate a @samp{zip} archive of the distribution.
8725 @trindex dist-zip
8727 @item @code{dist-tarZ}
8728 Generate a tar archive of the distribution, compressed with the
8729 historical (and obsolescent) program @command{compress}.  This
8730 option is deprecated, and it and the corresponding functionality
8731 will be removed altogether in Automake 2.0.
8732 @trindex dist-tarZ
8734 @item @code{dist-shar}
8735 Generate a @samp{shar} archive of the distribution.  This format
8736 archive is obsolescent, and use of this option is deprecated.
8737 It and the corresponding functionality will be removed altogether
8738 in Automake 2.0.
8739 @trindex dist-shar
8741 @end table
8743 The rule @code{dist} (and its historical synonym @code{dist-all})
8744 will create archives in all the enabled formats (@pxref{List of
8745 Automake options} for how to change this list).  By default, only
8746 the @code{dist-gzip} target is hooked to @code{dist}.
8749 @node Tests
8750 @chapter Support for test suites
8752 @cindex Test suites
8753 @cindex @code{make check}
8754 @trindex check
8756 Automake can generate code to handle two kinds of test suites.  One is
8757 based on integration with the @command{dejagnu} framework.  The other
8758 (and most used) form is based on the use of generic test scripts, and
8759 its activation is triggered by the definition of the special @code{TESTS}
8760 variable.  This second form allows for various degrees of sophistication
8761 and customization; in particular, it allows for concurrent execution
8762 of test scripts, use of established test protocols such as TAP, and
8763 definition of custom test drivers and test runners.
8765 @noindent
8766 In either case, the testsuite is invoked via @samp{make check}.
8768 @menu
8769 * Generalities about Testing::  Concepts and terminology about testing
8770 * Simple Tests::                Listing test scripts in @code{TESTS}
8771 * Custom Test Drivers::         Writing and using custom test drivers
8772 * Using the TAP test protocol:: Integrating test scripts that use the TAP protocol
8773 * DejaGnu Tests::               Interfacing with the @command{dejagnu} testing framework
8774 * Install Tests::               Running tests on installed packages
8775 @end menu
8777 @node Generalities about Testing
8778 @section Generalities about Testing
8780 The purpose of testing is to determine whether a program or system behaves
8781 as expected (e.g., known inputs produce the expected outputs, error
8782 conditions are correctly handled or reported, and older bugs do not
8783 resurface).
8785 @cindex test case
8786 The minimal unit of testing is usually called @emph{test case}, or simply
8787 @emph{test}.  How a test case is defined or delimited, and even what
8788 exactly @emph{constitutes} a test case, depends heavily on the testing
8789 paradigm and/or framework in use, so we won't attempt any more precise
8790 definition.  The set of the test cases for a given program or system
8791 constitutes its @emph{testsuite}.
8793 @cindex test harness
8794 @cindex testsuite harness
8795 A @emph{test harness} (also @emph{testsuite harness}) is a program or
8796 software component that executes all (or part of) the defined test cases,
8797 analyzes their outcomes, and report or register these outcomes
8798 appropriately.  Again, the details of how this is accomplished (and how
8799 the developer and user can influence it or interface with it) varies
8800 wildly, and we'll attempt no precise definition.
8802 @cindex test pass
8803 @cindex test failure
8804 A test is said to @emph{pass} when it can determine that the condition or
8805 behaviour it means to verify holds, and is said to @emph{fail} when it can
8806 determine that such condition of behaviour does @emph{not} hold.
8808 @cindex test skip
8809 Sometimes, tests can rely on non-portable tools or prerequisites, or
8810 simply make no sense on a given system (for example, a test checking a
8811 Windows-specific feature makes no sense on a GNU/Linux system).  In this
8812 case, accordingly to the definition above, the tests can neither be
8813 considered passed nor failed; instead, they are @emph{skipped} -- i.e.,
8814 they are not run, or their result is anyway ignored for what concerns
8815 the count of failures an successes.  Skips are usually explicitly
8816 reported though, so that the user will be aware that not all of the
8817 testsuite has really run.
8819 @cindex xfail
8820 @cindex expected failure
8821 @cindex expected test failure
8822 @cindex xpass
8823 @cindex unexpected pass
8824 @cindex unexpected test pass
8825 It's not uncommon, especially during early development stages, that some
8826 tests fail for known reasons, and that the developer doesn't want to
8827 tackle these failures immediately (this is especially true when the
8828 failing tests deal with corner cases).  In this situation, the better
8829 policy is to declare that each of those failures is an @emph{expected
8830 failure} (or @emph{xfail}).  In case a test that is expected to fail ends
8831 up passing instead, many testing environments will flag the result as a
8832 special kind of failure called @emph{unexpected pass} (or @emph{xpass}).
8834 @cindex hard error
8835 @cindex Distinction between errors and failures in testsuites
8836 Many testing environments and frameworks distinguish between test failures
8837 and hard errors.  As we've seen, a test failure happens when some invariant
8838 or expected behaviour of the software under test is not met.  An @emph{hard
8839 error} happens when e.g., the set-up of a test case scenario fails, or when
8840 some other unexpected or highly undesirable condition is encountered (for
8841 example, the program under test experiences a segmentation fault).
8843 @node Simple Tests
8844 @section Simple Tests
8846 @menu
8847 * Scripts-based Testsuites::    Automake-specific concepts and terminology
8848 * Serial Test Harness::         Older (and discouraged) serial test harness
8849 * Parallel Test Harness::       Generic concurrent test harness
8850 @end menu
8852 @node Scripts-based Testsuites
8853 @subsection Scripts-based Testsuites
8855 If the special variable @code{TESTS} is defined, its value is taken to be
8856 a list of programs or scripts to run in order to do the testing.  Under
8857 the appropriate circumstances, it's possible for @code{TESTS} to list
8858 also data files to be passed to one or more test scripts defined by
8859 different means (the so-called ``log compilers'', @pxref{Parallel Test
8860 Harness}).
8862 Test scripts can be executed serially or concurrently.  Automake supports
8863 both these kinds of test execution, with the parallel test harness being
8864 the default.  The concurrent test harness relies on the concurrence
8865 capabilities (if any) offered by the underlying @command{make}
8866 implementation, and can thus only be as good as those are.
8868 By default, only the exit statuses of the test scripts are considered when
8869 determining the testsuite outcome.  But Automake allows also the use of
8870 more complex test protocols, either standard (@pxref{Using the TAP test
8871 protocol}) or custom (@pxref{Custom Test Drivers}).  Note that you can't
8872 enable such protocols when the serial harness is used, though.
8873 In the rest of this section we are going to concentrate mostly on
8874 protocol-less tests, since we cover test protocols in a later section
8875 (again, @pxref{Custom Test Drivers}).
8877 @cindex Exit status 77, special interpretation
8878 @cindex Exit status 99, special interpretation
8879 When no test protocol is in use, an exit status of 0 from a test script will
8880 denote a success, an exit status of 77 a skipped test, an exit status of 99
8881 an hard error, and any other exit status will denote a failure.
8883 @cindex Tests, expected failure
8884 @cindex Expected test failure
8885 @vindex XFAIL_TESTS
8886 @vindex DISABLE_HARD_ERRORS
8887 @cindex Disabling hard errors
8888 You may define the variable @code{XFAIL_TESTS} to a list of tests
8889 (usually a subset of @code{TESTS}) that are expected to fail; this will
8890 effectively reverse the result of those tests (with the provision that
8891 skips and hard errors remain untouched).  You may also instruct the
8892 testsuite harness to treat hard errors like simple failures, by defining
8893 the @code{DISABLE_HARD_ERRORS} make variable to a nonempty value.
8895 Note however that, for tests based on more complex test protocols,
8896 the exact effects of @code{XFAIL_TESTS} and @code{DISABLE_HARD_ERRORS}
8897 might change, or they might even have no effect at all (for example,
8898 @c Keep this in sync with tap-no-disable-hard-errors.sh
8899 in tests using TAP, there is no way to disable hard errors, and the
8900 @code{DISABLE_HARD_ERRORS} variable has no effect on them).
8902 @anchor{Testsuite progress on console}
8903 @cindex Testsuite progress on console
8904 The result of each test case run by the scripts in @code{TESTS} will be
8905 printed on standard output, along with the test name.  For test protocols
8906 that allow more test cases per test script (such as TAP), a number,
8907 identifier and/or brief description specific for the single test case is
8908 expected to be printed in addition to the name of the test script.  The
8909 possible results (whose meanings should be clear from the previous
8910 @ref{Generalities about Testing}) are @code{PASS}, @code{FAIL},
8911 @code{SKIP}, @code{XFAIL}, @code{XPASS} and @code{ERROR}.  Here is an
8912 example of output from an hypothetical testsuite that uses both plain
8913 and TAP tests:
8914 @c Keep in sync with tap-doc.sh
8915 @example
8916 PASS: foo.sh
8917 PASS: zardoz.tap 1 - Daemon started
8918 PASS: zardoz.tap 2 - Daemon responding
8919 SKIP: zardoz.tap 3 - Daemon uses /proc # SKIP /proc is not mounted
8920 PASS: zardoz.tap 4 - Daemon stopped
8921 SKIP: bar.sh
8922 PASS: mu.tap 1
8923 XFAIL: mu.tap 2 # TODO frobnication not yet implemented
8924 @end example
8926 @noindent
8927 A testsuite summary (expected to report at least the number of run,
8928 skipped and failed tests) will be printed at the end of the testsuite
8929 run.
8931 @anchor{Simple tests and color-tests}
8932 @vindex AM_COLOR_TESTS
8933 @cindex Colorized testsuite output
8934 If the standard output is connected to a capable terminal, then the test
8935 results and the summary are colored appropriately.  The developer and the
8936 user can disable colored output by setting the @command{make} variable
8937 @samp{AM_COLOR_TESTS=no}; the user can in addition force colored output
8938 even without a connecting terminal with @samp{AM_COLOR_TESTS=always}.
8939 It's also worth noting that some @command{make} implementations,
8940 when used in parallel mode, have slightly different semantics
8941 (@pxref{Parallel make,,, autoconf, The Autoconf Manual}), which can
8942 break the automatic detection of a connection to a capable terminal.
8943 If this is the case, the user will have to resort to the use of
8944 @samp{AM_COLOR_TESTS=always} in order to have the testsuite output
8945 colorized.
8947 Test programs that need data files should look for them in @code{srcdir}
8948 (which is both a make variable and an environment variable made available
8949 to the tests), so that they work when building in a separate directory
8950 (@pxref{Build Directories, , Build Directories , autoconf,
8951 The Autoconf Manual}), and in particular for the @code{distcheck} rule
8952 (@pxref{Checking the Distribution}).
8954 @vindex TESTS
8955 @vindex TESTS_ENVIRONMENT
8956 @vindex AM_TESTS_ENVIRONMENT
8957 The @code{AM_TESTS_ENVIRONMENT} and @code{TESTS_ENVIRONMENT} variables can
8958 be used to run initialization code and set environment variables for the
8959 test scripts.  The former variable is developer-reserved, and can be
8960 defined in the @file{Makefile.am}, while the latter is reserved for the
8961 user, which can employ it to extend or override the settings in the
8962 former; for this to work portably, however, the contents of a non-empty
8963 @code{AM_TESTS_ENVIRONMENT} @emph{must} be terminated by a semicolon.
8965 @vindex AM_TESTS_FD_REDIRECT
8966 The @code{AM_TESTS_FD_REDIRECT} variable can be used to define file
8967 descriptor redirections for the test scripts.  One might think that
8968 @code{AM_TESTS_ENVIRONMENT} could be used for this purpose, but experience
8969 has shown that doing so portably is practically impossible.  The main
8970 hurdle is constituted by Korn shells, which usually set the close-on-exec
8971 flag on file descriptors opened with the @command{exec} builtin, thus
8972 rendering an idiom like @code{AM_TESTS_ENVIRONMENT = exec 9>&2;}
8973 ineffectual.  This issue also affects some Bourne shells, such as the
8974 HP-UX's @command{/bin/sh},
8976 @c Keep in sync with tests-environment-backcompat.sh
8977 @example
8978 AM_TESTS_ENVIRONMENT = \
8979 ## Some environment initializations are kept in a separate shell
8980 ## file 'tests-env.sh', which can make it easier to also run tests
8981 ## from the command line.
8982   . $(srcdir)/tests-env.sh; \
8983 ## On Solaris, prefer more POSIX-compliant versions of the standard
8984 ## tools by default.
8985   if test -d /usr/xpg4/bin; then \
8986     PATH=/usr/xpg4/bin:$$PATH; export PATH; \
8987   fi;
8988 @c $$ restore font-lock
8989 ## With this, the test scripts will be able to print diagnostic
8990 ## messages to the original standard error stream, even if the test
8991 ## driver redirects the stderr of the test scripts to a log file
8992 ## before executing them.
8993 AM_TESTS_FD_REDIRECT = 9>&2
8994 @end example
8996 @noindent
8997 Note however that @code{AM_TESTS_ENVIRONMENT} is, for historical and
8998 implementation reasons, @emph{not} supported by the serial harness
8999 (@pxref{Serial Test Harness}).
9001 Automake ensures that each file listed in @code{TESTS} is built before
9002 it is run; you can list both source and derived programs (or scripts)
9003 in @code{TESTS}; the generated rule will look both in @code{srcdir} and
9004 @file{.}.  For instance, you might want to run a C program as a test.
9005 To do this you would list its name in @code{TESTS} and also in
9006 @code{check_PROGRAMS}, and then specify it as you would any other
9007 program.
9009 Programs listed in @code{check_PROGRAMS} (and @code{check_LIBRARIES},
9010 @code{check_LTLIBRARIES}...) are only built during @code{make check},
9011 not during @code{make all}.  You should list there any program needed
9012 by your tests that does not need to be built by @code{make all}.  Note
9013 that @code{check_PROGRAMS} are @emph{not} automatically added to
9014 @code{TESTS} because @code{check_PROGRAMS} usually lists programs used
9015 by the tests, not the tests themselves.  Of course you can set
9016 @code{TESTS = $(check_PROGRAMS)} if all your programs are test cases.
9018 @node Serial Test Harness
9019 @subsection Older (and discouraged) serial test harness
9020 @cindex @option{serial-tests}, Using
9022 First, note that today the use of this harness is strongly discouraged in
9023 favour of the parallel test harness (@pxref{Parallel Test Harness}).
9024 Still, there are @emph{few} situations when the advantages offered by
9025 the parallel harness are irrelevant, and when test concurrency can
9026 even cause tricky problems.  In those cases, it might make sense to
9027 still use the serial harness, for simplicity and reliability (we still
9028 suggest trying to give the parallel harness a shot though).
9030 The serial test harness is enabled by the Automake option
9031 @option{serial-tests}. It operates by simply running the tests serially,
9032 one at the time, without any I/O redirection.  It's up to the user to
9033 implement logging of tests' output, if that's required or desired.
9035 For historical and implementation reasons, the @code{AM_TESTS_ENVIRONMENT}
9036 variable is @emph{not} supported by this harness (it will be silently
9037 ignored if defined); only @code{TESTS_ENVIRONMENT} is, and it is to be
9038 considered a developer-reserved variable.  This is done so that, when
9039 using the serial harness, @code{TESTS_ENVIRONMENT} can be defined to an
9040 invocation of an interpreter through which the tests are to be run.
9041 For instance, the following setup may be used to run tests with Perl:
9043 @example
9044 TESTS_ENVIRONMENT = $(PERL) -Mstrict -w
9045 TESTS = foo.pl bar.pl baz.pl
9046 @end example
9048 @noindent
9049 It's important to note that the use of @code{TESTS_ENVIRONMENT} endorsed
9050 here would be @emph{invalid} with the parallel harness.  That harness
9051 provides a more elegant way to achieve the same effect, with the further
9052 benefit of freeing the @code{TESTS_ENVIRONMENT} variable for the user
9053 (@pxref{Parallel Test Harness}).
9055 Another, less serious limit of the serial harness is that it doesn't
9056 really distinguish between simple failures and hard errors; this is
9057 due to historical reasons only, and might be fixed in future Automake
9058 versions.
9060 @node Parallel Test Harness
9061 @subsection Parallel Test Harness
9063 By default, Automake generated a parallel (concurrent) test harness.  It
9064 features automatic collection of the test scripts output in @file{.log}
9065 files, concurrent execution of tests with @code{make -j}, specification
9066 of inter-test dependencies, lazy reruns of tests that have not completed
9067 in a prior run, and hard errors for exceptional failures.
9069 @anchor{Basics of test metadata}
9070 @vindex TEST_SUITE_LOG
9071 @vindex TESTS
9072 @cindex @file{.log} files
9073 @cindex @file{.trs} files
9074 @cindex test metadata
9075 The parallel test harness operates by defining a set of @command{make}
9076 rules that run the test scripts listed in @code{TESTS}, and, for each
9077 such script, save its output in a corresponding @file{.log} file and
9078 its results (and other ``metadata'', @pxref{API for Custom Test Drivers})
9079 in a corresponding @file{.trs} (as in @b{T}est @b{R}e@b{S}ults) file.
9080 @c We choose the '.trs' extension also because, at the time of writing,
9081 @c it isn't already used for other significant purposes; see e.g.:
9082 @c   - http://filext.com/file-extension/trs
9083 @c   - http://www.file-extensions.org/search/?searchstring=trs
9084 The @file{.log} file will contain all the output emitted by the test on
9085 its standard output and its standard error.  The @file{.trs} file will
9086 contain, among the other things, the results of the test cases run by
9087 the script.
9089 The parallel test harness will also create a summary log file,
9090 @code{TEST_SUITE_LOG}, which defaults to @file{test-suite.log} and requires
9091 a @file{.log} suffix.  This file depends upon all the @file{.log} and
9092 @file{.trs} files created for the test scripts listed in @code{TESTS}.
9094 @vindex VERBOSE
9095 As with the serial harness above, by default one status line is printed
9096 per completed test, and a short summary after the suite has completed.
9097 However, standard output and standard error of the test are redirected
9098 to a per-test log file, so that parallel execution does not produce
9099 intermingled output.  The output from failed tests is collected in the
9100 @file{test-suite.log} file.  If the variable @samp{VERBOSE} is set, this
9101 file is output after the summary.
9103 @vindex TEST_EXTENSIONS
9104 @vindex TEST_LOGS
9105 Each couple of @file{.log} and @file{.trs} files is created when the
9106 corresponding test has completed.  The set of log files is listed in
9107 the read-only variable @code{TEST_LOGS}, and defaults to @code{TESTS},
9108 with the executable extension if any (@pxref{EXEEXT}), as well as any
9109 suffix listed in @code{TEST_EXTENSIONS} removed, and @file{.log} appended.
9110 Results are undefined if a test file name ends in several concatenated
9111 suffixes.  @code{TEST_EXTENSIONS} defaults to @file{.test}; it can be
9112 overridden by the user, in which case any extension listed in it must be
9113 constituted by a dot, followed by a non-digit alphabetic character,
9114 followed by any number of alphabetic characters.
9115 @c Keep in sync with test-extensions.sh
9116 For example, @samp{.sh}, @samp{.T} and @samp{.t1} are valid extensions,
9117 while @samp{.x-y}, @samp{.6c} and @samp{.t.1} are not.
9119 @cindex Configure substitutions in @code{TESTS}
9120 It is important to note that, due to current limitations (unlikely to be
9121 lifted), configure substitutions in the definition of @code{TESTS} can
9122 only work if they will expand to a list of tests that have a suffix listed
9123 in @code{TEST_EXTENSIONS}.
9125 @vindex _LOG_COMPILE
9126 @vindex _LOG_COMPILER
9127 @vindex _LOG_FLAGS
9128 @vindex LOG_COMPILE
9129 @vindex LOG_COMPILER
9130 @vindex LOG_FLAGS
9131 @vindex @var{ext}_LOG_COMPILE
9132 @vindex @var{ext}_LOG_COMPILER
9133 @vindex @var{ext}_LOG_FLAGS
9134 @vindex AM_@var{ext}_LOG_FLAGS
9135 @vindex AM_LOG_FLAGS
9136 For tests that match an extension @code{.@var{ext}} listed in
9137 @code{TEST_EXTENSIONS}, you can provide a custom ``test runner'' using
9138 the variable @code{@var{ext}_LOG_COMPILER} (note the upper-case
9139 extension) and pass options in @code{AM_@var{ext}_LOG_FLAGS} and allow
9140 the user to pass options in @code{@var{ext}_LOG_FLAGS}.  It will cause
9141 all tests with this extension to be called with this runner.  For all
9142 tests without a registered extension, the variables @code{LOG_COMPILER},
9143 @code{AM_LOG_FLAGS}, and @code{LOG_FLAGS} may be used.  For example,
9145 @c Keep in sync with parallel-tests-log-compiler-example.sh
9146 @example
9147 TESTS = foo.pl bar.py baz
9148 TEST_EXTENSIONS = .pl .py
9149 PL_LOG_COMPILER = $(PERL)
9150 AM_PL_LOG_FLAGS = -w
9151 PY_LOG_COMPILER = $(PYTHON)
9152 AM_PY_LOG_FLAGS = -v
9153 LOG_COMPILER = ./wrapper-script
9154 AM_LOG_FLAGS = -d
9155 @end example
9157 @noindent
9158 will invoke @samp{$(PERL) -w foo.pl}, @samp{$(PYTHON) -v bar.py},
9159 and @samp{./wrapper-script -d baz} to produce @file{foo.log},
9160 @file{bar.log}, and @file{baz.log}, respectively.  The @file{foo.trs},
9161 @file{bar.trs} and @file{baz.trs} files will be automatically produced
9162 as a side-effect.
9164 It's important to note that, differently from what we've seen for the
9165 serial test harness (@pxref{Serial Test Harness}), the
9166 @code{AM_TESTS_ENVIRONMENT} and @code{TESTS_ENVIRONMENT} variables
9167 @emph{cannot} be used to define a custom test runner; the
9168 @code{LOG_COMPILER} and @code{LOG_FLAGS} (or their extension-specific
9169 counterparts) should be used instead:
9171 @example
9172 ## This is WRONG!
9173 AM_TESTS_ENVIRONMENT = PERL5LIB='$(srcdir)/lib' $(PERL) -Mstrict -w
9174 @end example
9176 @example
9177 ## Do this instead.
9178 AM_TESTS_ENVIRONMENT = PERL5LIB='$(srcdir)/lib'; export PERL5LIB;
9179 LOG_COMPILER = $(PERL)
9180 AM_LOG_FLAGS = -Mstrict -w
9181 @end example
9183 By default, the test suite harness will run all tests, but there are
9184 several ways to limit the set of tests that are run:
9186 @itemize @bullet
9187 @item
9188 You can set the @code{TESTS} variable.  For example, you can use a
9189 command like this to run only a subset of the tests:
9191 @example
9192 env TESTS="foo.test bar.test" make -e check
9193 @end example
9195 Note however that the command above will unconditionally overwrite the
9196 @file{test-suite.log} file, thus clobbering the recorded results
9197 of any previous testsuite run.  This might be undesirable for packages
9198 whose testsuite takes long time to execute.  Luckily, this problem can
9199 easily be avoided by overriding also @code{TEST_SUITE_LOG} at runtime;
9200 for example,
9202 @c Keep in sync with parallel-tests-log-override-2.sh
9203 @example
9204 env TEST_SUITE_LOG=partial.log TESTS="..." make -e check
9205 @end example
9207 will write the result of the partial testsuite runs to the
9208 @file{partial.log}, without touching @file{test-suite.log}.
9210 @item
9211 You can set the @code{TEST_LOGS} variable.  By default, this variable is
9212 computed at @command{make} run time from the value of @code{TESTS} as
9213 described above.  For example, you can use the following:
9215 @example
9216 set x subset*.log; shift
9217 env TEST_LOGS="foo.log $*" make -e check
9218 @end example
9220 The comments made above about @code{TEST_SUITE_LOG} overriding applies
9221 here too.
9223 @item
9224 @vindex RECHECK_LOGS
9225 @cindex lazy test execution
9226 By default, the test harness removes all old per-test @file{.log} and
9227 @file{.trs} files before it starts running tests to regenerate them.  The
9228 variable @code{RECHECK_LOGS} contains the set of @file{.log} (and, by
9229 implication, @file{.trs}) files which are removed.  @code{RECHECK_LOGS}
9230 defaults to @code{TEST_LOGS}, which means all tests need to be rechecked.
9231 By overriding this variable, you can choose which tests need to be
9232 reconsidered.  For example, you can lazily rerun only those tests which
9233 are outdated, i.e., older than their prerequisite test files, by setting
9234 this variable to the empty value:
9236 @example
9237 env RECHECK_LOGS= make -e check
9238 @end example
9240 @item
9241 @trindex recheck
9242 You can ensure that all tests are rerun which have failed or passed
9243 unexpectedly, by running @code{make recheck} in the test directory.
9244 This convenience target will set @code{RECHECK_LOGS} appropriately
9245 before invoking the main test harness.
9246 @end itemize
9248 @noindent
9249 In order to guarantee an ordering between tests even with @code{make
9250 -j@var{N}}, dependencies between the corresponding @file{.log} files
9251 may be specified through usual @command{make} dependencies.  For example,
9252 the following snippet lets the test named @file{foo-execute.test} depend
9253 upon completion of the test @file{foo-compile.test}:
9255 @example
9256 TESTS = foo-compile.test foo-execute.test
9257 foo-execute.log: foo-compile.log
9258 @end example
9260 @noindent
9261 Please note that this ordering ignores the @emph{results} of required
9262 tests, thus the test @file{foo-execute.test} is run even if the test
9263 @file{foo-compile.test} failed or was skipped beforehand.  Further,
9264 please note that specifying such dependencies currently works only for
9265 tests that end in one of the suffixes listed in @code{TEST_EXTENSIONS}.
9267 Tests without such specified dependencies may be run concurrently with
9268 parallel @command{make -j@var{N}}, so be sure they are prepared for
9269 concurrent execution.
9271 @cindex Unit tests
9272 @c Keep in sync with 'parallel-tests-extra-programs.sh'.
9273 The combination of lazy test execution and correct dependencies between
9274 tests and their sources may be exploited for efficient unit testing
9275 during development.  To further speed up the edit-compile-test cycle, it
9276 may even be useful to specify compiled programs in @code{EXTRA_PROGRAMS}
9277 instead of with @code{check_PROGRAMS}, as the former allows intertwined
9278 compilation and test execution (but note that @code{EXTRA_PROGRAMS} are
9279 not cleaned automatically, @pxref{Uniform}).
9281 The variables @code{TESTS} and @code{XFAIL_TESTS} may contain
9282 conditional parts as well as configure substitutions.  In the latter
9283 case, however, certain restrictions apply: substituted test names
9284 must end with a nonempty test suffix like @file{.test}, so that one of
9285 the inference rules generated by @command{automake} can apply.  For
9286 literal test names, @command{automake} can generate per-target rules
9287 to avoid this limitation.
9289 Please note that it is currently not possible to use @code{$(srcdir)/}
9290 or @code{$(top_srcdir)/} in the @code{TESTS} variable.  This technical
9291 limitation is necessary to avoid generating test logs in the source tree
9292 and has the unfortunate consequence that it is not possible to specify
9293 distributed tests that are themselves generated by means of explicit
9294 rules, in a way that is portable to all @command{make} implementations
9295 (@pxref{Make Target Lookup,,, autoconf, The Autoconf Manual}, the
9296 semantics of FreeBSD and OpenBSD @command{make} conflict with this).
9297 In case of doubt you may want to require to use GNU @command{make},
9298 or work around the issue with inference rules to generate the tests.
9300 @node Custom Test Drivers
9301 @section Custom Test Drivers
9303 @menu
9304 * Overview of Custom Test Drivers Support::
9305 * Declaring Custom Test Drivers::
9306 * API for Custom Test Drivers::
9307 @end menu
9309 @node Overview of Custom Test Drivers Support
9310 @subsection Overview of Custom Test Drivers Support
9312 Starting from Automake version 1.12, the parallel test harness allows
9313 the package authors to use third-party custom test drivers, in case the
9314 default ones are inadequate for their purposes, or do not support their
9315 testing protocol of choice.
9317 A custom test driver is expected to properly run the test programs passed
9318 to it (including the command-line arguments passed to those programs, if
9319 any), to analyze their execution and outcome, to create the @file{.log}
9320 and @file{.trs} files associated to these test runs, and to display the test
9321 results on the console. It is responsibility of the author of the test
9322 driver to ensure that it implements all the above steps meaningfully and
9323 correctly; Automake isn't and can't be of any help here.  On the other
9324 hand, the Automake-provided code for testsuite summary generation offers
9325 support for test drivers allowing several test results per test script,
9326 if they take care to register such results properly (@pxref{Log files
9327 generation and test results recording}).
9329 The exact details of how test scripts' results are to be determined and
9330 analyzed is left to the individual drivers.  Some drivers might only
9331 consider the test script exit status (this is done for example by the
9332 default test driver used by the parallel test harness, described
9333 in the previous section).  Other drivers might implement more complex and
9334 advanced test protocols, which might require them to parse and interpreter
9335 the output emitted by the test script they're running (examples of such
9336 protocols are TAP and SubUnit).
9338 It's very important to note that, even when using custom test drivers,
9339 most of the infrastructure described in the previous section about the
9340 parallel harness remains in place; this includes:
9342 @itemize
9343 @item
9344 list of test scripts defined in @code{TESTS}, and overridable at
9345 runtime through the redefinition of @code{TESTS} or @code{TEST_LOGS};
9346 @item
9347 concurrency through the use of @command{make}'s option @option{-j};
9348 @item
9349 per-test @file{.log} and @file{.trs} files, and generation of a summary
9350 @file{.log} file from them;
9351 @item
9352 @code{recheck} target, @code{RECHECK_LOGS} variable, and lazy reruns
9353 of tests;
9354 @item
9355 inter-test dependencies;
9356 @item
9357 support for @code{check_*} variables (@code{check_PROGRAMS},
9358 @code{check_LIBRARIES}, ...);
9359 @item
9360 use of @code{VERBOSE} environment variable to get verbose output on
9361 testsuite failures;
9362 @item
9363 definition and honoring of @code{TESTS_ENVIRONMENT},
9364 @code{AM_TESTS_ENVIRONMENT} and @code{AM_TESTS_FD_REDIRECT}
9365 variables;
9366 @item
9367 definition of generic and extension-specific @code{LOG_COMPILER} and
9368 @code{LOG_FLAGS} variables.
9369 @end itemize
9371 @noindent
9372 On the other hand, the exact semantics of how (and if) testsuite output
9373 colorization, @code{XFAIL_TESTS}, and hard errors are supported and
9374 handled is left to the individual test drivers.
9376 @c TODO: We should really add a working example in the doc/ directory,
9377 @c TODO: and reference if from here.
9379 @node Declaring Custom Test Drivers
9380 @subsection Declaring Custom Test Drivers
9382 @vindex _LOG_DRIVER
9383 @vindex _LOG_DRIVER_FLAGS
9384 @vindex LOG_DRIVER
9385 @vindex LOG_DRIVER_FLAGS
9386 @vindex @var{ext}_LOG_DRIVER
9387 @vindex @var{ext}_LOG_DRIVER_FLAGS
9388 @vindex AM_@var{ext}_LOG_DRIVER_FLAGS
9389 @vindex AM_LOG_DRIVER_FLAGS
9390 Custom testsuite drivers are declared by defining the make variables
9391 @code{LOG_DRIVER} or @code{@var{ext}_LOG_DRIVER} (where @var{ext} must
9392 be declared in @code{TEST_EXTENSIONS}).  They must be defined to
9393 programs or scripts that will be used to drive the execution, logging,
9394 and outcome report of the tests with corresponding extensions (or of
9395 those with no registered extension in the case of @code{LOG_DRIVER}).
9396 Clearly, multiple distinct test drivers can be declared in the same
9397 @file{Makefile.am}.  Note moreover that the @code{LOG_DRIVER} variables
9398 are @emph{not} a substitute for the @code{LOG_COMPILER} variables: the
9399 two sets of variables can, and often do, usefully and legitimately
9400 coexist.
9402 @c TODO: We should really be able to point to a clarifying example here!
9404 The developer-reserved variable @code{AM_LOG_DRIVER_FLAGS} and the
9405 user-reserved variable @code{LOG_DRIVER_FLAGS} can be used to define
9406 flags that will be passed to each invocation of @code{LOG_DRIVER},
9407 with the user-defined flags obviously taking precedence over the
9408 developer-reserved ones.  Similarly, for each extension @var{ext}
9409 declared in @code{TEST_EXTENSIONS}, flags listed in
9410 @code{AM_@var{ext}_LOG_DRIVER_FLAGS} and
9411 @code{@var{ext}_LOG_DRIVER_FLAGS} will be passed to
9412 invocations of @code{@var{ext}_LOG_DRIVER}.
9414 @node API for Custom Test Drivers
9415 @subsection API for Custom Test Drivers
9417 Note that @emph{the APIs described here are still highly experimental},
9418 and will very likely undergo tightenings and likely also extensive changes
9419 in the future, to accommodate for new features or to satisfy additional
9420 portability requirements.
9422 The main characteristic of these APIs is that they are designed to share
9423 as much infrastructure, semantics, and implementation details as possible
9424 with the parallel test harness and its default driver.
9426 @menu
9427 * Command-line arguments for test drivers::
9428 * Log files generation and test results recording::
9429 * Testsuite progress output::
9430 @end menu
9432 @node Command-line arguments for test drivers
9433 @subsubsection Command-line arguments for test drivers
9435 A custom driver can rely on various command-line options and arguments
9436 being passed to it automatically by the Automake-generated test harness.
9437 It is @emph{mandatory} that it understands all of them (even if the exact
9438 interpretation of the associated semantics can legitimately change
9439 between a test driver and another, and even be a no-op in some drivers).
9441 @noindent
9442 Here is the list of options:
9444 @table @option
9445 @item --test-name=@var{NAME}
9446 The name of the test, with VPATH prefix (if any) removed.  This can have a
9447 suffix and a directory component (as in e.g., @file{sub/foo.test}), and is
9448 mostly meant to be used in console reports about testsuite advancements and
9449 results (@pxref{Testsuite progress output}).
9450 @item --log-file=@file{@var{PATH}.log}
9451 The @file{.log} file the test driver must create (@pxref{Basics of
9452 test metadata}).  If it has a directory component (as in e.g.,
9453 @file{sub/foo.log}), the test harness will ensure that such directory
9454 exists @emph{before} the test driver is called.
9455 @item --trs-file=@file{@var{PATH}.trs}
9456 The @file{.trs} file the test driver must create (@pxref{Basics of
9457 test metadata}).  If it has a directory component (as in e.g.,
9458 @file{sub/foo.trs}), the test harness will ensure that such directory
9459 exists @emph{before} the test driver is called.
9460 @item --color-tests=@{yes|no@}
9461 Whether the console output should be colorized or not (@pxref{Simple
9462 tests and color-tests}, to learn when this option gets activated and
9463 when it doesn't).
9464 @item --expect-failure=@{yes|no@}
9465 Whether the tested program is expected to fail.
9466 @item --enable-hard-errors=@{yes|no@}
9467 Whether ``hard errors'' in the tested program should be treated differently
9468 from normal failures or not (the default should be @code{yes}).  The exact
9469 meaning of ``hard error'' is highly dependent from the test protocols or
9470 conventions in use.
9471 @item --
9472 Explicitly terminate the list of options.
9473 @end table
9475 @noindent
9476 The first non-option argument passed to the test driver is the program to
9477 be run, and all the following ones are command-line options and arguments
9478 for this program.
9480 Note that the exact semantics attached to the @option{--color-tests},
9481 @option{--expect-failure} and @option{--enable-hard-errors} options are
9482 left up to the individual test drivers.  Still, having a behaviour
9483 compatible or at least similar to that provided by the default driver
9484 is advised, as that would offer a better consistency and a more pleasant
9485 user experience.
9487 @node Log files generation and test results recording
9488 @subsubsection Log files generation and test results recording
9490 The test driver must correctly generate the files specified by the
9491 @option{--log-file} and @option{--trs-file} option (even when the tested
9492 program fails or crashes).
9494 The @file{.log} file should ideally contain all the output produced by the
9495 tested program, plus optionally other information that might facilitate
9496 debugging or analysis of bug reports.  Apart from that, its format is
9497 basically free.
9499 The @file{.trs} file is used to register some metadata through the use
9500 of custom reStructuredText fields.  This metadata is expected to be
9501 employed in various ways by the parallel test harness; for example, to
9502 count the test results when printing the testsuite summary, or to decide
9503 which tests to re-run upon @command{make recheck}.  Unrecognized metadata
9504 in a @file{.trs} file is currently ignored by the harness, but this might
9505 change in the future. The list of currently recognized metadata follows.
9507 @table @code
9509 @item :test-result:
9510 @cindex Register test result
9511 @cindex Register test case result
9512 @cindex Test result, registering
9513 @cindex Test case result, registering
9514 @cindex @code{:test-result:}
9515 @cindex reStructuredText field, @code{:test-result:}
9516 The test driver must use this field to register the results of @emph{each}
9517 test case run by a test script file.  Several @code{:test-result:} fields
9518 can be present in the same @file{.trs} file; this is done in order to
9519 support test protocols that allow a single test script to run more test
9520 cases.
9522 @c Keep this in sync with lib/am/check-am:$(TEST_SUITE_LOG).
9523 The only recognized test results are currently @code{PASS}, @code{XFAIL},
9524 @code{SKIP}, @code{FAIL}, @code{XPASS} and @code{ERROR}.  These results,
9525 when declared with @code{:test-result:}, can be optionally followed by
9526 text holding the name and/or a brief description of the corresponding
9527 test; the harness will ignore such extra text when generating
9528 @file{test-suite.log} and preparing the testsuite summary.
9530 @c Keep in sync with 'test-metadata-recheck.sh'.
9531 @item @code{:recheck:}
9532 @cindex :recheck:
9533 @cindex reStructuredText field, @code{:recheck:}
9534 If this field is present and defined to @code{no}, then the corresponding
9535 test script will @emph{not} be run upon a @command{make recheck}.  What
9536 happens when two or more @code{:recheck:} fields are present in the same
9537 @file{.trs} file is undefined behaviour.
9539 @c Keep in sync with 'test-metadata-global-log.sh'.
9540 @item @code{:copy-in-global-log:}
9541 @cindex :copy-in-global-log:
9542 @cindex reStructuredText field, @code{:copy-in-global-log:}
9543 If this field is present and defined to @code{no}, then the content
9544 of the @file{.log} file will @emph{not} be copied into the global
9545 @file{test-suite.log}.  We allow to forsake such copying because, while
9546 it can be useful in debugging and analysis of bug report, it can also be
9547 just a waste of space in normal situations, e.g., when a test script is
9548 successful.  What happens when two or more @code{:copy-in-global-log:}
9549 fields are present in the same @file{.trs} file is undefined behaviour.
9551 @c Keep in sync with 'test-metadata-global-result.sh'.
9552 @item @code{:test-global-result:}
9553 @cindex :test-global-result:
9554 @cindex reStructuredText field, @code{:test-global-result:}
9555 This is used to declare the "global result" of the script.  Currently,
9556 the value of this field is needed only to be reported (more or less
9557 verbatim) in the generated global log file @code{$(TEST_SUITE_LOG)},
9558 so it's quite free-form.  For example, a test script which run 10 test
9559 cases, 6 of which pass and 4 of which are skipped, could reasonably have
9560 a @code{PASS/SKIP} value for this field, while a test script which run
9561 19 successful tests and one failed test could have an @code{ALMOST
9562 PASSED} value.  What happens when two or more @code{:test-global-result:}
9563 fields are present in the same @file{.trs} file is undefined behaviour.
9564 @end table
9566 @noindent
9567 Let's see a small example.  Assume a @file{.trs} file contains the
9568 following lines:
9570 @example
9571 :test-result: PASS server starts
9572 :global-log-copy: no
9573 :test-result: PASS HTTP/1.1 request
9574 :test-result: FAIL HTTP/1.0 request
9575 :recheck: yes
9576 :test-result: SKIP HTTPS request (TLS library wasn't available)
9577 :test-result: PASS server stops
9578 @end example
9580 @noindent
9581 Then the corresponding test script will be re-run by @command{make check},
9582 will contribute with @emph{five} test results to the testsuite summary
9583 (three of these tests being successful, one failed, and one skipped), and
9584 the content of the corresponding @file{.log} file will @emph{not} be
9585 copied in the global log file @file{test-suite.log}.
9587 @node Testsuite progress output
9588 @subsubsection Testsuite progress output
9590 A custom test driver also has the task of displaying, on the standard
9591 output, the test results as soon as they become available.  Depending on
9592 the protocol in use, it can also display the reasons for failures and
9593 skips, and, more generally, any useful diagnostic output (but remember
9594 that each line on the screen is precious, so that cluttering the screen
9595 with overly verbose information is bad idea).  The exact format of this
9596 progress output is left up to the test driver; in fact, a custom test
9597 driver might @emph{theoretically} even decide not to do any such report,
9598 leaving it all to the testsuite summary (that would be a very lousy idea,
9599 of course, and serves only to illustrate the flexibility that is
9600 granted here).
9602 Remember that consistency is good; so, if possible, try to be consistent
9603 with the output of the built-in Automake test drivers, providing a similar
9604 ``look & feel''.  In particular, the testsuite progress output should be
9605 colorized when the @option{--color-tests} is passed to the driver.  On the
9606 other end, if you are using a known and widespread test protocol with
9607 well-established implementations, being consistent with those
9608 implementations' output might be a good idea too.
9610 @node Using the TAP test protocol
9611 @section Using the TAP test protocol
9613 @menu
9614 * Introduction to TAP::
9615 * Use TAP with the Automake test harness::
9616 * Incompatibilities with other TAP parsers and drivers::
9617 * Links and external resources on TAP::
9618 @end menu
9620 @node Introduction to TAP
9621 @subsection Introduction to TAP
9623 TAP, the Test Anything Protocol, is a simple text-based interface between
9624 testing modules or programs and a test harness.  The tests (also called
9625 ``TAP producers'' in this context) write test results in a simple format
9626 on standard output; a test harness (also called ``TAP consumer'') will
9627 parse and interpret these results, and properly present them to the user,
9628 and/or register them for later analysis.  The exact details of how this
9629 is accomplished can vary among different test harnesses.  The Automake
9630 harness will present the results on the console in the usual
9631 fashion (@pxref{Testsuite progress on console}), and will use the
9632 @file{.trs} files (@pxref{Basics of test metadata}) to store the test
9633 results and related metadata.  Apart from that, it will try to remain
9634 as much compatible as possible with pre-existing and widespread utilities,
9635 such as the @uref{http://search.cpan.org/~andya/Test-Harness/bin/prove,
9636 @command{prove} utility}, at least for the simpler usages.
9638 TAP started its life as part of the test harness for Perl, but today
9639 it has been (mostly) standardized, and has various independent
9640 implementations in different languages; among them, C, C++, Perl,
9641 Python, PHP, and Java.  For a semi-official specification of the
9642 TAP protocol, please refer to the documentation of
9643 @uref{http://search.cpan.org/~petdance/Test-Harness/lib/Test/Harness/TAP.pod,
9644       @samp{Test::Harness::TAP}}.
9646 The most relevant real-world usages of TAP are obviously in the testsuites
9647 of @command{perl} and of many perl modules.  Still, also other important
9648 third-party packages, such as @uref{http://git-scm.com/, @command{git}},
9649 use TAP in their testsuite.
9651 @node Use TAP with the Automake test harness
9652 @subsection Use TAP with the Automake test harness
9654 Currently, the TAP driver that comes with Automake requires some by-hand
9655 steps on the developer's part (this situation should hopefully be improved
9656 in future Automake versions).  You'll have to grab the @file{tap-driver.sh}
9657 script from the Automake distribution by hand, copy it in your source tree,
9658 and use the Automake support for third-party test drivers to instruct the
9659 harness to use the @file{tap-driver.sh} script and the awk program found
9660 by @code{AM_INIT_AUTOMAKE} to run your TAP-producing tests.  See the example
9661 below for clarification.
9663 Apart from the options common to all the Automake test drivers
9664 (@pxref{Command-line arguments for test drivers}), the @file{tap-driver.sh}
9665 supports the following options, whose names are chosen for enhanced
9666 compatibility with the @command{prove} utility.
9668 @table @option
9669 @c Keep in sync with 'tap-exit.sh' and 'tap-signal.tap'.
9670 @item --ignore-exit
9671 Causes the test driver to ignore the exit status of the test scripts;
9672 by default, the driver will report an error if the script exits with a
9673 non-zero status.  This option has effect also on non-zero exit statuses
9674 due to termination by a signal.
9675 @item --comments
9676 Instruct the test driver to display TAP diagnostic (i.e., lines beginning
9677 with the @samp{#} character) in the testsuite progress output too; by
9678 default, TAP diagnostic is only copied to the @file{.log} file.
9679 @item --no-comments
9680 Revert the effects of @option{--comments}.
9681 @item --merge
9682 Instruct the test driver to merge the test scripts' standard error into
9683 their standard output.  This is necessary if you want to ensure that
9684 diagnostics from the test scripts are displayed in the correct order
9685 relative to test results; this can be of great help in debugging
9686 (especially if your test scripts are shell scripts run with shell
9687 tracing active).  As a downside, this option might cause the test
9688 harness to get confused if anything that appears on standard error
9689 looks like a test result.
9690 @item --no-merge
9691 Revert the effects of @option{--merge}.
9692 @item --diagnostic-string=@var{STRING}
9693 Change the string that introduces TAP diagnostic from the default value
9694 of ``@code{#}'' to @code{@var{STRING}}.  This can be useful if your
9695 TAP-based test scripts produce verbose output on which they have limited
9696 control (because, say, the output comes from other tools invoked in the
9697 scripts), and it might contain text that gets spuriously interpreted as
9698 TAP diagnostic: such an issue can be solved by redefining the string that
9699 activates TAP diagnostic to a value you know won't appear by chance in
9700 the tests' output.  Note however that this feature is non-standard, as
9701 the ``official'' TAP protocol does not allow for such a customization; so
9702 don't use it if you can avoid it.
9703 @end table
9705 @noindent
9706 Here is an example of how the TAP driver can be set up and used.
9708 @c Keep in sync with tap-doc2.sh
9709 @example
9710 % @kbd{cat configure.ac}
9711 AC_INIT([GNU Try Tap], [1.0], [bug-automake@@gnu.org])
9712 AC_CONFIG_AUX_DIR([build-aux])
9713 AM_INIT_AUTOMAKE([foreign -Wall -Werror])
9714 AC_CONFIG_FILES([Makefile])
9715 AC_REQUIRE_AUX_FILE([tap-driver.sh])
9716 AC_OUTPUT
9718 % @kbd{cat Makefile.am}
9719 TEST_LOG_DRIVER = env AM_TAP_AWK='$(AWK)' $(SHELL) \
9720                   $(top_srcdir)/build-aux/tap-driver.sh
9721 TESTS = foo.test bar.test baz.test
9722 EXTRA_DIST = $(TESTS)
9724 % @kbd{cat foo.test}
9725 #!/bin/sh
9726 echo 1..4 # Number of tests to be executed.
9727 echo 'ok 1 - Swallows fly'
9728 echo 'not ok 2 - Caterpillars fly # TODO metamorphosis in progress'
9729 echo 'ok 3 - Pigs fly # SKIP not enough acid'
9730 echo '# I just love word plays ...'
9731 echo 'ok 4 - Flies fly too :-)'
9733 % @kbd{cat bar.test}
9734 #!/bin/sh
9735 echo 1..3
9736 echo 'not ok 1 - Bummer, this test has failed.'
9737 echo 'ok 2 - This passed though.'
9738 echo 'Bail out! Ennui kicking in, sorry...'
9739 echo 'ok 3 - This will not be seen.'
9741 % @kbd{cat baz.test}
9742 #!/bin/sh
9743 echo 1..1
9744 echo ok 1
9745 # Exit with error, even if all the tests have been successful.
9746 exit 7
9748 % @kbd{cp @var{PREFIX}/share/automake-@var{APIVERSION}/tap-driver.sh .}
9749 % @kbd{autoreconf -vi && ./configure && make check}
9751 PASS: foo.test 1 - Swallows fly
9752 XFAIL: foo.test 2 - Caterpillars fly # TODO metamorphosis in progress
9753 SKIP: foo.test 3 - Pigs fly # SKIP not enough acid
9754 PASS: foo.test 4 - Flies fly too :-)
9755 FAIL: bar.test 1 - Bummer, this test has failed.
9756 PASS: bar.test 2 - This passed though.
9757 ERROR: bar.test - Bail out! Ennui kicking in, sorry...
9758 PASS: baz.test 1
9759 ERROR: baz.test - exited with status 7
9761 Please report to bug-automake@@gnu.org
9763 % @kbd{echo exit status: $?}
9764 exit status: 1
9766 @c Keep the "skewed" indentation below, it produces pretty PDF output.
9767 % @kbd{env TEST_LOG_DRIVER_FLAGS='--comments --ignore-exit' \
9768       TESTS='foo.test baz.test' make -e check}
9770 PASS: foo.test 1 - Swallows fly
9771 XFAIL: foo.test 2 - Caterpillars fly # TODO metamorphosis in progress
9772 SKIP: foo.test 3 - Pigs fly # SKIP not enough acid
9773 # foo.test: I just love word plays...
9774 PASS: foo.test 4 - Flies fly too :-)
9775 PASS: baz.test 1
9777 % @kbd{echo exit status: $?}
9778 exit status: 0
9779 @end example
9781 @node Incompatibilities with other TAP parsers and drivers
9782 @subsection Incompatibilities with other TAP parsers and drivers
9784 For implementation or historical reasons, the TAP driver and harness as
9785 implemented by Automake have some minors incompatibilities with the
9786 mainstream versions, which you should be aware of.
9788 @itemize @bullet
9789 @item
9790 A @code{Bail out!} directive doesn't stop the whole testsuite, but only
9791 the test script it occurs in.  This doesn't follow TAP specifications,
9792 but on the other hand it maximizes compatibility (and code sharing) with
9793 the ``hard error'' concept of the default testsuite driver.
9794 @item
9795 The @code{version} and @code{pragma} directives are not supported.
9796 @item
9797 The @option{--diagnostic-string} option of our driver allows to modify
9798 the string that introduces TAP diagnostic from the default value
9799 of ``@code{#}''.  The standard TAP protocol has currently no way to
9800 allow this, so if you use it your diagnostic will be lost to more
9801 compliant tools like @command{prove} and @code{Test::Harness}
9802 @item
9803 And there are probably some other small and yet undiscovered
9804 incompatibilities, especially in corner cases or with rare usages.
9805 @end itemize
9807 @node Links and external resources on TAP
9808 @subsection Links and external resources on TAP
9810 @noindent
9811 Here are some links to more extensive official or third-party
9812 documentation and resources about the TAP protocol and related
9813 tools and libraries.
9814 @itemize @bullet
9815 @item
9816 @uref{http://search.cpan.org/~petdance/Test-Harness/lib/Test/Harness/TAP.pod,
9817       @samp{Test::Harness::TAP}},
9818 the (mostly) official documentation about the TAP format and protocol.
9819 @item
9820 @uref{http://search.cpan.org/~andya/Test-Harness/bin/prove,
9821       @command{prove}},
9822 the most famous command-line TAP test driver, included in the distribution
9823 of @command{perl} and
9824 @uref{http://search.cpan.org/~andya/Test-Harness/lib/Test/Harness.pm,
9825       @samp{Test::Harness}}.
9826 @item
9827 The @uref{http://testanything.org/wiki/index.php/Main_Page,TAP wiki}.
9828 @item
9829 A ``gentle introduction'' to testing for perl coders:
9830 @uref{http://search.cpan.org/dist/Test-Simple/lib/Test/Tutorial.pod,
9831       @samp{Test::Tutorial}}.
9832 @item
9833 @uref{http://search.cpan.org/~mschwern/Test-Simple/lib/Test/Simple.pm,
9834       @samp{Test::Simple}}
9836 @uref{http://search.cpan.org/~mschwern/Test-Simple/lib/Test/More.pm,
9837       @samp{Test::More}},
9838 the standard perl testing libraries, which are based on TAP.
9839 @item
9840 @uref{http://www.eyrie.org/~eagle/software/c-tap-harness/,C TAP Harness},
9841 a C-based project implementing both a TAP producer and a TAP consumer.
9842 @item
9843 @uref{http://www.tap4j.org/,tap4j},
9844 a Java-based project implementing both a TAP producer and a TAP consumer.
9845 @end itemize
9847 @node DejaGnu Tests
9848 @section DejaGnu Tests
9850 If @uref{ftp://ftp.gnu.org/gnu/dejagnu/, @command{dejagnu}} appears in
9851 @code{AUTOMAKE_OPTIONS}, then a @command{dejagnu}-based test suite is
9852 assumed.  The variable @code{DEJATOOL} is a list of names that are
9853 passed, one at a time, as the @option{--tool} argument to
9854 @command{runtest} invocations; it defaults to the name of the package.
9856 The variable @code{RUNTESTDEFAULTFLAGS} holds the @option{--tool} and
9857 @option{--srcdir} flags that are passed to dejagnu by default; this can be
9858 overridden if necessary.
9859 @vindex RUNTESTDEFAULTFLAGS
9861 The variables @code{EXPECT} and @code{RUNTEST} can
9862 also be overridden to provide project-specific values.  For instance,
9863 you will need to do this if you are testing a compiler toolchain,
9864 because the default values do not take into account host and target
9865 names.
9866 @opindex dejagnu
9867 @vindex DEJATOOL
9868 @vindex EXPECT
9869 @vindex RUNTEST
9871 The contents of the variable @code{RUNTESTFLAGS} are passed to the
9872 @code{runtest} invocation.  This is considered a ``user variable''
9873 (@pxref{User Variables}).  If you need to set @command{runtest} flags in
9874 @file{Makefile.am}, you can use @code{AM_RUNTESTFLAGS} instead.
9875 @vindex RUNTESTFLAGS
9876 @vindex AM_RUNTESTFLAGS
9878 @cindex @file{site.exp}
9879 Automake will generate rules to create a local @file{site.exp} file,
9880 defining various variables detected by @command{configure}.  This file
9881 is automatically read by DejaGnu.  It is OK for the user of a package
9882 to edit this file in order to tune the test suite.  However this is
9883 not the place where the test suite author should define new variables:
9884 this should be done elsewhere in the real test suite code.
9885 Especially, @file{site.exp} should not be distributed.
9887 Still, if the package author has legitimate reasons to extend
9888 @file{site.exp} at @command{make} time, he can do so by defining
9889 the variable @code{EXTRA_DEJAGNU_SITE_CONFIG}; the files listed
9890 there will be considered @file{site.exp} prerequisites, and their
9891 content will be appended to it (in the same order in which they
9892 appear in @code{EXTRA_DEJAGNU_SITE_CONFIG}).  Note that files are
9893 @emph{not} distributed by default.
9895 For more information regarding DejaGnu test suites, see @ref{Top, , ,
9896 dejagnu, The DejaGnu Manual}.
9898 @node Install Tests
9899 @section Install Tests
9901 The @code{installcheck} target is available to the user as a way to
9902 run any tests after the package has been installed.  You can add tests
9903 to this by writing an @code{installcheck-local} rule.
9906 @node Rebuilding
9907 @chapter Rebuilding Makefiles
9908 @cindex rebuild rules
9910 Automake generates rules to automatically rebuild @file{Makefile}s,
9911 @file{configure}, and other derived files like @file{Makefile.in}.
9913 @acindex AM_MAINTAINER_MODE
9914 If you are using @code{AM_MAINTAINER_MODE} in @file{configure.ac}, then
9915 these automatic rebuilding rules are only enabled in maintainer mode.
9917 @vindex CONFIG_STATUS_DEPENDENCIES
9918 @vindex CONFIGURE_DEPENDENCIES
9919 @cindex @file{version.sh}, example
9920 @cindex @file{version.m4}, example
9922 Sometimes it is convenient to supplement the rebuild rules for
9923 @file{configure} or @file{config.status} with additional dependencies.
9924 The variables @code{CONFIGURE_DEPENDENCIES} and
9925 @code{CONFIG_STATUS_DEPENDENCIES} can be used to list these extra
9926 dependencies.  These variables should be defined in all
9927 @file{Makefile}s of the tree (because these two rebuild rules are
9928 output in all them), so it is safer and easier to @code{AC_SUBST} them
9929 from @file{configure.ac}.  For instance, the following statement will
9930 cause @file{configure} to be rerun each time @file{version.sh} is
9931 changed.
9933 @c Keep in sync with remake-config-status-dependencies.sh
9934 @example
9935 AC_SUBST([CONFIG_STATUS_DEPENDENCIES], ['$(top_srcdir)/version.sh'])
9936 @end example
9938 @noindent
9939 Note the @samp{$(top_srcdir)/} in the file name.  Since this variable
9940 is to be used in all @file{Makefile}s, its value must be sensible at
9941 any level in the build hierarchy.
9943 Beware not to mistake @code{CONFIGURE_DEPENDENCIES} for
9944 @code{CONFIG_STATUS_DEPENDENCIES}.
9946 @c Keep in sync with remake-configure-dependencies.sh
9947 @code{CONFIGURE_DEPENDENCIES} adds dependencies to the
9948 @file{configure} rule, whose effect is to run @command{autoconf}.  This
9949 variable should be seldom used, because @command{automake} already tracks
9950 @code{m4_include}d files.  However it can be useful when playing
9951 tricky games with @code{m4_esyscmd} or similar non-recommendable
9952 macros with side effects.  Be also aware that interactions of this
9953 variable with the @ref{Autom4te Cache, , autom4te cache, autoconf,
9954 The Autoconf Manual} are quite problematic and can cause subtle
9955 breakage, so you might want to disable the cache if you want to use
9956 @code{CONFIGURE_DEPENDENCIES}.
9958 @code{CONFIG_STATUS_DEPENDENCIES} adds dependencies to the
9959 @file{config.status} rule, whose effect is to run @file{configure}.
9960 This variable should therefore carry any non-standard source that may
9961 be read as a side effect of running @command{configure}, like @file{version.sh}
9962 in the example above.
9964 Speaking of @file{version.sh} scripts, we recommend against them
9965 today.  They are mainly used when the version of a package is updated
9966 automatically by a script (e.g., in daily builds).  Here is what some
9967 old-style @file{configure.ac}s may look like:
9969 @example
9970 AC_INIT
9971 . $srcdir/version.sh
9972 AM_INIT_AUTOMAKE([name], $VERSION_NUMBER)
9973 @dots{}
9974 @end example
9976 @noindent
9977 Here, @file{version.sh} is a shell fragment that sets
9978 @code{VERSION_NUMBER}.  The problem with this example is that
9979 @command{automake} cannot track dependencies (listing @file{version.sh}
9980 in @command{CONFIG_STATUS_DEPENDENCIES}, and distributing this file is up
9981 to the user), and that it uses the obsolete form of @code{AC_INIT} and
9982 @code{AM_INIT_AUTOMAKE}.  Upgrading to the new syntax is not
9983 straightforward, because shell variables are not allowed in
9984 @code{AC_INIT}'s arguments.  We recommend that @file{version.sh} be
9985 replaced by an M4 file that is included by @file{configure.ac}:
9987 @example
9988 m4_include([version.m4])
9989 AC_INIT([name], VERSION_NUMBER)
9990 AM_INIT_AUTOMAKE
9991 @dots{}
9992 @end example
9994 @noindent
9995 Here @file{version.m4} could contain something like
9996 @samp{m4_define([VERSION_NUMBER], [1.2])}.  The advantage of this
9997 second form is that @command{automake} will take care of the
9998 dependencies when defining the rebuild rule, and will also distribute
9999 the file automatically.  An inconvenience is that @command{autoconf}
10000 will now be rerun each time the version number is bumped, when only
10001 @file{configure} had to be rerun in the previous setup.
10004 @node Options
10005 @chapter Changing Automake's Behavior
10007 @menu
10008 * Options generalities::        Semantics of Automake option
10009 * List of Automake options::    A comprehensive list of Automake options
10010 @end menu
10012 @node Options generalities
10013 @section Options generalities
10015 Various features of Automake can be controlled by options.  Except where
10016 noted otherwise, options can be specified in one of several ways.  Most
10017 options can be applied on a per-@file{Makefile} basis when listed in a
10018 special @file{Makefile} variable named @code{AUTOMAKE_OPTIONS}.  Some
10019 of these options only make sense when specified in the toplevel
10020 @file{Makefile.am} file.  Options are applied globally to all processed
10021 @file{Makefile} files when listed in the first argument of
10022 @code{AM_INIT_AUTOMAKE} in @file{configure.ac}, and some options which
10023 require changes to the @command{configure} script can only be specified
10024 there.  These are annotated below.
10026 As a general rule, options specified in @code{AUTOMAKE_OPTIONS} take
10027 precedence over those specified in @code{AM_INIT_AUTOMAKE}, which in
10028 turn take precedence over those specified on the command line.
10030 Also, some care must be taken about the interactions among strictness
10031 level and warning categories.  As a general rule, strictness-implied
10032 warnings are overridden by those specified by explicit options.  For
10033 example, even if @samp{portability} warnings are disabled by default
10034 in @option{foreign} strictness, an usage like this will end up enabling
10035 them:
10037 @example
10038 AUTOMAKE_OPTIONS = -Wportability foreign
10039 @end example
10041 However, a strictness level specified in a higher-priority context
10042 will override all the explicit warnings specified in a lower-priority
10043 context.  For example, if @file{configure.ac} contains:
10045 @example
10046 AM_INIT_AUTOMAKE([-Wportability])
10047 @end example
10049 @noindent
10050 and @file{Makefile.am} contains:
10052 @example
10053 AUTOMAKE_OPTIONS = foreign
10054 @end example
10056 @noindent
10057 then @samp{portability} warnings will be @emph{disabled} in
10058 @file{Makefile.am}.
10060 @node List of Automake options
10061 @section List of Automake options
10063 @vindex AUTOMAKE_OPTIONS
10065 @table @asis
10066 @item @option{gnits}
10067 @itemx @option{gnu}
10068 @itemx @option{foreign}
10069 @cindex Option, @option{gnits}
10070 @cindex Option, @option{gnu}
10071 @cindex Option, @option{foreign}
10072 @opindex gnits
10073 @opindex gnu
10074 @opindex foreign
10076 Set the strictness as appropriate.  The @option{gnits} option also
10077 implies options @option{readme-alpha} and @option{check-news}.
10079 @item @option{check-news}
10080 @cindex Option, @option{check-news}
10081 @opindex check-news
10082 Cause @samp{make dist} to fail unless the current version number appears
10083 in the first few lines of the @file{NEWS} file.
10085 @item @option{dejagnu}
10086 @cindex Option, @option{dejagnu}
10087 @opindex dejagnu
10088 Cause @command{dejagnu}-specific rules to be generated.  @xref{DejaGnu Tests}.
10090 @item @option{dist-bzip2}
10091 @cindex Option, @option{dist-bzip2}
10092 @opindex dist-bzip2
10093 Hook @code{dist-bzip2} to @code{dist}.
10094 @trindex dist-bzip2
10096 @item @option{dist-lzip}
10097 @cindex Option, @option{dist-lzip}
10098 @opindex dist-lzip
10099 Hook @code{dist-lzip} to @code{dist}.
10100 @trindex dist-lzip
10102 @item @option{dist-xz}
10103 @cindex Option, @option{dist-xz}
10104 @opindex dist-xz
10105 Hook @code{dist-xz} to @code{dist}.
10106 @trindex dist-xz
10108 @item @option{dist-zip}
10109 @cindex Option, @option{dist-zip}
10110 @opindex dist-zip
10111 Hook @code{dist-zip} to @code{dist}.
10112 @trindex dist-zip
10114 @item @option{dist-shar}
10115 @cindex Option, @option{dist-shar}
10116 @opindex dist-shar
10117 Hook @code{dist-shar} to @code{dist}.  Use of this option
10118 is deprecated, as the @samp{shar} format is obsolescent and
10119 problematic.  Support for it will be removed altogether in
10120 Automake 2.0.
10121 @trindex dist-shar
10123 @item @option{dist-tarZ}
10124 @cindex Option, @option{dist-tarZ}
10125 @opindex dist-tarZ
10126 Hook @code{dist-tarZ} to @code{dist}.  Use of this option
10127 is deprecated, as the @samp{compress} program is obsolete.
10128 Support for it will be removed altogether in Automake 2.0.
10129 @trindex dist-tarZ
10131 @item @option{filename-length-max=99}
10132 @cindex Option, @option{filename-length-max=99}
10133 @opindex filename-length-max=99
10134 Abort if file names longer than 99 characters are found during
10135 @samp{make dist}.  Such long file names are generally considered not to
10136 be portable in tarballs.  See the @option{tar-v7} and @option{tar-ustar}
10137 options below.  This option should be used in the top-level
10138 @file{Makefile.am} or as an argument of @code{AM_INIT_AUTOMAKE} in
10139 @file{configure.ac}, it will be ignored otherwise.  It will also be
10140 ignored in sub-packages of nested packages (@pxref{Subpackages}).
10142 @item @option{info-in-builddir}
10143 @cindex Option, @option{info-in-builddir}
10144 @opindex info-in-builddir
10145 Instruct Automake to place the generated @file{.info} files in the
10146 @code{builddir} rather than in the @code{srcdir}.  Note that this
10147 might make VPATH builds with some non-GNU make implementations more
10148 brittle.
10150 @item @option{no-define}
10151 @cindex Option, @option{no-define}
10152 @opindex no-define
10153 This option is meaningful only when passed as an argument to
10154 @code{AM_INIT_AUTOMAKE}.  It will prevent the @code{PACKAGE} and
10155 @code{VERSION} variables from being @code{AC_DEFINE}d.  But notice
10156 that they will remain defined as shell variables in the generated
10157 @code{configure}, and as make variables in the generated
10158 @code{Makefile}; this is deliberate, and required for backward
10159 compatibility.
10161 @item @option{no-dependencies}
10162 @cindex Option, @option{no-dependencies}
10163 @opindex no-dependencies
10164 This is similar to using @option{--ignore-deps} on the command line,
10165 but is useful for those situations where you don't have the necessary
10166 bits to make automatic dependency tracking work
10167 (@pxref{Dependencies}).  In this case the effect is to effectively
10168 disable automatic dependency tracking.
10170 @item @option{no-dist}
10171 @cindex Option, @option{no-dist}
10172 @opindex no-dist
10173 Don't emit any code related to @code{dist} target.  This is useful
10174 when a package has its own method for making distributions.
10176 @item @option{no-dist-gzip}
10177 @cindex Option, @option{no-dist-gzip}
10178 @opindex no-dist-gzip
10179 Do not hook @code{dist-gzip} to @code{dist}.
10180 @trindex no-dist-gzip
10182 @item @option{no-exeext}
10183 @cindex Option, @option{no-exeext}
10184 @opindex no-exeext
10185 If your @file{Makefile.am} defines a rule for target @code{foo}, it
10186 will override a rule for a target named @samp{foo$(EXEEXT)}.  This is
10187 necessary when @code{EXEEXT} is found to be empty.  However, by
10188 default @command{automake} will generate an error for this use.  The
10189 @option{no-exeext} option will disable this error.  This is intended for
10190 use only where it is known in advance that the package will not be
10191 ported to Windows, or any other operating system using extensions on
10192 executables.
10194 @item @option{no-installinfo}
10195 @cindex Option, @option{no-installinfo}
10196 @opindex no-installinfo
10197 The generated @file{Makefile.in} will not cause info pages to be built
10198 or installed by default.  However, @code{info} and @code{install-info}
10199 targets will still be available.  This option is disallowed at
10200 @option{gnu} strictness and above.
10201 @trindex info
10202 @trindex install-info
10204 @item @option{no-installman}
10205 @cindex Option, @option{no-installman}
10206 @opindex no-installman
10207 The generated @file{Makefile.in} will not cause man pages to be
10208 installed by default.  However, an @code{install-man} target will still
10209 be available for optional installation.  This option is disallowed at
10210 @option{gnu} strictness and above.
10211 @trindex install-man
10213 @item @option{nostdinc}
10214 @cindex Option, @option{nostdinc}
10215 @opindex nostdinc
10216 This option can be used to disable the standard @option{-I} options that
10217 are ordinarily automatically provided by Automake.
10219 @item @option{no-texinfo.tex}
10220 @cindex Option, @option{no-texinfo.tex}
10221 @opindex no-texinfo.tex
10222 Don't require @file{texinfo.tex}, even if there are texinfo files in
10223 this directory.
10225 @item @option{serial-tests}
10226 @cindex Option, @option{serial-tests}
10227 @opindex serial-tests
10228 Enable the older serial test suite harness for @code{TESTS} (@pxref{Serial
10229 Test Harness}, for more information).
10231 @item @option{parallel-tests}
10232 @cindex Option, @option{parallel-tests}
10233 @opindex parallel-tests
10234 Enable test suite harness for @code{TESTS} that can run tests in parallel
10235 (@pxref{Parallel Test Harness}, for more information).  This option is
10236 only kept for backward-compatibility, since the parallel test harness is
10237 the default now.
10239 @item @option{readme-alpha}
10240 @cindex Option, @option{readme-alpha}
10241 @opindex readme-alpha
10242 If this release is an alpha release, and the file @file{README-alpha}
10243 exists, then it will be added to the distribution.  If this option is
10244 given, version numbers are expected to follow one of two forms.  The
10245 first form is @samp{@var{major}.@var{minor}.@var{alpha}}, where each
10246 element is a number; the final period and number should be left off for
10247 non-alpha releases.  The second form is
10248 @samp{@var{major}.@var{minor}@var{alpha}}, where @var{alpha} is a
10249 letter; it should be omitted for non-alpha releases.
10251 @item @option{std-options}
10252 @cindex Options, @option{std-options}
10253 @cindex @samp{make installcheck}, testing @option{--help} and @option{--version}
10254 @cindex @option{--help} check
10255 @cindex @option{--version} check
10256 @opindex std-options
10258 Make the @code{installcheck} rule check that installed scripts and
10259 programs support the @option{--help} and @option{--version} options.
10260 This also provides a basic check that the program's
10261 run-time dependencies are satisfied after installation.
10263 @vindex AM_INSTALLCHECK_STD_OPTIONS_EXEMPT
10264 In a few situations, programs (or scripts) have to be exempted from this
10265 test.  For instance, @command{false} (from GNU coreutils) is never
10266 successful, even for @option{--help} or @option{--version}.  You can list
10267 such programs in the variable @code{AM_INSTALLCHECK_STD_OPTIONS_EXEMPT}.
10268 Programs (not scripts) listed in this variable should be suffixed by
10269 @samp{$(EXEEXT)} for the sake of Windows or OS/2.  For instance, suppose we
10270 build @file{false} as a program but @file{true.sh} as a script, and that
10271 neither of them support @option{--help} or @option{--version}:
10273 @example
10274 AUTOMAKE_OPTIONS = std-options
10275 bin_PROGRAMS = false ...
10276 bin_SCRIPTS = true.sh ...
10277 AM_INSTALLCHECK_STD_OPTIONS_EXEMPT = false$(EXEEXT) true.sh
10278 @end example
10280 @item @option{subdir-objects}
10281 @cindex Options, @option{subdir-objects}
10282 @opindex subdir-objects
10283 If this option is specified, then objects are placed into the
10284 subdirectory of the build directory corresponding to the subdirectory of
10285 the source file.  For instance, if the source file is
10286 @file{subdir/file.cxx}, then the output file would be
10287 @file{subdir/file.o}.
10289 @anchor{tar-formats}
10290 @item @option{tar-v7}
10291 @itemx @option{tar-ustar}
10292 @itemx @option{tar-pax}
10293 @cindex Option, @option{tar-v7}
10294 @cindex Option, @option{tar-ustar}
10295 @cindex Option, @option{tar-pax}
10296 @cindex @command{tar} formats
10297 @cindex v7 @command{tar} format
10298 @cindex ustar format
10299 @cindex pax format
10300 @opindex tar-v7
10301 @opindex tar-ustar
10302 @opindex tar-pax
10304 These three mutually exclusive options select the tar format to use
10305 when generating tarballs with @samp{make dist}.  (The tar file created
10306 is then compressed according to the set of @option{no-dist-gzip},
10307 @option{dist-bzip2}, @option{dist-lzip}, @option{dist-xz} and
10308 @option{dist-tarZ} options in use.)
10310 These options must be passed as arguments to @code{AM_INIT_AUTOMAKE}
10311 (@pxref{Macros}) because they can require additional configure checks.
10312 Automake will complain if it sees such options in an
10313 @code{AUTOMAKE_OPTIONS} variable.
10315 @option{tar-v7} selects the old V7 tar format.  This is the historical
10316 default.  This antiquated format is understood by all tar
10317 implementations and supports file names with up to 99 characters.  When
10318 given longer file names some tar implementations will diagnose the
10319 problem while other will generate broken tarballs or use non-portable
10320 extensions.  Furthermore, the V7 format cannot store empty
10321 directories.  When using this format, consider using the
10322 @option{filename-length-max=99} option to catch file names too long.
10324 @option{tar-ustar} selects the ustar format defined by POSIX
10325 1003.1-1988.  This format is believed to be old enough to be portable.
10326 It fully supports empty directories.  It can store file names with up
10327 to 256 characters, provided that the file name can be split at
10328 directory separator in two parts, first of them being at most 155
10329 bytes long.  So, in most cases the maximum file name length will be
10330 shorter than 256 characters.  However you may run against broken tar
10331 implementations that incorrectly handle file names longer than 99
10332 characters (please report them to @email{@value{PACKAGE_BUGREPORT}} so we
10333 can document this accurately).
10335 @option{tar-pax} selects the new pax interchange format defined by POSIX
10336 1003.1-2001.  It does not limit the length of file names.  However,
10337 this format is very young and should probably be restricted to
10338 packages that target only very modern platforms.  There are moves to
10339 change the pax format in an upward-compatible way, so this option may
10340 refer to a more recent version in the future.
10342 @xref{Formats, , Controlling the Archive Format, tar, GNU Tar}, for
10343 further discussion about tar formats.
10345 @command{configure} knows several ways to construct these formats.  It
10346 will not abort if it cannot find a tool up to the task (so that the
10347 package can still be built), but @samp{make dist} will fail.
10349 @item @var{version}
10350 @cindex Option, @var{version}
10351 A version number (e.g., @samp{0.30}) can be specified.  If Automake is not
10352 newer than the version specified, creation of the @file{Makefile.in}
10353 will be suppressed.
10355 @item @option{-W@var{category}} or @option{--warnings=@var{category}}
10356 @cindex Option, warnings
10357 @cindex Option, @option{-W@var{category}}
10358 @cindex Option, @option{--warnings=@var{category}}
10359 These options behave exactly like their command-line counterpart
10360 (@pxref{automake Invocation}).  This allows you to enable or disable some
10361 warning categories on a per-file basis.  You can also setup some warnings
10362 for your entire project; for instance, try @samp{AM_INIT_AUTOMAKE([-Wall])}
10363 in your @file{configure.ac}.
10365 @end table
10367 Unrecognized options are diagnosed by @command{automake}.
10369 If you want an option to apply to all the files in the tree, you can use
10370 the @code{AM_INIT_AUTOMAKE} macro in @file{configure.ac}.
10371 @xref{Macros}.
10374 @node Miscellaneous
10375 @chapter Miscellaneous Rules
10377 There are a few rules and variables that didn't fit anywhere else.
10379 @menu
10380 * Tags::                        Interfacing to cscope, etags and mkid
10381 * Suffixes::                    Handling new file extensions
10382 @end menu
10385 @node Tags
10386 @section Interfacing to @command{etags}
10388 @cindex @file{TAGS} support
10390 Automake will generate rules to generate @file{TAGS} files for use with
10391 GNU Emacs under some circumstances.
10393 @trindex tags
10394 If any C, C++ or Fortran 77 source code or headers are present, then
10395 @code{tags} and @code{TAGS} rules will be generated for the directory.
10396 All files listed using the @code{_SOURCES}, @code{_HEADERS}, and
10397 @code{_LISP} primaries will be used to generate tags.  Note that
10398 generated source files that are not distributed must be declared in
10399 variables like @code{nodist_noinst_HEADERS} or
10400 @code{nodist_@var{prog}_SOURCES} or they will be ignored.
10402 A @code{tags} rule will be output at the topmost directory of a
10403 multi-directory package.  When run from this topmost directory,
10404 @samp{make tags} will generate a @file{TAGS} file that includes by
10405 reference all @file{TAGS} files from subdirectories.
10407 The @code{tags} rule will also be generated if the variable
10408 @code{ETAGS_ARGS} is defined.  This variable is intended for use in
10409 directories that contain taggable source that @command{etags} does
10410 not understand.  The user can use the @code{ETAGSFLAGS} to pass
10411 additional flags to @command{etags}; @code{AM_ETAGSFLAGS} is also
10412 available for use in @file{Makefile.am}.
10413 @vindex ETAGS_ARGS
10414 @vindex ETAGSFLAGS
10415 @vindex AM_ETAGSFLAGS
10417 Here is how Automake generates tags for its source, and for nodes in its
10418 Texinfo file:
10420 @example
10421 ETAGS_ARGS = automake.in --lang=none \
10422  --regex='/^@@node[ \t]+\([^,]+\)/\1/' automake.texi
10423 @end example
10425 If you add file names to @code{ETAGS_ARGS}, you will probably also
10426 want to define @code{TAGS_DEPENDENCIES}.  The contents of this variable
10427 are added directly to the dependencies for the @code{tags} rule.
10428 @vindex TAGS_DEPENDENCIES
10430 Automake also generates a @code{ctags} rule that can be used to
10431 build @command{vi}-style @file{tags} files.  The variable @code{CTAGS}
10432 is the name of the program to invoke (by default @command{ctags});
10433 @code{CTAGSFLAGS} can be used by the user to pass additional flags,
10434 and @code{AM_CTAGSFLAGS} can be used by the @file{Makefile.am}.
10436 @trindex id
10437 Automake will also generate an @code{ID} rule that will run
10438 @command{mkid} on the source.  This is only supported on a
10439 directory-by-directory basis.
10441 Similarly, the @code{cscope} rule will create a list of all the source
10442 files in the tree and run @command{cscope} to build an inverted index
10443 database.  The variable @code{CSCOPE} is the name of the program to invoke
10444 (by default @command{cscope}); @code{CSCOPEFLAGS} and
10445 @code{CSCOPE_ARGS} can be used by the user to pass additional flags and
10446 file names respectively, while @code{AM_CSCOPEFLAGS} can be used by the
10447 @file{Makefile.am}.  Note that, currently, the Automake-provided
10448 @code{cscope} support, when used in a VPATH build, might not work well
10449 with non-GNU make implementations (especially with make implementations
10450 performing @ref{Automatic Rule Rewriting, , VPATH rewrites, autoconf,
10451 The Autoconf Manual}).
10453 Finally, Automake also emits rules to support the
10454 @uref{http://www.gnu.org/software/global/, GNU Global Tags program}.
10455 The @code{GTAGS} rule runs Global Tags and puts the
10456 result in the top build directory.  The variable @code{GTAGS_ARGS}
10457 holds arguments that are passed to @command{gtags}.
10458 @vindex GTAGS_ARGS
10461 @node Suffixes
10462 @section Handling new file extensions
10464 @cindex Adding new @code{SUFFIXES}
10465 @cindex @code{SUFFIXES}, adding
10466 @vindex SUFFIXES
10468 It is sometimes useful to introduce a new implicit rule to handle a file
10469 type that Automake does not know about.
10471 For instance, suppose you had a compiler that could compile @file{.foo}
10472 files to @file{.o} files.  You would simply define a suffix rule for
10473 your language:
10475 @example
10476 .foo.o:
10477         foocc -c -o $@@ $<
10478 @end example
10480 Then you could directly use a @file{.foo} file in a @code{_SOURCES}
10481 variable and expect the correct results:
10483 @example
10484 bin_PROGRAMS = doit
10485 doit_SOURCES = doit.foo
10486 @end example
10488 This was the simpler and more common case.  In other cases, you will
10489 have to help Automake to figure out which extensions you are defining your
10490 suffix rule for.  This usually happens when your extension does not
10491 start with a dot.  Then, all you have to do is to put a list of new
10492 suffixes in the @code{SUFFIXES} variable @strong{before} you define your
10493 implicit rule.
10495 For instance, the following definition prevents Automake from misinterpreting
10496 the @samp{.idlC.cpp:} rule as an attempt to transform @file{.idlC} files into
10497 @file{.cpp} files.
10499 @c Keep in sync with suffix7.sh
10500 @example
10501 SUFFIXES = .idl C.cpp
10502 .idlC.cpp:
10503         # whatever
10504 @end example
10506 As you may have noted, the @code{SUFFIXES} variable behaves like the
10507 @code{.SUFFIXES} special target of @command{make}.  You should not touch
10508 @code{.SUFFIXES} yourself, but use @code{SUFFIXES} instead and let
10509 Automake generate the suffix list for @code{.SUFFIXES}.  Any given
10510 @code{SUFFIXES} go at the start of the generated suffixes list, followed
10511 by Automake generated suffixes not already in the list.
10513 @node Include
10514 @chapter Include
10516 @cmindex include
10517 @cindex Including @file{Makefile} fragment
10518 @cindex @file{Makefile} fragment, including
10520 Automake supports an @code{include} directive that  can be used to
10521 include other @file{Makefile} fragments when @command{automake} is run.
10522 Note that these fragments are read and interpreted by @command{automake},
10523 not by @command{make}.  As with conditionals, @command{make} has no idea that
10524 @code{include} is in use.
10526 There are two forms of @code{include}:
10528 @table @code
10529 @item include $(srcdir)/file
10530 Include a fragment that is found relative to the current source
10531 directory.
10533 @item include $(top_srcdir)/file
10534 Include a fragment that is found relative to the top source directory.
10535 @end table
10537 Note that if a fragment is included inside a conditional, then the
10538 condition applies to the entire contents of that fragment.
10540 Makefile fragments included this way are always distributed because
10541 they are needed to rebuild @file{Makefile.in}.
10543 Inside a fragment, the construct @code{%reldir%} is replaced with the
10544 directory of the fragment relative to the base @file{Makefile.am}.
10545 Similarly, @code{%canon_reldir%} is replaced with the canonicalized
10546 (@pxref{Canonicalization}) form of @code{%reldir%}.  As a convenience,
10547 @code{%D%} is a synonym for @code{%reldir%}, and @code{%C%}
10548 is a synonym for @code{%canon_reldir%}.
10550 A special feature is that if the fragment is in the same directory as
10551 the base @file{Makefile.am} (i.e., @code{%reldir%} is @code{.}), then
10552 @code{%reldir%} and @code{%canon_reldir%} will expand to the empty
10553 string as well as eat, if present, a following slash or underscore
10554 respectively.
10556 Thus, a makefile fragment might look like this:
10558 @example
10559 bin_PROGRAMS += %reldir%/mumble
10560 %canon_reldir%_mumble_SOURCES = %reldir%/one.c
10561 @end example
10563 @node Conditionals
10564 @chapter Conditionals
10566 @cindex Conditionals
10568 Automake supports a simple type of conditionals.
10570 These conditionals are not the same as conditionals in
10571 GNU Make.  Automake conditionals are checked at configure time by the
10572 @file{configure} script, and affect the translation from
10573 @file{Makefile.in} to @file{Makefile}.  They are based on options passed
10574 to @file{configure} and on results that @file{configure} has discovered
10575 about the host system.  GNU Make conditionals are checked at @command{make}
10576 time, and are based on variables passed to the make program or defined
10577 in the @file{Makefile}.
10579 Automake conditionals will work with any make program.
10581 @menu
10582 * Usage of Conditionals::       Declaring conditional content
10583 * Limits of Conditionals::      Enclosing complete statements
10584 @end menu
10586 @node Usage of Conditionals
10587 @section Usage of Conditionals
10589 @acindex AM_CONDITIONAL
10590 Before using a conditional, you must define it by using
10591 @code{AM_CONDITIONAL} in the @file{configure.ac} file (@pxref{Macros}).
10593 @defmac AM_CONDITIONAL (@var{conditional}, @var{condition})
10594 The conditional name, @var{conditional}, should be a simple string
10595 starting with a letter and containing only letters, digits, and
10596 underscores.  It must be different from @samp{TRUE} and @samp{FALSE}
10597 that are reserved by Automake.
10599 The shell @var{condition} (suitable for use in a shell @code{if}
10600 statement) is evaluated when @command{configure} is run.  Note that you
10601 must arrange for @emph{every} @code{AM_CONDITIONAL} to be invoked every
10602 time @command{configure} is run.  If @code{AM_CONDITIONAL} is run
10603 conditionally (e.g., in a shell @code{if} statement), then the result
10604 will confuse @command{automake}.
10605 @end defmac
10607 @cindex @option{--enable-debug}, example
10608 @cindex Example conditional @option{--enable-debug}
10609 @cindex Conditional example, @option{--enable-debug}
10611 Conditionals typically depend upon options that the user provides to
10612 the @command{configure} script.  Here is an example of how to write a
10613 conditional that is true if the user uses the @option{--enable-debug}
10614 option.
10616 @example
10617 AC_ARG_ENABLE([debug],
10618 [  --enable-debug    Turn on debugging],
10619 [case "$@{enableval@}" in
10620   yes) debug=true ;;
10621   no)  debug=false ;;
10622   *) AC_MSG_ERROR([bad value $@{enableval@} for --enable-debug]) ;;
10623 esac],[debug=false])
10624 AM_CONDITIONAL([DEBUG], [test x$debug = xtrue])
10625 @end example
10627 Here is an example of how to use that conditional in @file{Makefile.am}:
10629 @cmindex if
10630 @cmindex endif
10631 @cmindex else
10633 @example
10634 if DEBUG
10635 DBG = debug
10636 else
10637 DBG =
10638 endif
10639 noinst_PROGRAMS = $(DBG)
10640 @end example
10642 This trivial example could also be handled using @code{EXTRA_PROGRAMS}
10643 (@pxref{Conditional Programs}).
10645 You may only test a single variable in an @code{if} statement, possibly
10646 negated using @samp{!}.  The @code{else} statement may be omitted.
10647 Conditionals may be nested to any depth.  You may specify an argument to
10648 @code{else} in which case it must be the negation of the condition used
10649 for the current @code{if}.  Similarly you may specify the condition
10650 that is closed on the @code{endif} line:
10652 @example
10653 if DEBUG
10654 DBG = debug
10655 else !DEBUG
10656 DBG =
10657 endif !DEBUG
10658 @end example
10660 @noindent
10661 Unbalanced conditions are errors.  The @code{if}, @code{else}, and
10662 @code{endif} statements should not be indented, i.e., start on column
10663 one.
10665 The @code{else} branch of the above two examples could be omitted,
10666 since assigning the empty string to an otherwise undefined variable
10667 makes no difference.
10669 @acindex AM_COND_IF
10670 In order to allow access to the condition registered by
10671 @code{AM_CONDITIONAL} inside @file{configure.ac}, and to allow
10672 conditional @code{AC_CONFIG_FILES}, @code{AM_COND_IF} may be used:
10674 @defmac AM_COND_IF (@var{conditional}, @ovar{if-true}, @ovar{if-false})
10675 If @var{conditional} is fulfilled, execute @var{if-true}, otherwise
10676 execute @var{if-false}.  If either branch contains @code{AC_CONFIG_FILES},
10677 it will cause @command{automake} to output the rules for the respective
10678 files only for the given condition.
10679 @end defmac
10681 @code{AM_COND_IF} macros may be nested when m4 quotation is used
10682 properly (@pxref{M4 Quotation, ,, autoconf, The Autoconf Manual}).
10684 @cindex Example conditional @code{AC_CONFIG_FILES}
10685 @cindex @code{AC_CONFIG_FILES}, conditional
10687 Here is an example of how to define a conditional config file:
10689 @example
10690 AM_CONDITIONAL([SHELL_WRAPPER], [test "x$with_wrapper" = xtrue])
10691 AM_COND_IF([SHELL_WRAPPER],
10692            [AC_CONFIG_FILES([wrapper:wrapper.in])])
10693 @end example
10695 @node Limits of Conditionals
10696 @section Limits of Conditionals
10698 Conditionals should enclose complete statements like variables or
10699 rules definitions.  Automake cannot deal with conditionals used inside
10700 a variable definition, for instance, and is not even able to diagnose
10701 this situation.  The following example would not work:
10703 @example
10704 # This syntax is not understood by Automake
10705 AM_CPPFLAGS = \
10706   -DFEATURE_A \
10707 if WANT_DEBUG
10708   -DDEBUG \
10709 endif
10710   -DFEATURE_B
10711 @end example
10713 However the intended definition of @code{AM_CPPFLAGS} can be achieved
10714 with
10716 @example
10717 if WANT_DEBUG
10718   DEBUGFLAGS = -DDEBUG
10719 endif
10720 AM_CPPFLAGS = -DFEATURE_A $(DEBUGFLAGS) -DFEATURE_B
10721 @end example
10723 @noindent
10726 @example
10727 AM_CPPFLAGS = -DFEATURE_A
10728 if WANT_DEBUG
10729 AM_CPPFLAGS += -DDEBUG
10730 endif
10731 AM_CPPFLAGS += -DFEATURE_B
10732 @end example
10734 More details and examples of conditionals are described alongside
10735 various Automake features in this manual (@pxref{Conditional
10736 Subdirectories}, @pxref{Conditional Sources}, @pxref{Conditional
10737 Programs}, @pxref{Conditional Libtool Libraries}, @pxref{Conditional
10738 Libtool Sources}).
10740 @node Silencing Make
10741 @chapter Silencing @command{make}
10743 @cindex Silent @command{make}
10744 @cindex Silencing @command{make}
10745 @cindex Silent rules
10746 @cindex Silent @command{make} rules
10748 @menu
10749 * Make verbosity::              Make is verbose by default
10750 * Tricks For Silencing Make::   Standard and generic ways to silence make
10751 * Automake Silent Rules::       How Automake can help in silencing make
10752 @end menu
10754 @node Make verbosity
10755 @section Make is verbose by default
10757 Normally, when executing the set of rules associated with a target,
10758 @command{make} prints each rule before it is executed.  This behaviour,
10759 while having been in place for a long time, and being even mandated by
10760 the POSIX standard, starkly violates the ``silence is golden'' UNIX
10761 principle@footnote{See also
10762 @uref{http://catb.org/~esr/writings/taoup/html/ch11s09.html}.}:
10764 @quotation
10765 When a program has nothing interesting or surprising to say, it should
10766 say nothing.  Well-behaved Unix programs do their jobs unobtrusively,
10767 with a minimum of fuss and bother.  Silence is golden.
10768 @end quotation
10770 In fact, while such verbosity of @command{make} can theoretically be
10771 useful to track bugs and understand reasons of failures right away, it
10772 can also hide warning and error messages from @command{make}-invoked
10773 tools, drowning them in a flood of uninteresting and seldom useful
10774 messages, and thus allowing them to go easily undetected.
10776 This problem can be very annoying, especially for developers, who usually
10777 know quite well what's going on behind the scenes, and for whom the
10778 verbose output from @command{make} ends up being mostly noise that hampers
10779 the easy detection of potentially important warning messages.
10781 @node Tricks For Silencing Make
10782 @section Standard and generic ways to silence make
10784 Here we describe some common idioms/tricks to obtain a quieter make
10785 output, with their relative advantages and drawbacks.  In the next
10786 section (@ref{Automake Silent Rules}) we'll see how Automake can help
10787 in this respect, providing more elaborate and flexible idioms.
10789 @itemize @bullet
10791 @item @command{make -s}
10793 This simply causes @command{make} not to print @emph{any} rule before
10794 executing it.
10796 The @option{-s} flag is mandated by POSIX, universally supported, and
10797 its purpose and function are easy to understand.
10799 But it also has its serious limitations too.  First of all, it embodies
10800 an ``all or nothing'' strategy, i.e., either everything is silenced, or
10801 nothing is; this lack of granularity can sometimes be a fatal flaw.
10802 Moreover, when the @option{-s} flag is used, the @command{make} output
10803 might turn out to be too much terse; in case of errors, the user won't
10804 be able to easily see what rule or command have caused them, or even,
10805 in case of tools with poor error reporting, what the errors were!
10807 @item @command{make >/dev/null || make}
10809 Apparently, this perfectly obeys the ``silence is golden'' rule: warnings
10810 from stderr are passed through, output reporting is done only in case of
10811 error, and in that case it should provide a verbose-enough report to allow
10812 an easy determination of the error location and causes.
10814 However, calling @command{make} two times in a row might hide errors
10815 (especially intermittent ones), or subtly change the expected semantic
10816 of the @command{make} calls --- things these which can clearly make
10817 debugging and error assessment very difficult.
10819 @item @command{make --no-print-directory}
10821 This is GNU @command{make} specific.  When called with the
10822 @option{--no-print-directory} option, GNU @command{make} will disable
10823 printing of the working directory by invoked sub-@command{make}s (the
10824 well-known ``@i{Entering/Leaving directory ...}'' messages).  This helps
10825 to decrease the verbosity of the output, but experience has shown that
10826 it can also often render debugging considerably harder in projects using
10827 deeply-nested @command{make} recursion.
10829 As an aside, notice that the @option{--no-print-directory} option is
10830 automatically activated if the @option{-s} flag is used.
10832 @c TODO: Other tricks?
10833 @c TODO: Maybe speak about the @code{.SILENT} target?
10834 @c TODO:  - Pros: More granularity on what to silence.
10835 @c TODO:  - Cons: No easy way to temporarily override.
10837 @end itemize
10839 @node Automake Silent Rules
10840 @section How Automake can help in silencing make
10842 The tricks and idioms for silencing @command{make} described in the
10843 previous section can be useful from time to time, but we've seen that
10844 they all have their serious drawbacks and limitations.  That's why
10845 automake provides support for a more advanced and flexible way of
10846 obtaining quieter output from @command{make} (for most rules at least).
10848 To give the gist of what Automake can do in this respect, here is a simple
10849 comparison between a typical @command{make} output (where silent rules
10850 are disabled) and one with silent rules enabled:
10852 @example
10853 % @kbd{cat Makefile.am}
10854 bin_PROGRAMS = foo
10855 foo_SOURCES = main.c func.c
10856 % @kbd{cat main.c}
10857 int main (void) @{ return func (); @}  /* func used undeclared */
10858 % @kbd{cat func.c}
10859 int func (void) @{ int i; return i; @} /* i used uninitialized */
10861 @i{The make output is by default very verbose.  This causes warnings
10862 from the compiler to be somewhat hidden, and not immediate to spot.}
10863 % @kbd{make CFLAGS=-Wall}
10864 gcc -DPACKAGE_NAME=\"foo\" -DPACKAGE_TARNAME=\"foo\" ...
10865 -DPACKAGE_STRING=\"foo\ 1.0\" -DPACKAGE_BUGREPORT=\"\" ...
10866 -DPACKAGE=\"foo\" -DVERSION=\"1.0\" -I. -Wall -MT main.o
10867 -MD -MP -MF .deps/main.Tpo -c -o main.o main.c
10868 main.c: In function â€˜main’:
10869 main.c:3:3: warning: implicit declaration of function â€˜func’
10870 mv -f .deps/main.Tpo .deps/main.Po
10871 gcc -DPACKAGE_NAME=\"foo\" -DPACKAGE_TARNAME=\"foo\" ...
10872 -DPACKAGE_STRING=\"foo\ 1.0\" -DPACKAGE_BUGREPORT=\"\" ...
10873 -DPACKAGE=\"foo\" -DVERSION=\"1.0\" -I. -Wall -MT func.o
10874 -MD -MP -MF .deps/func.Tpo -c -o func.o func.c
10875 func.c: In function â€˜func’:
10876 func.c:4:3: warning: â€˜i’ used uninitialized in this function
10877 mv -f .deps/func.Tpo .deps/func.Po
10878 gcc -Wall -o foo main.o func.o
10880 @i{Clean up, so that we we can rebuild everything from scratch.}
10881 % @kbd{make clean}
10882 test -z "foo" || rm -f foo
10883 rm -f *.o
10885 @i{Silent rules enabled: the output is minimal but informative.  In
10886 particular, the warnings from the compiler stick out very clearly.}
10887 % @kbd{make V=0 CFLAGS=-Wall}
10888   CC     main.o
10889 main.c: In function â€˜main’:
10890 main.c:3:3: warning: implicit declaration of function â€˜func’
10891   CC     func.o
10892 func.c: In function â€˜func’:
10893 func.c:4:3: warning: â€˜i’ used uninitialized in this function
10894   CCLD   foo
10895 @end example
10897 @cindex silent rules and libtool
10898 Also, in projects using @command{libtool}, the use of silent rules can
10899 automatically enable the @command{libtool}'s @option{--silent} option:
10901 @example
10902 % @kbd{cat Makefile.am}
10903 lib_LTLIBRARIES = libx.la
10905 % @kbd{make # Both make and libtool are verbose by default.}
10907 libtool: compile: gcc -DPACKAGE_NAME=\"foo\" ... -DLT_OBJDIR=\".libs/\"
10908   -I. -g -O2 -MT libx.lo -MD -MP -MF .deps/libx.Tpo -c libx.c -fPIC
10909   -DPIC -o .libs/libx.o
10910 mv -f .deps/libx.Tpo .deps/libx.Plo
10911 /bin/sh ./libtool --tag=CC --mode=link gcc -g -O2 -o libx.la -rpath
10912   /usr/local/lib libx.lo
10913 libtool: link: gcc -shared .libs/libx.o -Wl,-soname -Wl,libx.so.0
10914   -o .libs/libx.so.0.0.0
10915 libtool: link: cd .libs && rm -f libx.so && ln -s libx.so.0.0.0 libx.so
10918 % @kbd{make V=0}
10919   CC     libx.lo
10920   CCLD   libx.la
10921 @end example
10923 For Automake-generated @file{Makefile}s, the user may influence the
10924 verbosity at @command{configure} run time as well as at @command{make}
10925 run time:
10927 @itemize @bullet
10928 @item
10929 @opindex --enable-silent-rules
10930 @opindex --disable-silent-rules
10931 Passing @option{--enable-silent-rules} to @command{configure} will cause
10932 build rules to be less verbose; the option @option{--disable-silent-rules}
10933 will cause normal verbose output.
10934 @item
10935 @vindex @code{V}
10936 At @command{make} run time, the default chosen at @command{configure}
10937 time may be overridden: @code{make V=1} will produce verbose output,
10938 @code{make V=0} less verbose output.
10939 @end itemize
10941 @cindex default verbosity for silent rules
10942 Note that silent rules are @emph{disabled} by default; the user must
10943 enable them explicitly at either @command{configure} run time or at
10944 @command{make} run time.  We think that this is a good policy, since
10945 it provides the casual user with enough information to prepare a good
10946 bug report in case anything breaks.
10948 Still, notwithstanding the rationales above, a developer who really
10949 wants to make silent rules enabled by default in his own package can
10950 do so by calling @code{AM_SILENT_RULES([yes])} in @file{configure.ac}.
10952 @c Keep in sync with silent-configsite.sh
10953 Users who prefer to have silent rules enabled by default can edit their
10954 @file{config.site} file to make the variable @code{enable_silent_rules}
10955 default to @samp{yes}.  This should still allow disabling silent rules
10956 at @command{configure} time and at @command{make} time.
10958 @c FIXME: there's really a need to specify this explicitly?
10959 For portability to different @command{make} implementations, package authors
10960 are advised to not set the variable @code{V} inside the @file{Makefile.am}
10961 file, to allow the user to override the value for subdirectories as well.
10963 To work at its best, the current implementation of this feature normally
10964 uses nested variable expansion @samp{$(@var{var1}$(V))}, a @file{Makefile}
10965 feature that is not required by POSIX 2008 but is widely supported in
10966 practice.  On the rare @command{make} implementations that do not support
10967 nested variable expansion, whether rules are silent is always determined at
10968 configure time, and cannot be overridden at make time.  Future versions of
10969 POSIX are likely to require nested variable expansion, so this minor
10970 limitation should go away with time.
10972 @vindex @code{AM_V_GEN}
10973 @vindex @code{AM_V_at}
10974 @vindex @code{AM_DEFAULT_VERBOSITY}
10975 @vindex @code{AM_V}
10976 @vindex @code{AM_DEFAULT_V}
10977 To extend the silent mode to your own rules, you have few choices:
10979 @itemize @bullet
10981 @item
10982 You can use the predefined variable @code{AM_V_GEN} as a prefix to
10983 commands that should output a status line in silent mode, and
10984 @code{AM_V_at} as a prefix to commands that should not output anything
10985 in silent mode.  When output is to be verbose, both of these variables
10986 will expand to the empty string.
10988 @item
10989 You can silence a recipe unconditionally with @code{@@}, and then use
10990 the predefined variable @code{AM_V_P} to know whether make is being run
10991 in silent or verbose mode, adjust the verbose information your recipe
10992 displays accordingly:
10994 @example
10995 generate-headers:
10996         @set -e; \
10997         ... [commands defining a shell variable '$headers'] ...; \
10998         if $(AM_V_P); then set -x; else echo " GEN   [headers]"; fi; \
10999         rm -f $$headers && generate-header --flags $$headers
11000 @end example
11002 @item
11003 You can add your own variables, so strings of your own choice are shown.
11004 The following snippet shows how you would define your own equivalent of
11005 @code{AM_V_GEN}:
11007 @example
11008 pkg_verbose = $(pkg_verbose_@@AM_V@@)
11009 pkg_verbose_ = $(pkg_verbose_@@AM_DEFAULT_V@@)
11010 pkg_verbose_0 = @@echo PKG-GEN $@@;
11012 foo: foo.in
11013         $(pkg_verbose)cp $(srcdir)/foo.in $@@
11014 @end example
11016 @end itemize
11018 As a final note, observe that, even when silent rules are enabled,
11019 the @option{--no-print-directory} option is still required with GNU
11020 @command{make} if the ``@i{Entering/Leaving directory ...}'' messages
11021 are to be disabled.
11023 @node Gnits
11024 @chapter The effect of @option{--gnu} and @option{--gnits}
11026 @cindex @option{--gnu}, required files
11027 @cindex @option{--gnu}, complete description
11029 The @option{--gnu} option (or @option{gnu} in the
11030 @code{AUTOMAKE_OPTIONS} variable) causes @command{automake} to check
11031 the following:
11033 @itemize @bullet
11034 @item
11035 The files @file{INSTALL}, @file{NEWS}, @file{README}, @file{AUTHORS},
11036 and @file{ChangeLog}, plus one of @file{COPYING.LIB}, @file{COPYING.LESSER}
11037 or @file{COPYING}, are required at the topmost directory of the package.
11039 If the @option{--add-missing} option is given, @command{automake} will
11040 add a generic version of the @file{INSTALL} file as well as the
11041 @file{COPYING} file containing the text of the current version of the
11042 GNU General Public License existing at the time of this Automake release
11043 (version 3 as this is written, @uref{http://www.gnu.org/@/copyleft/@/gpl.html}).
11044 However, an existing @file{COPYING} file will never be overwritten by
11045 @command{automake}.
11047 @item
11048 The options @option{no-installman} and @option{no-installinfo} are
11049 prohibited.
11050 @end itemize
11052 Note that this option will be extended in the future to do even more
11053 checking; it is advisable to be familiar with the precise requirements
11054 of the GNU standards.  Also, @option{--gnu} can require certain
11055 non-standard GNU programs to exist for use by various maintainer-only
11056 rules; for instance, in the future @command{pathchk} might be required for
11057 @samp{make dist}.
11059 @cindex @option{--gnits}, complete description
11061 The @option{--gnits} option does everything that @option{--gnu} does, and
11062 checks the following as well:
11064 @itemize @bullet
11065 @item
11066 @samp{make installcheck} will check to make sure that the @option{--help}
11067 and @option{--version} really print a usage message and a version string,
11068 respectively.  This is the @option{std-options} option (@pxref{Options}).
11070 @item
11071 @samp{make dist} will check to make sure the @file{NEWS} file has been
11072 updated to the current version.
11074 @item
11075 @code{VERSION} is checked to make sure its format complies with Gnits
11076 standards.
11077 @c FIXME xref when standards are finished
11079 @item
11080 @cindex @file{README-alpha}
11081 If @code{VERSION} indicates that this is an alpha release, and the file
11082 @file{README-alpha} appears in the topmost directory of a package, then
11083 it is included in the distribution.  This is done in @option{--gnits}
11084 mode, and no other, because this mode is the only one where version
11085 number formats are constrained, and hence the only mode where Automake
11086 can automatically determine whether @file{README-alpha} should be
11087 included.
11089 @item
11090 The file @file{THANKS} is required.
11091 @end itemize
11094 @node Not Enough
11095 @chapter When Automake Isn't Enough
11097 In some situations, where Automake is not up to one task, one has to
11098 resort to handwritten rules or even handwritten @file{Makefile}s.
11100 @menu
11101 * Extending::                   Adding new rules or overriding existing ones.
11102 * Third-Party Makefiles::       Integrating Non-Automake @file{Makefile}s.
11103 @end menu
11105 @node Extending
11106 @section Extending Automake Rules
11108 With some minor exceptions (for example @code{_PROGRAMS} variables,
11109 @code{TESTS}, or @code{XFAIL_TESTS}) being rewritten to append
11110 @samp{$(EXEEXT)}), the contents of a @file{Makefile.am} is copied to
11111 @file{Makefile.in} verbatim.
11113 @cindex copying semantics
11115 These copying semantics mean that many problems can be worked around
11116 by simply adding some @command{make} variables and rules to
11117 @file{Makefile.am}.  Automake will ignore these additions.
11119 @cindex conflicting definitions
11120 @cindex rules, conflicting
11121 @cindex variables, conflicting
11122 @cindex definitions, conflicts
11124 Since a @file{Makefile.in} is built from data gathered from three
11125 different places (@file{Makefile.am}, @file{configure.ac}, and
11126 @command{automake} itself), it is possible to have conflicting
11127 definitions of rules or variables.  When building @file{Makefile.in}
11128 the following priorities are respected by @command{automake} to ensure
11129 the user always has the last word:
11131 @itemize
11132 @item
11133 User defined variables in @file{Makefile.am} have priority over
11134 variables @code{AC_SUBST}ed from @file{configure.ac}, and
11135 @code{AC_SUBST}ed variables have priority over
11136 @command{automake}-defined variables.
11137 @item
11138 As far as rules are concerned, a user-defined rule overrides any
11139 @command{automake}-defined rule for the same target.
11140 @end itemize
11142 @cindex overriding rules
11143 @cindex overriding semantics
11144 @cindex rules, overriding
11146 These overriding semantics make it possible to fine tune some default
11147 settings of Automake, or replace some of its rules.  Overriding
11148 Automake rules is often inadvisable, particularly in the topmost
11149 directory of a package with subdirectories.  The @option{-Woverride}
11150 option (@pxref{automake Invocation}) comes in handy to catch overridden
11151 definitions.
11153 Note that Automake does not make any distinction between rules with
11154 commands and rules that only specify dependencies.  So it is not
11155 possible to append new dependencies to an @command{automake}-defined
11156 target without redefining the entire rule.
11158 @cindex @option{-local} targets
11159 @cindex local targets
11161 However, various useful targets have a @samp{-local} version you can
11162 specify in your @file{Makefile.am}.  Automake will supplement the
11163 standard target with these user-supplied targets.
11165 @trindex  all
11166 @trindex  all-local
11167 @trindex  info
11168 @trindex  info-local
11169 @trindex  dvi
11170 @trindex  dvi-local
11171 @trindex  ps
11172 @trindex  ps-local
11173 @trindex  pdf
11174 @trindex  pdf-local
11175 @trindex  html
11176 @trindex  html-local
11177 @trindex  check
11178 @trindex  check-local
11179 @trindex  install
11180 @trindex  install-data
11181 @trindex  install-data-local
11182 @trindex  install-dvi
11183 @trindex  install-dvi-local
11184 @trindex  install-exec
11185 @trindex  install-exec-local
11186 @trindex  install-html
11187 @trindex  install-html-local
11188 @trindex  install-info
11189 @trindex  install-info-local
11190 @trindex  install-pdf
11191 @trindex  install-pdf-local
11192 @trindex  install-ps
11193 @trindex  install-ps-local
11194 @trindex  uninstall
11195 @trindex  uninstall-local
11196 @trindex  mostlyclean
11197 @trindex  mostlyclean-local
11198 @trindex  clean
11199 @trindex  clean-local
11200 @trindex  distclean
11201 @trindex  distclean-local
11202 @trindex  installdirs
11203 @trindex  installdirs-local
11204 @trindex  installcheck
11205 @trindex  installcheck-local
11207 The targets that support a local version are @code{all}, @code{info},
11208 @code{dvi}, @code{ps}, @code{pdf}, @code{html}, @code{check},
11209 @code{install-data}, @code{install-dvi}, @code{install-exec},
11210 @code{install-html}, @code{install-info}, @code{install-pdf},
11211 @code{install-ps}, @code{uninstall}, @code{installdirs},
11212 @code{installcheck} and the various @code{clean} targets
11213 (@code{mostlyclean}, @code{clean}, @code{distclean}, and
11214 @code{maintainer-clean}).
11216 Note that there are no @code{uninstall-exec-local} or
11217 @code{uninstall-data-local} targets; just use @code{uninstall-local}.
11218 It doesn't make sense to uninstall just data or just executables.
11220 For instance, here is one way to erase a subdirectory during
11221 @samp{make clean} (@pxref{Clean}).
11223 @example
11224 clean-local:
11225         -rm -rf testSubDir
11226 @end example
11228 You may be tempted to use @code{install-data-local} to install a file
11229 to some hard-coded location, but you should avoid this
11230 (@pxref{Hard-Coded Install Paths}).
11232 With the @code{-local} targets, there is no particular guarantee of
11233 execution order; typically, they are run early, but with parallel
11234 make, there is no way to be sure of that.
11236 @cindex @option{-hook} targets
11237 @cindex hook targets
11238 @trindex install-data-hook
11239 @trindex install-exec-hook
11240 @trindex uninstall-hook
11241 @trindex dist-hook
11243 In contrast, some rules also have a way to run another rule, called a
11244 @dfn{hook}; hooks are always executed after the main rule's work is done.
11245 The hook is named after the principal target, with @samp{-hook} appended.
11246 The targets allowing hooks are @code{install-data},
11247 @code{install-exec}, @code{uninstall}, @code{dist}, and
11248 @code{distcheck}.
11250 For instance, here is how to create a hard link to an installed program:
11252 @example
11253 install-exec-hook:
11254         ln $(DESTDIR)$(bindir)/program$(EXEEXT) \
11255            $(DESTDIR)$(bindir)/proglink$(EXEEXT)
11256 @end example
11258 Although cheaper and more portable than symbolic links, hard links
11259 will not work everywhere (for instance, OS/2 does not have
11260 @command{ln}).  Ideally you should fall back to @samp{cp -p} when
11261 @command{ln} does not work.  An easy way, if symbolic links are
11262 acceptable to you, is to add @code{AC_PROG_LN_S} to
11263 @file{configure.ac} (@pxref{Particular Programs, , Particular Program
11264 Checks, autoconf, The Autoconf Manual}) and use @samp{$(LN_S)} in
11265 @file{Makefile.am}.
11267 @cindex versioned binaries, installing
11268 @cindex installing versioned binaries
11269 @cindex @code{LN_S} example
11270 For instance, here is how you could install a versioned copy of a
11271 program using @samp{$(LN_S)}:
11273 @c Keep in sync with insthook.sh
11274 @example
11275 install-exec-hook:
11276         cd $(DESTDIR)$(bindir) && \
11277           mv -f prog$(EXEEXT) prog-$(VERSION)$(EXEEXT) && \
11278           $(LN_S) prog-$(VERSION)$(EXEEXT) prog$(EXEEXT)
11279 @end example
11281 Note that we rename the program so that a new version will erase the
11282 symbolic link, not the real binary.  Also we @command{cd} into the
11283 destination directory in order to create relative links.
11285 When writing @code{install-exec-hook} or @code{install-data-hook},
11286 please bear in mind that the exec/data distinction is based on the
11287 installation directory, not on the primary used (@pxref{The Two Parts of
11288 Install}).
11289 @c Keep in sync with primary-prefix-couples-documented-valid.sh
11290 So a @code{foo_SCRIPTS} will be installed by
11291 @code{install-data}, and a @code{barexec_SCRIPTS} will be installed by
11292 @code{install-exec}.  You should define your hooks consequently.
11294 @c FIXME should include discussion of variables you can use in these
11295 @c rules
11297 @node Third-Party Makefiles
11298 @section Third-Party @file{Makefile}s
11300 @cindex Third-party packages, interfacing with
11301 @cindex Interfacing with third-party packages
11303 In most projects all @file{Makefile}s are generated by Automake.  In
11304 some cases, however, projects need to embed subdirectories with
11305 handwritten @file{Makefile}s.  For instance, one subdirectory could be
11306 a third-party project with its own build system, not using Automake.
11308 It is possible to list arbitrary directories in @code{SUBDIRS} or
11309 @code{DIST_SUBDIRS} provided each of these directories has a
11310 @file{Makefile} that recognizes all the following recursive targets.
11312 @cindex recursive targets and third-party @file{Makefile}s
11313 When a user runs one of these targets, that target is run recursively
11314 in all subdirectories.  This is why it is important that even
11315 third-party @file{Makefile}s support them.
11317 @table @code
11318 @item all
11319 Compile the entire package.  This is the default target in
11320 Automake-generated @file{Makefile}s, but it does not need to be the
11321 default in third-party @file{Makefile}s.
11323 @item distdir
11324 @trindex distdir
11325 @vindex distdir
11326 @vindex top_distdir
11327 Copy files to distribute into @samp{$(distdir)}, before a tarball is
11328 constructed.  Of course this target is not required if the
11329 @option{no-dist} option (@pxref{Options}) is used.
11331 The variables @samp{$(top_distdir)} and @samp{$(distdir)}
11332 (@pxref{The dist Hook}) will be passed from the outer package to the subpackage
11333 when the @code{distdir} target is invoked.  These two variables have
11334 been adjusted for the directory that is being recursed into, so they
11335 are ready to use.
11337 @item install
11338 @itemx install-data
11339 @itemx install-exec
11340 @itemx uninstall
11341 Install or uninstall files (@pxref{Install}).
11343 @item install-dvi
11344 @itemx install-html
11345 @itemx install-info
11346 @itemx install-ps
11347 @itemx install-pdf
11348 Install only some specific documentation format (@pxref{Texinfo}).
11350 @item installdirs
11351 Create install directories, but do not install any files.
11353 @item check
11354 @itemx installcheck
11355 Check the package (@pxref{Tests}).
11357 @item mostlyclean
11358 @itemx clean
11359 @itemx distclean
11360 @itemx maintainer-clean
11361 Cleaning rules (@pxref{Clean}).
11363 @item dvi
11364 @itemx pdf
11365 @itemx ps
11366 @itemx info
11367 @itemx html
11368 Build the documentation in various formats (@pxref{Texinfo}).
11370 @item tags
11371 @itemx ctags
11372 Build @file{TAGS} and @file{CTAGS} (@pxref{Tags}).
11373 @end table
11375 If you have ever used Gettext in a project, this is a good example of
11376 how third-party @file{Makefile}s can be used with Automake.  The
11377 @file{Makefile}s @command{gettextize} puts in the @file{po/} and
11378 @file{intl/} directories are handwritten @file{Makefile}s that
11379 implement all of these targets.  That way they can be added to
11380 @code{SUBDIRS} in Automake packages.
11382 Directories that are only listed in @code{DIST_SUBDIRS} but not in
11383 @code{SUBDIRS} need only the @code{distclean},
11384 @code{maintainer-clean}, and @code{distdir} rules (@pxref{Conditional
11385 Subdirectories}).
11387 Usually, many of these rules are irrelevant to the third-party
11388 subproject, but they are required for the whole package to work.  It's
11389 OK to have a rule that does nothing, so if you are integrating a
11390 third-party project with no documentation or tag support, you could
11391 simply augment its @file{Makefile} as follows:
11393 @example
11394 EMPTY_AUTOMAKE_TARGETS = dvi pdf ps info html tags ctags
11395 .PHONY: $(EMPTY_AUTOMAKE_TARGETS)
11396 $(EMPTY_AUTOMAKE_TARGETS):
11397 @end example
11399 Another aspect of integrating third-party build systems is whether
11400 they support VPATH builds (@pxref{VPATH Builds}).  Obviously if the
11401 subpackage does not support VPATH builds the whole package will not
11402 support VPATH builds.  This in turns means that @samp{make distcheck}
11403 will not work, because it relies on VPATH builds.  Some people can
11404 live without this (actually, many Automake users have never heard of
11405 @samp{make distcheck}).  Other people may prefer to revamp the
11406 existing @file{Makefile}s to support VPATH@.  Doing so does not
11407 necessarily require Automake, only Autoconf is needed (@pxref{Build
11408 Directories, , Build Directories, autoconf, The Autoconf Manual}).
11409 The necessary substitutions: @samp{@@srcdir@@}, @samp{@@top_srcdir@@},
11410 and @samp{@@top_builddir@@} are defined by @file{configure} when it
11411 processes a @file{Makefile} (@pxref{Preset Output Variables, , Preset
11412 Output Variables, autoconf, The Autoconf Manual}), they are not
11413 computed by the Makefile like the aforementioned @samp{$(distdir)} and
11414 @samp{$(top_distdir)} variables.
11416 It is sometimes inconvenient to modify a third-party @file{Makefile}
11417 to introduce the above required targets.  For instance, one may want to
11418 keep the third-party sources untouched to ease upgrades to new
11419 versions.
11421 @cindex @file{GNUmakefile} including @file{Makefile}
11422 Here are two other ideas.  If GNU make is assumed, one possibility is
11423 to add to that subdirectory a @file{GNUmakefile} that defines the
11424 required targets and includes the third-party @file{Makefile}.  For
11425 this to work in VPATH builds, @file{GNUmakefile} must lie in the build
11426 directory; the easiest way to do this is to write a
11427 @file{GNUmakefile.in} instead, and have it processed with
11428 @code{AC_CONFIG_FILES} from the outer package.  For example if we
11429 assume @file{Makefile} defines all targets except the documentation
11430 targets, and that the @code{check} target is actually called
11431 @code{test}, we could write @file{GNUmakefile} (or
11432 @file{GNUmakefile.in}) like this:
11434 @example
11435 # First, include the real Makefile
11436 include Makefile
11437 # Then, define the other targets needed by Automake Makefiles.
11438 .PHONY: dvi pdf ps info html check
11439 dvi pdf ps info html:
11440 check: test
11441 @end example
11443 @cindex Proxy @file{Makefile} for third-party packages
11444 A similar idea that does not use @code{include} is to write a proxy
11445 @file{Makefile} that dispatches rules to the real @file{Makefile},
11446 either with @samp{$(MAKE) -f Makefile.real $(AM_MAKEFLAGS) target} (if
11447 it's OK to rename the original @file{Makefile}) or with @samp{cd
11448 subdir && $(MAKE) $(AM_MAKEFLAGS) target} (if it's OK to store the
11449 subdirectory project one directory deeper).  The good news is that
11450 this proxy @file{Makefile} can be generated with Automake.  All we
11451 need are @option{-local} targets (@pxref{Extending}) that perform the
11452 dispatch.  Of course the other Automake features are available, so you
11453 could decide to let Automake perform distribution or installation.
11454 Here is a possible @file{Makefile.am}:
11456 @example
11457 all-local:
11458         cd subdir && $(MAKE) $(AM_MAKEFLAGS) all
11459 check-local:
11460         cd subdir && $(MAKE) $(AM_MAKEFLAGS) test
11461 clean-local:
11462         cd subdir && $(MAKE) $(AM_MAKEFLAGS) clean
11464 # Assuming the package knows how to install itself
11465 install-data-local:
11466         cd subdir && $(MAKE) $(AM_MAKEFLAGS) install-data
11467 install-exec-local:
11468         cd subdir && $(MAKE) $(AM_MAKEFLAGS) install-exec
11469 uninstall-local:
11470         cd subdir && $(MAKE) $(AM_MAKEFLAGS) uninstall
11472 # Distribute files from here.
11473 EXTRA_DIST = subdir/Makefile subdir/program.c ...
11474 @end example
11476 Pushing this idea to the extreme, it is also possible to ignore the
11477 subproject build system and build everything from this proxy
11478 @file{Makefile.am}.  This might sound very sensible if you need VPATH
11479 builds but the subproject does not support them.
11481 @node Distributing
11482 @chapter Distributing @file{Makefile.in}s
11484 Automake places no restrictions on the distribution of the resulting
11485 @file{Makefile.in}s.  We still encourage software authors to
11486 distribute their work under terms like those of the GPL, but doing so
11487 is not required to use Automake.
11489 Some of the files that can be automatically installed via the
11490 @option{--add-missing} switch do fall under the GPL@.  However, these also
11491 have a special exception allowing you to distribute them with your
11492 package, regardless of the licensing you choose.
11495 @node API Versioning
11496 @chapter Automake API Versioning
11498 New Automake releases usually include bug fixes and new features.
11499 Unfortunately they may also introduce new bugs and incompatibilities.
11500 This makes four reasons why a package may require a particular Automake
11501 version.
11503 Things get worse when maintaining a large tree of packages, each one
11504 requiring a different version of Automake.  In the past, this meant that
11505 any developer (and sometimes users) had to install several versions of
11506 Automake in different places, and switch @samp{$PATH} appropriately for
11507 each package.
11509 Starting with version 1.6, Automake installs versioned binaries.  This
11510 means you can install several versions of Automake in the same
11511 @samp{$prefix}, and can select an arbitrary Automake version by running
11512 @command{automake-1.6} or @command{automake-1.7} without juggling with
11513 @samp{$PATH}.  Furthermore, @file{Makefile}'s generated by Automake 1.6
11514 will use @command{automake-1.6} explicitly in their rebuild rules.
11516 The number @samp{1.6} in @command{automake-1.6} is Automake's API version,
11517 not Automake's version.  If a bug fix release is made, for instance
11518 Automake 1.6.1, the API version will remain 1.6.  This means that a
11519 package that works with Automake 1.6 should also work with 1.6.1; after
11520 all, this is what people expect from bug fix releases.
11522 If your package relies on a feature or a bug fix introduced in
11523 a release, you can pass this version as an option to Automake to ensure
11524 older releases will not be used.  For instance, use this in your
11525 @file{configure.ac}:
11527 @example
11528   AM_INIT_AUTOMAKE([1.6.1])    dnl Require Automake 1.6.1 or better.
11529 @end example
11531 @noindent
11532 or, in a particular @file{Makefile.am}:
11534 @example
11535   AUTOMAKE_OPTIONS = 1.6.1   # Require Automake 1.6.1 or better.
11536 @end example
11538 @noindent
11539 Automake will print an error message if its version is
11540 older than the requested version.
11543 @heading What is in the API
11545 Automake's programming interface is not easy to define.  Basically it
11546 should include at least all @strong{documented} variables and targets
11547 that a @file{Makefile.am} author can use, any behavior associated with
11548 them (e.g., the places where @samp{-hook}'s are run), the command line
11549 interface of @command{automake} and @command{aclocal}, @dots{}
11551 @heading What is not in the API
11553 Every undocumented variable, target, or command line option, is not part
11554 of the API@.  You should avoid using them, as they could change from one
11555 version to the other (even in bug fix releases, if this helps to fix a
11556 bug).
11558 If it turns out you need to use such an undocumented feature, contact
11559 @email{automake@@gnu.org} and try to get it documented and exercised by
11560 the test-suite.
11562 @node Upgrading
11563 @chapter Upgrading a Package to a Newer Automake Version
11565 Automake maintains three kind of files in a package.
11567 @itemize
11568 @item @file{aclocal.m4}
11569 @item @file{Makefile.in}s
11570 @item auxiliary tools like @file{install-sh} or @file{py-compile}
11571 @end itemize
11573 @file{aclocal.m4} is generated by @command{aclocal} and contains some
11574 Automake-supplied M4 macros.  Auxiliary tools are installed by
11575 @samp{automake --add-missing} when needed.  @file{Makefile.in}s are
11576 built from @file{Makefile.am} by @command{automake}, and rely on the
11577 definitions of the M4 macros put in @file{aclocal.m4} as well as the
11578 behavior of the auxiliary tools installed.
11580 Because all of these files are closely related, it is important to
11581 regenerate all of them when upgrading to a newer Automake release.
11582 The usual way to do that is
11584 @example
11585 aclocal # with any option needed (such a -I m4)
11586 autoconf
11587 automake --add-missing --force-missing
11588 @end example
11590 @noindent
11591 or more conveniently:
11593 @example
11594 autoreconf -vfi
11595 @end example
11597 The use of @option{--force-missing} ensures that auxiliary tools will be
11598 overridden by new versions (@pxref{automake Invocation}).
11600 It is important to regenerate all of these files each time Automake is
11601 upgraded, even between bug fixes releases.  For instance, it is not
11602 unusual for a bug fix to involve changes to both the rules generated
11603 in @file{Makefile.in} and the supporting M4 macros copied to
11604 @file{aclocal.m4}.
11606 Presently @command{automake} is able to diagnose situations where
11607 @file{aclocal.m4} has been generated with another version of
11608 @command{aclocal}.  However it never checks whether auxiliary scripts
11609 are up-to-date.  In other words, @command{automake} will tell you when
11610 @command{aclocal} needs to be rerun, but it will never diagnose a
11611 missing @option{--force-missing}.
11613 Before upgrading to a new major release, it is a good idea to read the
11614 file @file{NEWS}.  This file lists all changes between releases: new
11615 features, obsolete constructs, known incompatibilities, and
11616 workarounds.
11618 @node FAQ
11619 @chapter Frequently Asked Questions about Automake
11621 This chapter covers some questions that often come up on the mailing
11622 lists.
11624 @menu
11625 * CVS::                         CVS and generated files
11626 * maintainer-mode::             missing and AM_MAINTAINER_MODE
11627 * Wildcards::                   Why doesn't Automake support wildcards?
11628 * Limitations on File Names::   Limitations on source and installed file names
11629 * Errors with distclean::       Files left in build directory after distclean
11630 * Flag Variables Ordering::     CFLAGS vs.@: AM_CFLAGS vs.@: mumble_CFLAGS
11631 * Renamed Objects::             Why are object files sometimes renamed?
11632 * Per-Object Flags::            How to simulate per-object flags?
11633 * Multiple Outputs::            Writing rules for tools with many output files
11634 * Hard-Coded Install Paths::    Installing to hard-coded locations
11635 * Debugging Make Rules::        Strategies when things don't work as expected
11636 * Reporting Bugs::              Feedback on bugs and feature requests
11637 @end menu
11639 @node CVS
11640 @section CVS and generated files
11642 @subheading Background: distributed generated Files
11643 @cindex generated files, distributed
11644 @cindex rebuild rules
11646 Packages made with Autoconf and Automake ship with some generated
11647 files like @file{configure} or @file{Makefile.in}.  These files were
11648 generated on the developer's machine and are distributed so that
11649 end-users do not have to install the maintainer tools required to
11650 rebuild them.  Other generated files like Lex scanners, Yacc parsers,
11651 or Info documentation, are usually distributed on similar grounds.
11653 Automake output rules in @file{Makefile}s to rebuild these files.  For
11654 instance, @command{make} will run @command{autoconf} to rebuild
11655 @file{configure} whenever @file{configure.ac} is changed.  This makes
11656 development safer by ensuring a @file{configure} is never out-of-date
11657 with respect to @file{configure.ac}.
11659 As generated files shipped in packages are up-to-date, and because
11660 @command{tar} preserves times-tamps, these rebuild rules are not
11661 triggered when a user unpacks and builds a package.
11663 @subheading Background: CVS and Timestamps
11664 @cindex timestamps and CVS
11665 @cindex CVS and timestamps
11667 Unless you use CVS keywords (in which case files must be updated at
11668 commit time), CVS preserves timestamp during @samp{cvs commit} and
11669 @samp{cvs import -d} operations.
11671 When you check out a file using @samp{cvs checkout} its timestamp is
11672 set to that of the revision that is being checked out.
11674 However, during @command{cvs update}, files will have the date of the
11675 update, not the original timestamp of this revision.  This is meant to
11676 make sure that @command{make} notices sources files have been updated.
11678 This timestamp shift is troublesome when both sources and generated
11679 files are kept under CVS@.  Because CVS processes files in lexical
11680 order, @file{configure.ac} will appear newer than @file{configure}
11681 after a @command{cvs update} that updates both files, even if
11682 @file{configure} was newer than @file{configure.ac} when it was
11683 checked in.  Calling @command{make} will then trigger a spurious rebuild
11684 of @file{configure}.
11686 @subheading Living with CVS in Autoconfiscated Projects
11687 @cindex CVS and generated files
11688 @cindex generated files and CVS
11690 There are basically two clans amongst maintainers: those who keep all
11691 distributed files under CVS, including generated files, and those who
11692 keep generated files @emph{out} of CVS.
11694 @subsubheading All Files in CVS
11696 @itemize @bullet
11697 @item
11698 The CVS repository contains all distributed files so you know exactly
11699 what is distributed, and you can checkout any prior version entirely.
11701 @item
11702 Maintainers can see how generated files evolve (for instance, you can
11703 see what happens to your @file{Makefile.in}s when you upgrade Automake
11704 and make sure they look OK).
11706 @item
11707 Users do not need the autotools to build a checkout of the project, it
11708 works just like a released tarball.
11710 @item
11711 If users use @command{cvs update} to update their copy, instead of
11712 @command{cvs checkout} to fetch a fresh one, timestamps will be
11713 inaccurate.  Some rebuild rules will be triggered and attempt to
11714 run developer tools such as @command{autoconf} or @command{automake}.
11716 Calls to such tools are all wrapped into a call to the @command{missing}
11717 script discussed later (@pxref{maintainer-mode}), so that the user will
11718 see more descriptive warnings about missing or out-of-date tools, and
11719 possible suggestions about how to obtain them, rather than just some
11720 ``command not found'' error, or (worse) some obscure message from some
11721 older version of the required tool they happen to have installed.
11723 Maintainers interested in keeping their package buildable from a CVS
11724 checkout even for those users that lack maintainer-specific tools might
11725 want to provide an helper script (or to enhance their existing bootstrap
11726 script) to fix the timestamps after a
11727 @command{cvs update} or a @command{git checkout}, to prevent spurious
11728 rebuilds.  In case of a project committing the Autotools-generated
11729 files, as well as the generated @file{.info} files, such script might
11730 look something like this:
11732 @smallexample
11733 #!/bin/sh
11734 # fix-timestamp.sh: prevents useless rebuilds after "cvs update"
11735 sleep 1
11736 # aclocal-generated aclocal.m4 depends on locally-installed
11737 # '.m4' macro files, as well as on 'configure.ac'
11738 touch aclocal.m4
11739 sleep 1
11740 # autoconf-generated configure depends on aclocal.m4 and on
11741 # configure.ac
11742 touch configure
11743 # so does autoheader-generated config.h.in
11744 touch config.h.in
11745 # and all the automake-generated Makefile.in files
11746 touch `find . -name Makefile.in -print`
11747 # finally, the makeinfo-generated '.info' files depend on the
11748 # corresponding '.texi' files
11749 touch doc/*.info
11750 @end smallexample
11752 @item
11753 In distributed development, developers are likely to have different
11754 version of the maintainer tools installed.  In this case rebuilds
11755 triggered by timestamp lossage will lead to spurious changes
11756 to generated files.  There are several solutions to this:
11758 @itemize
11759 @item
11760 All developers should use the same versions, so that the rebuilt files
11761 are identical to files in CVS@.  (This starts to be difficult when each
11762 project you work on uses different versions.)
11763 @item
11764 Or people use a script to fix the timestamp after a checkout (the GCC
11765 folks have such a script).
11766 @item
11767 Or @file{configure.ac} uses @code{AM_MAINTAINER_MODE}, which will
11768 disable all of these rebuild rules by default.  This is further discussed
11769 in @ref{maintainer-mode}.
11770 @end itemize
11772 @item
11773 Although we focused on spurious rebuilds, the converse can also
11774 happen.  CVS's timestamp handling can also let you think an
11775 out-of-date file is up-to-date.
11777 For instance, suppose a developer has modified @file{Makefile.am} and
11778 has rebuilt @file{Makefile.in}, and then decides to do a last-minute
11779 change to @file{Makefile.am} right before checking in both files
11780 (without rebuilding @file{Makefile.in} to account for the change).
11782 This last change to @file{Makefile.am} makes the copy of
11783 @file{Makefile.in} out-of-date.  Since CVS processes files
11784 alphabetically, when another developer @samp{cvs update}s his or her
11785 tree, @file{Makefile.in} will happen to be newer than
11786 @file{Makefile.am}.  This other developer will not see that
11787 @file{Makefile.in} is out-of-date.
11789 @end itemize
11791 @subsubheading Generated Files out of CVS
11793 One way to get CVS and @command{make} working peacefully is to never
11794 store generated files in CVS, i.e., do not CVS-control files that
11795 are @file{Makefile} targets (also called @emph{derived} files).
11797 This way developers are not annoyed by changes to generated files.  It
11798 does not matter if they all have different versions (assuming they are
11799 compatible, of course).  And finally, timestamps are not lost, changes
11800 to sources files can't be missed as in the
11801 @file{Makefile.am}/@file{Makefile.in} example discussed earlier.
11803 The drawback is that the CVS repository is not an exact copy of what
11804 is distributed and that users now need to install various development
11805 tools (maybe even specific versions) before they can build a checkout.
11806 But, after all, CVS's job is versioning, not distribution.
11808 Allowing developers to use different versions of their tools can also
11809 hide bugs during distributed development.  Indeed, developers will be
11810 using (hence testing) their own generated files, instead of the
11811 generated files that will be released actually.  The developer who
11812 prepares the tarball might be using a version of the tool that
11813 produces bogus output (for instance a non-portable C file), something
11814 other developers could have noticed if they weren't using their own
11815 versions of this tool.
11817 @subheading Third-party Files
11818 @cindex CVS and third-party files
11819 @cindex third-party files and CVS
11821 Another class of files not discussed here (because they do not cause
11822 timestamp issues) are files that are shipped with a package, but
11823 maintained elsewhere.  For instance, tools like @command{gettextize}
11824 and @command{autopoint} (from Gettext) or @command{libtoolize} (from
11825 Libtool), will install or update files in your package.
11827 These files, whether they are kept under CVS or not, raise similar
11828 concerns about version mismatch between developers' tools.  The
11829 Gettext manual has a section about this, see @ref{CVS Issues, CVS
11830 Issues, Integrating with CVS, gettext, GNU gettext tools}.
11832 @node maintainer-mode
11833 @section @command{missing} and @code{AM_MAINTAINER_MODE}
11835 @subheading @command{missing}
11836 @cindex @command{missing}, purpose
11838 The @command{missing} script is a wrapper around several maintainer
11839 tools, designed to warn users if a maintainer tool is required but
11840 missing.  Typical maintainer tools are @command{autoconf},
11841 @command{automake}, @command{bison}, etc.  Because file generated by
11842 these tools are shipped with the other sources of a package, these
11843 tools shouldn't be required during a user build and they are not
11844 checked for in @file{configure}.
11846 However, if for some reason a rebuild rule is triggered and involves a
11847 missing tool, @command{missing} will notice it and warn the user, even
11848 suggesting how to obtain such a tool (at least in case it is a well-known
11849 one, like @command{makeinfo} or @command{bison}).  This is more helpful
11850 and user-friendly than just having the rebuild rules spewing out a terse
11851 error message like @samp{sh: @var{tool}: command not found}.  Similarly,
11852 @command{missing} will warn the user if it detects that a maintainer
11853 tool it attempted to use seems too old (be warned that diagnosing this
11854 correctly is typically more difficult that detecting missing tools, and
11855 requires cooperation from the tool itself, so it won't always work).
11857 If the required tool is installed, @command{missing} will run it and
11858 won't attempt to continue after failures.  This is correct during
11859 development: developers love fixing failures.  However, users with
11860 missing or too old maintainer tools may get an error when the rebuild
11861 rule is spuriously triggered, halting the build.  This failure to let
11862 the build continue is one of the arguments of the
11863 @code{AM_MAINTAINER_MODE} advocates.
11865 @subheading @code{AM_MAINTAINER_MODE}
11866 @cindex @code{AM_MAINTAINER_MODE}, purpose
11867 @acindex AM_MAINTAINER_MODE
11869 @code{AM_MAINTAINER_MODE} allows you to choose whether the so called
11870 "rebuild rules" should be enabled or disabled.  With
11871 @code{AM_MAINTAINER_MODE([enable])}, they are enabled by default,
11872 otherwise they are disabled by default.  In the latter case, if
11873 you have @code{AM_MAINTAINER_MODE} in @file{configure.ac}, and run
11874 @samp{./configure && make}, then @command{make} will *never* attempt to
11875 rebuild @file{configure}, @file{Makefile.in}s, Lex or Yacc outputs, etc.
11876 I.e., this disables build rules for files that are usually distributed
11877 and that users should normally not have to update.
11879 The user can override the default setting by passing either
11880 @samp{--enable-maintainer-mode} or @samp{--disable-maintainer-mode}
11881 to @command{configure}.
11883 People use @code{AM_MAINTAINER_MODE} either because they do not want their
11884 users (or themselves) annoyed by timestamps lossage (@pxref{CVS}), or
11885 because they simply can't stand the rebuild rules and prefer running
11886 maintainer tools explicitly.
11888 @code{AM_MAINTAINER_MODE} also allows you to disable some custom build
11889 rules conditionally.  Some developers use this feature to disable
11890 rules that need exotic tools that users may not have available.
11892 Several years ago Fran@,{c}ois Pinard pointed out several arguments
11893 against this @code{AM_MAINTAINER_MODE} macro.  Most of them relate to
11894 insecurity.  By removing dependencies you get non-dependable builds:
11895 changes to sources files can have no effect on generated files and this
11896 can be very confusing when unnoticed.  He adds that security shouldn't
11897 be reserved to maintainers (what @option{--enable-maintainer-mode}
11898 suggests), on the contrary.  If one user has to modify a
11899 @file{Makefile.am}, then either @file{Makefile.in} should be updated
11900 or a warning should be output (this is what Automake uses
11901 @command{missing} for) but the last thing you want is that nothing
11902 happens and the user doesn't notice it (this is what happens when
11903 rebuild rules are disabled by @code{AM_MAINTAINER_MODE}).
11905 Jim Meyering, the inventor of the @code{AM_MAINTAINER_MODE} macro was
11906 swayed by Fran@,{c}ois's arguments, and got rid of
11907 @code{AM_MAINTAINER_MODE} in all of his packages.
11909 Still many people continue to use @code{AM_MAINTAINER_MODE}, because
11910 it helps them working on projects where all files are kept under version
11911 control, and because @command{missing} isn't enough if you have the
11912 wrong version of the tools.
11915 @node Wildcards
11916 @section Why doesn't Automake support wildcards?
11917 @cindex wildcards
11919 Developers are lazy.  They would often like to use wildcards in
11920 @file{Makefile.am}s, so that they would not need to remember to
11921 update @file{Makefile.am}s every time they add, delete, or rename
11922 a file.
11924 There are several objections to this:
11925 @itemize
11926 @item
11927 When using CVS (or similar) developers need to remember they have to
11928 run @samp{cvs add} or @samp{cvs rm} anyway.  Updating
11929 @file{Makefile.am} accordingly quickly becomes a reflex.
11931 Conversely, if your application doesn't compile
11932 because you forgot to add a file in @file{Makefile.am}, it will help
11933 you remember to @samp{cvs add} it.
11935 @item
11936 Using wildcards makes it easy to distribute files by mistake.  For
11937 instance, some code a developer is experimenting with (a test case,
11938 say) that should not be part of the distribution.
11940 @item
11941 Using wildcards it's easy to omit some files by mistake.  For
11942 instance, one developer creates a new file, uses it in many places,
11943 but forgets to commit it.  Another developer then checks out the
11944 incomplete project and is able to run @samp{make dist} successfully,
11945 even though a file is missing. By listing files, @samp{make dist}
11946 @emph{will} complain.
11948 @item
11949 Wildcards are not portable to some non-GNU @command{make} implementations,
11950 e.g., NetBSD @command{make} will not expand globs such as @samp{*} in
11951 prerequisites of a target.
11953 @item
11954 Finally, it's really hard to @emph{forget} to add a file to
11955 @file{Makefile.am}: files that are not listed in @file{Makefile.am} are
11956 not compiled or installed, so you can't even test them.
11957 @end itemize
11959 Still, these are philosophical objections, and as such you may disagree,
11960 or find enough value in wildcards to dismiss all of them.  Before you
11961 start writing a patch against Automake to teach it about wildcards,
11962 let's see the main technical issue: portability.
11964 Although @samp{$(wildcard ...)} works with GNU @command{make}, it is
11965 not portable to other @command{make} implementations.
11967 The only way Automake could support @command{$(wildcard ...)} is by
11968 expanding @command{$(wildcard ...)} when @command{automake} is run.
11969 The resulting @file{Makefile.in}s would be portable since they would
11970 list all files and not use @samp{$(wildcard ...)}.  However that
11971 means developers would need to remember to run @command{automake} each
11972 time they add, delete, or rename files.
11974 Compared to editing @file{Makefile.am}, this is a very small gain.  Sure,
11975 it's easier and faster to type @samp{automake; make} than to type
11976 @samp{emacs Makefile.am; make}.  But nobody bothered enough to write a
11977 patch to add support for this syntax.  Some people use scripts to
11978 generate file lists in @file{Makefile.am} or in separate
11979 @file{Makefile} fragments.
11981 Even if you don't care about portability, and are tempted to use
11982 @samp{$(wildcard ...)} anyway because you target only GNU Make, you
11983 should know there are many places where Automake needs to know exactly
11984 which files should be processed.  As Automake doesn't know how to
11985 expand @samp{$(wildcard ...)}, you cannot use it in these places.
11986 @samp{$(wildcard ...)} is a black box comparable to @code{AC_SUBST}ed
11987 variables as far Automake is concerned.
11989 You can get warnings about @samp{$(wildcard ...}) constructs using the
11990 @option{-Wportability} flag.
11992 @node Limitations on File Names
11993 @section Limitations on File Names
11994 @cindex file names, limitations on
11996 Automake attempts to support all kinds of file names, even those that
11997 contain unusual characters or are unusually long.  However, some
11998 limitations are imposed by the underlying operating system and tools.
12000 Most operating systems prohibit the use of the null byte in file
12001 names, and reserve @samp{/} as a directory separator.  Also, they
12002 require that file names are properly encoded for the user's locale.
12003 Automake is subject to these limits.
12005 Portable packages should limit themselves to POSIX file
12006 names.  These can contain ASCII letters and digits,
12007 @samp{_}, @samp{.}, and @samp{-}.  File names consist of components
12008 separated by @samp{/}.  File name components cannot begin with
12009 @samp{-}.
12011 Portable POSIX file names cannot contain components that exceed a
12012 14-byte limit, but nowadays it's normally safe to assume the
12013 more-generous XOPEN limit of 255 bytes.  POSIX
12014 limits file names to 255 bytes (XOPEN allows 1023 bytes),
12015 but you may want to limit a source tarball to file names of 99 bytes
12016 to avoid interoperability problems with old versions of @command{tar}.
12018 If you depart from these rules (e.g., by using non-ASCII
12019 characters in file names, or by using lengthy file names), your
12020 installers may have problems for reasons unrelated to Automake.
12021 However, if this does not concern you, you should know about the
12022 limitations imposed by Automake itself.  These limitations are
12023 undesirable, but some of them seem to be inherent to underlying tools
12024 like Autoconf, Make, M4, and the shell.  They fall into three
12025 categories: install directories, build directories, and file names.
12027 The following characters:
12029 @example
12030 @r{newline} " # $ ' `
12031 @end example
12033 should not appear in the names of install directories.  For example,
12034 the operand of @command{configure}'s @option{--prefix} option should
12035 not contain these characters.
12037 Build directories suffer the same limitations as install directories,
12038 and in addition should not contain the following characters:
12040 @example
12041 & @@ \
12042 @end example
12044 For example, the full name of the directory containing the source
12045 files should not contain these characters.
12047 Source and installation file names like @file{main.c} are limited even
12048 further: they should conform to the POSIX/XOPEN
12049 rules described above.  In addition, if you plan to port to
12050 non-POSIX environments, you should avoid file names that
12051 differ only in case (e.g., @file{makefile} and @file{Makefile}).
12052 Nowadays it is no longer worth worrying about the 8.3 limits of
12053 DOS file systems.
12055 @c FIXME This should probably be moved in the "Checking the Distribution"
12056 @c FIXME section...
12057 @node Errors with distclean
12058 @section Errors with distclean
12059 @cindex @code{distclean}, diagnostic
12060 @cindex @samp{make distclean}, diagnostic
12061 @cindex dependencies and distributed files
12062 @trindex distclean
12064 This is a diagnostic you might encounter while running @samp{make
12065 distcheck}.
12067 As explained in @ref{Checking the Distribution}, @samp{make distcheck}
12068 attempts to build and check your package for errors like this one.
12070 @samp{make distcheck} will perform a @code{VPATH} build of your
12071 package (@pxref{VPATH Builds}), and then call @samp{make distclean}.
12072 Files left in the build directory after @samp{make distclean} has run
12073 are listed after this error.
12075 This diagnostic really covers two kinds of errors:
12077 @itemize @bullet
12078 @item
12079 files that are forgotten by distclean;
12080 @item
12081 distributed files that are erroneously rebuilt.
12082 @end itemize
12084 The former left-over files are not distributed, so the fix is to mark
12085 them for cleaning (@pxref{Clean}), this is obvious and doesn't deserve
12086 more explanations.
12088 The latter bug is not always easy to understand and fix, so let's
12089 proceed with an example.  Suppose our package contains a program for
12090 which we want to build a man page using @command{help2man}.  GNU
12091 @command{help2man} produces simple manual pages from the @option{--help}
12092 and @option{--version} output of other commands (@pxref{Top, , Overview,
12093 help2man, The Help2man Manual}).  Because we don't want to force our
12094 users to install @command{help2man}, we decide to distribute the
12095 generated man page using the following setup.
12097 @example
12098 # This Makefile.am is bogus.
12099 bin_PROGRAMS = foo
12100 foo_SOURCES = foo.c
12101 dist_man_MANS = foo.1
12103 foo.1: foo$(EXEEXT)
12104         help2man --output=foo.1 ./foo$(EXEEXT)
12105 @end example
12107 This will effectively distribute the man page.  However,
12108 @samp{make distcheck} will fail with:
12110 @example
12111 ERROR: files left in build directory after distclean:
12112 ./foo.1
12113 @end example
12115 Why was @file{foo.1} rebuilt?  Because although distributed,
12116 @file{foo.1} depends on a non-distributed built file:
12117 @file{foo$(EXEEXT)}.  @file{foo$(EXEEXT)} is built by the user, so it
12118 will always appear to be newer than the distributed @file{foo.1}.
12120 @samp{make distcheck} caught an inconsistency in our package.  Our
12121 intent was to distribute @file{foo.1} so users do not need to install
12122 @command{help2man}, however since this rule causes this file to be
12123 always rebuilt, users @emph{do} need @command{help2man}.  Either we
12124 should ensure that @file{foo.1} is not rebuilt by users, or there is
12125 no point in distributing @file{foo.1}.
12127 More generally, the rule is that distributed files should never depend
12128 on non-distributed built files.  If you distribute something
12129 generated, distribute its sources.
12131 One way to fix the above example, while still distributing
12132 @file{foo.1} is to not depend on @file{foo$(EXEEXT)}.  For instance,
12133 assuming @command{foo --version} and @command{foo --help} do not
12134 change unless @file{foo.c} or @file{configure.ac} change, we could
12135 write the following @file{Makefile.am}:
12137 @example
12138 bin_PROGRAMS = foo
12139 foo_SOURCES = foo.c
12140 dist_man_MANS = foo.1
12142 foo.1: foo.c $(top_srcdir)/configure.ac
12143         $(MAKE) $(AM_MAKEFLAGS) foo$(EXEEXT)
12144         help2man --output=foo.1 ./foo$(EXEEXT)
12145 @end example
12147 This way, @file{foo.1} will not get rebuilt every time
12148 @file{foo$(EXEEXT)} changes.  The @command{make} call makes sure
12149 @file{foo$(EXEEXT)} is up-to-date before @command{help2man}.  Another
12150 way to ensure this would be to use separate directories for binaries
12151 and man pages, and set @code{SUBDIRS} so that binaries are built
12152 before man pages.
12154 We could also decide not to distribute @file{foo.1}.  In
12155 this case it's fine to have @file{foo.1} dependent upon
12156 @file{foo$(EXEEXT)}, since both will have to be rebuilt.
12157 However it would be impossible to build the package in a
12158 cross-compilation, because building @file{foo.1} involves
12159 an @emph{execution} of @file{foo$(EXEEXT)}.
12161 Another context where such errors are common is when distributed files
12162 are built by tools that are built by the package.  The pattern is
12163 similar:
12165 @example
12166 distributed-file: built-tools distributed-sources
12167         build-command
12168 @end example
12170 @noindent
12171 should be changed to
12173 @example
12174 distributed-file: distributed-sources
12175         $(MAKE) $(AM_MAKEFLAGS) built-tools
12176         build-command
12177 @end example
12179 @noindent
12180 or you could choose not to distribute @file{distributed-file}, if
12181 cross-compilation does not matter.
12183 The points made through these examples are worth a summary:
12185 @cartouche
12186 @itemize
12187 @item
12188 Distributed files should never depend upon non-distributed built
12189 files.
12190 @item
12191 Distributed files should be distributed with all their dependencies.
12192 @item
12193 If a file is @emph{intended} to be rebuilt by users, then there is no point
12194 in distributing it.
12195 @end itemize
12196 @end cartouche
12198 @vrindex distcleancheck_listfiles
12199 For desperate cases, it's always possible to disable this check by
12200 setting @code{distcleancheck_listfiles} as documented in @ref{Checking
12201 the Distribution}.
12202 Make sure you do understand the reason why @samp{make distcheck}
12203 complains before you do this.  @code{distcleancheck_listfiles} is a
12204 way to @emph{hide} errors, not to fix them.  You can always do better.
12206 @node Flag Variables Ordering
12207 @section Flag Variables Ordering
12208 @cindex Ordering flag variables
12209 @cindex Flag variables, ordering
12211 @display
12212 What is the difference between @code{AM_CFLAGS}, @code{CFLAGS}, and
12213 @code{mumble_CFLAGS}?
12214 @end display
12216 @display
12217 Why does @command{automake} output @code{CPPFLAGS} after
12218 @code{AM_CPPFLAGS} on compile lines?  Shouldn't it be the converse?
12219 @end display
12221 @display
12222 My @file{configure} adds some warning flags into @code{CXXFLAGS}.  In
12223 one @file{Makefile.am} I would like to append a new flag, however if I
12224 put the flag into @code{AM_CXXFLAGS} it is prepended to the other
12225 flags, not appended.
12226 @end display
12228 @subheading Compile Flag Variables
12229 @cindex Flag Variables, Ordering
12230 @cindex Compile Flag Variables
12231 @cindex @code{AM_CCASFLAGS} and @code{CCASFLAGS}
12232 @cindex @code{AM_CFLAGS} and @code{CFLAGS}
12233 @cindex @code{AM_CPPFLAGS} and @code{CPPFLAGS}
12234 @cindex @code{AM_CXXFLAGS} and @code{CXXFLAGS}
12235 @cindex @code{AM_FCFLAGS} and @code{FCFLAGS}
12236 @cindex @code{AM_FFLAGS} and @code{FFLAGS}
12237 @cindex @code{AM_GCJFLAGS} and @code{GCJFLAGS}
12238 @cindex @code{AM_LDFLAGS} and @code{LDFLAGS}
12239 @cindex @code{AM_LFLAGS} and @code{LFLAGS}
12240 @cindex @code{AM_LIBTOOLFLAGS} and @code{LIBTOOLFLAGS}
12241 @cindex @code{AM_OBJCFLAGS} and @code{OBJCFLAGS}
12242 @cindex @code{AM_OBJCXXFLAGS} and @code{OBJXXCFLAGS}
12243 @cindex @code{AM_RFLAGS} and @code{RFLAGS}
12244 @cindex @code{AM_UPCFLAGS} and @code{UPCFLAGS}
12245 @cindex @code{AM_YFLAGS} and @code{YFLAGS}
12246 @cindex @code{CCASFLAGS} and @code{AM_CCASFLAGS}
12247 @cindex @code{CFLAGS} and @code{AM_CFLAGS}
12248 @cindex @code{CPPFLAGS} and @code{AM_CPPFLAGS}
12249 @cindex @code{CXXFLAGS} and @code{AM_CXXFLAGS}
12250 @cindex @code{FCFLAGS} and @code{AM_FCFLAGS}
12251 @cindex @code{FFLAGS} and @code{AM_FFLAGS}
12252 @cindex @code{GCJFLAGS} and @code{AM_GCJFLAGS}
12253 @cindex @code{LDFLAGS} and @code{AM_LDFLAGS}
12254 @cindex @code{LFLAGS} and @code{AM_LFLAGS}
12255 @cindex @code{LIBTOOLFLAGS} and @code{AM_LIBTOOLFLAGS}
12256 @cindex @code{OBJCFLAGS} and @code{AM_OBJCFLAGS}
12257 @cindex @code{OBJCXXFLAGS} and @code{AM_OBJCXXFLAGS}
12258 @cindex @code{RFLAGS} and @code{AM_RFLAGS}
12259 @cindex @code{UPCFLAGS} and @code{AM_UPCFLAGS}
12260 @cindex @code{YFLAGS} and @code{AM_YFLAGS}
12262 This section attempts to answer all the above questions.  We will
12263 mostly discuss @code{CPPFLAGS} in our examples, but actually the
12264 answer holds for all the compile flags used in Automake:
12265 @code{CCASFLAGS}, @code{CFLAGS}, @code{CPPFLAGS}, @code{CXXFLAGS},
12266 @code{FCFLAGS}, @code{FFLAGS}, @code{GCJFLAGS}, @code{LDFLAGS},
12267 @code{LFLAGS}, @code{LIBTOOLFLAGS}, @code{OBJCFLAGS}, @code{OBJCXXFLAGS},
12268 @code{RFLAGS}, @code{UPCFLAGS}, and @code{YFLAGS}.
12270 @code{CPPFLAGS}, @code{AM_CPPFLAGS}, and @code{mumble_CPPFLAGS} are
12271 three variables that can be used to pass flags to the C preprocessor
12272 (actually these variables are also used for other languages like C++
12273 or preprocessed Fortran).  @code{CPPFLAGS} is the user variable
12274 (@pxref{User Variables}), @code{AM_CPPFLAGS} is the Automake variable,
12275 and @code{mumble_CPPFLAGS} is the variable specific to the
12276 @code{mumble} target (we call this a per-target variable,
12277 @pxref{Program and Library Variables}).
12279 Automake always uses two of these variables when compiling C sources
12280 files.  When compiling an object file for the @code{mumble} target,
12281 the first variable will be @code{mumble_CPPFLAGS} if it is defined, or
12282 @code{AM_CPPFLAGS} otherwise.  The second variable is always
12283 @code{CPPFLAGS}.
12285 In the following example,
12287 @example
12288 bin_PROGRAMS = foo bar
12289 foo_SOURCES = xyz.c
12290 bar_SOURCES = main.c
12291 foo_CPPFLAGS = -DFOO
12292 AM_CPPFLAGS = -DBAZ
12293 @end example
12295 @noindent
12296 @file{xyz.o} will be compiled with @samp{$(foo_CPPFLAGS) $(CPPFLAGS)},
12297 (because @file{xyz.o} is part of the @code{foo} target), while
12298 @file{main.o} will be compiled with @samp{$(AM_CPPFLAGS) $(CPPFLAGS)}
12299 (because there is no per-target variable for target @code{bar}).
12301 The difference between @code{mumble_CPPFLAGS} and @code{AM_CPPFLAGS}
12302 being clear enough, let's focus on @code{CPPFLAGS}.  @code{CPPFLAGS}
12303 is a user variable, i.e., a variable that users are entitled to modify
12304 in order to compile the package.  This variable, like many others,
12305 is documented at the end of the output of @samp{configure --help}.
12307 For instance, someone who needs to add @file{/home/my/usr/include} to
12308 the C compiler's search path would configure a package with
12310 @example
12311 ./configure CPPFLAGS='-I /home/my/usr/include'
12312 @end example
12314 @noindent
12315 and this flag would be propagated to the compile rules of all
12316 @file{Makefile}s.
12318 It is also not uncommon to override a user variable at
12319 @command{make}-time.  Many installers do this with @code{prefix}, but
12320 this can be useful with compiler flags too.  For instance, if, while
12321 debugging a C++ project, you need to disable optimization in one
12322 specific object file, you can run something like
12324 @example
12325 rm file.o
12326 make CXXFLAGS=-O0 file.o
12327 make
12328 @end example
12330 The reason @samp{$(CPPFLAGS)} appears after @samp{$(AM_CPPFLAGS)} or
12331 @samp{$(mumble_CPPFLAGS)} in the compile command is that users
12332 should always have the last say.  It probably makes more sense if you
12333 think about it while looking at the @samp{CXXFLAGS=-O0} above, which
12334 should supersede any other switch from @code{AM_CXXFLAGS} or
12335 @code{mumble_CXXFLAGS} (and this of course replaces the previous value
12336 of @code{CXXFLAGS}).
12338 You should never redefine a user variable such as @code{CPPFLAGS} in
12339 @file{Makefile.am}.  Use @samp{automake -Woverride} to diagnose such
12340 mistakes.  Even something like
12342 @example
12343 CPPFLAGS = -DDATADIR=\"$(datadir)\" @@CPPFLAGS@@
12344 @end example
12346 @noindent
12347 is erroneous.  Although this preserves @file{configure}'s value of
12348 @code{CPPFLAGS}, the definition of @code{DATADIR} will disappear if a
12349 user attempts to override @code{CPPFLAGS} from the @command{make}
12350 command line.
12352 @example
12353 AM_CPPFLAGS = -DDATADIR=\"$(datadir)\"
12354 @end example
12356 @noindent
12357 is all that is needed here if no per-target flags are used.
12359 You should not add options to these user variables within
12360 @file{configure} either, for the same reason.  Occasionally you need
12361 to modify these variables to perform a test, but you should reset
12362 their values afterwards.  In contrast, it is OK to modify the
12363 @samp{AM_} variables within @file{configure} if you @code{AC_SUBST}
12364 them, but it is rather rare that you need to do this, unless you
12365 really want to change the default definitions of the @samp{AM_}
12366 variables in all @file{Makefile}s.
12368 What we recommend is that you define extra flags in separate
12369 variables.  For instance, you may write an Autoconf macro that computes
12370 a set of warning options for the C compiler, and @code{AC_SUBST} them
12371 in @code{WARNINGCFLAGS}; you may also have an Autoconf macro that
12372 determines which compiler and which linker flags should be used to
12373 link with library @file{libfoo}, and @code{AC_SUBST} these in
12374 @code{LIBFOOCFLAGS} and @code{LIBFOOLDFLAGS}.  Then, a
12375 @file{Makefile.am} could use these variables as follows:
12377 @example
12378 AM_CFLAGS = $(WARNINGCFLAGS)
12379 bin_PROGRAMS = prog1 prog2
12380 prog1_SOURCES = @dots{}
12381 prog2_SOURCES = @dots{}
12382 prog2_CFLAGS = $(LIBFOOCFLAGS) $(AM_CFLAGS)
12383 prog2_LDFLAGS = $(LIBFOOLDFLAGS)
12384 @end example
12386 In this example both programs will be compiled with the flags
12387 substituted into @samp{$(WARNINGCFLAGS)}, and @code{prog2} will
12388 additionally be compiled with the flags required to link with
12389 @file{libfoo}.
12391 Note that listing @code{AM_CFLAGS} in a per-target @code{CFLAGS}
12392 variable is a common idiom to ensure that @code{AM_CFLAGS} applies to
12393 every target in a @file{Makefile.in}.
12395 Using variables like this gives you full control over the ordering of
12396 the flags.  For instance, if there is a flag in $(WARNINGCFLAGS) that
12397 you want to negate for a particular target, you can use something like
12398 @samp{prog1_CFLAGS = $(AM_CFLAGS) -no-flag}.  If all of these flags had
12399 been forcefully appended to @code{CFLAGS}, there would be no way to
12400 disable one flag.  Yet another reason to leave user variables to
12401 users.
12403 Finally, we have avoided naming the variable of the example
12404 @code{LIBFOO_LDFLAGS} (with an underscore) because that would cause
12405 Automake to think that this is actually a per-target variable (like
12406 @code{mumble_LDFLAGS}) for some non-declared @code{LIBFOO} target.
12408 @subheading Other Variables
12410 There are other variables in Automake that follow similar principles
12411 to allow user options.  For instance, Texinfo rules (@pxref{Texinfo})
12412 use @code{MAKEINFOFLAGS} and @code{AM_MAKEINFOFLAGS}.  Similarly,
12413 DejaGnu tests (@pxref{DejaGnu Tests}) use @code{RUNTESTDEFAULTFLAGS} and
12414 @code{AM_RUNTESTDEFAULTFLAGS}.  The tags and ctags rules
12415 (@pxref{Tags}) use @code{ETAGSFLAGS}, @code{AM_ETAGSFLAGS},
12416 @code{CTAGSFLAGS}, and @code{AM_CTAGSFLAGS}.  Java rules
12417 (@pxref{Java}) use @code{JAVACFLAGS} and @code{AM_JAVACFLAGS}.  None
12418 of these rules support per-target flags (yet).
12420 To some extent, even @code{AM_MAKEFLAGS} (@pxref{Subdirectories})
12421 obeys this naming scheme.  The slight difference is that
12422 @code{MAKEFLAGS} is passed to sub-@command{make}s implicitly by
12423 @command{make} itself.
12425 @code{ARFLAGS} (@pxref{A Library}) is usually defined by Automake and
12426 has neither @code{AM_} nor per-target cousin.
12428 Finally you should not think that the existence of a per-target
12429 variable implies the existence of an @code{AM_} variable or of a user
12430 variable.  For instance, the @code{mumble_LDADD} per-target variable
12431 overrides the makefile-wide @code{LDADD} variable (which is not a user
12432 variable), and @code{mumble_LIBADD} exists only as a per-target
12433 variable.  @xref{Program and Library Variables}.
12436 @node Renamed Objects
12437 @section Why are object files sometimes renamed?
12439 This happens when per-target compilation flags are used.  Object
12440 files need to be renamed just in case they would clash with object
12441 files compiled from the same sources, but with different flags.
12442 Consider the following example.
12444 @example
12445 bin_PROGRAMS = true false
12446 true_SOURCES = generic.c
12447 true_CPPFLAGS = -DEXIT_CODE=0
12448 false_SOURCES = generic.c
12449 false_CPPFLAGS = -DEXIT_CODE=1
12450 @end example
12452 @noindent
12453 Obviously the two programs are built from the same source, but it
12454 would be bad if they shared the same object, because @file{generic.o}
12455 cannot be built with both @samp{-DEXIT_CODE=0} @emph{and}
12456 @samp{-DEXIT_CODE=1}.  Therefore @command{automake} outputs rules to
12457 build two different objects: @file{true-generic.o} and
12458 @file{false-generic.o}.
12460 @command{automake} doesn't actually look whether source files are
12461 shared to decide if it must rename objects.  It will just rename all
12462 objects of a target as soon as it sees per-target compilation flags
12463 used.
12465 It's OK to share object files when per-target compilation flags are not
12466 used.  For instance, @file{true} and @file{false} will both use
12467 @file{version.o} in the following example.
12469 @example
12470 AM_CPPFLAGS = -DVERSION=1.0
12471 bin_PROGRAMS = true false
12472 true_SOURCES = true.c version.c
12473 false_SOURCES = false.c version.c
12474 @end example
12476 Note that the renaming of objects is also affected by the
12477 @code{_SHORTNAME} variable (@pxref{Program and Library Variables}).
12480 @node Per-Object Flags
12481 @section Per-Object Flags Emulation
12482 @cindex Per-object flags, emulated
12484 @display
12485 One of my source files needs to be compiled with different flags.  How
12486 do I do?
12487 @end display
12489 Automake supports per-program and per-library compilation flags (see
12490 @ref{Program and Library Variables} and @ref{Flag Variables
12491 Ordering}).  With this you can define compilation flags that apply to
12492 all files compiled for a target.  For instance, in
12494 @example
12495 bin_PROGRAMS = foo
12496 foo_SOURCES = foo.c foo.h bar.c bar.h main.c
12497 foo_CFLAGS = -some -flags
12498 @end example
12500 @noindent
12501 @file{foo-foo.o}, @file{foo-bar.o}, and @file{foo-main.o} will all be
12502 compiled with @samp{-some -flags}.  (If you wonder about the names of
12503 these object files, see @ref{Renamed Objects}.)  Note that
12504 @code{foo_CFLAGS} gives the flags to use when compiling all the C
12505 sources of the @emph{program} @code{foo}, it has nothing to do with
12506 @file{foo.c} or @file{foo-foo.o} specifically.
12508 What if @file{foo.c} needs to be compiled into @file{foo.o} using some
12509 specific flags, that none of the other files requires?  Obviously
12510 per-program flags are not directly applicable here.  Something like
12511 per-object flags are expected, i.e., flags that would be used only
12512 when creating @file{foo-foo.o}.  Automake does not support that,
12513 however this is easy to simulate using a library that contains only
12514 that object, and compiling this library with per-library flags.
12516 @example
12517 bin_PROGRAMS = foo
12518 foo_SOURCES = bar.c bar.h main.c
12519 foo_CFLAGS = -some -flags
12520 foo_LDADD = libfoo.a
12521 noinst_LIBRARIES = libfoo.a
12522 libfoo_a_SOURCES = foo.c foo.h
12523 libfoo_a_CFLAGS = -some -other -flags
12524 @end example
12526 Here @file{foo-bar.o} and @file{foo-main.o} will all be
12527 compiled with @samp{-some -flags}, while @file{libfoo_a-foo.o} will
12528 be compiled using @samp{-some -other -flags}.  Eventually, all
12529 three objects will be linked to form @file{foo}.
12531 This trick can also be achieved using Libtool convenience libraries,
12532 for instance @samp{noinst_LTLIBRARIES = libfoo.la} (@pxref{Libtool
12533 Convenience Libraries}).
12535 Another tempting idea to implement per-object flags is to override the
12536 compile rules @command{automake} would output for these files.
12537 Automake will not define a rule for a target you have defined, so you
12538 could think about defining the @samp{foo-foo.o: foo.c} rule yourself.
12539 We recommend against this, because this is error prone.  For instance,
12540 if you add such a rule to the first example, it will break the day you
12541 decide to remove @code{foo_CFLAGS} (because @file{foo.c} will then be
12542 compiled as @file{foo.o} instead of @file{foo-foo.o}, @pxref{Renamed
12543 Objects}).  Also in order to support dependency tracking, the two
12544 @file{.o}/@file{.obj} extensions, and all the other flags variables
12545 involved in a compilation, you will end up modifying a copy of the
12546 rule previously output by @command{automake} for this file.  If a new
12547 release of Automake generates a different rule, your copy will need to
12548 be updated by hand.
12550 @node Multiple Outputs
12551 @section Handling Tools that Produce Many Outputs
12552 @cindex multiple outputs, rules with
12553 @cindex many outputs, rules with
12554 @cindex rules with multiple outputs
12556 This section describes a @command{make} idiom that can be used when a
12557 tool produces multiple output files.  It is not specific to Automake
12558 and can be used in ordinary @file{Makefile}s.
12560 Suppose we have a program called @command{foo} that will read one file
12561 called @file{data.foo} and produce two files named @file{data.c} and
12562 @file{data.h}.  We want to write a @file{Makefile} rule that captures
12563 this one-to-two dependency.
12565 The naive rule is incorrect:
12567 @example
12568 # This is incorrect.
12569 data.c data.h: data.foo
12570         foo data.foo
12571 @end example
12573 @noindent
12574 What the above rule really says is that @file{data.c} and
12575 @file{data.h} each depend on @file{data.foo}, and can each be built by
12576 running @samp{foo data.foo}.  In other words it is equivalent to:
12578 @example
12579 # We do not want this.
12580 data.c: data.foo
12581         foo data.foo
12582 data.h: data.foo
12583         foo data.foo
12584 @end example
12586 @noindent
12587 which means that @command{foo} can be run twice.  Usually it will not
12588 be run twice, because @command{make} implementations are smart enough
12589 to check for the existence of the second file after the first one has
12590 been built; they will therefore detect that it already exists.
12591 However there are a few situations where it can run twice anyway:
12593 @itemize
12594 @item
12595 The most worrying case is when running a parallel @command{make}.  If
12596 @file{data.c} and @file{data.h} are built in parallel, two @samp{foo
12597 data.foo} commands will run concurrently.  This is harmful.
12598 @item
12599 Another case is when the dependency (here @file{data.foo}) is
12600 (or depends upon) a phony target.
12601 @end itemize
12603 A solution that works with parallel @command{make} but not with
12604 phony dependencies is the following:
12606 @example
12607 data.c data.h: data.foo
12608         foo data.foo
12609 data.h: data.c
12610 @end example
12612 @noindent
12613 The above rules are equivalent to
12615 @example
12616 data.c: data.foo
12617         foo data.foo
12618 data.h: data.foo data.c
12619         foo data.foo
12620 @end example
12622 @noindent
12623 therefore a parallel @command{make} will have to serialize the builds
12624 of @file{data.c} and @file{data.h}, and will detect that the second is
12625 no longer needed once the first is over.
12627 Using this pattern is probably enough for most cases.  However it does
12628 not scale easily to more output files (in this scheme all output files
12629 must be totally ordered by the dependency relation), so we will
12630 explore a more complicated solution.
12632 Another idea is to write the following:
12634 @example
12635 # There is still a problem with this one.
12636 data.c: data.foo
12637         foo data.foo
12638 data.h: data.c
12639 @end example
12641 @noindent
12642 The idea is that @samp{foo data.foo} is run only when @file{data.c}
12643 needs to be updated, but we further state that @file{data.h} depends
12644 upon @file{data.c}.  That way, if @file{data.h} is required and
12645 @file{data.foo} is out of date, the dependency on @file{data.c} will
12646 trigger the build.
12648 This is almost perfect, but suppose we have built @file{data.h} and
12649 @file{data.c}, and then we erase @file{data.h}.  Then, running
12650 @samp{make data.h} will not rebuild @file{data.h}.  The above rules
12651 just state that @file{data.c} must be up-to-date with respect to
12652 @file{data.foo}, and this is already the case.
12654 What we need is a rule that forces a rebuild when @file{data.h} is
12655 missing.  Here it is:
12657 @example
12658 data.c: data.foo
12659         foo data.foo
12660 data.h: data.c
12661 ## Recover from the removal of $@@
12662         @@if test -f $@@; then :; else \
12663           rm -f data.c; \
12664           $(MAKE) $(AM_MAKEFLAGS) data.c; \
12665         fi
12666 @end example
12668 The above scheme can be extended to handle more outputs and more
12669 inputs.  One of the outputs is selected to serve as a witness to the
12670 successful completion of the command, it depends upon all inputs, and
12671 all other outputs depend upon it.  For instance, if @command{foo}
12672 should additionally read @file{data.bar} and also produce
12673 @file{data.w} and @file{data.x}, we would write:
12675 @example
12676 data.c: data.foo data.bar
12677         foo data.foo data.bar
12678 data.h data.w data.x: data.c
12679 ## Recover from the removal of $@@
12680         @@if test -f $@@; then :; else \
12681           rm -f data.c; \
12682           $(MAKE) $(AM_MAKEFLAGS) data.c; \
12683         fi
12684 @end example
12686 However there are now three minor problems in this setup.  One is related
12687 to the timestamp ordering of @file{data.h}, @file{data.w},
12688 @file{data.x}, and @file{data.c}.  Another one is a race condition
12689 if a parallel @command{make} attempts to run multiple instances of the
12690 recover block at once.  Finally, the recursive rule breaks @samp{make -n}
12691 when run with GNU @command{make} (as well as some other @command{make}
12692 implementations), as it may remove @file{data.h} even when it should not
12693 (@pxref{MAKE Variable, , How the @code{MAKE} Variable Works, make,
12694 The GNU Make Manual}).
12696 Let us deal with the first problem.  @command{foo} outputs four files,
12697 but we do not know in which order these files are created.  Suppose
12698 that @file{data.h} is created before @file{data.c}.  Then we have a
12699 weird situation.  The next time @command{make} is run, @file{data.h}
12700 will appear older than @file{data.c}, the second rule will be
12701 triggered, a shell will be started to execute the @samp{if@dots{}fi}
12702 command, but actually it will just execute the @code{then} branch,
12703 that is: nothing.  In other words, because the witness we selected is
12704 not the first file created by @command{foo}, @command{make} will start
12705 a shell to do nothing each time it is run.
12707 A simple riposte is to fix the timestamps when this happens.
12709 @example
12710 data.c: data.foo data.bar
12711         foo data.foo data.bar
12712 data.h data.w data.x: data.c
12713         @@if test -f $@@; then \
12714           touch $@@; \
12715         else \
12716 ## Recover from the removal of $@@
12717           rm -f data.c; \
12718           $(MAKE) $(AM_MAKEFLAGS) data.c; \
12719         fi
12720 @end example
12722 Another solution is to use a different and dedicated file as witness,
12723 rather than using any of @command{foo}'s outputs.
12725 @example
12726 data.stamp: data.foo data.bar
12727         @@rm -f data.tmp
12728         @@touch data.tmp
12729         foo data.foo data.bar
12730         @@mv -f data.tmp $@@
12731 data.c data.h data.w data.x: data.stamp
12732 ## Recover from the removal of $@@
12733         @@if test -f $@@; then :; else \
12734           rm -f data.stamp; \
12735           $(MAKE) $(AM_MAKEFLAGS) data.stamp; \
12736         fi
12737 @end example
12739 @file{data.tmp} is created before @command{foo} is run, so it has a
12740 timestamp older than output files output by @command{foo}.  It is then
12741 renamed to @file{data.stamp} after @command{foo} has run, because we
12742 do not want to update @file{data.stamp} if @command{foo} fails.
12744 This solution still suffers from the second problem: the race
12745 condition in the recover rule.  If, after a successful build, a user
12746 erases @file{data.c} and @file{data.h}, and runs @samp{make -j}, then
12747 @command{make} may start both recover rules in parallel.  If the two
12748 instances of the rule execute @samp{$(MAKE) $(AM_MAKEFLAGS)
12749 data.stamp} concurrently the build is likely to fail (for instance, the
12750 two rules will create @file{data.tmp}, but only one can rename it).
12752 Admittedly, such a weird situation does not arise during ordinary
12753 builds.  It occurs only when the build tree is mutilated.  Here
12754 @file{data.c} and @file{data.h} have been explicitly removed without
12755 also removing @file{data.stamp} and the other output files.
12756 @code{make clean; make} will always recover from these situations even
12757 with parallel makes, so you may decide that the recover rule is solely
12758 to help non-parallel make users and leave things as-is.  Fixing this
12759 requires some locking mechanism to ensure only one instance of the
12760 recover rule rebuilds @file{data.stamp}.  One could imagine something
12761 along the following lines.
12763 @example
12764 data.c data.h data.w data.x: data.stamp
12765 ## Recover from the removal of $@@
12766         @@if test -f $@@; then :; else \
12767           trap 'rm -rf data.lock data.stamp' 1 2 13 15; \
12768 ## mkdir is a portable test-and-set
12769           if mkdir data.lock 2>/dev/null; then \
12770 ## This code is being executed by the first process.
12771             rm -f data.stamp; \
12772             $(MAKE) $(AM_MAKEFLAGS) data.stamp; \
12773             result=$$?; rm -rf data.lock; exit $$result; \
12774           else \
12775 ## This code is being executed by the follower processes.
12776 ## Wait until the first process is done.
12777             while test -d data.lock; do sleep 1; done; \
12778 ## Succeed if and only if the first process succeeded.
12779             test -f data.stamp; \
12780           fi; \
12781         fi
12782 @end example
12784 Using a dedicated witness, like @file{data.stamp}, is very handy when
12785 the list of output files is not known beforehand.  As an illustration,
12786 consider the following rules to compile many @file{*.el} files into
12787 @file{*.elc} files in a single command.  It does not matter how
12788 @code{ELFILES} is defined (as long as it is not empty: empty targets
12789 are not accepted by POSIX).
12791 @example
12792 ELFILES = one.el two.el three.el @dots{}
12793 ELCFILES = $(ELFILES:=c)
12795 elc-stamp: $(ELFILES)
12796         @@rm -f elc-temp
12797         @@touch elc-temp
12798         $(elisp_comp) $(ELFILES)
12799         @@mv -f elc-temp $@@
12801 $(ELCFILES): elc-stamp
12802         @@if test -f $@@; then :; else \
12803 ## Recover from the removal of $@@
12804           trap 'rm -rf elc-lock elc-stamp' 1 2 13 15; \
12805           if mkdir elc-lock 2>/dev/null; then \
12806 ## This code is being executed by the first process.
12807             rm -f elc-stamp; \
12808             $(MAKE) $(AM_MAKEFLAGS) elc-stamp; \
12809             rmdir elc-lock; \
12810           else \
12811 ## This code is being executed by the follower processes.
12812 ## Wait until the first process is done.
12813             while test -d elc-lock; do sleep 1; done; \
12814 ## Succeed if and only if the first process succeeded.
12815             test -f elc-stamp; exit $$?; \
12816 @c $$
12817           fi; \
12818         fi
12819 @end example
12821 These solutions all still suffer from the third problem, namely that
12822 they break the promise that @samp{make -n} should not cause any actual
12823 changes to the tree.  For those solutions that do not create lock files,
12824 it is possible to split the recover rules into two separate recipe
12825 commands, one of which does all work but the recursion, and the
12826 other invokes the recursive @samp{$(MAKE)}.  The solutions involving
12827 locking could act upon the contents of the @samp{MAKEFLAGS} variable,
12828 but parsing that portably is not easy (@pxref{The Make Macro MAKEFLAGS,,,
12829 autoconf, The Autoconf Manual}).  Here is an example:
12831 @example
12832 ELFILES = one.el two.el three.el @dots{}
12833 ELCFILES = $(ELFILES:=c)
12835 elc-stamp: $(ELFILES)
12836         @@rm -f elc-temp
12837         @@touch elc-temp
12838         $(elisp_comp) $(ELFILES)
12839         @@mv -f elc-temp $@@
12841 $(ELCFILES): elc-stamp
12842 ## Recover from the removal of $@@
12843         @@dry=; for f in x $$MAKEFLAGS; do \
12844           case $$f in \
12845             *=*|--*);; \
12846             *n*) dry=:;; \
12847           esac; \
12848         done; \
12849         if test -f $@@; then :; else \
12850           $$dry trap 'rm -rf elc-lock elc-stamp' 1 2 13 15; \
12851           if $$dry mkdir elc-lock 2>/dev/null; then \
12852 ## This code is being executed by the first process.
12853             $$dry rm -f elc-stamp; \
12854             $(MAKE) $(AM_MAKEFLAGS) elc-stamp; \
12855             $$dry rmdir elc-lock; \
12856           else \
12857 ## This code is being executed by the follower processes.
12858 ## Wait until the first process is done.
12859             while test -d elc-lock && test -z "$$dry"; do \
12860 @c $$
12861               sleep 1; \
12862             done; \
12863 ## Succeed if and only if the first process succeeded.
12864             $$dry test -f elc-stamp; exit $$?; \
12865           fi; \
12866         fi
12867 @end example
12869 For completeness it should be noted that GNU @command{make} is able to
12870 express rules with multiple output files using pattern rules
12871 (@pxref{Pattern Examples, , Pattern Rule Examples, make, The GNU Make
12872 Manual}).  We do not discuss pattern rules here because they are not
12873 portable, but they can be convenient in packages that assume GNU
12874 @command{make}.
12877 @node Hard-Coded Install Paths
12878 @section Installing to Hard-Coded Locations
12880 @display
12881 My package needs to install some configuration file.  I tried to use
12882 the following rule, but @samp{make distcheck} fails.  Why?
12884 @example
12885 # Do not do this.
12886 install-data-local:
12887         $(INSTALL_DATA) $(srcdir)/afile $(DESTDIR)/etc/afile
12888 @end example
12889 @end display
12891 @display
12892 My package needs to populate the installation directory of another
12893 package at install-time.  I can easily compute that installation
12894 directory in @file{configure}, but if I install files therein,
12895 @samp{make distcheck} fails.  How else should I do?
12896 @end display
12898 These two setups share their symptoms: @samp{make distcheck} fails
12899 because they are installing files to hard-coded paths.  In the later
12900 case the path is not really hard-coded in the package, but we can
12901 consider it to be hard-coded in the system (or in whichever tool that
12902 supplies the path).  As long as the path does not use any of the
12903 standard directory variables (@samp{$(prefix)}, @samp{$(bindir)},
12904 @samp{$(datadir)}, etc.), the effect will be the same:
12905 user-installations are impossible.
12907 As a (non-root) user who wants to install a package, you usually have no
12908 right to install anything in @file{/usr} or @file{/usr/local}.  So you
12909 do something like @samp{./configure --prefix ~/usr} to install a
12910 package in your own @file{~/usr} tree.
12912 If a package attempts to install something to some hard-coded path
12913 (e.g., @file{/etc/afile}), regardless of this @option{--prefix} setting,
12914 then the installation will fail.  @samp{make distcheck} performs such
12915 a @option{--prefix} installation, hence it will fail too.
12917 Now, there are some easy solutions.
12919 The above @code{install-data-local} example for installing
12920 @file{/etc/afile} would be better replaced by
12922 @example
12923 sysconf_DATA = afile
12924 @end example
12926 @noindent
12927 by default @code{sysconfdir} will be @samp{$(prefix)/etc}, because
12928 this is what the GNU Standards require.  When such a package is
12929 installed on an FHS compliant system, the installer will have to set
12930 @samp{--sysconfdir=/etc}.  As the maintainer of the package you
12931 should not be concerned by such site policies: use the appropriate
12932 standard directory variable to install your files so that the installer
12933 can easily redefine these variables to match their site conventions.
12935 Installing files that should be used by another package is slightly
12936 more involved.  Let's take an example and assume you want to install
12937 a shared library that is a Python extension module.  If you ask Python
12938 where to install the library, it will answer something like this:
12940 @example
12941 % @kbd{python -c 'from distutils import sysconfig;
12942              print sysconfig.get_python_lib(1,0)'}
12943 /usr/lib/python2.5/site-packages
12944 @end example
12946 If you indeed use this absolute path to install your shared library,
12947 non-root users will not be able to install the package, hence
12948 distcheck fails.
12950 Let's do better.  The @samp{sysconfig.get_python_lib()} function
12951 actually accepts a third argument that will replace Python's
12952 installation prefix.
12954 @example
12955 % @kbd{python -c 'from distutils import sysconfig;
12956              print sysconfig.get_python_lib(1,0,"$@{exec_prefix@}")'}
12957 $@{exec_prefix@}/lib/python2.5/site-packages
12958 @end example
12960 You can also use this new path.  If you do
12961 @itemize @bullet
12962 @item
12963 root users can install your package with the same @option{--prefix}
12964 as Python (you get the behavior of the previous attempt)
12966 @item
12967 non-root users can install your package too, they will have the
12968 extension module in a place that is not searched by Python but they
12969 can work around this using environment variables (and if you installed
12970 scripts that use this shared library, it's easy to tell Python were to
12971 look in the beginning of your script, so the script works in both
12972 cases).
12973 @end itemize
12975 The @code{AM_PATH_PYTHON} macro uses similar commands to define
12976 @samp{$(pythondir)} and @samp{$(pyexecdir)} (@pxref{Python}).
12978 Of course not all tools are as advanced as Python regarding that
12979 substitution of @var{prefix}.  So another strategy is to figure the
12980 part of the installation directory that must be preserved.  For
12981 instance, here is how @code{AM_PATH_LISPDIR} (@pxref{Emacs Lisp})
12982 computes @samp{$(lispdir)}:
12984 @example
12985 $EMACS -batch -Q -eval '(while load-path
12986   (princ (concat (car load-path) "\n"))
12987   (setq load-path (cdr load-path)))' >conftest.out
12988 lispdir=`sed -n
12989   -e 's,/$,,'
12990   -e '/.*\/lib\/x*emacs\/site-lisp$/@{
12991         s,.*/lib/\(x*emacs/site-lisp\)$,$@{libdir@}/\1,;p;q;
12992       @}'
12993   -e '/.*\/share\/x*emacs\/site-lisp$/@{
12994         s,.*/share/\(x*emacs/site-lisp\),$@{datarootdir@}/\1,;p;q;
12995       @}'
12996   conftest.out`
12997 @end example
12999 I.e., it just picks the first directory that looks like
13000 @file{*/lib/*emacs/site-lisp} or @file{*/share/*emacs/site-lisp} in
13001 the search path of emacs, and then substitutes @samp{$@{libdir@}} or
13002 @samp{$@{datadir@}} appropriately.
13004 The emacs case looks complicated because it processes a list and
13005 expects two possible layouts, otherwise it's easy, and the benefits for
13006 non-root users are really worth the extra @command{sed} invocation.
13009 @node Debugging Make Rules
13010 @section Debugging Make Rules
13011 @cindex debugging rules
13012 @cindex rules, debugging
13014 The rules and dependency trees generated by @command{automake} can get
13015 rather complex, and leave the developer head-scratching when things
13016 don't work as expected.  Besides the debug options provided by the
13017 @command{make} command (@pxref{Options Summary,,, make, The GNU Make
13018 Manual}), here's a couple of further hints for debugging makefiles
13019 generated by @command{automake} effectively:
13021 @itemize
13022 @item
13023 If less verbose output has been enabled in the package with the use
13024 of silent rules (@pxref{Automake Silent Rules}), you can use
13025 @code{make V=1} to see the commands being executed.
13026 @item
13027 @code{make -n} can help show what would be done without actually doing
13028 it.  Note however, that this will @emph{still execute} commands prefixed
13029 with @samp{+}, and, when using GNU @command{make}, commands that contain
13030 the strings @samp{$(MAKE)} or @samp{$@{MAKE@}} (@pxref{Instead of
13031 Execution,,, make, The GNU Make Manual}).
13032 Typically, this is helpful to show what recursive rules would do, but it
13033 means that, in your own rules, you should not mix such recursion with
13034 actions that change any files.@footnote{Automake's @samp{dist} and
13035 @samp{distcheck} rules had a bug in this regard in that they created
13036 directories even with @option{-n}, but this has been fixed in Automake
13037 1.11.}  Furthermore, note that GNU @command{make} will update
13038 prerequisites for the @file{Makefile} file itself even with @option{-n}
13039 (@pxref{Remaking Makefiles,,, make, The GNU Make Manual}).
13040 @item
13041 @code{make SHELL="/bin/bash -vx"} can help debug complex rules.
13042 @xref{The Make Macro SHELL,,, autoconf, The Autoconf Manual}, for some
13043 portability quirks associated with this construct.
13044 @item
13045 @code{echo 'print: ; @@echo "$(VAR)"' | make -f Makefile -f - print}
13046 can be handy to examine the expanded value of variables.  You may need
13047 to use a target other than @samp{print} if that is already used or a
13048 file with that name exists.
13049 @item
13050 @url{http://bashdb.sourceforge.net/@/remake/} provides a modified
13051 GNU @command{make} command called @command{remake} that copes with
13052 complex GNU @command{make}-specific Makefiles and allows to trace
13053 execution, examine variables, and call rules interactively, much like
13054 a debugger.
13055 @end itemize
13058 @node Reporting Bugs
13059 @section Reporting Bugs
13061 Most nontrivial software has bugs.  Automake is no exception.  Although
13062 we cannot promise we can or will fix a bug, and we might not even agree
13063 that it is a bug, we want to hear about problems you encounter. Often we
13064 agree they are bugs and want to fix them.
13066 To make it possible for us to fix a bug, please report it. In order to
13067 do so effectively, it helps to know when and how to do it.
13069 Before reporting a bug, it is a good idea to see if it is already known.
13070 You can look at the @uref{http://debbugs.gnu.org/, GNU Bug Tracker}
13071 and the @uref{http://lists.gnu.org/@/archive/@/html/@/bug-automake/,
13072 bug-automake mailing list archives} for previous bug reports.  We
13073 previously used a
13074 @uref{http://sourceware.org/@/cgi-bin/@/gnatsweb.pl?database=automake,
13075 Gnats database} for bug tracking, so some bugs might have been reported
13076 there already.  Please do not use it for new bug reports, however.
13078 If the bug is not already known, it should be reported.  It is very
13079 important to report bugs in a way that is useful and efficient.  For
13080 this, please familiarize yourself with
13081 @uref{http://www.chiark.greenend.org.uk/@/~sgtatham/@/bugs.html, How to
13082 Report Bugs Effectively} and
13083 @uref{http://catb.org/@/~esr/@/faqs/@/smart-questions.html, How to Ask
13084 Questions the Smart Way}.  This helps you and developers to save time
13085 which can then be spent on fixing more bugs and implementing more
13086 features.
13088 For a bug report, a feature request or other suggestions, please send
13089 email to @email{@value{PACKAGE_BUGREPORT}}.  This will then open a new
13090 bug in the @uref{http://debbugs.gnu.org/@/automake, bug tracker}.  Be
13091 sure to include the versions of Autoconf and Automake that you use.
13092 Ideally, post a minimal @file{Makefile.am} and @file{configure.ac} that
13093 reproduces the problem you encounter.  If you have encountered test
13094 suite failures, please attach the @file{test-suite.log} file.
13096 @c ========================================================== Appendices
13098 @page
13099 @node Copying This Manual
13100 @appendix Copying This Manual
13102 @menu
13103 * GNU Free Documentation License::  License for copying this manual
13104 @end menu
13106 @node GNU Free Documentation License
13107 @appendixsec GNU Free Documentation License
13108 @include fdl.texi
13110 @page
13111 @node Indices
13112 @appendix Indices
13114 @menu
13115 * Macro Index::                 Index of Autoconf macros
13116 * Variable Index::              Index of Makefile variables
13117 * General Index::               General index
13118 @end menu
13120 @node Macro Index
13121 @appendixsec Macro Index
13123 @printindex fn
13125 @node Variable Index
13126 @appendixsec Variable Index
13128 @printindex vr
13130 @node General Index
13131 @appendixsec General Index
13133 @printindex cp
13136 @bye
13138 @c  LocalWords:  texinfo setfilename settitle setchapternewpage texi direntry
13139 @c  LocalWords:  dircategory in's aclocal ifinfo titlepage Tromey vskip pt sp
13140 @c  LocalWords:  filll defcodeindex ov cv op tr syncodeindex fn cp vr ifnottex
13141 @c  LocalWords:  dir Automake's ac Dist Gnits gnits dfn Autoconf's pxref
13142 @c  LocalWords:  cindex Autoconf autoconf perl samp cvs dist trindex SUBST foo
13143 @c  LocalWords:  xs emph FIXME ref vindex pkglibdir pkgincludedir pkgdatadir mt
13144 @c  LocalWords:  pkg libdir cpio bindir sbindir rmt pax sbin zar zardir acindex
13145 @c  LocalWords:  HTML htmldir html noinst TEXINFOS nodist nobase strudel CFLAGS
13146 @c  LocalWords:  libmumble CC YFLAGS itemx de fication config url comp
13147 @c  LocalWords:  depcomp elisp sh mdate mkinstalldirs mkdir py tex dvi ps pdf
13148 @c  LocalWords:  ylwrap zardoz INIT gettext acinclude mv FUNCS LIBOBJS LDADD fr
13149 @c  LocalWords:  uref featureful dnl src LINGUAS es ko nl pl sl sv PROG ISC doc
13150 @c  LocalWords:  POSIX STDC fcntl FUNC ALLOCA blksize struct stat intl po chmod
13151 @c  LocalWords:  ChangeLog SUBDIRS gettextize gpl testdata getopt INTLLIBS cpp
13152 @c  LocalWords:  localedir datadir DLOCALEDIR DEXIT CPPFLAGS autoreconf opindex
13153 @c  LocalWords:  AUX var symlink deps Wno Wnone package's aclocal's distclean
13154 @c  LocalWords:  ltmain xref LIBSOURCE LIBSOURCES LIBOBJ MEMCMP vs RANLIB CXX
13155 @c  LocalWords:  LDFLAGS LIBTOOL libtool XTRA LIBS gettext's acdir APIVERSION
13156 @c  LocalWords:  dirlist noindent usr TIOCGWINSZ sc
13157 @c  LocalWords:  GWINSZ termios SRCDIR tarball bzip LISPDIR lispdir XEmacs CCAS
13158 @c  LocalWords:  emacsen MicroEmacs CCASFLAGS UX GCJ gcj GCJFLAGS posix DMALLOC
13159 @c  LocalWords:  dmalloc ldmalloc REGEX regex DEPDIR DEP DEFUN aclocaldir fi
13160 @c  LocalWords:  mymacro myothermacro AMFLAGS autopoint autogen libtoolize yum
13161 @c  LocalWords:  autoheader README MAKEFLAGS subdir Inetutils sync COND endif
13162 @c  LocalWords:  Miller's installable includedir inc pkgdata EXEEXT libexec bsd
13163 @c  LocalWords:  pkglib libexecdir prog libcpio cpio's dlopen dlpreopen linux
13164 @c  LocalWords:  subsubsection OBJEXT esac lib LTLIBRARIES liblob LIBADD AR ar
13165 @c  LocalWords:  ARFLAGS cru ing maude libgettext lo LTLIBOBJS rpath SGI PRE yy
13166 @c  LocalWords:  libmaude CCLD CXXFLAGS FFLAGS LFLAGS OBJCFLAGS RFLAGS DEFS cc
13167 @c  LocalWords:  OBJCXXFLAGS
13168 @c  LocalWords:  SHORTNAME vtable srcdir nostdinc basename yxx cxx ll lxx gdb
13169 @c  LocalWords:  lexers yymaxdepth maxdepth yyparse yylex yyerror yylval lval
13170 @c  LocalWords:  yychar yydebug yypact yyr yydef def yychk chk yypgo pgo yyact
13171 @c  LocalWords:  yyexca exca yyerrflag errflag yynerrs nerrs yyps yypv pv yys
13172 @c  LocalWords:  yystate yytmp tmp yyv yyval val yylloc lloc yyreds yytoks toks
13173 @c  LocalWords:  yylhs yylen yydefred yydgoto yysindex yyrindex yygindex yyname
13174 @c  LocalWords:  yytable yycheck yyrule byacc CXXCOMPILE CXXLINK FLINK cfortran
13175 @c  LocalWords:  Catalogue preprocessable FLIBS libfoo baz JAVACFLAGS java exe
13176 @c  LocalWords:  SunOS fying basenames exeext uninstalled oldinclude kr FSF's
13177 @c  LocalWords:  pkginclude oldincludedir sysconf sharedstate localstate gcc rm
13178 @c  LocalWords:  sysconfdir sharedstatedir localstatedir preexist CLEANFILES gz
13179 @c  LocalWords:  depfile tmpdepfile depmode const interoperate
13180 @c  LocalWords:  JAVAC javac JAVAROOT builddir CLASSPATH ENV pyc pyo pkgpython
13181 @c  LocalWords:  pyexecdir pkgpyexecdir Python's pythondir pkgpythondir txi ois
13182 @c  LocalWords:  installinfo vers MAKEINFO makeinfo MAKEINFOFLAGS noinstall rf
13183 @c  LocalWords:  mandir thesame alsothesame installman myexecbin DESTDIR Pinard
13184 @c  LocalWords:  uninstall installdirs uninstalls MOSTLYCLEANFILES mostlyclean
13185 @c  LocalWords:  DISTCLEANFILES MAINTAINERCLEANFILES GZIP gzip shar exp
13186 @c  LocalWords:  distdir distcheck distcleancheck listfiles distuninstallcheck
13187 @c  LocalWords:  VPATH tarfile stdout XFAIL DejaGnu dejagnu DEJATOOL runtest ln
13188 @c  LocalWords:  RUNTESTDEFAULTFLAGS toolchain RUNTESTFLAGS asis readme DVIPS
13189 @c  LocalWords:  installcheck gzipped tarZ std utils etags mkid cd
13190 @c  LocalWords:  ARGS taggable ETAGSFLAGS lang ctags CTAGSFLAGS GTAGS gtags idl
13191 @c  LocalWords:  foocc doit idlC multilibs ABIs cmindex defmac ARG enableval FC
13192 @c  LocalWords:  MSG xtrue DBG pathchk CYGWIN afile proglink versioned CVS's TE
13193 @c  LocalWords:  wildcards Autoconfiscated subsubheading autotools Meyering API
13194 @c  LocalWords:  ois's wildcard Wportability cartouche vrindex printindex Duret
13195 @c  LocalWords:  DSOMEFLAG DVERSION automake Lutz insertcopying versioning FAQ
13196 @c  LocalWords:  LTLIBOBJ Libtool's libtool's libltdl dlopening itutions libbar
13197 @c  LocalWords:  WANTEDLIBS libhello sublibraries libtop libsub dlopened Ratfor
13198 @c  LocalWords:  mymodule timestamps timestamp underquoted MAKEINFOHTMLFLAGS te
13199 @c  LocalWords:  GNUmakefile Subpackages subpackage's subpackages aux
13200 @c  LocalWords:  detailmenu Timeline pwd reldir AUTOM autom PREREQ FOOBAR libc
13201 @c  LocalWords:  libhand subpackage moduleN libmain libmisc FCFLAGS FCCOMPILE
13202 @c  LocalWords:  FCLINK subst sed ELCFILES elc MAKEINFOHTML dvips esyscmd ustar
13203 @c  LocalWords:  tarballs Woverride vfi ELFILES djm AutoMake honkin FSF
13204 @c  LocalWords:  fileutils precanned MacKenzie's reimplement termutils Tromey's
13205 @c  LocalWords:  cois gnitsians LIBPROGRAMS progs LIBLIBRARIES Textutils Ulrich
13206 @c  LocalWords:  Matzigkeit Drepper's Gord Matzigkeit's jm Dalley Debian org
13207 @c  LocalWords:  Administrivia ILU CORBA Sourceware Molenda sourceware Elliston
13208 @c  LocalWords:  dep Oliva Akim Demaille Aiieeee Demaillator Akim's sourcequake
13209 @c  LocalWords:  grep backported screenshots libgcj KB unnumberedsubsubsec pre
13210 @c  LocalWords:  precomputing hacky makedepend inline clearmake LD PRELOAD Rel
13211 @c  LocalWords:  syscalls perlhist acl pm multitable headitem fdl appendixsec
13212 @c  LocalWords:  LTALLOCA MALLOC malloc memcmp strdup alloca libcompat xyz DFOO
13213 @c  LocalWords:  unprefixed buildable preprocessed DBAZ DDATADIR WARNINGCFLAGS
13214 @c  LocalWords:  LIBFOOCFLAGS LIBFOOLDFLAGS ftable testSubDir obj LIBTOOLFLAGS
13215 @c  LocalWords:  barexec Pinard's automatize initialize lzip xz cscope