0cdeb7b9dd4ff2bf1bb1dd7110a7cef31e751693
[platform/upstream/automake.git] / doc / automake.texi
1 \input texinfo   @c -*-texinfo-*-
2 @c %**start of header
3 @setfilename automake.info
4 @settitle automake
5 @setchapternewpage off
6 @c %**end of header
7
8 @include version.texi
9
10 @c @ovar(ARG, DEFAULT)
11 @c -------------------
12 @c The ARG is an optional argument.  To be used for macro arguments in
13 @c their documentation (@defmac).
14 @macro ovar{varname}
15 @r{[}@var{\varname\}@r{]}
16 @end macro
17
18 @set PACKAGE_BUGREPORT bug-automake@@gnu.org
19
20 @copying
21
22 This manual is for GNU Automake (version @value{VERSION},
23 @value{UPDATED}), a program that creates GNU standards-compliant
24 Makefiles from template files.
25
26 Copyright @copyright{} 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
27 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Free Software
28 Foundation, Inc.
29
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.''
37
38 @end quotation
39 @end copying
40
41 @dircategory Software development
42 @direntry
43 * Automake: (automake).         Making GNU standards-compliant Makefiles.
44 @end direntry
45
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
51
52 @titlepage
53 @title GNU Automake
54 @subtitle For version @value{VERSION}, @value{UPDATED}
55 @author David MacKenzie
56 @author Tom Tromey
57 @author Alexandre Duret-Lutz
58 @page
59 @vskip 0pt plus 1filll
60 @insertcopying
61 @end titlepage
62
63 @contents
64
65 @c We use the following macros to define indices:
66 @c   @cindex   concepts, and anything that does not fit elsewhere
67 @c   @vindex   Makefile variables
68 @c   @trindex  targets
69 @c   @acindex  Autoconf/Automake/Libtool/M4/... macros
70 @c   @opindex  tool options
71
72 @c Define an index of configure macros.
73 @defcodeindex ac
74 @c Define an index of options.
75 @defcodeindex op
76 @c Define an index of targets.
77 @defcodeindex tr
78 @c Define an index of commands.
79 @defcodeindex cm
80
81 @c Put the macros in the function index.
82 @syncodeindex ac fn
83
84 @c Put everything else into one index (arbitrarily chosen to be the
85 @c concept index).
86 @syncodeindex op cp
87 @syncodeindex tr cp
88 @syncodeindex cm cp
89
90 @ifnottex
91 @node Top
92 @comment  node-name,  next,  previous,  up
93 @top GNU Automake
94
95 @insertcopying
96
97 @menu
98 * Introduction::                Automake's purpose
99 * Autotools Introduction::      An Introduction to the Autotools
100 * Generalities::                General ideas
101 * Examples::                    Some example packages
102 * automake Invocation::         Creating a Makefile.in
103 * configure::                   Scanning configure.ac, using aclocal
104 * Directories::                 Declaring subdirectories
105 * Programs::                    Building programs and libraries
106 * Other Objects::               Other derived objects
107 * Other GNU Tools::             Other GNU Tools
108 * Documentation::               Building documentation
109 * Install::                     What gets installed
110 * Clean::                       What gets cleaned
111 * Dist::                        What goes in a distribution
112 * Tests::                       Support for test suites
113 * Rebuilding::                  Automatic rebuilding of Makefile
114 * Options::                     Changing Automake's behavior
115 * Miscellaneous::               Miscellaneous rules
116 * Include::                     Including extra files in an Automake template
117 * Conditionals::                Conditionals
118 * Silencing Make::              Obtain less verbose output from @command{make}
119 * Gnits::                       The effect of @option{--gnu} and @option{--gnits}
120 * Cygnus::                      The effect of @option{--cygnus}
121 * Not Enough::                  When Automake is not Enough
122 * Distributing::                Distributing the Makefile.in
123 * API Versioning::              About compatibility between Automake versions
124 * Upgrading::                   Upgrading to a Newer Automake Version
125 * FAQ::                         Frequently Asked Questions
126 * History::                     Notes about the history of Automake
127 * Copying This Manual::         How to make copies of this manual
128 * Indices::                     Indices of variables, macros, and concepts
129
130 @detailmenu
131  --- The Detailed Node Listing ---
132
133 An Introduction to the Autotools
134
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
139
140 Use Cases for the GNU Build System
141
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
155
156 A Small Hello World
157
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::
161
162 General ideas
163
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
171
172 Some example packages
173
174 * Complete::                    A simple example, start to finish
175 * true::                        Building true and false
176
177 Scanning @file{configure.ac}, using @command{aclocal}
178
179 * Requirements::                Configuration requirements
180 * Optional::                    Other things Automake recognizes
181 * aclocal Invocation::          Auto-generating aclocal.m4
182 * Macros::                      Autoconf macros supplied with Automake
183
184 Auto-generating aclocal.m4
185
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
192
193 Autoconf macros supplied with Automake
194
195 * Public Macros::               Macros that you can use.
196 * Obsolete Macros::             Macros that you should stop using.
197 * Private Macros::              Macros that you should not use.
198
199 Directories
200
201 * Subdirectories::              Building subdirectories recursively
202 * Conditional Subdirectories::  Conditionally not building directories
203 * Alternative::                 Subdirectories without recursion
204 * Subpackages::                 Nesting packages
205
206 Conditional Subdirectories
207
208 * SUBDIRS vs DIST_SUBDIRS::     Two sets of directories
209 * Subdirectories with AM_CONDITIONAL::  Specifying conditional subdirectories
210 * Subdirectories with AC_SUBST::  Another way for conditional recursion
211 * Unconfigured Subdirectories::  Not even creating a @samp{Makefile}
212
213 Building Programs and Libraries
214
215 * A Program::                   Building a program
216 * A Library::                   Building a library
217 * A Shared Library::            Building a Libtool library
218 * Program and Library Variables::  Variables controlling program and
219                                 library builds
220 * Default _SOURCES::            Default source files
221 * LIBOBJS::                     Special handling for LIBOBJS and ALLOCA
222 * Program Variables::           Variables used when building a program
223 * Yacc and Lex::                Yacc and Lex support
224 * C++ Support::                 Compiling 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
235
236 Building a program
237
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
242
243 Building a Shared Library
244
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
254
255 Common Issues Related to Libtool's Use
256
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
259
260 Fortran 77 Support
261
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++
265
266 Mixing Fortran 77 With C and C++
267
268 * How the Linker is Chosen::    Automatic linker selection
269
270 Fortran 9x Support
271
272 * Compiling Fortran 9x Files::  Compiling Fortran 9x sources
273
274 Other Derived Objects
275
276 * Scripts::                     Executable scripts
277 * Headers::                     Header files
278 * Data::                        Architecture-independent data files
279 * Sources::                     Derived sources
280
281 Built Sources
282
283 * Built Sources Example::       Several ways to handle built sources.
284
285 Other GNU Tools
286
287 * Emacs Lisp::                  Emacs Lisp
288 * gettext::                     Gettext
289 * Libtool::                     Libtool
290 * Java::                        Java bytecode compilation (deprecated)
291 * Python::                      Python
292
293 Building documentation
294
295 * Texinfo::                     Texinfo
296 * Man Pages::                   Man pages
297
298 What Gets Installed
299
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
305
306 What Goes in a Distribution
307
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
313
314 Support for test suites
315
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
322
323 Simple Tests
324
325 * Scripts-based Testsuites::    Automake-specific concepts and terminology
326 * Serial Test Harness::         Older (and obsolescent) serial test harness
327 * Parallel Test Harness::       Generic concurrent test harness
328
329 Using the TAP test protocol
330
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::
335
336 Custom Test Drivers
337
338 * Overview of Custom Test Drivers Support::
339 * Declaring Custom Test Drivers::
340 * API for Custom Test Drivers::
341
342 API for Custom Test Drivers
343
344 * Command-line arguments for test drivers::
345 * Log files generation and test results recording::
346 * Testsuite progress output::
347
348 Changing Automake's Behavior
349
350 * Options generalities::        Semantics of Automake option
351 * List of Automake options::    A comprehensive list of Automake options
352
353 Miscellaneous Rules
354
355 * Tags::                        Interfacing to cscope, etags and mkid
356 * Suffixes::                    Handling new file extensions
357 * Multilibs::                   Support for multilibs (deprecated, soon to be removed).
358
359 Conditionals
360
361 * Usage of Conditionals::       Declaring conditional content
362 * Limits of Conditionals::      Enclosing complete statements
363
364 Silencing Make
365
366 * Make verbosity::               Make is verbose by default
367 * Tricks For Silencing Make::    Standard and generic ways to silence make
368 * Automake silent-rules Option:: How Automake can help in silencing make
369
370 When Automake Isn't Enough
371
372 * Extending::                   Adding new rules or overriding existing ones.
373 * Third-Party Makefiles::       Integrating Non-Automake @file{Makefile}s.
374
375 Frequently Asked Questions about Automake
376
377 * CVS::                         CVS and generated files
378 * maintainer-mode::             missing and AM_MAINTAINER_MODE
379 * Wildcards::                   Why doesn't Automake support wildcards?
380 * Limitations on File Names::   Limitations on source and installed file names
381 * distcleancheck::              Files left in build directory after distclean
382 * Flag Variables Ordering::     CFLAGS vs.@: AM_CFLAGS vs.@: mumble_CFLAGS
383 * Renamed Objects::             Why are object files sometimes renamed?
384 * Per-Object Flags::            How to simulate per-object flags?
385 * Multiple Outputs::            Writing rules for tools with many output files
386 * Hard-Coded Install Paths::    Installing to hard-coded locations
387 * Debugging Make Rules::        Strategies when things don't work as expected
388 * Reporting Bugs::              Feedback on bugs and feature requests
389
390 History of Automake
391
392 * Timeline::                    The Automake story.
393 * Dependency Tracking Evolution::  Evolution of Automatic Dependency Tracking
394 * Releases::                    Statistics about Automake Releases
395
396 Dependency Tracking in Automake
397
398 * First Take on Dependencies::  Precomputed dependency tracking
399 * Dependencies As Side Effects::  Update at developer compile time
400 * Dependencies for the User::   Update at user compile time
401 * Techniques for Dependencies::  Alternative approaches
402 * Recommendations for Tool Writers::  What tool writers can do to help
403 * Future Directions for Dependencies::  Languages Automake does not know
404
405 Copying This Manual
406
407 * GNU Free Documentation License::  License for copying this manual
408
409 Indices
410
411 * Macro Index::                 Index of Autoconf macros
412 * Variable Index::              Index of Makefile variables
413 * General Index::               General index
414
415 @end detailmenu
416 @end menu
417
418 @end ifnottex
419
420
421 @node Introduction
422 @chapter Introduction
423
424 Automake is a tool for automatically generating @file{Makefile.in}s
425 from files called @file{Makefile.am}.  Each @file{Makefile.am} is
426 basically a series of @command{make} variable
427 definitions@footnote{These variables are also called @dfn{make macros}
428 in Make terminology, however in this manual we reserve the term
429 @dfn{macro} for Autoconf's macros.}, with rules being thrown in
430 occasionally.  The generated @file{Makefile.in}s are compliant with
431 the GNU Makefile standards.
432
433 @cindex GNU Makefile standards
434
435 The GNU Makefile Standards Document
436 (@pxref{Makefile Conventions, , , standards, The GNU Coding Standards})
437 is long, complicated, and subject to change.  The goal of Automake is to
438 remove the burden of Makefile maintenance from the back of the
439 individual GNU maintainer (and put it on the back of the Automake
440 maintainers).
441
442 The typical Automake input file is simply a series of variable definitions.
443 Each such file is processed to create a @file{Makefile.in}.  There
444 should generally be one @file{Makefile.am} per directory of a project.
445
446 @cindex Constraints of Automake
447 @cindex Automake constraints
448
449 Automake does constrain a project in certain ways; for instance, it
450 assumes that the project uses Autoconf (@pxref{Top, , Introduction,
451 autoconf, The Autoconf Manual}), and enforces certain restrictions on
452 the @file{configure.ac} contents@footnote{Older Autoconf versions used
453 @file{configure.in}.  Autoconf 2.50 and greater promotes
454 @file{configure.ac} over @file{configure.in}.  The rest of this
455 documentation will refer to @file{configure.ac}, but Automake also
456 supports @file{configure.in} for backward compatibility.}.
457
458 @cindex Automake requirements
459 @cindex Requirements, Automake
460
461 Automake requires @command{perl} in order to generate the
462 @file{Makefile.in}s.  However, the distributions created by Automake are
463 fully GNU standards-compliant, and do not require @command{perl} in order
464 to be built.
465
466 @cindex Bugs, reporting
467 @cindex Reporting bugs
468 @cindex E-mail, bug reports
469
470 For more information on bug reports, @xref{Reporting Bugs}.
471
472 @node Autotools Introduction
473 @chapter An Introduction to the Autotools
474
475 If you are new to Automake, maybe you know that it is part of a set of
476 tools called @emph{The Autotools}.  Maybe you've already delved into a
477 package full of files named @file{configure}, @file{configure.ac},
478 @file{Makefile.in}, @file{Makefile.am}, @file{aclocal.m4}, @dots{},
479 some of them claiming to be @emph{generated by} Autoconf or Automake.
480 But the exact purpose of these files and their relations is probably
481 fuzzy.  The goal of this chapter is to introduce you to this machinery,
482 to show you how it works and how powerful it is.  If you've never
483 installed or seen such a package, do not worry: this chapter will walk
484 you through it.
485
486 If you need some teaching material, more illustrations, or a less
487 @command{automake}-centered continuation, some slides for this
488 introduction are available in Alexandre Duret-Lutz's
489 @uref{http://www.lrde.epita.fr/@/~adl/@/autotools.html,
490 Autotools Tutorial}.
491 This chapter is the written version of the first part of his tutorial.
492
493 @menu
494 * GNU Build System::            Introducing the GNU Build System
495 * Use Cases::                   Use Cases for the GNU Build System
496 * Why Autotools::               How Autotools Help
497 * Hello World::                 A Small Hello World Package
498 @end menu
499
500 @node GNU Build System
501 @section Introducing the GNU Build System
502 @cindex GNU Build System, introduction
503
504 It is a truth universally acknowledged, that as a developer in
505 possession of a new package, you must be in want of a build system.
506
507 In the Unix world, such a build system is traditionally achieved using
508 the command @command{make} (@pxref{Top, , Overview, make, The GNU Make
509 Manual}).  You express the recipe to build your package in a
510 @file{Makefile}.  This file is a set of rules to build the files in
511 the package.  For instance the program @file{prog} may be built by
512 running the linker on the files @file{main.o}, @file{foo.o}, and
513 @file{bar.o}; the file @file{main.o} may be built by running the
514 compiler on @file{main.c}; etc.  Each time @command{make} is run, it
515 reads @file{Makefile}, checks the existence and modification time of
516 the files mentioned, decides what files need to be built (or rebuilt),
517 and runs the associated commands.
518
519 When a package needs to be built on a different platform than the one
520 it was developed on, its @file{Makefile} usually needs to be adjusted.
521 For instance the compiler may have another name or require more
522 options.  In 1991, David J. MacKenzie got tired of customizing
523 @file{Makefile} for the 20 platforms he had to deal with.  Instead, he
524 handcrafted a little shell script called @file{configure} to
525 automatically adjust the @file{Makefile} (@pxref{Genesis, , Genesis,
526 autoconf, The Autoconf Manual}).  Compiling his package was now
527 as simple as running @code{./configure && make}.
528
529 @cindex GNU Coding Standards
530
531 Today this process has been standardized in the GNU project.  The GNU
532 Coding Standards (@pxref{Managing Releases, The Release Process, ,
533 standards, The GNU Coding Standards}) explains how each package of the
534 GNU project should have a @file{configure} script, and the minimal
535 interface it should have.  The @file{Makefile} too should follow some
536 established conventions.  The result?  A unified build system that
537 makes all packages almost indistinguishable by the installer.  In its
538 simplest scenario, all the installer has to do is to unpack the
539 package, run @code{./configure && make && make install}, and repeat
540 with the next package to install.
541
542 We call this build system the @dfn{GNU Build System}, since it was
543 grown out of the GNU project.  However it is used by a vast number of
544 other packages: following any existing convention has its advantages.
545
546 @cindex Autotools, introduction
547
548 The Autotools are tools that will create a GNU Build System for your
549 package.  Autoconf mostly focuses on @file{configure} and Automake on
550 @file{Makefile}s.  It is entirely possible to create a GNU Build
551 System without the help of these tools.  However it is rather
552 burdensome and error-prone.  We will discuss this again after some
553 illustration of the GNU Build System in action.
554
555 @node Use Cases
556 @section Use Cases for the GNU Build System
557 @cindex GNU Build System, use cases
558 @cindex GNU Build System, features
559 @cindex Features of the GNU Build System
560 @cindex Use Cases for the GNU Build System
561 @cindex @file{amhello-1.0.tar.gz}, location
562 @cindex @file{amhello-1.0.tar.gz}, use cases
563
564 In this section we explore several use cases for the GNU Build System.
565 You can replay all these examples on the @file{amhello-1.0.tar.gz}
566 package distributed with Automake.  If Automake is installed on your
567 system, you should find a copy of this file in
568 @file{@var{prefix}/share/doc/automake/amhello-1.0.tar.gz}, where
569 @var{prefix} is the installation prefix specified during configuration
570 (@var{prefix} defaults to @file{/usr/local}, however if Automake was
571 installed by some GNU/Linux distribution it most likely has been set
572 to @file{/usr}).  If you do not have a copy of Automake installed,
573 you can find a copy of this file inside the @file{doc/} directory of
574 the Automake package.
575
576 Some of the following use cases present features that are in fact
577 extensions to the GNU Build System.  Read: they are not specified by
578 the GNU Coding Standards, but they are nonetheless part of the build
579 system created by the Autotools.  To keep things simple, we do not
580 point out the difference.  Our objective is to show you many of the
581 features that the build system created by the Autotools will offer to
582 you.
583
584 @menu
585 * Basic Installation::          Common installation procedure
586 * Standard Targets::            A list of standard Makefile targets
587 * Standard Directory Variables::  A list of standard directory variables
588 * Standard Configuration Variables::  Using configuration variables
589 * config.site::                 Using a config.site file
590 * VPATH Builds::                Parallel build trees
591 * Two-Part Install::            Installing data and programs separately
592 * Cross-Compilation::           Building for other architectures
593 * Renaming::                    Renaming programs at install time
594 * DESTDIR::                     Building binary packages with DESTDIR
595 * Preparing Distributions::     Rolling out tarballs
596 * Dependency Tracking::         Automatic dependency tracking
597 * Nested Packages::             The GNU Build Systems can be nested
598 @end menu
599
600 @node Basic Installation
601 @subsection Basic Installation
602 @cindex Configuration, basics
603 @cindex Installation, basics
604 @cindex GNU Build System, basics
605
606 The most common installation procedure looks as follows.
607
608 @example
609 ~ % @kbd{tar zxf amhello-1.0.tar.gz}
610 ~ % @kbd{cd amhello-1.0}
611 ~/amhello-1.0 % @kbd{./configure}
612 @dots{}
613 config.status: creating Makefile
614 config.status: creating src/Makefile
615 @dots{}
616 ~/amhello-1.0 % @kbd{make}
617 @dots{}
618 ~/amhello-1.0 % @kbd{make check}
619 @dots{}
620 ~/amhello-1.0 % @kbd{su}
621 Password:
622 /home/adl/amhello-1.0 # @kbd{make install}
623 @dots{}
624 /home/adl/amhello-1.0 # @kbd{exit}
625 ~/amhello-1.0 % @kbd{make installcheck}
626 @dots{}
627 @end example
628
629 @cindex Unpacking
630
631 The user first unpacks the package.  Here, and in the following
632 examples, we will use the non-portable @code{tar zxf} command for
633 simplicity.  On a system without GNU @command{tar} installed, this
634 command should read @code{gunzip -c amhello-1.0.tar.gz | tar xf -}.
635
636 The user then enters the newly created directory to run the
637 @file{configure} script.  This script probes the system for various
638 features, and finally creates the @file{Makefile}s.  In this toy
639 example there are only two @file{Makefile}s, but in real-world projects,
640 there may be many more, usually one @file{Makefile} per directory.
641
642 It is now possible to run @code{make}.  This will construct all the
643 programs, libraries, and scripts that need to be constructed for the
644 package.  In our example, this compiles the @file{hello} program.
645 All files are constructed in place, in the source tree; we will see
646 later how this can be changed.
647
648 @code{make check} causes the package's tests to be run.  This step is
649 not mandatory, but it is often good to make sure the programs that
650 have been built behave as they should, before you decide to install
651 them.  Our example does not contain any tests, so running @code{make
652 check} is a no-op.
653
654 @cindex su, before @code{make install}
655 After everything has been built, and maybe tested, it is time to
656 install it on the system.  That means copying the programs,
657 libraries, header files, scripts, and other data files from the
658 source directory to their final destination on the system.  The
659 command @code{make install} will do that.  However, by default
660 everything will be installed in subdirectories of @file{/usr/local}:
661 binaries will go into @file{/usr/local/bin}, libraries will end up in
662 @file{/usr/local/lib}, etc.  This destination is usually not writable
663 by any user, so we assume that we have to become root before we can
664 run @code{make install}.  In our example, running @code{make install}
665 will copy the program @file{hello} into @file{/usr/local/bin}
666 and @file{README} into @file{/usr/local/share/doc/amhello}.
667
668 A last and optional step is to run @code{make installcheck}.  This
669 command may run tests on the installed files.  @code{make check} tests
670 the files in the source tree, while @code{make installcheck} tests
671 their installed copies.  The tests run by the latter can be different
672 from those run by the former.  For instance, there are tests that
673 cannot be run in the source tree.  Conversely, some packages are set
674 up so that @code{make installcheck} will run the very same tests as
675 @code{make check}, only on different files (non-installed
676 vs.@: installed).  It can make a difference, for instance when the
677 source tree's layout is different from that of the installation.
678 Furthermore it may help to diagnose an incomplete installation.
679
680 Presently most packages do not have any @code{installcheck} tests
681 because the existence of @code{installcheck} is little known, and its
682 usefulness is neglected.  Our little toy package is no better: @code{make
683 installcheck} does nothing.
684
685 @node Standard Targets
686 @subsection Standard @file{Makefile} Targets
687
688 So far we have come across four ways to run @command{make} in the GNU
689 Build System: @code{make}, @code{make check}, @code{make install}, and
690 @code{make installcheck}.  The words @code{check}, @code{install}, and
691 @code{installcheck}, passed as arguments to @command{make}, are called
692 @dfn{targets}.  @code{make} is a shorthand for @code{make all},
693 @code{all} being the default target in the GNU Build System.
694
695 Here is a list of the most useful targets that the GNU Coding Standards
696 specify.
697
698 @table @code
699 @item make all
700 @trindex all
701 Build programs, libraries, documentation, etc.@: (same as @code{make}).
702 @item make install
703 @trindex install
704 Install what needs to be installed, copying the files from the
705 package's tree to system-wide directories.
706 @item make install-strip
707 @trindex install-strip
708 Same as @code{make install}, then strip debugging symbols.  Some
709 users like to trade space for useful bug reports@enddots{}
710 @item make uninstall
711 @trindex uninstall
712 The opposite of @code{make install}: erase the installed files.
713 (This needs to be run from the same build tree that was installed.)
714 @item make clean
715 @trindex clean
716 Erase from the build tree the files built by @code{make all}.
717 @item make distclean
718 @trindex distclean
719 Additionally erase anything @code{./configure} created.
720 @item make check
721 @trindex check
722 Run the test suite, if any.
723 @item make installcheck
724 @trindex installcheck
725 Check the installed programs or libraries, if supported.
726 @item make dist
727 @trindex dist
728 Recreate @file{@var{package}-@var{version}.tar.gz} from all the source
729 files.
730 @end table
731
732 @node Standard Directory Variables
733 @subsection Standard Directory Variables
734 @cindex directory variables
735
736 The GNU Coding Standards also specify a hierarchy of variables to
737 denote installation directories.  Some of these are:
738
739 @multitable {Directory variable} {@code{$@{datarootdir@}/doc/$@{PACKAGE@}}}
740 @headitem Directory variable    @tab Default value
741 @item @code{prefix}              @tab @code{/usr/local}
742 @item @w{@ @ @code{exec_prefix}} @tab @code{$@{prefix@}}
743 @item @w{@ @ @ @ @code{bindir}}  @tab @code{$@{exec_prefix@}/bin}
744 @item @w{@ @ @ @ @code{libdir}}  @tab @code{$@{exec_prefix@}/lib}
745 @item @w{@ @ @ @ @dots{}}
746 @item @w{@ @ @code{includedir}}  @tab @code{$@{prefix@}/include}
747 @item @w{@ @ @code{datarootdir}} @tab @code{$@{prefix@}/share}
748 @item @w{@ @ @ @ @code{datadir}} @tab @code{$@{datarootdir@}}
749 @item @w{@ @ @ @ @code{mandir}}  @tab @code{$@{datarootdir@}/man}
750 @item @w{@ @ @ @ @code{infodir}} @tab @code{$@{datarootdir@}/info}
751 @item @w{@ @ @ @ @code{docdir}}  @tab @code{$@{datarootdir@}/doc/$@{PACKAGE@}}
752 @item @w{@ @ @dots{}}
753 @end multitable
754
755 @c We should provide a complete table somewhere, but not here.  The
756 @c complete list of directory variables it too confusing as-is.  It
757 @c requires some explanations that are too complicated for this
758 @c introduction.  Besides listing directories like localstatedir
759 @c would make the explanations in ``Two-Part Install'' harder.
760
761 Each of these directories has a role which is often obvious from its
762 name.  In a package, any installable file will be installed in one of
763 these directories.  For instance in @code{amhello-1.0}, the program
764 @file{hello} is to be installed in @var{bindir}, the directory for
765 binaries.  The default value for this directory is
766 @file{/usr/local/bin}, but the user can supply a different value when
767 calling @command{configure}.  Also the file @file{README} will be
768 installed into @var{docdir}, which defaults to
769 @file{/usr/local/share/doc/amhello}.
770
771 @opindex --prefix
772
773 As a user, if you wish to install a package on your own account, you
774 could proceed as follows:
775
776 @example
777 ~/amhello-1.0 % @kbd{./configure --prefix ~/usr}
778 @dots{}
779 ~/amhello-1.0 % @kbd{make}
780 @dots{}
781 ~/amhello-1.0 % @kbd{make install}
782 @dots{}
783 @end example
784
785 This would install @file{~/usr/bin/hello} and
786 @file{~/usr/share/doc/amhello/README}.
787
788 The list of all such directory options is shown by
789 @code{./configure --help}.
790
791 @node Standard Configuration Variables
792 @subsection Standard Configuration Variables
793 @cindex configuration variables, overriding
794
795 The GNU Coding Standards also define a set of standard configuration
796 variables used during the build.  Here are some:
797
798 @table @asis
799 @item @code{CC}
800 C compiler command
801 @item @code{CFLAGS}
802 C compiler flags
803 @item @code{CXX}
804 C++ compiler command
805 @item @code{CXXFLAGS}
806 C++ compiler flags
807 @item @code{LDFLAGS}
808 linker flags
809 @item @code{CPPFLAGS}
810 C/C++ preprocessor flags
811 @item @dots{}
812 @end table
813
814 @command{configure} usually does a good job at setting appropriate
815 values for these variables, but there are cases where you may want to
816 override them.  For instance you may have several versions of a
817 compiler installed and would like to use another one, you may have
818 header files installed outside the default search path of the
819 compiler, or even libraries out of the way of the linker.
820
821 Here is how one would call @command{configure} to force it to use
822 @command{gcc-3} as C compiler, use header files from
823 @file{~/usr/include} when compiling, and libraries from
824 @file{~/usr/lib} when linking.
825
826 @example
827 ~/amhello-1.0 % @kbd{./configure --prefix ~/usr CC=gcc-3 \
828 CPPFLAGS=-I$HOME/usr/include LDFLAGS=-L$HOME/usr/lib}
829 @end example
830
831 Again, a full list of these variables appears in the output of
832 @code{./configure --help}.
833
834 @node config.site
835 @subsection Overriding Default Configuration Setting with @file{config.site}
836 @cindex @file{config.site} example
837
838 When installing several packages using the same setup, it can be
839 convenient to create a file to capture common settings.
840 If a file named @file{@var{prefix}/share/config.site} exists,
841 @command{configure} will source it at the beginning of its execution.
842
843 Recall the command from the previous section:
844
845 @example
846 ~/amhello-1.0 % @kbd{./configure --prefix ~/usr CC=gcc-3 \
847 CPPFLAGS=-I$HOME/usr/include LDFLAGS=-L$HOME/usr/lib}
848 @end example
849
850 Assuming we are installing many package in @file{~/usr}, and will
851 always want to use these definitions of @code{CC}, @code{CPPFLAGS}, and
852 @code{LDFLAGS}, we can automate this by creating the following
853 @file{~/usr/share/config.site} file:
854
855 @example
856 test -z "$CC" && CC=gcc-3
857 test -z "$CPPFLAGS" && CPPFLAGS=-I$HOME/usr/include
858 test -z "$LDFLAGS" && LDFLAGS=-L$HOME/usr/lib
859 @end example
860
861 Now, any time a @file{configure} script is using the @file{~/usr}
862 prefix, it will execute the above @file{config.site} and define
863 these three variables.
864
865 @example
866 ~/amhello-1.0 % @kbd{./configure --prefix ~/usr}
867 configure: loading site script /home/adl/usr/share/config.site
868 @dots{}
869 @end example
870
871 @xref{Site Defaults, , Setting Site Defaults, autoconf, The Autoconf
872 Manual}, for more information about this feature.
873
874
875 @node VPATH Builds
876 @subsection Parallel Build Trees (a.k.a.@: VPATH Builds)
877 @cindex Parallel build trees
878 @cindex VPATH builds
879 @cindex source tree and build tree
880 @cindex build tree and source tree
881 @cindex trees, source vs.@: build
882
883 The GNU Build System distinguishes two trees: the source tree, and
884 the build tree.
885
886 The source tree is rooted in the directory containing
887 @file{configure}.  It contains all the sources files (those that are
888 distributed), and may be arranged using several subdirectories.
889
890 The build tree is rooted in the directory in which @file{configure}
891 was run, and is populated with all object files, programs, libraries,
892 and other derived files built from the sources (and hence not
893 distributed).  The build tree usually has the same subdirectory layout
894 as the source tree; its subdirectories are created automatically by
895 the build system.
896
897 If @file{configure} is executed in its own directory, the source and
898 build trees are combined: derived files are constructed in the same
899 directories as their sources.  This was the case in our first
900 installation example (@pxref{Basic Installation}).
901
902 A common request from users is that they want to confine all derived
903 files to a single directory, to keep their source directories
904 uncluttered.  Here is how we could run @file{configure} to build
905 everything in a subdirectory called @file{build/}.
906
907 @example
908 ~ % @kbd{tar zxf ~/amhello-1.0.tar.gz}
909 ~ % @kbd{cd amhello-1.0}
910 ~/amhello-1.0 % @kbd{mkdir build && cd build}
911 ~/amhello-1.0/build % @kbd{../configure}
912 @dots{}
913 ~/amhello-1.0/build % @kbd{make}
914 @dots{}
915 @end example
916
917 These setups, where source and build trees are different, are often
918 called @dfn{parallel builds} or @dfn{VPATH builds}.  The expression
919 @emph{parallel build} is misleading: the word @emph{parallel} is a
920 reference to the way the build tree shadows the source tree, it is not
921 about some concurrency in the way build commands are run.  For this
922 reason we refer to such setups using the name @emph{VPATH builds} in
923 the following.  @emph{VPATH} is the name of the @command{make} feature
924 used by the @file{Makefile}s to allow these builds (@pxref{General
925 Search, , @code{VPATH} Search Path for All Prerequisites, make, The
926 GNU Make Manual}).
927
928 @cindex multiple configurations, example
929 @cindex debug build, example
930 @cindex optimized build, example
931
932 VPATH builds have other interesting uses.  One is to build the same
933 sources with multiple configurations.  For instance:
934
935 @c Keep in sync with amhello-cflags.test.
936 @example
937 ~ % @kbd{tar zxf ~/amhello-1.0.tar.gz}
938 ~ % @kbd{cd amhello-1.0}
939 ~/amhello-1.0 % @kbd{mkdir debug optim && cd debug}
940 ~/amhello-1.0/debug % @kbd{../configure CFLAGS='-g -O0'}
941 @dots{}
942 ~/amhello-1.0/debug % @kbd{make}
943 @dots{}
944 ~/amhello-1.0/debug % cd ../optim
945 ~/amhello-1.0/optim % @kbd{../configure CFLAGS='-O3 -fomit-frame-pointer'}
946 @dots{}
947 ~/amhello-1.0/optim % @kbd{make}
948 @dots{}
949 @end example
950
951 With network file systems, a similar approach can be used to build the
952 same sources on different machines.  For instance, suppose that the
953 sources are installed on a directory shared by two hosts: @code{HOST1}
954 and @code{HOST2}, which may be different platforms.
955
956 @example
957 ~ % @kbd{cd /nfs/src}
958 /nfs/src % @kbd{tar zxf ~/amhello-1.0.tar.gz}
959 @end example
960
961 On the first host, you could create a local build directory:
962 @example
963 [HOST1] ~ % @kbd{mkdir /tmp/amh && cd /tmp/amh}
964 [HOST1] /tmp/amh % @kbd{/nfs/src/amhello-1.0/configure}
965 ...
966 [HOST1] /tmp/amh % @kbd{make && sudo make install}
967 ...
968 @end example
969
970 @noindent
971 (Here we assume that the installer has configured @command{sudo} so it
972 can execute @code{make install} with root privileges; it is more convenient
973 than using @command{su} like in @ref{Basic Installation}).
974
975 On the second host, you would do exactly the same, possibly at
976 the same time:
977 @example
978 [HOST2] ~ % @kbd{mkdir /tmp/amh && cd /tmp/amh}
979 [HOST2] /tmp/amh % @kbd{/nfs/src/amhello-1.0/configure}
980 ...
981 [HOST2] /tmp/amh % @kbd{make && sudo make install}
982 ...
983 @end example
984
985 @cindex read-only source tree
986 @cindex source tree, read-only
987
988 In this scenario, nothing forbids the @file{/nfs/src/amhello-1.0}
989 directory from being read-only.  In fact VPATH builds are also a means
990 of building packages from a read-only medium such as a CD-ROM.  (The
991 FSF used to sell CD-ROM with unpacked source code, before the GNU
992 project grew so big.)
993
994 @node Two-Part Install
995 @subsection Two-Part Installation
996
997 In our last example (@pxref{VPATH Builds}), a source tree was shared
998 by two hosts, but compilation and installation were done separately on
999 each host.
1000
1001 The GNU Build System also supports networked setups where part of the
1002 installed files should be shared amongst multiple hosts.  It does so
1003 by distinguishing architecture-dependent files from
1004 architecture-independent files, and providing two @file{Makefile}
1005 targets to install each of these classes of files.
1006
1007 @trindex install-exec
1008 @trindex install-data
1009
1010 These targets are @code{install-exec} for architecture-dependent files
1011 and @code{install-data} for architecture-independent files.
1012 The command we used up to now, @code{make install}, can be thought of
1013 as a shorthand for @code{make install-exec install-data}.
1014
1015 From the GNU Build System point of view, the distinction between
1016 architecture-dependent files and architecture-independent files is
1017 based exclusively on the directory variable used to specify their
1018 installation destination.  In the list of directory variables we
1019 provided earlier (@pxref{Standard Directory Variables}), all the
1020 variables based on @var{exec-prefix} designate architecture-dependent
1021 directories whose files will be installed by @code{make install-exec}.
1022 The others designate architecture-independent directories and will
1023 serve files installed by @code{make install-data}.  @xref{The Two Parts
1024 of Install}, for more details.
1025
1026 Here is how we could revisit our two-host installation example,
1027 assuming that (1) we want to install the package directly in
1028 @file{/usr}, and (2) the directory @file{/usr/share} is shared by the
1029 two hosts.
1030
1031 On the first host we would run
1032 @example
1033 [HOST1] ~ % @kbd{mkdir /tmp/amh && cd /tmp/amh}
1034 [HOST1] /tmp/amh % @kbd{/nfs/src/amhello-1.0/configure --prefix /usr}
1035 ...
1036 [HOST1] /tmp/amh % @kbd{make && sudo make install}
1037 ...
1038 @end example
1039
1040 On the second host, however, we need only install the
1041 architecture-specific files.
1042 @example
1043 [HOST2] ~ % @kbd{mkdir /tmp/amh && cd /tmp/amh}
1044 [HOST2] /tmp/amh % @kbd{/nfs/src/amhello-1.0/configure --prefix /usr}
1045 ...
1046 [HOST2] /tmp/amh % @kbd{make && sudo make install-exec}
1047 ...
1048 @end example
1049
1050 In packages that have installation checks, it would make sense to run
1051 @code{make installcheck} (@pxref{Basic Installation}) to verify that
1052 the package works correctly despite the apparent partial installation.
1053
1054 @node Cross-Compilation
1055 @subsection Cross-Compilation
1056 @cindex cross-compilation
1057
1058 To @dfn{cross-compile} is to build on one platform a binary that will
1059 run on another platform.  When speaking of cross-compilation, it is
1060 important to distinguish between the @dfn{build platform} on which
1061 the compilation is performed, and the @dfn{host platform} on which the
1062 resulting executable is expected to run.  The following
1063 @command{configure} options are used to specify each of them:
1064
1065 @table @option
1066 @item --build=@var{build}
1067 @opindex --build=@var{build}
1068 The system on which the package is built.
1069 @item --host=@var{host}
1070 @opindex --host=@var{host}
1071 The system where built programs and libraries will run.
1072 @end table
1073
1074 When the @option{--host} is used, @command{configure} will search for
1075 the cross-compiling suite for this platform.  Cross-compilation tools
1076 commonly have their target architecture as prefix of their name.  For
1077 instance my cross-compiler for MinGW32 has its binaries called
1078 @code{i586-mingw32msvc-gcc}, @code{i586-mingw32msvc-ld},
1079 @code{i586-mingw32msvc-as}, etc.
1080
1081 @cindex MinGW cross-compilation example
1082 @cindex cross-compilation example
1083
1084 Here is how we could build @code{amhello-1.0} for
1085 @code{i586-mingw32msvc} on a GNU/Linux PC.
1086
1087 @c Keep in sync with amhello-cross-compile.test.
1088 @smallexample
1089 ~/amhello-1.0 % @kbd{./configure --build i686-pc-linux-gnu --host i586-mingw32msvc}
1090 checking for a BSD-compatible install... /usr/bin/install -c
1091 checking whether build environment is sane... yes
1092 checking for gawk... gawk
1093 checking whether make sets $(MAKE)... yes
1094 checking for i586-mingw32msvc-strip... i586-mingw32msvc-strip
1095 checking for i586-mingw32msvc-gcc... i586-mingw32msvc-gcc
1096 checking for C compiler default output file name... a.exe
1097 checking whether the C compiler works... yes
1098 checking whether we are cross compiling... yes
1099 checking for suffix of executables... .exe
1100 checking for suffix of object files... o
1101 checking whether we are using the GNU C compiler... yes
1102 checking whether i586-mingw32msvc-gcc accepts -g... yes
1103 checking for i586-mingw32msvc-gcc option to accept ANSI C...
1104 @dots{}
1105 ~/amhello-1.0 % @kbd{make}
1106 @dots{}
1107 ~/amhello-1.0 % @kbd{cd src; file hello.exe}
1108 hello.exe: MS Windows PE 32-bit Intel 80386 console executable not relocatable
1109 @end smallexample
1110
1111 The @option{--host} and @option{--build} options are usually all we
1112 need for cross-compiling.  The only exception is if the package being
1113 built is itself a cross-compiler: we need a third option to specify
1114 its target architecture.
1115
1116 @table @option
1117 @item --target=@var{target}
1118 @opindex --target=@var{target}
1119 When building compiler tools: the system for which the tools will
1120 create output.
1121 @end table
1122
1123 For instance when installing GCC, the GNU Compiler Collection, we can
1124 use @option{--target=@/@var{target}} to specify that we want to build
1125 GCC as a cross-compiler for @var{target}.  Mixing @option{--build} and
1126 @option{--target}, we can actually cross-compile a cross-compiler;
1127 such a three-way cross-compilation is known as a @dfn{Canadian cross}.
1128
1129 @xref{Specifying Names, , Specifying the System Type, autoconf, The
1130 Autoconf Manual}, for more information about these @command{configure}
1131 options.
1132
1133 @node Renaming
1134 @subsection Renaming Programs at Install Time
1135 @cindex Renaming programs
1136 @cindex Transforming program names
1137 @cindex Programs, renaming during installation
1138
1139 The GNU Build System provides means to automatically rename
1140 executables and manpages before they are installed (@pxref{Man Pages}).
1141 This is especially convenient
1142 when installing a GNU package on a system that already has a
1143 proprietary implementation you do not want to overwrite.  For instance,
1144 you may want to install GNU @command{tar} as @command{gtar} so you can
1145 distinguish it from your vendor's @command{tar}.
1146
1147 This can be done using one of these three @command{configure} options.
1148
1149 @table @option
1150 @item --program-prefix=@var{prefix}
1151 @opindex --program-prefix=@var{prefix}
1152 Prepend @var{prefix} to installed program names.
1153 @item --program-suffix=@var{suffix}
1154 @opindex --program-suffix=@var{suffix}
1155 Append @var{suffix} to installed program names.
1156 @item --program-transform-name=@var{program}
1157 @opindex --program-transform-name=@var{program}
1158 Run @code{sed @var{program}} on installed program names.
1159 @end table
1160
1161 The following commands would install @file{hello}
1162 as @file{/usr/local/bin/test-hello}, for instance.
1163
1164 @example
1165 ~/amhello-1.0 % @kbd{./configure --program-prefix test-}
1166 @dots{}
1167 ~/amhello-1.0 % @kbd{make}
1168 @dots{}
1169 ~/amhello-1.0 % @kbd{sudo make install}
1170 @dots{}
1171 @end example
1172
1173 @node DESTDIR
1174 @subsection Building Binary Packages Using DESTDIR
1175 @vindex DESTDIR
1176
1177 The GNU Build System's @code{make install} and @code{make uninstall}
1178 interface does not exactly fit the needs of a system administrator
1179 who has to deploy and upgrade packages on lots of hosts.  In other
1180 words, the GNU Build System does not replace a package manager.
1181
1182 Such package managers usually need to know which files have been
1183 installed by a package, so a mere @code{make install} is
1184 inappropriate.
1185
1186 @cindex Staged installation
1187
1188 The @code{DESTDIR} variable can be used to perform a staged
1189 installation.  The package should be configured as if it was going to
1190 be installed in its final location (e.g., @code{--prefix /usr}), but
1191 when running @code{make install}, the @code{DESTDIR} should be set to
1192 the absolute name of a directory into which the installation will be
1193 diverted.  From this directory it is easy to review which files are
1194 being installed where, and finally copy them to their final location
1195 by some means.
1196
1197 @cindex Binary package
1198
1199 For instance here is how we could create a binary package containing a
1200 snapshot of all the files to be installed.
1201
1202 @c Keep in sync with amhello-binpkg.test.
1203 @example
1204 ~/amhello-1.0 % @kbd{./configure --prefix /usr}
1205 @dots{}
1206 ~/amhello-1.0 % @kbd{make}
1207 @dots{}
1208 ~/amhello-1.0 % @kbd{make DESTDIR=$HOME/inst install}
1209 @dots{}
1210 ~/amhello-1.0 % @kbd{cd ~/inst}
1211 ~/inst % @kbd{find . -type f -print > ../files.lst}
1212 ~/inst % @kbd{tar zcvf ~/amhello-1.0-i686.tar.gz `cat ../files.lst`}
1213 ./usr/bin/hello
1214 ./usr/share/doc/amhello/README
1215 @end example
1216
1217 After this example, @code{amhello-1.0-i686.tar.gz} is ready to be
1218 uncompressed in @file{/} on many hosts.  (Using @code{`cat ../files.lst`}
1219 instead of @samp{.} as argument for @command{tar} avoids entries for
1220 each subdirectory in the archive: we would not like @command{tar} to
1221 restore the modification time of @file{/}, @file{/usr/}, etc.)
1222
1223 Note that when building packages for several architectures, it might
1224 be convenient to use @code{make install-data} and @code{make
1225 install-exec} (@pxref{Two-Part Install}) to gather
1226 architecture-independent files in a single package.
1227
1228 @xref{Install}, for more information.
1229
1230 @c We should document PRE_INSTALL/POST_INSTALL/NORMAL_INSTALL and their
1231 @c UNINSTALL counterparts.
1232
1233 @node Preparing Distributions
1234 @subsection Preparing Distributions
1235 @cindex Preparing distributions
1236 @cindex Packages, preparation
1237 @cindex Distributions, preparation
1238
1239 We have already mentioned @code{make dist}.  This target collects all
1240 your source files and the necessary parts of the build system to
1241 create a tarball named @file{@var{package}-@var{version}.tar.gz}.
1242
1243 @cindex @code{distcheck} better than @code{dist}
1244
1245 Another, more useful command is @code{make distcheck}.  The
1246 @code{distcheck} target constructs
1247 @file{@var{package}-@var{version}.tar.gz} just as well as @code{dist},
1248 but it additionally ensures most of the use cases presented so far
1249 work:
1250
1251 @itemize @bullet
1252 @item
1253 It attempts a full compilation of the package (@pxref{Basic
1254 Installation}), unpacking the newly constructed tarball, running
1255 @code{make}, @code{make check}, @code{make install}, as well as
1256 @code{make installcheck}, and even @code{make dist},
1257 @item
1258 it tests VPATH builds with read-only source tree (@pxref{VPATH Builds}),
1259 @item
1260 it makes sure @code{make clean}, @code{make distclean}, and @code{make
1261 uninstall} do not omit any file (@pxref{Standard Targets}),
1262 @item
1263 and it checks that @code{DESTDIR} installations work (@pxref{DESTDIR}).
1264 @end itemize
1265
1266 All of these actions are performed in a temporary subdirectory, so
1267 that no root privileges are required.
1268
1269 Releasing a package that fails @code{make distcheck} means that one of
1270 the scenarios we presented will not work and some users will be
1271 disappointed.  Therefore it is a good practice to release a package
1272 only after a successful @code{make distcheck}.  This of course does
1273 not imply that the package will be flawless, but at least it will
1274 prevent some of the embarrassing errors you may find in packages
1275 released by people who have never heard about @code{distcheck} (like
1276 @code{DESTDIR} not working because of a typo, or a distributed file
1277 being erased by @code{make clean}, or even @code{VPATH} builds not
1278 working).
1279
1280 @xref{Creating amhello}, to recreate @file{amhello-1.0.tar.gz} using
1281 @code{make distcheck}.  @xref{Checking the Distribution}, for more
1282 information about @code{distcheck}.
1283
1284 @node Dependency Tracking
1285 @subsection Automatic Dependency Tracking
1286 @cindex Dependency tracking
1287
1288 Dependency tracking is performed as a side-effect of compilation.
1289 Each time the build system compiles a source file, it computes its
1290 list of dependencies (in C these are the header files included by the
1291 source being compiled).  Later, any time @command{make} is run and a
1292 dependency appears to have changed, the dependent files will be
1293 rebuilt.
1294
1295 Automake generates code for automatic dependency tracking by default,
1296 unless the developer chooses to override it; for more information,
1297 @pxref{Dependencies}.
1298
1299 When @command{configure} is executed, you can see it probing each
1300 compiler for the dependency mechanism it supports (several mechanisms
1301 can be used):
1302
1303 @example
1304 ~/amhello-1.0 % @kbd{./configure --prefix /usr}
1305 @dots{}
1306 checking dependency style of gcc... gcc3
1307 @dots{}
1308 @end example
1309
1310 Because dependencies are only computed as a side-effect of the
1311 compilation, no dependency information exists the first time a package
1312 is built.  This is OK because all the files need to be built anyway:
1313 @code{make} does not have to decide which files need to be rebuilt.
1314 In fact, dependency tracking is completely useless for one-time builds
1315 and there is a @command{configure} option to disable this:
1316
1317 @table @option
1318 @item --disable-dependency-tracking
1319 @opindex --disable-dependency-tracking
1320 Speed up one-time builds.
1321 @end table
1322
1323 Some compilers do not offer any practical way to derive the list of
1324 dependencies as a side-effect of the compilation, requiring a separate
1325 run (maybe of another tool) to compute these dependencies.  The
1326 performance penalty implied by these methods is important enough to
1327 disable them by default.  The option @option{--enable-dependency-tracking}
1328 must be passed to @command{configure} to activate them.
1329
1330 @table @option
1331 @item --enable-dependency-tracking
1332 @opindex --enable-dependency-tracking
1333 Do not reject slow dependency extractors.
1334 @end table
1335
1336 @xref{Dependency Tracking Evolution}, for some discussion about the
1337 different dependency tracking schemes used by Automake over the years.
1338
1339 @node Nested Packages
1340 @subsection Nested Packages
1341 @cindex Nested packages
1342 @cindex Packages, nested
1343 @cindex Subpackages
1344
1345 Although nesting packages isn't something we would recommend to
1346 someone who is discovering the Autotools, it is a nice feature worthy
1347 of mention in this small advertising tour.
1348
1349 Autoconfiscated packages (that means packages whose build system have
1350 been created by Autoconf and friends) can be nested to arbitrary
1351 depth.
1352
1353 A typical setup is that package A will distribute one of the libraries
1354 it needs in a subdirectory.  This library B is a complete package with
1355 its own GNU Build System.  The @command{configure} script of A will
1356 run the @command{configure} script of B as part of its execution,
1357 building and installing A will also build and install B.  Generating a
1358 distribution for A will also include B.
1359
1360 It is possible to gather several packages like this.  GCC is a heavy
1361 user of this feature.  This gives installers a single package to
1362 configure, build and install, while it allows developers to work on
1363 subpackages independently.
1364
1365 When configuring nested packages, the @command{configure} options
1366 given to the top-level @command{configure} are passed recursively to
1367 nested @command{configure}s.  A package that does not understand an
1368 option will ignore it, assuming it is meaningful to some other
1369 package.
1370
1371 @opindex --help=recursive
1372
1373 The command @code{configure --help=recursive} can be used to display
1374 the options supported by all the included packages.
1375
1376 @xref{Subpackages}, for an example setup.
1377
1378 @node Why Autotools
1379 @section How Autotools Help
1380 @cindex Autotools, purpose
1381
1382 There are several reasons why you may not want to implement the GNU
1383 Build System yourself (read: write a @file{configure} script and
1384 @file{Makefile}s yourself).
1385
1386 @itemize @bullet
1387 @item
1388 As we have seen, the GNU Build System has a lot of
1389 features (@pxref{Use Cases}).
1390 Some users may expect features you have not implemented because
1391 you did not need them.
1392 @item
1393 Implementing these features portably is difficult and exhausting.
1394 Think of writing portable shell scripts, and portable
1395 @file{Makefile}s, for systems you may not have handy.  @xref{Portable
1396 Shell, , Portable Shell Programming, autoconf, The Autoconf Manual}, to
1397 convince yourself.
1398 @item
1399 You will have to upgrade your setup to follow changes to the GNU
1400 Coding Standards.
1401 @end itemize
1402
1403 The GNU Autotools take all this burden off your back and provide:
1404
1405 @itemize @bullet
1406 @item
1407 Tools to create a portable, complete, and self-contained GNU Build
1408 System, from simple instructions.
1409 @emph{Self-contained} meaning the resulting build system does not
1410 require the GNU Autotools.
1411 @item
1412 A central place where fixes and improvements are made:
1413 a bug-fix for a portability issue will benefit every package.
1414 @end itemize
1415
1416 Yet there also exist reasons why you may want NOT to use the
1417 Autotools@enddots{} For instance you may be already using (or used to)
1418 another incompatible build system.  Autotools will only be useful if
1419 you do accept the concepts of the GNU Build System.  People who have their
1420 own idea of how a build system should work will feel frustrated by the
1421 Autotools.
1422
1423 @node Hello World
1424 @section A Small Hello World
1425 @cindex Example Hello World
1426 @cindex Hello World example
1427 @cindex @file{amhello-1.0.tar.gz}, creation
1428
1429 In this section we recreate the @file{amhello-1.0} package from
1430 scratch.  The first subsection shows how to call the Autotools to
1431 instantiate the GNU Build System, while the second explains the
1432 meaning of the @file{configure.ac} and @file{Makefile.am} files read
1433 by the Autotools.
1434
1435 @anchor{amhello Explained}
1436 @menu
1437 * Creating amhello::            Create @file{amhello-1.0.tar.gz} from scratch
1438 * amhello's configure.ac Setup Explained::
1439 * amhello's Makefile.am Setup Explained::
1440 @end menu
1441
1442 @node Creating amhello
1443 @subsection Creating @file{amhello-1.0.tar.gz}
1444
1445 Here is how we can recreate @file{amhello-1.0.tar.gz} from scratch.
1446 The package is simple enough so that we will only need to write 5
1447 files.  (You may copy them from the final @file{amhello-1.0.tar.gz}
1448 that is distributed with Automake if you do not want to write them.)
1449
1450 Create the following files in an empty directory.
1451
1452 @itemize @bullet
1453
1454 @item
1455 @file{src/main.c} is the source file for the @file{hello} program.  We
1456 store it in the @file{src/} subdirectory, because later, when the package
1457 evolves, it will ease the addition of a @file{man/} directory for man
1458 pages, a @file{data/} directory for data files, etc.
1459 @example
1460 ~/amhello % @kbd{cat src/main.c}
1461 #include <config.h>
1462 #include <stdio.h>
1463
1464 int
1465 main (void)
1466 @{
1467   puts ("Hello World!");
1468   puts ("This is " PACKAGE_STRING ".");
1469   return 0;
1470 @}
1471 @end example
1472
1473 @item
1474 @file{README} contains some very limited documentation for our little
1475 package.
1476 @example
1477 ~/amhello % @kbd{cat README}
1478 This is a demonstration package for GNU Automake.
1479 Type `info Automake' to read the Automake manual.
1480 @end example
1481
1482 @item
1483 @file{Makefile.am} and @file{src/Makefile.am} contain Automake
1484 instructions for these two directories.
1485
1486 @example
1487 ~/amhello % @kbd{cat src/Makefile.am}
1488 bin_PROGRAMS = hello
1489 hello_SOURCES = main.c
1490 ~/amhello % @kbd{cat Makefile.am}
1491 SUBDIRS = src
1492 dist_doc_DATA = README
1493 @end example
1494
1495 @item
1496 Finally, @file{configure.ac} contains Autoconf instructions to
1497 create the @command{configure} script.
1498
1499 @example
1500 ~/amhello % @kbd{cat configure.ac}
1501 AC_INIT([amhello], [1.0], [@value{PACKAGE_BUGREPORT}])
1502 AM_INIT_AUTOMAKE([-Wall -Werror foreign])
1503 AC_PROG_CC
1504 AC_CONFIG_HEADERS([config.h])
1505 AC_CONFIG_FILES([
1506  Makefile
1507  src/Makefile
1508 ])
1509 AC_OUTPUT
1510 @end example
1511 @end itemize
1512
1513 @cindex @command{autoreconf}, example
1514
1515 Once you have these five files, it is time to run the Autotools to
1516 instantiate the build system.  Do this using the @command{autoreconf}
1517 command as follows:
1518
1519 @example
1520 ~/amhello % @kbd{autoreconf --install}
1521 configure.ac: installing `./install-sh'
1522 configure.ac: installing `./missing'
1523 src/Makefile.am: installing `./depcomp'
1524 @end example
1525
1526 At this point the build system is complete.
1527
1528 In addition to the three scripts mentioned in its output, you can see
1529 that @command{autoreconf} created four other files: @file{configure},
1530 @file{config.h.in}, @file{Makefile.in}, and @file{src/Makefile.in}.
1531 The latter three files are templates that will be adapted to the
1532 system by @command{configure} under the names @file{config.h},
1533 @file{Makefile}, and @file{src/Makefile}.  Let's do this:
1534
1535 @example
1536 ~/amhello % @kbd{./configure}
1537 checking for a BSD-compatible install... /usr/bin/install -c
1538 checking whether build environment is sane... yes
1539 checking for gawk... no
1540 checking for mawk... mawk
1541 checking whether make sets $(MAKE)... yes
1542 checking for gcc... gcc
1543 checking for C compiler default output file name... a.out
1544 checking whether the C compiler works... yes
1545 checking whether we are cross compiling... no
1546 checking for suffix of executables...
1547 checking for suffix of object files... o
1548 checking whether we are using the GNU C compiler... yes
1549 checking whether gcc accepts -g... yes
1550 checking for gcc option to accept ISO C89... none needed
1551 checking for style of include used by make... GNU
1552 checking dependency style of gcc... gcc3
1553 configure: creating ./config.status
1554 config.status: creating Makefile
1555 config.status: creating src/Makefile
1556 config.status: creating config.h
1557 config.status: executing depfiles commands
1558 @end example
1559
1560 @trindex distcheck
1561 @cindex @code{distcheck} example
1562
1563 You can see @file{Makefile}, @file{src/Makefile}, and @file{config.h}
1564 being created at the end after @command{configure} has probed the
1565 system.  It is now possible to run all the targets we wish
1566 (@pxref{Standard Targets}).  For instance:
1567
1568 @example
1569 ~/amhello % @kbd{make}
1570 @dots{}
1571 ~/amhello % @kbd{src/hello}
1572 Hello World!
1573 This is amhello 1.0.
1574 ~/amhello % @kbd{make distcheck}
1575 @dots{}
1576 =============================================
1577 amhello-1.0 archives ready for distribution:
1578 amhello-1.0.tar.gz
1579 =============================================
1580 @end example
1581
1582 Note that running @command{autoreconf} is only needed initially when
1583 the GNU Build System does not exist.  When you later change some
1584 instructions in a @file{Makefile.am} or @file{configure.ac}, the
1585 relevant part of the build system will be regenerated automatically
1586 when you execute @command{make}.
1587
1588 @command{autoreconf} is a script that calls @command{autoconf},
1589 @command{automake}, and a bunch of other commands in the right order.
1590 If you are beginning with these tools, it is not important to figure
1591 out in which order all these tools should be invoked and why.  However,
1592 because Autoconf and Automake have separate manuals, the important
1593 point to understand is that @command{autoconf} is in charge of
1594 creating @file{configure} from @file{configure.ac}, while
1595 @command{automake} is in charge of creating @file{Makefile.in}s from
1596 @file{Makefile.am}s and @file{configure.ac}.  This should at least
1597 direct you to the right manual when seeking answers.
1598
1599
1600 @node amhello's configure.ac Setup Explained
1601 @subsection @code{amhello}'s @file{configure.ac} Setup Explained
1602
1603 @cindex @file{configure.ac}, Hello World
1604
1605 Let us begin with the contents of @file{configure.ac}.
1606
1607 @example
1608 AC_INIT([amhello], [1.0], [@value{PACKAGE_BUGREPORT}])
1609 AM_INIT_AUTOMAKE([-Wall -Werror foreign])
1610 AC_PROG_CC
1611 AC_CONFIG_HEADERS([config.h])
1612 AC_CONFIG_FILES([
1613  Makefile
1614  src/Makefile
1615 ])
1616 AC_OUTPUT
1617 @end example
1618
1619 This file is read by both @command{autoconf} (to create
1620 @file{configure}) and @command{automake} (to create the various
1621 @file{Makefile.in}s).  It contains a series of M4 macros that will be
1622 expanded as shell code to finally form the @file{configure} script.
1623 We will not elaborate on the syntax of this file, because the Autoconf
1624 manual has a whole section about it (@pxref{Writing Autoconf Input, ,
1625 Writing @file{configure.ac}, autoconf, The Autoconf Manual}).
1626
1627 The macros prefixed with @code{AC_} are Autoconf macros, documented
1628 in the Autoconf manual (@pxref{Autoconf Macro Index, , Autoconf Macro
1629 Index, autoconf, The Autoconf Manual}).  The macros that start with
1630 @code{AM_} are Automake macros, documented later in this manual
1631 (@pxref{Macro Index}).
1632
1633 The first two lines of @file{configure.ac} initialize Autoconf and
1634 Automake.  @code{AC_INIT} takes in as parameters the name of the package,
1635 its version number, and a contact address for bug-reports about the
1636 package (this address is output at the end of @code{./configure
1637 --help}, for instance).  When adapting this setup to your own package,
1638 by all means please do not blindly copy Automake's address: use the
1639 mailing list of your package, or your own mail address.
1640
1641 @opindex -Wall
1642 @opindex -Werror
1643 @opindex foreign
1644
1645 The argument to @code{AM_INIT_AUTOMAKE} is a list of options for
1646 @command{automake} (@pxref{Options}).  @option{-Wall} and
1647 @option{-Werror} ask @command{automake} to turn on all warnings and
1648 report them as errors.  We are speaking of @strong{Automake} warnings
1649 here, such as dubious instructions in @file{Makefile.am}.  This has
1650 absolutely nothing to do with how the compiler will be called, even
1651 though it may support options with similar names.  Using @option{-Wall
1652 -Werror} is a safe setting when starting to work on a package: you do
1653 not want to miss any issues.  Later you may decide to relax things a
1654 bit.  The @option{foreign} option tells Automake that this package
1655 will not follow the GNU Standards.  GNU packages should always
1656 distribute additional files such as @file{ChangeLog}, @file{AUTHORS},
1657 etc.  We do not want @command{automake} to complain about these
1658 missing files in our small example.
1659
1660 The @code{AC_PROG_CC} line causes the @command{configure} script to
1661 search for a C compiler and define the variable @code{CC} with its
1662 name.  The @file{src/Makefile.in} file generated by Automake uses the
1663 variable @code{CC} to build @file{hello}, so when @command{configure}
1664 creates @file{src/Makefile} from @file{src/Makefile.in}, it will define
1665 @code{CC} with the value it has found.  If Automake is asked to create
1666 a @file{Makefile.in} that uses @code{CC} but @file{configure.ac} does
1667 not define it, it will suggest you add a call to @code{AC_PROG_CC}.
1668
1669 The @code{AC_CONFIG_HEADERS([config.h])} invocation causes the
1670 @command{configure} script to create a @file{config.h} file gathering
1671 @samp{#define}s defined by other macros in @file{configure.ac}.  In our
1672 case, the @code{AC_INIT} macro already defined a few of them.  Here
1673 is an excerpt of @file{config.h} after @command{configure} has run:
1674
1675 @smallexample
1676 @dots{}
1677 /* Define to the address where bug reports for this package should be sent. */
1678 #define PACKAGE_BUGREPORT "@value{PACKAGE_BUGREPORT}"
1679
1680 /* Define to the full name and version of this package. */
1681 #define PACKAGE_STRING "amhello 1.0"
1682 @dots{}
1683 @end smallexample
1684
1685 As you probably noticed, @file{src/main.c} includes @file{config.h} so
1686 it can use @code{PACKAGE_STRING}.  In a real-world project,
1687 @file{config.h} can grow really big, with one @samp{#define} per
1688 feature probed on the system.
1689
1690 The @code{AC_CONFIG_FILES} macro declares the list of files that
1691 @command{configure} should create from their @file{*.in} templates.
1692 Automake also scans this list to find the @file{Makefile.am} files it must
1693 process.  (This is important to remember: when adding a new directory
1694 to your project, you should add its @file{Makefile} to this list,
1695 otherwise Automake will never process the new @file{Makefile.am} you
1696 wrote in that directory.)
1697
1698 Finally, the @code{AC_OUTPUT} line is a closing command that actually
1699 produces the part of the script in charge of creating the files
1700 registered with @code{AC_CONFIG_HEADERS} and @code{AC_CONFIG_FILES}.
1701
1702 @cindex @command{autoscan}
1703
1704 When starting a new project, we suggest you start with such a simple
1705 @file{configure.ac}, and gradually add the other tests it requires.
1706 The command @command{autoscan} can also suggest a few of the tests
1707 your package may need (@pxref{autoscan Invocation, , Using
1708 @command{autoscan} to Create @file{configure.ac}, autoconf, The
1709 Autoconf Manual}).
1710
1711
1712 @node amhello's Makefile.am Setup Explained
1713 @subsection @code{amhello}'s @file{Makefile.am} Setup Explained
1714
1715 @cindex @file{Makefile.am}, Hello World
1716
1717 We now turn to @file{src/Makefile.am}.  This file contains
1718 Automake instructions to build and install @file{hello}.
1719
1720 @example
1721 bin_PROGRAMS = hello
1722 hello_SOURCES = main.c
1723 @end example
1724
1725 A @file{Makefile.am} has the same syntax as an ordinary
1726 @file{Makefile}.  When @command{automake} processes a
1727 @file{Makefile.am} it copies the entire file into the output
1728 @file{Makefile.in} (that will be later turned into @file{Makefile} by
1729 @command{configure}) but will react to certain variable definitions
1730 by generating some build rules and other variables.
1731 Often @file{Makefile.am}s contain only a list of variable definitions as
1732 above, but they can also contain other variable and rule definitions that
1733 @command{automake} will pass along without interpretation.
1734
1735 Variables that end with @code{_PROGRAMS} are special variables
1736 that list programs that the resulting @file{Makefile} should build.
1737 In Automake speak, this @code{_PROGRAMS} suffix is called a
1738 @dfn{primary}; Automake recognizes other primaries such as
1739 @code{_SCRIPTS}, @code{_DATA}, @code{_LIBRARIES}, etc.@: corresponding
1740 to different types of files.
1741
1742 The @samp{bin} part of the @code{bin_PROGRAMS} tells
1743 @command{automake} that the resulting programs should be installed in
1744 @var{bindir}.  Recall that the GNU Build System uses a set of variables
1745 to denote destination directories and allow users to customize these
1746 locations (@pxref{Standard Directory Variables}).  Any such directory
1747 variable can be put in front of a primary (omitting the @code{dir}
1748 suffix) to tell @command{automake} where to install the listed files.
1749
1750 Programs need to be built from source files, so for each program
1751 @code{@var{prog}} listed in a @code{@w{_PROGRAMS}} variable,
1752 @command{automake} will look for another variable named
1753 @code{@var{prog}_SOURCES} listing its source files.  There may be more
1754 than one source file: they will all be compiled and linked together.
1755
1756 Automake also knows that source files need to be distributed when
1757 creating a tarball (unlike built programs).  So a side-effect of this
1758 @code{hello_SOURCES} declaration is that @file{main.c} will be
1759 part of the tarball created by @code{make dist}.
1760
1761 Finally here are some explanations regarding the top-level
1762 @file{Makefile.am}.
1763
1764 @example
1765 SUBDIRS = src
1766 dist_doc_DATA = README
1767 @end example
1768
1769 @code{SUBDIRS} is a special variable listing all directories that
1770 @command{make} should recurse into before processing the current
1771 directory.  So this line is responsible for @command{make} building
1772 @file{src/hello} even though we run it from the top-level.  This line
1773 also causes @code{make install} to install @file{src/hello} before
1774 installing @file{README} (not that this order matters).
1775
1776 The line @code{dist_doc_DATA = README} causes @file{README} to be
1777 distributed and installed in @var{docdir}.  Files listed with the
1778 @code{_DATA} primary are not automatically part of the tarball built
1779 with @code{make dist}, so we add the @code{dist_} prefix so they get
1780 distributed.  However, for @file{README} it would not have been
1781 necessary: @command{automake} automatically distributes any
1782 @file{README} file it encounters (the list of other files
1783 automatically distributed is presented by @code{automake --help}).
1784 The only important effect of this second line is therefore to install
1785 @file{README} during @code{make install}.
1786
1787 One thing not covered in this example is accessing the installation
1788 directory values (@pxref{Standard Directory Variables}) from your
1789 program code, that is, converting them into defined macros.  For this,
1790 @pxref{Defining Directories,,, autoconf, The Autoconf Manual}.
1791
1792
1793 @node Generalities
1794 @chapter General ideas
1795
1796 The following sections cover a few basic ideas that will help you
1797 understand how Automake works.
1798
1799 @menu
1800 * General Operation::           General operation of Automake
1801 * Strictness::                  Standards conformance checking
1802 * Uniform::                     The Uniform Naming Scheme
1803 * Length Limitations::          Staying below the command line length limit
1804 * Canonicalization::            How derived variables are named
1805 * User Variables::              Variables reserved for the user
1806 * Auxiliary Programs::          Programs automake might require
1807 @end menu
1808
1809
1810 @node General Operation
1811 @section General Operation
1812
1813 Automake works by reading a @file{Makefile.am} and generating a
1814 @file{Makefile.in}.  Certain variables and rules defined in the
1815 @file{Makefile.am} instruct Automake to generate more specialized code;
1816 for instance, a @code{bin_PROGRAMS} variable definition will cause rules
1817 for compiling and linking programs to be generated.
1818
1819 @cindex Non-standard targets
1820 @cindex @code{git-dist}, non-standard example
1821 @trindex git-dist
1822
1823 The variable definitions and rules in the @file{Makefile.am} are
1824 copied mostly verbatim into the generated file, with all variable
1825 definitions preceding all rules.  This allows you to add almost
1826 arbitrary code into the generated @file{Makefile.in}.  For instance,
1827 the Automake distribution includes a non-standard rule for the
1828 @code{git-dist} target, which the Automake maintainer uses to make
1829 distributions from the source control system.
1830
1831 @cindex GNU make extensions
1832
1833 Note that most GNU make extensions are not recognized by Automake.  Using
1834 such extensions in a @file{Makefile.am} will lead to errors or confusing
1835 behavior.
1836
1837 @cindex Append operator
1838 @cmindex +=
1839 A special exception is that the GNU make append operator, @samp{+=}, is
1840 supported.  This operator appends its right hand argument to the variable
1841 specified on the left.  Automake will translate the operator into
1842 an ordinary @samp{=} operator; @samp{+=} will thus work with any make program.
1843
1844 Automake tries to keep comments grouped with any adjoining rules or
1845 variable definitions.
1846
1847 @cindex Limitations of automake parser
1848 @cindex Automake parser, limitations of
1849 @cindex indentation in Makefile.am
1850 Generally, Automake is not particularly smart in the parsing of unusual
1851 Makefile constructs, so you're advised to avoid fancy constructs or
1852 ``creative'' use of whitespaces.
1853 @c Keep this in sync with doc-parsing-buglets-tabs.test.
1854 For example, @key{TAB} characters cannot be used between a target name
1855 and the following ``@code{:}'' character, and variable assignments
1856 shouldn't be indented with @key{TAB} characters.
1857 @c Keep this in sync with doc-parsing-buglets-colneq-subst.test.
1858 Also, using more complex macro in target names can cause trouble:
1859
1860 @example
1861 % @kbd{cat Makefile.am}
1862 $(FOO:=x): bar
1863 % @kbd{automake}
1864 Makefile.am:1: bad characters in variable name `$(FOO'
1865 Makefile.am:1: `:='-style assignments are not portable
1866 @end example
1867
1868 @cindex Make targets, overriding
1869 @cindex Make rules, overriding
1870 @cindex Overriding make rules
1871 @cindex Overriding make targets
1872
1873 A rule defined in @file{Makefile.am} generally overrides any such
1874 rule of a similar name that would be automatically generated by
1875 @command{automake}.  Although this is a supported feature, it is generally
1876 best to avoid making use of it, as sometimes the generated rules are
1877 very particular.
1878
1879 @cindex Variables, overriding
1880 @cindex Overriding make variables
1881
1882 Similarly, a variable defined in @file{Makefile.am} or
1883 @code{AC_SUBST}ed from @file{configure.ac} will override any
1884 definition of the variable that @command{automake} would ordinarily
1885 create.  This feature is more often useful than the ability to
1886 override a rule.  Be warned that many of the variables generated by
1887 @command{automake} are considered to be for internal use only, and their
1888 names might change in future releases.
1889
1890 @cindex Recursive operation of Automake
1891 @cindex Automake, recursive operation
1892 @cindex Example of recursive operation
1893
1894 When examining a variable definition, Automake will recursively examine
1895 variables referenced in the definition.  For example, if Automake is
1896 looking at the content of @code{foo_SOURCES} in this snippet
1897
1898 @c Keep in sync with interp.test.
1899 @example
1900 xs = a.c b.c
1901 foo_SOURCES = c.c $(xs)
1902 @end example
1903
1904 it would use the files @file{a.c}, @file{b.c}, and @file{c.c} as the
1905 contents of @code{foo_SOURCES}.
1906
1907 @cindex @code{##} (special Automake comment)
1908 @cindex Special Automake comment
1909 @cindex Comment, special to Automake
1910
1911 Automake also allows a form of comment that is @emph{not} copied into
1912 the output; all lines beginning with @samp{##} (leading spaces allowed)
1913 are completely ignored by Automake.
1914
1915 It is customary to make the first line of @file{Makefile.am} read:
1916
1917 @cindex Makefile.am, first line
1918 @cindex First line of Makefile.am
1919
1920 @example
1921 ## Process this file with automake to produce Makefile.in
1922 @end example
1923
1924 @c FIXME discuss putting a copyright into Makefile.am here?  I would but
1925 @c I don't know quite what to say.
1926
1927 @c FIXME document customary ordering of Makefile.am here!
1928
1929
1930 @node Strictness
1931 @section Strictness
1932
1933 @cindex Non-GNU packages
1934
1935 While Automake is intended to be used by maintainers of GNU packages, it
1936 does make some effort to accommodate those who wish to use it, but do
1937 not want to use all the GNU conventions.
1938
1939 @cindex Strictness, defined
1940 @cindex Strictness, @option{foreign}
1941 @cindex @option{foreign} strictness
1942 @cindex Strictness, @option{gnu}
1943 @cindex @option{gnu} strictness
1944 @cindex Strictness, @option{gnits}
1945 @cindex @option{gnits} strictness
1946
1947 To this end, Automake supports three levels of @dfn{strictness}---the
1948 strictness indicating how stringently Automake should check standards
1949 conformance.
1950
1951 The valid strictness levels are:
1952
1953 @table @option
1954 @item foreign
1955 Automake will check for only those things that are absolutely
1956 required for proper operations.  For instance, whereas GNU standards
1957 dictate the existence of a @file{NEWS} file, it will not be required in
1958 this mode.  This strictness will also turn off some warnings by default
1959 (among them, portability warnings).
1960 The name comes from the fact that Automake is intended to be
1961 used for GNU programs; these relaxed rules are not the standard mode of
1962 operation.
1963
1964 @item gnu
1965 Automake will check---as much as possible---for compliance to the GNU
1966 standards for packages.  This is the default.
1967
1968 @item gnits
1969 Automake will check for compliance to the as-yet-unwritten @dfn{Gnits
1970 standards}.  These are based on the GNU standards, but are even more
1971 detailed.  Unless you are a Gnits standards contributor, it is
1972 recommended that you avoid this option until such time as the Gnits
1973 standard is actually published (which may never happen).
1974 @end table
1975
1976 @xref{Gnits}, for more information on the precise implications of the
1977 strictness level.
1978
1979 Automake also has a special ``cygnus'' mode that is similar to
1980 strictness but handled differently.  This mode is useful for packages
1981 that are put into a ``Cygnus'' style tree (e.g., the GCC tree).
1982 @xref{Cygnus}, for more information on this mode.
1983
1984
1985 @node Uniform
1986 @section The Uniform Naming Scheme
1987
1988 @cindex Uniform naming scheme
1989
1990 Automake variables generally follow a @dfn{uniform naming scheme} that
1991 makes it easy to decide how programs (and other derived objects) are
1992 built, and how they are installed.  This scheme also supports
1993 @command{configure} time determination of what should be built.
1994
1995 @cindex @code{_PROGRAMS} primary variable
1996 @cindex @code{PROGRAMS} primary variable
1997 @cindex Primary variable, @code{PROGRAMS}
1998 @cindex Primary variable, defined
1999 @vindex _PROGRAMS
2000
2001 At @command{make} time, certain variables are used to determine which
2002 objects are to be built.  The variable names are made of several pieces
2003 that are concatenated together.
2004
2005 The piece that tells @command{automake} what is being built is commonly called
2006 the @dfn{primary}.  For instance, the primary @code{PROGRAMS} holds a
2007 list of programs that are to be compiled and linked.
2008 @vindex PROGRAMS
2009
2010 @cindex @code{pkgdatadir}, defined
2011 @cindex @code{pkgincludedir}, defined
2012 @cindex @code{pkglibdir}, defined
2013 @cindex @code{pkglibexecdir}, defined
2014
2015 @vindex pkgdatadir
2016 @vindex pkgincludedir
2017 @vindex pkglibdir
2018 @vindex pkglibexecdir
2019
2020 @cindex @code{PACKAGE}, directory
2021 A different set of names is used to decide where the built objects
2022 should be installed.  These names are prefixes to the primary, and they
2023 indicate which standard directory should be used as the installation
2024 directory.  The standard directory names are given in the GNU standards
2025 (@pxref{Directory Variables, , , standards, The GNU Coding Standards}).
2026 Automake extends this list with @code{pkgdatadir}, @code{pkgincludedir},
2027 @code{pkglibdir}, and @code{pkglibexecdir}; these are the same as the
2028 non-@samp{pkg} versions, but with @samp{$(PACKAGE)} appended.  For instance,
2029 @code{pkglibdir} is defined as @samp{$(libdir)/$(PACKAGE)}.
2030
2031 @cindex @code{EXTRA_}, prepending
2032 For each primary, there is one additional variable named by prepending
2033 @samp{EXTRA_} to the primary name.  This variable is used to list
2034 objects that may or may not be built, depending on what
2035 @command{configure} decides.  This variable is required because Automake
2036 must statically know the entire list of objects that may be built in
2037 order to generate a @file{Makefile.in} that will work in all cases.
2038
2039 @cindex @code{EXTRA_PROGRAMS}, defined
2040 @cindex Example, @code{EXTRA_PROGRAMS}
2041 @cindex @command{cpio} example
2042
2043 For instance, @command{cpio} decides at configure time which programs
2044 should be built.  Some of the programs are installed in @code{bindir},
2045 and some are installed in @code{sbindir}:
2046
2047 @example
2048 EXTRA_PROGRAMS = mt rmt
2049 bin_PROGRAMS = cpio pax
2050 sbin_PROGRAMS = $(MORE_PROGRAMS)
2051 @end example
2052
2053 Defining a primary without a prefix as a variable, e.g.,
2054 @samp{PROGRAMS}, is an error.
2055
2056 Note that the common @samp{dir} suffix is left off when constructing the
2057 variable names; thus one writes @samp{bin_PROGRAMS} and not
2058 @samp{bindir_PROGRAMS}.
2059
2060 Not every sort of object can be installed in every directory.  Automake
2061 will flag those attempts it finds in error (but see below how to override
2062 the check if you really need to).
2063 Automake will also diagnose obvious misspellings in directory names.
2064
2065 @cindex Extending list of installation directories
2066 @cindex Installation directories, extending list
2067
2068 Sometimes the standard directories---even as augmented by
2069 Automake---are not enough.  In particular it is sometimes useful, for
2070 clarity, to install objects in a subdirectory of some predefined
2071 directory.  To this end, Automake allows you to extend the list of
2072 possible installation directories.  A given prefix (e.g., @samp{zar})
2073 is valid if a variable of the same name with @samp{dir} appended is
2074 defined (e.g., @samp{zardir}).
2075
2076 For instance, the following snippet will install @file{file.xml} into
2077 @samp{$(datadir)/xml}.
2078
2079 @c Keep in sync with primary-prefix-couples-documented-valid.test.
2080 @example
2081 xmldir = $(datadir)/xml
2082 xml_DATA = file.xml
2083 @end example
2084
2085 This feature can also be used to override the sanity checks Automake
2086 performs to diagnose suspicious directory/primary couples (in the
2087 unlikely case these checks are undesirable, and you really know what
2088 you're doing).  For example, Automake would error out on this input:
2089
2090 @c Should be tested in primary-prefix-invalid-couples.test.
2091 @example
2092 # Forbidden directory combinations, automake will error out on this.
2093 pkglib_PROGRAMS = foo
2094 doc_LIBRARIES = libquux.a
2095 @end example
2096
2097 @noindent
2098 but it will succeed with this:
2099
2100 @c Keep in sync with primary-prefix-couples-documented-valid.test.
2101 @example
2102 # Work around forbidden directory combinations.  Do not use this
2103 # without a very good reason!
2104 my_execbindir = $(pkglibdir)
2105 my_doclibdir = $(docdir)
2106 my_execbin_PROGRAMS = foo
2107 my_doclib_LIBRARIES = libquux.a
2108 @end example
2109
2110 The @samp{exec} substring of the @samp{my_execbindir} variable lets
2111 the files be installed at the right time (@pxref{The Two Parts of
2112 Install}).
2113
2114 @cindex @samp{noinst_} primary prefix, definition
2115 @vindex noinst_
2116
2117 The special prefix @samp{noinst_} indicates that the objects in question
2118 should be built but not installed at all.  This is usually used for
2119 objects required to build the rest of your package, for instance static
2120 libraries (@pxref{A Library}), or helper scripts.
2121
2122 @cindex @samp{check_} primary prefix, definition
2123 @vindex check_
2124
2125 The special prefix @samp{check_} indicates that the objects in question
2126 should not be built until the @samp{make check} command is run.  Those
2127 objects are not installed either.
2128
2129 The current primary names are @samp{PROGRAMS}, @samp{LIBRARIES},
2130 @samp{LTLIBRARIES}, @samp{LISP}, @samp{PYTHON}, @samp{JAVA},
2131 @samp{SCRIPTS}, @samp{DATA}, @samp{HEADERS}, @samp{MANS}, and
2132 @samp{TEXINFOS}.
2133 @vindex PROGRAMS
2134 @vindex LIBRARIES
2135 @vindex LTLIBRARIES
2136 @vindex LISP
2137 @vindex PYTHON
2138 @vindex JAVA
2139 @vindex SCRIPTS
2140 @vindex DATA
2141 @vindex HEADERS
2142 @vindex MANS
2143 @vindex TEXINFOS
2144
2145 Some primaries also allow additional prefixes that control other
2146 aspects of @command{automake}'s behavior.  The currently defined prefixes
2147 are @samp{dist_}, @samp{nodist_}, @samp{nobase_}, and @samp{notrans_}.
2148 These prefixes are explained later (@pxref{Program and Library Variables})
2149 (@pxref{Man Pages}).
2150
2151
2152 @node Length Limitations
2153 @section Staying below the command line length limit
2154
2155 @cindex command line length limit
2156 @cindex ARG_MAX
2157
2158 Traditionally, most unix-like systems have a length limitation for the
2159 command line arguments and environment contents when creating new
2160 processes (see for example
2161 @uref{http://www.in-ulm.de/@/~mascheck/@/various/@/argmax/} for an
2162 overview on this issue),
2163 which of course also applies to commands spawned by @command{make}.
2164 POSIX requires this limit to be at least 4096 bytes, and most modern
2165 systems have quite high limits (or are unlimited).
2166
2167 In order to create portable Makefiles that do not trip over these
2168 limits, it is necessary to keep the length of file lists bounded.
2169 Unfortunately, it is not possible to do so fully transparently within
2170 Automake, so your help may be needed.  Typically, you can split long
2171 file lists manually and use different installation directory names for
2172 each list.  For example,
2173
2174 @example
2175 data_DATA = file1 @dots{} file@var{N} file@var{N+1} @dots{} file@var{2N}
2176 @end example
2177
2178 @noindent
2179 may also be written as
2180
2181 @c Keep in sync with primary-prefix-couples-documented-valid.test.
2182 @example
2183 data_DATA = file1 @dots{} file@var{N}
2184 data2dir = $(datadir)
2185 data2_DATA = file@var{N+1} @dots{} file@var{2N}
2186 @end example
2187
2188 @noindent
2189 and will cause Automake to treat the two lists separately during
2190 @code{make install}.  See @ref{The Two Parts of Install} for choosing
2191 directory names that will keep the ordering of the two parts of
2192 installation Note that @code{make dist} may still only work on a host
2193 with a higher length limit in this example.
2194
2195 Automake itself employs a couple of strategies to avoid long command
2196 lines.  For example, when @samp{$@{srcdir@}/} is prepended to file
2197 names, as can happen with above @code{$(data_DATA)} lists, it limits
2198 the amount of arguments passed to external commands.
2199
2200 Unfortunately, some system's @command{make} commands may prepend
2201 @code{VPATH} prefixes like @samp{$@{srcdir@}/} to file names from the
2202 source tree automatically (@pxref{Automatic Rule Rewriting, , Automatic
2203 Rule Rewriting, autoconf, The Autoconf Manual}).  In this case, the user
2204 may have to switch to use GNU Make, or refrain from using VPATH builds,
2205 in order to stay below the length limit.
2206
2207 For libraries and programs built from many sources, convenience archives
2208 may be used as intermediates in order to limit the object list length
2209 (@pxref{Libtool Convenience Libraries}).
2210
2211
2212 @node Canonicalization
2213 @section How derived variables are named
2214
2215 @cindex canonicalizing Automake variables
2216
2217 Sometimes a Makefile variable name is derived from some text the
2218 maintainer supplies.  For instance, a program name listed in
2219 @samp{_PROGRAMS} is rewritten into the name of a @samp{_SOURCES}
2220 variable.  In cases like this, Automake canonicalizes the text, so that
2221 program names and the like do not have to follow Makefile variable naming
2222 rules.  All characters in the name except for letters, numbers, the
2223 strudel (@@), and the underscore are turned into underscores when making
2224 variable references.
2225
2226 For example, if your program is named @file{sniff-glue}, the derived
2227 variable name would be @samp{sniff_glue_SOURCES}, not
2228 @samp{sniff-glue_SOURCES}.  Similarly the sources for a library named
2229 @file{libmumble++.a} should be listed in the
2230 @samp{libmumble___a_SOURCES} variable.
2231
2232 The strudel is an addition, to make the use of Autoconf substitutions in
2233 variable names less obfuscating.
2234
2235
2236 @node User Variables
2237 @section Variables reserved for the user
2238
2239 @cindex variables, reserved for the user
2240 @cindex user variables
2241
2242 Some @file{Makefile} variables are reserved by the GNU Coding Standards
2243 for the use of the ``user''---the person building the package.  For
2244 instance, @code{CFLAGS} is one such variable.
2245
2246 Sometimes package developers are tempted to set user variables such as
2247 @code{CFLAGS} because it appears to make their job easier.  However,
2248 the package itself should never set a user variable, particularly not
2249 to include switches that are required for proper compilation of the
2250 package.  Since these variables are documented as being for the
2251 package builder, that person rightfully expects to be able to override
2252 any of these variables at build time.
2253
2254 To get around this problem, Automake introduces an automake-specific
2255 shadow variable for each user flag variable.  (Shadow variables are
2256 not introduced for variables like @code{CC}, where they would make no
2257 sense.)  The shadow variable is named by prepending @samp{AM_} to the
2258 user variable's name.  For instance, the shadow variable for
2259 @code{YFLAGS} is @code{AM_YFLAGS}.  The package maintainer---that is,
2260 the author(s) of the @file{Makefile.am} and @file{configure.ac}
2261 files---may adjust these shadow variables however necessary.
2262
2263 @xref{Flag Variables Ordering}, for more discussion about these
2264 variables and how they interact with per-target variables.
2265
2266 @node Auxiliary Programs
2267 @section Programs automake might require
2268
2269 @cindex Programs, auxiliary
2270 @cindex Auxiliary programs
2271
2272 Automake sometimes requires helper programs so that the generated
2273 @file{Makefile} can do its work properly.  There are a fairly large
2274 number of them, and we list them here.
2275
2276 Although all of these files are distributed and installed with
2277 Automake, a couple of them are maintained separately.  The Automake
2278 copies are updated before each release, but we mention the original
2279 source in case you need more recent versions.
2280
2281 @table @code
2282 @item ar-lib
2283 This is a wrapper primarily for the Microsoft lib archiver, to make
2284 it more POSIX-like.
2285
2286 @item compile
2287 This is a wrapper for compilers that do not accept options @option{-c}
2288 and @option{-o} at the same time.  It is only used when absolutely
2289 required.  Such compilers are rare, with the Microsoft C/C++ Compiler
2290 as the most notable exception. This wrapper also makes the following
2291 common options available for that compiler, while performing file name
2292 translation where needed: @option{-I}, @option{-L}, @option{-l},
2293 @option{-Wl,} and @option{-Xlinker}.
2294
2295 @item config.guess
2296 @itemx config.sub
2297 These two programs compute the canonical triplets for the given build,
2298 host, or target architecture.  These programs are updated regularly to
2299 support new architectures and fix probes broken by changes in new
2300 kernel versions.  Each new release of Automake comes with up-to-date
2301 copies of these programs.  If your copy of Automake is getting old,
2302 you are encouraged to fetch the latest versions of these files from
2303 @url{http://savannah.gnu.org/git/?group=config} before making a
2304 release.
2305
2306 @item config-ml.in
2307 This file is not a program, it is a @file{configure} fragment used for
2308 multilib support (@pxref{Multilibs}).  Since the Automake multilib
2309 support has been @emph{deprecated} and targeted for removal, this
2310 file is going to be @emph{removed from the Automake core} in the next
2311 major release.  The master copy of this file is maintained in the GCC
2312 tree at @url{http://gcc.gnu.org/svn.html}.
2313
2314 @item depcomp
2315 This program understands how to run a compiler so that it will
2316 generate not only the desired output but also dependency information
2317 that is then used by the automatic dependency tracking feature
2318 (@pxref{Dependencies}).
2319
2320 @item elisp-comp
2321 This program is used to byte-compile Emacs Lisp code.
2322
2323 @item install-sh
2324 This is a replacement for the @command{install} program that works on
2325 platforms where @command{install} is unavailable or unusable.
2326
2327 @item mdate-sh
2328 This script is used to generate a @file{version.texi} file.  It examines
2329 a file and prints some date information about it.
2330
2331 @item missing
2332 This wraps a number of programs that are typically only required by
2333 maintainers.  If the program in question doesn't exist,
2334 @command{missing} prints an informative warning and attempts to fix
2335 things so that the build can continue.
2336
2337 @item mkinstalldirs
2338 This script used to be a wrapper around @samp{mkdir -p}, which is not
2339 portable.  Now we prefer to use @samp{install-sh -d} when @command{configure}
2340 finds that @samp{mkdir -p} does not work, this makes one less script to
2341 distribute.
2342
2343 For backward compatibility @file{mkinstalldirs} is still used and
2344 distributed when @command{automake} finds it in a package.  But it is no
2345 longer installed automatically, and it should be safe to remove it.
2346
2347 @item py-compile
2348 This is used to byte-compile Python scripts.
2349
2350 @item symlink-tree
2351 This program duplicates a tree of directories, using symbolic links
2352 instead of copying files.  Such an operation is performed when building
2353 multilibs (@pxref{Multilibs}).  Since the Automake multilib support has
2354 been @emph{deprecated} and targeted for removal, this file is going to
2355 be @emph{removed from the Automake core} in the next major release.
2356 The master copy of this file is maintained in the GCC tree at
2357 @url{http://gcc.gnu.org/svn.html}.
2358
2359 @item test-driver
2360 This implements the default test driver offered by the parallel
2361 testsuite harness.
2362
2363 @item texinfo.tex
2364 Not a program, this file is required for @samp{make dvi}, @samp{make
2365 ps} and @samp{make pdf} to work when Texinfo sources are in the
2366 package.  The latest version can be downloaded from
2367 @url{http://www.gnu.org/software/texinfo/}.
2368
2369 @item ylwrap
2370 This program wraps @command{lex} and @command{yacc} to rename their
2371 output files.  It also ensures that, for instance, multiple
2372 @command{yacc} instances can be invoked in a single directory in
2373 parallel.
2374
2375 @end table
2376
2377
2378 @node Examples
2379 @chapter Some example packages
2380
2381 This section contains two small examples.
2382
2383 The first example (@pxref{Complete}) assumes you have an existing
2384 project already using Autoconf, with handcrafted @file{Makefile}s, and
2385 that you want to convert it to using Automake.  If you are discovering
2386 both tools, it is probably better that you look at the Hello World
2387 example presented earlier (@pxref{Hello World}).
2388
2389 The second example (@pxref{true}) shows how two programs can be built
2390 from the same file, using different compilation parameters.  It
2391 contains some technical digressions that are probably best skipped on
2392 first read.
2393
2394 @menu
2395 * Complete::                    A simple example, start to finish
2396 * true::                        Building true and false
2397 @end menu
2398
2399
2400 @node Complete
2401 @section A simple example, start to finish
2402
2403 @cindex Complete example
2404
2405 Let's suppose you just finished writing @code{zardoz}, a program to make
2406 your head float from vortex to vortex.  You've been using Autoconf to
2407 provide a portability framework, but your @file{Makefile.in}s have been
2408 ad-hoc.  You want to make them bulletproof, so you turn to Automake.
2409
2410 @cindex @code{AM_INIT_AUTOMAKE}, example use
2411
2412 The first step is to update your @file{configure.ac} to include the
2413 commands that @command{automake} needs.  The way to do this is to add an
2414 @code{AM_INIT_AUTOMAKE} call just after @code{AC_INIT}:
2415
2416 @example
2417 AC_INIT([zardoz], [1.0])
2418 AM_INIT_AUTOMAKE
2419 @dots{}
2420 @end example
2421
2422 Since your program doesn't have any complicating factors (e.g., it
2423 doesn't use @code{gettext}, it doesn't want to build a shared library),
2424 you're done with this part.  That was easy!
2425
2426 @cindex @command{aclocal} program, introduction
2427 @cindex @file{aclocal.m4}, preexisting
2428 @cindex @file{acinclude.m4}, defined
2429
2430 Now you must regenerate @file{configure}.  But to do that, you'll need
2431 to tell @command{autoconf} how to find the new macro you've used.  The
2432 easiest way to do this is to use the @command{aclocal} program to
2433 generate your @file{aclocal.m4} for you.  But wait@dots{} maybe you
2434 already have an @file{aclocal.m4}, because you had to write some hairy
2435 macros for your program.  The @command{aclocal} program lets you put
2436 your own macros into @file{acinclude.m4}, so simply rename and then
2437 run:
2438
2439 @example
2440 mv aclocal.m4 acinclude.m4
2441 aclocal
2442 autoconf
2443 @end example
2444
2445 @cindex @command{zardoz} example
2446
2447 Now it is time to write your @file{Makefile.am} for @code{zardoz}.
2448 Since @code{zardoz} is a user program, you want to install it where the
2449 rest of the user programs go: @code{bindir}.  Additionally,
2450 @code{zardoz} has some Texinfo documentation.  Your @file{configure.ac}
2451 script uses @code{AC_REPLACE_FUNCS}, so you need to link against
2452 @samp{$(LIBOBJS)}.  So here's what you'd write:
2453
2454 @example
2455 bin_PROGRAMS = zardoz
2456 zardoz_SOURCES = main.c head.c float.c vortex9.c gun.c
2457 zardoz_LDADD = $(LIBOBJS)
2458
2459 info_TEXINFOS = zardoz.texi
2460 @end example
2461
2462 Now you can run @samp{automake --add-missing} to generate your
2463 @file{Makefile.in} and grab any auxiliary files you might need, and
2464 you're done!
2465
2466
2467 @node true
2468 @section Building true and false
2469
2470 @cindex Example, @command{false} and @command{true}
2471 @cindex @command{false} Example
2472 @cindex @command{true} Example
2473
2474 Here is another, trickier example.  It shows how to generate two
2475 programs (@code{true} and @code{false}) from the same source file
2476 (@file{true.c}).  The difficult part is that each compilation of
2477 @file{true.c} requires different @code{cpp} flags.
2478
2479 @example
2480 bin_PROGRAMS = true false
2481 false_SOURCES =
2482 false_LDADD = false.o
2483
2484 true.o: true.c
2485         $(COMPILE) -DEXIT_CODE=0 -c true.c
2486
2487 false.o: true.c
2488         $(COMPILE) -DEXIT_CODE=1 -o false.o -c true.c
2489 @end example
2490
2491 Note that there is no @code{true_SOURCES} definition.  Automake will
2492 implicitly assume that there is a source file named @file{true.c}
2493 (@pxref{Default _SOURCES}), and
2494 define rules to compile @file{true.o} and link @file{true}.  The
2495 @samp{true.o: true.c} rule supplied by the above @file{Makefile.am},
2496 will override the Automake generated rule to build @file{true.o}.
2497
2498 @code{false_SOURCES} is defined to be empty---that way no implicit value
2499 is substituted.  Because we have not listed the source of
2500 @file{false}, we have to tell Automake how to link the program.  This is
2501 the purpose of the @code{false_LDADD} line.  A @code{false_DEPENDENCIES}
2502 variable, holding the dependencies of the @file{false} target will be
2503 automatically generated by Automake from the content of
2504 @code{false_LDADD}.
2505
2506 The above rules won't work if your compiler doesn't accept both
2507 @option{-c} and @option{-o}.  The simplest fix for this is to introduce a
2508 bogus dependency (to avoid problems with a parallel @command{make}):
2509
2510 @example
2511 true.o: true.c false.o
2512         $(COMPILE) -DEXIT_CODE=0 -c true.c
2513
2514 false.o: true.c
2515         $(COMPILE) -DEXIT_CODE=1 -c true.c && mv true.o false.o
2516 @end example
2517
2518 As it turns out, there is also a much easier way to do this same task.
2519 Some of the above technique is useful enough that we've kept the
2520 example in the manual.  However if you were to build @code{true} and
2521 @code{false} in real life, you would probably use per-program
2522 compilation flags, like so:
2523
2524 @c Keep in sync with specflg7.test and specflg8.test.
2525 @example
2526 bin_PROGRAMS = false true
2527
2528 false_SOURCES = true.c
2529 false_CPPFLAGS = -DEXIT_CODE=1
2530
2531 true_SOURCES = true.c
2532 true_CPPFLAGS = -DEXIT_CODE=0
2533 @end example
2534
2535 In this case Automake will cause @file{true.c} to be compiled twice,
2536 with different flags.  In this instance, the names of the object files
2537 would be chosen by automake; they would be @file{false-true.o} and
2538 @file{true-true.o}. (The name of the object files rarely matters.)
2539
2540 @node automake Invocation
2541 @chapter Creating a @file{Makefile.in}
2542 @c This node used to be named "Invoking automake".  This @anchor
2543 @c allows old links to still work.
2544 @anchor{Invoking automake}
2545
2546 @cindex Multiple @file{configure.ac} files
2547 @cindex Invoking @command{automake}
2548 @cindex @command{automake}, invoking
2549 @cindex Invocation of @command{automake}
2550 @cindex @command{automake}, invocation
2551
2552 To create all the @file{Makefile.in}s for a package, run the
2553 @command{automake} program in the top level directory, with no
2554 arguments.  @command{automake} will automatically find each
2555 appropriate @file{Makefile.am} (by scanning @file{configure.ac};
2556 @pxref{configure}) and generate the corresponding @file{Makefile.in}.
2557 Note that @command{automake} has a rather simplistic view of what
2558 constitutes a package; it assumes that a package has only one
2559 @file{configure.ac}, at the top.  If your package has multiple
2560 @file{configure.ac}s, then you must run @command{automake} in each
2561 directory holding a @file{configure.ac}.  (Alternatively, you may rely
2562 on Autoconf's @command{autoreconf}, which is able to recurse your
2563 package tree and run @command{automake} where appropriate.)
2564
2565 You can optionally give @command{automake} an argument; @file{.am} is
2566 appended to the argument and the result is used as the name of the
2567 input file.  This feature is generally only used to automatically
2568 rebuild an out-of-date @file{Makefile.in}.  Note that
2569 @command{automake} must always be run from the topmost directory of a
2570 project, even if being used to regenerate the @file{Makefile.in} in
2571 some subdirectory.  This is necessary because @command{automake} must
2572 scan @file{configure.ac}, and because @command{automake} uses the
2573 knowledge that a @file{Makefile.in} is in a subdirectory to change its
2574 behavior in some cases.
2575
2576 @vindex AUTOCONF
2577 Automake will run @command{autoconf} to scan @file{configure.ac} and
2578 its dependencies (i.e., @file{aclocal.m4} and any included file),
2579 therefore @command{autoconf} must be in your @env{PATH}.  If there is
2580 an @env{AUTOCONF} variable in your environment it will be used
2581 instead of @command{autoconf}, this allows you to select a particular
2582 version of Autoconf.  By the way, don't misunderstand this paragraph:
2583 @command{automake} runs @command{autoconf} to @strong{scan} your
2584 @file{configure.ac}, this won't build @file{configure} and you still
2585 have to run @command{autoconf} yourself for this purpose.
2586
2587 @cindex @command{automake} options
2588 @cindex Options, @command{automake}
2589 @cindex Strictness, command line
2590
2591 @command{automake} accepts the following options:
2592
2593 @cindex Extra files distributed with Automake
2594 @cindex Files distributed with Automake
2595 @cindex @file{config.guess}
2596
2597 @table @code
2598 @item -a
2599 @itemx --add-missing
2600 @opindex -a
2601 @opindex --add-missing
2602 Automake requires certain common files to exist in certain situations;
2603 for instance, @file{config.guess} is required if @file{configure.ac} invokes
2604 @code{AC_CANONICAL_HOST}.  Automake is distributed with several of these
2605 files (@pxref{Auxiliary Programs}); this option will cause the missing
2606 ones to be automatically added to the package, whenever possible.  In
2607 general if Automake tells you a file is missing, try using this option.
2608 By default Automake tries to make a symbolic link pointing to its own
2609 copy of the missing file; this can be changed with @option{--copy}.
2610
2611 Many of the potentially-missing files are common scripts whose
2612 location may be specified via the @code{AC_CONFIG_AUX_DIR} macro.
2613 Therefore, @code{AC_CONFIG_AUX_DIR}'s setting affects whether a
2614 file is considered missing, and where the missing file is added
2615 (@pxref{Optional}).
2616
2617 In some strictness modes, additional files are installed, see @ref{Gnits}
2618 for more information.
2619
2620 @item --libdir=@var{dir}
2621 @opindex --libdir
2622 Look for Automake data files in directory @var{dir} instead of in the
2623 installation directory.  This is typically used for debugging.
2624
2625 @item -c
2626 @opindex -c
2627 @itemx --copy
2628 @opindex --copy
2629 When used with @option{--add-missing}, causes installed files to be
2630 copied.  The default is to make a symbolic link.
2631
2632 @item --cygnus
2633 @opindex --cygnus
2634 Causes the generated @file{Makefile.in}s to follow Cygnus rules, instead
2635 of GNU or Gnits rules.  For more information, see @ref{Cygnus}.
2636
2637 @item -f
2638 @opindex -f
2639 @itemx --force-missing
2640 @opindex --force-missing
2641 When used with @option{--add-missing}, causes standard files to be reinstalled
2642 even if they already exist in the source tree.  This involves removing
2643 the file from the source tree before creating the new symlink (or, with
2644 @option{--copy}, copying the new file).
2645
2646 @item --foreign
2647 @opindex --foreign
2648 Set the global strictness to @option{foreign}.  For more information, see
2649 @ref{Strictness}.
2650
2651 @item --gnits
2652 @opindex --gnits
2653 Set the global strictness to @option{gnits}.  For more information, see
2654 @ref{Gnits}.
2655
2656 @item --gnu
2657 @opindex --gnu
2658 Set the global strictness to @option{gnu}.  For more information, see
2659 @ref{Gnits}.  This is the default strictness.
2660
2661 @item --help
2662 @opindex --help
2663 Print a summary of the command line options and exit.
2664
2665 @item -i
2666 @itemx --ignore-deps
2667 @opindex -i
2668 This disables the dependency tracking feature in generated
2669 @file{Makefile}s; see @ref{Dependencies}.
2670
2671 @item --include-deps
2672 @opindex --include-deps
2673 This enables the dependency tracking feature.  This feature is enabled
2674 by default.  This option is provided for historical reasons only and
2675 probably should not be used.
2676
2677 @item --no-force
2678 @opindex --no-force
2679 Ordinarily @command{automake} creates all @file{Makefile.in}s mentioned in
2680 @file{configure.ac}.  This option causes it to only update those
2681 @file{Makefile.in}s that are out of date with respect to one of their
2682 dependents.
2683
2684 @item -o @var{dir}
2685 @itemx --output-dir=@var{dir}
2686 @opindex -o
2687 @opindex --output-dir
2688 Put the generated @file{Makefile.in} in the directory @var{dir}.
2689 Ordinarily each @file{Makefile.in} is created in the directory of the
2690 corresponding @file{Makefile.am}.  This option is deprecated and will be
2691 removed in a future release.
2692
2693 @item -v
2694 @itemx --verbose
2695 @opindex -v
2696 @opindex --verbose
2697 Cause Automake to print information about which files are being read or
2698 created.
2699
2700 @item --version
2701 @opindex --version
2702 Print the version number of Automake and exit.
2703
2704 @item -W CATEGORY
2705 @itemx --warnings=@var{category}
2706 @opindex -W
2707 @opindex --warnings
2708 Output warnings falling in @var{category}.  @var{category} can be
2709 one of:
2710 @table @code
2711 @item gnu
2712 warnings related to the GNU Coding Standards
2713 (@pxref{Top, , , standards, The GNU Coding Standards}).
2714 @item obsolete
2715 obsolete features or constructions
2716 @item override
2717 user redefinitions of Automake rules or variables
2718 @item portability
2719 portability issues (e.g., use of @command{make} features that are
2720 known to be not portable)
2721 @item extra-portability
2722 extra portability issues related to obscure tools.  One example of such
2723 a tool is the Microsoft @command{lib} archiver.
2724 @item syntax
2725 weird syntax, unused variables, typos
2726 @item unsupported
2727 unsupported or incomplete features
2728 @item all
2729 all the warnings
2730 @item none
2731 turn off all the warnings
2732 @item error
2733 treat warnings as errors
2734 @end table
2735
2736 A category can be turned off by prefixing its name with @samp{no-}.  For
2737 instance, @option{-Wno-syntax} will hide the warnings about unused
2738 variables.
2739
2740 The categories output by default are @samp{syntax} and
2741 @samp{unsupported}.  Additionally, @samp{gnu} and @samp{portability}
2742 are enabled in @option{--gnu} and @option{--gnits} strictness.
2743 On the other hand, the @option{silent-rules} options (@pxref{Options})
2744 turns off portability warnings about recursive variable expansions.
2745
2746 @c Checked by extra-portability.test
2747 Turning off @samp{portability} will also turn off @samp{extra-portability},
2748 and similarly turning on @samp{extra-portability} will also turn on
2749 @samp{portability}.  However, turning on @samp{portability} or turning
2750 off @samp{extra-portability} will not affect the other category.
2751
2752 @vindex WARNINGS
2753 The environment variable @env{WARNINGS} can contain a comma separated
2754 list of categories to enable.  It will be taken into account before the
2755 command-line switches, this way @option{-Wnone} will also ignore any
2756 warning category enabled by @env{WARNINGS}.  This variable is also used
2757 by other tools like @command{autoconf}; unknown categories are ignored
2758 for this reason.
2759
2760 @end table
2761
2762 @vindex AUTOMAKE_JOBS
2763 If the environment variable @env{AUTOMAKE_JOBS} contains a positive
2764 number, it is taken as the maximum number of Perl threads to use in
2765 @command{automake} for generating multiple @file{Makefile.in} files
2766 concurrently.  This is an experimental feature.
2767
2768
2769 @node configure
2770 @chapter Scanning @file{configure.ac}, using @command{aclocal}
2771
2772 @cindex @file{configure.ac}, scanning
2773 @cindex Scanning @file{configure.ac}
2774 @cindex Using @command{aclocal}
2775 @cindex @command{aclocal}, using
2776
2777 Automake scans the package's @file{configure.ac} to determine certain
2778 information about the package.  Some @command{autoconf} macros are required
2779 and some variables must be defined in @file{configure.ac}.  Automake
2780 will also use information from @file{configure.ac} to further tailor its
2781 output.
2782
2783 Automake also supplies some Autoconf macros to make the maintenance
2784 easier.  These macros can automatically be put into your
2785 @file{aclocal.m4} using the @command{aclocal} program.
2786
2787 @menu
2788 * Requirements::                Configuration requirements
2789 * Optional::                    Other things Automake recognizes
2790 * aclocal Invocation::          Auto-generating aclocal.m4
2791 * Macros::                      Autoconf macros supplied with Automake
2792 @end menu
2793
2794
2795 @node Requirements
2796 @section Configuration requirements
2797
2798 @cindex Automake requirements
2799 @cindex Requirements of Automake
2800
2801 @acindex AM_INIT_AUTOMAKE
2802 The one real requirement of Automake is that your @file{configure.ac}
2803 call @code{AM_INIT_AUTOMAKE}.  This macro does several things that are
2804 required for proper Automake operation (@pxref{Macros}).
2805
2806 Here are the other macros that Automake requires but which are not run
2807 by @code{AM_INIT_AUTOMAKE}:
2808
2809 @table @code
2810 @item AC_CONFIG_FILES
2811 @itemx AC_OUTPUT
2812 @acindex AC_CONFIG_FILES
2813 @acindex AC_OUTPUT
2814 These two macros are usually invoked as follows near the end of
2815 @file{configure.ac}.
2816
2817 @example
2818 @dots{}
2819 AC_CONFIG_FILES([
2820   Makefile
2821   doc/Makefile
2822   src/Makefile
2823   src/lib/Makefile
2824   @dots{}
2825 ])
2826 AC_OUTPUT
2827 @end example
2828
2829 Automake uses these to determine which files to create (@pxref{Output, ,
2830 Creating Output Files, autoconf, The Autoconf Manual}).  A listed file
2831 is considered to be an Automake generated @file{Makefile} if there
2832 exists a file with the same name and the @file{.am} extension appended.
2833 Typically, @samp{AC_CONFIG_FILES([foo/Makefile])} will cause Automake to
2834 generate @file{foo/Makefile.in} if @file{foo/Makefile.am} exists.
2835
2836 When using @code{AC_CONFIG_FILES} with multiple input files, as in
2837
2838 @example
2839 AC_CONFIG_FILES([Makefile:top.in:Makefile.in:bot.in])
2840 @end example
2841
2842 @noindent
2843 @command{automake} will generate the first @file{.in} input file for
2844 which a @file{.am} file exists.  If no such file exists the output
2845 file is not considered to be generated by Automake.
2846
2847 Files created by @code{AC_CONFIG_FILES}, be they Automake
2848 @file{Makefile}s or not, are all removed by @samp{make distclean}.
2849 Their inputs are automatically distributed, unless they
2850 are the output of prior @code{AC_CONFIG_FILES} commands.
2851 Finally, rebuild rules are generated in the Automake @file{Makefile}
2852 existing in the subdirectory of the output file, if there is one, or
2853 in the top-level @file{Makefile} otherwise.
2854
2855 The above machinery (cleaning, distributing, and rebuilding) works
2856 fine if the @code{AC_CONFIG_FILES} specifications contain only
2857 literals.  If part of the specification uses shell variables,
2858 @command{automake} will not be able to fulfill this setup, and you will
2859 have to complete the missing bits by hand.  For instance, on
2860
2861 @c Keep in sync with output11.test.
2862 @example
2863 file=input
2864 @dots{}
2865 AC_CONFIG_FILES([output:$file],, [file=$file])
2866 @end example
2867
2868 @noindent
2869 @command{automake} will output rules to clean @file{output}, and
2870 rebuild it.  However the rebuild rule will not depend on @file{input},
2871 and this file will not be distributed either.  (You must add
2872 @samp{EXTRA_DIST = input} to your @file{Makefile.am} if @file{input} is a
2873 source file.)
2874
2875 Similarly
2876
2877 @c Keep in sync with output11.test.
2878 @example
2879 file=output
2880 file2=out:in
2881 @dots{}
2882 AC_CONFIG_FILES([$file:input],, [file=$file])
2883 AC_CONFIG_FILES([$file2],, [file2=$file2])
2884 @end example
2885
2886 @noindent
2887 will only cause @file{input} to be distributed.  No file will be
2888 cleaned automatically (add @samp{DISTCLEANFILES = output out}
2889 yourself), and no rebuild rule will be output.
2890
2891 Obviously @command{automake} cannot guess what value @samp{$file} is
2892 going to hold later when @file{configure} is run, and it cannot use
2893 the shell variable @samp{$file} in a @file{Makefile}.  However, if you
2894 make reference to @samp{$file} as @samp{$@{file@}} (i.e., in a way
2895 that is compatible with @command{make}'s syntax) and furthermore use
2896 @code{AC_SUBST} to ensure that @samp{$@{file@}} is meaningful in a
2897 @file{Makefile}, then @command{automake} will be able to use
2898 @samp{$@{file@}} to generate all these rules.  For instance, here is
2899 how the Automake package itself generates versioned scripts for its
2900 test suite:
2901
2902 @example
2903 AC_SUBST([APIVERSION], @dots{})
2904 @dots{}
2905 AC_CONFIG_FILES(
2906   [tests/aclocal-$@{APIVERSION@}:tests/aclocal.in],
2907   [chmod +x tests/aclocal-$@{APIVERSION@}],
2908   [APIVERSION=$APIVERSION])
2909 AC_CONFIG_FILES(
2910   [tests/automake-$@{APIVERSION@}:tests/automake.in],
2911   [chmod +x tests/automake-$@{APIVERSION@}])
2912 @end example
2913
2914 @noindent
2915 Here cleaning, distributing, and rebuilding are done automatically,
2916 because @samp{$@{APIVERSION@}} is known at @command{make}-time.
2917
2918 Note that you should not use shell variables to declare
2919 @file{Makefile} files for which @command{automake} must create
2920 @file{Makefile.in}.  Even @code{AC_SUBST} does not help here, because
2921 @command{automake} needs to know the file name when it runs in order
2922 to check whether @file{Makefile.am} exists.  (In the very hairy case
2923 that your setup requires such use of variables, you will have to tell
2924 Automake which @file{Makefile.in}s to generate on the command-line.)
2925
2926 It is possible to let @command{automake} emit conditional rules for
2927 @code{AC_CONFIG_FILES} with the help of @code{AM_COND_IF}
2928 (@pxref{Optional}).
2929
2930 To summarize:
2931 @itemize @bullet
2932 @item
2933 Use literals for @file{Makefile}s, and for other files whenever possible.
2934 @item
2935 Use @samp{$file} (or @samp{$@{file@}} without @samp{AC_SUBST([file])})
2936 for files that @command{automake} should ignore.
2937 @item
2938 Use @samp{$@{file@}} and @samp{AC_SUBST([file])} for files
2939 that @command{automake} should not ignore.
2940 @end itemize
2941
2942 @end table
2943
2944
2945 @node Optional
2946 @section Other things Automake recognizes
2947
2948 @cindex Macros Automake recognizes
2949 @cindex Recognized macros by Automake
2950
2951 Every time Automake is run it calls Autoconf to trace
2952 @file{configure.ac}.  This way it can recognize the use of certain
2953 macros and tailor the generated @file{Makefile.in} appropriately.
2954 Currently recognized macros and their effects are:
2955
2956 @ftable @code
2957 @item AC_CANONICAL_BUILD
2958 @itemx AC_CANONICAL_HOST
2959 @itemx AC_CANONICAL_TARGET
2960 @vindex build_triplet
2961 @vindex host_triplet
2962 @vindex target_triplet
2963 Automake will ensure that @file{config.guess} and @file{config.sub}
2964 exist.  Also, the @file{Makefile} variables @code{build_triplet},
2965 @code{host_triplet} and @code{target_triplet} are introduced.  See
2966 @ref{Canonicalizing, , Getting the Canonical System Type, autoconf,
2967 The Autoconf Manual}.
2968
2969 @item AC_CONFIG_AUX_DIR
2970 Automake will look for various helper scripts, such as
2971 @file{install-sh}, in the directory named in this macro invocation.
2972 @c This list is accurate relative to version 1.11
2973 (The full list of scripts is:
2974 @file{ar-lib},
2975 @file{config.guess},
2976 @file{config.sub},
2977 @file{depcomp},
2978 @file{elisp-comp},
2979 @file{compile},
2980 @file{install-sh},
2981 @file{ltmain.sh},
2982 @file{mdate-sh},
2983 @file{missing},
2984 @file{mkinstalldirs},
2985 @file{py-compile},
2986 @file{test-driver},
2987 @file{texinfo.tex},
2988 @file{ylwrap}.)
2989 Not all scripts are always searched for; some scripts
2990 will only be sought if the generated @file{Makefile.in} requires them.
2991
2992 If @code{AC_CONFIG_AUX_DIR} is not given, the scripts are looked for in
2993 their standard locations.  For @file{mdate-sh},
2994 @file{texinfo.tex}, and @file{ylwrap}, the standard location is the
2995 source directory corresponding to the current @file{Makefile.am}.  For
2996 the rest, the standard location is the first one of @file{.}, @file{..},
2997 or @file{../..} (relative to the top source directory) that provides any
2998 one of the helper scripts.  @xref{Input, , Finding `configure' Input,
2999 autoconf, The Autoconf Manual}.
3000
3001 Required files from @code{AC_CONFIG_AUX_DIR} are automatically
3002 distributed, even if there is no @file{Makefile.am} in this directory.
3003
3004 @item AC_CONFIG_LIBOBJ_DIR
3005 Automake will require the sources file declared with
3006 @code{AC_LIBSOURCE} (see below) in the directory specified by this
3007 macro.
3008
3009 @item AC_CONFIG_HEADERS
3010 Automake will generate rules to rebuild these headers.  Older versions
3011 of Automake required the use of @code{AM_CONFIG_HEADER}
3012 (@pxref{Macros}); this is no longer the case.
3013
3014 As with @code{AC_CONFIG_FILES} (@pxref{Requirements}), parts of the
3015 specification using shell variables will be ignored as far as
3016 cleaning, distributing, and rebuilding is concerned.
3017
3018 @item AC_CONFIG_LINKS
3019 Automake will generate rules to remove @file{configure} generated
3020 links on @samp{make distclean} and to distribute named source files as
3021 part of @samp{make dist}.
3022
3023 As for @code{AC_CONFIG_FILES} (@pxref{Requirements}), parts of the
3024 specification using shell variables will be ignored as far as cleaning
3025 and distributing is concerned.  (There are no rebuild rules for links.)
3026
3027 @item AC_LIBOBJ
3028 @itemx AC_LIBSOURCE
3029 @itemx AC_LIBSOURCES
3030 @vindex LIBOBJS
3031 Automake will automatically distribute any file listed in
3032 @code{AC_LIBSOURCE} or @code{AC_LIBSOURCES}.
3033
3034 Note that the @code{AC_LIBOBJ} macro calls @code{AC_LIBSOURCE}.  So if
3035 an Autoconf macro is documented to call @samp{AC_LIBOBJ([file])}, then
3036 @file{file.c} will be distributed automatically by Automake.  This
3037 encompasses many macros like @code{AC_FUNC_ALLOCA},
3038 @code{AC_FUNC_MEMCMP}, @code{AC_REPLACE_FUNCS}, and others.
3039
3040 By the way, direct assignments to @code{LIBOBJS} are no longer
3041 supported.  You should always use @code{AC_LIBOBJ} for this purpose.
3042 @xref{AC_LIBOBJ vs LIBOBJS, , @code{AC_LIBOBJ} vs.@: @code{LIBOBJS},
3043 autoconf, The Autoconf Manual}.
3044
3045 @item AC_PROG_RANLIB
3046 This is required if any libraries are built in the package.
3047 @xref{Particular Programs, , Particular Program Checks, autoconf, The
3048 Autoconf Manual}.
3049
3050 @item AC_PROG_CXX
3051 This is required if any C++ source is included.  @xref{Particular
3052 Programs, , Particular Program Checks, autoconf, The Autoconf Manual}.
3053
3054 @item AC_PROG_OBJC
3055 This is required if any Objective C source is included.  @xref{Particular
3056 Programs, , Particular Program Checks, autoconf, The Autoconf Manual}.
3057
3058 @item AC_PROG_F77
3059 This is required if any Fortran 77 source is included.  This macro is
3060 distributed with Autoconf version 2.13 and later.  @xref{Particular
3061 Programs, , Particular Program Checks, autoconf, The Autoconf Manual}.
3062
3063 @item AC_F77_LIBRARY_LDFLAGS
3064 This is required for programs and shared libraries that are a mixture of
3065 languages that include Fortran 77 (@pxref{Mixing Fortran 77 With C and
3066 C++}).  @xref{Macros, , Autoconf macros supplied with Automake}.
3067
3068 @item AC_FC_SRCEXT
3069 Automake will add the flags computed by @code{AC_FC_SRCEXT} to compilation
3070 of files with the respective source extension (@pxref{Fortran Compiler, ,
3071 Fortran Compiler Characteristics, autoconf, The Autoconf Manual}).
3072
3073 @item AC_PROG_FC
3074 This is required if any Fortran 90/95 source is included.  This macro is
3075 distributed with Autoconf version 2.58 and later.  @xref{Particular
3076 Programs, , Particular Program Checks, autoconf, The Autoconf Manual}.
3077
3078 @item AC_PROG_LIBTOOL
3079 Automake will turn on processing for @command{libtool} (@pxref{Top, ,
3080 Introduction, libtool, The Libtool Manual}).
3081
3082 @item AC_PROG_YACC
3083 @vindex YACC
3084 If a Yacc source file is seen, then you must either use this macro or
3085 define the variable @code{YACC} in @file{configure.ac}.  The former is
3086 preferred (@pxref{Particular Programs, , Particular Program Checks,
3087 autoconf, The Autoconf Manual}).
3088
3089 @item AC_PROG_LEX
3090 If a Lex source file is seen, then this macro must be used.
3091 @xref{Particular Programs, , Particular Program Checks, autoconf, The
3092 Autoconf Manual}.
3093
3094 @item AC_REQUIRE_AUX_FILE
3095 For each @code{AC_REQUIRE_AUX_FILE([@var{file}])},
3096 @command{automake} will ensure that @file{@var{file}} exists in the
3097 aux directory, and will complain otherwise.  It
3098 will also automatically distribute the file.  This macro should be
3099 used by third-party Autoconf macros that require some supporting
3100 files in the aux directory specified with @code{AC_CONFIG_AUX_DIR}
3101 above.  @xref{Input, , Finding @command{configure} Input, autoconf,
3102 The Autoconf Manual}.
3103
3104 @item AC_SUBST
3105 The first argument is automatically defined as a variable in each
3106 generated @file{Makefile.in}, unless @code{AM_SUBST_NOTMAKE} is also
3107 used for this variable.  @xref{Setting Output Variables, , Setting
3108 Output Variables, autoconf, The Autoconf Manual}.
3109
3110 For every substituted variable @var{var}, @command{automake} will add
3111 a line @code{@var{var} = @var{value}} to each @file{Makefile.in} file.
3112 Many Autoconf macros invoke @code{AC_SUBST} to set output variables
3113 this way, e.g., @code{AC_PATH_XTRA} defines @code{X_CFLAGS} and
3114 @code{X_LIBS}.  Thus, you can access these variables as
3115 @code{$(X_CFLAGS)} and @code{$(X_LIBS)} in any @file{Makefile.am}
3116 if @code{AC_PATH_XTRA} is called.
3117
3118 @item AM_CONDITIONAL
3119 This introduces an Automake conditional (@pxref{Conditionals}).
3120
3121 @item AM_COND_IF
3122 This macro allows @code{automake} to detect subsequent access within
3123 @file{configure.ac} to a conditional previously introduced with
3124 @code{AM_CONDITIONAL}, thus enabling conditional @code{AC_CONFIG_FILES}
3125 (@pxref{Usage of Conditionals}).
3126
3127 @item AM_GNU_GETTEXT
3128 This macro is required for packages that use GNU gettext
3129 (@pxref{gettext}).  It is distributed with gettext.  If Automake sees
3130 this macro it ensures that the package meets some of gettext's
3131 requirements.
3132
3133 @item AM_GNU_GETTEXT_INTL_SUBDIR
3134 This macro specifies that the @file{intl/} subdirectory is to be built,
3135 even if the @code{AM_GNU_GETTEXT} macro was invoked with a first argument
3136 of @samp{external}.
3137
3138 @item AM_MAINTAINER_MODE(@ovar{default-mode})
3139 @opindex --enable-maintainer-mode
3140 @opindex --disable-maintainer-mode
3141 This macro adds an @option{--enable-maintainer-mode} option to
3142 @command{configure}.  If this is used, @command{automake} will cause
3143 ``maintainer-only'' rules to be turned off by default in the
3144 generated @file{Makefile.in}s, unless @var{default-mode} is
3145 @samp{enable}.  This macro defines the @code{MAINTAINER_MODE}
3146 conditional, which you can use in your own @file{Makefile.am}.
3147 @xref{maintainer-mode}.
3148
3149 @item AM_SUBST_NOTMAKE(@var{var})
3150 Prevent Automake from defining a variable @var{var}, even if it is
3151 substituted by @command{config.status}.  Normally, Automake defines a
3152 @command{make} variable for each @command{configure} substitution,
3153 i.e., for each @code{AC_SUBST([@var{var}])}.  This macro prevents that
3154 definition from Automake.  If @code{AC_SUBST} has not been called
3155 for this variable, then @code{AM_SUBST_NOTMAKE} has no effects.
3156 Preventing variable definitions may be useful for substitution of
3157 multi-line values, where @code{@var{var} = @@@var{value}@@} might yield
3158 unintended results.
3159
3160 @item m4_include
3161 Files included by @file{configure.ac} using this macro will be
3162 detected by Automake and automatically distributed.  They will also
3163 appear as dependencies in @file{Makefile} rules.
3164
3165 @code{m4_include} is seldom used by @file{configure.ac} authors, but
3166 can appear in @file{aclocal.m4} when @command{aclocal} detects that
3167 some required macros come from files local to your package (as opposed to
3168 macros installed in a system-wide directory, @pxref{aclocal Invocation}).
3169
3170 @end ftable
3171
3172 @node aclocal Invocation
3173 @section Auto-generating aclocal.m4
3174 @c This node used to be named "Invoking automake".  This @anchor
3175 @c allows old links to still work.
3176 @anchor{Invoking aclocal}
3177
3178 @cindex Invocation of @command{aclocal}
3179 @cindex @command{aclocal}, Invocation
3180 @cindex Invoking @command{aclocal}
3181 @cindex @command{aclocal}, Invoking
3182
3183 Automake includes a number of Autoconf macros that can be used in
3184 your package (@pxref{Macros}); some of them are actually required by
3185 Automake in certain situations.  These macros must be defined in your
3186 @file{aclocal.m4}; otherwise they will not be seen by
3187 @command{autoconf}.
3188
3189 The @command{aclocal} program will automatically generate
3190 @file{aclocal.m4} files based on the contents of @file{configure.ac}.
3191 This provides a convenient way to get Automake-provided macros,
3192 without having to search around.  The @command{aclocal} mechanism
3193 allows other packages to supply their own macros (@pxref{Extending
3194 aclocal}).  You can also use it to maintain your own set of custom
3195 macros (@pxref{Local Macros}).
3196
3197 At startup, @command{aclocal} scans all the @file{.m4} files it can
3198 find, looking for macro definitions (@pxref{Macro Search Path}).  Then
3199 it scans @file{configure.ac}.  Any mention of one of the macros found
3200 in the first step causes that macro, and any macros it in turn
3201 requires, to be put into @file{aclocal.m4}.
3202
3203 @emph{Putting} the file that contains the macro definition into
3204 @file{aclocal.m4} is usually done by copying the entire text of this
3205 file, including unused macro definitions as well as both @samp{#} and
3206 @samp{dnl} comments.  If you want to make a comment that will be
3207 completely ignored by @command{aclocal}, use @samp{##} as the comment
3208 leader.
3209
3210 When a file selected by @command{aclocal} is located in a subdirectory
3211 specified as a relative search path with @command{aclocal}'s @option{-I}
3212 argument, @command{aclocal} assumes the file belongs to the package
3213 and uses @code{m4_include} instead of copying it into
3214 @file{aclocal.m4}.  This makes the package smaller, eases dependency
3215 tracking, and cause the file to be distributed automatically.
3216 (@xref{Local Macros}, for an example.)  Any macro that is found in a
3217 system-wide directory, or via an absolute search path will be copied.
3218 So use @samp{-I `pwd`/reldir} instead of @samp{-I reldir} whenever
3219 some relative directory should be considered outside the package.
3220
3221 The contents of @file{acinclude.m4}, if this file exists, are also
3222 automatically included in @file{aclocal.m4}.  We recommend against
3223 using @file{acinclude.m4} in new packages (@pxref{Local Macros}).
3224
3225 @vindex AUTOM4TE
3226 @cindex autom4te
3227 While computing @file{aclocal.m4}, @command{aclocal} runs
3228 @command{autom4te} (@pxref{Using autom4te, , Using @command{Autom4te},
3229 autoconf, The Autoconf Manual}) in order to trace the macros that are
3230 really used, and omit from @file{aclocal.m4} all macros that are
3231 mentioned but otherwise unexpanded (this can happen when a macro is
3232 called conditionally).  @command{autom4te} is expected to be in the
3233 @env{PATH}, just as @command{autoconf}.  Its location can be
3234 overridden using the @env{AUTOM4TE} environment variable.
3235
3236 @menu
3237 * aclocal Options::             Options supported by aclocal
3238 * Macro Search Path::           How aclocal finds .m4 files
3239 * Extending aclocal::           Writing your own aclocal macros
3240 * Local Macros::                Organizing local macros
3241 * Serials::                     Serial lines in Autoconf macros
3242 * Future of aclocal::           aclocal's scheduled death
3243 @end menu
3244
3245 @node aclocal Options
3246 @subsection aclocal Options
3247
3248 @cindex @command{aclocal}, Options
3249 @cindex Options, @command{aclocal}
3250
3251 @command{aclocal} accepts the following options:
3252
3253 @table @code
3254 @item --automake-acdir=@var{dir}
3255 @opindex --automake-acdir
3256 Look for the automake-provided macro files in @var{dir} instead of
3257 in the installation directory.  This is typically used for debugging.
3258
3259 @item --system-acdir=@var{dir}
3260 @opindex --system-acdir
3261 Look for the system-wide third-party macro files (and the special
3262 @file{dirlist} file) in @var{dir} instead of in the installation
3263 directory.  This is typically used for debugging.
3264
3265 @item --diff[=@var{command}]
3266 @opindex --diff
3267 Run @var{command} on M4 file that would be installed or overwritten
3268 by @option{--install}.  The default @var{command} is @samp{diff -u}.
3269 This option implies @option{--install} and @option{--dry-run}.
3270
3271 @item --dry-run
3272 @opindex --dry-run
3273 Do not actually overwrite (or create) @file{aclocal.m4} and M4
3274 files installed by @option{--install}.
3275
3276 @item --help
3277 @opindex --help
3278 Print a summary of the command line options and exit.
3279
3280 @item -I @var{dir}
3281 @opindex -I
3282 Add the directory @var{dir} to the list of directories searched for
3283 @file{.m4} files.
3284
3285 @item --install
3286 @opindex --install
3287 Install system-wide third-party macros into the first directory
3288 specified with @samp{-I @var{dir}} instead of copying them in the
3289 output file.
3290 @c The following semantics is checked by `aclocal-install-absdir.test'.
3291 Note that this will happen also if @var{dir} is an absolute path.
3292
3293 @cindex serial number and @option{--install}
3294 When this option is used, and only when this option is used,
3295 @command{aclocal} will also honor @samp{#serial @var{number}} lines
3296 that appear in macros: an M4 file is ignored if there exists another
3297 M4 file with the same basename and a greater serial number in the
3298 search path (@pxref{Serials}).
3299
3300 @item --force
3301 @opindex --force
3302 Always overwrite the output file.  The default is to overwrite the output
3303 file only when really needed, i.e., when its contents changes or if one
3304 of its dependencies is younger.
3305
3306 This option forces the update of @file{aclocal.m4} (or the file
3307 specified with @file{--output} below) and only this file, it has
3308 absolutely no influence on files that may need to be installed by
3309 @option{--install}.
3310
3311 @item --output=@var{file}
3312 @opindex --output
3313 Cause the output to be put into @var{file} instead of @file{aclocal.m4}.
3314
3315 @item --print-ac-dir
3316 @opindex --print-ac-dir
3317 Prints the name of the directory that @command{aclocal} will search to
3318 find third-party @file{.m4} files.  When this option is given, normal
3319 processing is suppressed.  This option was used @emph{in the past} by
3320 third-party packages to determine where to install @file{.m4} macro
3321 files, but @emph{this usage is today discouraged}, since it causes
3322 @samp{$(prefix)} not to be thoroughly honoured (which violates the
3323 GNU Coding Standards), and a similar semantics can be better obtained
3324 with the @env{ACLOCAL_PATH} environment variable; @pxref{Extending aclocal}.
3325
3326 @item --verbose
3327 @opindex --verbose
3328 Print the names of the files it examines.
3329
3330 @item --version
3331 @opindex --version
3332 Print the version number of Automake and exit.
3333
3334 @item -W CATEGORY
3335 @item --warnings=@var{category}
3336 @opindex -W
3337 @opindex --warnings
3338 Output warnings falling in @var{category}.  @var{category} can be
3339 one of:
3340 @table @code
3341 @item syntax
3342 dubious syntactic constructs, underquoted macros, unused macros, etc.
3343 @item unsupported
3344 unknown macros
3345 @item all
3346 all the warnings, this is the default
3347 @item none
3348 turn off all the warnings
3349 @item error
3350 treat warnings as errors
3351 @end table
3352
3353 All warnings are output by default.
3354
3355 @vindex WARNINGS
3356 The environment variable @env{WARNINGS} is honored in the same
3357 way as it is for @command{automake} (@pxref{automake Invocation}).
3358
3359 @end table
3360
3361 @node Macro Search Path
3362 @subsection Macro Search Path
3363
3364 @cindex Macro search path
3365 @cindex @command{aclocal} search path
3366
3367 By default, @command{aclocal} searches for @file{.m4} files in the following
3368 directories, in this order:
3369
3370 @table @code
3371 @item @var{acdir-APIVERSION}
3372 This is where the @file{.m4} macros distributed with Automake itself
3373 are stored.  @var{APIVERSION} depends on the Automake release used;
3374 for example, for Automake 1.11.x, @var{APIVERSION} = @code{1.11}.
3375
3376 @item @var{acdir}
3377 This directory is intended for third party @file{.m4} files, and is
3378 configured when @command{automake} itself is built.  This is
3379 @file{@@datadir@@/aclocal/}, which typically
3380 expands to @file{$@{prefix@}/share/aclocal/}.  To find the compiled-in
3381 value of @var{acdir}, use the @option{--print-ac-dir} option
3382 (@pxref{aclocal Options}).
3383 @end table
3384
3385 As an example, suppose that @command{automake-1.11.2} was configured with
3386 @option{--prefix=@-/usr/local}.  Then, the search path would be:
3387
3388 @enumerate
3389 @item @file{/usr/local/share/aclocal-1.11.2/}
3390 @item @file{/usr/local/share/aclocal/}
3391 @end enumerate
3392
3393 The paths for the @var{acdir} and @var{acdir-APIVERSION} directories can
3394 be changed respectively through aclocal options @option{--system-acdir}
3395 and @option{--automake-acdir} (@pxref{aclocal Options}).  Note however
3396 that these options are only intended for use by the internal Automake
3397 test suite, or for debugging under highly unusual situations; they are
3398 not ordinarily needed by end-users.
3399
3400 As explained in (@pxref{aclocal Options}), there are several options that
3401 can be used to change or extend this search path.
3402
3403 @subsubheading Modifying the Macro Search Path: @samp{-I @var{dir}}
3404
3405 Any extra directories specified using @option{-I} options
3406 (@pxref{aclocal Options}) are @emph{prepended} to this search list.  Thus,
3407 @samp{aclocal -I /foo -I /bar} results in the following search path:
3408
3409 @enumerate
3410 @item @file{/foo}
3411 @item @file{/bar}
3412 @item @var{acdir}-@var{APIVERSION}
3413 @item @var{acdir}
3414 @end enumerate
3415
3416 @subsubheading Modifying the Macro Search Path: @file{dirlist}
3417 @cindex @file{dirlist}
3418
3419 There is a third mechanism for customizing the search path.  If a
3420 @file{dirlist} file exists in @var{acdir}, then that file is assumed to
3421 contain a list of directory patterns, one per line.  @command{aclocal}
3422 expands these patterns to directory names, and adds them to the search
3423 list @emph{after} all other directories.  @file{dirlist} entries may
3424 use shell wildcards such as @samp{*}, @samp{?}, or @code{[...]}.
3425
3426 For example, suppose
3427 @file{@var{acdir}/dirlist} contains the following:
3428
3429 @example
3430 /test1
3431 /test2
3432 /test3*
3433 @end example
3434
3435 @noindent
3436 and that @command{aclocal} was called with the @samp{-I /foo -I /bar} options.
3437 Then, the search path would be
3438
3439 @c @code looks better than @file here
3440 @enumerate
3441 @item @code{/foo}
3442 @item @code{/bar}
3443 @item @var{acdir}-@var{APIVERSION}
3444 @item @var{acdir}
3445 @item @code{/test1}
3446 @item @code{/test2}
3447 @end enumerate
3448
3449 @noindent
3450 and all directories with path names starting with @code{/test3}.
3451
3452 If the @option{--system-acdir=@var{dir}} option is used, then
3453 @command{aclocal} will search for the @file{dirlist} file in
3454 @var{dir}; but remember the warnings  above against the use of
3455 @option{--system-acdir}.
3456
3457 @file{dirlist} is useful in the following situation: suppose that
3458 @command{automake} version @code{1.11.2} is installed with
3459 @samp{--prefix=/usr} by the system vendor.  Thus, the default search
3460 directories are
3461
3462 @c @code looks better than @file here
3463 @enumerate
3464 @item @code{/usr/share/aclocal-1.11/}
3465 @item @code{/usr/share/aclocal/}
3466 @end enumerate
3467
3468 However, suppose further that many packages have been manually
3469 installed on the system, with $prefix=/usr/local, as is typical.  In
3470 that case, many of these ``extra'' @file{.m4} files are in
3471 @file{/usr/local/share/aclocal}.  The only way to force
3472 @file{/usr/bin/aclocal} to find these ``extra'' @file{.m4} files is to
3473 always call @samp{aclocal -I /usr/local/share/aclocal}.  This is
3474 inconvenient.  With @file{dirlist}, one may create a file
3475 @file{/usr/share/aclocal/dirlist} containing only the single line
3476
3477 @example
3478 /usr/local/share/aclocal
3479 @end example
3480
3481 Now, the ``default'' search path on the affected system is
3482
3483 @c @code looks better than @file here
3484 @enumerate
3485 @item @code{/usr/share/aclocal-1.11/}
3486 @item @code{/usr/share/aclocal/}
3487 @item @code{/usr/local/share/aclocal/}
3488 @end enumerate
3489
3490 without the need for @option{-I} options; @option{-I} options can be reserved
3491 for project-specific needs (@file{my-source-dir/m4/}), rather than
3492 using it to work around local system-dependent tool installation
3493 directories.
3494
3495 Similarly, @file{dirlist} can be handy if you have installed a local
3496 copy of Automake in your account and want @command{aclocal} to look for
3497 macros installed at other places on the system.
3498
3499 @anchor{ACLOCAL_PATH}
3500 @subsubheading Modifying the Macro Search Path: @file{ACLOCAL_PATH}
3501 @cindex @env{ACLOCAL_PATH}
3502
3503 The fourth and last mechanism to customize the macro search path is
3504 also the simplest.  Any directory included in the colon-separated
3505 environment variable @env{ACLOCAL_PATH} is added to the search path
3506 @c Keep in sync with aclocal-path-precedence.test.
3507 and takes precedence over system directories (including those found via
3508 @file{dirlist}), with the exception of the versioned directory
3509 @var{acdir-APIVERSION} (@pxref{Macro Search Path}).  However, directories
3510 passed via @option{-I} will take precedence over directories in
3511 @env{ACLOCAL_PATH}.
3512
3513 @c Keep in sync with aclocal-path-installed.test.
3514 Also note that, if the @option{--install} option is used, any @file{.m4}
3515 file containing a required macro that is found in a directory listed in
3516 @env{ACLOCAL_PATH} will be installed locally.
3517 @c Keep in sync with aclocal-path-installed-serial.test.
3518 In this case, serial numbers in @file{.m4} are honoured too,
3519 @pxref{Serials}.
3520
3521 Conversely to @file{dirlist}, @env{ACLOCAL_PATH} is useful if you are
3522 using a global copy of Automake and want @command{aclocal} to look for
3523 macros somewhere under your home directory.
3524
3525 @subsubheading Planned future incompatibilities
3526
3527 The order in which the directories in the macro search path are currently
3528 looked up is confusing and/or suboptimal in various aspects, and is
3529 probably going to be changed in the future Automake release.  In
3530 particular, directories in @env{ACLOCAL_PATH} and @file{@var{acdir}}
3531 might end up taking precedence over @file{@var{acdir-APIVERSION}}, and
3532 directories in @file{@var{acdir}/dirlist} might end up taking precedence
3533 over @file{@var{acdir}}.  @emph{This is a possible future incompatibility!}
3534
3535 @node Extending aclocal
3536 @subsection Writing your own aclocal macros
3537
3538 @cindex @command{aclocal}, extending
3539 @cindex Extending @command{aclocal}
3540
3541 The @command{aclocal} program doesn't have any built-in knowledge of any
3542 macros, so it is easy to extend it with your own macros.
3543
3544 This can be used by libraries that want to supply their own Autoconf
3545 macros for use by other programs.  For instance, the @command{gettext}
3546 library supplies a macro @code{AM_GNU_GETTEXT} that should be used by
3547 any package using @command{gettext}.  When the library is installed, it
3548 installs this macro so that @command{aclocal} will find it.
3549
3550 A macro file's name should end in @file{.m4}.  Such files should be
3551 installed in @file{$(datadir)/aclocal}.  This is as simple as writing:
3552
3553 @c Keep in sync with primary-prefix-couples-documented-valid.test.
3554 @example
3555 aclocaldir = $(datadir)/aclocal
3556 aclocal_DATA = mymacro.m4 myothermacro.m4
3557 @end example
3558
3559 @noindent
3560 Please do use @file{$(datadir)/aclocal}, and not something based on
3561 the result of @samp{aclocal --print-ac-dir} (@pxref{Hard-Coded Install
3562 Paths}, for arguments).  It might also be helpful to suggest to
3563 the user to add the @file{$(datadir)/aclocal} directory to his
3564 @env{ACLOCAL_PATH} variable (@pxref{ACLOCAL_PATH}) so that
3565 @command{aclocal} will find the @file{.m4} files installed by your
3566 package automatically.
3567
3568 A file of macros should be a series of properly quoted
3569 @code{AC_DEFUN}'s (@pxref{Macro Definitions, , , autoconf, The
3570 Autoconf Manual}).  The @command{aclocal} programs also understands
3571 @code{AC_REQUIRE} (@pxref{Prerequisite Macros, , , autoconf, The
3572 Autoconf Manual}), so it is safe to put each macro in a separate file.
3573 Each file should have no side effects but macro definitions.
3574 Especially, any call to @code{AC_PREREQ} should be done inside the
3575 defined macro, not at the beginning of the file.
3576
3577 @cindex underquoted @code{AC_DEFUN}
3578 @acindex AC_DEFUN
3579 @acindex AC_PREREQ
3580
3581 Starting with Automake 1.8, @command{aclocal} will warn about all
3582 underquoted calls to @code{AC_DEFUN}.  We realize this will annoy a
3583 lot of people, because @command{aclocal} was not so strict in the past
3584 and many third party macros are underquoted; and we have to apologize
3585 for this temporary inconvenience.  The reason we have to be stricter
3586 is that a future implementation of @command{aclocal} (@pxref{Future of
3587 aclocal}) will have to temporarily include all these third party
3588 @file{.m4} files, maybe several times, including even files that are
3589 not actually needed.  Doing so should alleviate many problems of the
3590 current implementation, however it requires a stricter style from the
3591 macro authors.  Hopefully it is easy to revise the existing macros.
3592 For instance,
3593
3594 @example
3595 # bad style
3596 AC_PREREQ(2.57)
3597 AC_DEFUN(AX_FOOBAR,
3598 [AC_REQUIRE([AX_SOMETHING])dnl
3599 AX_FOO
3600 AX_BAR
3601 ])
3602 @end example
3603
3604 @noindent
3605 should be rewritten as
3606
3607 @example
3608 AC_DEFUN([AX_FOOBAR],
3609 [AC_PREREQ([2.57])dnl
3610 AC_REQUIRE([AX_SOMETHING])dnl
3611 AX_FOO
3612 AX_BAR
3613 ])
3614 @end example
3615
3616 Wrapping the @code{AC_PREREQ} call inside the macro ensures that
3617 Autoconf 2.57 will not be required if @code{AX_FOOBAR} is not actually
3618 used.  Most importantly, quoting the first argument of @code{AC_DEFUN}
3619 allows the macro to be redefined or included twice (otherwise this
3620 first argument would be expanded during the second definition).  For
3621 consistency we like to quote even arguments such as @code{2.57} that
3622 do not require it.
3623
3624 If you have been directed here by the @command{aclocal} diagnostic but
3625 are not the maintainer of the implicated macro, you will want to
3626 contact the maintainer of that macro.  Please make sure you have the
3627 latest version of the macro and that the problem hasn't already been
3628 reported before doing so: people tend to work faster when they aren't
3629 flooded by mails.
3630
3631 Another situation where @command{aclocal} is commonly used is to
3632 manage macros that are used locally by the package, @ref{Local
3633 Macros}.
3634
3635 @node Local Macros
3636 @subsection Handling Local Macros
3637
3638 Feature tests offered by Autoconf do not cover all needs.  People
3639 often have to supplement existing tests with their own macros, or
3640 with third-party macros.
3641
3642 There are two ways to organize custom macros in a package.
3643
3644 The first possibility (the historical practice) is to list all your
3645 macros in @file{acinclude.m4}.  This file will be included in
3646 @file{aclocal.m4} when you run @command{aclocal}, and its macro(s) will
3647 henceforth be visible to @command{autoconf}.  However if it contains
3648 numerous macros, it will rapidly become difficult to maintain, and it
3649 will be almost impossible to share macros between packages.
3650
3651 @vindex ACLOCAL_AMFLAGS
3652 The second possibility, which we do recommend, is to write each macro
3653 in its own file and gather all these files in a directory.  This
3654 directory is usually called @file{m4/}.  To build @file{aclocal.m4},
3655 one should therefore instruct @command{aclocal} to scan @file{m4/}.
3656 From the command line, this is done with @samp{aclocal -I m4}.  The
3657 top-level @file{Makefile.am} should also be updated to define
3658
3659 @example
3660 ACLOCAL_AMFLAGS = -I m4
3661 @end example
3662
3663 @code{ACLOCAL_AMFLAGS} contains options to pass to @command{aclocal}
3664 when @file{aclocal.m4} is to be rebuilt by @command{make}.  This line is
3665 also used by @command{autoreconf} (@pxref{autoreconf Invocation, ,
3666 Using @command{autoreconf} to Update @file{configure} Scripts,
3667 autoconf, The Autoconf Manual}) to run @command{aclocal} with suitable
3668 options, or by @command{autopoint} (@pxref{autopoint Invocation, ,
3669 Invoking the @command{autopoint} Program, gettext, GNU gettext tools})
3670 and @command{gettextize} (@pxref{gettextize Invocation, , Invoking the
3671 @command{gettextize} Program, gettext, GNU gettext tools}) to locate
3672 the place where Gettext's macros should be installed.  So even if you
3673 do not really care about the rebuild rules, you should define
3674 @code{ACLOCAL_AMFLAGS}.
3675
3676 When @samp{aclocal -I m4} is run, it will build an @file{aclocal.m4}
3677 that @code{m4_include}s any file from @file{m4/} that defines a
3678 required macro.  Macros not found locally will still be searched in
3679 system-wide directories, as explained in @ref{Macro Search Path}.
3680
3681 Custom macros should be distributed for the same reason that
3682 @file{configure.ac} is: so that other people have all the sources of
3683 your package if they want to work on it.  Actually, this distribution
3684 happens automatically because all @code{m4_include}d files are
3685 distributed.
3686
3687 However there is no consensus on the distribution of third-party
3688 macros that your package may use.  Many libraries install their own
3689 macro in the system-wide @command{aclocal} directory (@pxref{Extending
3690 aclocal}).  For instance, Guile ships with a file called
3691 @file{guile.m4} that contains the macro @code{GUILE_FLAGS} that can
3692 be used to define setup compiler and linker flags appropriate for
3693 using Guile.  Using @code{GUILE_FLAGS} in @file{configure.ac} will
3694 cause @command{aclocal} to copy @file{guile.m4} into
3695 @file{aclocal.m4}, but as @file{guile.m4} is not part of the project,
3696 it will not be distributed.  Technically, that means a user who
3697 needs to rebuild @file{aclocal.m4} will have to install Guile first.
3698 This is probably OK, if Guile already is a requirement to build the
3699 package.  However, if Guile is only an optional feature, or if your
3700 package might run on architectures where Guile cannot be installed,
3701 this requirement will hinder development.  An easy solution is to copy
3702 such third-party macros in your local @file{m4/} directory so they get
3703 distributed.
3704
3705 Since Automake 1.10, @command{aclocal} offers an option to copy these
3706 system-wide third-party macros in your local macro directory, solving
3707 the above problem.  Simply use:
3708
3709 @example
3710 ACLOCAL_AMFLAGS = -I m4 --install
3711 @end example
3712
3713 @noindent
3714 With this setup, system-wide macros will be copied to @file{m4/}
3715 the first time you run @command{autoreconf}.  Then the locally
3716 installed macros will have precedence over the system-wide installed
3717 macros each time @command{aclocal} is run again.
3718
3719 One reason why you should keep @option{--install} in the flags even
3720 after the first run is that when you later edit @file{configure.ac}
3721 and depend on a new macro, this macro will be installed in your
3722 @file{m4/} automatically.  Another one is that serial numbers
3723 (@pxref{Serials}) can be used to update the macros in your source tree
3724 automatically when new system-wide versions are installed.  A serial
3725 number should be a single line of the form
3726
3727 @example
3728 #serial @var{nnn}
3729 @end example
3730
3731 @noindent
3732 where @var{nnn} contains only digits and dots.  It should appear in
3733 the M4 file before any macro definition.  It is a good practice to
3734 maintain a serial number for each macro you distribute, even if you do
3735 not use the @option{--install} option of @command{aclocal}: this allows
3736 other people to use it.
3737
3738
3739 @node Serials
3740 @subsection Serial Numbers
3741 @cindex serial numbers in macros
3742 @cindex macro serial numbers
3743 @cindex @code{#serial} syntax
3744 @cindex @command{aclocal} and serial numbers
3745
3746 Because third-party macros defined in @file{*.m4} files are naturally
3747 shared between multiple projects, some people like to version them.
3748 This makes it easier to tell which of two M4 files is newer.  Since at
3749 least 1996, the tradition is to use a @samp{#serial} line for this.
3750
3751 A serial number should be a single line of the form
3752
3753 @example
3754 # serial @var{version}
3755 @end example
3756
3757 @noindent
3758 where @var{version} is a version number containing only digits and
3759 dots.  Usually people use a single integer, and they increment it each
3760 time they change the macro (hence the name of ``serial'').  Such a
3761 line should appear in the M4 file before any macro definition.
3762
3763 The @samp{#} must be the first character on the line,
3764 and it is OK to have extra words after the version, as in
3765
3766 @example
3767 #serial @var{version} @var{garbage}
3768 @end example
3769
3770 Normally these serial numbers are completely ignored by
3771 @command{aclocal} and @command{autoconf}, like any genuine comment.
3772 However when using @command{aclocal}'s @option{--install} feature, these
3773 serial numbers will modify the way @command{aclocal} selects the
3774 macros to install in the package: if two files with the same basename
3775 exist in your search path, and if at least one of them uses a
3776 @samp{#serial} line, @command{aclocal} will ignore the file that has
3777 the older @samp{#serial} line (or the file that has none).
3778
3779 Note that a serial number applies to a whole M4 file, not to any macro
3780 it contains.  A file can contains multiple macros, but only one
3781 serial.
3782
3783 Here is a use case that illustrates the use of @option{--install} and
3784 its interaction with serial numbers.  Let's assume we maintain a
3785 package called MyPackage, the @file{configure.ac} of which requires a
3786 third-party macro @code{AX_THIRD_PARTY} defined in
3787 @file{/usr/share/aclocal/thirdparty.m4} as follows:
3788
3789 @example
3790 # serial 1
3791 AC_DEFUN([AX_THIRD_PARTY], [...])
3792 @end example
3793
3794 MyPackage uses an @file{m4/} directory to store local macros as
3795 explained in @ref{Local Macros}, and has
3796
3797 @example
3798 ACLOCAL_AMFLAGS = -I m4 --install
3799 @end example
3800
3801 @noindent
3802 in its top-level @file{Makefile.am}.
3803
3804 Initially the @file{m4/} directory is empty.  The first time we run
3805 @command{autoreconf}, it will fetch the options to pass to
3806 @command{aclocal} in @file{Makefile.am}, and run @samp{aclocal -I m4
3807 --install}.  @command{aclocal} will notice that
3808
3809 @itemize @bullet
3810 @item
3811 @file{configure.ac} uses @code{AX_THIRD_PARTY}
3812 @item
3813 No local macros define @code{AX_THIRD_PARTY}
3814 @item
3815 @file{/usr/share/aclocal/thirdparty.m4} defines @code{AX_THIRD_PARTY}
3816 with serial 1.
3817 @end itemize
3818
3819 @noindent
3820 Because @file{/usr/share/aclocal/thirdparty.m4} is a system-wide macro
3821 and @command{aclocal} was given the @option{--install} option, it will
3822 copy this file in @file{m4/thirdparty.m4}, and output an
3823 @file{aclocal.m4} that contains @samp{m4_include([m4/thirdparty.m4])}.
3824
3825 The next time @samp{aclocal -I m4 --install} is run (either via
3826 @command{autoreconf}, by hand, or from the @file{Makefile} rebuild
3827 rules) something different happens.  @command{aclocal} notices that
3828
3829 @itemize @bullet
3830 @item
3831 @file{configure.ac} uses @code{AX_THIRD_PARTY}
3832 @item
3833 @file{m4/thirdparty.m4} defines @code{AX_THIRD_PARTY}
3834 with serial 1.
3835 @item
3836 @file{/usr/share/aclocal/thirdparty.m4} defines @code{AX_THIRD_PARTY}
3837 with serial 1.
3838 @end itemize
3839
3840 @noindent
3841 Because both files have the same serial number, @command{aclocal} uses
3842 the first it found in its search path order (@pxref{Macro Search
3843 Path}).  @command{aclocal} therefore ignores
3844 @file{/usr/share/aclocal/thirdparty.m4} and outputs an
3845 @file{aclocal.m4} that contains @samp{m4_include([m4/thirdparty.m4])}.
3846
3847 Local directories specified with @option{-I} are always searched before
3848 system-wide directories, so a local file will always be preferred to
3849 the system-wide file in case of equal serial numbers.
3850
3851 Now suppose the system-wide third-party macro is changed.  This can
3852 happen if the package installing this macro is updated.  Let's suppose
3853 the new macro has serial number 2.  The next time @samp{aclocal -I m4
3854 --install} is run the situation is the following:
3855
3856 @itemize @bullet
3857 @item
3858 @file{configure.ac} uses @code{AX_THIRD_PARTY}
3859 @item
3860 @file{m4/thirdparty.m4} defines @code{AX_THIRD_PARTY}
3861 with serial 1.
3862 @item
3863 @file{/usr/share/aclocal/thirdparty.m4} defines @code{AX_THIRD_PARTY}
3864 with serial 2.
3865 @end itemize
3866
3867 @noindent
3868 When @command{aclocal} sees a greater serial number, it immediately
3869 forgets anything it knows from files that have the same basename and a
3870 smaller serial number.  So after it has found
3871 @file{/usr/share/aclocal/thirdparty.m4} with serial 2,
3872 @command{aclocal} will proceed as if it had never seen
3873 @file{m4/thirdparty.m4}.  This brings us back to a situation similar
3874 to that at the beginning of our example, where no local file defined
3875 the macro.  @command{aclocal} will install the new version of the
3876 macro in @file{m4/thirdparty.m4}, in this case overriding the old
3877 version.  MyPackage just had its macro updated as a side effect of
3878 running @command{aclocal}.
3879
3880 If you are leery of letting @command{aclocal} update your local macro,
3881 you can run @samp{aclocal -I m4 --diff} to review the changes
3882 @samp{aclocal -I m4 --install} would perform on these macros.
3883
3884 Finally, note that the @option{--force} option of @command{aclocal} has
3885 absolutely no effect on the files installed by @option{--install}.  For
3886 instance, if you have modified your local macros, do not expect
3887 @option{--install --force} to replace the local macros by their
3888 system-wide versions.  If you want to do so, simply erase the local
3889 macros you want to revert, and run @samp{aclocal -I m4 --install}.
3890
3891
3892 @node Future of aclocal
3893 @subsection The Future of @command{aclocal}
3894 @cindex @command{aclocal}'s scheduled death
3895
3896 @command{aclocal} is expected to disappear.  This feature really
3897 should not be offered by Automake.  Automake should focus on
3898 generating @file{Makefile}s; dealing with M4 macros really is
3899 Autoconf's job.  The fact that some people install Automake just to use
3900 @command{aclocal}, but do not use @command{automake} otherwise is an
3901 indication of how that feature is misplaced.
3902
3903 The new implementation will probably be done slightly differently.
3904 For instance, it could enforce the @file{m4/}-style layout discussed in
3905 @ref{Local Macros}.
3906
3907 We have no idea when and how this will happen.  This has been
3908 discussed several times in the past, but someone still has to commit
3909 to that non-trivial task.
3910
3911 From the user point of view, @command{aclocal}'s removal might turn
3912 out to be painful.  There is a simple precaution that you may take to
3913 make that switch more seamless: never call @command{aclocal} yourself.
3914 Keep this guy under the exclusive control of @command{autoreconf} and
3915 Automake's rebuild rules.  Hopefully you won't need to worry about
3916 things breaking, when @command{aclocal} disappears, because everything
3917 will have been taken care of.  If otherwise you used to call
3918 @command{aclocal} directly yourself or from some script, you will
3919 quickly notice the change.
3920
3921 Many packages come with a script called @file{bootstrap.sh} or
3922 @file{autogen.sh}, that will just call @command{aclocal},
3923 @command{libtoolize}, @command{gettextize} or @command{autopoint},
3924 @command{autoconf}, @command{autoheader}, and @command{automake} in
3925 the right order.  Actually this is precisely what @command{autoreconf}
3926 can do for you.  If your package has such a @file{bootstrap.sh} or
3927 @file{autogen.sh} script, consider using @command{autoreconf}.  That
3928 should simplify its logic a lot (less things to maintain, yum!), it's
3929 even likely you will not need the script anymore, and more to the point
3930 you will not call @command{aclocal} directly anymore.
3931
3932 For the time being, third-party packages should continue to install
3933 public macros into @file{/usr/share/aclocal/}.  If @command{aclocal}
3934 is replaced by another tool it might make sense to rename the
3935 directory, but supporting @file{/usr/share/aclocal/} for backward
3936 compatibility should be really easy provided all macros are properly
3937 written (@pxref{Extending aclocal}).
3938
3939
3940
3941 @node Macros
3942 @section Autoconf macros supplied with Automake
3943
3944 Automake ships with several Autoconf macros that you can use from your
3945 @file{configure.ac}.  When you use one of them it will be included by
3946 @command{aclocal} in @file{aclocal.m4}.
3947
3948 @menu
3949 * Public Macros::               Macros that you can use.
3950 * Obsolete Macros::             Macros that you should stop using.
3951 * Private Macros::              Macros that you should not use.
3952 @end menu
3953
3954 @c consider generating the following subsections automatically from m4 files.
3955
3956 @node Public Macros
3957 @subsection Public Macros
3958
3959 @table @code
3960
3961 @item AM_ENABLE_MULTILIB
3962 @acindex AM_ENABLE_MULTILIB
3963
3964 This is used when a ``multilib'' library is being built.  Please be
3965 aware that multilib support @emph{will be removed} from the Automake
3966 core in the next major release, and then @emph{this macro will go away
3967 as well} (even if a ``frozen'' version of will remain available in the
3968 @file{contrib/} directory of the Automake distribution).
3969
3970 The first optional argument is the name of the @file{Makefile} being
3971 generated; it defaults to @samp{Makefile}.  The second optional argument
3972 is used to find the top source directory; it defaults to the empty
3973 string (generally this should not be used unless you are familiar with
3974 the internals).  @xref{Multilibs}.
3975
3976 @item AM_INIT_AUTOMAKE([OPTIONS])
3977 @itemx AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
3978 @acindex AM_INIT_AUTOMAKE
3979 Runs many macros required for proper operation of the generated Makefiles.
3980
3981 @vindex AUTOMAKE_OPTIONS
3982 This macro has two forms, the first of which is preferred.
3983 In this form, @code{AM_INIT_AUTOMAKE} is called with a
3984 single argument: a space-separated list of Automake options that should
3985 be applied to every @file{Makefile.am} in the tree.  The effect is as if
3986 each option were listed in @code{AUTOMAKE_OPTIONS} (@pxref{Options}).
3987
3988 @acindex AC_INIT
3989 The second, deprecated, form of @code{AM_INIT_AUTOMAKE} has two required
3990 arguments: the package and the version number.  This form is
3991 obsolete because the @var{package} and @var{version} can be obtained
3992 from Autoconf's @code{AC_INIT} macro (which itself has an old and a new
3993 form).
3994
3995 If your @file{configure.ac} has:
3996
3997 @example
3998 AC_INIT([src/foo.c])
3999 AM_INIT_AUTOMAKE([mumble], [1.5])
4000 @end example
4001
4002 @noindent
4003 you can modernize it as follows:
4004
4005 @example
4006 AC_INIT([mumble], [1.5])
4007 AC_CONFIG_SRCDIR([src/foo.c])
4008 AM_INIT_AUTOMAKE
4009 @end example
4010
4011 Note that if you're upgrading your @file{configure.ac} from an earlier
4012 version of Automake, it is not always correct to simply move the
4013 package and version arguments from @code{AM_INIT_AUTOMAKE} directly to
4014 @code{AC_INIT}, as in the example above.  The first argument to
4015 @code{AC_INIT} should be the name of your package (e.g., @samp{GNU
4016 Automake}), not the tarball name (e.g., @samp{automake}) that you used
4017 to pass to @code{AM_INIT_AUTOMAKE}.  Autoconf tries to derive a
4018 tarball name from the package name, which should work for most but not
4019 all package names.  (If it doesn't work for yours, you can use the
4020 four-argument form of @code{AC_INIT} to provide the tarball name
4021 explicitly).
4022
4023 @cindex @code{PACKAGE}, prevent definition
4024 @cindex @code{VERSION}, prevent definition
4025 @opindex no-define
4026 By default this macro @code{AC_DEFINE}'s @code{PACKAGE} and
4027 @code{VERSION}.  This can be avoided by passing the @option{no-define}
4028 option, as in:
4029 @example
4030 AM_INIT_AUTOMAKE([gnits 1.5 no-define dist-bzip2])
4031 @end example
4032 or by passing a third non-empty argument to the obsolete form.
4033
4034 @item AM_PATH_LISPDIR
4035 @acindex AM_PATH_LISPDIR
4036 @vindex EMACS
4037 @vindex lispdir
4038 Searches for the program @command{emacs}, and, if found, sets the
4039 output variable @code{lispdir} to the full path to Emacs' site-lisp
4040 directory.
4041
4042 Note that this test assumes the @command{emacs} found to be a version
4043 that supports Emacs Lisp (such as GNU Emacs or XEmacs).  Other
4044 emacsen can cause this test to hang (some, like old versions of
4045 MicroEmacs, start up in interactive mode, requiring @kbd{C-x C-c} to
4046 exit, which is hardly obvious for a non-emacs user).  In most cases,
4047 however, you should be able to use @kbd{C-c} to kill the test.  In
4048 order to avoid problems, you can set @env{EMACS} to ``no'' in the
4049 environment, or use the @option{--with-lispdir} option to
4050 @command{configure} to explicitly set the correct path (if you're sure
4051 you have an @command{emacs} that supports Emacs Lisp).
4052
4053 @item AM_PROG_AR(@ovar{act-if-fail})
4054 @acindex AM_PROG_AR
4055 @vindex AR
4056 You must use this macro when you use the archiver in your project, if
4057 you want support for unusual archivers such as Microsoft @command{lib}.
4058 The content of the optional argument is executed if the archiver
4059 interface is not recognized; the default action is to abort configure
4060 with an error message.
4061
4062 @item AM_PROG_AS
4063 @acindex AM_PROG_AS
4064 @vindex CCAS
4065 @vindex CCASFLAGS
4066 Use this macro when you have assembly code in your project.  This will
4067 choose the assembler for you (by default the C compiler) and set
4068 @code{CCAS}, and will also set @code{CCASFLAGS} if required.
4069
4070 @item AM_PROG_CC_C_O
4071 @acindex AM_PROG_CC_C_O
4072 @acindex AC_PROG_CC_C_O
4073 This is like @code{AC_PROG_CC_C_O}, but it generates its results in
4074 the manner required by Automake.  You must use this instead of
4075 @code{AC_PROG_CC_C_O} when you need this functionality, that is, when
4076 using per-target flags or subdir-objects with C sources.
4077
4078 @item AM_PROG_LEX
4079 @acindex AM_PROG_LEX
4080 @acindex AC_PROG_LEX
4081 @cindex HP-UX 10, @command{lex} problems
4082 @cindex @command{lex} problems with HP-UX 10
4083 Like @code{AC_PROG_LEX} (@pxref{Particular Programs, , Particular
4084 Program Checks, autoconf, The Autoconf Manual}), but uses the
4085 @command{missing} script on systems that do not have @command{lex}.
4086 HP-UX 10 is one such system.
4087
4088 @item AM_PROG_GCJ
4089 @acindex AM_PROG_GCJ
4090 @vindex GCJ
4091 @vindex GCJFLAGS
4092 This macro finds the @command{gcj} program or causes an error.  It sets
4093 @code{GCJ} and @code{GCJFLAGS}.  @command{gcj} is the Java front-end to the
4094 GNU Compiler Collection.
4095
4096 @item AM_PROG_UPC([@var{compiler-search-list}])
4097 @acindex AM_PROG_UPC
4098 @vindex UPC
4099 Find a compiler for Unified Parallel C and define the @code{UPC}
4100 variable.  The default @var{compiler-search-list} is @samp{upcc upc}.
4101 This macro will abort @command{configure} if no Unified Parallel C
4102 compiler is found.
4103
4104 @item AM_SILENT_RULES
4105 @acindex AM_SILENT_RULES
4106 Enable the machinery for less verbose build output (@pxref{Options}).
4107
4108 @item AM_WITH_DMALLOC
4109 @acindex AM_WITH_DMALLOC
4110 @cindex @command{dmalloc}, support for
4111 @vindex WITH_DMALLOC
4112 @opindex --with-dmalloc
4113 Add support for the @uref{http://dmalloc.com/, Dmalloc package}.  If
4114 the user runs @command{configure} with @option{--with-dmalloc}, then
4115 define @code{WITH_DMALLOC} and add @option{-ldmalloc} to @code{LIBS}.
4116
4117 @end table
4118
4119
4120 @node Obsolete Macros
4121 @subsection Obsolete Macros
4122 @cindex obsolete macros
4123 @cindex autoupdate
4124
4125 Although using some of the following macros was required in past
4126 releases, you should not use any of them in new code.  Running
4127 @command{autoupdate} should adjust your @file{configure.ac}
4128 automatically (@pxref{autoupdate Invocation, , Using
4129 @command{autoupdate} to Modernize @file{configure.ac}, autoconf, The
4130 Autoconf Manual}).
4131
4132 @table @code
4133
4134 @item AM_CONFIG_HEADER
4135 @acindex AM_CONFIG_HEADER
4136 Automake will generate rules to automatically regenerate the config
4137 header.  This obsolete macro is a synonym of @code{AC_CONFIG_HEADERS}
4138 today (@pxref{Optional}).
4139
4140 @item AM_HEADER_TIOCGWINSZ_NEEDS_SYS_IOCTL
4141 @acindex AM_HEADER_TIOCGWINSZ_NEEDS_SYS_IOCTL
4142 If the use of @code{TIOCGWINSZ} requires @file{<sys/ioctl.h>}, then
4143 define @code{GWINSZ_IN_SYS_IOCTL}.  Otherwise @code{TIOCGWINSZ} can be
4144 found in @file{<termios.h>}.  This macro is obsolete, you should
4145 use Autoconf's @code{AC_HEADER_TIOCGWINSZ} instead.
4146
4147 @item AM_PROG_MKDIR_P
4148 @acindex AM_PROG_MKDIR_P
4149 @cindex @code{mkdir -p}, macro check
4150 @vindex MKDIR_P
4151 @vindex mkdir_p
4152
4153 From Automake 1.8 to 1.9.6 this macro used to define the output
4154 variable @code{mkdir_p} to one of @code{mkdir -p}, @code{install-sh
4155 -d}, or @code{mkinstalldirs}.
4156
4157 Nowadays Autoconf provides a similar functionality with
4158 @code{AC_PROG_MKDIR_P} (@pxref{Particular Programs, , Particular
4159 Program Checks, autoconf, The Autoconf Manual}), however this defines
4160 the output variable @code{MKDIR_P} instead.  Therefore
4161 @code{AM_PROG_MKDIR_P} has been rewritten as a thin wrapper around
4162 @code{AC_PROG_MKDIR_P} to define @code{mkdir_p} to the same value as
4163 @code{MKDIR_P} for backward compatibility.
4164
4165 If you are using Automake, there is normally no reason to call this
4166 macro, because @code{AM_INIT_AUTOMAKE} already does so.  However, make
4167 sure that the custom rules in your @file{Makefile}s use
4168 @code{$(MKDIR_P)} and not @code{$(mkdir_p)}.  Even if both variables
4169 still work, the latter should be considered obsolete.
4170
4171 If you are not using Automake, please call @code{AC_PROG_MKDIR_P}
4172 instead of @code{AM_PROG_MKDIR_P}.
4173
4174 @item AM_SYS_POSIX_TERMIOS
4175 @acindex AM_SYS_POSIX_TERMIOS
4176 @cindex POSIX termios headers
4177 @cindex termios POSIX headers
4178 Check to see if POSIX termios headers and functions are available on the
4179 system.  If so, set the shell variable @code{am_cv_sys_posix_termios} to
4180 @samp{yes}.  If not, set the variable to @samp{no}.  This macro is obsolete,
4181 you should use Autoconf's @code{AC_SYS_POSIX_TERMIOS} instead.
4182
4183 @end table
4184
4185
4186 @node Private Macros
4187 @subsection Private Macros
4188
4189 The following macros are private macros you should not call directly.
4190 They are called by the other public macros when appropriate.  Do not
4191 rely on them, as they might be changed in a future version.  Consider
4192 them as implementation details; or better, do not consider them at all:
4193 skip this section!
4194
4195 @ftable @code
4196 @item _AM_DEPENDENCIES
4197 @itemx AM_SET_DEPDIR
4198 @itemx AM_DEP_TRACK
4199 @itemx AM_OUTPUT_DEPENDENCY_COMMANDS
4200 These macros are used to implement Automake's automatic dependency
4201 tracking scheme.  They are called automatically by Automake when
4202 required, and there should be no need to invoke them manually.
4203
4204 @item AM_MAKE_INCLUDE
4205 This macro is used to discover how the user's @command{make} handles
4206 @code{include} statements.  This macro is automatically invoked when
4207 needed; there should be no need to invoke it manually.
4208
4209 @item AM_PROG_INSTALL_STRIP
4210 This is used to find a version of @code{install} that can be used to
4211 strip a program at installation time.  This macro is automatically
4212 included when required.
4213
4214 @item AM_SANITY_CHECK
4215 This checks to make sure that a file created in the build directory is
4216 newer than a file in the source directory.  This can fail on systems
4217 where the clock is set incorrectly.  This macro is automatically run
4218 from @code{AM_INIT_AUTOMAKE}.
4219
4220 @end ftable
4221
4222
4223 @node Directories
4224 @chapter Directories
4225
4226 For simple projects that distribute all files in the same directory
4227 it is enough to have a single @file{Makefile.am} that builds
4228 everything in place.
4229
4230 In larger projects it is common to organize files in different
4231 directories, in a tree.  For instance one directory per program, per
4232 library or per module.  The traditional approach is to build these
4233 subdirectories recursively: each directory contains its @file{Makefile}
4234 (generated from @file{Makefile.am}), and when @command{make} is run
4235 from the top level directory it enters each subdirectory in turn to
4236 build its contents.
4237
4238 @menu
4239 * Subdirectories::              Building subdirectories recursively
4240 * Conditional Subdirectories::  Conditionally not building directories
4241 * Alternative::                 Subdirectories without recursion
4242 * Subpackages::                 Nesting packages
4243 @end menu
4244
4245 @node Subdirectories
4246 @section Recursing subdirectories
4247
4248 @cindex @code{SUBDIRS}, explained
4249
4250 In packages with subdirectories, the top level @file{Makefile.am} must
4251 tell Automake which subdirectories are to be built.  This is done via
4252 the @code{SUBDIRS} variable.
4253 @vindex SUBDIRS
4254
4255 The @code{SUBDIRS} variable holds a list of subdirectories in which
4256 building of various sorts can occur.  The rules for many targets
4257 (e.g., @code{all}) in the generated @file{Makefile} will run commands
4258 both locally and in all specified subdirectories.  Note that the
4259 directories listed in @code{SUBDIRS} are not required to contain
4260 @file{Makefile.am}s; only @file{Makefile}s (after configuration).
4261 This allows inclusion of libraries from packages that do not use
4262 Automake (such as @code{gettext}; see also @ref{Third-Party
4263 Makefiles}).
4264
4265 In packages that use subdirectories, the top-level @file{Makefile.am} is
4266 often very short.  For instance, here is the @file{Makefile.am} from the
4267 GNU Hello distribution:
4268
4269 @example
4270 EXTRA_DIST = BUGS ChangeLog.O README-alpha
4271 SUBDIRS = doc intl po src tests
4272 @end example
4273
4274 When Automake invokes @command{make} in a subdirectory, it uses the value
4275 of the @code{MAKE} variable.  It passes the value of the variable
4276 @code{AM_MAKEFLAGS} to the @command{make} invocation; this can be set in
4277 @file{Makefile.am} if there are flags you must always pass to
4278 @command{make}.
4279 @vindex MAKE
4280 @vindex AM_MAKEFLAGS
4281
4282 The directories mentioned in @code{SUBDIRS} are usually direct
4283 children of the current directory, each subdirectory containing its
4284 own @file{Makefile.am} with a @code{SUBDIRS} pointing to deeper
4285 subdirectories.  Automake can be used to construct packages of
4286 arbitrary depth this way.
4287
4288 By default, Automake generates @file{Makefiles} that work depth-first
4289 in postfix order: the subdirectories are built before the current
4290 directory.  However, it is possible to change this ordering.  You can
4291 do this by putting @samp{.} into @code{SUBDIRS}.  For instance,
4292 putting @samp{.} first will cause a prefix ordering of
4293 directories.
4294
4295 Using
4296
4297 @example
4298 SUBDIRS = lib src . test
4299 @end example
4300
4301 @noindent
4302 will cause @file{lib/} to be built before @file{src/}, then the
4303 current directory will be built, finally the @file{test/} directory
4304 will be built.  It is customary to arrange test directories to be
4305 built after everything else since they are meant to test what has
4306 been constructed.
4307
4308 All @code{clean} rules are run in reverse order of build rules.
4309
4310 @node Conditional Subdirectories
4311 @section Conditional Subdirectories
4312 @cindex Subdirectories, building conditionally
4313 @cindex Conditional subdirectories
4314 @cindex @code{SUBDIRS}, conditional
4315 @cindex Conditional @code{SUBDIRS}
4316
4317 It is possible to define the @code{SUBDIRS} variable conditionally if,
4318 like in the case of GNU Inetutils, you want to only build a subset of
4319 the entire package.
4320
4321 To illustrate how this works, let's assume we have two directories
4322 @file{src/} and @file{opt/}.  @file{src/} should always be built, but we
4323 want to decide in @command{configure} whether @file{opt/} will be built
4324 or not.  (For this example we will assume that @file{opt/} should be
4325 built when the variable @samp{$want_opt} was set to @samp{yes}.)
4326
4327 Running @command{make} should thus recurse into @file{src/} always, and
4328 then maybe in @file{opt/}.
4329
4330 However @samp{make dist} should always recurse into both @file{src/}
4331 and @file{opt/}.  Because @file{opt/} should be distributed even if it
4332 is not needed in the current configuration.  This means
4333 @file{opt/Makefile} should be created @emph{unconditionally}.
4334
4335 There are two ways to setup a project like this.  You can use Automake
4336 conditionals (@pxref{Conditionals}) or use Autoconf @code{AC_SUBST}
4337 variables (@pxref{Setting Output Variables, , Setting Output
4338 Variables, autoconf, The Autoconf Manual}).  Using Automake
4339 conditionals is the preferred solution.  Before we illustrate these
4340 two possibilities, let's introduce @code{DIST_SUBDIRS}.
4341
4342 @menu
4343 * SUBDIRS vs DIST_SUBDIRS::     Two sets of directories
4344 * Subdirectories with AM_CONDITIONAL::  Specifying conditional subdirectories
4345 * Subdirectories with AC_SUBST::  Another way for conditional recursion
4346 * Unconfigured Subdirectories::  Not even creating a @samp{Makefile}
4347 @end menu
4348
4349 @node SUBDIRS vs DIST_SUBDIRS
4350 @subsection @code{SUBDIRS} vs.@: @code{DIST_SUBDIRS}
4351 @cindex @code{DIST_SUBDIRS}, explained
4352
4353 Automake considers two sets of directories, defined by the variables
4354 @code{SUBDIRS} and @code{DIST_SUBDIRS}.
4355
4356 @code{SUBDIRS} contains the subdirectories of the current directory
4357 that must be built (@pxref{Subdirectories}).  It must be defined
4358 manually; Automake will never guess a directory is to be built.  As we
4359 will see in the next two sections, it is possible to define it
4360 conditionally so that some directory will be omitted from the build.
4361
4362 @code{DIST_SUBDIRS} is used in rules that need to recurse in all
4363 directories, even those that have been conditionally left out of the
4364 build.  Recall our example where we may not want to build subdirectory
4365 @file{opt/}, but yet we want to distribute it?  This is where
4366 @code{DIST_SUBDIRS} comes into play: @samp{opt} may not appear in
4367 @code{SUBDIRS}, but it must appear in @code{DIST_SUBDIRS}.
4368
4369 Precisely, @code{DIST_SUBDIRS} is used by @samp{make
4370 maintainer-clean}, @samp{make distclean} and @samp{make dist}.  All
4371 other recursive rules use @code{SUBDIRS}.
4372
4373 If @code{SUBDIRS} is defined conditionally using Automake
4374 conditionals, Automake will define @code{DIST_SUBDIRS} automatically
4375 from the possible values of @code{SUBDIRS} in all conditions.
4376
4377 If @code{SUBDIRS} contains @code{AC_SUBST} variables,
4378 @code{DIST_SUBDIRS} will not be defined correctly because Automake
4379 does not know the possible values of these variables.  In this case
4380 @code{DIST_SUBDIRS} needs to be defined manually.
4381
4382 @node Subdirectories with AM_CONDITIONAL
4383 @subsection Subdirectories with @code{AM_CONDITIONAL}
4384 @cindex @code{SUBDIRS} and @code{AM_CONDITIONAL}
4385 @cindex @code{AM_CONDITIONAL} and @code{SUBDIRS}
4386
4387 @c Keep in sync with subcond2.test.
4388
4389 @file{configure} should output the @file{Makefile} for each directory
4390 and define a condition into which @file{opt/} should be built.
4391
4392 @example
4393 @dots{}
4394 AM_CONDITIONAL([COND_OPT], [test "$want_opt" = yes])
4395 AC_CONFIG_FILES([Makefile src/Makefile opt/Makefile])
4396 @dots{}
4397 @end example
4398
4399 Then @code{SUBDIRS} can be defined in the top-level @file{Makefile.am}
4400 as follows.
4401
4402 @example
4403 if COND_OPT
4404   MAYBE_OPT = opt
4405 endif
4406 SUBDIRS = src $(MAYBE_OPT)
4407 @end example
4408
4409 As you can see, running @command{make} will rightly recurse into
4410 @file{src/} and maybe @file{opt/}.
4411
4412 @vindex DIST_SUBDIRS
4413 As you can't see, running @samp{make dist} will recurse into both
4414 @file{src/} and @file{opt/} directories because @samp{make dist}, unlike
4415 @samp{make all}, doesn't use the @code{SUBDIRS} variable.  It uses the
4416 @code{DIST_SUBDIRS} variable.
4417
4418 In this case Automake will define @samp{DIST_SUBDIRS = src opt}
4419 automatically because it knows that @code{MAYBE_OPT} can contain
4420 @samp{opt} in some condition.
4421
4422 @node Subdirectories with AC_SUBST
4423 @subsection Subdirectories with @code{AC_SUBST}
4424 @cindex @code{SUBDIRS} and @code{AC_SUBST}
4425 @cindex @code{AC_SUBST} and @code{SUBDIRS}
4426
4427 @c Keep in sync with subcond3.test.
4428
4429 Another possibility is to define @code{MAYBE_OPT} from
4430 @file{./configure} using @code{AC_SUBST}:
4431
4432 @example
4433 @dots{}
4434 if test "$want_opt" = yes; then
4435   MAYBE_OPT=opt
4436 else
4437   MAYBE_OPT=
4438 fi
4439 AC_SUBST([MAYBE_OPT])
4440 AC_CONFIG_FILES([Makefile src/Makefile opt/Makefile])
4441 @dots{}
4442 @end example
4443
4444 In this case the top-level @file{Makefile.am} should look as follows.
4445
4446 @example
4447 SUBDIRS = src $(MAYBE_OPT)
4448 DIST_SUBDIRS = src opt
4449 @end example
4450
4451 The drawback is that since Automake cannot guess what the possible
4452 values of @code{MAYBE_OPT} are, it is necessary to define
4453 @code{DIST_SUBDIRS}.
4454
4455 @node Unconfigured Subdirectories
4456 @subsection Unconfigured Subdirectories
4457 @cindex Subdirectories, configured conditionally
4458
4459 The semantics of @code{DIST_SUBDIRS} are often misunderstood by some
4460 users that try to @emph{configure and build} subdirectories
4461 conditionally.  Here by configuring we mean creating the
4462 @file{Makefile} (it might also involve running a nested
4463 @command{configure} script: this is a costly operation that explains
4464 why people want to do it conditionally, but only the @file{Makefile}
4465 is relevant to the discussion).
4466
4467 The above examples all assume that every @file{Makefile} is created,
4468 even in directories that are not going to be built.  The simple reason
4469 is that we want @samp{make dist} to distribute even the directories
4470 that are not being built (e.g., platform-dependent code), hence
4471 @file{make dist} must recurse into the subdirectory, hence this
4472 directory must be configured and appear in @code{DIST_SUBDIRS}.
4473
4474 Building packages that do not configure every subdirectory is a tricky
4475 business, and we do not recommend it to the novice as it is easy to
4476 produce an incomplete tarball by mistake.  We will not discuss this
4477 topic in depth here, yet for the adventurous here are a few rules to
4478 remember.
4479
4480 @cartouche
4481 @itemize
4482 @item @code{SUBDIRS} should always be a subset of @code{DIST_SUBDIRS}.
4483
4484 It makes little sense to have a directory in @code{SUBDIRS} that
4485 is not in @code{DIST_SUBDIRS}.  Think of the former as a way to tell
4486 which directories listed in the latter should be built.
4487 @item Any directory listed in @code{DIST_SUBDIRS} and @code{SUBDIRS}
4488 must be configured.
4489
4490 I.e., the @file{Makefile} must exists or the recursive @command{make}
4491 rules will not be able to process the directory.
4492 @item Any configured directory must be listed in @code{DIST_SUBDIRS}.
4493
4494 So that the cleaning rules remove the generated @file{Makefile}s.
4495 It would be correct to see @code{DIST_SUBDIRS} as a variable that
4496 lists all the directories that have been configured.
4497 @end itemize
4498 @end cartouche
4499
4500 In order to prevent recursion in some unconfigured directory you
4501 must therefore ensure that this directory does not appear in
4502 @code{DIST_SUBDIRS} (and @code{SUBDIRS}).  For instance, if you define
4503 @code{SUBDIRS} conditionally using @code{AC_SUBST} and do not define
4504 @code{DIST_SUBDIRS} explicitly, it will be default to
4505 @samp{$(SUBDIRS)}; another possibility is to force @code{DIST_SUBDIRS
4506 = $(SUBDIRS)}.
4507
4508 Of course, directories that are omitted from @code{DIST_SUBDIRS} will
4509 not be distributed unless you make other arrangements for this to
4510 happen (for instance, always running @samp{make dist} in a
4511 configuration where all directories are known to appear in
4512 @code{DIST_SUBDIRS}; or writing a @code{dist-hook} target to
4513 distribute these directories).
4514
4515 @cindex Subdirectories, not distributed
4516 In few packages, unconfigured directories are not even expected to
4517 be distributed.  Although these packages do not require the
4518 aforementioned extra arrangements, there is another pitfall.  If the
4519 name of a directory appears in @code{SUBDIRS} or @code{DIST_SUBDIRS},
4520 @command{automake} will make sure the directory exists.  Consequently
4521 @command{automake} cannot be run on such a distribution when one
4522 directory has been omitted.  One way to avoid this check is to use the
4523 @code{AC_SUBST} method to declare conditional directories; since
4524 @command{automake} does not know the values of @code{AC_SUBST}
4525 variables it cannot ensure the corresponding directory exists.
4526
4527 @node Alternative
4528 @section An Alternative Approach to Subdirectories
4529
4530 If you've ever read Peter Miller's excellent paper,
4531 @uref{http://miller.emu.id.au/pmiller/books/rmch/,
4532 Recursive Make Considered Harmful}, the preceding sections on the use of
4533 subdirectories will probably come as unwelcome advice.  For those who
4534 haven't read the paper, Miller's main thesis is that recursive
4535 @command{make} invocations are both slow and error-prone.
4536
4537 Automake provides sufficient cross-directory support @footnote{We
4538 believe.  This work is new and there are probably warts.
4539 @xref{Introduction}, for information on reporting bugs.} to enable you
4540 to write a single @file{Makefile.am} for a complex multi-directory
4541 package.
4542
4543
4544 By default an installable file specified in a subdirectory will have its
4545 directory name stripped before installation.  For instance, in this
4546 example, the header file will be installed as
4547 @file{$(includedir)/stdio.h}:
4548
4549 @example
4550 include_HEADERS = inc/stdio.h
4551 @end example
4552
4553 @vindex nobase_
4554 @cindex @code{nobase_} prefix
4555 @cindex Path stripping, avoiding
4556 @cindex Avoiding path stripping
4557
4558 However, the @samp{nobase_} prefix can be used to circumvent this path
4559 stripping.  In this example, the header file will be installed as
4560 @file{$(includedir)/sys/types.h}:
4561
4562 @example
4563 nobase_include_HEADERS = sys/types.h
4564 @end example
4565
4566 @cindex @code{nobase_} and @code{dist_} or @code{nodist_}
4567 @cindex @code{dist_} and @code{nobase_}
4568 @cindex @code{nodist_} and @code{nobase_}
4569 @vindex dist_
4570 @vindex nodist_
4571
4572 @samp{nobase_} should be specified first when used in conjunction with
4573 either @samp{dist_} or @samp{nodist_} (@pxref{Fine-grained Distribution
4574 Control}).  For instance:
4575
4576 @example
4577 nobase_dist_pkgdata_DATA = images/vortex.pgm sounds/whirl.ogg
4578 @end example
4579
4580 Finally, note that a variable using the @samp{nobase_} prefix can
4581 often be replaced by several variables, one for each destination
4582 directory (@pxref{Uniform}).  For instance, the last example could be
4583 rewritten as follows:
4584
4585 @c Keep in sync with primary-prefix-couples-documented-valid.test.
4586 @example
4587 imagesdir = $(pkgdatadir)/images
4588 soundsdir = $(pkgdatadir)/sounds
4589 dist_images_DATA = images/vortex.pgm
4590 dist_sounds_DATA = sounds/whirl.ogg
4591 @end example
4592
4593 @noindent
4594 This latter syntax makes it possible to change one destination
4595 directory without changing the layout of the source tree.
4596
4597 Currently, @samp{nobase_*_LTLIBRARIES} are the only exception to this
4598 rule, in that there is no particular installation order guarantee for
4599 an otherwise equivalent set of variables without @samp{nobase_} prefix.
4600
4601 @node Subpackages
4602 @section Nesting Packages
4603 @cindex Nesting packages
4604 @cindex Subpackages
4605 @acindex AC_CONFIG_SUBDIRS
4606 @acindex AC_CONFIG_AUX_DIR
4607
4608
4609 In the GNU Build System, packages can be nested to arbitrary depth.
4610 This means that a package can embed other packages with their own
4611 @file{configure}, @file{Makefile}s, etc.
4612
4613 These other packages should just appear as subdirectories of their
4614 parent package.  They must be listed in @code{SUBDIRS} like other
4615 ordinary directories.  However the subpackage's @file{Makefile}s
4616 should be output by its own @file{configure} script, not by the
4617 parent's @file{configure}.  This is achieved using the
4618 @code{AC_CONFIG_SUBDIRS} Autoconf macro (@pxref{Subdirectories,
4619 AC_CONFIG_SUBDIRS, Configuring Other Packages in Subdirectories,
4620 autoconf, The Autoconf Manual}).
4621
4622 Here is an example package for an @code{arm} program that links with
4623 a @code{hand} library that is a nested package in subdirectory
4624 @file{hand/}.
4625
4626 @code{arm}'s @file{configure.ac}:
4627
4628 @example
4629 AC_INIT([arm], [1.0])
4630 AC_CONFIG_AUX_DIR([.])
4631 AM_INIT_AUTOMAKE
4632 AC_PROG_CC
4633 AC_CONFIG_FILES([Makefile])
4634 # Call hand's ./configure script recursively.
4635 AC_CONFIG_SUBDIRS([hand])
4636 AC_OUTPUT
4637 @end example
4638
4639 @code{arm}'s @file{Makefile.am}:
4640
4641 @example
4642 # Build the library in the hand subdirectory first.
4643 SUBDIRS = hand
4644
4645 # Include hand's header when compiling this directory.
4646 AM_CPPFLAGS = -I$(srcdir)/hand
4647
4648 bin_PROGRAMS = arm
4649 arm_SOURCES = arm.c
4650 # link with the hand library.
4651 arm_LDADD = hand/libhand.a
4652 @end example
4653
4654 Now here is @code{hand}'s @file{hand/configure.ac}:
4655
4656 @example
4657 AC_INIT([hand], [1.2])
4658 AC_CONFIG_AUX_DIR([.])
4659 AM_INIT_AUTOMAKE
4660 AC_PROG_CC
4661 AM_PROG_AR
4662 AC_PROG_RANLIB
4663 AC_CONFIG_FILES([Makefile])
4664 AC_OUTPUT
4665 @end example
4666
4667 @noindent
4668 and its @file{hand/Makefile.am}:
4669
4670 @example
4671 lib_LIBRARIES = libhand.a
4672 libhand_a_SOURCES = hand.c
4673 @end example
4674
4675 When @samp{make dist} is run from the top-level directory it will
4676 create an archive @file{arm-1.0.tar.gz} that contains the @code{arm}
4677 code as well as the @file{hand} subdirectory.  This package can be
4678 built and installed like any ordinary package, with the usual
4679 @samp{./configure && make && make install} sequence (the @code{hand}
4680 subpackage will be built and installed by the process).
4681
4682 When @samp{make dist} is run from the hand directory, it will create a
4683 self-contained @file{hand-1.2.tar.gz} archive.  So although it appears
4684 to be embedded in another package, it can still be used separately.
4685
4686 The purpose of the @samp{AC_CONFIG_AUX_DIR([.])} instruction is to
4687 force Automake and Autoconf to search for auxiliary scripts in the
4688 current directory.  For instance, this means that there will be two
4689 copies of @file{install-sh}: one in the top-level of the @code{arm}
4690 package, and another one in the @file{hand/} subdirectory for the
4691 @code{hand} package.
4692
4693 The historical default is to search for these auxiliary scripts in
4694 the parent directory and the grandparent directory.  So if the
4695 @samp{AC_CONFIG_AUX_DIR([.])} line was removed from
4696 @file{hand/configure.ac}, that subpackage would share the auxiliary
4697 script of the @code{arm} package.  This may looks like a gain in size
4698 (a few kilobytes), but it is actually a loss of modularity as the
4699 @code{hand} subpackage is no longer self-contained (@samp{make dist}
4700 in the subdirectory will not work anymore).
4701
4702 Packages that do not use Automake need more work to be integrated this
4703 way.  @xref{Third-Party Makefiles}.
4704
4705 @node Programs
4706 @chapter Building Programs and Libraries
4707
4708 A large part of Automake's functionality is dedicated to making it easy
4709 to build programs and libraries.
4710
4711 @menu
4712 * A Program::                   Building a program
4713 * A Library::                   Building a library
4714 * A Shared Library::            Building a Libtool library
4715 * Program and Library Variables::  Variables controlling program and
4716                                 library builds
4717 * Default _SOURCES::            Default source files
4718 * LIBOBJS::                     Special handling for LIBOBJS and ALLOCA
4719 * Program Variables::           Variables used when building a program
4720 * Yacc and Lex::                Yacc and Lex support
4721 * C++ Support::                 Compiling C++ sources
4722 * Objective C Support::         Compiling Objective C sources
4723 * Unified Parallel C Support::  Compiling Unified Parallel C sources
4724 * Assembly Support::            Compiling assembly sources
4725 * Fortran 77 Support::          Compiling Fortran 77 sources
4726 * Fortran 9x Support::          Compiling Fortran 9x sources
4727 * Java Support with gcj::       Compiling Java sources using gcj
4728 * Vala Support::                Compiling Vala sources
4729 * Support for Other Languages::  Compiling other languages
4730 * Dependencies::                Automatic dependency tracking
4731 * EXEEXT::                      Support for executable extensions
4732 @end menu
4733
4734
4735 @node A Program
4736 @section Building a program
4737
4738 In order to build a program, you need to tell Automake which sources
4739 are part of it, and which libraries it should be linked with.
4740
4741 This section also covers conditional compilation of sources or
4742 programs.  Most of the comments about these also apply to libraries
4743 (@pxref{A Library}) and libtool libraries (@pxref{A Shared Library}).
4744
4745 @menu
4746 * Program Sources::             Defining program sources
4747 * Linking::                     Linking with libraries or extra objects
4748 * Conditional Sources::         Handling conditional sources
4749 * Conditional Programs::        Building a program conditionally
4750 @end menu
4751
4752 @node Program Sources
4753 @subsection Defining program sources
4754
4755 @cindex @code{PROGRAMS}, @code{bindir}
4756 @vindex _PROGRAMS
4757 @vindex bin_PROGRAMS
4758 @vindex sbin_PROGRAMS
4759 @vindex libexec_PROGRAMS
4760 @vindex pkglibexec_PROGRAMS
4761 @vindex noinst_PROGRAMS
4762 @vindex check_PROGRAMS
4763
4764 In a directory containing source that gets built into a program (as
4765 opposed to a library or a script), the @code{PROGRAMS} primary is used.
4766 Programs can be installed in @code{bindir}, @code{sbindir},
4767 @code{libexecdir}, @code{pkglibexecdir}, or not at all
4768 (@code{noinst_}).  They can also be built only for @samp{make check}, in
4769 which case the prefix is @samp{check_}.
4770
4771 For instance:
4772
4773 @example
4774 bin_PROGRAMS = hello
4775 @end example
4776
4777 In this simple case, the resulting @file{Makefile.in} will contain code
4778 to generate a program named @code{hello}.
4779
4780 Associated with each program are several assisting variables that are
4781 named after the program.  These variables are all optional, and have
4782 reasonable defaults.  Each variable, its use, and default is spelled out
4783 below; we use the ``hello'' example throughout.
4784
4785 The variable @code{hello_SOURCES} is used to specify which source files
4786 get built into an executable:
4787
4788 @example
4789 hello_SOURCES = hello.c version.c getopt.c getopt1.c getopt.h system.h
4790 @end example
4791
4792 This causes each mentioned @file{.c} file to be compiled into the
4793 corresponding @file{.o}.  Then all are linked to produce @file{hello}.
4794
4795 @cindex @code{_SOURCES} primary, defined
4796 @cindex @code{SOURCES} primary, defined
4797 @cindex Primary variable, @code{SOURCES}
4798 @vindex _SOURCES
4799
4800 If @code{hello_SOURCES} is not specified, then it defaults to the single
4801 file @file{hello.c} (@pxref{Default _SOURCES}).
4802 @vindex _SOURCES
4803 @vindex SOURCES
4804
4805 Multiple programs can be built in a single directory.  Multiple programs
4806 can share a single source file, which must be listed in each
4807 @code{_SOURCES} definition.
4808
4809 @cindex Header files in @code{_SOURCES}
4810 @cindex @code{_SOURCES} and header files
4811
4812 Header files listed in a @code{_SOURCES} definition will be included in
4813 the distribution but otherwise ignored.  In case it isn't obvious, you
4814 should not include the header file generated by @file{configure} in a
4815 @code{_SOURCES} variable; this file should not be distributed.  Lex
4816 (@file{.l}) and Yacc (@file{.y}) files can also be listed; see @ref{Yacc
4817 and Lex}.
4818
4819
4820 @node Linking
4821 @subsection Linking the program
4822
4823 If you need to link against libraries that are not found by
4824 @command{configure}, you can use @code{LDADD} to do so.  This variable is
4825 used to specify additional objects or libraries to link with; it is
4826 inappropriate for specifying specific linker flags, you should use
4827 @code{AM_LDFLAGS} for this purpose.
4828 @vindex LDADD
4829 @vindex AM_LDFLAGS
4830
4831 @cindex @code{prog_LDADD}, defined
4832
4833 Sometimes, multiple programs are built in one directory but do not share
4834 the same link-time requirements.  In this case, you can use the
4835 @code{@var{prog}_LDADD} variable (where @var{prog} is the name of the
4836 program as it appears in some @code{_PROGRAMS} variable, and usually
4837 written in lowercase) to override @code{LDADD}.  If this variable exists
4838 for a given program, then that program is not linked using @code{LDADD}.
4839 @vindex maude_LDADD
4840
4841 For instance, in GNU cpio, @code{pax}, @code{cpio} and @code{mt} are
4842 linked against the library @file{libcpio.a}.  However, @code{rmt} is
4843 built in the same directory, and has no such link requirement.  Also,
4844 @code{mt} and @code{rmt} are only built on certain architectures.  Here
4845 is what cpio's @file{src/Makefile.am} looks like (abridged):
4846
4847 @example
4848 bin_PROGRAMS = cpio pax $(MT)
4849 libexec_PROGRAMS = $(RMT)
4850 EXTRA_PROGRAMS = mt rmt
4851
4852 LDADD = ../lib/libcpio.a $(INTLLIBS)
4853 rmt_LDADD =
4854
4855 cpio_SOURCES = @dots{}
4856 pax_SOURCES = @dots{}
4857 mt_SOURCES = @dots{}
4858 rmt_SOURCES = @dots{}
4859 @end example
4860
4861 @cindex @code{_LDFLAGS}, defined
4862 @vindex maude_LDFLAGS
4863 @code{@var{prog}_LDADD} is inappropriate for passing program-specific
4864 linker flags (except for @option{-l}, @option{-L}, @option{-dlopen} and
4865 @option{-dlpreopen}).  So, use the @code{@var{prog}_LDFLAGS} variable for
4866 this purpose.
4867
4868 @cindex @code{_DEPENDENCIES}, defined
4869 @vindex maude_DEPENDENCIES
4870 @vindex EXTRA_maude_DEPENDENCIES
4871 It is also occasionally useful to have a program depend on some other
4872 target that is not actually part of that program.  This can be done
4873 using either the @code{@var{prog}_DEPENDENCIES} or the
4874 @code{EXTRA_@var{prog}_DEPENDENCIES} variable.  Each program depends on
4875 the contents both variables, but no further interpretation is done.
4876
4877 Since these dependencies are associated to the link rule used to
4878 create the programs they should normally list files used by the link
4879 command.  That is @file{*.$(OBJEXT)}, @file{*.a}, or @file{*.la}
4880 files.  In rare cases you may need to add other kinds of files such as
4881 linker scripts, but @emph{listing a source file in
4882 @code{_DEPENDENCIES} is wrong}.  If some source file needs to be built
4883 before all the components of a program are built, consider using the
4884 @code{BUILT_SOURCES} variable instead (@pxref{Sources}).
4885
4886 If @code{@var{prog}_DEPENDENCIES} is not supplied, it is computed by
4887 Automake.  The automatically-assigned value is the contents of
4888 @code{@var{prog}_LDADD}, with most configure substitutions, @option{-l},
4889 @option{-L}, @option{-dlopen} and @option{-dlpreopen} options removed.  The
4890 configure substitutions that are left in are only @samp{$(LIBOBJS)} and
4891 @samp{$(ALLOCA)}; these are left because it is known that they will not
4892 cause an invalid value for @code{@var{prog}_DEPENDENCIES} to be
4893 generated.
4894
4895 @ref{Conditional Sources} shows a situation where @code{_DEPENDENCIES}
4896 may be used.
4897
4898 The @code{EXTRA_@var{prog}_DEPENDENCIES} may be useful for cases where
4899 you merely want to augment the @command{automake}-generated
4900 @code{@var{prog}_DEPENDENCIES} rather than replacing it.
4901
4902 @cindex @code{LDADD} and @option{-l}
4903 @cindex @option{-l} and @code{LDADD}
4904 We recommend that you avoid using @option{-l} options in @code{LDADD}
4905 or @code{@var{prog}_LDADD} when referring to libraries built by your
4906 package.  Instead, write the file name of the library explicitly as in
4907 the above @code{cpio} example.  Use @option{-l} only to list
4908 third-party libraries.  If you follow this rule, the default value of
4909 @code{@var{prog}_DEPENDENCIES} will list all your local libraries and
4910 omit the other ones.
4911
4912
4913 @node Conditional Sources
4914 @subsection Conditional compilation of sources
4915
4916 You can't put a configure substitution (e.g., @samp{@@FOO@@} or
4917 @samp{$(FOO)} where @code{FOO} is defined via @code{AC_SUBST}) into a
4918 @code{_SOURCES} variable.  The reason for this is a bit hard to
4919 explain, but suffice to say that it simply won't work.  Automake will
4920 give an error if you try to do this.
4921
4922 Fortunately there are two other ways to achieve the same result.  One is
4923 to use configure substitutions in @code{_LDADD} variables, the other is
4924 to use an Automake conditional.
4925
4926 @subsubheading Conditional Compilation using @code{_LDADD} Substitutions
4927
4928 @cindex @code{EXTRA_prog_SOURCES}, defined
4929
4930 Automake must know all the source files that could possibly go into a
4931 program, even if not all the files are built in every circumstance.  Any
4932 files that are only conditionally built should be listed in the
4933 appropriate @code{EXTRA_} variable.  For instance, if
4934 @file{hello-linux.c} or @file{hello-generic.c} were conditionally included
4935 in @code{hello}, the @file{Makefile.am} would contain:
4936
4937 @example
4938 bin_PROGRAMS = hello
4939 hello_SOURCES = hello-common.c
4940 EXTRA_hello_SOURCES = hello-linux.c hello-generic.c
4941 hello_LDADD = $(HELLO_SYSTEM)
4942 hello_DEPENDENCIES = $(HELLO_SYSTEM)
4943 @end example
4944
4945 @noindent
4946 You can then setup the @samp{$(HELLO_SYSTEM)} substitution from
4947 @file{configure.ac}:
4948
4949 @example
4950 @dots{}
4951 case $host in
4952   *linux*) HELLO_SYSTEM='hello-linux.$(OBJEXT)' ;;
4953   *)       HELLO_SYSTEM='hello-generic.$(OBJEXT)' ;;
4954 esac
4955 AC_SUBST([HELLO_SYSTEM])
4956 @dots{}
4957 @end example
4958
4959 In this case, the variable @code{HELLO_SYSTEM} should be replaced by
4960 either @file{hello-linux.o} or @file{hello-generic.o}, and added to
4961 both @code{hello_DEPENDENCIES} and @code{hello_LDADD} in order to be
4962 built and linked in.
4963
4964 @subsubheading Conditional Compilation using Automake Conditionals
4965
4966 An often simpler way to compile source files conditionally is to use
4967 Automake conditionals.  For instance, you could use this
4968 @file{Makefile.am} construct to build the same @file{hello} example:
4969
4970 @example
4971 bin_PROGRAMS = hello
4972 if LINUX
4973 hello_SOURCES = hello-linux.c hello-common.c
4974 else
4975 hello_SOURCES = hello-generic.c hello-common.c
4976 endif
4977 @end example
4978
4979 In this case, @file{configure.ac} should setup the @code{LINUX}
4980 conditional using @code{AM_CONDITIONAL} (@pxref{Conditionals}).
4981
4982 When using conditionals like this you don't need to use the
4983 @code{EXTRA_} variable, because Automake will examine the contents of
4984 each variable to construct the complete list of source files.
4985
4986 If your program uses a lot of files, you will probably prefer a
4987 conditional @samp{+=}.
4988
4989 @example
4990 bin_PROGRAMS = hello
4991 hello_SOURCES = hello-common.c
4992 if LINUX
4993 hello_SOURCES += hello-linux.c
4994 else
4995 hello_SOURCES += hello-generic.c
4996 endif
4997 @end example
4998
4999 @node Conditional Programs
5000 @subsection Conditional compilation of programs
5001 @cindex Conditional programs
5002 @cindex Programs, conditional
5003
5004 Sometimes it is useful to determine the programs that are to be built
5005 at configure time.  For instance, GNU @code{cpio} only builds
5006 @code{mt} and @code{rmt} under special circumstances.  The means to
5007 achieve conditional compilation of programs are the same you can use
5008 to compile source files conditionally: substitutions or conditionals.
5009
5010 @subsubheading Conditional Programs using @command{configure} Substitutions
5011
5012 @vindex EXTRA_PROGRAMS
5013 @cindex @code{EXTRA_PROGRAMS}, defined
5014 In this case, you must notify Automake of all the programs that can
5015 possibly be built, but at the same time cause the generated
5016 @file{Makefile.in} to use the programs specified by @command{configure}.
5017 This is done by having @command{configure} substitute values into each
5018 @code{_PROGRAMS} definition, while listing all optionally built programs
5019 in @code{EXTRA_PROGRAMS}.
5020
5021 @example
5022 bin_PROGRAMS = cpio pax $(MT)
5023 libexec_PROGRAMS = $(RMT)
5024 EXTRA_PROGRAMS = mt rmt
5025 @end example
5026
5027 As explained in @ref{EXEEXT}, Automake will rewrite
5028 @code{bin_PROGRAMS}, @code{libexec_PROGRAMS}, and
5029 @code{EXTRA_PROGRAMS}, appending @samp{$(EXEEXT)} to each binary.
5030 Obviously it cannot rewrite values obtained at run-time through
5031 @command{configure} substitutions, therefore you should take care of
5032 appending @samp{$(EXEEXT)} yourself, as in @samp{AC_SUBST([MT],
5033 ['mt$@{EXEEXT@}'])}.
5034
5035 @subsubheading Conditional Programs using Automake Conditionals
5036
5037 You can also use Automake conditionals (@pxref{Conditionals}) to
5038 select programs to be built.  In this case you don't have to worry
5039 about @samp{$(EXEEXT)} or @code{EXTRA_PROGRAMS}.
5040
5041 @c Keep in sync with exeext.test.
5042 @example
5043 bin_PROGRAMS = cpio pax
5044 if WANT_MT
5045   bin_PROGRAMS += mt
5046 endif
5047 if WANT_RMT
5048   libexec_PROGRAMS = rmt
5049 endif
5050 @end example
5051
5052
5053 @node A Library
5054 @section Building a library
5055
5056 @cindex @code{_LIBRARIES} primary, defined
5057 @cindex @code{LIBRARIES} primary, defined
5058 @cindex Primary variable, @code{LIBRARIES}
5059 @vindex _LIBRARIES
5060
5061 @vindex lib_LIBRARIES
5062 @vindex pkglib_LIBRARIES
5063 @vindex noinst_LIBRARIES
5064
5065 Building a library is much like building a program.  In this case, the
5066 name of the primary is @code{LIBRARIES}.  Libraries can be installed in
5067 @code{libdir} or @code{pkglibdir}.
5068
5069 @xref{A Shared Library}, for information on how to build shared
5070 libraries using libtool and the @code{LTLIBRARIES} primary.
5071
5072 Each @code{_LIBRARIES} variable is a list of the libraries to be built.
5073 For instance, to create a library named @file{libcpio.a}, but not install
5074 it, you would write:
5075
5076 @example
5077 noinst_LIBRARIES = libcpio.a
5078 libcpio_a_SOURCES = @dots{}
5079 @end example
5080
5081 The sources that go into a library are determined exactly as they are
5082 for programs, via the @code{_SOURCES} variables.  Note that the library
5083 name is canonicalized (@pxref{Canonicalization}), so the @code{_SOURCES}
5084 variable corresponding to @file{libcpio.a} is @samp{libcpio_a_SOURCES},
5085 not @samp{libcpio.a_SOURCES}.
5086
5087 @vindex maude_LIBADD
5088 Extra objects can be added to a library using the
5089 @code{@var{library}_LIBADD} variable.  This should be used for objects
5090 determined by @command{configure}.  Again from @code{cpio}:
5091
5092 @c Keep in sync with pr401c.test.
5093 @example
5094 libcpio_a_LIBADD = $(LIBOBJS) $(ALLOCA)
5095 @end example
5096
5097 In addition, sources for extra objects that will not exist until
5098 configure-time must be added to the @code{BUILT_SOURCES} variable
5099 (@pxref{Sources}).
5100
5101 Building a static library is done by compiling all object files, then
5102 by invoking @samp{$(AR) $(ARFLAGS)} followed by the name of the
5103 library and the list of objects, and finally by calling
5104 @samp{$(RANLIB)} on that library.  You should call
5105 @code{AC_PROG_RANLIB} from your @file{configure.ac} to define
5106 @code{RANLIB} (Automake will complain otherwise).  You should also
5107 call @code{AM_PROG_AR} to define @code{AR}, in order to support unusual
5108 archivers such as Microsoft lib.  @code{ARFLAGS} will default to
5109 @code{cru}; you can override this variable by setting it in your
5110 @file{Makefile.am} or by @code{AC_SUBST}ing it from your
5111 @file{configure.ac}.  You can override the @code{AR} variable by
5112 defining a per-library @code{maude_AR} variable (@pxref{Program and
5113 Library Variables}).
5114
5115 @cindex Empty libraries
5116 Be careful when selecting library components conditionally.  Because
5117 building an empty library is not portable, you should ensure that any
5118 library always contains at least one object.
5119
5120 To use a static library when building a program, add it to
5121 @code{LDADD} for this program.  In the following example, the program
5122 @file{cpio} is statically linked with the library @file{libcpio.a}.
5123
5124 @example
5125 noinst_LIBRARIES = libcpio.a
5126 libcpio_a_SOURCES = @dots{}
5127
5128 bin_PROGRAMS = cpio
5129 cpio_SOURCES = cpio.c @dots{}
5130 cpio_LDADD = libcpio.a
5131 @end example
5132
5133
5134 @node A Shared Library
5135 @section Building a Shared Library
5136
5137 @cindex Shared libraries, support for
5138
5139 Building shared libraries portably is a relatively complex matter.
5140 For this reason, GNU Libtool (@pxref{Top, , Introduction, libtool, The
5141 Libtool Manual}) was created to help build shared libraries in a
5142 platform-independent way.
5143
5144 @menu
5145 * Libtool Concept::             Introducing Libtool
5146 * Libtool Libraries::           Declaring Libtool Libraries
5147 * Conditional Libtool Libraries::  Building Libtool Libraries Conditionally
5148 * Conditional Libtool Sources::  Choosing Library Sources Conditionally
5149 * Libtool Convenience Libraries::  Building Convenience Libtool Libraries
5150 * Libtool Modules::             Building Libtool Modules
5151 * Libtool Flags::               Using _LIBADD, _LDFLAGS, and _LIBTOOLFLAGS
5152 * LTLIBOBJS::                   Using $(LTLIBOBJS) and $(LTALLOCA)
5153 * Libtool Issues::              Common Issues Related to Libtool's Use
5154 @end menu
5155
5156 @node Libtool Concept
5157 @subsection The Libtool Concept
5158
5159 @cindex @command{libtool}, introduction
5160 @cindex libtool library, definition
5161 @cindex suffix @file{.la}, defined
5162 @cindex @file{.la} suffix, defined
5163
5164 Libtool abstracts shared and static libraries into a unified concept
5165 henceforth called @dfn{libtool libraries}.  Libtool libraries are
5166 files using the @file{.la} suffix, and can designate a static library,
5167 a shared library, or maybe both.  Their exact nature cannot be
5168 determined until @file{./configure} is run: not all platforms support
5169 all kinds of libraries, and users can explicitly select which
5170 libraries should be built.  (However the package's maintainers can
5171 tune the default, @pxref{AC_PROG_LIBTOOL, , The @code{AC_PROG_LIBTOOL}
5172 macro, libtool, The Libtool Manual}.)
5173
5174 @cindex suffix @file{.lo}, defined
5175 Because object files for shared and static libraries must be compiled
5176 differently, libtool is also used during compilation.  Object files
5177 built by libtool are called @dfn{libtool objects}: these are files
5178 using the @file{.lo} suffix.  Libtool libraries are built from these
5179 libtool objects.
5180
5181 You should not assume anything about the structure of @file{.la} or
5182 @file{.lo} files and how libtool constructs them: this is libtool's
5183 concern, and the last thing one wants is to learn about libtool's
5184 guts.  However the existence of these files matters, because they are
5185 used as targets and dependencies in @file{Makefile}s rules when
5186 building libtool libraries.  There are situations where you may have
5187 to refer to these, for instance when expressing dependencies for
5188 building source files conditionally (@pxref{Conditional Libtool
5189 Sources}).
5190
5191 @cindex @file{libltdl}, introduction
5192
5193 People considering writing a plug-in system, with dynamically loaded
5194 modules, should look into @file{libltdl}: libtool's dlopening library
5195 (@pxref{Using libltdl, , Using libltdl, libtool, The Libtool Manual}).
5196 This offers a portable dlopening facility to load libtool libraries
5197 dynamically, and can also achieve static linking where unavoidable.
5198
5199 Before we discuss how to use libtool with Automake in details, it
5200 should be noted that the libtool manual also has a section about how
5201 to use Automake with libtool (@pxref{Using Automake, , Using Automake
5202 with Libtool, libtool, The Libtool Manual}).
5203
5204 @node Libtool Libraries
5205 @subsection Building Libtool Libraries
5206
5207 @cindex @code{_LTLIBRARIES} primary, defined
5208 @cindex @code{LTLIBRARIES} primary, defined
5209 @cindex Primary variable, @code{LTLIBRARIES}
5210 @cindex Example of shared libraries
5211 @vindex lib_LTLIBRARIES
5212 @vindex pkglib_LTLIBRARIES
5213 @vindex _LTLIBRARIES
5214
5215 Automake uses libtool to build libraries declared with the
5216 @code{LTLIBRARIES} primary.  Each @code{_LTLIBRARIES} variable is a
5217 list of libtool libraries to build.  For instance, to create a libtool
5218 library named @file{libgettext.la}, and install it in @code{libdir},
5219 write:
5220
5221 @example
5222 lib_LTLIBRARIES = libgettext.la
5223 libgettext_la_SOURCES = gettext.c gettext.h @dots{}
5224 @end example
5225
5226 Automake predefines the variable @code{pkglibdir}, so you can use
5227 @code{pkglib_LTLIBRARIES} to install libraries in
5228 @samp{$(libdir)/@@PACKAGE@@/}.
5229
5230 If @file{gettext.h} is a public header file that needs to be installed
5231 in order for people to use the library, it should be declared using a
5232 @code{_HEADERS} variable, not in @code{libgettext_la_SOURCES}.
5233 Headers listed in the latter should be internal headers that are not
5234 part of the public interface.
5235
5236 @example
5237 lib_LTLIBRARIES = libgettext.la
5238 libgettext_la_SOURCES = gettext.c @dots{}
5239 include_HEADERS = gettext.h @dots{}
5240 @end example
5241
5242 A package can build and install such a library along with other
5243 programs that use it.  This dependency should be specified using
5244 @code{LDADD}.  The following example builds a program named
5245 @file{hello} that is linked with @file{libgettext.la}.
5246
5247 @example
5248 lib_LTLIBRARIES = libgettext.la
5249 libgettext_la_SOURCES = gettext.c @dots{}
5250
5251 bin_PROGRAMS = hello
5252 hello_SOURCES = hello.c @dots{}
5253 hello_LDADD = libgettext.la
5254 @end example
5255
5256 @noindent
5257 Whether @file{hello} is statically or dynamically linked with
5258 @file{libgettext.la} is not yet known: this will depend on the
5259 configuration of libtool and the capabilities of the host.
5260
5261
5262 @node Conditional Libtool Libraries
5263 @subsection Building Libtool Libraries Conditionally
5264 @cindex libtool libraries, conditional
5265 @cindex conditional libtool libraries
5266
5267 Like conditional programs (@pxref{Conditional Programs}), there are
5268 two main ways to build conditional libraries: using Automake
5269 conditionals or using Autoconf @code{AC_SUBST}itutions.
5270
5271 The important implementation detail you have to be aware of is that
5272 the place where a library will be installed matters to libtool: it
5273 needs to be indicated @emph{at link-time} using the @option{-rpath}
5274 option.
5275
5276 For libraries whose destination directory is known when Automake runs,
5277 Automake will automatically supply the appropriate @option{-rpath}
5278 option to libtool.  This is the case for libraries listed explicitly in
5279 some installable @code{_LTLIBRARIES} variables such as
5280 @code{lib_LTLIBRARIES}.
5281
5282 However, for libraries determined at configure time (and thus
5283 mentioned in @code{EXTRA_LTLIBRARIES}), Automake does not know the
5284 final installation directory.  For such libraries you must add the
5285 @option{-rpath} option to the appropriate @code{_LDFLAGS} variable by
5286 hand.
5287
5288 The examples below illustrate the differences between these two methods.
5289
5290 Here is an example where @code{WANTEDLIBS} is an @code{AC_SUBST}ed
5291 variable set at @file{./configure}-time to either @file{libfoo.la},
5292 @file{libbar.la}, both, or none.  Although @samp{$(WANTEDLIBS)}
5293 appears in the @code{lib_LTLIBRARIES}, Automake cannot guess it
5294 relates to @file{libfoo.la} or @file{libbar.la} at the time it creates
5295 the link rule for these two libraries.  Therefore the @option{-rpath}
5296 argument must be explicitly supplied.
5297
5298 @c Keep in sync with ltcond.test.
5299 @example
5300 EXTRA_LTLIBRARIES = libfoo.la libbar.la
5301 lib_LTLIBRARIES = $(WANTEDLIBS)
5302 libfoo_la_SOURCES = foo.c @dots{}
5303 libfoo_la_LDFLAGS = -rpath '$(libdir)'
5304 libbar_la_SOURCES = bar.c @dots{}
5305 libbar_la_LDFLAGS = -rpath '$(libdir)'
5306 @end example
5307
5308 Here is how the same @file{Makefile.am} would look using Automake
5309 conditionals named @code{WANT_LIBFOO} and @code{WANT_LIBBAR}.  Now
5310 Automake is able to compute the @option{-rpath} setting itself, because
5311 it's clear that both libraries will end up in @samp{$(libdir)} if they
5312 are installed.
5313
5314 @c Keep in sync with ltcond.test.
5315 @example
5316 lib_LTLIBRARIES =
5317 if WANT_LIBFOO
5318 lib_LTLIBRARIES += libfoo.la
5319 endif
5320 if WANT_LIBBAR
5321 lib_LTLIBRARIES += libbar.la
5322 endif
5323 libfoo_la_SOURCES = foo.c @dots{}
5324 libbar_la_SOURCES = bar.c @dots{}
5325 @end example
5326
5327 @node Conditional Libtool Sources
5328 @subsection Libtool Libraries with Conditional Sources
5329
5330 Conditional compilation of sources in a library can be achieved in the
5331 same way as conditional compilation of sources in a program
5332 (@pxref{Conditional Sources}).  The only difference is that
5333 @code{_LIBADD} should be used instead of @code{_LDADD} and that it
5334 should mention libtool objects (@file{.lo} files).
5335
5336 So, to mimic the @file{hello} example from @ref{Conditional Sources},
5337 we could build a @file{libhello.la} library using either
5338 @file{hello-linux.c} or @file{hello-generic.c} with the following
5339 @file{Makefile.am}.
5340
5341 @c Keep in sync with ltcond2.test.
5342 @example
5343 lib_LTLIBRARIES = libhello.la
5344 libhello_la_SOURCES = hello-common.c
5345 EXTRA_libhello_la_SOURCES = hello-linux.c hello-generic.c
5346 libhello_la_LIBADD = $(HELLO_SYSTEM)
5347 libhello_la_DEPENDENCIES = $(HELLO_SYSTEM)
5348 @end example
5349
5350 @noindent
5351 And make sure @command{configure} defines @code{HELLO_SYSTEM} as
5352 either @file{hello-linux.lo} or @file{hello-@-generic.lo}.
5353
5354 Or we could simply use an Automake conditional as follows.
5355
5356 @c Keep in sync with ltcond2.test.
5357 @example
5358 lib_LTLIBRARIES = libhello.la
5359 libhello_la_SOURCES = hello-common.c
5360 if LINUX
5361 libhello_la_SOURCES += hello-linux.c
5362 else
5363 libhello_la_SOURCES += hello-generic.c
5364 endif
5365 @end example
5366
5367 @node Libtool Convenience Libraries
5368 @subsection Libtool Convenience Libraries
5369 @cindex convenience libraries, libtool
5370 @cindex libtool convenience libraries
5371 @vindex noinst_LTLIBRARIES
5372 @vindex check_LTLIBRARIES
5373
5374 Sometimes you want to build libtool libraries that should not be
5375 installed.  These are called @dfn{libtool convenience libraries} and
5376 are typically used to encapsulate many sublibraries, later gathered
5377 into one big installed library.
5378
5379 Libtool convenience libraries are declared by directory-less variables
5380 such as @code{noinst_LTLIBRARIES}, @code{check_LTLIBRARIES}, or even
5381 @code{EXTRA_LTLIBRARIES}.  Unlike installed libtool libraries they do
5382 not need an @option{-rpath} flag at link time (actually this is the only
5383 difference).
5384
5385 Convenience libraries listed in @code{noinst_LTLIBRARIES} are always
5386 built.  Those listed in @code{check_LTLIBRARIES} are built only upon
5387 @samp{make check}.  Finally, libraries listed in
5388 @code{EXTRA_LTLIBRARIES} are never built explicitly: Automake outputs
5389 rules to build them, but if the library does not appear as a Makefile
5390 dependency anywhere it won't be built (this is why
5391 @code{EXTRA_LTLIBRARIES} is used for conditional compilation).
5392
5393 Here is a sample setup merging libtool convenience libraries from
5394 subdirectories into one main @file{libtop.la} library.
5395
5396 @c Keep in sync with ltconv.test.
5397 @example
5398 # -- Top-level Makefile.am --
5399 SUBDIRS = sub1 sub2 @dots{}
5400 lib_LTLIBRARIES = libtop.la
5401 libtop_la_SOURCES =
5402 libtop_la_LIBADD = \
5403   sub1/libsub1.la \
5404   sub2/libsub2.la \
5405   @dots{}
5406
5407 # -- sub1/Makefile.am --
5408 noinst_LTLIBRARIES = libsub1.la
5409 libsub1_la_SOURCES = @dots{}
5410
5411 # -- sub2/Makefile.am --
5412 # showing nested convenience libraries
5413 SUBDIRS = sub2.1 sub2.2 @dots{}
5414 noinst_LTLIBRARIES = libsub2.la
5415 libsub2_la_SOURCES =
5416 libsub2_la_LIBADD = \
5417   sub21/libsub21.la \
5418   sub22/libsub22.la \
5419   @dots{}
5420 @end example
5421
5422 When using such setup, beware that @command{automake} will assume
5423 @file{libtop.la} is to be linked with the C linker.  This is because
5424 @code{libtop_la_SOURCES} is empty, so @command{automake} picks C as
5425 default language.  If @code{libtop_la_SOURCES} was not empty,
5426 @command{automake} would select the linker as explained in @ref{How
5427 the Linker is Chosen}.
5428
5429 If one of the sublibraries contains non-C source, it is important that
5430 the appropriate linker be chosen.  One way to achieve this is to
5431 pretend that there is such a non-C file among the sources of the
5432 library, thus forcing @command{automake} to select the appropriate
5433 linker.  Here is the top-level @file{Makefile} of our example updated
5434 to force C++ linking.
5435
5436 @example
5437 SUBDIRS = sub1 sub2 @dots{}
5438 lib_LTLIBRARIES = libtop.la
5439 libtop_la_SOURCES =
5440 # Dummy C++ source to cause C++ linking.
5441 nodist_EXTRA_libtop_la_SOURCES = dummy.cxx
5442 libtop_la_LIBADD = \
5443   sub1/libsub1.la \
5444   sub2/libsub2.la \
5445   @dots{}
5446 @end example
5447
5448 @samp{EXTRA_*_SOURCES} variables are used to keep track of source
5449 files that might be compiled (this is mostly useful when doing
5450 conditional compilation using @code{AC_SUBST}, @pxref{Conditional
5451 Libtool Sources}), and the @code{nodist_} prefix means the listed
5452 sources are not to be distributed (@pxref{Program and Library
5453 Variables}).  In effect the file @file{dummy.cxx} does not need to
5454 exist in the source tree.  Of course if you have some real source file
5455 to list in @code{libtop_la_SOURCES} there is no point in cheating with
5456 @code{nodist_EXTRA_libtop_la_SOURCES}.
5457
5458
5459 @node Libtool Modules
5460 @subsection Libtool Modules
5461 @cindex modules, libtool
5462 @cindex libtool modules
5463 @cindex @option{-module}, libtool
5464
5465 These are libtool libraries meant to be dlopened.  They are
5466 indicated to libtool by passing @option{-module} at link-time.
5467
5468 @example
5469 pkglib_LTLIBRARIES = mymodule.la
5470 mymodule_la_SOURCES = doit.c
5471 mymodule_la_LDFLAGS = -module
5472 @end example
5473
5474 Ordinarily, Automake requires that a library's name start with
5475 @code{lib}.  However, when building a dynamically loadable module you
5476 might wish to use a "nonstandard" name.  Automake will not complain
5477 about such nonstandard names if it knows the library being built is a
5478 libtool module, i.e., if @option{-module} explicitly appears in the
5479 library's @code{_LDFLAGS} variable (or in the common @code{AM_LDFLAGS}
5480 variable when no per-library @code{_LDFLAGS} variable is defined).
5481
5482 As always, @code{AC_SUBST} variables are black boxes to Automake since
5483 their values are not yet known when @command{automake} is run.
5484 Therefore if @option{-module} is set via such a variable, Automake
5485 cannot notice it and will proceed as if the library was an ordinary
5486 libtool library, with strict naming.
5487
5488 If @code{mymodule_la_SOURCES} is not specified, then it defaults to
5489 the single file @file{mymodule.c} (@pxref{Default _SOURCES}).
5490
5491 @node Libtool Flags
5492 @subsection @code{_LIBADD}, @code{_LDFLAGS}, and @code{_LIBTOOLFLAGS}
5493 @cindex @code{_LIBADD}, libtool
5494 @cindex @code{_LDFLAGS}, libtool
5495 @cindex @code{_LIBTOOLFLAGS}, libtool
5496 @vindex AM_LIBTOOLFLAGS
5497 @vindex LIBTOOLFLAGS
5498 @vindex maude_LIBTOOLFLAGS
5499
5500 As shown in previous sections, the @samp{@var{library}_LIBADD}
5501 variable should be used to list extra libtool objects (@file{.lo}
5502 files) or libtool libraries (@file{.la}) to add to @var{library}.
5503
5504 The @samp{@var{library}_LDFLAGS} variable is the place to list
5505 additional libtool linking flags, such as @option{-version-info},
5506 @option{-static}, and a lot more.  @xref{Link mode, , Link mode,
5507 libtool, The Libtool Manual}.
5508
5509 The @command{libtool} command has two kinds of options: mode-specific
5510 options and generic options.  Mode-specific options such as the
5511 aforementioned linking flags should be lumped with the other flags
5512 passed to the tool invoked by @command{libtool} (hence the use of
5513 @samp{@var{library}_LDFLAGS} for libtool linking flags).  Generic
5514 options include @option{--tag=@var{tag}} and @option{--silent}
5515 (@pxref{Invoking libtool, , Invoking @command{libtool}, libtool, The
5516 Libtool Manual} for more options) should appear before the mode
5517 selection on the command line; in @file{Makefile.am}s they should
5518 be listed in the @samp{@var{library}_LIBTOOLFLAGS} variable.
5519
5520 If @samp{@var{library}_LIBTOOLFLAGS} is not defined, then the variable
5521 @code{AM_LIBTOOLFLAGS} is used instead.
5522
5523 These flags are passed to libtool after the @option{--tag=@var{tag}}
5524 option computed by Automake (if any), so
5525 @samp{@var{library}_LIBTOOLFLAGS} (or @code{AM_LIBTOOLFLAGS}) is a
5526 good place to override or supplement the @option{--tag=@var{tag}}
5527 setting.
5528
5529 The libtool rules also use a @code{LIBTOOLFLAGS} variable that should
5530 not be set in @file{Makefile.am}: this is a user variable (@pxref{Flag
5531 Variables Ordering}.  It allows users to run @samp{make
5532 LIBTOOLFLAGS=--silent}, for instance.  Note that the verbosity of
5533 @command{libtool} can also be influenced with the Automake
5534 @option{silent-rules} option (@pxref{Options}).
5535
5536
5537 @node LTLIBOBJS, Libtool Issues, Libtool Flags, A Shared Library
5538 @subsection @code{LTLIBOBJS} and @code{LTALLOCA}
5539 @cindex @code{LTLIBOBJS}, special handling
5540 @cindex @code{LIBOBJS}, and Libtool
5541 @cindex @code{LTALLOCA}, special handling
5542 @cindex @code{ALLOCA}, and Libtool
5543 @vindex LTLIBOBJS
5544 @vindex LIBOBJS
5545 @vindex LTALLOCA
5546 @vindex ALLOCA
5547 @acindex AC_LIBOBJ
5548
5549 Where an ordinary library might include @samp{$(LIBOBJS)} or
5550 @samp{$(ALLOCA)} (@pxref{LIBOBJS}), a libtool library must use
5551 @samp{$(LTLIBOBJS)} or @samp{$(LTALLOCA)}.  This is required because
5552 the object files that libtool operates on do not necessarily end in
5553 @file{.o}.
5554
5555 Nowadays, the computation of @code{LTLIBOBJS} from @code{LIBOBJS} is
5556 performed automatically by Autoconf (@pxref{AC_LIBOBJ vs LIBOBJS, ,
5557 @code{AC_LIBOBJ} vs.@: @code{LIBOBJS}, autoconf, The Autoconf Manual}).
5558
5559 @node Libtool Issues
5560 @subsection Common Issues Related to Libtool's Use
5561
5562 @menu
5563 * Error required file ltmain.sh not found::  The need to run libtoolize
5564 * Objects created both with libtool and without::  Avoid a specific build race
5565 @end menu
5566
5567 @node Error required file ltmain.sh not found
5568 @subsubsection Error: @samp{required file `./ltmain.sh' not found}
5569 @cindex @file{ltmain.sh} not found
5570 @cindex @command{libtoolize}, no longer run by @command{automake}
5571 @cindex @command{libtoolize} and @command{autoreconf}
5572 @cindex @command{autoreconf} and @command{libtoolize}
5573 @cindex @file{bootstrap.sh} and @command{autoreconf}
5574 @cindex @file{autogen.sh} and @command{autoreconf}
5575
5576 Libtool comes with a tool called @command{libtoolize} that will
5577 install libtool's supporting files into a package.  Running this
5578 command will install @file{ltmain.sh}.  You should execute it before
5579 @command{aclocal} and @command{automake}.
5580
5581 People upgrading old packages to newer autotools are likely to face
5582 this issue because older Automake versions used to call
5583 @command{libtoolize}.  Therefore old build scripts do not call
5584 @command{libtoolize}.
5585
5586 Since Automake 1.6, it has been decided that running
5587 @command{libtoolize} was none of Automake's business.  Instead, that
5588 functionality has been moved into the @command{autoreconf} command
5589 (@pxref{autoreconf Invocation, , Using @command{autoreconf}, autoconf,
5590 The Autoconf Manual}).  If you do not want to remember what to run and
5591 when, just learn the @command{autoreconf} command.  Hopefully,
5592 replacing existing @file{bootstrap.sh} or @file{autogen.sh} scripts by
5593 a call to @command{autoreconf} should also free you from any similar
5594 incompatible change in the future.
5595
5596 @node Objects created both with libtool and without
5597 @subsubsection Objects @samp{created with both libtool and without}
5598
5599 Sometimes, the same source file is used both to build a libtool
5600 library and to build another non-libtool target (be it a program or
5601 another library).
5602
5603 Let's consider the following @file{Makefile.am}.
5604
5605 @example
5606 bin_PROGRAMS = prog
5607 prog_SOURCES = prog.c foo.c @dots{}
5608
5609 lib_LTLIBRARIES = libfoo.la
5610 libfoo_la_SOURCES = foo.c @dots{}
5611 @end example
5612
5613 @noindent
5614 (In this trivial case the issue could be avoided by linking
5615 @file{libfoo.la} with @file{prog} instead of listing @file{foo.c} in
5616 @code{prog_SOURCES}.  But let's assume we really want to keep
5617 @file{prog} and @file{libfoo.la} separate.)
5618
5619 Technically, it means that we should build @file{foo.$(OBJEXT)} for
5620 @file{prog}, and @file{foo.lo} for @file{libfoo.la}.  The problem is
5621 that in the course of creating @file{foo.lo}, libtool may erase (or
5622 replace) @file{foo.$(OBJEXT)}, and this cannot be avoided.
5623
5624 Therefore, when Automake detects this situation it will complain
5625 with a message such as
5626 @example
5627 object `foo.$(OBJEXT)' created both with libtool and without
5628 @end example
5629
5630 A workaround for this issue is to ensure that these two objects get
5631 different basenames.  As explained in @ref{Renamed Objects}, this
5632 happens automatically when per-targets flags are used.
5633
5634 @example
5635 bin_PROGRAMS = prog
5636 prog_SOURCES = prog.c foo.c @dots{}
5637 prog_CFLAGS = $(AM_CFLAGS)
5638
5639 lib_LTLIBRARIES = libfoo.la
5640 libfoo_la_SOURCES = foo.c @dots{}
5641 @end example
5642
5643 @noindent
5644 Adding @samp{prog_CFLAGS = $(AM_CFLAGS)} is almost a no-op, because
5645 when the @code{prog_CFLAGS} is defined, it is used instead of
5646 @code{AM_CFLAGS}.  However as a side effect it will cause
5647 @file{prog.c} and @file{foo.c} to be compiled as
5648 @file{prog-prog.$(OBJEXT)} and @file{prog-foo.$(OBJEXT)}, which solves
5649 the issue.
5650
5651 @node Program and Library Variables
5652 @section Program and Library Variables
5653
5654 Associated with each program is a collection of variables that can be
5655 used to modify how that program is built.  There is a similar list of
5656 such variables for each library.  The canonical name of the program (or
5657 library) is used as a base for naming these variables.
5658
5659 In the list below, we use the name ``maude'' to refer to the program or
5660 library.  In your @file{Makefile.am} you would replace this with the
5661 canonical name of your program.  This list also refers to ``maude'' as a
5662 program, but in general the same rules apply for both static and dynamic
5663 libraries; the documentation below notes situations where programs and
5664 libraries differ.
5665
5666 @vtable @code
5667 @item maude_SOURCES
5668 This variable, if it exists, lists all the source files that are
5669 compiled to build the program.  These files are added to the
5670 distribution by default.  When building the program, Automake will cause
5671 each source file to be compiled to a single @file{.o} file (or
5672 @file{.lo} when using libtool).  Normally these object files are named
5673 after the source file, but other factors can change this.  If a file in
5674 the @code{_SOURCES} variable has an unrecognized extension, Automake
5675 will do one of two things with it.  If a suffix rule exists for turning
5676 files with the unrecognized extension into @file{.o} files, then
5677 @command{automake} will treat this file as it will any other source file
5678 (@pxref{Support for Other Languages}).  Otherwise, the file will be
5679 ignored as though it were a header file.
5680
5681 The prefixes @code{dist_} and @code{nodist_} can be used to control
5682 whether files listed in a @code{_SOURCES} variable are distributed.
5683 @code{dist_} is redundant, as sources are distributed by default, but it
5684 can be specified for clarity if desired.
5685
5686 It is possible to have both @code{dist_} and @code{nodist_} variants of
5687 a given @code{_SOURCES} variable at once; this lets you easily
5688 distribute some files and not others, for instance:
5689
5690 @example
5691 nodist_maude_SOURCES = nodist.c
5692 dist_maude_SOURCES = dist-me.c
5693 @end example
5694
5695 By default the output file (on Unix systems, the @file{.o} file) will
5696 be put into the current build directory.  However, if the option
5697 @option{subdir-objects} is in effect in the current directory then the
5698 @file{.o} file will be put into the subdirectory named after the
5699 source file.  For instance, with @option{subdir-objects} enabled,
5700 @file{sub/dir/file.c} will be compiled to @file{sub/dir/file.o}.  Some
5701 people prefer this mode of operation.  You can specify
5702 @option{subdir-objects} in @code{AUTOMAKE_OPTIONS} (@pxref{Options}).
5703 @cindex Subdirectory, objects in
5704 @cindex Objects in subdirectory
5705
5706
5707 @item EXTRA_maude_SOURCES
5708 Automake needs to know the list of files you intend to compile
5709 @emph{statically}.  For one thing, this is the only way Automake has of
5710 knowing what sort of language support a given @file{Makefile.in}
5711 requires.  @footnote{There are other, more obscure reasons for
5712 this limitation as well.}  This means that, for example, you can't put a
5713 configure substitution like @samp{@@my_sources@@} into a @samp{_SOURCES}
5714 variable.  If you intend to conditionally compile source files and use
5715 @file{configure} to substitute the appropriate object names into, e.g.,
5716 @code{_LDADD} (see below), then you should list the corresponding source
5717 files in the @code{EXTRA_} variable.
5718
5719 This variable also supports @code{dist_} and @code{nodist_} prefixes.
5720 For instance, @code{nodist_EXTRA_maude_SOURCES} would list extra
5721 sources that may need to be built, but should not be distributed.
5722
5723 @item maude_AR
5724 A static library is created by default by invoking @samp{$(AR)
5725 $(ARFLAGS)} followed by the name of the library and then the objects
5726 being put into the library.  You can override this by setting the
5727 @code{_AR} variable.  This is usually used with C++; some C++
5728 compilers require a special invocation in order to instantiate all the
5729 templates that should go into a library.  For instance, the SGI C++
5730 compiler likes this variable set like so:
5731 @example
5732 libmaude_a_AR = $(CXX) -ar -o
5733 @end example
5734
5735 @item maude_LIBADD
5736 Extra objects can be added to a @emph{library} using the @code{_LIBADD}
5737 variable.  For instance, this should be used for objects determined by
5738 @command{configure} (@pxref{A Library}).
5739
5740 In the case of libtool libraries, @code{maude_LIBADD} can also refer
5741 to other libtool libraries.
5742
5743 @item maude_LDADD
5744 Extra objects (@file{*.$(OBJEXT)}) and libraries (@file{*.a},
5745 @file{*.la}) can be added to a @emph{program} by listing them in the
5746 @code{_LDADD} variable.  For instance, this should be used for objects
5747 determined by @command{configure} (@pxref{Linking}).
5748
5749 @code{_LDADD} and @code{_LIBADD} are inappropriate for passing
5750 program-specific linker flags (except for @option{-l}, @option{-L},
5751 @option{-dlopen} and @option{-dlpreopen}).  Use the @code{_LDFLAGS} variable
5752 for this purpose.
5753
5754 For instance, if your @file{configure.ac} uses @code{AC_PATH_XTRA}, you
5755 could link your program against the X libraries like so:
5756
5757 @example
5758 maude_LDADD = $(X_PRE_LIBS) $(X_LIBS) $(X_EXTRA_LIBS)
5759 @end example
5760
5761 We recommend that you use @option{-l} and @option{-L} only when
5762 referring to third-party libraries, and give the explicit file names
5763 of any library built by your package.  Doing so will ensure that
5764 @code{maude_DEPENDENCIES} (see below) is correctly defined by default.
5765
5766 @item maude_LDFLAGS
5767 This variable is used to pass extra flags to the link step of a program
5768 or a shared library.  It overrides the @code{AM_LDFLAGS} variable.
5769
5770 @item maude_LIBTOOLFLAGS
5771 This variable is used to pass extra options to @command{libtool}.
5772 It overrides the @code{AM_LIBTOOLFLAGS} variable.
5773 These options are output before @command{libtool}'s @option{--mode=@var{mode}}
5774 option, so they should not be mode-specific options (those belong to
5775 the compiler or linker flags).  @xref{Libtool Flags}.
5776
5777 @item maude_DEPENDENCIES
5778 @itemx EXTRA_maude_DEPENDENCIES
5779 It is also occasionally useful to have a target (program or library)
5780 depend on some other file that is not actually part of that target.
5781 This can be done using the @code{_DEPENDENCIES} variable.  Each
5782 target depends on the contents of such a variable, but no further
5783 interpretation is done.
5784
5785 Since these dependencies are associated to the link rule used to
5786 create the programs they should normally list files used by the link
5787 command.  That is @file{*.$(OBJEXT)}, @file{*.a}, or @file{*.la} files
5788 for programs; @file{*.lo} and @file{*.la} files for Libtool libraries;
5789 and @file{*.$(OBJEXT)} files for static libraries.  In rare cases you
5790 may need to add other kinds of files such as linker scripts, but
5791 @emph{listing a source file in @code{_DEPENDENCIES} is wrong}.  If
5792 some source file needs to be built before all the components of a
5793 program are built, consider using the @code{BUILT_SOURCES} variable
5794 (@pxref{Sources}).
5795
5796 If @code{_DEPENDENCIES} is not supplied, it is computed by Automake.
5797 The automatically-assigned value is the contents of @code{_LDADD} or
5798 @code{_LIBADD}, with most configure substitutions, @option{-l}, @option{-L},
5799 @option{-dlopen} and @option{-dlpreopen} options removed.  The configure
5800 substitutions that are left in are only @samp{$(LIBOBJS)} and
5801 @samp{$(ALLOCA)}; these are left because it is known that they will not
5802 cause an invalid value for @code{_DEPENDENCIES} to be generated.
5803
5804 @code{_DEPENDENCIES} is more likely used to perform conditional
5805 compilation using an @code{AC_SUBST} variable that contains a list of
5806 objects.  @xref{Conditional Sources}, and @ref{Conditional Libtool
5807 Sources}.
5808
5809 The @code{EXTRA_*_DEPENDENCIES} variable may be useful for cases where
5810 you merely want to augment the @command{automake}-generated
5811 @code{_DEPENDENCIES} variable rather than replacing it.
5812
5813 @item maude_LINK
5814 You can override the linker on a per-program basis.  By default the
5815 linker is chosen according to the languages used by the program.  For
5816 instance, a program that includes C++ source code would use the C++
5817 compiler to link.  The @code{_LINK} variable must hold the name of a
5818 command that can be passed all the @file{.o} file names and libraries
5819 to link against as arguments.  Note that the name of the underlying
5820 program is @emph{not} passed to @code{_LINK}; typically one uses
5821 @samp{$@@}:
5822
5823 @example
5824 maude_LINK = $(CCLD) -magic -o $@@
5825 @end example
5826
5827 If a @code{_LINK} variable is not supplied, it may still be generated
5828 and used by Automake due to the use of per-target link flags such as
5829 @code{_CFLAGS}, @code{_LDFLAGS} or @code{_LIBTOOLFLAGS}, in cases where
5830 they apply.
5831
5832 @item maude_CCASFLAGS
5833 @itemx maude_CFLAGS
5834 @itemx maude_CPPFLAGS
5835 @itemx maude_CXXFLAGS
5836 @itemx maude_FFLAGS
5837 @itemx maude_GCJFLAGS
5838 @itemx maude_LFLAGS
5839 @itemx maude_OBJCFLAGS
5840 @itemx maude_RFLAGS
5841 @itemx maude_UPCFLAGS
5842 @itemx maude_YFLAGS
5843 @cindex per-target compilation flags, defined
5844 Automake allows you to set compilation flags on a per-program (or
5845 per-library) basis.  A single source file can be included in several
5846 programs, and it will potentially be compiled with different flags for
5847 each program.  This works for any language directly supported by
5848 Automake.  These @dfn{per-target compilation flags} are
5849 @samp{_CCASFLAGS},
5850 @samp{_CFLAGS},
5851 @samp{_CPPFLAGS},
5852 @samp{_CXXFLAGS},
5853 @samp{_FFLAGS},
5854 @samp{_GCJFLAGS},
5855 @samp{_LFLAGS},
5856 @samp{_OBJCFLAGS},
5857 @samp{_RFLAGS},
5858 @samp{_UPCFLAGS}, and
5859 @samp{_YFLAGS}.
5860
5861 When using a per-target compilation flag, Automake will choose a
5862 different name for the intermediate object files.  Ordinarily a file
5863 like @file{sample.c} will be compiled to produce @file{sample.o}.
5864 However, if the program's @code{_CFLAGS} variable is set, then the
5865 object file will be named, for instance, @file{maude-sample.o}.  (See
5866 also @ref{Renamed Objects}.)  The use of per-target compilation flags
5867 with C sources requires that the macro @code{AM_PROG_CC_C_O} be called
5868 from @file{configure.ac}.
5869
5870 In compilations with per-target flags, the ordinary @samp{AM_} form of
5871 the flags variable is @emph{not} automatically included in the
5872 compilation (however, the user form of the variable @emph{is} included).
5873 So for instance, if you want the hypothetical @file{maude} compilations
5874 to also use the value of @code{AM_CFLAGS}, you would need to write:
5875
5876 @example
5877 maude_CFLAGS = @dots{} your flags @dots{} $(AM_CFLAGS)
5878 @end example
5879
5880 @xref{Flag Variables Ordering}, for more discussion about the
5881 interaction between user variables, @samp{AM_} shadow variables, and
5882 per-target variables.
5883
5884 @item maude_SHORTNAME
5885 On some platforms the allowable file names are very short.  In order to
5886 support these systems and per-target compilation flags at the same
5887 time, Automake allows you to set a ``short name'' that will influence
5888 how intermediate object files are named.  For instance, in the following
5889 example,
5890
5891 @example
5892 bin_PROGRAMS = maude
5893 maude_CPPFLAGS = -DSOMEFLAG
5894 maude_SHORTNAME = m
5895 maude_SOURCES = sample.c @dots{}
5896 @end example
5897
5898 @noindent
5899 the object file would be named @file{m-sample.o} rather than
5900 @file{maude-sample.o}.
5901
5902 This facility is rarely needed in practice,
5903 and we recommend avoiding it until you find it is required.
5904 @end vtable
5905
5906 @node Default _SOURCES
5907 @section Default @code{_SOURCES}
5908
5909 @vindex _SOURCES
5910 @vindex SOURCES
5911 @cindex @code{_SOURCES}, default
5912 @cindex default @code{_SOURCES}
5913 @vindex AM_DEFAULT_SOURCE_EXT
5914
5915 @code{_SOURCES} variables are used to specify source files of programs
5916 (@pxref{A Program}), libraries (@pxref{A Library}), and Libtool
5917 libraries (@pxref{A Shared Library}).
5918
5919 When no such variable is specified for a target, Automake will define
5920 one itself.  The default is to compile a single C file whose base name
5921 is the name of the target itself, with any extension replaced by
5922 @code{AM_DEFAULT_SOURCE_EXT}, which defaults to @file{.c}.
5923
5924 For example if you have the following somewhere in your
5925 @file{Makefile.am} with no corresponding @code{libfoo_a_SOURCES}:
5926
5927 @example
5928 lib_LIBRARIES = libfoo.a sub/libc++.a
5929 @end example
5930
5931 @noindent
5932 @file{libfoo.a} will be built using a default source file named
5933 @file{libfoo.c}, and @file{sub/libc++.a} will be built from
5934 @file{sub/libc++.c}.  (In older versions @file{sub/libc++.a}
5935 would be built from @file{sub_libc___a.c}, i.e., the default source
5936 was the canonized name of the target, with @file{.c} appended.
5937 We believe the new behavior is more sensible, but for backward
5938 compatibility @command{automake} will use the old name if a file or a rule
5939 with that name exists and @code{AM_DEFAULT_SOURCE_EXT} is not used.)
5940
5941 @cindex @code{check_PROGRAMS} example
5942 @vindex check_PROGRAMS
5943 Default sources are mainly useful in test suites, when building many
5944 test programs each from a single source.  For instance, in
5945
5946 @example
5947 check_PROGRAMS = test1 test2 test3
5948 AM_DEFAULT_SOURCE_EXT = .cpp
5949 @end example
5950
5951 @noindent
5952 @file{test1}, @file{test2}, and @file{test3} will be built
5953 from @file{test1.cpp}, @file{test2.cpp}, and @file{test3.cpp}.
5954 Without the last line, they will be built from @file{test1.c},
5955 @file{test2.c}, and @file{test3.c}.
5956
5957 @cindex Libtool modules, default source example
5958 @cindex default source, Libtool modules example
5959 Another case where this is convenient is building many Libtool modules
5960 (@file{module@var{n}.la}), each defined in its own file
5961 (@file{module@var{n}.c}).
5962
5963 @example
5964 AM_LDFLAGS = -module
5965 lib_LTLIBRARIES = module1.la module2.la module3.la
5966 @end example
5967
5968 @cindex empty @code{_SOURCES}
5969 @cindex @code{_SOURCES}, empty
5970 Finally, there is one situation where this default source computation
5971 needs to be avoided: when a target should not be built from sources.
5972 We already saw such an example in @ref{true}; this happens when all
5973 the constituents of a target have already been compiled and just need
5974 to be combined using a @code{_LDADD} variable.  Then it is necessary
5975 to define an empty @code{_SOURCES} variable, so that @command{automake}
5976 does not compute a default.
5977
5978 @example
5979 bin_PROGRAMS = target
5980 target_SOURCES =
5981 target_LDADD = libmain.a libmisc.a
5982 @end example
5983
5984 @node LIBOBJS
5985 @section Special handling for @code{LIBOBJS} and @code{ALLOCA}
5986
5987 @cindex @code{LIBOBJS}, example
5988 @cindex @code{ALLOCA}, example
5989 @cindex @code{LIBOBJS}, special handling
5990 @cindex @code{ALLOCA}, special handling
5991 @vindex LTLIBOBJS
5992 @vindex LIBOBJS
5993 @vindex LTALLOCA
5994 @vindex ALLOCA
5995
5996 The @samp{$(LIBOBJS)} and @samp{$(ALLOCA)} variables list object
5997 files that should be compiled into the project to provide an
5998 implementation for functions that are missing or broken on the host
5999 system.  They are substituted by @file{configure}.
6000
6001 @acindex AC_LIBOBJ
6002
6003 These variables are defined by Autoconf macros such as
6004 @code{AC_LIBOBJ}, @code{AC_REPLACE_FUNCS} (@pxref{Generic Functions, ,
6005 Generic Function Checks, autoconf, The Autoconf Manual}), or
6006 @code{AC_FUNC_ALLOCA} (@pxref{Particular Functions, , Particular
6007 Function Checks, autoconf, The Autoconf Manual}).  Many other Autoconf
6008 macros call @code{AC_LIBOBJ} or @code{AC_REPLACE_FUNCS} to
6009 populate @samp{$(LIBOBJS)}.
6010
6011 @acindex AC_LIBSOURCE
6012
6013 Using these variables is very similar to doing conditional compilation
6014 using @code{AC_SUBST} variables, as described in @ref{Conditional
6015 Sources}.  That is, when building a program, @samp{$(LIBOBJS)} and
6016 @samp{$(ALLOCA)} should be added to the associated @samp{*_LDADD}
6017 variable, or to the @samp{*_LIBADD} variable when building a library.
6018 However there is no need to list the corresponding sources in
6019 @samp{EXTRA_*_SOURCES} nor to define @samp{*_DEPENDENCIES}.  Automake
6020 automatically adds @samp{$(LIBOBJS)} and @samp{$(ALLOCA)} to the
6021 dependencies, and it will discover the list of corresponding source
6022 files automatically (by tracing the invocations of the
6023 @code{AC_LIBSOURCE} Autoconf macros).  If you have already defined
6024 @samp{*_DEPENDENCIES} explicitly for an unrelated reason, then you
6025 either need to add these variables manually, or use
6026 @samp{EXTRA_*_DEPENDENCIES} instead of @samp{*_DEPENDENCIES}.
6027
6028 These variables are usually used to build a portability library that
6029 is linked with all the programs of the project.  We now review a
6030 sample setup.  First, @file{configure.ac} contains some checks that
6031 affect either @code{LIBOBJS} or @code{ALLOCA}.
6032
6033 @example
6034 # configure.ac
6035 @dots{}
6036 AC_CONFIG_LIBOBJ_DIR([lib])
6037 @dots{}
6038 AC_FUNC_MALLOC             dnl May add malloc.$(OBJEXT) to LIBOBJS
6039 AC_FUNC_MEMCMP             dnl May add memcmp.$(OBJEXT) to LIBOBJS
6040 AC_REPLACE_FUNCS([strdup]) dnl May add strdup.$(OBJEXT) to LIBOBJS
6041 AC_FUNC_ALLOCA             dnl May add alloca.$(OBJEXT) to ALLOCA
6042 @dots{}
6043 AC_CONFIG_FILES([
6044   lib/Makefile
6045   src/Makefile
6046 ])
6047 AC_OUTPUT
6048 @end example
6049
6050 @acindex AC_CONFIG_LIBOBJ_DIR
6051
6052 The @code{AC_CONFIG_LIBOBJ_DIR} tells Autoconf that the source files
6053 of these object files are to be found in the @file{lib/} directory.
6054 Automake can also use this information, otherwise it expects the
6055 source files are to be in the directory where the @samp{$(LIBOBJS)}
6056 and @samp{$(ALLOCA)} variables are used.
6057
6058 The @file{lib/} directory should therefore contain @file{malloc.c},
6059 @file{memcmp.c}, @file{strdup.c}, @file{alloca.c}.  Here is its
6060 @file{Makefile.am}:
6061
6062 @example
6063 # lib/Makefile.am
6064
6065 noinst_LIBRARIES = libcompat.a
6066 libcompat_a_SOURCES =
6067 libcompat_a_LIBADD = $(LIBOBJS) $(ALLOCA)
6068 @end example
6069
6070 The library can have any name, of course, and anyway it is not going
6071 to be installed: it just holds the replacement versions of the missing
6072 or broken functions so we can later link them in.  Many projects
6073 also include extra functions, specific to the project, in that
6074 library: they are simply added on the @code{_SOURCES} line.
6075
6076 @cindex Empty libraries and @samp{$(LIBOBJS)}
6077 @cindex @samp{$(LIBOBJS)} and empty libraries
6078 There is a small trap here, though: @samp{$(LIBOBJS)} and
6079 @samp{$(ALLOCA)} might be empty, and building an empty library is not
6080 portable.  You should ensure that there is always something to put in
6081 @file{libcompat.a}.  Most projects will also add some utility
6082 functions in that directory, and list them in
6083 @code{libcompat_a_SOURCES}, so in practice @file{libcompat.a} cannot
6084 be empty.
6085
6086 Finally here is how this library could be used from the @file{src/}
6087 directory.
6088
6089 @example
6090 # src/Makefile.am
6091
6092 # Link all programs in this directory with libcompat.a
6093 LDADD = ../lib/libcompat.a
6094
6095 bin_PROGRAMS = tool1 tool2 @dots{}
6096 tool1_SOURCES = @dots{}
6097 tool2_SOURCES = @dots{}
6098 @end example
6099
6100 When option @option{subdir-objects} is not used, as in the above
6101 example, the variables @samp{$(LIBOBJS)} or @samp{$(ALLOCA)} can only
6102 be used in the directory where their sources lie.  E.g., here it would
6103 be wrong to use @samp{$(LIBOBJS)} or @samp{$(ALLOCA)} in
6104 @file{src/Makefile.am}.  However if both @option{subdir-objects} and
6105 @code{AC_CONFIG_LIBOBJ_DIR} are used, it is OK to use these variables
6106 in other directories.  For instance @file{src/Makefile.am} could be
6107 changed as follows.
6108
6109 @example
6110 # src/Makefile.am
6111
6112 AUTOMAKE_OPTIONS = subdir-objects
6113 LDADD = $(LIBOBJS) $(ALLOCA)
6114
6115 bin_PROGRAMS = tool1 tool2 @dots{}
6116 tool1_SOURCES = @dots{}
6117 tool2_SOURCES = @dots{}
6118 @end example
6119
6120 Because @samp{$(LIBOBJS)} and @samp{$(ALLOCA)} contain object
6121 file names that end with @samp{.$(OBJEXT)}, they are not suitable for
6122 Libtool libraries (where the expected object extension is @file{.lo}):
6123 @code{LTLIBOBJS} and @code{LTALLOCA} should be used instead.
6124
6125 @code{LTLIBOBJS} is defined automatically by Autoconf and should not
6126 be defined by hand (as in the past), however at the time of writing
6127 @code{LTALLOCA} still needs to be defined from @code{ALLOCA} manually.
6128 @xref{AC_LIBOBJ vs LIBOBJS, , @code{AC_LIBOBJ} vs.@: @code{LIBOBJS},
6129 autoconf, The Autoconf Manual}.
6130
6131
6132 @node Program Variables
6133 @section Variables used when building a program
6134
6135 Occasionally it is useful to know which @file{Makefile} variables
6136 Automake uses for compilations, and in which order (@pxref{Flag
6137 Variables Ordering}); for instance, you might need to do your own
6138 compilation in some special cases.
6139
6140 Some variables are inherited from Autoconf; these are @code{CC},
6141 @code{CFLAGS}, @code{CPPFLAGS}, @code{DEFS}, @code{LDFLAGS}, and
6142 @code{LIBS}.
6143 @vindex CC
6144 @vindex CFLAGS
6145 @vindex CPPFLAGS
6146 @vindex DEFS
6147 @vindex LDFLAGS
6148 @vindex LIBS
6149
6150 There are some additional variables that Automake defines on its own:
6151
6152 @vtable @code
6153 @item AM_CPPFLAGS
6154 The contents of this variable are passed to every compilation that invokes
6155 the C preprocessor; it is a list of arguments to the preprocessor.  For
6156 instance, @option{-I} and @option{-D} options should be listed here.
6157
6158 Automake already provides some @option{-I} options automatically, in a
6159 separate variable that is also passed to every compilation that invokes
6160 the C preprocessor.  In particular it generates @samp{-I.},
6161 @samp{-I$(srcdir)}, and a @option{-I} pointing to the directory holding
6162 @file{config.h} (if you've used @code{AC_CONFIG_HEADERS} or
6163 @code{AM_CONFIG_HEADER}).  You can disable the default @option{-I}
6164 options using the @option{nostdinc} option.
6165
6166 When a file to be included is generated during the build and not part
6167 of a distribution tarball, its location is under @code{$(builddir)},
6168 not under @code{$(srcdir)}.  This matters especially for packages that
6169 use header files placed in sub-directories and want to allow builds
6170 outside the source tree (@pxref{VPATH Builds}). In that case we
6171 recommend to use a pair of @option{-I} options, such as, e.g.,
6172 @samp{-Isome/subdir -I$(srcdir)/some/subdir} or
6173 @samp{-I$(top_builddir)/some/subdir -I$(top_srcdir)/some/subdir}.
6174 Note that the reference to the build tree should come before the
6175 reference to the source tree, so that accidentally leftover generated
6176 files in the source directory are ignored.
6177
6178 @code{AM_CPPFLAGS} is ignored in preference to a per-executable (or
6179 per-library) @code{_CPPFLAGS} variable if it is defined.
6180
6181 @item INCLUDES
6182 This does the same job as @code{AM_CPPFLAGS} (or any per-target
6183 @code{_CPPFLAGS} variable if it is used).  It is an older name for the
6184 same functionality.  This variable is deprecated; we suggest using
6185 @code{AM_CPPFLAGS} and per-target @code{_CPPFLAGS} instead.
6186
6187 @item AM_CFLAGS
6188 This is the variable the @file{Makefile.am} author can use to pass
6189 in additional C compiler flags.  It is more fully documented elsewhere.
6190 In some situations, this is not used, in preference to the
6191 per-executable (or per-library) @code{_CFLAGS}.
6192
6193 @item COMPILE
6194 This is the command used to actually compile a C source file.  The
6195 file name is appended to form the complete command line.
6196
6197 @item AM_LDFLAGS
6198 This is the variable the @file{Makefile.am} author can use to pass
6199 in additional linker flags.  In some situations, this is not used, in
6200 preference to the per-executable (or per-library) @code{_LDFLAGS}.
6201
6202 @item LINK
6203 This is the command used to actually link a C program.  It already
6204 includes @samp{-o $@@} and the usual variable references (for instance,
6205 @code{CFLAGS}); it takes as ``arguments'' the names of the object files
6206 and libraries to link in.  This variable is not used when the linker is
6207 overridden with a per-target @code{_LINK} variable or per-target flags
6208 cause Automake to define such a @code{_LINK} variable.
6209 @end vtable
6210
6211
6212 @node Yacc and Lex
6213 @section Yacc and Lex support
6214
6215 Automake has somewhat idiosyncratic support for Yacc and Lex.
6216
6217 Automake assumes that the @file{.c} file generated by @command{yacc}
6218 (or @command{lex}) should be named using the basename of the input
6219 file.  That is, for a yacc source file @file{foo.y}, Automake will
6220 cause the intermediate file to be named @file{foo.c} (as opposed to
6221 @file{y.tab.c}, which is more traditional).
6222
6223 The extension of a yacc source file is used to determine the extension
6224 of the resulting C or C++ file.  Files with the extension @file{.y}
6225 will be turned into @file{.c} files; likewise, @file{.yy} will become
6226 @file{.cc}; @file{.y++}, @file{c++}; @file{.yxx}, @file{.cxx}; and
6227 @file{.ypp}, @file{.cpp}.
6228
6229 Likewise, lex source files can be used to generate C or C++; the
6230 extensions @file{.l}, @file{.ll}, @file{.l++}, @file{.lxx}, and
6231 @file{.lpp} are recognized.
6232
6233 You should never explicitly mention the intermediate (C or C++) file
6234 in any @code{SOURCES} variable; only list the source file.
6235
6236 The intermediate files generated by @command{yacc} (or @command{lex})
6237 will be included in any distribution that is made.  That way the user
6238 doesn't need to have @command{yacc} or @command{lex}.
6239
6240 If a @command{yacc} source file is seen, then your @file{configure.ac} must
6241 define the variable @code{YACC}.  This is most easily done by invoking
6242 the macro @code{AC_PROG_YACC} (@pxref{Particular Programs, , Particular
6243 Program Checks, autoconf, The Autoconf Manual}).
6244
6245 @vindex YFLAGS
6246 @vindex AM_YFLAGS
6247 When @code{yacc} is invoked, it is passed @code{AM_YFLAGS} and
6248 @code{YFLAGS}.  The latter is a user variable and the former is
6249 intended for the @file{Makefile.am} author.
6250
6251 @code{AM_YFLAGS} is usually used to pass the @option{-d} option to
6252 @command{yacc}.  Automake knows what this means and will automatically
6253 adjust its rules to update and distribute the header file built by
6254 @samp{yacc -d}@footnote{Please note that @command{automake} recognizes
6255 @option{-d} in @code{AM_YFLAGS} only if it is not clustered with other
6256 options; for example, it won't be recognized if @code{AM_YFLAGS} is
6257 @option{-dt}, but it will be if @code{AM_YFLAGS} is @option{-d -t} or
6258 @option{-d -t}}.
6259 What Automake cannot guess, though, is where this
6260 header will be used: it is up to you to ensure the header gets built
6261 before it is first used.  Typically this is necessary in order for
6262 dependency tracking to work when the header is included by another
6263 file.  The common solution is listing the header file in
6264 @code{BUILT_SOURCES} (@pxref{Sources}) as follows.
6265
6266 @example
6267 BUILT_SOURCES = parser.h
6268 AM_YFLAGS = -d
6269 bin_PROGRAMS = foo
6270 foo_SOURCES = @dots{} parser.y @dots{}
6271 @end example
6272
6273 If a @command{lex} source file is seen, then your @file{configure.ac}
6274 must define the variable @code{LEX}.  You can use @code{AC_PROG_LEX}
6275 to do this (@pxref{Particular Programs, , Particular Program Checks,
6276 autoconf, The Autoconf Manual}), but using @code{AM_PROG_LEX} macro
6277 (@pxref{Macros}) is recommended.
6278
6279 @vindex LFLAGS
6280 @vindex AM_LFLAGS
6281 When @command{lex} is invoked, it is passed @code{AM_LFLAGS} and
6282 @code{LFLAGS}.  The latter is a user variable and the former is
6283 intended for the @file{Makefile.am} author.
6284
6285 When @code{AM_MAINTAINER_MODE} (@pxref{maintainer-mode}) is used, the
6286 rebuild rule for distributed Yacc and Lex sources are only used when
6287 @code{maintainer-mode} is enabled, or when the files have been erased.
6288
6289 @cindex @command{ylwrap}
6290 @cindex @command{yacc}, multiple parsers
6291 @cindex Multiple @command{yacc} parsers
6292 @cindex Multiple @command{lex} lexers
6293 @cindex @command{lex}, multiple lexers
6294
6295 When @command{lex} or @command{yacc} sources are used, @code{automake
6296 -i} automatically installs an auxiliary program called
6297 @command{ylwrap} in your package (@pxref{Auxiliary Programs}).  This
6298 program is used by the build rules to rename the output of these
6299 tools, and makes it possible to include multiple @command{yacc} (or
6300 @command{lex}) source files in a single directory.  (This is necessary
6301 because yacc's output file name is fixed, and a parallel make could
6302 conceivably invoke more than one instance of @command{yacc}
6303 simultaneously.)
6304
6305 For @command{yacc}, simply managing locking is insufficient.  The output of
6306 @command{yacc} always uses the same symbol names internally, so it isn't
6307 possible to link two @command{yacc} parsers into the same executable.
6308
6309 We recommend using the following renaming hack used in @command{gdb}:
6310 @example
6311 #define yymaxdepth c_maxdepth
6312 #define yyparse c_parse
6313 #define yylex   c_lex
6314 #define yyerror c_error
6315 #define yylval  c_lval
6316 #define yychar  c_char
6317 #define yydebug c_debug
6318 #define yypact  c_pact
6319 #define yyr1    c_r1
6320 #define yyr2    c_r2
6321 #define yydef   c_def
6322 #define yychk   c_chk
6323 #define yypgo   c_pgo
6324 #define yyact   c_act
6325 #define yyexca  c_exca
6326 #define yyerrflag c_errflag
6327 #define yynerrs c_nerrs
6328 #define yyps    c_ps
6329 #define yypv    c_pv
6330 #define yys     c_s
6331 #define yy_yys  c_yys
6332 #define yystate c_state
6333 #define yytmp   c_tmp
6334 #define yyv     c_v
6335 #define yy_yyv  c_yyv
6336 #define yyval   c_val
6337 #define yylloc  c_lloc
6338 #define yyreds  c_reds
6339 #define yytoks  c_toks
6340 #define yylhs   c_yylhs
6341 #define yylen   c_yylen
6342 #define yydefred c_yydefred
6343 #define yydgoto  c_yydgoto
6344 #define yysindex c_yysindex
6345 #define yyrindex c_yyrindex
6346 #define yygindex c_yygindex
6347 #define yytable  c_yytable
6348 #define yycheck  c_yycheck
6349 #define yyname   c_yyname
6350 #define yyrule   c_yyrule
6351 @end example
6352
6353 For each define, replace the @samp{c_} prefix with whatever you like.
6354 These defines work for @command{bison}, @command{byacc}, and
6355 traditional @code{yacc}s.  If you find a parser generator that uses a
6356 symbol not covered here, please report the new name so it can be added
6357 to the list.
6358
6359
6360 @node C++ Support
6361 @section C++ Support
6362
6363 @cindex C++ support
6364 @cindex Support for C++
6365
6366 Automake includes full support for C++.
6367
6368 Any package including C++ code must define the output variable
6369 @code{CXX} in @file{configure.ac}; the simplest way to do this is to use
6370 the @code{AC_PROG_CXX} macro (@pxref{Particular Programs, , Particular
6371 Program Checks, autoconf, The Autoconf Manual}).
6372
6373 A few additional variables are defined when a C++ source file is seen:
6374
6375 @vtable @code
6376 @item CXX
6377 The name of the C++ compiler.
6378
6379 @item CXXFLAGS
6380 Any flags to pass to the C++ compiler.
6381
6382 @item AM_CXXFLAGS
6383 The maintainer's variant of @code{CXXFLAGS}.
6384
6385 @item CXXCOMPILE
6386 The command used to actually compile a C++ source file.  The file name
6387 is appended to form the complete command line.
6388
6389 @item CXXLINK
6390 The command used to actually link a C++ program.
6391 @end vtable
6392
6393
6394 @node Objective C Support
6395 @section Objective C Support
6396
6397 @cindex Objective C support
6398 @cindex Support for Objective C
6399
6400 Automake includes some support for Objective C.
6401
6402 Any package including Objective C code must define the output variable
6403 @code{OBJC} in @file{configure.ac}; the simplest way to do this is to use
6404 the @code{AC_PROG_OBJC} macro (@pxref{Particular Programs, , Particular
6405 Program Checks, autoconf, The Autoconf Manual}).
6406
6407 A few additional variables are defined when an Objective C source file
6408 is seen:
6409
6410 @vtable @code
6411 @item OBJC
6412 The name of the Objective C compiler.
6413
6414 @item OBJCFLAGS
6415 Any flags to pass to the Objective C compiler.
6416
6417 @item AM_OBJCFLAGS
6418 The maintainer's variant of @code{OBJCFLAGS}.
6419
6420 @item OBJCCOMPILE
6421 The command used to actually compile an Objective C source file.  The
6422 file name is appended to form the complete command line.
6423
6424 @item OBJCLINK
6425 The command used to actually link an Objective C program.
6426 @end vtable
6427
6428
6429 @node Unified Parallel C Support
6430 @section Unified Parallel C Support
6431
6432 @cindex Unified Parallel C support
6433 @cindex Support for Unified Parallel C
6434
6435 Automake includes some support for Unified Parallel C.
6436
6437 Any package including Unified Parallel C code must define the output
6438 variable @code{UPC} in @file{configure.ac}; the simplest way to do
6439 this is to use the @code{AM_PROG_UPC} macro (@pxref{Public Macros}).
6440
6441 A few additional variables are defined when a Unified Parallel C
6442 source file is seen:
6443
6444 @vtable @code
6445 @item UPC
6446 The name of the Unified Parallel C compiler.
6447
6448 @item UPCFLAGS
6449 Any flags to pass to the Unified Parallel C compiler.
6450
6451 @item AM_UPCFLAGS
6452 The maintainer's variant of @code{UPCFLAGS}.
6453
6454 @item UPCCOMPILE
6455 The command used to actually compile a Unified Parallel C source file.
6456 The file name is appended to form the complete command line.
6457
6458 @item UPCLINK
6459 The command used to actually link a Unified Parallel C program.
6460 @end vtable
6461
6462
6463 @node Assembly Support
6464 @section Assembly Support
6465
6466 Automake includes some support for assembly code.  There are two forms
6467 of assembler files: normal (@file{*.s}) and preprocessed by @code{CPP}
6468 (@file{*.S} or @file{*.sx}).
6469
6470 @vindex CCAS
6471 @vindex CCASFLAGS
6472 @vindex CPPFLAGS
6473 @vindex AM_CCASFLAGS
6474 @vindex AM_CPPFLAGS
6475 The variable @code{CCAS} holds the name of the compiler used to build
6476 assembly code.  This compiler must work a bit like a C compiler; in
6477 particular it must accept @option{-c} and @option{-o}.  The values of
6478 @code{CCASFLAGS} and @code{AM_CCASFLAGS} (or its per-target
6479 definition) is passed to the compilation.  For preprocessed files,
6480 @code{DEFS}, @code{DEFAULT_INCLUDES}, @code{INCLUDES}, @code{CPPFLAGS}
6481 and @code{AM_CPPFLAGS} are also used.
6482
6483 The autoconf macro @code{AM_PROG_AS} will define @code{CCAS} and
6484 @code{CCASFLAGS} for you (unless they are already set, it simply sets
6485 @code{CCAS} to the C compiler and @code{CCASFLAGS} to the C compiler
6486 flags), but you are free to define these variables by other means.
6487
6488 Only the suffixes @file{.s}, @file{.S}, and @file{.sx} are recognized by
6489 @command{automake} as being files containing assembly code.
6490
6491
6492 @node Fortran 77 Support
6493 @comment  node-name,  next,  previous,  up
6494 @section Fortran 77 Support
6495
6496 @cindex Fortran 77 support
6497 @cindex Support for Fortran 77
6498
6499 Automake includes full support for Fortran 77.
6500
6501 Any package including Fortran 77 code must define the output variable
6502 @code{F77} in @file{configure.ac}; the simplest way to do this is to use
6503 the @code{AC_PROG_F77} macro (@pxref{Particular Programs, , Particular
6504 Program Checks, autoconf, The Autoconf Manual}).
6505
6506 A few additional variables are defined when a Fortran 77 source file is
6507 seen:
6508
6509 @vtable @code
6510
6511 @item F77
6512 The name of the Fortran 77 compiler.
6513
6514 @item FFLAGS
6515 Any flags to pass to the Fortran 77 compiler.
6516
6517 @item AM_FFLAGS
6518 The maintainer's variant of @code{FFLAGS}.
6519
6520 @item RFLAGS
6521 Any flags to pass to the Ratfor compiler.
6522
6523 @item AM_RFLAGS
6524 The maintainer's variant of @code{RFLAGS}.
6525
6526 @item F77COMPILE
6527 The command used to actually compile a Fortran 77 source file.  The file
6528 name is appended to form the complete command line.
6529
6530 @item FLINK
6531 The command used to actually link a pure Fortran 77 program or shared
6532 library.
6533
6534 @end vtable
6535
6536 Automake can handle preprocessing Fortran 77 and Ratfor source files in
6537 addition to compiling them@footnote{Much, if not most, of the
6538 information in the following sections pertaining to preprocessing
6539 Fortran 77 programs was taken almost verbatim from @ref{Catalogue of
6540 Rules, , Catalogue of Rules, make, The GNU Make Manual}.}.  Automake
6541 also contains some support for creating programs and shared libraries
6542 that are a mixture of Fortran 77 and other languages (@pxref{Mixing
6543 Fortran 77 With C and C++}).
6544
6545 These issues are covered in the following sections.
6546
6547 @menu
6548 * Preprocessing Fortran 77::    Preprocessing Fortran 77 sources
6549 * Compiling Fortran 77 Files::  Compiling Fortran 77 sources
6550 * Mixing Fortran 77 With C and C++::  Mixing Fortran 77 With C and C++
6551 @end menu
6552
6553
6554 @node Preprocessing Fortran 77
6555 @comment  node-name,  next,  previous,  up
6556 @subsection Preprocessing Fortran 77
6557
6558 @cindex Preprocessing Fortran 77
6559 @cindex Fortran 77, Preprocessing
6560 @cindex Ratfor programs
6561
6562 @file{N.f} is made automatically from @file{N.F} or @file{N.r}.  This
6563 rule runs just the preprocessor to convert a preprocessable Fortran 77
6564 or Ratfor source file into a strict Fortran 77 source file.  The precise
6565 command used is as follows:
6566
6567 @table @file
6568
6569 @item .F
6570 @code{$(F77) -F $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS)@*
6571 $(AM_FFLAGS) $(FFLAGS)}
6572
6573 @item .r
6574 @code{$(F77) -F $(AM_FFLAGS) $(FFLAGS) $(AM_RFLAGS) $(RFLAGS)}
6575
6576 @end table
6577
6578
6579 @node Compiling Fortran 77 Files
6580 @comment  node-name,  next,  previous,  up
6581 @subsection Compiling Fortran 77 Files
6582
6583 @file{N.o} is made automatically from @file{N.f}, @file{N.F} or
6584 @file{N.r} by running the Fortran 77 compiler.  The precise command used
6585 is as follows:
6586
6587 @table @file
6588
6589 @item .f
6590 @code{$(F77) -c $(AM_FFLAGS) $(FFLAGS)}
6591
6592 @item .F
6593 @code{$(F77) -c $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS)@*
6594 $(AM_FFLAGS) $(FFLAGS)}
6595
6596 @item .r
6597 @code{$(F77) -c $(AM_FFLAGS) $(FFLAGS) $(AM_RFLAGS) $(RFLAGS)}
6598
6599 @end table
6600
6601
6602 @node Mixing Fortran 77 With C and C++
6603 @comment  node-name,  next,  previous,  up
6604 @subsection Mixing Fortran 77 With C and C++
6605
6606 @cindex Fortran 77, mixing with C and C++
6607 @cindex Mixing Fortran 77 with C and C++
6608 @cindex Linking Fortran 77 with C and C++
6609 @cindex cfortran
6610 @cindex Mixing Fortran 77 with C and/or C++
6611
6612 Automake currently provides @emph{limited} support for creating programs
6613 and shared libraries that are a mixture of Fortran 77 and C and/or C++.
6614 However, there are many other issues related to mixing Fortran 77 with
6615 other languages that are @emph{not} (currently) handled by Automake, but
6616 that are handled by other packages@footnote{For example,
6617 @uref{http://www-zeus.desy.de/~burow/cfortran/, the cfortran package}
6618 addresses all of these inter-language issues, and runs under nearly all
6619 Fortran 77, C and C++ compilers on nearly all platforms.  However,
6620 @command{cfortran} is not yet Free Software, but it will be in the next
6621 major release.}.
6622
6623 Automake can help in two ways:
6624
6625 @enumerate
6626 @item
6627 Automatic selection of the linker depending on which combinations of
6628 source code.
6629
6630 @item
6631 Automatic selection of the appropriate linker flags (e.g., @option{-L} and
6632 @option{-l}) to pass to the automatically selected linker in order to link
6633 in the appropriate Fortran 77 intrinsic and run-time libraries.
6634
6635 @cindex @code{FLIBS}, defined
6636 @vindex FLIBS
6637 These extra Fortran 77 linker flags are supplied in the output variable
6638 @code{FLIBS} by the @code{AC_F77_LIBRARY_LDFLAGS} Autoconf macro
6639 supplied with newer versions of Autoconf (Autoconf version 2.13 and
6640 later).  @xref{Fortran Compiler, , Fortran Compiler Characteristics,
6641 autoconf, The Autoconf Manual}.
6642 @end enumerate
6643
6644 If Automake detects that a program or shared library (as mentioned in
6645 some @code{_PROGRAMS} or @code{_LTLIBRARIES} primary) contains source
6646 code that is a mixture of Fortran 77 and C and/or C++, then it requires
6647 that the macro @code{AC_F77_LIBRARY_LDFLAGS} be called in
6648 @file{configure.ac}, and that either @code{$(FLIBS)}
6649 appear in the appropriate @code{_LDADD} (for programs) or @code{_LIBADD}
6650 (for shared libraries) variables.  It is the responsibility of the
6651 person writing the @file{Makefile.am} to make sure that @samp{$(FLIBS)}
6652 appears in the appropriate @code{_LDADD} or
6653 @code{_LIBADD} variable.
6654
6655 @cindex Mixed language example
6656 @cindex Example, mixed language
6657
6658 For example, consider the following @file{Makefile.am}:
6659
6660 @example
6661 bin_PROGRAMS = foo
6662 foo_SOURCES  = main.cc foo.f
6663 foo_LDADD    = libfoo.la $(FLIBS)
6664
6665 pkglib_LTLIBRARIES = libfoo.la
6666 libfoo_la_SOURCES  = bar.f baz.c zardoz.cc
6667 libfoo_la_LIBADD   = $(FLIBS)
6668 @end example
6669
6670 In this case, Automake will insist that @code{AC_F77_LIBRARY_LDFLAGS}
6671 is mentioned in @file{configure.ac}.  Also, if @samp{$(FLIBS)} hadn't
6672 been mentioned in @code{foo_LDADD} and @code{libfoo_la_LIBADD}, then
6673 Automake would have issued a warning.
6674
6675 @menu
6676 * How the Linker is Chosen::    Automatic linker selection
6677 @end menu
6678
6679 @node How the Linker is Chosen
6680 @comment  node-name,  next,  previous,  up
6681 @subsubsection How the Linker is Chosen
6682
6683 @cindex Automatic linker selection
6684 @cindex Selecting the linker automatically
6685
6686 When a program or library mixes several languages, Automake choose the
6687 linker according to the following priorities.  (The names in
6688 parentheses are the variables containing the link command.)
6689
6690 @enumerate
6691 @item
6692 @vindex GCJLINK
6693 Native Java (@code{GCJLINK})
6694 @item
6695 @vindex CXXLINK
6696 C++ (@code{CXXLINK})
6697 @item
6698 @vindex F77LINK
6699 Fortran 77 (@code{F77LINK})
6700 @item
6701 @vindex FCLINK
6702 Fortran (@code{FCLINK})
6703 @item
6704 @vindex OBJCLINK
6705 Objective C (@code{OBJCLINK})
6706 @item
6707 @vindex UPCLINK
6708 Unified Parallel C (@code{UPCLINK})
6709 @item
6710 @vindex LINK
6711 C (@code{LINK})
6712 @end enumerate
6713
6714 For example, if Fortran 77, C and C++ source code is compiled
6715 into a program, then the C++ linker will be used.  In this case, if the
6716 C or Fortran 77 linkers required any special libraries that weren't
6717 included by the C++ linker, then they must be manually added to an
6718 @code{_LDADD} or @code{_LIBADD} variable by the user writing the
6719 @file{Makefile.am}.
6720
6721 Automake only looks at the file names listed in @file{_SOURCES}
6722 variables to choose the linker, and defaults to the C linker.
6723 Sometimes this is inconvenient because you are linking against a
6724 library written in another language and would like to set the linker
6725 more appropriately.  @xref{Libtool Convenience Libraries}, for a
6726 trick with @code{nodist_EXTRA_@dots{}_SOURCES}.
6727
6728 A per-target @code{_LINK} variable will override the above selection.
6729 Per-target link flags will cause Automake to write a per-target
6730 @code{_LINK} variable according to the language chosen as above.
6731
6732
6733 @node Fortran 9x Support
6734 @comment  node-name,  next,  previous,  up
6735 @section Fortran 9x Support
6736
6737 @cindex Fortran 9x support
6738 @cindex Support for Fortran 9x
6739
6740 Automake includes support for Fortran 9x.
6741
6742 Any package including Fortran 9x code must define the output variable
6743 @code{FC} in @file{configure.ac}; the simplest way to do this is to use
6744 the @code{AC_PROG_FC} macro (@pxref{Particular Programs, , Particular
6745 Program Checks, autoconf, The Autoconf Manual}).
6746
6747 A few additional variables are defined when a Fortran 9x source file is
6748 seen:
6749
6750 @vtable @code
6751
6752 @item FC
6753 The name of the Fortran 9x compiler.
6754
6755 @item FCFLAGS
6756 Any flags to pass to the Fortran 9x compiler.
6757
6758 @item AM_FCFLAGS
6759 The maintainer's variant of @code{FCFLAGS}.
6760
6761 @item FCCOMPILE
6762 The command used to actually compile a Fortran 9x source file.  The file
6763 name is appended to form the complete command line.
6764
6765 @item FCLINK
6766 The command used to actually link a pure Fortran 9x program or shared
6767 library.
6768
6769 @end vtable
6770
6771 @menu
6772 * Compiling Fortran 9x Files::  Compiling Fortran 9x sources
6773 @end menu
6774
6775 @node Compiling Fortran 9x Files
6776 @comment  node-name,  next,  previous,  up
6777 @subsection Compiling Fortran 9x Files
6778
6779 @file{@var{file}.o} is made automatically from @file{@var{file}.f90},
6780 @file{@var{file}.f95}, @file{@var{file}.f03}, or @file{@var{file}.f08}
6781 by running the Fortran 9x compiler.  The precise command used
6782 is as follows:
6783
6784 @table @file
6785
6786 @item .f90
6787 @code{$(FC) $(AM_FCFLAGS) $(FCFLAGS) -c $(FCFLAGS_f90) $<}
6788
6789 @item .f95
6790 @code{$(FC) $(AM_FCFLAGS) $(FCFLAGS) -c $(FCFLAGS_f95) $<}
6791
6792 @item .f03
6793 @code{$(FC) $(AM_FCFLAGS) $(FCFLAGS) -c $(FCFLAGS_f03) $<}
6794
6795 @item .f08
6796 @code{$(FC) $(AM_FCFLAGS) $(FCFLAGS) -c $(FCFLAGS_f08) $<}
6797
6798 @end table
6799
6800 @node Java Support with gcj
6801 @comment  node-name,  next,  previous,  up
6802 @section Compiling Java sources using gcj
6803
6804 @cindex Java support with gcj
6805 @cindex Support for Java with gcj
6806 @cindex Java to native code, compilation
6807 @cindex Compilation of Java to native code
6808
6809 Automake includes support for natively compiled Java, using @command{gcj},
6810 the Java front end to the GNU Compiler Collection (rudimentary support
6811 for compiling Java to bytecode using the @command{javac} compiler is
6812 also present, @emph{albeit deprecated}; @pxref{Java}).
6813
6814 Any package including Java code to be compiled must define the output
6815 variable @code{GCJ} in @file{configure.ac}; the variable @code{GCJFLAGS}
6816 must also be defined somehow (either in @file{configure.ac} or
6817 @file{Makefile.am}).  The simplest way to do this is to use the
6818 @code{AM_PROG_GCJ} macro.
6819
6820 @vindex GCJFLAGS
6821
6822 By default, programs including Java source files are linked with
6823 @command{gcj}.
6824
6825 As always, the contents of @code{AM_GCJFLAGS} are passed to every
6826 compilation invoking @command{gcj} (in its role as an ahead-of-time
6827 compiler, when invoking it to create @file{.class} files,
6828 @code{AM_JAVACFLAGS} is used instead).  If it is necessary to pass
6829 options to @command{gcj} from @file{Makefile.am}, this variable, and not
6830 the user variable @code{GCJFLAGS}, should be used.
6831
6832 @vindex AM_GCJFLAGS
6833
6834 @command{gcj} can be used to compile @file{.java}, @file{.class},
6835 @file{.zip}, or @file{.jar} files.
6836
6837 When linking, @command{gcj} requires that the main class be specified
6838 using the @option{--main=} option.  The easiest way to do this is to use
6839 the @code{_LDFLAGS} variable for the program.
6840
6841
6842 @node Vala Support
6843 @comment  node-name,  next,  previous,  up
6844 @section Vala Support
6845
6846 @cindex Vala Support
6847 @cindex Support for Vala
6848
6849 Automake provides initial support for Vala
6850 (@uref{http://www.vala-project.org/}).
6851 This requires valac version 0.7.0 or later, and currently requires
6852 the user to use GNU @command{make}.
6853
6854 @example
6855 foo_SOURCES = foo.vala bar.vala zardoc.c
6856 @end example
6857
6858 Any @file{.vala} file listed in a @code{_SOURCES} variable will be
6859 compiled into C code by the Vala compiler. The generated @file{.c} files are
6860 distributed. The end user does not need to have a Vala compiler installed.
6861
6862 Automake ships with an Autoconf macro called @code{AM_PROG_VALAC}
6863 that will locate the Vala compiler and optionally check its version
6864 number.
6865
6866 @defmac AM_PROG_VALAC (@ovar{minimum-version})
6867 Try to find a Vala compiler in @env{PATH}. If it is found, the variable
6868 @code{VALAC} is set. Optionally a minimum release number of the compiler
6869 can be requested:
6870
6871 @example
6872 AM_PROG_VALAC([0.7.0])
6873 @end example
6874 @end defmac
6875
6876 There are a few variables that are used when compiling Vala sources:
6877
6878 @vtable @code
6879 @item VALAC
6880 Path to the Vala compiler.
6881
6882 @item VALAFLAGS
6883 Additional arguments for the Vala compiler.
6884
6885 @item AM_VALAFLAGS
6886 The maintainer's variant of @code{VALAFLAGS}.
6887
6888 @example
6889 lib_LTLIBRARIES = libfoo.la
6890 libfoo_la_SOURCES = foo.vala
6891 @end example
6892 @end vtable
6893
6894 Note that currently, you cannot use per-target @code{*_VALAFLAGS}
6895 (@pxref{Renamed Objects}) to produce different C files from one Vala
6896 source file.
6897
6898
6899 @node Support for Other Languages
6900 @comment  node-name,  next,  previous,  up
6901 @section Support for Other Languages
6902
6903 Automake currently only includes full support for C, C++ (@pxref{C++
6904 Support}), Objective C (@pxref{Objective C Support}), Fortran 77
6905 (@pxref{Fortran 77 Support}), Fortran 9x (@pxref{Fortran 9x Support}),
6906 and Java (@pxref{Java Support with gcj}).  There is only rudimentary
6907 support for other languages, support for which will be improved based
6908 on user demand.
6909
6910 Some limited support for adding your own languages is available via the
6911 suffix rule handling (@pxref{Suffixes}).
6912
6913 @node Dependencies
6914 @section Automatic dependency tracking
6915
6916 As a developer it is often painful to continually update the
6917 @file{Makefile.am} whenever the include-file dependencies change in a
6918 project.  Automake supplies a way to automatically track dependency
6919 changes (@pxref{Dependency Tracking}).
6920
6921 @cindex Dependency tracking
6922 @cindex Automatic dependency tracking
6923
6924 Automake always uses complete dependencies for a compilation,
6925 including system headers.  Automake's model is that dependency
6926 computation should be a side effect of the build.  To this end,
6927 dependencies are computed by running all compilations through a
6928 special wrapper program called @command{depcomp}.  @command{depcomp}
6929 understands how to coax many different C and C++ compilers into
6930 generating dependency information in the format it requires.
6931 @samp{automake -a} will install @command{depcomp} into your source
6932 tree for you.  If @command{depcomp} can't figure out how to properly
6933 invoke your compiler, dependency tracking will simply be disabled for
6934 your build.
6935
6936 @cindex @command{depcomp}
6937
6938 Experience with earlier versions of Automake (@pxref{Dependency
6939 Tracking Evolution}) taught us that it is not reliable to generate
6940 dependencies only on the maintainer's system, as configurations vary
6941 too much.  So instead Automake implements dependency tracking at build
6942 time.
6943
6944 Automatic dependency tracking can be suppressed by putting
6945 @option{no-dependencies} in the variable @code{AUTOMAKE_OPTIONS}, or
6946 passing @option{no-dependencies} as an argument to @code{AM_INIT_AUTOMAKE}
6947 (this should be the preferred way).  Or, you can invoke @command{automake}
6948 with the @option{-i} option.  Dependency tracking is enabled by default.
6949
6950 @vindex AUTOMAKE_OPTIONS
6951 @opindex no-dependencies
6952
6953 The person building your package also can choose to disable dependency
6954 tracking by configuring with @option{--disable-dependency-tracking}.
6955
6956 @cindex Disabling dependency tracking
6957 @cindex Dependency tracking, disabling
6958
6959
6960 @node EXEEXT
6961 @section Support for executable extensions
6962
6963 @cindex Executable extension
6964 @cindex Extension, executable
6965 @cindex Windows
6966
6967 On some platforms, such as Windows, executables are expected to have an
6968 extension such as @file{.exe}.  On these platforms, some compilers (GCC
6969 among them) will automatically generate @file{foo.exe} when asked to
6970 generate @file{foo}.
6971
6972 Automake provides mostly-transparent support for this.  Unfortunately
6973 @emph{mostly} doesn't yet mean @emph{fully}.  Until the English
6974 dictionary is revised, you will have to assist Automake if your package
6975 must support those platforms.
6976
6977 One thing you must be aware of is that, internally, Automake rewrites
6978 something like this:
6979
6980 @example
6981 bin_PROGRAMS = liver
6982 @end example
6983
6984 to this:
6985
6986 @example
6987 bin_PROGRAMS = liver$(EXEEXT)
6988 @end example
6989
6990 The targets Automake generates are likewise given the @samp{$(EXEEXT)}
6991 extension.
6992
6993 The variables @code{TESTS} and @code{XFAIL_TESTS} (@pxref{Simple Tests})
6994 are also rewritten if they contain filenames that have been declared as
6995 programs in the same @file{Makefile}.  (This is mostly useful when some
6996 programs from @code{check_PROGRAMS} are listed in @code{TESTS}.)
6997
6998 However, Automake cannot apply this rewriting to @command{configure}
6999 substitutions.  This means that if you are conditionally building a
7000 program using such a substitution, then your @file{configure.ac} must
7001 take care to add @samp{$(EXEEXT)} when constructing the output variable.
7002
7003 With Autoconf 2.13 and earlier, you must explicitly use @code{AC_EXEEXT}
7004 to get this support.  With Autoconf 2.50, @code{AC_EXEEXT} is run
7005 automatically if you configure a compiler (say, through
7006 @code{AC_PROG_CC}).
7007
7008 Sometimes maintainers like to write an explicit link rule for their
7009 program.  Without executable extension support, this is easy---you
7010 simply write a rule whose target is the name of the program.  However,
7011 when executable extension support is enabled, you must instead add the
7012 @samp{$(EXEEXT)} suffix.
7013
7014 Unfortunately, due to the change in Autoconf 2.50, this means you must
7015 always add this extension.  However, this is a problem for maintainers
7016 who know their package will never run on a platform that has
7017 executable extensions.  For those maintainers, the @option{no-exeext}
7018 option (@pxref{Options}) will disable this feature.  This works in a
7019 fairly ugly way; if @option{no-exeext} is seen, then the presence of a
7020 rule for a target named @code{foo} in @file{Makefile.am} will override
7021 an @command{automake}-generated rule for @samp{foo$(EXEEXT)}.  Without
7022 the @option{no-exeext} option, this use will give a diagnostic.
7023
7024
7025 @node Other Objects
7026 @chapter Other Derived Objects
7027
7028 Automake can handle derived objects that are not C programs.  Sometimes
7029 the support for actually building such objects must be explicitly
7030 supplied, but Automake will still automatically handle installation and
7031 distribution.
7032
7033 @menu
7034 * Scripts::                     Executable scripts
7035 * Headers::                     Header files
7036 * Data::                        Architecture-independent data files
7037 * Sources::                     Derived sources
7038 @end menu
7039
7040
7041 @node Scripts
7042 @section Executable Scripts
7043
7044 @cindex @code{_SCRIPTS} primary, defined
7045 @cindex @code{SCRIPTS} primary, defined
7046 @cindex Primary variable, @code{SCRIPTS}
7047 @vindex _SCRIPTS
7048 @cindex Installing scripts
7049
7050 It is possible to define and install programs that are scripts.  Such
7051 programs are listed using the @code{SCRIPTS} primary name.  When the
7052 script is distributed in its final, installable form, the
7053 @file{Makefile} usually looks as follows:
7054 @vindex SCRIPTS
7055
7056 @example
7057 # Install my_script in $(bindir) and distribute it.
7058 dist_bin_SCRIPTS = my_script
7059 @end example
7060
7061 Scripts are not distributed by default; as we have just seen, those
7062 that should be distributed can be specified using a @code{dist_}
7063 prefix as with other primaries.
7064
7065 @cindex @code{SCRIPTS}, installation directories
7066 @vindex bin_SCRIPTS
7067 @vindex sbin_SCRIPTS
7068 @vindex libexec_SCRIPTS
7069 @vindex pkgdata_SCRIPTS
7070 @vindex pkglibexec_SCRIPTS
7071 @vindex noinst_SCRIPTS
7072 @vindex check_SCRIPTS
7073
7074 Scripts can be installed in @code{bindir}, @code{sbindir},
7075 @code{libexecdir}, @code{pkglibexecdir}, or @code{pkgdatadir}.
7076
7077 Scripts that need not be installed can be listed in
7078 @code{noinst_SCRIPTS}, and among them, those which are needed only by
7079 @samp{make check} should go in @code{check_SCRIPTS}.
7080
7081 When a script needs to be built, the @file{Makefile.am} should include
7082 the appropriate rules.  For instance the @command{automake} program
7083 itself is a Perl script that is generated from @file{automake.in}.
7084 Here is how this is handled:
7085
7086 @example
7087 bin_SCRIPTS = automake
7088 CLEANFILES = $(bin_SCRIPTS)
7089 EXTRA_DIST = automake.in
7090
7091 do_subst = sed -e 's,[@@]datadir[@@],$(datadir),g' \
7092             -e 's,[@@]PERL[@@],$(PERL),g' \
7093             -e 's,[@@]PACKAGE[@@],$(PACKAGE),g' \
7094             -e 's,[@@]VERSION[@@],$(VERSION),g' \
7095             @dots{}
7096
7097 automake: automake.in Makefile
7098         $(do_subst) < $(srcdir)/automake.in > automake
7099         chmod +x automake
7100 @end example
7101
7102 Such scripts for which a build rule has been supplied need to be
7103 deleted explicitly using @code{CLEANFILES} (@pxref{Clean}), and their
7104 sources have to be distributed, usually with @code{EXTRA_DIST}
7105 (@pxref{Basics of Distribution}).
7106
7107 Another common way to build scripts is to process them from
7108 @file{configure} with @code{AC_CONFIG_FILES}.  In this situation
7109 Automake knows which files should be cleaned and distributed, and what
7110 the rebuild rules should look like.
7111
7112 For instance if @file{configure.ac} contains
7113
7114 @example
7115 AC_CONFIG_FILES([src/my_script], [chmod +x src/my_script])
7116 @end example
7117
7118 @noindent
7119 to build @file{src/my_script} from @file{src/my_script.in}, then a
7120 @file{src/Makefile.am} to install this script in @code{$(bindir)} can
7121 be as simple as
7122
7123 @example
7124 bin_SCRIPTS = my_script
7125 CLEANFILES = $(bin_SCRIPTS)
7126 @end example
7127
7128 @noindent
7129 There is no need for @code{EXTRA_DIST} or any build rule: Automake
7130 infers them from @code{AC_CONFIG_FILES} (@pxref{Requirements}).
7131 @code{CLEANFILES} is still useful, because by default Automake will
7132 clean targets of @code{AC_CONFIG_FILES} in @code{distclean}, not
7133 @code{clean}.
7134
7135 Although this looks simpler, building scripts this way has one
7136 drawback: directory variables such as @code{$(datadir)} are not fully
7137 expanded and may refer to other directory variables.
7138
7139 @node Headers
7140 @section Header files
7141
7142 @cindex @code{_HEADERS} primary, defined
7143 @cindex @code{HEADERS} primary, defined
7144 @cindex Primary variable, @code{HEADERS}
7145 @vindex _HEADERS
7146 @vindex noinst_HEADERS
7147 @cindex @code{HEADERS}, installation directories
7148 @cindex Installing headers
7149 @vindex include_HEADERS
7150 @vindex oldinclude_HEADERS
7151 @vindex pkginclude_HEADERS
7152
7153
7154 Header files that must be installed are specified by the
7155 @code{HEADERS} family of variables.  Headers can be installed in
7156 @code{includedir}, @code{oldincludedir}, @code{pkgincludedir} or any
7157 other directory you may have defined (@pxref{Uniform}).  For instance,
7158
7159 @example
7160 include_HEADERS = foo.h bar/bar.h
7161 @end example
7162
7163 @noindent
7164 will install the two files as @file{$(includedir)/foo.h} and
7165 @file{$(includedir)/bar.h}.
7166
7167 The @code{nobase_} prefix is also supported,
7168
7169 @example
7170 nobase_include_HEADERS = foo.h bar/bar.h
7171 @end example
7172
7173 @noindent
7174 will install the two files as @file{$(includedir)/foo.h} and
7175 @file{$(includedir)/bar/bar.h} (@pxref{Alternative}).
7176
7177 @vindex noinst_HEADERS
7178 Usually, only header files that accompany installed libraries need to
7179 be installed.  Headers used by programs or convenience libraries are
7180 not installed.  The @code{noinst_HEADERS} variable can be used for
7181 such headers.  However when the header actually belongs to a single
7182 convenience library or program, we recommend listing it in the
7183 program's or library's @code{_SOURCES} variable (@pxref{Program
7184 Sources}) instead of in @code{noinst_HEADERS}.  This is clearer for
7185 the @file{Makefile.am} reader.  @code{noinst_HEADERS} would be the
7186 right variable to use in a directory containing only headers and no
7187 associated library or program.
7188
7189 All header files must be listed somewhere; in a @code{_SOURCES}
7190 variable or in a @code{_HEADERS} variable.  Missing ones will not
7191 appear in the distribution.
7192
7193 For header files that are built and must not be distributed, use the
7194 @code{nodist_} prefix as in @code{nodist_include_HEADERS} or
7195 @code{nodist_prog_SOURCES}.  If these generated headers are needed
7196 during the build, you must also ensure they exist before they are
7197 used (@pxref{Sources}).
7198
7199
7200 @node Data
7201 @section Architecture-independent data files
7202
7203 @cindex @code{_DATA} primary, defined
7204 @cindex @code{DATA} primary, defined
7205 @cindex Primary variable, @code{DATA}
7206 @vindex _DATA
7207
7208 Automake supports the installation of miscellaneous data files using the
7209 @code{DATA} family of variables.
7210 @vindex DATA
7211
7212 @vindex data_DATA
7213 @vindex sysconf_DATA
7214 @vindex sharedstate_DATA
7215 @vindex localstate_DATA
7216 @vindex pkgdata_DATA
7217
7218 Such data can be installed in the directories @code{datadir},
7219 @code{sysconfdir}, @code{sharedstatedir}, @code{localstatedir}, or
7220 @code{pkgdatadir}.
7221
7222 By default, data files are @emph{not} included in a distribution.  Of
7223 course, you can use the @code{dist_} prefix to change this on a
7224 per-variable basis.
7225
7226 Here is how Automake declares its auxiliary data files:
7227
7228 @example
7229 dist_pkgdata_DATA = clean-kr.am clean.am @dots{}
7230 @end example
7231
7232
7233 @node Sources
7234 @section Built Sources
7235
7236 Because Automake's automatic dependency tracking works as a side-effect
7237 of compilation (@pxref{Dependencies}) there is a bootstrap issue: a
7238 target should not be compiled before its dependencies are made, but
7239 these dependencies are unknown until the target is first compiled.
7240
7241 Ordinarily this is not a problem, because dependencies are distributed
7242 sources: they preexist and do not need to be built.  Suppose that
7243 @file{foo.c} includes @file{foo.h}.  When it first compiles
7244 @file{foo.o}, @command{make} only knows that @file{foo.o} depends on
7245 @file{foo.c}.  As a side-effect of this compilation @command{depcomp}
7246 records the @file{foo.h} dependency so that following invocations of
7247 @command{make} will honor it.  In these conditions, it's clear there is
7248 no problem: either @file{foo.o} doesn't exist and has to be built
7249 (regardless of the dependencies), or accurate dependencies exist and
7250 they can be used to decide whether @file{foo.o} should be rebuilt.
7251
7252 It's a different story if @file{foo.h} doesn't exist by the first
7253 @command{make} run.  For instance, there might be a rule to build
7254 @file{foo.h}.  This time @file{file.o}'s build will fail because the
7255 compiler can't find @file{foo.h}.  @command{make} failed to trigger the
7256 rule to build @file{foo.h} first by lack of dependency information.
7257
7258 @vindex BUILT_SOURCES
7259 @cindex @code{BUILT_SOURCES}, defined
7260
7261 The @code{BUILT_SOURCES} variable is a workaround for this problem.  A
7262 source file listed in @code{BUILT_SOURCES} is made on @samp{make all}
7263 or @samp{make check} (or even @samp{make install}) before other
7264 targets are processed.  However, such a source file is not
7265 @emph{compiled} unless explicitly requested by mentioning it in some
7266 other @code{_SOURCES} variable.
7267
7268 So, to conclude our introductory example, we could use
7269 @samp{BUILT_SOURCES = foo.h} to ensure @file{foo.h} gets built before
7270 any other target (including @file{foo.o}) during @samp{make all} or
7271 @samp{make check}.
7272
7273 @code{BUILT_SOURCES} is actually a bit of a misnomer, as any file which
7274 must be created early in the build process can be listed in this
7275 variable.  Moreover, all built sources do not necessarily have to be
7276 listed in @code{BUILT_SOURCES}.  For instance, a generated @file{.c} file
7277 doesn't need to appear in @code{BUILT_SOURCES} (unless it is included by
7278 another source), because it's a known dependency of the associated
7279 object.
7280
7281 It might be important to emphasize that @code{BUILT_SOURCES} is
7282 honored only by @samp{make all}, @samp{make check} and @samp{make
7283 install}.  This means you cannot build a specific target (e.g.,
7284 @samp{make foo}) in a clean tree if it depends on a built source.
7285 However it will succeed if you have run @samp{make all} earlier,
7286 because accurate dependencies are already available.
7287
7288 The next section illustrates and discusses the handling of built sources
7289 on a toy example.
7290
7291 @menu
7292 * Built Sources Example::       Several ways to handle built sources.
7293 @end menu
7294
7295 @node Built Sources Example
7296 @subsection Built Sources Example
7297
7298 Suppose that @file{foo.c} includes @file{bindir.h}, which is
7299 installation-dependent and not distributed: it needs to be built.  Here
7300 @file{bindir.h} defines the preprocessor macro @code{bindir} to the
7301 value of the @command{make} variable @code{bindir} (inherited from
7302 @file{configure}).
7303
7304 We suggest several implementations below.  It's not meant to be an
7305 exhaustive listing of all ways to handle built sources, but it will give
7306 you a few ideas if you encounter this issue.
7307
7308 @subsubheading First Try
7309
7310 This first implementation will illustrate the bootstrap issue mentioned
7311 in the previous section (@pxref{Sources}).
7312
7313 Here is a tentative @file{Makefile.am}.
7314
7315 @example
7316 # This won't work.
7317 bin_PROGRAMS = foo
7318 foo_SOURCES = foo.c
7319 nodist_foo_SOURCES = bindir.h
7320 CLEANFILES = bindir.h
7321 bindir.h: Makefile
7322         echo '#define bindir "$(bindir)"' >$@@
7323 @end example
7324
7325 This setup doesn't work, because Automake doesn't know that @file{foo.c}
7326 includes @file{bindir.h}.  Remember, automatic dependency tracking works
7327 as a side-effect of compilation, so the dependencies of @file{foo.o} will
7328 be known only after @file{foo.o} has been compiled (@pxref{Dependencies}).
7329 The symptom is as follows.
7330
7331 @example
7332 % make
7333 source='foo.c' object='foo.o' libtool=no \
7334 depfile='.deps/foo.Po' tmpdepfile='.deps/foo.TPo' \
7335 depmode=gcc /bin/sh ./depcomp \
7336 gcc -I. -I. -g -O2 -c `test -f 'foo.c' || echo './'`foo.c
7337 foo.c:2: bindir.h: No such file or directory
7338 make: *** [foo.o] Error 1
7339 @end example
7340
7341 In this example @file{bindir.h} is not distributed nor installed, and
7342 it is not even being built on-time.  One may wonder if the
7343 @samp{nodist_foo_SOURCES = bindir.h} line has any use at all.  This
7344 line simply states that @file{bindir.h} is a source of @code{foo}, so
7345 for instance, it should be inspected while generating tags
7346 (@pxref{Tags}).  In other words, it does not help our present problem,
7347 and the build would fail identically without it.
7348
7349 @subsubheading Using @code{BUILT_SOURCES}
7350
7351 A solution is to require @file{bindir.h} to be built before anything
7352 else.  This is what @code{BUILT_SOURCES} is meant for (@pxref{Sources}).
7353
7354 @example
7355 bin_PROGRAMS = foo
7356 foo_SOURCES = foo.c
7357 nodist_foo_SOURCES = bindir.h
7358 BUILT_SOURCES = bindir.h
7359 CLEANFILES = bindir.h
7360 bindir.h: Makefile
7361         echo '#define bindir "$(bindir)"' >$@@
7362 @end example
7363
7364 See how @file{bindir.h} gets built first:
7365
7366 @example
7367 % make
7368 echo '#define bindir "/usr/local/bin"' >bindir.h
7369 make  all-am
7370 make[1]: Entering directory `/home/adl/tmp'
7371 source='foo.c' object='foo.o' libtool=no \
7372 depfile='.deps/foo.Po' tmpdepfile='.deps/foo.TPo' \
7373 depmode=gcc /bin/sh ./depcomp \
7374 gcc -I. -I. -g -O2 -c `test -f 'foo.c' || echo './'`foo.c
7375 gcc  -g -O2   -o foo  foo.o
7376 make[1]: Leaving directory `/home/adl/tmp'
7377 @end example
7378
7379 However, as said earlier, @code{BUILT_SOURCES} applies only to the
7380 @code{all}, @code{check}, and @code{install} targets.  It still fails
7381 if you try to run @samp{make foo} explicitly:
7382
7383 @example
7384 % make clean
7385 test -z "bindir.h" || rm -f bindir.h
7386 test -z "foo" || rm -f foo
7387 rm -f *.o
7388 % : > .deps/foo.Po # Suppress previously recorded dependencies
7389 % make foo
7390 source='foo.c' object='foo.o' libtool=no \
7391 depfile='.deps/foo.Po' tmpdepfile='.deps/foo.TPo' \
7392 depmode=gcc /bin/sh ./depcomp \
7393 gcc -I. -I. -g -O2 -c `test -f 'foo.c' || echo './'`foo.c
7394 foo.c:2: bindir.h: No such file or directory
7395 make: *** [foo.o] Error 1
7396 @end example
7397
7398 @subsubheading Recording Dependencies manually
7399
7400 Usually people are happy enough with @code{BUILT_SOURCES} because they
7401 never build targets such as @samp{make foo} before @samp{make all}, as
7402 in the previous example.  However if this matters to you, you can
7403 avoid @code{BUILT_SOURCES} and record such dependencies explicitly in
7404 the @file{Makefile.am}.
7405
7406 @example
7407 bin_PROGRAMS = foo
7408 foo_SOURCES = foo.c
7409 nodist_foo_SOURCES = bindir.h
7410 foo.$(OBJEXT): bindir.h
7411 CLEANFILES = bindir.h
7412 bindir.h: Makefile
7413         echo '#define bindir "$(bindir)"' >$@@
7414 @end example
7415
7416 You don't have to list @emph{all} the dependencies of @file{foo.o}
7417 explicitly, only those that might need to be built.  If a dependency
7418 already exists, it will not hinder the first compilation and will be
7419 recorded by the normal dependency tracking code.  (Note that after
7420 this first compilation the dependency tracking code will also have
7421 recorded the dependency between @file{foo.o} and
7422 @file{bindir.h}; so our explicit dependency is really useful to
7423 the first build only.)
7424
7425 Adding explicit dependencies like this can be a bit dangerous if you are
7426 not careful enough.  This is due to the way Automake tries not to
7427 overwrite your rules (it assumes you know better than it).
7428 @samp{foo.$(OBJEXT): bindir.h} supersedes any rule Automake may want to
7429 output to build @samp{foo.$(OBJEXT)}.  It happens to work in this case
7430 because Automake doesn't have to output any @samp{foo.$(OBJEXT):}
7431 target: it relies on a suffix rule instead (i.e., @samp{.c.$(OBJEXT):}).
7432 Always check the generated @file{Makefile.in} if you do this.
7433
7434 @subsubheading Build @file{bindir.h} from @file{configure}
7435
7436 It's possible to define this preprocessor macro from @file{configure},
7437 either in @file{config.h} (@pxref{Defining Directories, , Defining
7438 Directories, autoconf, The Autoconf Manual}), or by processing a
7439 @file{bindir.h.in} file using @code{AC_CONFIG_FILES}
7440 (@pxref{Configuration Actions, ,Configuration Actions, autoconf, The
7441 Autoconf Manual}).
7442
7443 At this point it should be clear that building @file{bindir.h} from
7444 @file{configure} works well for this example.  @file{bindir.h} will exist
7445 before you build any target, hence will not cause any dependency issue.
7446
7447 The Makefile can be shrunk as follows.  We do not even have to mention
7448 @file{bindir.h}.
7449
7450 @example
7451 bin_PROGRAMS = foo
7452 foo_SOURCES = foo.c
7453 @end example
7454
7455 However, it's not always possible to build sources from
7456 @file{configure}, especially when these sources are generated by a tool
7457 that needs to be built first.
7458
7459 @subsubheading Build @file{bindir.c}, not @file{bindir.h}.
7460
7461 Another attractive idea is to define @code{bindir} as a variable or
7462 function exported from @file{bindir.o}, and build @file{bindir.c}
7463 instead of @file{bindir.h}.
7464
7465 @example
7466 noinst_PROGRAMS = foo
7467 foo_SOURCES = foo.c bindir.h
7468 nodist_foo_SOURCES = bindir.c
7469 CLEANFILES = bindir.c
7470 bindir.c: Makefile
7471         echo 'const char bindir[] = "$(bindir)";' >$@@
7472 @end example
7473
7474 @file{bindir.h} contains just the variable's declaration and doesn't
7475 need to be built, so it won't cause any trouble.  @file{bindir.o} is
7476 always dependent on @file{bindir.c}, so @file{bindir.c} will get built
7477 first.
7478
7479 @subsubheading Which is best?
7480
7481 There is no panacea, of course.  Each solution has its merits and
7482 drawbacks.
7483
7484 You cannot use @code{BUILT_SOURCES} if the ability to run @samp{make
7485 foo} on a clean tree is important to you.
7486
7487 You won't add explicit dependencies if you are leery of overriding
7488 an Automake rule by mistake.
7489
7490 Building files from @file{./configure} is not always possible, neither
7491 is converting @file{.h} files into @file{.c} files.
7492
7493
7494 @node Other GNU Tools
7495 @chapter Other GNU Tools
7496
7497 Since Automake is primarily intended to generate @file{Makefile.in}s for
7498 use in GNU programs, it tries hard to interoperate with other GNU tools.
7499
7500 @menu
7501 * Emacs Lisp::                  Emacs Lisp
7502 * gettext::                     Gettext
7503 * Libtool::                     Libtool
7504 * Java::                        Java bytecode compilation (deprecated)
7505 * Python::                      Python
7506 @end menu
7507
7508
7509 @node Emacs Lisp
7510 @section Emacs Lisp
7511
7512 @cindex @code{_LISP} primary, defined
7513 @cindex @code{LISP} primary, defined
7514 @cindex Primary variable, @code{LISP}
7515
7516 @vindex _LISP
7517 @vindex lisp_LISP
7518 @vindex noinst_LISP
7519
7520 Automake provides some support for Emacs Lisp.  The @code{LISP} primary
7521 is used to hold a list of @file{.el} files.  Possible prefixes for this
7522 primary are @code{lisp_} and @code{noinst_}.  Note that if
7523 @code{lisp_LISP} is defined, then @file{configure.ac} must run
7524 @code{AM_PATH_LISPDIR} (@pxref{Macros}).
7525
7526 @vindex dist_lisp_LISP
7527 @vindex dist_noinst_LISP
7528 Lisp sources are not distributed by default.  You can prefix the
7529 @code{LISP} primary with @code{dist_}, as in @code{dist_lisp_LISP} or
7530 @code{dist_noinst_LISP}, to indicate that these files should be
7531 distributed.
7532
7533 Automake will byte-compile all Emacs Lisp source files using the Emacs
7534 found by @code{AM_PATH_LISPDIR}, if any was found.
7535
7536 Byte-compiled Emacs Lisp files are not portable among all versions of
7537 Emacs, so it makes sense to turn this off if you expect sites to have
7538 more than one version of Emacs installed.  Furthermore, many packages
7539 don't actually benefit from byte-compilation.  Still, we recommend
7540 that you byte-compile your Emacs Lisp sources.  It is probably better
7541 for sites with strange setups to cope for themselves than to make the
7542 installation less nice for everybody else.
7543
7544 There are two ways to avoid byte-compiling.  Historically, we have
7545 recommended the following construct.
7546
7547 @example
7548 lisp_LISP = file1.el file2.el
7549 ELCFILES =
7550 @end example
7551
7552 @noindent
7553 @code{ELCFILES} is an internal Automake variable that normally lists
7554 all @file{.elc} files that must be byte-compiled.  Automake defines
7555 @code{ELCFILES} automatically from @code{lisp_LISP}.  Emptying this
7556 variable explicitly prevents byte-compilation.
7557
7558 Since Automake 1.8, we now recommend using @code{lisp_DATA} instead:
7559
7560 @c Keep in sync with primary-prefix-couples-documented-valid.test.
7561 @example
7562 lisp_DATA = file1.el file2.el
7563 @end example
7564
7565 Note that these two constructs are not equivalent.  @code{_LISP} will
7566 not install a file if Emacs is not installed, while @code{_DATA} will
7567 always install its files.
7568
7569 @node gettext
7570 @section Gettext
7571
7572 @cindex GNU Gettext support
7573 @cindex Gettext support
7574 @cindex Support for GNU Gettext
7575
7576 If @code{AM_GNU_GETTEXT} is seen in @file{configure.ac}, then Automake
7577 turns on support for GNU gettext, a message catalog system for
7578 internationalization
7579 (@pxref{Top, , Introduction, gettext, GNU gettext utilities}).
7580
7581 The @code{gettext} support in Automake requires the addition of one or
7582 two subdirectories to the package: @file{po} and possibly also @file{intl}.
7583 The latter is needed if @code{AM_GNU_GETTEXT} is not invoked with the
7584 @samp{external} argument, or if @code{AM_GNU_GETTEXT_INTL_SUBDIR} is used.
7585 Automake ensures that these directories exist and are mentioned in
7586 @code{SUBDIRS}.
7587
7588 @node Libtool
7589 @section Libtool
7590
7591 Automake provides support for GNU Libtool (@pxref{Top, , Introduction,
7592 libtool, The Libtool Manual}) with the @code{LTLIBRARIES} primary.
7593 @xref{A Shared Library}.
7594
7595
7596 @node Java
7597 @section Java bytecode compilation (deprecated)
7598
7599 @cindex @code{_JAVA} primary, defined
7600 @cindex @code{JAVA} primary, defined
7601 @cindex Primary variable, @code{JAVA}
7602 @cindex Java to bytecode, compilation
7603 @cindex Compilation of Java to bytecode
7604
7605 Automake provides some minimal support for Java bytecode compilation with
7606 the @code{JAVA} primary (in addition to the support for compiling Java to
7607 native machine code; @pxref{Java Support with gcj}).  Note however that
7608 @emph{the interface and most features described here are deprecated}; the
7609 next automake release will strive to provide a better and cleaner
7610 interface, which however @emph{won't be backward-compatible}; the present
7611 interface will probably be removed altogether in future automake releases
7612 (1.13 or later), so don't use it in new code.
7613
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.
7618
7619 Here is a typical setup for distributing @file{.java} files and
7620 installing the @file{.class} files resulting from their compilation.
7621
7622 @c Keep in sync with primary-prefix-couples-documented-valid.test.
7623 @example
7624 javadir = $(datadir)/java
7625 dist_java_JAVA = a.java b.java @dots{}
7626 @end example
7627
7628 @cindex @code{JAVA} restrictions
7629 @cindex Restrictions for @code{JAVA}
7630
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.
7639
7640 There are a few variables that are used when compiling Java sources:
7641
7642 @vtable @code
7643 @item JAVAC
7644 The name of the Java compiler.  This defaults to @samp{javac}.
7645
7646 @item JAVACFLAGS
7647 The flags to pass to the compiler.  This is considered to be a user
7648 variable (@pxref{User Variables}).
7649
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}.
7654
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)}.
7658
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
7664
7665
7666 @node Python
7667 @section Python
7668
7669 @cindex @code{_PYTHON} primary, defined
7670 @cindex @code{PYTHON} primary, defined
7671 @cindex Primary variable, @code{PYTHON}
7672 @vindex _PYTHON
7673
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}:
7678
7679 @example
7680 python_PYTHON = tree.py leave.py
7681 @end example
7682
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.
7691
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.test.
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).
7701
7702 @defmac AM_PATH_PYTHON (@ovar{version}, @ovar{action-if-found},
7703   @ovar{action-if-not-found})
7704
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.
7712
7713 If @var{action-if-not-found} is not specified, as in the following
7714 example, the default is to abort @command{configure}.
7715
7716 @example
7717 AM_PATH_PYTHON([2.2])
7718 @end example
7719
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.
7724
7725 @example
7726 AM_PATH_PYTHON([2.5],, [:])
7727 @end example
7728
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.
7731
7732 @code{AM_PATH_PYTHON} creates the following output variables based on
7733 the Python installation found during configuration.
7734 @end defmac
7735
7736 @vtable @code
7737 @item PYTHON
7738 The name of the Python executable, or @samp{:} if no suitable
7739 interpreter could be found.
7740
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.
7745
7746 @example
7747 AM_PATH_PYTHON(,, [:])
7748 AM_CONDITIONAL([HAVE_PYTHON], [test "$PYTHON" != :])
7749 @end example
7750
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]}.
7755
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}.
7760
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}.
7765
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.
7770
7771 @item pythondir
7772 The directory name for the @file{site-packages} subdirectory of the
7773 standard Python install tree.
7774
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.
7779
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:
7784
7785 @c Keep in sync with primary-prefix-couples-documented-valid.test.
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
7791
7792 @item pkgpyexecdir
7793 This is a convenience variable that is defined as
7794 @samp{$(pyexecdir)/$(PACKAGE)}.
7795 @end vtable
7796
7797 All 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}.
7806
7807
7808 @node Documentation
7809 @chapter Building documentation
7810
7811 Currently Automake provides support for Texinfo and man pages.
7812
7813 @menu
7814 * Texinfo::                     Texinfo
7815 * Man Pages::                   Man pages
7816 @end menu
7817
7818
7819 @node Texinfo
7820 @section Texinfo
7821
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
7831
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 must end in the @file{.texi},
7836 @file{.txi}, or @file{.texinfo} extension.  We recommend @file{.texi}
7837 for new manuals.
7838
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.
7846
7847 @trindex dvi
7848 @trindex html
7849 @trindex pdf
7850 @trindex ps
7851 @trindex install-dvi
7852 @trindex install-html
7853 @trindex install-pdf
7854 @trindex install-ps
7855 Other documentation formats can be built on request by @samp{make
7856 dvi}, @samp{make ps}, @samp{make pdf} and @samp{make html}, and they
7857 can be installed with @samp{make install-dvi}, @samp{make install-ps},
7858 @samp{make install-pdf} and @samp{make install-html} explicitly.
7859 @samp{make uninstall} will remove everything: the Texinfo
7860 documentation installed by default as well as all the above optional
7861 formats.
7862
7863 All these targets can be extended using @samp{-local} rules
7864 (@pxref{Extending}).
7865
7866 @cindex Texinfo flag, @code{VERSION}
7867 @cindex Texinfo flag, @code{UPDATED}
7868 @cindex Texinfo flag, @code{EDITION}
7869 @cindex Texinfo flag, @code{UPDATED-MONTH}
7870
7871 @cindex @code{VERSION} Texinfo flag
7872 @cindex @code{UPDATED} Texinfo flag
7873 @cindex @code{EDITION} Texinfo flag
7874 @cindex @code{UPDATED-MONTH} Texinfo flag
7875
7876 @cindex @file{mdate-sh}
7877
7878 If the @file{.texi} file @code{@@include}s @file{version.texi}, then
7879 that file will be automatically generated.  The file @file{version.texi}
7880 defines four Texinfo flag you can reference using
7881 @code{@@value@{EDITION@}}, @code{@@value@{VERSION@}},
7882 @code{@@value@{UPDATED@}}, and @code{@@value@{UPDATED-MONTH@}}.
7883
7884 @table @code
7885 @item EDITION
7886 @itemx VERSION
7887 Both of these flags hold the version number of your program.  They are
7888 kept separate for clarity.
7889
7890 @item UPDATED
7891 This holds the date the primary @file{.texi} file was last modified.
7892
7893 @item UPDATED-MONTH
7894 This holds the name of the month in which the primary @file{.texi} file
7895 was last modified.
7896 @end table
7897
7898 The @file{version.texi} support requires the @command{mdate-sh}
7899 script; this script is supplied with Automake and automatically
7900 included when @command{automake} is invoked with the
7901 @option{--add-missing} option.
7902
7903 If you have multiple Texinfo files, and you want to use the
7904 @file{version.texi} feature, then you have to have a separate version
7905 file for each Texinfo file.  Automake will treat any include in a
7906 Texinfo file that matches @file{vers*.texi} just as an automatically
7907 generated version file.
7908
7909 Sometimes an info file actually depends on more than one @file{.texi}
7910 file.  For instance, in GNU Hello, @file{hello.texi} includes the file
7911 @file{fdl.texi}.  You can tell Automake about these dependencies using
7912 the @code{@var{texi}_TEXINFOS} variable.  Here is how GNU Hello does it:
7913 @vindex TEXINFOS
7914 @vindex _TEXINFOS
7915
7916 @example
7917 info_TEXINFOS = hello.texi
7918 hello_TEXINFOS = fdl.texi
7919 @end example
7920
7921 @cindex @file{texinfo.tex}
7922
7923 By default, Automake requires the file @file{texinfo.tex} to appear in
7924 the same directory as the @file{Makefile.am} file that lists the
7925 @file{.texi} files.  If you used @code{AC_CONFIG_AUX_DIR} in
7926 @file{configure.ac} (@pxref{Input, , Finding `configure' Input,
7927 autoconf, The Autoconf Manual}), then @file{texinfo.tex} is looked for
7928 there.  In both cases, @command{automake} then supplies @file{texinfo.tex} if
7929 @option{--add-missing} is given, and takes care of its distribution.
7930 However, if you set the @code{TEXINFO_TEX} variable (see below),
7931 it overrides the location of the file and turns off its installation
7932 into the source as well as its distribution.
7933
7934 The option @option{no-texinfo.tex} can be used to eliminate the
7935 requirement for the file @file{texinfo.tex}.  Use of the variable
7936 @code{TEXINFO_TEX} is preferable, however, because that allows the
7937 @code{dvi}, @code{ps}, and @code{pdf} targets to still work.
7938
7939 @cindex Option, @code{no-installinfo}
7940 @cindex Target, @code{install-info}
7941 @cindex @code{install-info} target
7942 @cindex @code{no-installinfo} option
7943
7944 @opindex no-installinfo
7945 @trindex install-info
7946
7947 Automake generates an @code{install-info} rule; some people apparently
7948 use this.  By default, info pages are installed by @samp{make
7949 install}, so running @code{make install-info} is pointless.  This can
7950 be prevented via the @code{no-installinfo} option.  In this case,
7951 @file{.info} files are not installed by default, and user must
7952 request this explicitly using @samp{make install-info}.
7953
7954 @vindex AM_UPDATE_INFO_DIR
7955 By default, @code{make install-info} will try to run the
7956 @command{install-info} program (if available) to update (or create)
7957 the @file{@code{$@{infodir@}}/dir} index.  If this is undesired, it
7958 can be prevented by exporting the @code{AM_UPDATE_INFO_DIR} variable
7959 to "@code{no}".
7960
7961 The following variables are used by the Texinfo build rules.
7962
7963 @vtable @code
7964 @item MAKEINFO
7965 The name of the program invoked to build @file{.info} files.  This
7966 variable is defined by Automake.  If the @command{makeinfo} program is
7967 found on the system then it will be used by default; otherwise
7968 @command{missing} will be used instead.
7969
7970 @item MAKEINFOHTML
7971 The command invoked to build @file{.html} files.  Automake
7972 defines this to @samp{$(MAKEINFO) --html}.
7973
7974 @item MAKEINFOFLAGS
7975 User flags passed to each invocation of @samp{$(MAKEINFO)} and
7976 @samp{$(MAKEINFOHTML)}.  This user variable (@pxref{User Variables}) is
7977 not expected to be defined in any @file{Makefile}; it can be used by
7978 users to pass extra flags to suit their needs.
7979
7980 @item AM_MAKEINFOFLAGS
7981 @itemx AM_MAKEINFOHTMLFLAGS
7982 Maintainer flags passed to each @command{makeinfo} invocation.  Unlike
7983 @code{MAKEINFOFLAGS}, these variables are meant to be defined by
7984 maintainers in @file{Makefile.am}.  @samp{$(AM_MAKEINFOFLAGS)} is
7985 passed to @code{makeinfo} when building @file{.info} files; and
7986 @samp{$(AM_MAKEINFOHTMLFLAGS)} is used when building @file{.html}
7987 files.
7988
7989 @c Keep in sync with txinfo21.test.
7990 For instance, the following setting can be used to obtain one single
7991 @file{.html} file per manual, without node separators.
7992 @example
7993 AM_MAKEINFOHTMLFLAGS = --no-headers --no-split
7994 @end example
7995
7996 @code{AM_MAKEINFOHTMLFLAGS} defaults to @samp{$(AM_MAKEINFOFLAGS)}.
7997 This means that defining @code{AM_MAKEINFOFLAGS} without defining
7998 @code{AM_MAKEINFOHTMLFLAGS} will impact builds of both @file{.info}
7999 and @file{.html} files.
8000
8001 @item TEXI2DVI
8002 The name of the command that converts a @file{.texi} file into a
8003 @file{.dvi} file.  This defaults to @samp{texi2dvi}, a script that ships
8004 with the Texinfo package.
8005
8006 @item TEXI2PDF
8007 The name of the command that translates a @file{.texi} file into a
8008 @file{.pdf} file.  This defaults to @samp{$(TEXI2DVI) --pdf --batch}.
8009
8010 @item DVIPS
8011 The name of the command that builds a @file{.ps} file out of a
8012 @file{.dvi} file.  This defaults to @samp{dvips}.
8013
8014 @item TEXINFO_TEX
8015
8016 If your package has Texinfo files in many directories, you can use the
8017 variable @code{TEXINFO_TEX} to tell Automake where to find the canonical
8018 @file{texinfo.tex} for your package.  The value of this variable should
8019 be the relative path from the current @file{Makefile.am} to
8020 @file{texinfo.tex}:
8021
8022 @example
8023 TEXINFO_TEX = ../doc/texinfo.tex
8024 @end example
8025 @end vtable
8026
8027
8028 @node Man Pages
8029 @section Man Pages
8030
8031 @cindex @code{_MANS} primary, defined
8032 @cindex @code{MANS} primary, defined
8033 @cindex Primary variable, @code{MANS}
8034
8035 @vindex _MANS
8036 @vindex man_MANS
8037 A package can also include man pages (but see the GNU standards on this
8038 matter, @ref{Man Pages, , , standards, The GNU Coding Standards}.)  Man
8039 pages are declared using the @code{MANS} primary.  Generally the
8040 @code{man_MANS} variable is used.  Man pages are automatically installed in
8041 the correct subdirectory of @code{mandir}, based on the file extension.
8042
8043 File extensions such as @file{.1c} are handled by looking for the valid
8044 part of the extension and using that to determine the correct
8045 subdirectory of @code{mandir}.  Valid section names are the digits
8046 @samp{0} through @samp{9}, and the letters @samp{l} and @samp{n}.
8047
8048 Sometimes developers prefer to name a man page something like
8049 @file{foo.man} in the source, and then rename it to have the correct
8050 suffix, for example @file{foo.1}, when installing the file.  Automake
8051 also supports this mode.  For a valid section named @var{section},
8052 there is a corresponding directory named @samp{man@var{section}dir},
8053 and a corresponding @code{_MANS} variable.  Files listed in such a
8054 variable are installed in the indicated section.  If the file already
8055 has a valid suffix, then it is installed as-is; otherwise the file
8056 suffix is changed to match the section.
8057
8058 For instance, consider this example:
8059 @example
8060 man1_MANS = rename.man thesame.1 alsothesame.1c
8061 @end example
8062
8063 @noindent
8064 In this case, @file{rename.man} will be renamed to @file{rename.1} when
8065 installed, but the other files will keep their names.
8066
8067 @cindex Target, @code{install-man}
8068 @cindex Option, @option{no-installman}
8069 @cindex @code{install-man} target
8070 @cindex @option{no-installman} option
8071 @opindex no-installman
8072 @trindex install-man
8073
8074 By default, man pages are installed by @samp{make install}.  However,
8075 since the GNU project does not require man pages, many maintainers do
8076 not expend effort to keep the man pages up to date.  In these cases, the
8077 @option{no-installman} option will prevent the man pages from being
8078 installed by default.  The user can still explicitly install them via
8079 @samp{make install-man}.
8080
8081 For fast installation, with many files it is preferable to use
8082 @samp{man@var{section}_MANS} over @samp{man_MANS} as well as files that
8083 do not need to be renamed.
8084
8085 Man pages are not currently considered to be source, because it is not
8086 uncommon for man pages to be automatically generated.  Therefore they
8087 are not automatically included in the distribution.  However, this can
8088 be changed by use of the @code{dist_} prefix.  For instance here is
8089 how to distribute and install the two man pages of GNU @command{cpio}
8090 (which includes both Texinfo documentation and man pages):
8091
8092 @example
8093 dist_man_MANS = cpio.1 mt.1
8094 @end example
8095
8096 The @code{nobase_} prefix is meaningless for man pages and is
8097 disallowed.
8098
8099 @vindex notrans_
8100 @cindex @code{notrans_} prefix
8101 @cindex Man page renaming, avoiding
8102 @cindex Avoiding man page renaming
8103
8104 Executables and manpages may be renamed upon installation
8105 (@pxref{Renaming}).  For manpages this can be avoided by use of the
8106 @code{notrans_} prefix.  For instance, suppose an executable @samp{foo}
8107 allowing to access a library function @samp{foo} from the command line.
8108 The way to avoid renaming of the @file{foo.3} manpage is:
8109
8110 @example
8111 man_MANS = foo.1
8112 notrans_man_MANS = foo.3
8113 @end example
8114
8115 @cindex @code{notrans_} and @code{dist_} or @code{nodist_}
8116 @cindex @code{dist_} and @code{notrans_}
8117 @cindex @code{nodist_} and @code{notrans_}
8118
8119 @samp{notrans_} must be specified first when used in conjunction with
8120 either @samp{dist_} or @samp{nodist_} (@pxref{Fine-grained Distribution
8121 Control}).  For instance:
8122
8123 @example
8124 notrans_dist_man3_MANS = bar.3
8125 @end example
8126
8127 @node Install
8128 @chapter What Gets Installed
8129
8130 @cindex Installation support
8131 @cindex @samp{make install} support
8132
8133 Naturally, Automake handles the details of actually installing your
8134 program once it has been built.  All files named by the various
8135 primaries are automatically installed in the appropriate places when the
8136 user runs @samp{make install}.
8137
8138 @menu
8139 * Basics of Installation::      What gets installed where
8140 * The Two Parts of Install::    Installing data and programs separately
8141 * Extending Installation::      Adding your own rules for installation
8142 * Staged Installs::             Installation in a temporary location
8143 * Install Rules for the User::  Useful additional rules
8144 @end menu
8145
8146 @node Basics of Installation
8147 @section Basics of Installation
8148
8149 A file named in a primary is installed by copying the built file into
8150 the appropriate directory.  The base name of the file is used when
8151 installing.
8152
8153 @example
8154 bin_PROGRAMS = hello subdir/goodbye
8155 @end example
8156
8157 In this example, both @samp{hello} and @samp{goodbye} will be installed
8158 in @samp{$(bindir)}.
8159
8160 Sometimes it is useful to avoid the basename step at install time.  For
8161 instance, you might have a number of header files in subdirectories of
8162 the source tree that are laid out precisely how you want to install
8163 them.  In this situation you can use the @code{nobase_} prefix to
8164 suppress the base name step.  For example:
8165
8166 @example
8167 nobase_include_HEADERS = stdio.h sys/types.h
8168 @end example
8169
8170 @noindent
8171 will install @file{stdio.h} in @samp{$(includedir)} and @file{types.h}
8172 in @samp{$(includedir)/sys}.
8173
8174 For most file types, Automake will install multiple files at once, while
8175 avoiding command line length issues (@pxref{Length Limitations}).  Since
8176 some @command{install} programs will not install the same file twice in
8177 one invocation, you may need to ensure that file lists are unique within
8178 one variable such as @samp{nobase_include_HEADERS} above.
8179
8180 You should not rely on the order in which files listed in one variable
8181 are installed.  Likewise, to cater for parallel make, you should not
8182 rely on any particular file installation order even among different
8183 file types (library dependencies are an exception here).
8184
8185
8186 @node The Two Parts of Install
8187 @section The Two Parts of Install
8188
8189 Automake generates separate @code{install-data} and @code{install-exec}
8190 rules, in case the installer is installing on multiple machines that
8191 share directory structure---these targets allow the machine-independent
8192 parts to be installed only once.  @code{install-exec} installs
8193 platform-dependent files, and @code{install-data} installs
8194 platform-independent files.  The @code{install} target depends on both
8195 of these targets.  While Automake tries to automatically segregate
8196 objects into the correct category, the @file{Makefile.am} author is, in
8197 the end, responsible for making sure this is done correctly.
8198 @trindex install-data
8199 @trindex install-exec
8200 @trindex install
8201 @cindex Install, two parts of
8202
8203 Variables using the standard directory prefixes @samp{data},
8204 @samp{info}, @samp{man}, @samp{include}, @samp{oldinclude},
8205 @samp{pkgdata}, or @samp{pkginclude} are installed by
8206 @code{install-data}.
8207
8208 Variables using the standard directory prefixes @samp{bin},
8209 @samp{sbin}, @samp{libexec}, @samp{sysconf}, @samp{localstate},
8210 @samp{lib}, or @samp{pkglib} are installed by @code{install-exec}.
8211
8212 For instance, @code{data_DATA} files are installed by @code{install-data},
8213 while @code{bin_PROGRAMS} files are installed by @code{install-exec}.
8214
8215 Any variable using a user-defined directory prefix with
8216 @samp{exec} in the name (e.g.,
8217 @c Keep in sync with primary-prefix-couples-documented-valid.test.
8218 @code{myexecbin_PROGRAMS}) is installed by @code{install-exec}.  All
8219 other user-defined prefixes are installed by @code{install-data}.
8220
8221 @node Extending Installation
8222 @section Extending Installation
8223
8224 It is possible to extend this mechanism by defining an
8225 @code{install-exec-local} or @code{install-data-local} rule.  If these
8226 rules exist, they will be run at @samp{make install} time.  These
8227 rules can do almost anything; care is required.
8228 @trindex install-exec-local
8229 @trindex install-data-local
8230
8231 Automake also supports two install hooks, @code{install-exec-hook} and
8232 @code{install-data-hook}.  These hooks are run after all other install
8233 rules of the appropriate type, exec or data, have completed.  So, for
8234 instance, it is possible to perform post-installation modifications
8235 using an install hook.  @xref{Extending}, for some examples.
8236 @cindex Install hook
8237
8238 @node Staged Installs
8239 @section Staged Installs
8240
8241 @vindex DESTDIR
8242 Automake generates support for the @code{DESTDIR} variable in all
8243 install rules.  @code{DESTDIR} is used during the @samp{make install}
8244 step to relocate install objects into a staging area.  Each object and
8245 path is prefixed with the value of @code{DESTDIR} before being copied
8246 into the install area.  Here is an example of typical DESTDIR usage:
8247
8248 @example
8249 mkdir /tmp/staging &&
8250 make DESTDIR=/tmp/staging install
8251 @end example
8252
8253 The @command{mkdir} command avoids a security problem if the attacker
8254 creates a symbolic link from @file{/tmp/staging} to a victim area;
8255 then @command{make} places install objects in a directory tree built under
8256 @file{/tmp/staging}.  If @file{/gnu/bin/foo} and
8257 @file{/gnu/share/aclocal/foo.m4} are to be installed, the above command
8258 would install @file{/tmp/staging/gnu/bin/foo} and
8259 @file{/tmp/staging/gnu/share/aclocal/foo.m4}.
8260
8261 This feature is commonly used to build install images and packages
8262 (@pxref{DESTDIR}).
8263
8264 Support for @code{DESTDIR} is implemented by coding it directly into
8265 the install rules.  If your @file{Makefile.am} uses a local install
8266 rule (e.g., @code{install-exec-local}) or an install hook, then you
8267 must write that code to respect @code{DESTDIR}.
8268
8269 @xref{Makefile Conventions, , , standards, The GNU Coding Standards},
8270 for another usage example.
8271
8272 @node Install Rules for the User
8273 @section Install Rules for the User
8274
8275 Automake also generates rules for targets @code{uninstall},
8276 @code{installdirs}, and @code{install-strip}.
8277 @trindex uninstall
8278 @trindex installdirs
8279 @trindex install-strip
8280
8281 Automake supports @code{uninstall-local} and @code{uninstall-hook}.
8282 There is no notion of separate uninstalls for ``exec'' and ``data'', as
8283 these features would not provide additional functionality.
8284
8285 Note that @code{uninstall} is not meant as a replacement for a real
8286 packaging tool.
8287
8288
8289 @node Clean
8290 @chapter What Gets Cleaned
8291
8292 @cindex @samp{make clean} support
8293
8294 The GNU Makefile Standards specify a number of different clean rules.
8295 @xref{Standard Targets, , Standard Targets for Users, standards,
8296 The GNU Coding Standards}.
8297
8298 Generally the files that can be cleaned are determined automatically by
8299 Automake.  Of course, Automake also recognizes some variables that can
8300 be defined to specify additional files to clean.  These variables are
8301 @code{MOSTLYCLEANFILES}, @code{CLEANFILES}, @code{DISTCLEANFILES}, and
8302 @code{MAINTAINERCLEANFILES}.
8303 @vindex MOSTLYCLEANFILES
8304 @vindex CLEANFILES
8305 @vindex DISTCLEANFILES
8306 @vindex MAINTAINERCLEANFILES
8307
8308 @trindex mostlyclean-local
8309 @trindex clean-local
8310 @trindex distclean-local
8311 @trindex maintainer-clean-local
8312 When cleaning involves more than deleting some hard-coded list of
8313 files, it is also possible to supplement the cleaning rules with your
8314 own commands.  Simply define a rule for any of the
8315 @code{mostlyclean-local}, @code{clean-local}, @code{distclean-local},
8316 or @code{maintainer-clean-local} targets (@pxref{Extending}).  A common
8317 case is deleting a directory, for instance, a directory created by the
8318 test suite:
8319
8320 @example
8321 clean-local:
8322         -rm -rf testSubDir
8323 @end example
8324
8325 Since @command{make} allows only one set of rules for a given target,
8326 a more extensible way of writing this is to use a separate target
8327 listed as a dependency:
8328
8329 @example
8330 clean-local: clean-local-check
8331 .PHONY: clean-local-check
8332 clean-local-check:
8333         -rm -rf testSubDir
8334 @end example
8335
8336 As the GNU Standards aren't always explicit as to which files should
8337 be removed by which rule, we've adopted a heuristic that we believe
8338 was first formulated by Fran@,{c}ois Pinard:
8339
8340 @itemize @bullet
8341 @item
8342 If @command{make} built it, and it is commonly something that one would
8343 want to rebuild (for instance, a @file{.o} file), then
8344 @code{mostlyclean} should delete it.
8345
8346 @item
8347 Otherwise, if @command{make} built it, then @code{clean} should delete it.
8348
8349 @item
8350 If @command{configure} built it, then @code{distclean} should delete it.
8351
8352 @item
8353 If the maintainer built it (for instance, a @file{.info} file), then
8354 @code{maintainer-clean} should delete it.  However
8355 @code{maintainer-clean} should not delete anything that needs to exist
8356 in order to run @samp{./configure && make}.
8357 @end itemize
8358
8359 We recommend that you follow this same set of heuristics in your
8360 @file{Makefile.am}.
8361
8362
8363 @node Dist
8364 @chapter What Goes in a Distribution
8365
8366 @menu
8367 * Basics of Distribution::      Files distributed by default
8368 * Fine-grained Distribution Control::  @code{dist_} and @code{nodist_} prefixes
8369 * The dist Hook::               A target for last-minute distribution changes
8370 * Checking the Distribution::   @samp{make distcheck} explained
8371 * The Types of Distributions::  A variety of formats and compression methods
8372 @end menu
8373
8374 @node Basics of Distribution
8375 @section Basics of Distribution
8376
8377 @cindex @samp{make dist}
8378
8379 @vindex PACKAGE
8380 @vindex VERSION
8381 @trindex dist
8382 The @code{dist} rule in the generated @file{Makefile.in} can be used
8383 to generate a gzipped @code{tar} file and other flavors of archive for
8384 distribution.  The file is named based on the @code{PACKAGE} and
8385 @code{VERSION} variables defined by @code{AM_INIT_AUTOMAKE}
8386 (@pxref{Macros}); more precisely the gzipped @code{tar} file is named
8387 @samp{@var{package}-@var{version}.tar.gz}.
8388 @vindex GZIP_ENV
8389 You can use the @command{make} variable @code{GZIP_ENV} to control how gzip
8390 is run.  The default setting is @option{--best}.
8391
8392 @cindex @code{m4_include}, distribution
8393 @cindex @code{include}, distribution
8394 @acindex m4_include
8395 @cmindex include
8396 For the most part, the files to distribute are automatically found by
8397 Automake: all source files are automatically included in a distribution,
8398 as are all @file{Makefile.am} and @file{Makefile.in} files.  Automake also
8399 has a built-in list of commonly used files that are automatically
8400 included if they are found in the current directory (either physically,
8401 or as the target of a @file{Makefile.am} rule); this list is printed by
8402 @samp{automake --help}.  Note that some files in this list are actually
8403 distributed only if other certain conditions hold (for example,
8404 @c Keep in sync with autodist-config-headers.test.
8405 the @file{config.h.top} and @file{config.h.bot} files are automatically
8406 distributed only if, e.g., @samp{AC_CONFIG_HEADERS([config.h])} is used
8407 in @file{configure.ac}).  Also, files that are read by @command{configure}
8408 (i.e.@: the source files corresponding to the files specified in various
8409 Autoconf macros such as @code{AC_CONFIG_FILES} and siblings) are
8410 automatically distributed.  Files included in a @file{Makefile.am} (using
8411 @code{include}) or in @file{configure.ac} (using @code{m4_include}), and
8412 helper scripts installed with @samp{automake --add-missing} are also
8413 distributed.
8414
8415 @vindex EXTRA_DIST
8416 Still, sometimes there are files that must be distributed, but which
8417 are not covered in the automatic rules.  These files should be listed in
8418 the @code{EXTRA_DIST} variable.  You can mention files from
8419 subdirectories in @code{EXTRA_DIST}.
8420
8421 You can also mention a directory in @code{EXTRA_DIST}; in this case the
8422 entire directory will be recursively copied into the distribution.
8423 Please note that this will also copy @emph{everything} in the directory,
8424 including, e.g., Subversion's @file{.svn} private directories or CVS/RCS
8425 version control files.  We recommend against using this feature.
8426
8427 @vindex SUBDIRS
8428 @vindex DIST_SUBDIRS
8429 If you define @code{SUBDIRS}, Automake will recursively include the
8430 subdirectories in the distribution.  If @code{SUBDIRS} is defined
8431 conditionally (@pxref{Conditionals}), Automake will normally include
8432 all directories that could possibly appear in @code{SUBDIRS} in the
8433 distribution.  If you need to specify the set of directories
8434 conditionally, you can set the variable @code{DIST_SUBDIRS} to the
8435 exact list of subdirectories to include in the distribution
8436 (@pxref{Conditional Subdirectories}).
8437
8438
8439 @node Fine-grained Distribution Control
8440 @section Fine-grained Distribution Control
8441
8442 @vindex dist_
8443 @vindex nodist_
8444 Sometimes you need tighter control over what does @emph{not} go into the
8445 distribution; for instance, you might have source files that are
8446 generated and that you do not want to distribute.  In this case
8447 Automake gives fine-grained control using the @code{dist} and
8448 @code{nodist} prefixes.  Any primary or @code{_SOURCES} variable can be
8449 prefixed with @code{dist_} to add the listed files to the distribution.
8450 Similarly, @code{nodist_} can be used to omit the files from the
8451 distribution.
8452
8453 As an example, here is how you would cause some data to be distributed
8454 while leaving some source code out of the distribution:
8455
8456 @example
8457 dist_data_DATA = distribute-this
8458 bin_PROGRAMS = foo
8459 nodist_foo_SOURCES = do-not-distribute.c
8460 @end example
8461
8462 @node The dist Hook
8463 @section The dist Hook
8464
8465 @trindex dist-hook
8466
8467 Occasionally it is useful to be able to change the distribution before
8468 it is packaged up.  If the @code{dist-hook} rule exists, it is run
8469 after the distribution directory is filled, but before the actual tar
8470 (or shar) file is created.  One way to use this is for distributing
8471 files in subdirectories for which a new @file{Makefile.am} is overkill:
8472
8473 @example
8474 dist-hook:
8475         mkdir $(distdir)/random
8476         cp -p $(srcdir)/random/a1 $(srcdir)/random/a2 $(distdir)/random
8477 @end example
8478
8479 Another way to use this is for removing unnecessary files that get
8480 recursively included by specifying a directory in EXTRA_DIST:
8481
8482 @example
8483 EXTRA_DIST = doc
8484
8485 dist-hook:
8486         rm -rf `find $(distdir)/doc -type d -name .svn`
8487 @end example
8488
8489 @vindex distdir
8490 @vindex top_distdir
8491 Two variables that come handy when writing @code{dist-hook} rules are
8492 @samp{$(distdir)} and @samp{$(top_distdir)}.
8493
8494 @samp{$(distdir)} points to the directory where the @code{dist} rule
8495 will copy files from the current directory before creating the
8496 tarball.  If you are at the top-level directory, then @samp{distdir =
8497 $(PACKAGE)-$(VERSION)}.  When used from subdirectory named
8498 @file{foo/}, then @samp{distdir = ../$(PACKAGE)-$(VERSION)/foo}.
8499 @samp{$(distdir)} can be a relative or absolute path, do not assume
8500 any form.
8501
8502 @samp{$(top_distdir)} always points to the root directory of the
8503 distributed tree.  At the top-level it's equal to @samp{$(distdir)}.
8504 In the @file{foo/} subdirectory
8505 @samp{top_distdir = ../$(PACKAGE)-$(VERSION)}.
8506 @samp{$(top_distdir)} too can be a relative or absolute path.
8507
8508 Note that when packages are nested using @code{AC_CONFIG_SUBDIRS}
8509 (@pxref{Subpackages}), then @samp{$(distdir)} and
8510 @samp{$(top_distdir)} are relative to the package where @samp{make
8511 dist} was run, not to any sub-packages involved.
8512
8513 @node Checking the Distribution
8514 @section Checking the Distribution
8515
8516 @cindex @samp{make distcheck}
8517 @cindex @samp{make distcleancheck}
8518 @vindex distcleancheck_listfiles
8519 @cindex @samp{make distuninstallcheck}
8520 @vindex distuninstallcheck_listfiles
8521
8522 @trindex distcheck
8523 Automake also generates a @code{distcheck} rule that can be of help to
8524 ensure that a given distribution will actually work.  @code{distcheck}
8525 makes a distribution, then tries to do a @code{VPATH} build
8526 (@pxref{VPATH Builds}), run the test suite, and finally make another
8527 tarball to ensure the distribution is self-contained.
8528
8529 @vindex AM_DISTCHECK_CONFIGURE_FLAGS
8530 @vindex DISTCHECK_CONFIGURE_FLAGS
8531 Building the package involves running @samp{./configure}.  If you need
8532 to supply additional flags to @command{configure}, define them in the
8533 @code{AM_DISTCHECK_CONFIGURE_FLAGS} variable in your top-level
8534 @file{Makefile.am}.  The user can still extend or override the flags
8535 provided there by defining the @code{DISTCHECK_CONFIGURE_FLAGS} variable,
8536 on the command line when invoking @command{make}.
8537
8538 Still, developers are encouraged to strive to make their code buildable
8539 without requiring any special configure option; thus, in general, you
8540 shouldn't define @code{AM_DISTCHECK_CONFIGURE_FLAGS}. However, there
8541 might be few scenarios in which the use of this variable is justified.
8542 GNU @command{m4} offers an example.  GNU @command{m4} configures by
8543 default with its experimental and seldom used "changeword" feature
8544 disabled; so in its case it is useful to have @command{make distcheck}
8545 run configure with the @option{--with-changeword} option, to ensure that
8546 the code for changeword support still compiles correctly.
8547 GNU @command{m4} also employs the @code{AM_DISTCHECK_CONFIGURE_FLAGS}
8548 variable to stress-test the use of @option{--program-prefix=g}, since at
8549 one point the @command{m4} build system had a bug where @command{make
8550 installcheck} was wrongly assuming it could blindly test "@command{m4}",
8551 rather than the just-installed "@command{gm4}".
8552
8553 @trindex distcheck-hook
8554 If the @code{distcheck-hook} rule is defined in your top-level
8555 @file{Makefile.am}, then it will be invoked by @code{distcheck} after
8556 the new distribution has been unpacked, but before the unpacked copy
8557 is configured and built.  Your @code{distcheck-hook} can do almost
8558 anything, though as always caution is advised.  Generally this hook is
8559 used to check for potential distribution errors not caught by the
8560 standard mechanism.  Note that @code{distcheck-hook} as well as
8561 @code{AM_DISTCHECK_CONFIGURE_FLAGS} and @code{DISTCHECK_CONFIGURE_FLAGS}
8562 are not honored in a subpackage @file{Makefile.am}, but the flags from
8563 @code{AM_DISTCHECK_CONFIGURE_FLAGS} and @code{DISTCHECK_CONFIGURE_FLAGS}
8564 are passed down to the @command{configure} script of the subpackage.
8565
8566 @trindex distcleancheck
8567 @vindex DISTCLEANFILES
8568 @vindex distcleancheck_listfiles
8569 Speaking of potential distribution errors, @code{distcheck} also
8570 ensures that the @code{distclean} rule actually removes all built
8571 files.  This is done by running @samp{make distcleancheck} at the end of
8572 the @code{VPATH} build.  By default, @code{distcleancheck} will run
8573 @code{distclean} and then make sure the build tree has been emptied by
8574 running @samp{$(distcleancheck_listfiles)}.  Usually this check will
8575 find generated files that you forgot to add to the @code{DISTCLEANFILES}
8576 variable (@pxref{Clean}).
8577
8578 The @code{distcleancheck} behavior should be OK for most packages,
8579 otherwise you have the possibility to override the definition of
8580 either the @code{distcleancheck} rule, or the
8581 @samp{$(distcleancheck_listfiles)} variable.  For instance, to disable
8582 @code{distcleancheck} completely, add the following rule to your
8583 top-level @file{Makefile.am}:
8584
8585 @example
8586 distcleancheck:
8587         @@:
8588 @end example
8589
8590 If you want @code{distcleancheck} to ignore built files that have not
8591 been cleaned because they are also part of the distribution, add the
8592 following definition instead:
8593
8594 @c Keep in sync with distcleancheck.test.
8595 @example
8596 distcleancheck_listfiles = \
8597   find . -type f -exec sh -c 'test -f $(srcdir)/$$1 || echo $$1' \
8598        sh '@{@}' ';'
8599 @end example
8600
8601 The above definition is not the default because it's usually an error if
8602 your Makefiles cause some distributed files to be rebuilt when the user
8603 build the package.  (Think about the user missing the tool required to
8604 build the file; or if the required tool is built by your package,
8605 consider the cross-compilation case where it can't be run.)  There is
8606 an entry in the FAQ about this (@pxref{distcleancheck}), make sure you
8607 read it before playing with @code{distcleancheck_listfiles}.
8608
8609 @code{distcheck} also checks that the @code{uninstall} rule works
8610 properly, both for ordinary and @code{DESTDIR} builds.  It does this
8611 by invoking @samp{make uninstall}, and then it checks the install tree
8612 to see if any files are left over.  This check will make sure that you
8613 correctly coded your @code{uninstall}-related rules.
8614
8615 By default, the checking is done by the @code{distuninstallcheck} rule,
8616 and the list of files in the install tree is generated by
8617 @samp{$(distuninstallcheck_listfiles)} (this is a variable whose value is
8618 a shell command to run that prints the list of files to stdout).
8619
8620 Either of these can be overridden to modify the behavior of
8621 @code{distcheck}.  For instance, to disable this check completely, you
8622 would write:
8623
8624 @example
8625 distuninstallcheck:
8626         @@:
8627 @end example
8628
8629 @node The Types of Distributions
8630 @section The Types of Distributions
8631
8632 Automake generates rules to provide archives of the project for
8633 distributions in various formats.  Their targets are:
8634
8635 @table @asis
8636 @vindex BZIP2
8637 @item @code{dist-bzip2}
8638 Generate a bzip2 tar archive of the distribution.  bzip2 archives are
8639 frequently smaller than gzipped archives.
8640 By default, this rule makes @samp{bzip2} use a compression option of @option{-9}.
8641 To make it use a different one, set the @env{BZIP2} environment variable.
8642 For example, @samp{make dist-bzip2 BZIP2=-7}.
8643 @trindex dist-bzip2
8644
8645 @item @code{dist-gzip}
8646 Generate a gzip tar archive of the distribution.
8647 @trindex dist-gzip
8648
8649 @item @code{dist-lzip}
8650 Generate an @samp{lzip} tar archive of the distribution.  @command{lzip}
8651 archives are frequently smaller than @command{bzip2}-compressed archives.
8652 @trindex dist-lzip
8653
8654 @item @code{dist-lzma}
8655 Generate an @samp{lzma} tar archive of the distribution.
8656 The @samp{lzma} format is obsolete, you should use the @samp{xz} format
8657 instead. @emph{Support for @samp{lzma}-compressed archives will be
8658 removed in the next major Automake release.}
8659 @trindex dist-lzma
8660
8661 @item @code{dist-shar}
8662 Generate a shar archive of the distribution.
8663 @trindex dist-shar
8664
8665 @vindex XZ_OPT
8666 @item @code{dist-xz}
8667 Generate an @samp{xz} tar archive of the distribution.  @command{xz}
8668 archives are frequently smaller than @command{bzip2}-compressed archives.
8669 The @samp{xz} format displaces the obsolete @samp{lzma} format.
8670 By default, this rule makes @samp{xz} use a compression option of
8671 @option{-e}.  To make it use a different one, set the @env{XZ_OPT}
8672 environment variable.  For example, run this command to use the
8673 default compression ratio, but with a progress indicator:
8674 @samp{make dist-xz XZ_OPT=-7e}.
8675 @trindex dist-xz
8676
8677 @item @code{dist-zip}
8678 Generate a zip archive of the distribution.
8679 @trindex dist-zip
8680
8681 @item @code{dist-tarZ}
8682 Generate a compressed tar archive of
8683 the distribution.
8684 @trindex dist-tarZ
8685 @end table
8686
8687 The rule @code{dist} (and its historical synonym @code{dist-all}) will
8688 create archives in all the enabled formats, @ref{Options}.  By
8689 default, only the @code{dist-gzip} target is hooked to @code{dist}.
8690
8691
8692 @node Tests
8693 @chapter Support for test suites
8694
8695 @cindex Test suites
8696 @cindex @code{make check}
8697 @trindex check
8698
8699 Automake can generate code to handle two kinds of test suites.  One is
8700 based on integration with the @command{dejagnu} framework.  The other
8701 (and most used) form is based on the use of generic test scripts, and
8702 its activation is triggered by the definition of the special @code{TESTS}
8703 variable.  This second form allows for various degrees of sophistication
8704 and customization; in particular, it allows for concurrent execution
8705 of test scripts, use of established test protocols such as TAP, and
8706 definition of custom test drivers and test runners.
8707
8708 @noindent
8709 In either case, the testsuite is invoked via @samp{make check}.
8710
8711 @menu
8712 * Generalities about Testing::  Concepts and terminology about testing
8713 * Simple Tests::                Listing test scripts in @code{TESTS}
8714 * Custom Test Drivers::         Writing and using custom test drivers
8715 * Using the TAP test protocol:: Integrating test scripts that use the TAP protocol
8716 * DejaGnu Tests::               Interfacing with the @command{dejagnu} testing framework
8717 * Install Tests::               Running tests on installed packages
8718 @end menu
8719
8720 @node Generalities about Testing
8721 @section Generalities about Testing
8722
8723 The purpose of testing is to determine whether a program or system behaves
8724 as expected (e.g., known inputs produce the expected outputs, error
8725 conditions are correctly handled or reported, and older bugs do not
8726 resurface).
8727
8728 @cindex test case
8729 The minimal unit of testing is usually called @emph{test case}, or simply
8730 @emph{test}.  How a test case is defined or delimited, and even what
8731 exactly @emph{constitutes} a test case, depends heavily on the testing
8732 paradigm and/or framework in use, so we won't attempt any more precise
8733 definition.  The set of the test cases for a given program or system
8734 constitutes its @emph{testsuite}.
8735
8736 @cindex test harness
8737 @cindex testsuite harness
8738 A @emph{test harness} (also @emph{testsuite harness}) is a program or
8739 software component that executes all (or part of) the defined test cases,
8740 analyzes their outcomes, and report or register these outcomes
8741 appropriately.  Again, the details of how this is accomplished (and how
8742 the developer and user can influence it or interface with it) varies
8743 wildly, and we'll attempt no precise definition.
8744
8745 @cindex test pass
8746 @cindex test failure
8747 A test is said to @emph{pass} when it can determine that the condition or
8748 behaviour it means to verify holds, and is said to @emph{fail} when it can
8749 determine that such condition of behaviour does @emph{not} hold.
8750
8751 @cindex test skip
8752 Sometimes, tests can rely on non-portable tools or prerequisites, or
8753 simply make no sense on a given system (for example, a test checking a
8754 Windows-specific feature makes no sense on a GNU/Linux system).  In this
8755 case, accordingly to the definition above, the tests can neither be
8756 considered passed nor failed; instead, they are @emph{skipped} -- i.e.,
8757 they are not run, or their result is anyway ignored for what concerns
8758 the count of failures an successes.  Skips are usually explicitly
8759 reported though, so that the user will be aware that not all of the
8760 testsuite has really run.
8761
8762 @cindex xfail
8763 @cindex expected failure
8764 @cindex expected test failure
8765 @cindex xpass
8766 @cindex unexpected pass
8767 @cindex unexpected test pass
8768 It's not uncommon, especially during early development stages, that some
8769 tests fail for known reasons, and that the developer doesn't want to
8770 tackle these failures immediately (this is especially true when the
8771 failing tests deal with corner cases).  In this situation, the better
8772 policy is to declare that each of those failures is an @emph{expected
8773 failure} (or @emph{xfail}).  In case a test that is expected to fail ends
8774 up passing instead, many testing environments will flag the result as a
8775 special kind of failure called @emph{unexpected pass} (or @emph{xpass}).
8776
8777 @cindex hard error
8778 @cindex Distinction between errors and failures in testsuites
8779 Many testing environments and frameworks distinguish between test failures
8780 and hard errors.  As we've seen, a test failure happens when some invariant
8781 or expected behaviour of the software under test is not met.  An @emph{hard
8782 error} happens when e.g., the set-up of a test case scenario fails, or when
8783 some other unexpected or highly undesirable condition is encountered (for
8784 example, the program under test experiences a segmentation fault).
8785
8786 @emph{TODO}: Links to other test harnesses (esp. those sharing our
8787 terminology)?
8788
8789 @node Simple Tests
8790 @section Simple Tests
8791
8792 @menu
8793 * Scripts-based Testsuites::    Automake-specific concepts and terminology
8794 * Serial Test Harness::         Older (and obsolescent) serial test harness
8795 * Parallel Test Harness::       Generic concurrent test harness
8796 @end menu
8797
8798 @node Scripts-based Testsuites
8799 @subsection Scripts-based Testsuites
8800
8801 If the special variable @code{TESTS} is defined, its value is taken to be
8802 a list of programs or scripts to run in order to do the testing.  Under
8803 the appropriate circumstances, it's possible for @code{TESTS} to list
8804 also data files to be passed to one or more test scripts defined by
8805 different means (the so-called ``log compilers'', @pxref{Parallel Test
8806 Harness}).
8807
8808 Test scripts can be executed serially or concurrently.  Automake
8809 supports both these kinds of test execution, with the serial test harness
8810 being the default (for backward-compatibility reasons only, as its use
8811 is nowadays discouraged).  The concurrent test harness relies on the
8812 concurrence capabilities (if any) offered by the underlying @command{make}
8813 implementation, and can thus only be as good as those are.
8814
8815 By default, only the exit statuses of the test scripts are considered when
8816 determining the testsuite outcome.  But Automake allows also the use of
8817 more complex test protocols, either standard (@pxref{Using the TAP test
8818 protocol}) or custom (@pxref{Custom Test Drivers}).  Note that you can
8819 enable such protocols only when the parallel harness is used: they won't
8820 work with the serial test harness.  In the rest of this section we are
8821 going to concentrate mostly on protocol-less tests, since  we'll have later
8822 a whole section devoted to the use of test protocols (again, @pxref{Custom
8823 Test Drivers}).
8824
8825 @cindex Exit status 77, special interpretation
8826 @cindex Exit status 99, special interpretation
8827 When no test protocol is in use, an exit status of 0 from a test script will
8828 denote a success, an exit status of 77 a skipped test, an exit status of 99
8829 an hard error, and any other exit status will denote a failure.
8830
8831 @cindex Tests, expected failure
8832 @cindex Expected test failure
8833 @vindex XFAIL_TESTS
8834 @vindex DISABLE_HARD_ERRORS
8835 @cindex Disabling hard errors
8836 You may define the variable @code{XFAIL_TESTS} to a list of tests
8837 (usually a subset of @code{TESTS}) that are expected to fail; this will
8838 effectively reverse the result of those tests (with the provision that
8839 skips and hard errors remain untouched).  You may also instruct the
8840 testsuite harness to treat hard errors like simple failures, by defining
8841 the @code{DISABLE_HARD_ERRORS} make variable to a nonempty value.
8842
8843 Note however that, for tests based on more complex test protocols,
8844 the exact effects of @code{XFAIL_TESTS} and @code{DISABLE_HARD_ERRORS}
8845 might change, or they might even have no effect at all (for example,
8846 @c Keep this in sync with tap-no-disable-hard-errors.test.
8847 in tests using TAP, there is not way to disable hard errors, and the
8848 @code{DISABLE_HARD_ERRORS} variable has no effect on them).
8849
8850 @anchor{Testsuite progress on console}
8851 @cindex Testsuite progress on console
8852 The result of each test case run by the scripts in @code{TESTS} will be
8853 printed on standard output, along with the test name.  For test protocols
8854 that allow more test cases per test script (such as TAP), a number,
8855 identifier and/or brief description specific for the single test case is
8856 expected to be printed in addition to the name of the test script.  The
8857 possible results (whose meanings should be clear from the previous
8858 @ref{Generalities about Testing}) are @code{PASS}, @code{FAIL},
8859 @code{SKIP}, @code{XFAIL}, @code{XPASS} and @code{ERROR}.  Here is an
8860 example of output from an hypothetical testsuite that uses both plain
8861 and TAP tests:
8862 @c Keep in sync with tap-doc.test.
8863 @example
8864 PASS: foo.sh
8865 PASS: zardoz.tap 1 - Daemon started
8866 PASS: zardoz.tap 2 - Daemon responding
8867 SKIP: zardoz.tap 3 - Daemon uses /proc # SKIP /proc is not mounted
8868 PASS: zardoz.tap 4 - Daemon stopped
8869 SKIP: bar.sh
8870 PASS: mu.tap 1
8871 XFAIL: mu.tap 2 # TODO frobnication not yet implemented
8872 @end example
8873
8874 @noindent
8875 A testsuite summary (expected to report at least the number of run,
8876 skipped and failed tests) will be printed at the end of the testsuite
8877 run.
8878
8879 @anchor{Simple tests and color-tests}
8880 @vindex AM_COLOR_TESTS
8881 @cindex Colorized testsuite output
8882 If the Automake option @code{color-tests} is used (@pxref{Options})
8883 and standard output is connected to a capable terminal, then the test
8884 results and the summary are colored appropriately.  The user can disable
8885 colored output by setting the @command{make} variable
8886 @samp{AM_COLOR_TESTS=no}, or force colored output even without a connecting
8887 terminal with @samp{AM_COLOR_TESTS=always}.  It's also worth noting that
8888 some @command{make} implementations, when used in parallel mode, have
8889 slightly different semantics (@pxref{Parallel make,,, autoconf,
8890 The Autoconf Manual}), which can break the automatic detection of a
8891 connection to a capable terminal.  If this is the case, you'll have to
8892 resort to the use of @samp{AM_COLOR_TESTS=always} in order to have the
8893 testsuite output colorized.
8894
8895 Test programs that need data files should look for them in @code{srcdir}
8896 (which is both a make variable and an environment variable made available
8897 to the tests), so that they work when building in a separate directory
8898 (@pxref{Build Directories, , Build Directories , autoconf,
8899 The Autoconf Manual}), and in particular for the @code{distcheck} rule
8900 (@pxref{Checking the Distribution}).
8901
8902 @vindex TESTS
8903 @vindex TESTS_ENVIRONMENT
8904 @vindex AM_TESTS_ENVIRONMENT
8905 The @code{AM_TESTS_ENVIRONMENT} and @code{TESTS_ENVIRONMENT} variables can
8906 be used to run initialization code and set environment variables for the
8907 test scripts.  The former variable is developer-reserved, and can be
8908 defined in the @file{Makefile.am}, while the latter is reserved for the
8909 user, which can employ it to extend or override the settings in the
8910 former; for this to work portably, however, the contents of a non-empty
8911 @code{AM_TESTS_ENVIRONMENT} @emph{must} be terminated by a semicolon.
8912
8913 @vindex AM_TESTS_FD_REDIRECT
8914 The @code{AM_TESTS_FD_REDIRECT} variable can be used to define file
8915 descriptor redirections for the test scripts.  One might think that
8916 @code{AM_TESTS_ENVIRONMENT} could be used for this purpose, but experience
8917 has shown that doing so portably is practically impossible.  The main
8918 hurdle is constituted by Korn shells, which usually set the close-on-exec
8919 flag on file descriptors opened with the @command{exec} builtin, thus
8920 rendering an idiom like @code{AM_TESTS_ENVIRONMENT = exec 9>&2;}
8921 ineffectual.  This issue also affects some Bourne shells, such as the
8922 HP-UX's @command{/bin/sh},
8923 @c FIXME: should we offer a link to the relevant discussions on the
8924 @c bug-autoconf list?
8925
8926 @c Keep in sync with tests-environment-backcompat.test.
8927 @example
8928 AM_TESTS_ENVIRONMENT = \
8929 ## Some environment initializations are kept in a separate shell
8930 ## file `tests-env.sh', which can make it easier to also run tests
8931 ## from the command line.
8932   . $(srcdir)/tests-env.sh; \
8933 ## On Solaris, prefer more POSIX-compliant versions of the standard
8934 ## tools by default.
8935   if test -d /usr/xpg4/bin; then \
8936     PATH=/usr/xpg4/bin:$$PATH; export PATH; \
8937   fi;
8938 @c $$ restore font-lock
8939 ## With this, the test scripts will be able to print diagnostic
8940 ## messages to the original standard error stream, even if the test
8941 ## driver redirects the stderr of the test scripts to a log file
8942 ## before executing them.
8943 AM_TESTS_FD_REDIRECT = 9>&2
8944 @end example
8945
8946 @noindent
8947 Note however that @code{AM_TESTS_ENVIRONMENT} is, for historical and
8948 implementation reasons, @emph{not} supported by the serial harness
8949 (@pxref{Serial Test Harness}).
8950
8951 Automake ensures that each file listed in @code{TESTS} is built before
8952 it is run; you can list both source and derived programs (or scripts)
8953 in @code{TESTS}; the generated rule will look both in @code{srcdir} and
8954 @file{.}.  For instance, you might want to run a C program as a test.
8955 To do this you would list its name in @code{TESTS} and also in
8956 @code{check_PROGRAMS}, and then specify it as you would any other
8957 program.
8958
8959 Programs listed in @code{check_PROGRAMS} (and @code{check_LIBRARIES},
8960 @code{check_LTLIBRARIES}...) are only built during @code{make check},
8961 not during @code{make all}.  You should list there any program needed
8962 by your tests that does not need to be built by @code{make all}.  Note
8963 that @code{check_PROGRAMS} are @emph{not} automatically added to
8964 @code{TESTS} because @code{check_PROGRAMS} usually lists programs used
8965 by the tests, not the tests themselves.  Of course you can set
8966 @code{TESTS = $(check_PROGRAMS)} if all your programs are test cases.
8967
8968 @node Serial Test Harness
8969 @subsection Serial Test Harness
8970
8971 @emph{NOTE:} This harness, while still being the default one, is
8972 obsolescent, and kept mostly for backward-compatibility reasons.
8973 The user is advised to use the parallel test harness instead
8974 (@pxref{Parallel Test Harness}).
8975
8976 The serial harness operates by simply running the tests serially, one at
8977 the time, without any I/O redirection.  It's up to the user to implement
8978 logging of tests' output, if that's requited or desired.
8979 @c TODO: give an example of how this can be done.
8980
8981 For historical and implementation reasons, the @code{AM_TESTS_ENVIRONMENT}
8982 variable is @emph{not} supported by this harness (it will be silently
8983 ignored if defined); only @code{TESTS_ENVIRONMENT} is, and it is to be
8984 considered a developer-reserved variable.  This is done so that, when
8985 using the serial harness, @code{TESTS_ENVIRONMENT} can be defined to an
8986 invocation of an interpreter through which the tests are to be run.
8987 For instance, the following setup may be used to run tests with Perl:
8988
8989 @example
8990 TESTS_ENVIRONMENT = $(PERL) -Mstrict -w
8991 TESTS = foo.pl bar.pl baz.pl
8992 @end example
8993
8994 @noindent
8995 It's important to note that the use of @code{TESTS_ENVIRONMENT} endorsed
8996 here would be @emph{invalid} with the parallel harness.  That harness
8997 provides a more elegant way to achieve the same effect, with the further
8998 benefit of freeing the @code{TESTS_ENVIRONMENT} variable for the user
8999 (@pxref{Parallel Test Harness}).
9000
9001 Another, less serious limit of the serial harness is that it doesn't
9002 really distinguish between simple failures and hard errors; this is
9003 due to historical reasons only, and might be fixed in future Automake
9004 versions.
9005
9006 @node Parallel Test Harness
9007 @subsection Parallel Test Harness
9008 @cindex @option{parallel-tests}, Using
9009
9010 The parallel (or concurrent) test harness is enabled by the Automake option
9011 @option{parallel-tests}.  It features automatic collection of the test
9012 scripts output in @file{.log} files, concurrent execution of tests with
9013 @code{make -j}, specification of inter-test dependencies, lazy reruns of
9014 tests that have not completed in a prior run, and hard errors for exceptional
9015 failures. 
9016
9017 This harness is still somewhat experimental and may undergo changes in
9018 order to satisfy additional portability requirements.
9019
9020 @anchor{Basics of test metadata}
9021 @vindex TEST_SUITE_LOG
9022 @vindex TESTS
9023 @cindex @file{.log} files
9024 @cindex @file{.trs} files
9025 @cindex test metadata
9026 The parallel test harness operates by defining a set of @command{make}
9027 rules that run the test scripts listed in @code{TESTS}, and, for each
9028 such script, save its output in a corresponding @file{.log} file and
9029 its results (and other ``metadata'', @pxref{API for Custom Test Drivers})
9030 in a corresponding @file{.trs} (as in @b{T}est @b{R}e@b{S}ults) file.
9031 @c We choose the `.trs' extension also because, at the time of writing,
9032 @c it isn't already used for other significant purposes; see e.g.:
9033 @c   - http://filext.com/file-extension/trs
9034 @c   - http://www.file-extensions.org/search/?searchstring=trs
9035 The @file{.log} file will contain all the output emitted by the test on
9036 its standard output and its standard error.  The @file{.trs} file will
9037 contain, among the other things, the results of the test cases run by
9038 the script.
9039
9040 The parallel test harness will also create a summary log file,
9041 @code{TEST_SUITE_LOG}, which defaults to @file{test-suite.log} and requires
9042 a @file{.log} suffix.  This file depends upon all the @file{.log} and
9043 @file{.trs} files created for the test scripts listed in @code{TESTS}.
9044
9045 @vindex VERBOSE
9046 As with the serial harness above, by default one status line is printed
9047 per completed test, and a short summary after the suite has completed.
9048 However, standard output and standard error of the test are redirected
9049 to a per-test log file, so that parallel execution does not produce
9050 intermingled output.  The output from failed tests is collected in the
9051 @file{test-suite.log} file.  If the variable @samp{VERBOSE} is set, this
9052 file is output after the summary.
9053 @c FIXME: we should be clearer about what we mean exactly here ...
9054 For best results, the tests should be verbose by default now.
9055
9056 @vindex TEST_EXTENSIONS
9057 @vindex TEST_LOGS
9058 Each couple of @file{.log} and @file{.trs} files is created when the
9059 corresponding test has completed.  The set of log files is listed in
9060 the read-only variable @code{TEST_LOGS}, and defaults to @code{TESTS},
9061 with the executable extension if any (@pxref{EXEEXT}), as well as any
9062 suffix listed in @code{TEST_EXTENSIONS} removed, and @file{.log} appended.
9063 Results are undefined if a test file name ends in several concatenated
9064 suffixes.  @code{TEST_EXTENSIONS} defaults to @file{.test}; it can be
9065 overridden by the user, in which case any extension listed in it must be
9066 constituted by a dot, followed by a non-digit alphabetic character,
9067 followed by any number of alphabetic characters.
9068 @c Keep in sync with test-extensions.test.
9069 For example, @samp{.sh}, @samp{.T} and @samp{.t1} are valid extensions,
9070 while @samp{.x-y}, @samp{.6c} and @samp{.t.1} are not.
9071
9072 @vindex _LOG_COMPILE
9073 @vindex _LOG_COMPILER
9074 @vindex _LOG_FLAGS
9075 @vindex LOG_COMPILE
9076 @vindex LOG_COMPILER
9077 @vindex LOG_FLAGS
9078 @vindex @var{ext}_LOG_COMPILE
9079 @vindex @var{ext}_LOG_COMPILER
9080 @vindex @var{ext}_LOG_FLAGS
9081 @vindex AM_@var{ext}_LOG_FLAGS
9082 @vindex AM_LOG_FLAGS
9083 For tests that match an extension @code{.@var{ext}} listed in
9084 @code{TEST_EXTENSIONS}, you can provide a custom ``test runner'' using
9085 the variable @code{@var{ext}_LOG_COMPILER} (note the upper-case
9086 extension) and pass options in @code{AM_@var{ext}_LOG_FLAGS} and allow
9087 the user to pass options in @code{@var{ext}_LOG_FLAGS}.  It will cause
9088 all tests with this extension to be called with this runner.  For all
9089 tests without a registered extension, the variables @code{LOG_COMPILER},
9090 @code{AM_LOG_FLAGS}, and @code{LOG_FLAGS} may be used.  For example,
9091
9092 @c Keep in sync with parallel-tests-log-compiler-example.test.
9093 @example
9094 TESTS = foo.pl bar.py baz
9095 TEST_EXTENSIONS = .pl .py
9096 PL_LOG_COMPILER = $(PERL)
9097 AM_PL_LOG_FLAGS = -w
9098 PY_LOG_COMPILER = $(PYTHON)
9099 AM_PY_LOG_FLAGS = -v
9100 LOG_COMPILER = ./wrapper-script
9101 AM_LOG_FLAGS = -d
9102 @end example
9103
9104 @noindent
9105 will invoke @samp{$(PERL) -w foo.pl}, @samp{$(PYTHON) -v bar.py},
9106 and @samp{./wrapper-script -d baz} to produce @file{foo.log},
9107 @file{bar.log}, and @file{baz.log}, respectively.  The @file{foo.trs},
9108 @file{bar.trs} and @file{baz.trs} files will be automatically produced
9109 as a side-effect.
9110
9111 It's important to note that, differently from what we've seen for the
9112 serial test harness (@pxref{Parallel Test Harness}), the
9113 @code{AM_TESTS_ENVIRONMENT} and @code{TESTS_ENVIRONMENT} variables
9114 @emph{cannot} be use to define a custom test runner; the
9115 @code{LOG_COMPILER} and @code{LOG_FLAGS} (or their extension-specific
9116 counterparts) should be used instead:
9117
9118 @example
9119 ## This is WRONG!
9120 AM_TESTS_ENVIRONMENT = PERL5LIB='$(srcdir)/lib' $(PERL) -Mstrict -w
9121 @end example
9122
9123 @example
9124 ## Do this instead.
9125 AM_TESTS_ENVIRONMENT = PERL5LIB='$(srcdir)/lib'; export PERL5LIB;
9126 LOG_COMPILER = $(PERL)
9127 AM_LOG_FLAGS = -Mstrict -w
9128 @end example
9129
9130 By default, the test suite harness will run all tests, but there are
9131 several ways to limit the set of tests that are run:
9132
9133 @itemize @bullet
9134 @item
9135 You can set the @code{TESTS} variable.  For example, you can use a
9136 command like this to run only a subset of the tests:
9137
9138 @example
9139 env TESTS="foo.test bar.test" make -e check
9140 @end example
9141
9142 Note however that the command above will unconditionally overwrite the
9143 @file{test-suite.log} file, thus clobbering the recorded results
9144 of any previous testsuite run.  This might be undesirable for packages
9145 whose testsuite takes long time to execute.  Luckily, this problem can
9146 easily be avoided by overriding also @code{TEST_SUITE_LOG} at runtime;
9147 for example,
9148
9149 @c Keep in sync with parallel-tests-log-override-2.test.
9150 @example
9151 env TEST_SUITE_LOG=partial.log TESTS="..." make -e check
9152 @end example
9153
9154 will write the result of the partial testsuite runs to the
9155 @file{partial.log}, without touching @file{test-suite.log}.
9156
9157 @item
9158 You can set the @code{TEST_LOGS} variable.  By default, this variable is
9159 computed at @command{make} run time from the value of @code{TESTS} as
9160 described above.  For example, you can use the following:
9161
9162 @example
9163 set x subset*.log; shift
9164 env TEST_LOGS="foo.log $*" make -e check
9165 @end example
9166
9167 The comments made above about @code{TEST_SUITE_LOG} overriding applies
9168 here too.
9169
9170 @item
9171 @vindex RECHECK_LOGS
9172 @cindex lazy test execution
9173 By default, the test harness removes all old per-test @file{.log} and
9174 @file{.trs} files before it starts running tests to regenerate them.  The
9175 variable @code{RECHECK_LOGS} contains the set of @file{.log} (and, by
9176 implication, @file{.trs}) files which are removed.  @code{RECHECK_LOGS}
9177 defaults to @code{TEST_LOGS}, which means all tests need to be rechecked.
9178 By overriding this variable, you can choose which tests need to be
9179 reconsidered.  For example, you can lazily rerun only those tests which
9180 are outdated, i.e., older than their prerequisite test files, by setting
9181 this variable to the empty value:
9182
9183 @example
9184 env RECHECK_LOGS= make -e check
9185 @end example
9186
9187 @item
9188 @trindex recheck
9189 You can ensure that all tests are rerun which have failed or passed
9190 unexpectedly, by running @code{make recheck} in the test directory.
9191 This convenience target will set @code{RECHECK_LOGS} appropriately
9192 before invoking the main test harness.
9193 @end itemize
9194
9195 @noindent
9196 In order to guarantee an ordering between tests even with @code{make
9197 -j@var{N}}, dependencies between the corresponding @file{.log} files
9198 may be specified through usual @command{make} dependencies.  For example,
9199 the following snippet lets the test named @file{foo-execute.test} depend
9200 upon completion of the test @file{foo-compile.test}:
9201
9202 @example
9203 TESTS = foo-compile.test foo-execute.test
9204 foo-execute.log: foo-compile.log
9205 @end example
9206
9207 @noindent
9208 Please note that this ordering ignores the @emph{results} of required
9209 tests, thus the test @file{foo-execute.test} is run even if the test
9210 @file{foo-compile.test} failed or was skipped beforehand.  Further,
9211 please note that specifying such dependencies currently works only for
9212 tests that end in one of the suffixes listed in @code{TEST_EXTENSIONS}.
9213
9214 Tests without such specified dependencies may be run concurrently with
9215 parallel @command{make -j@var{N}}, so be sure they are prepared for
9216 concurrent execution.
9217
9218 @cindex Unit tests
9219 @c Keep in sync with 'parallel-tests-extra-programs.test'.
9220 The combination of lazy test execution and correct dependencies between
9221 tests and their sources may be exploited for efficient unit testing
9222 during development.  To further speed up the edit-compile-test cycle, it
9223 may even be useful to specify compiled programs in @code{EXTRA_PROGRAMS}
9224 instead of with @code{check_PROGRAMS}, as the former allows intertwined
9225 compilation and test execution (but note that @code{EXTRA_PROGRAMS} are
9226 not cleaned automatically, @pxref{Uniform}).
9227
9228 The variables @code{TESTS} and @code{XFAIL_TESTS} may contain
9229 conditional parts as well as configure substitutions.  In the latter
9230 case, however, certain restrictions apply: substituted test names
9231 must end with a nonempty test suffix like @file{.test}, so that one of
9232 the inference rules generated by @command{automake} can apply.  For
9233 literal test names, @command{automake} can generate per-target rules
9234 to avoid this limitation.
9235
9236 Please note that it is currently not possible to use @code{$(srcdir)/}
9237 or @code{$(top_srcdir)/} in the @code{TESTS} variable.  This technical
9238 limitation is necessary to avoid generating test logs in the source tree
9239 and has the unfortunate consequence that it is not possible to specify
9240 distributed tests that are themselves generated by means of explicit
9241 rules, in a way that is portable to all @command{make} implementations
9242 (@pxref{Make Target Lookup,,, autoconf, The Autoconf Manual}, the
9243 semantics of FreeBSD and OpenBSD @command{make} conflict with this).
9244 In case of doubt you may want to require to use GNU @command{make},
9245 or work around the issue with inference rules to generate the tests.
9246
9247 @node Custom Test Drivers
9248 @section Custom Test Drivers
9249
9250 @menu
9251 * Overview of Custom Test Drivers Support::
9252 * Declaring Custom Test Drivers::
9253 * API for Custom Test Drivers::
9254 @end menu
9255
9256 @node Overview of Custom Test Drivers Support
9257 @subsection Overview of Custom Test Drivers Support
9258
9259 Starting from Automake version 1.12, the parallel test harness allows
9260 the package authors to use third-party custom test drivers, in case the
9261 default ones are inadequate for their purposes, or do not support their
9262 testing protocol of choice.
9263
9264 A custom test driver is expected to properly run the test programs passed
9265 to it (including the command-line arguments passed to those programs, if
9266 any), to analyze their execution and outcome, to create the @file{.log}
9267 and @file{.trs} files associated to these test runs, and to display the test
9268 results on the console. It is responsibility of the author of the test
9269 driver to ensure that it implements all the above steps meaningfully and
9270 correctly; Automake isn't and can't be of any help here.  On the other
9271 hand, the Automake-provided code for testsuite summary generation offers
9272 support for test drivers allowing several test results per test script,
9273 if they take care to register such results properly (@pxref{Log files
9274 generation and test results recording}).
9275
9276 The exact details of how test scripts' results are to be determined and
9277 analyzed is left to the individual drivers.  Some drivers might only
9278 consider the test script exit status (this is done for example by the
9279 default test driver used by the parallel test harness, described
9280 in the previous section).  Other drivers might implement more complex and
9281 advanced test protocols, which might require them to parse and interpreter
9282 the output emitted by the test script they're running (examples of such
9283 protocols are TAP and SubUnit).
9284
9285 It's very important to note that, even when using custom test drivers,
9286 most of the infrastructure described in the previous section about the
9287 parallel harness remains in place; this includes:
9288
9289 @itemize
9290 @item
9291 list of test scripts defined in @code{TESTS}, and overridable at
9292 runtime through the redefinition of @code{TESTS} or @code{TEST_LOGS};
9293 @item
9294 concurrency through the use of @command{make}'s option @option{-j};
9295 @item
9296 per-test @file{.log} and @file{.trs} files, and generation of a summary
9297 @file{.log} file from them;
9298 @item
9299 @code{recheck} target, @code{RECHECK_LOGS} variable, and lazy reruns
9300 of tests;
9301 @item
9302 inter-test dependencies;
9303 @item
9304 support for @code{check_*} variables (@code{check_PROGRAMS},
9305 @code{check_LIBRARIES}, ...);
9306 @item
9307 use of @code{VERBOSE} environment variable to get verbose output on
9308 testsuite failures;
9309 @item
9310 definition and honoring of @code{TESTS_ENVIRONMENT},
9311 @code{AM_TESTS_ENVIRONMENT} and @code{AM_TESTS_FD_REDIRECT}
9312 variables;
9313 @item
9314 definition of generic and extension-specific @code{LOG_COMPILER} and
9315 @code{LOG_FLAGS} variables.
9316 @end itemize
9317
9318 @noindent
9319 On the other hand, the exact semantics of how (and if)
9320 @option{color-tests}, @code{XFAIL_TESTS}, and hard errors are supported
9321 and handled is left to the individual test drivers.
9322
9323 @c TODO: We should really add a working example in the doc/ directory,
9324 @c TODO: and reference if from here.
9325
9326 @node Declaring Custom Test Drivers
9327 @subsection Declaring Custom Test Drivers
9328
9329 @vindex _LOG_DRIVER
9330 @vindex _LOG_DRIVER_FLAGS
9331 @vindex LOG_DRIVER
9332 @vindex LOG_DRIVER_FLAGS
9333 @vindex @var{ext}_LOG_DRIVER
9334 @vindex @var{ext}_LOG_DRIVER_FLAGS
9335 @vindex AM_@var{ext}_LOG_DRIVER_FLAGS
9336 @vindex AM_LOG_DRIVER_FLAGS
9337 Custom testsuite drivers are declared by defining the make variables
9338 @code{LOG_DRIVER} or @code{@var{ext}_LOG_DRIVER} (where @var{ext} must
9339 be declared in @code{TEST_EXTENSIONS}).  They must be defined to
9340 programs or scripts that will be used to drive the execution, logging,
9341 and outcome report of the tests with corresponding extensions (or of
9342 those with no registered extension in the case of @code{LOG_DRIVER}).
9343 Clearly, multiple distinct test drivers can be declared in the same
9344 @file{Makefile.am}.  Note moreover that the @code{LOG_DRIVER} variables
9345 are @emph{not} a substitute for the @code{LOG_COMPILER} variables: the
9346 two sets of variables can, and often do, usefully and legitimately
9347 coexist.
9348
9349 @c TODO: We should really be able to point to a clarifying example here!
9350
9351 The developer-reserved variable @code{AM_LOG_DRIVER_FLAGS} and the
9352 user-reserved variable @code{LOG_DRIVER_FLAGS} can be used to define
9353 flags that will be passed to each invocation of @code{LOG_DRIVER},
9354 with the user-defined flags obviously taking precedence over the
9355 developer-reserved ones.  Similarly, for each extension @var{ext}
9356 declared in @code{TEST_EXTENSIONS}, flags listed in
9357 @code{AM_@var{ext}_LOG_DRIVER_FLAGS} and
9358 @code{@var{ext}_LOG_DRIVER_FLAGS} will be passed to
9359 invocations of @code{@var{ext}_LOG_DRIVER}.
9360
9361 @node API for Custom Test Drivers
9362 @subsection API for Custom Test Drivers
9363
9364 Note that @emph{the APIs described here are still highly experimental},
9365 and will very likely undergo tightenings and likely also extensive changes
9366 in the future, to accommodate for new features or to satisfy additional
9367 portability requirements.
9368
9369 The main characteristic of these APIs is that they are designed to share
9370 as much infrastructure, semantics, and implementation details as possible
9371 with the parallel test harness and its default driver.
9372
9373 @menu
9374 * Command-line arguments for test drivers::
9375 * Log files generation and test results recording::
9376 * Testsuite progress output::
9377 @end menu
9378
9379 @node Command-line arguments for test drivers
9380 @subsubsection Command-line arguments for test drivers
9381
9382 A custom driver can rely on various command-line options and arguments
9383 being passed to it automatically by the Automake's @option{parallel-tests}
9384 harness.  It is @emph{mandatory} that it understands all of them (even
9385 if the exact interpretation of the associated semantics can legitimately
9386 change between a test driver and another, and even be a no-op in some
9387 drivers).
9388
9389 @noindent
9390 Here is the list of options:
9391
9392 @table @option
9393 @item --test-name=@var{NAME}
9394 The name of the test, with VPATH prefix (if any) removed.  This can have a
9395 suffix and a directory component (as in e.g., @file{sub/foo.test}), and is
9396 mostly meant to be used in console reports about testsuite advancements and
9397 results (@pxref{Testsuite progress output}).
9398 @item --log-file=@file{@var{PATH}.log}
9399 The @file{.log} file the test driver must create (@pxref{Basics of
9400 test metadata}).  If it has a directory component (as in e.g.,
9401 @file{sub/foo.log}), the test harness will ensure that such directory
9402 exists @emph{before} the test driver is called.
9403 @item --trs-file=@file{@var{PATH}.trs}
9404 The @file{.trs} file the test driver must create (@pxref{Basics of
9405 test metadata}).  If it has a directory component (as in e.g.,
9406 @file{sub/foo.trs}), the test harness will ensure that such directory
9407 exists @emph{before} the test driver is called.
9408 @item --color-tests=@{yes|no@}
9409 Whether the console output should be colorized or not (@pxref{Simple
9410 tests and color-tests}, to learn when this option gets activated and
9411 when it doesn't).
9412 @item --expect-failure=@{yes|no@}
9413 Whether the tested program is expected to fail.
9414 @item --enable-hard-errors=@{yes|no@}
9415 Whether ``hard errors'' in the tested program should be treated differently
9416 from normal failures or not (the default should be @code{yes}).  The exact
9417 meaning of ``hard error'' is highly dependent from the test protocols or
9418 conventions in use.
9419 @item --
9420 Explicitly terminate the list of options.
9421 @end table
9422
9423 @noindent
9424 The first non-option argument passed to the test driver is the program to
9425 be run, and all the following ones are command-line options and arguments
9426 for this program.
9427
9428 Note that the exact semantics attached to the @option{--color-tests},
9429 @option{--expect-failure} and @option{--enable-hard-errors} options are
9430 left up to the individual test drivers.  Still, having a behaviour
9431 compatible or at least similar to that provided by the default
9432 @option{parallel-tests} driver is advised, as that would offer a better
9433 consistency and a more pleasant user experience.
9434
9435 @node Log files generation and test results recording
9436 @subsubsection Log files generation and test results recording
9437
9438 The test driver must correctly generate the files specified by the
9439 @option{--log-file} and @option{--trs-file} option (even when the tested
9440 program fails or crashes).
9441
9442 The @file{.log} file should ideally contain all the output produced by the
9443 tested program, plus optionally other information that might facilitate
9444 debugging or analysis of bug reports.  Apart from that, its format is
9445 basically free.
9446
9447 The @file{.trs} file is used to register some metadata through the use
9448 of custom reStructuredText fields.  This metadata is expected to be
9449 employed in various ways by the parallel test harness; for example, to
9450 count the test results when printing the testsuite summary, or to decide
9451 which tests to re-run upon @command{make reheck}.  Unrecognized metadata
9452 in a @file{.trs} file is currently ignored by the harness, but this might
9453 change in the future. The list of currently recognized metadata follows.
9454
9455 @table @code
9456
9457 @item :test-result:
9458 @cindex Register test result
9459 @cindex Register test case result
9460 @cindex Test result, registering
9461 @cindex Test case result, registering
9462 @cindex @code{:test-result:}
9463 @cindex reStructuredText field, @code{:test-result:}
9464 The test driver must use this field to register the results of @emph{each}
9465 test case run by a test script file.  Several @code{:test-result:} fields
9466 can be present in the same @file{.trs} file; this is done in order to
9467 support test protocols that allow a single test script to run more test
9468 cases.
9469
9470 @c Keep this in sync with lib/am/check-am:$(TEST_SUITE_LOG).
9471 The only recognized test results are currently @code{PASS}, @code{XFAIL},
9472 @code{SKIP}, @code{FAIL}, @code{XPASS} and @code{ERROR}.  These results,
9473 when declared with @code{:test-result:}, can be optionally followed by
9474 text holding the name and/or a brief description of the corresponding
9475 test; the @option{parallel-tests} harness will ignore such extra text when
9476 generating @file{test-suite.log} and preparing the testsuite summary.
9477
9478 @c Keep in sync with 'test-metadata-recheck.test'.
9479 @item @code{:recheck:}
9480 @cindex :recheck:
9481 @cindex reStructuredText field, @code{:recheck:}
9482 If this field is present and defined to @code{no}, then the corresponding
9483 test script will @emph{not} be run upon a @command{make recheck}.  What
9484 happens when two or more @code{:recheck:} fields are present in the same
9485 @file{.trs} file is undefined behaviour.
9486
9487 @c Keep in sync with 'test-metadata-global-log.test'.
9488 @item @code{:copy-in-global-log:}
9489 @cindex :copy-in-global-log:
9490 @cindex reStructuredText field, @code{:copy-in-global-log:}
9491 If this field is present and defined to @code{no}, then the content
9492 of the @file{.log} file will @emph{not} be copied into the global
9493 @file{test-suite.log}.  We allow to forsake such copying because, while
9494 it can be useful in debugging and analysis of bug report, it can also be
9495 just a waste of space in normal situations, e.g., when a test script is
9496 successful.  What happens when two or more @code{:copy-in-global-log:}
9497 fields are present in the same @file{.trs} file is undefined behaviour.
9498
9499 @c Keep in sync with 'test-metadata-global-result.test'.
9500 @item @code{:test-global-result:}
9501 @cindex :test-global-result:
9502 @cindex reStructuredText field, @code{:test-global-result:}
9503 This is used to declare the "global result" of the script.  Currently,
9504 the value of this field is needed only to be reported (more or less
9505 verbatim) in the generated global log file @code{$(TEST_SUITE_LOG)},
9506 so it's quite free-form.  For example, a test script which run 10 test
9507 cases, 6 of which pass and 4 of which are skipped, could reasonably have
9508 a @code{PASS/SKIP} value for this field, while a test script which run
9509 19 successful tests and one failed test could have an @code{ALMOST
9510 PASSED} value.  What happens when two or more @code{:test-global-result:}
9511 fields are present in the same @file{.trs} file is undefined behaviour.
9512 @end table
9513
9514 @noindent
9515 Let's see a small example.  Assume a @file{.trs} file contains the
9516 following lines:
9517
9518 @example
9519 :test-result: PASS server starts
9520 :global-log-copy: no
9521 :test-result: PASS HTTP/1.1 request
9522 :test-result: FAIL HTTP/1.0 request
9523 :recheck: yes
9524 :test-result: SKIP HTTPS request (TLS library wasn't available)
9525 :test-result: PASS server stops
9526 @end example
9527
9528 @noindent
9529 Then the corresponding test script will be re-run by @command{make check},
9530 will contribute with @emph{five} test results to the testsuite summary
9531 (three of these tests being successful, one failed, and one skipped), and
9532 the content of the corresponding @file{.log} file will @emph{not} be
9533 copied in the global log file @file{test-suite.log}.
9534
9535 @node Testsuite progress output
9536 @subsubsection Testsuite progress output
9537
9538 A custom test driver also has the task of displaying, on the standard
9539 output, the test results as soon as they become available.  Depending on
9540 the protocol in use, it can also display the reasons for failures and
9541 skips, and, more generally, any useful diagnostic output (but remember
9542 that each line on the screen is precious, so that cluttering the screen
9543 with overly verbose information is bad idea).  The exact format of this
9544 progress output is left up to the test driver; in fact, a custom test
9545 driver might @emph{theoretically} even decide not to do any such report,
9546 leaving it all to the testsuite summary (that would be a very lousy idea,
9547 of course, and serves only to illustrate the flexibility that is
9548 granted here).
9549
9550 Remember that consistency is good; so, if possible, try to be consistent
9551 with the output of the built-in Automake test drivers, providing a similar
9552 ``look & feel''.  In particular, the testsuite progress output should be
9553 colorized when the @option{--color-tests} is passed to the driver.  On the
9554 other end, if you are using a known and widespread test protocol with
9555 well-established implementations, being consistent with those
9556 implementations' output might be a good idea too.
9557
9558 @c TODO: Give an example, maybe inspired to py.test-style output.
9559 @c TODO: That is a good idea because it shows a test driver that allows
9560 @c TODO: for different levels of verbosity in the progress output (could
9561 @c TODO: be implemented either using a driver cmdline flag, or an
9562 @c TODO: environment variable, or both).
9563
9564 @node Using the TAP test protocol
9565 @section Using the TAP test protocol
9566
9567 @menu
9568 * Introduction to TAP::
9569 * Use TAP with the Automake test harness::
9570 * Incompatibilities with other TAP parsers and drivers::
9571 * Links and external resources on TAP::
9572 @end menu
9573
9574 @node Introduction to TAP
9575 @subsection Introduction to TAP
9576
9577 TAP, the Test Anything Protocol, is a simple text-based interface between
9578 testing modules or programs and a test harness.  The tests (also called
9579 ``TAP producers'' in this context) write test results in a simple format
9580 on standard output; a test harness (also called ``TAP consumer'') will
9581 parse and interpret these results, and properly present them to the user,
9582 and/or register them for later analysis.  The exact details of how this
9583 is accomplished can vary among different test harnesses.  The Automake
9584 parallel harness will present the results on the console in the usual
9585 fashion (@pxref{Testsuite progress on console}), and will use the
9586 @file{.trs} files (@pxref{Basics of test metadata}) to store the test
9587 results and related metadata.  Apart from that, it will try to remain
9588 as much compatible as possible with pre-existing and widespread utilities,
9589 such as the @uref{http://search.cpan.org/~andya/Test-Harness/bin/prove,
9590 @command{prove} utility}, at least for the simpler usages.
9591
9592 TAP started its life as part of the test harness for Perl, but today
9593 it has been (mostly) standardized, and has various independent
9594 implementations in different languages; among them, C, C++, Perl,
9595 Python, PHP, and Java.  For a semi-official specification of the
9596 TAP protocol, please refer to the documentation of
9597 @uref{http://search.cpan.org/~petdance/Test-Harness/lib/Test/Harness/TAP.pod,
9598       @samp{Test::Harness::TAP}}.
9599
9600 The most relevant real-world usages of TAP are obviously in the testsuites
9601 of @command{perl} and of many perl modules.  Still, also other important
9602 third-party packages, such as @uref{http://git-scm.com/, @command{git}},
9603 use TAP in their testsuite.
9604
9605 @node Use TAP with the Automake test harness
9606 @subsection Use TAP with the Automake test harness
9607
9608 Currently, the TAP driver that comes with Automake requires a perl
9609 interpreter to work, and requires various by-hand steps on the
9610 developer's part (this should be fixed in future Automake versions).
9611 You'll have grab the @file{tap-driver.pl} script from the Automake
9612 distribution by hand, copy it in your source tree, add code to
9613 @file{configure.ac} to search a perl interpreter and to define the
9614 @code{$(PERL)} variable accordingly, and use the Automake support
9615 for third-party test drivers to instruct the harness to use the
9616 @file{tap-driver.pl} to run your TAP-producing tests.  See the example
9617 below for clarification.
9618
9619 Apart from the options common to all the Automake test drivers
9620 (@pxref{Command-line arguments for test drivers}), the @file{tap-driver.pl}
9621 supports the following options, whose names are chosen for enhanced
9622 compatibility with the @command{prove} utility.
9623
9624 @table @option
9625 @c Keep in sync with 'tap-exit.test' and 'tap-signal.test'.
9626 @item --ignore-exit
9627 Causes the test driver to ignore the exit status of the test scripts;
9628 by default, the driver will report an error if the script exit with a
9629 non-zero status.  This option has effect also
9630 @item --comments
9631 Instruct the test driver to display TAP diagnostic (i.e., lines beginning
9632 with the @samp{#} character) in the testsuite progress output too; by
9633 default, TAP diagnostic is only copied in the @file{.log} file.
9634 @item --no-comments
9635 Revert the effects of @option{--comments}.
9636 @item --merge
9637 Instruct the test driver to merge the test scripts' standard error into
9638 their standard output.  This is necessary if you want to ensure that
9639 diagnostics from the test scripts are displayed in the correct order
9640 relative to test results; this can be of great help in debugging
9641 (especially if your test scripts are shell scripts run with shell
9642 tracing active).  As a downside, this option might cause the test
9643 harness to get confused if anything that appears on standard error
9644 looks like a test result.
9645 @item --no-merge
9646 Revert the effects of @option{--merge}.
9647 @item --diagnostic-string=@var{STRING}
9648 Change the string that introduces TAP diagnostic from the default value
9649 of ``@code{#}'' to @code{@var{STRING}}.  This can be useful if your
9650 TAP-based test scripts produce verbose output on which they have limited
9651 control (because, say, the output comes by other tools invoked in the
9652 scripts), and it might contain text that gets spuriously interpreted as
9653 TAP diagnostic: such an issue can be solved by redefining the string that
9654 activates TAP diagnostic to a value you know won't appear by chance in
9655 the tests' output.  Note however that this feature is non-standard, as
9656 the ``official'' TAP protocol does not allow for such a customization; so
9657 don't use it if you can avoid it.
9658 @end table
9659
9660 @noindent
9661 Here is an example of how the TAP driver can be set up and used.
9662
9663 @c Keep in sync with tap-doc2.test.
9664 @example
9665 % @kbd{cat configure.ac}
9666 AC_INIT([GNU Try Tap], [1.0], [bug-automake@@gnu.org])
9667 AC_CONFIG_AUX_DIR([build-aux])
9668 AM_INIT_AUTOMAKE([foreign parallel-tests -Wall -Werror])
9669 AC_CONFIG_FILES([Makefile])
9670 AC_REQUIRE_AUX_FILE([tap-driver.pl])
9671 AC_PATH_PROG([PERL], [perl])
9672 test -n "$PERL" || AC_MSG_ERROR([perl not found])
9673 $PERL -MTAP::Parser -e 1 || AC_MSG_ERROR([TAP::Parser not found])
9674 AC_OUTPUT
9675
9676 % @kbd{cat Makefile.am}
9677 TEST_LOG_DRIVER = $(PERL) $(srcdir)/build-aux/tap-driver.pl
9678 TESTS = foo.test bar.test baz.test
9679 EXTRA_DIST = $(TESTS)
9680
9681 % @kbd{cat foo.test}
9682 #!/bin/sh
9683 echo 1..4 # Number of tests to be executed.
9684 echo 'ok 1 - Swallows fly'
9685 echo 'not ok 2 - Caterpillars fly # TODO metamorphosis in progress'
9686 echo 'ok 3 - Pigs fly # SKIP not enough acid'
9687 echo '# I just love word plays ...'
9688 echo 'ok 4 - Flies fly too :-)'
9689
9690 % @kbd{cat bar.test}
9691 #!/bin/sh
9692 echo 1..3
9693 echo 'not ok 1 - Bummer, this test has failed.'
9694 echo 'ok 2 - This passed though.'
9695 echo 'Bail out! Ennui kicking in, sorry...'
9696 echo 'ok 3 - This will not be seen.'
9697
9698 % @kbd{cat baz.test}
9699 #!/bin/sh
9700 echo 1..1
9701 echo ok 1
9702 # Exit with error, even if all the test case has been successful.
9703 exit 7
9704
9705 % @kbd{cp @var{PREFIX}/share/automake-@var{APIVERSION}/tap-driver.pl .}
9706 % @kbd{autoreconf -vi && ./configure && make check}
9707 ...
9708 PASS: foo.test 1 - Swallows fly
9709 XFAIL: foo.test 2 - Caterpillars fly # TODO metamorphosis in progress
9710 SKIP: foo.test 3 - Pigs fly # SKIP not enough acid
9711 PASS: foo.test 4 - Flies fly too :-)
9712 FAIL: bar.test 1 - Bummer, this test has failed.
9713 PASS: bar.test 2 - This passed though.
9714 ERROR: bar.test - Bail out! Ennui kicking in, sorry...
9715 PASS: baz.test 1
9716 ERROR: baz.test - exited with status 7
9717 ...
9718 Please report to bug-automake@@gnu.org
9719 ...
9720 % @kbd{echo exit status: $?}
9721 exit status: 1
9722
9723 @c Keep the "skewed" indentation below, it produces pretty PDF output.
9724 % @kbd{env TEST_LOG_DRIVER_FLAGS='--comments --ignore-exit' \
9725       TESTS='foo.test baz.test' make -e check}
9726 ...
9727 PASS: foo.test 1 - Swallows fly
9728 XFAIL: foo.test 2 - Caterpillars fly # TODO metamorphosis in progress
9729 SKIP: foo.test 3 - Pigs fly # SKIP not enough acid
9730 # foo.test: I just love word plays...
9731 PASS: foo.test 4 - Flies fly too :-)
9732 PASS: baz.test 1
9733 ...
9734 % @kbd{echo exit status: $?}
9735 exit status: 0
9736 @end example
9737
9738 @node Incompatibilities with other TAP parsers and drivers
9739 @subsection Incompatibilities with other TAP parsers and drivers
9740
9741 For implementation or historical reasons, the TAP driver and harness as
9742 implemented by Automake have some minors incompatibilities with the
9743 mainstream versions, which you should be aware of.
9744
9745 @itemize @bullet
9746 @item
9747 A @code{Bail out!} directive doesn't stop the whole testsuite, but only
9748 the test script it occurs into.  This doesn't follows TAP specifications,
9749 but on the other hand it maximizes compatibility (and code sharing) with
9750 the ``hard error'' concept of the default @option{parallel-tests} driver.
9751 @item
9752 The @code{version} and @code{pragma} directives are not supported.
9753 @item
9754 The @option{--diagnostic-string} option of out driver allows to modify
9755 the string that introduces TAP diagnostic from the default value
9756 of ``@code{#}''.  The standard TAP protocol has currently no way to
9757 allow this, so if you use it your diagnostic will be lost to more
9758 compliant tools like @command{prove} and @code{Test::Harness}
9759 @item
9760 And there are probably some other small and yet undiscovered
9761 incompatibilities, especially in corner cases or with rare usages.
9762 @end itemize
9763
9764 @node Links and external resources on TAP
9765 @subsection Links and external resources on TAP
9766
9767 @noindent
9768 Here are some links to more extensive official or third-party
9769 documentation and resources about the TAP protocol and related
9770 tools and libraries.
9771 @itemize @bullet
9772 @item
9773 @uref{http://search.cpan.org/~petdance/Test-Harness/lib/Test/Harness/TAP.pod,
9774       @samp{Test::Harness::TAP}},
9775 the (mostly) official documentation about the TAP format and protocol.
9776 @item
9777 @uref{http://search.cpan.org/~andya/Test-Harness/bin/prove,
9778       @command{prove}},
9779 the most famous command-line TAP test driver, included in the distribution
9780 of @command{perl} and
9781 @uref{http://search.cpan.org/~andya/Test-Harness/lib/Test/Harness.pm,
9782       @samp{Test::Harness}}.
9783 @item
9784 The @uref{http://testanything.org/wiki/index.php/Main_Page,TAP wiki}.
9785 @item
9786 A ``gentle introduction'' to testing for perl coders:
9787 @uref{http://search.cpan.org/dist/Test-Simple/lib/Test/Tutorial.pod,
9788       @samp{Test::Tutorial}}.
9789 @item
9790 @uref{http://search.cpan.org/~mschwern/Test-Simple/lib/Test/Simple.pm,
9791       @samp{Test::Simple}}
9792 and
9793 @uref{http://search.cpan.org/~mschwern/Test-Simple/lib/Test/More.pm,
9794       @samp{Test::More}},
9795 the standard perl testing libraries, which are based on TAP.
9796 @item
9797 @uref{http://www.eyrie.org/~eagle/software/c-tap-harness/,C TAP Harness},
9798 a C-based project implementing both a TAP producer and a TAP consumer.
9799 @item
9800 @uref{http://www.tap4j.org/,tap4j},
9801 a Java-based project implementing both a TAP producer and a TAP consumer.
9802 @end itemize
9803
9804 @node DejaGnu Tests
9805 @section DejaGnu Tests
9806
9807 If @uref{ftp://ftp.gnu.org/gnu/dejagnu/, @command{dejagnu}} appears in
9808 @code{AUTOMAKE_OPTIONS}, then a @command{dejagnu}-based test suite is
9809 assumed.  The variable @code{DEJATOOL} is a list of names that are
9810 passed, one at a time, as the @option{--tool} argument to
9811 @command{runtest} invocations; it defaults to the name of the package.
9812
9813 The variable @code{RUNTESTDEFAULTFLAGS} holds the @option{--tool} and
9814 @option{--srcdir} flags that are passed to dejagnu by default; this can be
9815 overridden if necessary.
9816 @vindex RUNTESTDEFAULTFLAGS
9817
9818 The variables @code{EXPECT} and @code{RUNTEST} can
9819 also be overridden to provide project-specific values.  For instance,
9820 you will need to do this if you are testing a compiler toolchain,
9821 because the default values do not take into account host and target
9822 names.
9823 @opindex dejagnu
9824 @vindex DEJATOOL
9825 @vindex EXPECT
9826 @vindex RUNTEST
9827
9828 The contents of the variable @code{RUNTESTFLAGS} are passed to the
9829 @code{runtest} invocation.  This is considered a ``user variable''
9830 (@pxref{User Variables}).  If you need to set @command{runtest} flags in
9831 @file{Makefile.am}, you can use @code{AM_RUNTESTFLAGS} instead.
9832 @vindex RUNTESTFLAGS
9833 @vindex AM_RUNTESTFLAGS
9834
9835 @cindex @file{site.exp}
9836 Automake will generate rules to create a local @file{site.exp} file,
9837 defining various variables detected by @command{configure}.  This file
9838 is automatically read by DejaGnu.  It is OK for the user of a package
9839 to edit this file in order to tune the test suite.  However this is
9840 not the place where the test suite author should define new variables:
9841 this should be done elsewhere in the real test suite code.
9842 Especially, @file{site.exp} should not be distributed.
9843
9844 Still, if the package author has legitimate reasons to extend
9845 @file{site.exp} at @command{make} time, he can do so by defining
9846 the variable @code{EXTRA_DEJAGNU_SITE_CONFIG}; the files listed
9847 there will be considered @file{site.exp} prerequisites, and their
9848 content will be appended to it (in the same order in which they
9849 appear in @code{EXTRA_DEJAGNU_SITE_CONFIG}).  Note that files are
9850 @emph{not} distributed by default.
9851
9852 For more information regarding DejaGnu test suites, see @ref{Top, , ,
9853 dejagnu, The DejaGnu Manual}.
9854
9855 @node Install Tests
9856 @section Install Tests
9857
9858 The @code{installcheck} target is available to the user as a way to
9859 run any tests after the package has been installed.  You can add tests
9860 to this by writing an @code{installcheck-local} rule.
9861
9862
9863 @node Rebuilding
9864 @chapter Rebuilding Makefiles
9865 @cindex rebuild rules
9866
9867 Automake generates rules to automatically rebuild @file{Makefile}s,
9868 @file{configure}, and other derived files like @file{Makefile.in}.
9869
9870 @acindex AM_MAINTAINER_MODE
9871 If you are using @code{AM_MAINTAINER_MODE} in @file{configure.ac}, then
9872 these automatic rebuilding rules are only enabled in maintainer mode.
9873
9874 @vindex ACLOCAL_AMFLAGS
9875 Sometimes you need to run @command{aclocal} with an argument like
9876 @option{-I} to tell it where to find @file{.m4} files.  Since
9877 sometimes @command{make} will automatically run @command{aclocal}, you
9878 need a way to specify these arguments.  You can do this by defining
9879 @code{ACLOCAL_AMFLAGS}; this holds arguments that are passed verbatim
9880 to @command{aclocal}.  This variable is only useful in the top-level
9881 @file{Makefile.am}.
9882
9883 @vindex CONFIG_STATUS_DEPENDENCIES
9884 @vindex CONFIGURE_DEPENDENCIES
9885 @cindex @file{version.sh}, example
9886 @cindex @file{version.m4}, example
9887
9888 Sometimes it is convenient to supplement the rebuild rules for
9889 @file{configure} or @file{config.status} with additional dependencies.
9890 The variables @code{CONFIGURE_DEPENDENCIES} and
9891 @code{CONFIG_STATUS_DEPENDENCIES} can be used to list these extra
9892 dependencies.  These variables should be defined in all
9893 @file{Makefile}s of the tree (because these two rebuild rules are
9894 output in all them), so it is safer and easier to @code{AC_SUBST} them
9895 from @file{configure.ac}.  For instance, the following statement will
9896 cause @file{configure} to be rerun each time @file{version.sh} is
9897 changed.
9898
9899 @example
9900 AC_SUBST([CONFIG_STATUS_DEPENDENCIES], ['$(top_srcdir)/version.sh'])
9901 @end example
9902
9903 @noindent
9904 Note the @samp{$(top_srcdir)/} in the file name.  Since this variable
9905 is to be used in all @file{Makefile}s, its value must be sensible at
9906 any level in the build hierarchy.
9907
9908 Beware not to mistake @code{CONFIGURE_DEPENDENCIES} for
9909 @code{CONFIG_STATUS_DEPENDENCIES}.
9910
9911 @code{CONFIGURE_DEPENDENCIES} adds dependencies to the
9912 @file{configure} rule, whose effect is to run @command{autoconf}.  This
9913 variable should be seldom used, because @command{automake} already tracks
9914 @code{m4_include}d files.  However it can be useful when playing
9915 tricky games with @code{m4_esyscmd} or similar non-recommendable
9916 macros with side effects.
9917
9918 @code{CONFIG_STATUS_DEPENDENCIES} adds dependencies to the
9919 @file{config.status} rule, whose effect is to run @file{configure}.
9920 This variable should therefore carry any non-standard source that may
9921 be read as a side effect of running @command{configure}, like @file{version.sh}
9922 in the example above.
9923
9924 Speaking of @file{version.sh} scripts, we recommend against them
9925 today.  They are mainly used when the version of a package is updated
9926 automatically by a script (e.g., in daily builds).  Here is what some
9927 old-style @file{configure.ac}s may look like:
9928
9929 @example
9930 AC_INIT
9931 . $srcdir/version.sh
9932 AM_INIT_AUTOMAKE([name], $VERSION_NUMBER)
9933 @dots{}
9934 @end example
9935
9936 @noindent
9937 Here, @file{version.sh} is a shell fragment that sets
9938 @code{VERSION_NUMBER}.  The problem with this example is that
9939 @command{automake} cannot track dependencies (listing @file{version.sh}
9940 in @command{CONFIG_STATUS_DEPENDENCIES}, and distributing this file is up
9941 to the user), and that it uses the obsolete form of @code{AC_INIT} and
9942 @code{AM_INIT_AUTOMAKE}.  Upgrading to the new syntax is not
9943 straightforward, because shell variables are not allowed in
9944 @code{AC_INIT}'s arguments.  We recommend that @file{version.sh} be
9945 replaced by an M4 file that is included by @file{configure.ac}:
9946
9947 @example
9948 m4_include([version.m4])
9949 AC_INIT([name], VERSION_NUMBER)
9950 AM_INIT_AUTOMAKE
9951 @dots{}
9952 @end example
9953
9954 @noindent
9955 Here @file{version.m4} could contain something like
9956 @samp{m4_define([VERSION_NUMBER], [1.2])}.  The advantage of this
9957 second form is that @command{automake} will take care of the
9958 dependencies when defining the rebuild rule, and will also distribute
9959 the file automatically.  An inconvenience is that @command{autoconf}
9960 will now be rerun each time the version number is bumped, when only
9961 @file{configure} had to be rerun in the previous setup.
9962
9963
9964 @node Options
9965 @chapter Changing Automake's Behavior
9966
9967 @menu
9968 * Options generalities::        Semantics of Automake option
9969 * List of Automake options::    A comprehensive list of Automake options
9970 @end menu
9971
9972 @node Options generalities
9973 @section Options generalities
9974
9975 Various features of Automake can be controlled by options.  Except where
9976 noted otherwise, options can be specified in one of several ways.  Most
9977 options can be applied on a per-@file{Makefile} basis when listed in a
9978 special @file{Makefile} variable named @code{AUTOMAKE_OPTIONS}.  Some
9979 of these options only make sense when specified in the toplevel
9980 @file{Makefile.am} file.  Options are applied globally to all processed
9981 @file{Makefile} files when listed in the first argument of
9982 @code{AM_INIT_AUTOMAKE} in @file{configure.ac}, and some options which
9983 require changes to the @command{configure} script can only be specified
9984 there.  These are annotated below.
9985
9986 As a general rule, options specified in @code{AUTOMAKE_OPTIONS} take
9987 precedence over those specified in @code{AM_INIT_AUTOMAKE}, which in
9988 turn take precedence over those specified on the command line.
9989
9990 Also, some care must be taken about the interactions among strictness
9991 level and warning categories.  As a general rule, strictness-implied
9992 warnings are overridden by those specified by explicit options.  For
9993 example, even if @samp{portability} warnings are disabled by default
9994 in @option{foreign} strictness, an usage like this will end up enabling
9995 them:
9996
9997 @example
9998 AUTOMAKE_OPTIONS = -Wportability foreign
9999 @end example
10000
10001 However, a strictness level specified in a higher-priority context
10002 will override all the explicit warnings specified in a lower-priority
10003 context.  For example, if @file{configure.ac} contains:
10004
10005 @example
10006 AM_INIT_AUTOMAKE([-Wportability])
10007 @end example
10008
10009 @noindent
10010 and @file{Makefile.am} contains:
10011
10012 @example
10013 AUTOMAKE_OPTIONS = foreign
10014 @end example
10015
10016 @noindent
10017 then @samp{portability} warnings will be @emph{disabled} in
10018 @file{Makefile.am}.
10019
10020 @node List of Automake options
10021 @section List of Automake options
10022
10023 @vindex AUTOMAKE_OPTIONS
10024
10025 @table @asis
10026 @item @option{gnits}
10027 @itemx @option{gnu}
10028 @itemx @option{foreign}
10029 @itemx @option{cygnus}
10030 @cindex Option, @option{gnits}
10031 @cindex Option, @option{gnu}
10032 @cindex Option, @option{foreign}
10033 @cindex Option, @option{cygnus}
10034 @opindex gnits
10035 @opindex gnu
10036 @opindex foreign
10037 @opindex cygnus
10038
10039 Set the strictness as appropriate.  The @option{gnits} option also
10040 implies options @option{readme-alpha} and @option{check-news}.
10041
10042 @item @option{check-news}
10043 @cindex Option, @option{check-news}
10044 @opindex check-news
10045 Cause @samp{make dist} to fail unless the current version number appears
10046 in the first few lines of the @file{NEWS} file.
10047
10048 @item @option{color-tests}
10049 @cindex Option, @option{color-tests}
10050 @opindex color-tests
10051 Cause output of the serial and parallel test harnesses (see @ref{Simple
10052 Tests}) and of properly-written custom test drivers (@pxref{Custom Test
10053 Drivers}) to be colorized on capable terminals.
10054
10055 @item @option{dejagnu}
10056 @cindex Option, @option{dejagnu}
10057 @opindex dejagnu
10058 Cause @command{dejagnu}-specific rules to be generated.  @xref{DejaGnu Tests}.
10059
10060 @item @option{dist-bzip2}
10061 @cindex Option, @option{dist-bzip2}
10062 @opindex dist-bzip2
10063 Hook @code{dist-bzip2} to @code{dist}.
10064 @trindex dist-bzip2
10065
10066 @item @option{dist-lzip}
10067 @cindex Option, @option{dist-lzip}
10068 @opindex dist-lzip
10069 Hook @code{dist-lzip} to @code{dist}.
10070 @trindex dist-lzip
10071
10072 @item @option{dist-lzma}
10073 @cindex Option, @option{dist-lzma}
10074 @opindex dist-lzma
10075 Hook @code{dist-lzma} to @code{dist}.  Obsoleted by @code{dist-xz}.
10076 @trindex dist-lzma
10077
10078 @item @option{dist-shar}
10079 @cindex Option, @option{dist-shar}
10080 @opindex dist-shar
10081 Hook @code{dist-shar} to @code{dist}.
10082 @trindex dist-shar
10083
10084 @item @option{dist-zip}
10085 @cindex Option, @option{dist-zip}
10086 @opindex dist-zip
10087 Hook @code{dist-zip} to @code{dist}.
10088 @trindex dist-zip
10089
10090 @item @option{dist-tarZ}
10091 @cindex Option, @option{dist-tarZ}
10092 @opindex dist-tarZ
10093 Hook @code{dist-tarZ} to @code{dist}.
10094 @trindex dist-tarZ
10095
10096 @item @option{filename-length-max=99}
10097 @cindex Option, @option{filename-length-max=99}
10098 @opindex filename-length-max=99
10099 Abort if file names longer than 99 characters are found during
10100 @samp{make dist}.  Such long file names are generally considered not to
10101 be portable in tarballs.  See the @option{tar-v7} and @option{tar-ustar}
10102 options below.  This option should be used in the top-level
10103 @file{Makefile.am} or as an argument of @code{AM_INIT_AUTOMAKE} in
10104 @file{configure.ac}, it will be ignored otherwise.  It will also be
10105 ignored in sub-packages of nested packages (@pxref{Subpackages}).
10106
10107 @item @option{no-define}
10108 @cindex Option, @option{no-define}
10109 @opindex no-define
10110 This option is meaningful only when passed as an argument to
10111 @code{AM_INIT_AUTOMAKE}.  It will prevent the @code{PACKAGE} and
10112 @code{VERSION} variables from being @code{AC_DEFINE}d.
10113
10114 @item @option{no-dependencies}
10115 @cindex Option, @option{no-dependencies}
10116 @opindex no-dependencies
10117 This is similar to using @option{--ignore-deps} on the command line,
10118 but is useful for those situations where you don't have the necessary
10119 bits to make automatic dependency tracking work
10120 (@pxref{Dependencies}).  In this case the effect is to effectively
10121 disable automatic dependency tracking.
10122
10123 @item @option{no-dist}
10124 @cindex Option, @option{no-dist}
10125 @opindex no-dist
10126 Don't emit any code related to @code{dist} target.  This is useful
10127 when a package has its own method for making distributions.
10128
10129 @item @option{no-dist-gzip}
10130 @cindex Option, @option{no-dist-gzip}
10131 @opindex no-dist-gzip
10132 Do not hook @code{dist-gzip} to @code{dist}.
10133 @trindex no-dist-gzip
10134
10135 @item @option{no-exeext}
10136 @cindex Option, @option{no-exeext}
10137 @opindex no-exeext
10138 If your @file{Makefile.am} defines a rule for target @code{foo}, it
10139 will override a rule for a target named @samp{foo$(EXEEXT)}.  This is
10140 necessary when @code{EXEEXT} is found to be empty.  However, by
10141 default @command{automake} will generate an error for this use.  The
10142 @option{no-exeext} option will disable this error.  This is intended for
10143 use only where it is known in advance that the package will not be
10144 ported to Windows, or any other operating system using extensions on
10145 executables.
10146
10147 @item @option{no-installinfo}
10148 @cindex Option, @option{no-installinfo}
10149 @opindex no-installinfo
10150 The generated @file{Makefile.in} will not cause info pages to be built
10151 or installed by default.  However, @code{info} and @code{install-info}
10152 targets will still be available.  This option is disallowed at
10153 @option{gnu} strictness and above.
10154 @trindex info
10155 @trindex install-info
10156
10157 @item @option{no-installman}
10158 @cindex Option, @option{no-installman}
10159 @opindex no-installman
10160 The generated @file{Makefile.in} will not cause man pages to be
10161 installed by default.  However, an @code{install-man} target will still
10162 be available for optional installation.  This option is disallowed at
10163 @option{gnu} strictness and above.
10164 @trindex install-man
10165
10166 @item @option{nostdinc}
10167 @cindex Option, @option{nostdinc}
10168 @opindex nostdinc
10169 This option can be used to disable the standard @option{-I} options that
10170 are ordinarily automatically provided by Automake.
10171
10172 @item @option{no-texinfo.tex}
10173 @cindex Option, @option{no-texinfo.tex}
10174 @opindex no-texinfo.tex
10175 Don't require @file{texinfo.tex}, even if there are texinfo files in
10176 this directory.
10177
10178 @item @option{parallel-tests}
10179 @cindex Option, @option{parallel-tests}
10180 @opindex parallel-tests
10181 Enable test suite harness for @code{TESTS} that can run tests in parallel
10182 (@pxref{Parallel Test Harness}, for more information).
10183
10184 @item @option{readme-alpha}
10185 @cindex Option, @option{readme-alpha}
10186 @opindex readme-alpha
10187 If this release is an alpha release, and the file @file{README-alpha}
10188 exists, then it will be added to the distribution.  If this option is
10189 given, version numbers are expected to follow one of two forms.  The
10190 first form is @samp{@var{major}.@var{minor}.@var{alpha}}, where each
10191 element is a number; the final period and number should be left off for
10192 non-alpha releases.  The second form is
10193 @samp{@var{major}.@var{minor}@var{alpha}}, where @var{alpha} is a
10194 letter; it should be omitted for non-alpha releases.
10195
10196 @item @option{silent-rules}
10197 @cindex Option, @option{silent-rules}
10198 @opindex silent-rules
10199 Enable less verbose build rules.  This can be used to let build rules
10200 output status lines of the form:
10201 @example
10202 GEN @var{output-file}
10203  CC @var{object-file}
10204 @end example
10205 @noindent
10206 instead of printing the command that will be executed to update
10207 @var{output-file} or to compile @var{object-file}.  It can also
10208 silence @command{libtool} output.
10209
10210 For more information about how to use, enable, or disable silent
10211 rules, @pxref{Automake silent-rules Option}.
10212
10213 @item @option{std-options}
10214 @cindex Options, @option{std-options}
10215 @cindex @samp{make installcheck}, testing @option{--help} and @option{--version}
10216 @cindex @option{--help} check
10217 @cindex @option{--version} check
10218 @opindex std-options
10219
10220 Make the @code{installcheck} rule check that installed scripts and
10221 programs support the @option{--help} and @option{--version} options.
10222 This also provides a basic check that the program's
10223 run-time dependencies are satisfied after installation.
10224
10225 @vindex AM_INSTALLCHECK_STD_OPTIONS_EXEMPT
10226 In a few situations, programs (or scripts) have to be exempted from this
10227 test.  For instance, @command{false} (from GNU coreutils) is never
10228 successful, even for @option{--help} or @option{--version}.  You can list
10229 such programs in the variable @code{AM_INSTALLCHECK_STD_OPTIONS_EXEMPT}.
10230 Programs (not scripts) listed in this variable should be suffixed by
10231 @samp{$(EXEEXT)} for the sake of Windows or OS/2.  For instance, suppose we
10232 build @file{false} as a program but @file{true.sh} as a script, and that
10233 neither of them support @option{--help} or @option{--version}:
10234
10235 @example
10236 AUTOMAKE_OPTIONS = std-options
10237 bin_PROGRAMS = false ...
10238 bin_SCRIPTS = true.sh ...
10239 AM_INSTALLCHECK_STD_OPTIONS_EXEMPT = false$(EXEEXT) true.sh
10240 @end example
10241
10242 @item @option{subdir-objects}
10243 @cindex Options, @option{subdir-objects}
10244 @opindex subdir-objects
10245 If this option is specified, then objects are placed into the
10246 subdirectory of the build directory corresponding to the subdirectory of
10247 the source file.  For instance, if the source file is
10248 @file{subdir/file.cxx}, then the output file would be
10249 @file{subdir/file.o}.
10250
10251 In order to use this option with C sources, you should add
10252 @code{AM_PROG_CC_C_O} to @file{configure.ac}.
10253
10254 @anchor{tar-formats}
10255 @item @option{tar-v7}
10256 @itemx @option{tar-ustar}
10257 @itemx @option{tar-pax}
10258 @cindex Option, @option{tar-v7}
10259 @cindex Option, @option{tar-ustar}
10260 @cindex Option, @option{tar-pax}
10261 @cindex @command{tar} formats
10262 @cindex v7 @command{tar} format
10263 @cindex ustar format
10264 @cindex pax format
10265 @opindex tar-v7
10266 @opindex tar-ustar
10267 @opindex tar-pax
10268
10269 These three mutually exclusive options select the tar format to use
10270 when generating tarballs with @samp{make dist}.  (The tar file created
10271 is then compressed according to the set of @option{no-dist-gzip},
10272 @option{dist-bzip2}, @option{dist-lzip}, @option{dist-xz} and
10273 @option{dist-tarZ} options in use.)
10274
10275 These options must be passed as arguments to @code{AM_INIT_AUTOMAKE}
10276 (@pxref{Macros}) because they can require additional configure checks.
10277 Automake will complain if it sees such options in an
10278 @code{AUTOMAKE_OPTIONS} variable.
10279
10280 @option{tar-v7} selects the old V7 tar format.  This is the historical
10281 default.  This antiquated format is understood by all tar
10282 implementations and supports file names with up to 99 characters.  When
10283 given longer file names some tar implementations will diagnose the
10284 problem while other will generate broken tarballs or use non-portable
10285 extensions.  Furthermore, the V7 format cannot store empty
10286 directories.  When using this format, consider using the
10287 @option{filename-length-max=99} option to catch file names too long.
10288
10289 @option{tar-ustar} selects the ustar format defined by POSIX
10290 1003.1-1988.  This format is believed to be old enough to be portable.
10291 It fully supports empty directories.  It can store file names with up
10292 to 256 characters, provided that the file name can be split at
10293 directory separator in two parts, first of them being at most 155
10294 bytes long.  So, in most cases the maximum file name length will be
10295 shorter than 256 characters.  However you may run against broken tar
10296 implementations that incorrectly handle file names longer than 99
10297 characters (please report them to @email{@value{PACKAGE_BUGREPORT}} so we
10298 can document this accurately).
10299
10300 @option{tar-pax} selects the new pax interchange format defined by POSIX
10301 1003.1-2001.  It does not limit the length of file names.  However,
10302 this format is very young and should probably be restricted to
10303 packages that target only very modern platforms.  There are moves to
10304 change the pax format in an upward-compatible way, so this option may
10305 refer to a more recent version in the future.
10306
10307 @xref{Formats, , Controlling the Archive Format, tar, GNU Tar}, for
10308 further discussion about tar formats.
10309
10310 @command{configure} knows several ways to construct these formats.  It
10311 will not abort if it cannot find a tool up to the task (so that the
10312 package can still be built), but @samp{make dist} will fail.
10313
10314 @item @var{version}
10315 @cindex Option, @var{version}
10316 A version number (e.g., @samp{0.30}) can be specified.  If Automake is not
10317 newer than the version specified, creation of the @file{Makefile.in}
10318 will be suppressed.
10319
10320 @item @option{-W@var{category}} or @option{--warnings=@var{category}}
10321 @cindex Option, warnings
10322 @cindex Option, @option{-W@var{category}}
10323 @cindex Option, @option{--warnings=@var{category}}
10324 These options behave exactly like their command-line counterpart
10325 (@pxref{automake Invocation}).  This allows you to enable or disable some
10326 warning categories on a per-file basis.  You can also setup some warnings
10327 for your entire project; for instance, try @samp{AM_INIT_AUTOMAKE([-Wall])}
10328 in your @file{configure.ac}.
10329
10330 @end table
10331
10332 Unrecognized options are diagnosed by @command{automake}.
10333
10334 If you want an option to apply to all the files in the tree, you can use
10335 the @code{AM_INIT_AUTOMAKE} macro in @file{configure.ac}.
10336 @xref{Macros}.
10337
10338
10339 @node Miscellaneous
10340 @chapter Miscellaneous Rules
10341
10342 There are a few rules and variables that didn't fit anywhere else.
10343
10344 @menu
10345 * Tags::                        Interfacing to cscope, etags and mkid
10346 * Suffixes::                    Handling new file extensions
10347 * Multilibs::   Support for multilibs (deprecated, soon to be removed).
10348 @end menu
10349
10350
10351 @node Tags
10352 @section Interfacing to @command{etags}
10353
10354 @cindex @file{TAGS} support
10355
10356 Automake will generate rules to generate @file{TAGS} files for use with
10357 GNU Emacs under some circumstances.
10358
10359 @trindex tags
10360 If any C, C++ or Fortran 77 source code or headers are present, then
10361 @code{tags} and @code{TAGS} rules will be generated for the directory.
10362 All files listed using the @code{_SOURCES}, @code{_HEADERS}, and
10363 @code{_LISP} primaries will be used to generate tags.  Note that
10364 generated source files that are not distributed must be declared in
10365 variables like @code{nodist_noinst_HEADERS} or
10366 @code{nodist_@var{prog}_SOURCES} or they will be ignored.
10367
10368 A @code{tags} rule will be output at the topmost directory of a
10369 multi-directory package.  When run from this topmost directory,
10370 @samp{make tags} will generate a @file{TAGS} file that includes by
10371 reference all @file{TAGS} files from subdirectories.
10372
10373 The @code{tags} rule will also be generated if the variable
10374 @code{ETAGS_ARGS} is defined.  This variable is intended for use in
10375 directories that contain taggable source that @command{etags} does
10376 not understand.  The user can use the @code{ETAGSFLAGS} to pass
10377 additional flags to @command{etags}; @code{AM_ETAGSFLAGS} is also
10378 available for use in @file{Makefile.am}.
10379 @vindex ETAGS_ARGS
10380 @vindex ETAGSFLAGS
10381 @vindex AM_ETAGSFLAGS
10382
10383 Here is how Automake generates tags for its source, and for nodes in its
10384 Texinfo file:
10385
10386 @example
10387 ETAGS_ARGS = automake.in --lang=none \
10388  --regex='/^@@node[ \t]+\([^,]+\)/\1/' automake.texi
10389 @end example
10390
10391 If you add file names to @code{ETAGS_ARGS}, you will probably also
10392 want to define @code{TAGS_DEPENDENCIES}.  The contents of this variable
10393 are added directly to the dependencies for the @code{tags} rule.
10394 @vindex TAGS_DEPENDENCIES
10395
10396 Automake also generates a @code{ctags} rule that can be used to
10397 build @command{vi}-style @file{tags} files.  The variable @code{CTAGS}
10398 is the name of the program to invoke (by default @command{ctags});
10399 @code{CTAGSFLAGS} can be used by the user to pass additional flags,
10400 and @code{AM_CTAGSFLAGS} can be used by the @file{Makefile.am}.
10401
10402 Automake will also generate an @code{ID} rule that will run
10403 @command{mkid} on the source.  This is only supported on a
10404 directory-by-directory basis.
10405 @trindex id
10406
10407 Similarly, the @code{cscope} rule will create a list of all the source
10408 files in the tree and run @command{cscope} to build an inverted index
10409 database.  The variable @code{CSCOPE} is the name of the program to invoke
10410 (by default @command{cscope}); @code{CSCOPEFLAGS} and
10411 @code{CSCOPE_ARGS} can be used by the user to pass additional flags and
10412 file names respectively, while @code{AM_CSCOPEFLAGS} can be used by the
10413 @file{Makefile.am}.
10414
10415 Finally, Automake also emits rules to support the
10416 @uref{http://www.gnu.org/software/global/, GNU Global Tags program}.
10417 The @code{GTAGS} rule runs Global Tags and puts the
10418 result in the top build directory.  The variable @code{GTAGS_ARGS}
10419 holds arguments that are passed to @command{gtags}.
10420 @vindex GTAGS_ARGS
10421
10422
10423 @node Suffixes
10424 @section Handling new file extensions
10425
10426 @cindex Adding new @code{SUFFIXES}
10427 @cindex @code{SUFFIXES}, adding
10428 @vindex SUFFIXES
10429
10430 It is sometimes useful to introduce a new implicit rule to handle a file
10431 type that Automake does not know about.
10432
10433 For instance, suppose you had a compiler that could compile @file{.foo}
10434 files to @file{.o} files.  You would simply define a suffix rule for
10435 your language:
10436
10437 @example
10438 .foo.o:
10439         foocc -c -o $@@ $<
10440 @end example
10441
10442 Then you could directly use a @file{.foo} file in a @code{_SOURCES}
10443 variable and expect the correct results:
10444
10445 @example
10446 bin_PROGRAMS = doit
10447 doit_SOURCES = doit.foo
10448 @end example
10449
10450 This was the simpler and more common case.  In other cases, you will
10451 have to help Automake to figure out which extensions you are defining your
10452 suffix rule for.  This usually happens when your extension does not
10453 start with a dot.  Then, all you have to do is to put a list of new
10454 suffixes in the @code{SUFFIXES} variable @strong{before} you define your
10455 implicit rule.
10456
10457 For instance, the following definition prevents Automake from misinterpreting
10458 the @samp{.idlC.cpp:} rule as an attempt to transform @file{.idlC} files into
10459 @file{.cpp} files.
10460
10461 @c Keep in sync with suffix7.test.
10462 @example
10463 SUFFIXES = .idl C.cpp
10464 .idlC.cpp:
10465         # whatever
10466 @end example
10467
10468 As you may have noted, the @code{SUFFIXES} variable behaves like the
10469 @code{.SUFFIXES} special target of @command{make}.  You should not touch
10470 @code{.SUFFIXES} yourself, but use @code{SUFFIXES} instead and let
10471 Automake generate the suffix list for @code{.SUFFIXES}.  Any given
10472 @code{SUFFIXES} go at the start of the generated suffixes list, followed
10473 by Automake generated suffixes not already in the list.
10474
10475 @node Multilibs
10476 @section Support for Multilibs (deprecated, soon to be removed).
10477
10478 Automake used to support an obscure feature called multilibs.  @emph{This
10479 feature is now deprecated, and will be removed in the next major Automake
10480 version}.  Still, its implementation will remain available in the
10481 @file{contrib/} directory of the Automake distribution, so it should be
10482 very easy for motivated users to continue to use it in their projects,
10483 if they really need to.
10484
10485 A @dfn{multilib} is a library that is built for multiple different ABIs
10486 at a single time; each time the library is built with a different target
10487 flag combination.  This is only useful when the library is intended to
10488 be cross-compiled, and it is almost exclusively used for compiler
10489 support libraries.
10490
10491 @node Include
10492 @chapter Include
10493
10494 @cmindex include
10495 @cindex Including @file{Makefile} fragment
10496 @cindex @file{Makefile} fragment, including
10497
10498 Automake supports an @code{include} directive that  can be used to
10499 include other @file{Makefile} fragments when @command{automake} is run.
10500 Note that these fragments are read and interpreted by @command{automake},
10501 not by @command{make}.  As with conditionals, @command{make} has no idea that
10502 @code{include} is in use.
10503
10504 There are two forms of @code{include}:
10505
10506 @table @code
10507 @item include $(srcdir)/file
10508 Include a fragment that is found relative to the current source
10509 directory.
10510
10511 @item include $(top_srcdir)/file
10512 Include a fragment that is found relative to the top source directory.
10513 @end table
10514
10515 Note that if a fragment is included inside a conditional, then the
10516 condition applies to the entire contents of that fragment.
10517
10518 Makefile fragments included this way are always distributed because
10519 they are needed to rebuild @file{Makefile.in}.
10520
10521 @node Conditionals
10522 @chapter Conditionals
10523
10524 @cindex Conditionals
10525
10526 Automake supports a simple type of conditionals.
10527
10528 These conditionals are not the same as conditionals in
10529 GNU Make.  Automake conditionals are checked at configure time by the
10530 @file{configure} script, and affect the translation from
10531 @file{Makefile.in} to @file{Makefile}.  They are based on options passed
10532 to @file{configure} and on results that @file{configure} has discovered
10533 about the host system.  GNU Make conditionals are checked at @command{make}
10534 time, and are based on variables passed to the make program or defined
10535 in the @file{Makefile}.
10536
10537 Automake conditionals will work with any make program.
10538
10539 @menu
10540 * Usage of Conditionals::       Declaring conditional content
10541 * Limits of Conditionals::      Enclosing complete statements
10542 @end menu
10543
10544 @node Usage of Conditionals
10545 @section Usage of Conditionals
10546
10547 @acindex AM_CONDITIONAL
10548 Before using a conditional, you must define it by using
10549 @code{AM_CONDITIONAL} in the @file{configure.ac} file (@pxref{Macros}).
10550
10551 @defmac AM_CONDITIONAL (@var{conditional}, @var{condition})
10552 The conditional name, @var{conditional}, should be a simple string
10553 starting with a letter and containing only letters, digits, and
10554 underscores.  It must be different from @samp{TRUE} and @samp{FALSE}
10555 that are reserved by Automake.
10556
10557 The shell @var{condition} (suitable for use in a shell @code{if}
10558 statement) is evaluated when @command{configure} is run.  Note that you
10559 must arrange for @emph{every} @code{AM_CONDITIONAL} to be invoked every
10560 time @command{configure} is run.  If @code{AM_CONDITIONAL} is run
10561 conditionally (e.g., in a shell @code{if} statement), then the result
10562 will confuse @command{automake}.
10563 @end defmac
10564
10565 @cindex @option{--enable-debug}, example
10566 @cindex Example conditional @option{--enable-debug}
10567 @cindex Conditional example, @option{--enable-debug}
10568
10569 Conditionals typically depend upon options that the user provides to
10570 the @command{configure} script.  Here is an example of how to write a
10571 conditional that is true if the user uses the @option{--enable-debug}
10572 option.
10573
10574 @example
10575 AC_ARG_ENABLE([debug],
10576 [  --enable-debug    Turn on debugging],
10577 [case "$@{enableval@}" in
10578   yes) debug=true ;;
10579   no)  debug=false ;;
10580   *) AC_MSG_ERROR([bad value $@{enableval@} for --enable-debug]) ;;
10581 esac],[debug=false])
10582 AM_CONDITIONAL([DEBUG], [test x$debug = xtrue])
10583 @end example
10584
10585 Here is an example of how to use that conditional in @file{Makefile.am}:
10586
10587 @cmindex if
10588 @cmindex endif
10589 @cmindex else
10590
10591 @example
10592 if DEBUG
10593 DBG = debug
10594 else
10595 DBG =
10596 endif
10597 noinst_PROGRAMS = $(DBG)
10598 @end example
10599
10600 This trivial example could also be handled using @code{EXTRA_PROGRAMS}
10601 (@pxref{Conditional Programs}).
10602
10603 You may only test a single variable in an @code{if} statement, possibly
10604 negated using @samp{!}.  The @code{else} statement may be omitted.
10605 Conditionals may be nested to any depth.  You may specify an argument to
10606 @code{else} in which case it must be the negation of the condition used
10607 for the current @code{if}.  Similarly you may specify the condition
10608 that is closed on the @code{endif} line:
10609
10610 @example
10611 if DEBUG
10612 DBG = debug
10613 else !DEBUG
10614 DBG =
10615 endif !DEBUG
10616 @end example
10617
10618 @noindent
10619 Unbalanced conditions are errors.  The @code{if}, @code{else}, and
10620 @code{endif} statements should not be indented, i.e., start on column
10621 one.
10622
10623 The @code{else} branch of the above two examples could be omitted,
10624 since assigning the empty string to an otherwise undefined variable
10625 makes no difference.
10626
10627 @acindex AM_COND_IF
10628 In order to allow access to the condition registered by
10629 @code{AM_CONDITIONAL} inside @file{configure.ac}, and to allow
10630 conditional @code{AC_CONFIG_FILES}, @code{AM_COND_IF} may be used:
10631
10632 @defmac AM_COND_IF (@var{conditional}, @ovar{if-true}, @ovar{if-false})
10633 If @var{conditional} is fulfilled, execute @var{if-true}, otherwise
10634 execute @var{if-false}.  If either branch contains @code{AC_CONFIG_FILES},
10635 it will cause @command{automake} to output the rules for the respective
10636 files only for the given condition.
10637 @end defmac
10638
10639 @code{AM_COND_IF} macros may be nested when m4 quotation is used
10640 properly (@pxref{M4 Quotation, ,, autoconf, The Autoconf Manual}).
10641
10642 @cindex Example conditional @code{AC_CONFIG_FILES}
10643 @cindex @code{AC_CONFIG_FILES}, conditional
10644
10645 Here is an example of how to define a conditional config file:
10646
10647 @example
10648 AM_CONDITIONAL([SHELL_WRAPPER], [test "x$with_wrapper" = xtrue])
10649 AM_COND_IF([SHELL_WRAPPER],
10650            [AC_CONFIG_FILES([wrapper:wrapper.in])])
10651 @end example
10652
10653 @node Limits of Conditionals
10654 @section Limits of Conditionals
10655
10656 Conditionals should enclose complete statements like variables or
10657 rules definitions.  Automake cannot deal with conditionals used inside
10658 a variable definition, for instance, and is not even able to diagnose
10659 this situation.  The following example would not work:
10660
10661 @example
10662 # This syntax is not understood by Automake
10663 AM_CPPFLAGS = \
10664   -DFEATURE_A \
10665 if WANT_DEBUG
10666   -DDEBUG \
10667 endif
10668   -DFEATURE_B
10669 @end example
10670
10671 However the intended definition of @code{AM_CPPFLAGS} can be achieved
10672 with
10673
10674 @example
10675 if WANT_DEBUG
10676   DEBUGFLAGS = -DDEBUG
10677 endif
10678 AM_CPPFLAGS = -DFEATURE_A $(DEBUGFLAGS) -DFEATURE_B
10679 @end example
10680
10681 @noindent
10682 or
10683
10684 @example
10685 AM_CPPFLAGS = -DFEATURE_A
10686 if WANT_DEBUG
10687 AM_CPPFLAGS += -DDEBUG
10688 endif
10689 AM_CPPFLAGS += -DFEATURE_B
10690 @end example
10691
10692 More details and examples of conditionals are described alongside
10693 various Automake features in this manual (@pxref{Conditional
10694 Subdirectories}, @pxref{Conditional Sources}, @pxref{Conditional
10695 Programs}, @pxref{Conditional Libtool Libraries}, @pxref{Conditional
10696 Libtool Sources}).
10697
10698 @node Silencing Make
10699 @chapter Silencing @command{make}
10700
10701 @cindex Silent @command{make}
10702 @cindex Silencing @command{make}
10703 @cindex Silent rules
10704 @cindex Silent @command{make} rules
10705
10706 @menu
10707 * Make verbosity::               Make is verbose by default
10708 * Tricks For Silencing Make::    Standard and generic ways to silence make
10709 * Automake silent-rules Option:: How Automake can help in silencing make
10710 @end menu
10711
10712 @node Make verbosity
10713 @section Make is verbose by default
10714
10715 Normally, when executing the set of rules associated with a target,
10716 @command{make} prints each rule before it is executed.  This behaviour,
10717 while having been in place for a long time, and being even mandated by
10718 the POSIX standard, starkly violates the ``silence is golden'' UNIX
10719 principle@footnote{See also
10720 @uref{http://catb.org/~esr/writings/taoup/html/ch11s09.html}.}:
10721
10722 @quotation
10723 When a program has nothing interesting or surprising to say, it should
10724 say nothing.  Well-behaved Unix programs do their jobs unobtrusively,
10725 with a minimum of fuss and bother.  Silence is golden.
10726 @end quotation
10727
10728 In fact, while such verbosity of @command{make} can theoretically be
10729 useful to track bugs and understand reasons of failures right away, it
10730 can also hide warning and error messages from @command{make}-invoked
10731 tools, drowning them in a flood of uninteresting and seldom useful
10732 messages, and thus allowing them to go easily undetected.
10733
10734 This problem can be very annoying, especially for developers, who usually
10735 know quite well what's going on behind the scenes, and for whom the
10736 verbose output from @command{make} ends up being mostly noise that hampers
10737 the easy detection of potentially important warning messages.
10738
10739 @node Tricks For Silencing Make
10740 @section Standard and generic ways to silence make
10741
10742 Here we describe some common idioms/tricks to obtain a quieter make
10743 output, with their relative advantages and drawbacks.  In the next
10744 section (@ref{Automake silent-rules Option}) we'll see how Automake
10745 can help in this respect.
10746
10747 @itemize @bullet
10748
10749 @item @command{make -s}
10750
10751 This simply causes @command{make} not to print @emph{any} rule before
10752 executing it.
10753
10754 The @option{-s} flag is mandated by POSIX, universally supported, and
10755 its purpose and function are easy to understand.
10756
10757 But it also has its serious limitations too.  First of all, it embodies
10758 an ``all or nothing'' strategy, i.e., either everything is silenced, or
10759 nothing is; this lack of granularity can sometimes be a fatal flaw.
10760 Moreover, when the @option{-s} flag is used, the @command{make} output
10761 might turn out to be too much terse; in case of errors, the user won't
10762 be able to easily see what rule or command have caused them, or even,
10763 in case of tools with poor error reporting, what the errors were!
10764
10765 @item @command{make >/dev/null || make}
10766
10767 Apparently, this perfectly obeys the ``silence is golden'' rule: warnings
10768 from stderr are passed through, output reporting is done only in case of
10769 error, and in that case it should provide a verbose-enough report to allow
10770 an easy determination of the error location and causes.
10771
10772 However, calling @command{make} two times in a row might hide errors
10773 (especially intermittent ones), or subtly change the expected semantic
10774 of the @command{make} calls --- things these which can clearly make
10775 debugging and error assessment very difficult.
10776
10777 @item @command{make --no-print-directory}
10778
10779 This is GNU @command{make} specific.  When called with the
10780 @option{--no-print-directory} option, GNU @command{make} will disable
10781 printing of the working directory by invoked sub-@command{make}s (the
10782 well-known ``@i{Entering/Leaving directory ...}'' messages).  This helps
10783 to decrease the verbosity of the output, but experience has shown that
10784 it can also often render debugging considerably harder in projects using
10785 deeply-nested @command{make} recursion.
10786
10787 As an aside, notice that the @option{--no-print-directory} option is
10788 automatically activated if the @option{-s} flag is used.
10789
10790 @c TODO: Other tricks?
10791 @c TODO: Maybe speak about the @code{.SILENT} target?
10792 @c TODO:  - Pros: More granularity on what to silence.
10793 @c TODO:  - Cons: No easy way to temporarily override.
10794
10795 @end itemize
10796
10797 @node Automake silent-rules Option
10798 @section How Automake can help in silencing make
10799
10800 The tricks and idioms for silencing @command{make} described in the
10801 previous section can be useful from time to time, but we've seen that
10802 they all have their serious drawbacks and limitations.  That's why
10803 automake provides support for a more advanced and flexible way of
10804 obtaining quieter output from @command{make}: the @option{silent-rules}
10805 mode.
10806
10807 @c TODO: Maybe describe in brief the precedent set by the build system
10808 @c of the Linux Kernel, from which Automake took inspiration ... Links?
10809
10810 To give the gist of what @option{silent-rules} can do, here is a simple
10811 comparison between a typical @command{make} output (where silent rules
10812 are disabled) and one with silent rules enabled:
10813
10814 @example
10815 % @kbd{cat Makefile.am}
10816 bin_PROGRAMS = foo
10817 foo_SOURCES = main.c func.c
10818 % @kbd{cat main.c}
10819 int main (void) @{ return func (); @}  /* func used undeclared */
10820 % @kbd{cat func.c}
10821 int func (void) @{ int i; return i; @} /* i used uninitialized */
10822
10823 @i{The make output is by default very verbose.  This causes warnings
10824 from the compiler to be somewhat hidden, and not immediate to spot.}
10825 % @kbd{make CFLAGS=-Wall}
10826 gcc -DPACKAGE_NAME=\"foo\" -DPACKAGE_TARNAME=\"foo\" ...
10827 -DPACKAGE_STRING=\"foo\ 1.0\" -DPACKAGE_BUGREPORT=\"\" ...
10828 -DPACKAGE=\"foo\" -DVERSION=\"1.0\" -I. -Wall -MT main.o
10829 -MD -MP -MF .deps/main.Tpo -c -o main.o main.c
10830 main.c: In function â€˜main’:
10831 main.c:3:3: warning: implicit declaration of function â€˜func’
10832 mv -f .deps/main.Tpo .deps/main.Po
10833 gcc -DPACKAGE_NAME=\"foo\" -DPACKAGE_TARNAME=\"foo\" ...
10834 -DPACKAGE_STRING=\"foo\ 1.0\" -DPACKAGE_BUGREPORT=\"\" ...
10835 -DPACKAGE=\"foo\" -DVERSION=\"1.0\" -I. -Wall -MT func.o
10836 -MD -MP -MF .deps/func.Tpo -c -o func.o func.c
10837 func.c: In function â€˜func’:
10838 func.c:4:3: warning: â€˜i’ used uninitialized in this function
10839 mv -f .deps/func.Tpo .deps/func.Po
10840 gcc -Wall -o foo main.o func.o
10841
10842 @i{Clean up, so that we we can rebuild everything from scratch.}
10843 % @kbd{make clean}
10844 test -z "foo" || rm -f foo
10845 rm -f *.o
10846
10847 @i{Silent rules enabled: the output is minimal but informative.  In
10848 particular, the warnings from the compiler stick out very clearly.}
10849 % @kbd{make V=0 CFLAGS=-Wall}
10850   CC     main.o
10851 main.c: In function â€˜main’:
10852 main.c:3:3: warning: implicit declaration of function â€˜func’
10853   CC     func.o
10854 func.c: In function â€˜func’:
10855 func.c:4:3: warning: â€˜i’ used uninitialized in this function
10856   CCLD   foo
10857 @end example
10858
10859 @cindex silent-rules and libtool
10860 Also, in projects using @command{libtool}, the use of silent rules can
10861 automatically enable the @command{libtool}'s @option{--silent} option:
10862
10863 @example
10864 % @kbd{cat Makefile.am}
10865 lib_LTLIBRARIES = libx.la
10866
10867 % @kbd{make # Both make and libtool are verbose by default.}
10868 ...
10869 libtool: compile: gcc -DPACKAGE_NAME=\"foo\" ... -DLT_OBJDIR=\".libs/\"
10870   -I. -g -O2 -MT libx.lo -MD -MP -MF .deps/libx.Tpo -c libx.c -fPIC
10871   -DPIC -o .libs/libx.o
10872 mv -f .deps/libx.Tpo .deps/libx.Plo
10873 /bin/sh ./libtool --tag=CC --mode=link gcc -g -O2 -o libx.la -rpath
10874   /usr/local/lib libx.lo
10875 libtool: link: gcc -shared .libs/libx.o -Wl,-soname -Wl,libx.so.0
10876   -o .libs/libx.so.0.0.0
10877 libtool: link: cd .libs && rm -f libx.so && ln -s libx.so.0.0.0 libx.so
10878 ...
10879
10880 % @kbd{make V=0}
10881   CC     libx.lo
10882   CCLD   libx.la
10883 @end example
10884
10885 Let's now see how the @option{silent-rules} mode interfaces with the
10886 package developer and the package user.
10887
10888 To enable the use of @option{silent-rules} in his package, a developer
10889 needs to do either of the following:
10890
10891 @itemize @bullet
10892 @item
10893 Add the @option{silent-rules} option as argument to @code{AM_INIT_AUTOMAKE}.
10894 @item
10895 Call the @code{AM_SILENT_RULES} macro from within the @file{configure.ac}
10896 file.
10897 @end itemize
10898
10899 It is not possible to instead specify @option{silent-rules} in a
10900 @file{Makefile.am} file.
10901
10902 If the developer has done either of the above, then the user of the
10903 package may influence the verbosity at @command{configure} run time as
10904 well as at @command{make} run time:
10905
10906 @itemize @bullet
10907 @item
10908 @opindex --enable-silent-rules
10909 @opindex --disable-silent-rules
10910 Passing @option{--enable-silent-rules} to @command{configure} will cause
10911 build rules to be less verbose; the option @option{--disable-silent-rules}
10912 will cause normal verbose output.
10913 @item
10914 @vindex @code{V}
10915 At @command{make} run time, the default chosen at @command{configure}
10916 time may be overridden: @code{make V=1} will produce verbose output,
10917 @code{make V=0} less verbose output.
10918 @end itemize
10919
10920 @cindex default verbosity for silent-rules
10921 Note that silent rules are @emph{disabled} by default; the user must
10922 enable them explicitly at either @command{configure} run time or at
10923 @command{make} run time.  We think that this is a good policy, since
10924 it provides the casual user with enough information to prepare a good
10925 bug report in case anything breaks.
10926
10927 Still, notwithstanding the rationales above, a developer who wants to
10928 make silent rules enabled by default in his own package can do so by
10929 adding a @samp{yes} argument to the @code{AM_SILENT_RULES} call in
10930 @file{configure.ac}.  We advise against this approach, though.
10931
10932 @c Keep in sync with silent-configsite.test
10933 Users who prefer to have silent rules enabled by default can edit their
10934 @file{config.site} file to make the variable @code{enable_silent_rules}
10935 default to @samp{yes}.  This should still allow disabling silent rules
10936 at @command{configure} time and at @command{make} time.
10937
10938 @c FIXME: there's really a need to specify this explicitly?
10939 For portability to different @command{make} implementations, package authors
10940 are advised to not set the variable @code{V} inside the @file{Makefile.am}
10941 file, to allow the user to override the value for subdirectories as well.
10942
10943 The current implementation of this feature normally uses nested
10944 variable expansion @samp{$(@var{var1}$(V))}, a @file{Makefile} feature
10945 that is not required by POSIX 2008 but is widely supported in
10946 practice.  The @option{silent-rules} option thus turns off warnings
10947 about recursive variable expansion, which are in turn enabled by
10948 @option{-Wportability} (@pxref{automake Invocation}).  On the rare
10949 @command{make} implementations that do not support nested variable
10950 expansion, whether rules are silent is always determined at configure
10951 time, and cannot be overridden at make time.  Future versions of POSIX
10952 are likely to require nested variable expansion, so this minor
10953 limitation should go away with time.
10954
10955 @vindex @code{AM_V_GEN}
10956 @vindex @code{AM_V_at}
10957 @vindex @code{AM_DEFAULT_VERBOSITY}
10958 @vindex @code{AM_V}
10959 @vindex @code{AM_DEFAULT_V}
10960 To extend the silent mode to your own rules, you have two choices:
10961
10962 @itemize @bullet
10963 @item
10964 You can use the predefined variable @code{AM_V_GEN} as a prefix to
10965 commands that should output a status line in silent mode, and
10966 @code{AM_V_at} as a prefix to commands that should not output anything
10967 in silent mode.  When output is to be verbose, both of these variables
10968 will expand to the empty string.
10969 @item
10970 You can add your own variables, so strings of your own choice are shown.
10971 The following snippet shows how you would define your own equivalent of
10972 @code{AM_V_GEN}:
10973
10974 @example
10975 pkg_verbose = $(pkg_verbose_@@AM_V@@)
10976 pkg_verbose_ = $(pkg_verbose_@@AM_DEFAULT_V@@)
10977 pkg_verbose_0 = @@echo PKG-GEN $@@;
10978
10979 foo: foo.in
10980         $(pkg_verbose)cp $(srcdir)/foo.in $@@
10981 @end example
10982
10983 @end itemize
10984
10985 As a final note, observe that, even when silent rules are enabled,
10986 the @option{--no-print-directory} option is still required with GNU
10987 @command{make} if the ``@i{Entering/Leaving directory ...}'' messages
10988 are to be disabled.
10989
10990 @node Gnits
10991 @chapter The effect of @option{--gnu} and @option{--gnits}
10992
10993 @cindex @option{--gnu}, required files
10994 @cindex @option{--gnu}, complete description
10995
10996 The @option{--gnu} option (or @option{gnu} in the
10997 @code{AUTOMAKE_OPTIONS} variable) causes @command{automake} to check
10998 the following:
10999
11000 @itemize @bullet
11001 @item
11002 The files @file{INSTALL}, @file{NEWS}, @file{README}, @file{AUTHORS},
11003 and @file{ChangeLog}, plus one of @file{COPYING.LIB}, @file{COPYING.LESSER}
11004 or @file{COPYING}, are required at the topmost directory of the package.
11005
11006 If the @option{--add-missing} option is given, @command{automake} will
11007 add a generic version of the @file{INSTALL} file as well as the
11008 @file{COPYING} file containing the text of the current version of the
11009 GNU General Public License existing at the time of this Automake release
11010 (version 3 as this is written, @uref{http://www.gnu.org/@/copyleft/@/gpl.html}).
11011 However, an existing @file{COPYING} file will never be overwritten by
11012 @command{automake}.
11013
11014 @item
11015 The options @option{no-installman} and @option{no-installinfo} are
11016 prohibited.
11017 @end itemize
11018
11019 Note that this option will be extended in the future to do even more
11020 checking; it is advisable to be familiar with the precise requirements
11021 of the GNU standards.  Also, @option{--gnu} can require certain
11022 non-standard GNU programs to exist for use by various maintainer-only
11023 rules; for instance, in the future @command{pathchk} might be required for
11024 @samp{make dist}.
11025
11026 @cindex @option{--gnits}, complete description
11027
11028 The @option{--gnits} option does everything that @option{--gnu} does, and
11029 checks the following as well:
11030
11031 @itemize @bullet
11032 @item
11033 @samp{make installcheck} will check to make sure that the @option{--help}
11034 and @option{--version} really print a usage message and a version string,
11035 respectively.  This is the @option{std-options} option (@pxref{Options}).
11036
11037 @item
11038 @samp{make dist} will check to make sure the @file{NEWS} file has been
11039 updated to the current version.
11040
11041 @item
11042 @code{VERSION} is checked to make sure its format complies with Gnits
11043 standards.
11044 @c FIXME xref when standards are finished
11045
11046 @item
11047 @cindex @file{README-alpha}
11048 If @code{VERSION} indicates that this is an alpha release, and the file
11049 @file{README-alpha} appears in the topmost directory of a package, then
11050 it is included in the distribution.  This is done in @option{--gnits}
11051 mode, and no other, because this mode is the only one where version
11052 number formats are constrained, and hence the only mode where Automake
11053 can automatically determine whether @file{README-alpha} should be
11054 included.
11055
11056 @item
11057 The file @file{THANKS} is required.
11058 @end itemize
11059
11060
11061 @node Cygnus
11062 @chapter The effect of @option{--cygnus}
11063
11064 @cindex @option{cygnus} strictness
11065
11066 Some packages, notably GNU GCC and GNU gdb, have a build environment
11067 originally written at Cygnus Support (subsequently renamed Cygnus
11068 Solutions, and then later purchased by Red Hat).  Packages with this
11069 ancestry are sometimes referred to as ``Cygnus'' trees.
11070
11071 A Cygnus tree has slightly different rules for how a
11072 @file{Makefile.in} is to be constructed.  Passing @option{--cygnus} to
11073 @command{automake} will cause any generated @file{Makefile.in} to
11074 comply with Cygnus rules.
11075
11076 Here are the precise effects of @option{--cygnus}:
11077
11078 @itemize @bullet
11079 @item
11080 Info files are always created in the build directory, and not in the
11081 source directory.
11082
11083 @item
11084 @file{texinfo.tex} is not required if a Texinfo source file is
11085 specified.  The assumption is that the file will be supplied, but in a
11086 place that Automake cannot find.  This assumption is an artifact of how
11087 Cygnus packages are typically bundled.
11088
11089 @item
11090 @samp{make dist} is not supported, and the rules for it are not
11091 generated.  Cygnus-style trees use their own distribution mechanism.
11092
11093 @item
11094 Certain tools will be searched for in the build tree as well as in the
11095 user's @env{PATH}.  These tools are @command{runtest}, @command{expect},
11096 @command{makeinfo} and @command{texi2dvi}.
11097
11098 @item
11099 @option{--foreign} is implied.
11100
11101 @item
11102 The options @option{no-installinfo} and @option{no-dependencies} are
11103 implied.
11104
11105 @item
11106 The macro @code{AM_MAINTAINER_MODE} is required.
11107
11108 @item
11109 The @code{check} target doesn't depend on @code{all}.
11110 @end itemize
11111
11112 GNU maintainers are advised to use @option{gnu} strictness in preference
11113 to the special Cygnus mode.  Some day, perhaps, the differences between
11114 Cygnus trees and GNU trees will disappear (for instance, as GCC is made
11115 more standards compliant).  At that time the special Cygnus mode will be
11116 removed.
11117
11118
11119 @node Not Enough
11120 @chapter When Automake Isn't Enough
11121
11122 In some situations, where Automake is not up to one task, one has to
11123 resort to handwritten rules or even handwritten @file{Makefile}s.
11124
11125 @menu
11126 * Extending::                   Adding new rules or overriding existing ones.
11127 * Third-Party Makefiles::       Integrating Non-Automake @file{Makefile}s.
11128 @end menu
11129
11130 @node Extending
11131 @section Extending Automake Rules
11132
11133 With some minor exceptions (for example @code{_PROGRAMS} variables,
11134 @code{TESTS}, or @code{XFAIL_TESTS}) being rewritten to append
11135 @samp{$(EXEEXT)}), the contents of a @file{Makefile.am} is copied to
11136 @file{Makefile.in} verbatim.
11137
11138 @cindex copying semantics
11139
11140 These copying semantics mean that many problems can be worked around
11141 by simply adding some @command{make} variables and rules to
11142 @file{Makefile.am}.  Automake will ignore these additions.
11143
11144 @cindex conflicting definitions
11145 @cindex rules, conflicting
11146 @cindex variables, conflicting
11147 @cindex definitions, conflicts
11148
11149 Since a @file{Makefile.in} is built from data gathered from three
11150 different places (@file{Makefile.am}, @file{configure.ac}, and
11151 @command{automake} itself), it is possible to have conflicting
11152 definitions of rules or variables.  When building @file{Makefile.in}
11153 the following priorities are respected by @command{automake} to ensure
11154 the user always has the last word:
11155
11156 @itemize
11157 @item
11158 User defined variables in @file{Makefile.am} have priority over
11159 variables @code{AC_SUBST}ed from @file{configure.ac}, and
11160 @code{AC_SUBST}ed variables have priority over
11161 @command{automake}-defined variables.
11162 @item
11163 As far as rules are concerned, a user-defined rule overrides any
11164 @command{automake}-defined rule for the same target.
11165 @end itemize
11166
11167 @cindex overriding rules
11168 @cindex overriding semantics
11169 @cindex rules, overriding
11170
11171 These overriding semantics make it possible to fine tune some default
11172 settings of Automake, or replace some of its rules.  Overriding
11173 Automake rules is often inadvisable, particularly in the topmost
11174 directory of a package with subdirectories.  The @option{-Woverride}
11175 option (@pxref{automake Invocation}) comes in handy to catch overridden
11176 definitions.
11177
11178 Note that Automake does not make any distinction between rules with
11179 commands and rules that only specify dependencies.  So it is not
11180 possible to append new dependencies to an @command{automake}-defined
11181 target without redefining the entire rule.
11182
11183 @cindex @option{-local} targets
11184 @cindex local targets
11185
11186 However, various useful targets have a @samp{-local} version you can
11187 specify in your @file{Makefile.am}.  Automake will supplement the
11188 standard target with these user-supplied targets.
11189
11190 @trindex  all
11191 @trindex  all-local
11192 @trindex  info
11193 @trindex  info-local
11194 @trindex  dvi
11195 @trindex  dvi-local
11196 @trindex  ps
11197 @trindex  ps-local
11198 @trindex  pdf
11199 @trindex  pdf-local
11200 @trindex  html
11201 @trindex  html-local
11202 @trindex  check
11203 @trindex  check-local
11204 @trindex  install
11205 @trindex  install-data
11206 @trindex  install-data-local
11207 @trindex  install-dvi
11208 @trindex  install-dvi-local
11209 @trindex  install-exec
11210 @trindex  install-exec-local
11211 @trindex  install-html
11212 @trindex  install-html-local
11213 @trindex  install-info
11214 @trindex  install-info-local
11215 @trindex  install-pdf
11216 @trindex  install-pdf-local
11217 @trindex  install-ps
11218 @trindex  install-ps-local
11219 @trindex  uninstall
11220 @trindex  uninstall-local
11221 @trindex  mostlyclean
11222 @trindex  mostlyclean-local
11223 @trindex  clean
11224 @trindex  clean-local
11225 @trindex  distclean
11226 @trindex  distclean-local
11227 @trindex  installdirs
11228 @trindex  installdirs-local
11229 @trindex  installcheck
11230 @trindex  installcheck-local
11231
11232 The targets that support a local version are @code{all}, @code{info},
11233 @code{dvi}, @code{ps}, @code{pdf}, @code{html}, @code{check},
11234 @code{install-data}, @code{install-dvi}, @code{install-exec},
11235 @code{install-html}, @code{install-info}, @code{install-pdf},
11236 @code{install-ps}, @code{uninstall}, @code{installdirs},
11237 @code{installcheck} and the various @code{clean} targets
11238 (@code{mostlyclean}, @code{clean}, @code{distclean}, and
11239 @code{maintainer-clean}).
11240
11241 Note that there are no @code{uninstall-exec-local} or
11242 @code{uninstall-data-local} targets; just use @code{uninstall-local}.
11243 It doesn't make sense to uninstall just data or just executables.
11244
11245 For instance, here is one way to erase a subdirectory during
11246 @samp{make clean} (@pxref{Clean}).
11247
11248 @example
11249 clean-local:
11250         -rm -rf testSubDir
11251 @end example
11252
11253 You may be tempted to use @code{install-data-local} to install a file
11254 to some hard-coded location, but you should avoid this
11255 (@pxref{Hard-Coded Install Paths}).
11256
11257 With the @code{-local} targets, there is no particular guarantee of
11258 execution order; typically, they are run early, but with parallel
11259 make, there is no way to be sure of that.
11260
11261 @cindex @option{-hook} targets
11262 @cindex hook targets
11263 @trindex install-data-hook
11264 @trindex install-exec-hook
11265 @trindex uninstall-hook
11266 @trindex dist-hook
11267
11268 In contrast, some rules also have a way to run another rule, called a
11269 @dfn{hook}; hooks are always executed after the main rule's work is done.
11270 The hook is named after the principal target, with @samp{-hook} appended.
11271 The targets allowing hooks are @code{install-data},
11272 @code{install-exec}, @code{uninstall}, @code{dist}, and
11273 @code{distcheck}.
11274
11275 For instance, here is how to create a hard link to an installed program:
11276
11277 @example
11278 install-exec-hook:
11279         ln $(DESTDIR)$(bindir)/program$(EXEEXT) \
11280            $(DESTDIR)$(bindir)/proglink$(EXEEXT)
11281 @end example
11282
11283 Although cheaper and more portable than symbolic links, hard links
11284 will not work everywhere (for instance, OS/2 does not have
11285 @command{ln}).  Ideally you should fall back to @samp{cp -p} when
11286 @command{ln} does not work.  An easy way, if symbolic links are
11287 acceptable to you, is to add @code{AC_PROG_LN_S} to
11288 @file{configure.ac} (@pxref{Particular Programs, , Particular Program
11289 Checks, autoconf, The Autoconf Manual}) and use @samp{$(LN_S)} in
11290 @file{Makefile.am}.
11291
11292 @cindex versioned binaries, installing
11293 @cindex installing versioned binaries
11294 @cindex @code{LN_S} example
11295 For instance, here is how you could install a versioned copy of a
11296 program using @samp{$(LN_S)}:
11297
11298 @c Keep in sync with insthook.test
11299 @example
11300 install-exec-hook:
11301         cd $(DESTDIR)$(bindir) && \
11302           mv -f prog$(EXEEXT) prog-$(VERSION)$(EXEEXT) && \
11303           $(LN_S) prog-$(VERSION)$(EXEEXT) prog$(EXEEXT)
11304 @end example
11305
11306 Note that we rename the program so that a new version will erase the
11307 symbolic link, not the real binary.  Also we @command{cd} into the
11308 destination directory in order to create relative links.
11309
11310 When writing @code{install-exec-hook} or @code{install-data-hook},
11311 please bear in mind that the exec/data distinction is based on the
11312 installation directory, not on the primary used (@pxref{The Two Parts of
11313 Install}).
11314 @c Keep in sync with primary-prefix-couples-documented-valid.test.
11315 So a @code{foo_SCRIPTS} will be installed by
11316 @code{install-data}, and a @code{barexec_SCRIPTS} will be installed by
11317 @code{install-exec}.  You should define your hooks consequently.
11318
11319 @c FIXME should include discussion of variables you can use in these
11320 @c rules
11321
11322 @node Third-Party Makefiles
11323 @section Third-Party @file{Makefile}s
11324
11325 @cindex Third-party packages, interfacing with
11326 @cindex Interfacing with third-party packages
11327
11328 In most projects all @file{Makefile}s are generated by Automake.  In
11329 some cases, however, projects need to embed subdirectories with
11330 handwritten @file{Makefile}s.  For instance, one subdirectory could be
11331 a third-party project with its own build system, not using Automake.
11332
11333 It is possible to list arbitrary directories in @code{SUBDIRS} or
11334 @code{DIST_SUBDIRS} provided each of these directories has a
11335 @file{Makefile} that recognizes all the following recursive targets.
11336
11337 @cindex recursive targets and third-party @file{Makefile}s
11338 When a user runs one of these targets, that target is run recursively
11339 in all subdirectories.  This is why it is important that even
11340 third-party @file{Makefile}s support them.
11341
11342 @table @code
11343 @item all
11344 Compile the entire package.  This is the default target in
11345 Automake-generated @file{Makefile}s, but it does not need to be the
11346 default in third-party @file{Makefile}s.
11347
11348 @item distdir
11349 @trindex distdir
11350 @vindex distdir
11351 @vindex top_distdir
11352 Copy files to distribute into @samp{$(distdir)}, before a tarball is
11353 constructed.  Of course this target is not required if the
11354 @option{no-dist} option (@pxref{Options}) is used.
11355
11356 The variables @samp{$(top_distdir)} and @samp{$(distdir)}
11357 (@pxref{The dist Hook}) will be passed from the outer package to the subpackage
11358 when the @code{distdir} target is invoked.  These two variables have
11359 been adjusted for the directory that is being recursed into, so they
11360 are ready to use.
11361
11362 @item install
11363 @itemx install-data
11364 @itemx install-exec
11365 @itemx uninstall
11366 Install or uninstall files (@pxref{Install}).
11367
11368 @item install-dvi
11369 @itemx install-html
11370 @itemx install-info
11371 @itemx install-ps
11372 @itemx install-pdf
11373 Install only some specific documentation format (@pxref{Texinfo}).
11374
11375 @item installdirs
11376 Create install directories, but do not install any files.
11377
11378 @item check
11379 @itemx installcheck
11380 Check the package (@pxref{Tests}).
11381
11382 @item mostlyclean
11383 @itemx clean
11384 @itemx distclean
11385 @itemx maintainer-clean
11386 Cleaning rules (@pxref{Clean}).
11387
11388 @item dvi
11389 @itemx pdf
11390 @itemx ps
11391 @itemx info
11392 @itemx html
11393 Build the documentation in various formats (@pxref{Texinfo}).
11394
11395 @item tags
11396 @itemx ctags
11397 Build @file{TAGS} and @file{CTAGS} (@pxref{Tags}).
11398 @end table
11399
11400 If you have ever used Gettext in a project, this is a good example of
11401 how third-party @file{Makefile}s can be used with Automake.  The
11402 @file{Makefile}s @command{gettextize} puts in the @file{po/} and
11403 @file{intl/} directories are handwritten @file{Makefile}s that
11404 implement all these targets.  That way they can be added to
11405 @code{SUBDIRS} in Automake packages.
11406
11407 Directories that are only listed in @code{DIST_SUBDIRS} but not in
11408 @code{SUBDIRS} need only the @code{distclean},
11409 @code{maintainer-clean}, and @code{distdir} rules (@pxref{Conditional
11410 Subdirectories}).
11411
11412 Usually, many of these rules are irrelevant to the third-party
11413 subproject, but they are required for the whole package to work.  It's
11414 OK to have a rule that does nothing, so if you are integrating a
11415 third-party project with no documentation or tag support, you could
11416 simply augment its @file{Makefile} as follows:
11417
11418 @example
11419 EMPTY_AUTOMAKE_TARGETS = dvi pdf ps info html tags ctags
11420 .PHONY: $(EMPTY_AUTOMAKE_TARGETS)
11421 $(EMPTY_AUTOMAKE_TARGETS):
11422 @end example
11423
11424 Another aspect of integrating third-party build systems is whether
11425 they support VPATH builds (@pxref{VPATH Builds}).  Obviously if the
11426 subpackage does not support VPATH builds the whole package will not
11427 support VPATH builds.  This in turns means that @samp{make distcheck}
11428 will not work, because it relies on VPATH builds.  Some people can
11429 live without this (actually, many Automake users have never heard of
11430 @samp{make distcheck}).  Other people may prefer to revamp the
11431 existing @file{Makefile}s to support VPATH@.  Doing so does not
11432 necessarily require Automake, only Autoconf is needed (@pxref{Build
11433 Directories, , Build Directories, autoconf, The Autoconf Manual}).
11434 The necessary substitutions: @samp{@@srcdir@@}, @samp{@@top_srcdir@@},
11435 and @samp{@@top_builddir@@} are defined by @file{configure} when it
11436 processes a @file{Makefile} (@pxref{Preset Output Variables, , Preset
11437 Output Variables, autoconf, The Autoconf Manual}), they are not
11438 computed by the Makefile like the aforementioned @samp{$(distdir)} and
11439 @samp{$(top_distdir)} variables.
11440
11441 It is sometimes inconvenient to modify a third-party @file{Makefile}
11442 to introduce the above required targets.  For instance, one may want to
11443 keep the third-party sources untouched to ease upgrades to new
11444 versions.
11445
11446 @cindex @file{GNUmakefile} including @file{Makefile}
11447 Here are two other ideas.  If GNU make is assumed, one possibility is
11448 to add to that subdirectory a @file{GNUmakefile} that defines the
11449 required targets and includes the third-party @file{Makefile}.  For
11450 this to work in VPATH builds, @file{GNUmakefile} must lie in the build
11451 directory; the easiest way to do this is to write a
11452 @file{GNUmakefile.in} instead, and have it processed with
11453 @code{AC_CONFIG_FILES} from the outer package.  For example if we
11454 assume @file{Makefile} defines all targets except the documentation
11455 targets, and that the @code{check} target is actually called
11456 @code{test}, we could write @file{GNUmakefile} (or
11457 @file{GNUmakefile.in}) like this:
11458
11459 @example
11460 # First, include the real Makefile
11461 include Makefile
11462 # Then, define the other targets needed by Automake Makefiles.
11463 .PHONY: dvi pdf ps info html check
11464 dvi pdf ps info html:
11465 check: test
11466 @end example
11467
11468 @cindex Proxy @file{Makefile} for third-party packages
11469 A similar idea that does not use @code{include} is to write a proxy
11470 @file{Makefile} that dispatches rules to the real @file{Makefile},
11471 either with @samp{$(MAKE) -f Makefile.real $(AM_MAKEFLAGS) target} (if
11472 it's OK to rename the original @file{Makefile}) or with @samp{cd
11473 subdir && $(MAKE) $(AM_MAKEFLAGS) target} (if it's OK to store the
11474 subdirectory project one directory deeper).  The good news is that
11475 this proxy @file{Makefile} can be generated with Automake.  All we
11476 need are @option{-local} targets (@pxref{Extending}) that perform the
11477 dispatch.  Of course the other Automake features are available, so you
11478 could decide to let Automake perform distribution or installation.
11479 Here is a possible @file{Makefile.am}:
11480
11481 @example
11482 all-local:
11483         cd subdir && $(MAKE) $(AM_MAKEFLAGS) all
11484 check-local:
11485         cd subdir && $(MAKE) $(AM_MAKEFLAGS) test
11486 clean-local:
11487         cd subdir && $(MAKE) $(AM_MAKEFLAGS) clean
11488
11489 # Assuming the package knows how to install itself
11490 install-data-local:
11491         cd subdir && $(MAKE) $(AM_MAKEFLAGS) install-data
11492 install-exec-local:
11493         cd subdir && $(MAKE) $(AM_MAKEFLAGS) install-exec
11494 uninstall-local:
11495         cd subdir && $(MAKE) $(AM_MAKEFLAGS) uninstall
11496
11497 # Distribute files from here.
11498 EXTRA_DIST = subdir/Makefile subdir/program.c ...
11499 @end example
11500
11501 Pushing this idea to the extreme, it is also possible to ignore the
11502 subproject build system and build everything from this proxy
11503 @file{Makefile.am}.  This might sound very sensible if you need VPATH
11504 builds but the subproject does not support them.
11505
11506 @node Distributing
11507 @chapter Distributing @file{Makefile.in}s
11508
11509 Automake places no restrictions on the distribution of the resulting
11510 @file{Makefile.in}s.  We still encourage software authors to
11511 distribute their work under terms like those of the GPL, but doing so
11512 is not required to use Automake.
11513
11514 Some of the files that can be automatically installed via the
11515 @option{--add-missing} switch do fall under the GPL@.  However, these also
11516 have a special exception allowing you to distribute them with your
11517 package, regardless of the licensing you choose.
11518
11519
11520 @node API Versioning
11521 @chapter Automake API Versioning
11522
11523 New Automake releases usually include bug fixes and new features.
11524 Unfortunately they may also introduce new bugs and incompatibilities.
11525 This makes four reasons why a package may require a particular Automake
11526 version.
11527
11528 Things get worse when maintaining a large tree of packages, each one
11529 requiring a different version of Automake.  In the past, this meant that
11530 any developer (and sometimes users) had to install several versions of
11531 Automake in different places, and switch @samp{$PATH} appropriately for
11532 each package.
11533
11534 Starting with version 1.6, Automake installs versioned binaries.  This
11535 means you can install several versions of Automake in the same
11536 @samp{$prefix}, and can select an arbitrary Automake version by running
11537 @command{automake-1.6} or @command{automake-1.7} without juggling with
11538 @samp{$PATH}.  Furthermore, @file{Makefile}'s generated by Automake 1.6
11539 will use @command{automake-1.6} explicitly in their rebuild rules.
11540
11541 The number @samp{1.6} in @command{automake-1.6} is Automake's API version,
11542 not Automake's version.  If a bug fix release is made, for instance
11543 Automake 1.6.1, the API version will remain 1.6.  This means that a
11544 package that works with Automake 1.6 should also work with 1.6.1; after
11545 all, this is what people expect from bug fix releases.
11546
11547 If your package relies on a feature or a bug fix introduced in
11548 a release, you can pass this version as an option to Automake to ensure
11549 older releases will not be used.  For instance, use this in your
11550 @file{configure.ac}:
11551
11552 @example
11553   AM_INIT_AUTOMAKE([1.6.1])    dnl Require Automake 1.6.1 or better.
11554 @end example
11555
11556 @noindent
11557 or, in a particular @file{Makefile.am}:
11558
11559 @example
11560   AUTOMAKE_OPTIONS = 1.6.1   # Require Automake 1.6.1 or better.
11561 @end example
11562
11563 @noindent
11564 Automake will print an error message if its version is
11565 older than the requested version.
11566
11567
11568 @heading What is in the API
11569
11570 Automake's programming interface is not easy to define.  Basically it
11571 should include at least all @strong{documented} variables and targets
11572 that a @file{Makefile.am} author can use, any behavior associated with
11573 them (e.g., the places where @samp{-hook}'s are run), the command line
11574 interface of @command{automake} and @command{aclocal}, @dots{}
11575
11576 @heading What is not in the API
11577
11578 Every undocumented variable, target, or command line option, is not part
11579 of the API@.  You should avoid using them, as they could change from one
11580 version to the other (even in bug fix releases, if this helps to fix a
11581 bug).
11582
11583 If it turns out you need to use such an undocumented feature, contact
11584 @email{automake@@gnu.org} and try to get it documented and exercised by
11585 the test-suite.
11586
11587 @node Upgrading
11588 @chapter Upgrading a Package to a Newer Automake Version
11589
11590 Automake maintains three kind of files in a package.
11591
11592 @itemize
11593 @item @file{aclocal.m4}
11594 @item @file{Makefile.in}s
11595 @item auxiliary tools like @file{install-sh} or @file{py-compile}
11596 @end itemize
11597
11598 @file{aclocal.m4} is generated by @command{aclocal} and contains some
11599 Automake-supplied M4 macros.  Auxiliary tools are installed by
11600 @samp{automake --add-missing} when needed.  @file{Makefile.in}s are
11601 built from @file{Makefile.am} by @command{automake}, and rely on the
11602 definitions of the M4 macros put in @file{aclocal.m4} as well as the
11603 behavior of the auxiliary tools installed.
11604
11605 Because all these files are closely related, it is important to
11606 regenerate all of them when upgrading to a newer Automake release.
11607 The usual way to do that is
11608
11609 @example
11610 aclocal # with any option needed (such a -I m4)
11611 autoconf
11612 automake --add-missing --force-missing
11613 @end example
11614
11615 @noindent
11616 or more conveniently:
11617
11618 @example
11619 autoreconf -vfi
11620 @end example
11621
11622 The use of @option{--force-missing} ensures that auxiliary tools will be
11623 overridden by new versions (@pxref{automake Invocation}).
11624
11625 It is important to regenerate all these files each time Automake is
11626 upgraded, even between bug fixes releases.  For instance, it is not
11627 unusual for a bug fix to involve changes to both the rules generated
11628 in @file{Makefile.in} and the supporting M4 macros copied to
11629 @file{aclocal.m4}.
11630
11631 Presently @command{automake} is able to diagnose situations where
11632 @file{aclocal.m4} has been generated with another version of
11633 @command{aclocal}.  However it never checks whether auxiliary scripts
11634 are up-to-date.  In other words, @command{automake} will tell you when
11635 @command{aclocal} needs to be rerun, but it will never diagnose a
11636 missing @option{--force-missing}.
11637
11638 Before upgrading to a new major release, it is a good idea to read the
11639 file @file{NEWS}.  This file lists all changes between releases: new
11640 features, obsolete constructs, known incompatibilities, and
11641 workarounds.
11642
11643 @node FAQ
11644 @chapter Frequently Asked Questions about Automake
11645
11646 This chapter covers some questions that often come up on the mailing
11647 lists.
11648
11649 @menu
11650 * CVS::                         CVS and generated files
11651 * maintainer-mode::             missing and AM_MAINTAINER_MODE
11652 * Wildcards::                   Why doesn't Automake support wildcards?
11653 * Limitations on File Names::   Limitations on source and installed file names
11654 * distcleancheck::              Files left in build directory after distclean
11655 * Flag Variables Ordering::     CFLAGS vs.@: AM_CFLAGS vs.@: mumble_CFLAGS
11656 * Renamed Objects::             Why are object files sometimes renamed?
11657 * Per-Object Flags::            How to simulate per-object flags?
11658 * Multiple Outputs::            Writing rules for tools with many output files
11659 * Hard-Coded Install Paths::    Installing to hard-coded locations
11660 * Debugging Make Rules::        Strategies when things don't work as expected
11661 * Reporting Bugs::              Feedback on bugs and feature requests
11662 @end menu
11663
11664 @node CVS
11665 @section CVS and generated files
11666
11667 @subheading Background: distributed generated Files
11668 @cindex generated files, distributed
11669 @cindex rebuild rules
11670
11671 Packages made with Autoconf and Automake ship with some generated
11672 files like @file{configure} or @file{Makefile.in}.  These files were
11673 generated on the developer's host and are distributed so that
11674 end-users do not have to install the maintainer tools required to
11675 rebuild them.  Other generated files like Lex scanners, Yacc parsers,
11676 or Info documentation, are usually distributed on similar grounds.
11677
11678 Automake outputs rules in @file{Makefile}s to rebuild these files.  For
11679 instance, @command{make} will run @command{autoconf} to rebuild
11680 @file{configure} whenever @file{configure.ac} is changed.  This makes
11681 development safer by ensuring a @file{configure} is never out-of-date
11682 with respect to @file{configure.ac}.
11683
11684 As generated files shipped in packages are up-to-date, and because
11685 @command{tar} preserves times-tamps, these rebuild rules are not
11686 triggered when a user unpacks and builds a package.
11687
11688 @subheading Background: CVS and Timestamps
11689 @cindex timestamps and CVS
11690 @cindex CVS and timestamps
11691
11692 Unless you use CVS keywords (in which case files must be updated at
11693 commit time), CVS preserves timestamp during @samp{cvs commit} and
11694 @samp{cvs import -d} operations.
11695
11696 When you check out a file using @samp{cvs checkout} its timestamp is
11697 set to that of the revision that is being checked out.
11698
11699 However, during @command{cvs update}, files will have the date of the
11700 update, not the original timestamp of this revision.  This is meant to
11701 make sure that @command{make} notices sources files have been updated.
11702
11703 This timestamp shift is troublesome when both sources and generated
11704 files are kept under CVS@.  Because CVS processes files in lexical
11705 order, @file{configure.ac} will appear newer than @file{configure}
11706 after a @command{cvs update} that updates both files, even if
11707 @file{configure} was newer than @file{configure.ac} when it was
11708 checked in.  Calling @command{make} will then trigger a spurious rebuild
11709 of @file{configure}.
11710
11711 @subheading Living with CVS in Autoconfiscated Projects
11712 @cindex CVS and generated files
11713 @cindex generated files and CVS
11714
11715 There are basically two clans amongst maintainers: those who keep all
11716 distributed files under CVS, including generated files, and those who
11717 keep generated files @emph{out} of CVS.
11718
11719 @subsubheading All Files in CVS
11720
11721 @itemize @bullet
11722 @item
11723 The CVS repository contains all distributed files so you know exactly
11724 what is distributed, and you can checkout any prior version entirely.
11725
11726 @item
11727 Maintainers can see how generated files evolve (for instance, you can
11728 see what happens to your @file{Makefile.in}s when you upgrade Automake
11729 and make sure they look OK).
11730
11731 @item
11732 Users do not need the autotools to build a checkout of the project, it
11733 works just like a released tarball.
11734
11735 @item
11736 If users use @command{cvs update} to update their copy, instead of
11737 @command{cvs checkout} to fetch a fresh one, timestamps will be
11738 inaccurate.  Some rebuild rules will be triggered and attempt to
11739 run developer tools such as @command{autoconf} or @command{automake}.
11740
11741 Actually, calls to such tools are all wrapped into a call to the
11742 @command{missing} script discussed later (@pxref{maintainer-mode}).
11743 @command{missing} will take care of fixing the timestamps when these
11744 tools are not installed, so that the build can continue.
11745
11746 @item
11747 In distributed development, developers are likely to have different
11748 version of the maintainer tools installed.  In this case rebuilds
11749 triggered by timestamp lossage will lead to spurious changes
11750 to generated files.  There are several solutions to this:
11751
11752 @itemize
11753 @item
11754 All developers should use the same versions, so that the rebuilt files
11755 are identical to files in CVS@.  (This starts to be difficult when each
11756 project you work on uses different versions.)
11757 @item
11758 Or people use a script to fix the timestamp after a checkout (the GCC
11759 folks have such a script).
11760 @item
11761 Or @file{configure.ac} uses @code{AM_MAINTAINER_MODE}, which will
11762 disable all these rebuild rules by default.  This is further discussed
11763 in @ref{maintainer-mode}.
11764 @end itemize
11765
11766 @item
11767 Although we focused on spurious rebuilds, the converse can also
11768 happen.  CVS's timestamp handling can also let you think an
11769 out-of-date file is up-to-date.
11770
11771 For instance, suppose a developer has modified @file{Makefile.am} and
11772 has rebuilt @file{Makefile.in}, and then decides to do a last-minute
11773 change to @file{Makefile.am} right before checking in both files
11774 (without rebuilding @file{Makefile.in} to account for the change).
11775
11776 This last change to @file{Makefile.am} makes the copy of
11777 @file{Makefile.in} out-of-date.  Since CVS processes files
11778 alphabetically, when another developer @samp{cvs update}s his or her
11779 tree, @file{Makefile.in} will happen to be newer than
11780 @file{Makefile.am}.  This other developer will not see that
11781 @file{Makefile.in} is out-of-date.
11782
11783 @end itemize
11784
11785 @subsubheading Generated Files out of CVS
11786
11787 One way to get CVS and @command{make} working peacefully is to never
11788 store generated files in CVS, i.e., do not CVS-control files that
11789 are @file{Makefile} targets (also called @emph{derived} files).
11790
11791 This way developers are not annoyed by changes to generated files.  It
11792 does not matter if they all have different versions (assuming they are
11793 compatible, of course).  And finally, timestamps are not lost, changes
11794 to sources files can't be missed as in the
11795 @file{Makefile.am}/@file{Makefile.in} example discussed earlier.
11796
11797 The drawback is that the CVS repository is not an exact copy of what
11798 is distributed and that users now need to install various development
11799 tools (maybe even specific versions) before they can build a checkout.
11800 But, after all, CVS's job is versioning, not distribution.
11801
11802 Allowing developers to use different versions of their tools can also
11803 hide bugs during distributed development.  Indeed, developers will be
11804 using (hence testing) their own generated files, instead of the
11805 generated files that will be released actually.  The developer who
11806 prepares the tarball might be using a version of the tool that
11807 produces bogus output (for instance a non-portable C file), something
11808 other developers could have noticed if they weren't using their own
11809 versions of this tool.
11810
11811 @subheading Third-party Files
11812 @cindex CVS and third-party files
11813 @cindex third-party files and CVS
11814
11815 Another class of files not discussed here (because they do not cause
11816 timestamp issues) are files that are shipped with a package, but
11817 maintained elsewhere.  For instance, tools like @command{gettextize}
11818 and @command{autopoint} (from Gettext) or @command{libtoolize} (from
11819 Libtool), will install or update files in your package.
11820
11821 These files, whether they are kept under CVS or not, raise similar
11822 concerns about version mismatch between developers' tools.  The
11823 Gettext manual has a section about this, see @ref{CVS Issues, CVS
11824 Issues, Integrating with CVS, gettext, GNU gettext tools}.
11825
11826 @node maintainer-mode
11827 @section @command{missing} and @code{AM_MAINTAINER_MODE}
11828
11829 @subheading @command{missing}
11830 @cindex @command{missing}, purpose
11831
11832 The @command{missing} script is a wrapper around several maintainer
11833 tools, designed to warn users if a maintainer tool is required but
11834 missing.  Typical maintainer tools are @command{autoconf},
11835 @command{automake}, @command{bison}, etc.  Because file generated by
11836 these tools are shipped with the other sources of a package, these
11837 tools shouldn't be required during a user build and they are not
11838 checked for in @file{configure}.
11839
11840 However, if for some reason a rebuild rule is triggered and involves a
11841 missing tool, @command{missing} will notice it and warn the user.
11842 Besides the warning, when a tool is missing, @command{missing} will
11843 attempt to fix timestamps in a way that allows the build to continue.
11844 For instance, @command{missing} will touch @file{configure} if
11845 @command{autoconf} is not installed.  When all distributed files are
11846 kept under version control, this feature of @command{missing} allows a
11847 user @emph{with no maintainer tools} to build a package off its version
11848 control repository, bypassing any timestamp inconsistency (implied by
11849 e.g.@: @samp{cvs update} or @samp{git clone}).
11850
11851 If the required tool is installed, @command{missing} will run it and
11852 won't attempt to continue after failures.  This is correct during
11853 development: developers love fixing failures.  However, users with
11854 wrong versions of maintainer tools may get an error when the rebuild
11855 rule is spuriously triggered, halting the build.  This failure to let
11856 the build continue is one of the arguments of the
11857 @code{AM_MAINTAINER_MODE} advocates.
11858
11859 @subheading @code{AM_MAINTAINER_MODE}
11860 @cindex @code{AM_MAINTAINER_MODE}, purpose
11861 @acindex AM_MAINTAINER_MODE
11862
11863 @code{AM_MAINTAINER_MODE} allows you to choose whether the so called
11864 "rebuild rules" should be enabled or disabled.  With
11865 @code{AM_MAINTAINER_MODE([enable])}, they are enabled by default,
11866 otherwise they are disabled by default.  In the latter case, if
11867 you have @code{AM_MAINTAINER_MODE} in @file{configure.ac}, and run
11868 @samp{./configure && make}, then @command{make} will *never* attempt to
11869 rebuild @file{configure}, @file{Makefile.in}s, Lex or Yacc outputs, etc.
11870 I.e., this disables build rules for files that are usually distributed
11871 and that users should normally not have to update.
11872
11873 The user can override the default setting by passing either
11874 @samp{--enable-maintainer-mode} or @samp{--disable-maintainer-mode}
11875 to @command{configure}.
11876
11877 People use @code{AM_MAINTAINER_MODE} either because they do not want their
11878 users (or themselves) annoyed by timestamps lossage (@pxref{CVS}), or
11879 because they simply can't stand the rebuild rules and prefer running
11880 maintainer tools explicitly.
11881
11882 @code{AM_MAINTAINER_MODE} also allows you to disable some custom build
11883 rules conditionally.  Some developers use this feature to disable
11884 rules that need exotic tools that users may not have available.
11885
11886 Several years ago Fran@,{c}ois Pinard pointed out several arguments
11887 against this @code{AM_MAINTAINER_MODE} macro.  Most of them relate to
11888 insecurity.  By removing dependencies you get non-dependable builds:
11889 changes to sources files can have no effect on generated files and this
11890 can be very confusing when unnoticed.  He adds that security shouldn't
11891 be reserved to maintainers (what @option{--enable-maintainer-mode}
11892 suggests), on the contrary.  If one user has to modify a
11893 @file{Makefile.am}, then either @file{Makefile.in} should be updated
11894 or a warning should be output (this is what Automake uses
11895 @command{missing} for) but the last thing you want is that nothing
11896 happens and the user doesn't notice it (this is what happens when
11897 rebuild rules are disabled by @code{AM_MAINTAINER_MODE}).
11898
11899 Jim Meyering, the inventor of the @code{AM_MAINTAINER_MODE} macro was
11900 swayed by Fran@,{c}ois's arguments, and got rid of
11901 @code{AM_MAINTAINER_MODE} in all of his packages.
11902
11903 Still many people continue to use @code{AM_MAINTAINER_MODE}, because
11904 it helps them working on projects where all files are kept under version
11905 control, and because @command{missing} isn't enough if you have the
11906 wrong version of the tools.
11907
11908
11909 @node Wildcards
11910 @section Why doesn't Automake support wildcards?
11911 @cindex wildcards
11912
11913 Developers are lazy.  They would often like to use wildcards in
11914 @file{Makefile.am}s, so that they would not need to remember to
11915 update @file{Makefile.am}s every time they add, delete, or rename
11916 a file.
11917
11918 There are several objections to this:
11919 @itemize
11920 @item
11921 When using CVS (or similar) developers need to remember they have to
11922 run @samp{cvs add} or @samp{cvs rm} anyway.  Updating
11923 @file{Makefile.am} accordingly quickly becomes a reflex.
11924
11925 Conversely, if your application doesn't compile
11926 because you forgot to add a file in @file{Makefile.am}, it will help
11927 you remember to @samp{cvs add} it.
11928
11929 @item
11930 Using wildcards makes it easy to distribute files by mistake.  For
11931 instance, some code a developer is experimenting with (a test case,
11932 say) that should not be part of the distribution.
11933
11934 @item
11935 Using wildcards it's easy to omit some files by mistake.  For
11936 instance, one developer creates a new file, uses it in many places,
11937 but forgets to commit it.  Another developer then checks out the
11938 incomplete project and is able to run @samp{make dist} successfully,
11939 even though a file is missing. By listing files, @samp{make dist}
11940 @emph{will} complain.
11941
11942 @item
11943 Wildcards are not portable to some non-GNU @command{make} implementations,
11944 e.g., NetBSD @command{make} will not expand globs such as @samp{*} in
11945 prerequisites of a target.
11946
11947 @item
11948 Finally, it's really hard to @emph{forget} to add a file to
11949 @file{Makefile.am}: files that are not listed in @file{Makefile.am} are
11950 not compiled or installed, so you can't even test them.
11951 @end itemize
11952
11953 Still, these are philosophical objections, and as such you may disagree,
11954 or find enough value in wildcards to dismiss all of them.  Before you
11955 start writing a patch against Automake to teach it about wildcards,
11956 let's see the main technical issue: portability.
11957
11958 Although @samp{$(wildcard ...)} works with GNU @command{make}, it is
11959 not portable to other @command{make} implementations.
11960
11961 The only way Automake could support @command{$(wildcard ...)} is by
11962 expending @command{$(wildcard ...)} when @command{automake} is run.
11963 The resulting @file{Makefile.in}s would be portable since they would
11964 list all files and not use @samp{$(wildcard ...)}.  However that
11965 means developers would need to remember to run @command{automake} each
11966 time they add, delete, or rename files.
11967
11968 Compared to editing @file{Makefile.am}, this is a very small gain.  Sure,
11969 it's easier and faster to type @samp{automake; make} than to type
11970 @samp{emacs Makefile.am; make}.  But nobody bothered enough to write a
11971 patch to add support for this syntax.  Some people use scripts to
11972 generate file lists in @file{Makefile.am} or in separate
11973 @file{Makefile} fragments.
11974
11975 Even if you don't care about portability, and are tempted to use
11976 @samp{$(wildcard ...)} anyway because you target only GNU Make, you
11977 should know there are many places where Automake needs to know exactly
11978 which files should be processed.  As Automake doesn't know how to
11979 expand @samp{$(wildcard ...)}, you cannot use it in these places.
11980 @samp{$(wildcard ...)} is a black box comparable to @code{AC_SUBST}ed
11981 variables as far Automake is concerned.
11982
11983 You can get warnings about @samp{$(wildcard ...}) constructs using the
11984 @option{-Wportability} flag.
11985
11986 @node Limitations on File Names
11987 @section Limitations on File Names
11988 @cindex file names, limitations on
11989
11990 Automake attempts to support all kinds of file names, even those that
11991 contain unusual characters or are unusually long.  However, some
11992 limitations are imposed by the underlying operating system and tools.
11993
11994 Most operating systems prohibit the use of the null byte in file
11995 names, and reserve @samp{/} as a directory separator.  Also, they
11996 require that file names are properly encoded for the user's locale.
11997 Automake is subject to these limits.
11998
11999 Portable packages should limit themselves to POSIX file
12000 names.  These can contain ASCII letters and digits,
12001 @samp{_}, @samp{.}, and @samp{-}.  File names consist of components
12002 separated by @samp{/}.  File name components cannot begin with
12003 @samp{-}.
12004
12005 Portable POSIX file names cannot contain components that exceed a
12006 14-byte limit, but nowadays it's normally safe to assume the
12007 more-generous XOPEN limit of 255 bytes.  POSIX
12008 limits file names to 255 bytes (XOPEN allows 1023 bytes),
12009 but you may want to limit a source tarball to file names of 99 bytes
12010 to avoid interoperability problems with old versions of @command{tar}.
12011
12012 If you depart from these rules (e.g., by using non-ASCII
12013 characters in file names, or by using lengthy file names), your
12014 installers may have problems for reasons unrelated to Automake.
12015 However, if this does not concern you, you should know about the
12016 limitations imposed by Automake itself.  These limitations are
12017 undesirable, but some of them seem to be inherent to underlying tools
12018 like Autoconf, Make, M4, and the shell.  They fall into three
12019 categories: install directories, build directories, and file names.
12020
12021 The following characters:
12022
12023 @example
12024 @r{newline} " # $ ' `
12025 @end example
12026
12027 should not appear in the names of install directories.  For example,
12028 the operand of @command{configure}'s @option{--prefix} option should
12029 not contain these characters.
12030
12031 Build directories suffer the same limitations as install directories,
12032 and in addition should not contain the following characters:
12033
12034 @example
12035 & @@ \
12036 @end example
12037
12038 For example, the full name of the directory containing the source
12039 files should not contain these characters.
12040
12041 Source and installation file names like @file{main.c} are limited even
12042 further: they should conform to the POSIX/XOPEN
12043 rules described above.  In addition, if you plan to port to
12044 non-POSIX environments, you should avoid file names that
12045 differ only in case (e.g., @file{makefile} and @file{Makefile}).
12046 Nowadays it is no longer worth worrying about the 8.3 limits of
12047 DOS file systems.
12048
12049 @node distcleancheck
12050 @section Files left in build directory after distclean
12051 @cindex @code{distclean}, diagnostic
12052 @cindex @samp{make distclean}, diagnostic
12053 @cindex dependencies and distributed files
12054 @trindex distclean
12055 @trindex distcleancheck
12056
12057 This is a diagnostic you might encounter while running @samp{make
12058 distcheck}.
12059
12060 As explained in @ref{Checking the Distribution}, @samp{make distcheck}
12061 attempts to build and check your package for errors like this one.
12062
12063 @samp{make distcheck} will perform a @code{VPATH} build of your
12064 package (@pxref{VPATH Builds}), and then call @samp{make distclean}.
12065 Files left in the build directory after @samp{make distclean} has run
12066 are listed after this error.
12067
12068 This diagnostic really covers two kinds of errors:
12069
12070 @itemize @bullet
12071 @item
12072 files that are forgotten by distclean;
12073 @item
12074 distributed files that are erroneously rebuilt.
12075 @end itemize
12076
12077 The former left-over files are not distributed, so the fix is to mark
12078 them for cleaning (@pxref{Clean}), this is obvious and doesn't deserve
12079 more explanations.
12080
12081 The latter bug is not always easy to understand and fix, so let's
12082 proceed with an example.  Suppose our package contains a program for
12083 which we want to build a man page using @command{help2man}.  GNU
12084 @command{help2man} produces simple manual pages from the @option{--help}
12085 and @option{--version} output of other commands (@pxref{Top, , Overview,
12086 help2man, The Help2man Manual}).  Because we don't want to force our
12087 users to install @command{help2man}, we decide to distribute the
12088 generated man page using the following setup.
12089
12090 @example
12091 # This Makefile.am is bogus.
12092 bin_PROGRAMS = foo
12093 foo_SOURCES = foo.c
12094 dist_man_MANS = foo.1
12095
12096 foo.1: foo$(EXEEXT)
12097         help2man --output=foo.1 ./foo$(EXEEXT)
12098 @end example
12099
12100 This will effectively distribute the man page.  However,
12101 @samp{make distcheck} will fail with:
12102
12103 @example
12104 ERROR: files left in build directory after distclean:
12105 ./foo.1
12106 @end example
12107
12108 Why was @file{foo.1} rebuilt?  Because although distributed,
12109 @file{foo.1} depends on a non-distributed built file:
12110 @file{foo$(EXEEXT)}.  @file{foo$(EXEEXT)} is built by the user, so it
12111 will always appear to be newer than the distributed @file{foo.1}.
12112
12113 @samp{make distcheck} caught an inconsistency in our package.  Our
12114 intent was to distribute @file{foo.1} so users do not need to install
12115 @command{help2man}, however since this rule causes this file to be
12116 always rebuilt, users @emph{do} need @command{help2man}.  Either we
12117 should ensure that @file{foo.1} is not rebuilt by users, or there is
12118 no point in distributing @file{foo.1}.
12119
12120 More generally, the rule is that distributed files should never depend
12121 on non-distributed built files.  If you distribute something
12122 generated, distribute its sources.
12123
12124 One way to fix the above example, while still distributing
12125 @file{foo.1} is to not depend on @file{foo$(EXEEXT)}.  For instance,
12126 assuming @command{foo --version} and @command{foo --help} do not
12127 change unless @file{foo.c} or @file{configure.ac} change, we could
12128 write the following @file{Makefile.am}:
12129
12130 @example
12131 bin_PROGRAMS = foo
12132 foo_SOURCES = foo.c
12133 dist_man_MANS = foo.1
12134
12135 foo.1: foo.c $(top_srcdir)/configure.ac
12136         $(MAKE) $(AM_MAKEFLAGS) foo$(EXEEXT)
12137         help2man --output=foo.1 ./foo$(EXEEXT)
12138 @end example
12139
12140 This way, @file{foo.1} will not get rebuilt every time
12141 @file{foo$(EXEEXT)} changes.  The @command{make} call makes sure
12142 @file{foo$(EXEEXT)} is up-to-date before @command{help2man}.  Another
12143 way to ensure this would be to use separate directories for binaries
12144 and man pages, and set @code{SUBDIRS} so that binaries are built
12145 before man pages.
12146
12147 We could also decide not to distribute @file{foo.1}.  In
12148 this case it's fine to have @file{foo.1} dependent upon
12149 @file{foo$(EXEEXT)}, since both will have to be rebuilt.
12150 However it would be impossible to build the package in a
12151 cross-compilation, because building @file{foo.1} involves
12152 an @emph{execution} of @file{foo$(EXEEXT)}.
12153
12154 Another context where such errors are common is when distributed files
12155 are built by tools that are built by the package.  The pattern is
12156 similar:
12157
12158 @example
12159 distributed-file: built-tools distributed-sources
12160         build-command
12161 @end example
12162
12163 @noindent
12164 should be changed to
12165
12166 @example
12167 distributed-file: distributed-sources
12168         $(MAKE) $(AM_MAKEFLAGS) built-tools
12169         build-command
12170 @end example
12171
12172 @noindent
12173 or you could choose not to distribute @file{distributed-file}, if
12174 cross-compilation does not matter.
12175
12176 The points made through these examples are worth a summary:
12177
12178 @cartouche
12179 @itemize
12180 @item
12181 Distributed files should never depend upon non-distributed built
12182 files.
12183 @item
12184 Distributed files should be distributed with all their dependencies.
12185 @item
12186 If a file is @emph{intended} to be rebuilt by users, then there is no point
12187 in distributing it.
12188 @end itemize
12189 @end cartouche
12190
12191 @vrindex distcleancheck_listfiles
12192 For desperate cases, it's always possible to disable this check by
12193 setting @code{distcleancheck_listfiles} as documented in @ref{Checking
12194 the Distribution}.
12195 Make sure you do understand the reason why @samp{make distcheck}
12196 complains before you do this.  @code{distcleancheck_listfiles} is a
12197 way to @emph{hide} errors, not to fix them.  You can always do better.
12198
12199 @node Flag Variables Ordering
12200 @section Flag Variables Ordering
12201 @cindex Ordering flag variables
12202 @cindex Flag variables, ordering
12203
12204 @display
12205 What is the difference between @code{AM_CFLAGS}, @code{CFLAGS}, and
12206 @code{mumble_CFLAGS}?
12207 @end display
12208
12209 @display
12210 Why does @command{automake} output @code{CPPFLAGS} after
12211 @code{AM_CPPFLAGS} on compile lines?  Shouldn't it be the converse?
12212 @end display
12213
12214 @display
12215 My @file{configure} adds some warning flags into @code{CXXFLAGS}.  In
12216 one @file{Makefile.am} I would like to append a new flag, however if I
12217 put the flag into @code{AM_CXXFLAGS} it is prepended to the other
12218 flags, not appended.
12219 @end display
12220
12221 @subheading Compile Flag Variables
12222 @cindex Flag Variables, Ordering
12223 @cindex Compile Flag Variables
12224 @cindex @code{AM_CCASFLAGS} and @code{CCASFLAGS}
12225 @cindex @code{AM_CFLAGS} and @code{CFLAGS}
12226 @cindex @code{AM_CPPFLAGS} and @code{CPPFLAGS}
12227 @cindex @code{AM_CXXFLAGS} and @code{CXXFLAGS}
12228 @cindex @code{AM_FCFLAGS} and @code{FCFLAGS}
12229 @cindex @code{AM_FFLAGS} and @code{FFLAGS}
12230 @cindex @code{AM_GCJFLAGS} and @code{GCJFLAGS}
12231 @cindex @code{AM_LDFLAGS} and @code{LDFLAGS}
12232 @cindex @code{AM_LFLAGS} and @code{LFLAGS}
12233 @cindex @code{AM_LIBTOOLFLAGS} and @code{LIBTOOLFLAGS}
12234 @cindex @code{AM_OBJCFLAGS} and @code{OBJCFLAGS}
12235 @cindex @code{AM_RFLAGS} and @code{RFLAGS}
12236 @cindex @code{AM_UPCFLAGS} and @code{UPCFLAGS}
12237 @cindex @code{AM_YFLAGS} and @code{YFLAGS}
12238 @cindex @code{CCASFLAGS} and @code{AM_CCASFLAGS}
12239 @cindex @code{CFLAGS} and @code{AM_CFLAGS}
12240 @cindex @code{CPPFLAGS} and @code{AM_CPPFLAGS}
12241 @cindex @code{CXXFLAGS} and @code{AM_CXXFLAGS}
12242 @cindex @code{FCFLAGS} and @code{AM_FCFLAGS}
12243 @cindex @code{FFLAGS} and @code{AM_FFLAGS}
12244 @cindex @code{GCJFLAGS} and @code{AM_GCJFLAGS}
12245 @cindex @code{LDFLAGS} and @code{AM_LDFLAGS}
12246 @cindex @code{LFLAGS} and @code{AM_LFLAGS}
12247 @cindex @code{LIBTOOLFLAGS} and @code{AM_LIBTOOLFLAGS}
12248 @cindex @code{OBJCFLAGS} and @code{AM_OBJCFLAGS}
12249 @cindex @code{RFLAGS} and @code{AM_RFLAGS}
12250 @cindex @code{UPCFLAGS} and @code{AM_UPCFLAGS}
12251 @cindex @code{YFLAGS} and @code{AM_YFLAGS}
12252
12253 This section attempts to answer all the above questions.  We will
12254 mostly discuss @code{CPPFLAGS} in our examples, but actually the
12255 answer holds for all the compile flags used in Automake:
12256 @code{CCASFLAGS}, @code{CFLAGS}, @code{CPPFLAGS}, @code{CXXFLAGS},
12257 @code{FCFLAGS}, @code{FFLAGS}, @code{GCJFLAGS}, @code{LDFLAGS},
12258 @code{LFLAGS}, @code{LIBTOOLFLAGS}, @code{OBJCFLAGS}, @code{RFLAGS},
12259 @code{UPCFLAGS}, and @code{YFLAGS}.
12260
12261 @code{CPPFLAGS}, @code{AM_CPPFLAGS}, and @code{mumble_CPPFLAGS} are
12262 three variables that can be used to pass flags to the C preprocessor
12263 (actually these variables are also used for other languages like C++
12264 or preprocessed Fortran).  @code{CPPFLAGS} is the user variable
12265 (@pxref{User Variables}), @code{AM_CPPFLAGS} is the Automake variable,
12266 and @code{mumble_CPPFLAGS} is the variable specific to the
12267 @code{mumble} target (we call this a per-target variable,
12268 @pxref{Program and Library Variables}).
12269
12270 Automake always uses two of these variables when compiling C sources
12271 files.  When compiling an object file for the @code{mumble} target,
12272 the first variable will be @code{mumble_CPPFLAGS} if it is defined, or
12273 @code{AM_CPPFLAGS} otherwise.  The second variable is always
12274 @code{CPPFLAGS}.
12275
12276 In the following example,
12277
12278 @example
12279 bin_PROGRAMS = foo bar
12280 foo_SOURCES = xyz.c
12281 bar_SOURCES = main.c
12282 foo_CPPFLAGS = -DFOO
12283 AM_CPPFLAGS = -DBAZ
12284 @end example
12285
12286 @noindent
12287 @file{xyz.o} will be compiled with @samp{$(foo_CPPFLAGS) $(CPPFLAGS)},
12288 (because @file{xyz.o} is part of the @code{foo} target), while
12289 @file{main.o} will be compiled with @samp{$(AM_CPPFLAGS) $(CPPFLAGS)}
12290 (because there is no per-target variable for target @code{bar}).
12291
12292 The difference between @code{mumble_CPPFLAGS} and @code{AM_CPPFLAGS}
12293 being clear enough, let's focus on @code{CPPFLAGS}.  @code{CPPFLAGS}
12294 is a user variable, i.e., a variable that users are entitled to modify
12295 in order to compile the package.  This variable, like many others,
12296 is documented at the end of the output of @samp{configure --help}.
12297
12298 For instance, someone who needs to add @file{/home/my/usr/include} to
12299 the C compiler's search path would configure a package with
12300
12301 @example
12302 ./configure CPPFLAGS='-I /home/my/usr/include'
12303 @end example
12304
12305 @noindent
12306 and this flag would be propagated to the compile rules of all
12307 @file{Makefile}s.
12308
12309 It is also not uncommon to override a user variable at
12310 @command{make}-time.  Many installers do this with @code{prefix}, but
12311 this can be useful with compiler flags too.  For instance, if, while
12312 debugging a C++ project, you need to disable optimization in one
12313 specific object file, you can run something like
12314
12315 @example
12316 rm file.o
12317 make CXXFLAGS=-O0 file.o
12318 make
12319 @end example
12320
12321 The reason @samp{$(CPPFLAGS)} appears after @samp{$(AM_CPPFLAGS)} or
12322 @samp{$(mumble_CPPFLAGS)} in the compile command is that users
12323 should always have the last say.  It probably makes more sense if you
12324 think about it while looking at the @samp{CXXFLAGS=-O0} above, which
12325 should supersede any other switch from @code{AM_CXXFLAGS} or
12326 @code{mumble_CXXFLAGS} (and this of course replaces the previous value
12327 of @code{CXXFLAGS}).
12328
12329 You should never redefine a user variable such as @code{CPPFLAGS} in
12330 @file{Makefile.am}.  Use @samp{automake -Woverride} to diagnose such
12331 mistakes.  Even something like
12332
12333 @example
12334 CPPFLAGS = -DDATADIR=\"$(datadir)\" @@CPPFLAGS@@
12335 @end example
12336
12337 @noindent
12338 is erroneous.  Although this preserves @file{configure}'s value of
12339 @code{CPPFLAGS}, the definition of @code{DATADIR} will disappear if a
12340 user attempts to override @code{CPPFLAGS} from the @command{make}
12341 command line.
12342
12343 @example
12344 AM_CPPFLAGS = -DDATADIR=\"$(datadir)\"
12345 @end example
12346
12347 @noindent
12348 is all that is needed here if no per-target flags are used.
12349
12350 You should not add options to these user variables within
12351 @file{configure} either, for the same reason.  Occasionally you need
12352 to modify these variables to perform a test, but you should reset
12353 their values afterwards.  In contrast, it is OK to modify the
12354 @samp{AM_} variables within @file{configure} if you @code{AC_SUBST}
12355 them, but it is rather rare that you need to do this, unless you
12356 really want to change the default definitions of the @samp{AM_}
12357 variables in all @file{Makefile}s.
12358
12359 What we recommend is that you define extra flags in separate
12360 variables.  For instance, you may write an Autoconf macro that computes
12361 a set of warning options for the C compiler, and @code{AC_SUBST} them
12362 in @code{WARNINGCFLAGS}; you may also have an Autoconf macro that
12363 determines which compiler and which linker flags should be used to
12364 link with library @file{libfoo}, and @code{AC_SUBST} these in
12365 @code{LIBFOOCFLAGS} and @code{LIBFOOLDFLAGS}.  Then, a
12366 @file{Makefile.am} could use these variables as follows:
12367
12368 @example
12369 AM_CFLAGS = $(WARNINGCFLAGS)
12370 bin_PROGRAMS = prog1 prog2
12371 prog1_SOURCES = @dots{}
12372 prog2_SOURCES = @dots{}
12373 prog2_CFLAGS = $(LIBFOOCFLAGS) $(AM_CFLAGS)
12374 prog2_LDFLAGS = $(LIBFOOLDFLAGS)
12375 @end example
12376
12377 In this example both programs will be compiled with the flags
12378 substituted into @samp{$(WARNINGCFLAGS)}, and @code{prog2} will
12379 additionally be compiled with the flags required to link with
12380 @file{libfoo}.
12381
12382 Note that listing @code{AM_CFLAGS} in a per-target @code{CFLAGS}
12383 variable is a common idiom to ensure that @code{AM_CFLAGS} applies to
12384 every target in a @file{Makefile.in}.
12385
12386 Using variables like this gives you full control over the ordering of
12387 the flags.  For instance, if there is a flag in $(WARNINGCFLAGS) that
12388 you want to negate for a particular target, you can use something like
12389 @samp{prog1_CFLAGS = $(AM_CFLAGS) -no-flag}.  If all these flags had
12390 been forcefully appended to @code{CFLAGS}, there would be no way to
12391 disable one flag.  Yet another reason to leave user variables to
12392 users.
12393
12394 Finally, we have avoided naming the variable of the example
12395 @code{LIBFOO_LDFLAGS} (with an underscore) because that would cause
12396 Automake to think that this is actually a per-target variable (like
12397 @code{mumble_LDFLAGS}) for some non-declared @code{LIBFOO} target.
12398
12399 @subheading Other Variables
12400
12401 There are other variables in Automake that follow similar principles
12402 to allow user options.  For instance, Texinfo rules (@pxref{Texinfo})
12403 use @code{MAKEINFOFLAGS} and @code{AM_MAKEINFOFLAGS}.  Similarly,
12404 DejaGnu tests (@pxref{DejaGnu Tests}) use @code{RUNTESTDEFAULTFLAGS} and
12405 @code{AM_RUNTESTDEFAULTFLAGS}.  The tags and ctags rules
12406 (@pxref{Tags}) use @code{ETAGSFLAGS}, @code{AM_ETAGSFLAGS},
12407 @code{CTAGSFLAGS}, and @code{AM_CTAGSFLAGS}.  Java rules
12408 (@pxref{Java}) use @code{JAVACFLAGS} and @code{AM_JAVACFLAGS}.  None
12409 of these rules support per-target flags (yet).
12410
12411 To some extent, even @code{AM_MAKEFLAGS} (@pxref{Subdirectories})
12412 obeys this naming scheme.  The slight difference is that
12413 @code{MAKEFLAGS} is passed to sub-@command{make}s implicitly by
12414 @command{make} itself.
12415
12416 However you should not think that all variables ending with
12417 @code{FLAGS} follow this convention.  For instance,
12418 @code{DISTCHECK_CONFIGURE_FLAGS} (@pxref{Checking the Distribution}) and
12419 @code{ACLOCAL_AMFLAGS} (see @ref{Rebuilding} and @ref{Local Macros}),
12420 are two variables that are only useful to the maintainer and have no
12421 user counterpart.
12422
12423 @code{ARFLAGS} (@pxref{A Library}) is usually defined by Automake and
12424 has neither @code{AM_} nor per-target cousin.
12425
12426 Finally you should not think that the existence of a per-target
12427 variable implies the existance of an @code{AM_} variable or of a user
12428 variable.  For instance, the @code{mumble_LDADD} per-target variable
12429 overrides the makefile-wide @code{LDADD} variable (which is not a user
12430 variable), and @code{mumble_LIBADD} exists only as a per-target
12431 variable.  @xref{Program and Library Variables}.
12432
12433
12434 @node Renamed Objects
12435 @section Why are object files sometimes renamed?
12436
12437 This happens when per-target compilation flags are used.  Object
12438 files need to be renamed just in case they would clash with object
12439 files compiled from the same sources, but with different flags.
12440 Consider the following example.
12441
12442 @example
12443 bin_PROGRAMS = true false
12444 true_SOURCES = generic.c
12445 true_CPPFLAGS = -DEXIT_CODE=0
12446 false_SOURCES = generic.c
12447 false_CPPFLAGS = -DEXIT_CODE=1
12448 @end example
12449
12450 @noindent
12451 Obviously the two programs are built from the same source, but it
12452 would be bad if they shared the same object, because @file{generic.o}
12453 cannot be built with both @samp{-DEXIT_CODE=0} @emph{and}
12454 @samp{-DEXIT_CODE=1}.  Therefore @command{automake} outputs rules to
12455 build two different objects: @file{true-generic.o} and
12456 @file{false-generic.o}.
12457
12458 @command{automake} doesn't actually look whether source files are
12459 shared to decide if it must rename objects.  It will just rename all
12460 objects of a target as soon as it sees per-target compilation flags
12461 used.
12462
12463 It's OK to share object files when per-target compilation flags are not
12464 used.  For instance, @file{true} and @file{false} will both use
12465 @file{version.o} in the following example.
12466
12467 @example
12468 AM_CPPFLAGS = -DVERSION=1.0
12469 bin_PROGRAMS = true false
12470 true_SOURCES = true.c version.c
12471 false_SOURCES = false.c version.c
12472 @end example
12473
12474 Note that the renaming of objects is also affected by the
12475 @code{_SHORTNAME} variable (@pxref{Program and Library Variables}).
12476
12477
12478 @node Per-Object Flags
12479 @section Per-Object Flags Emulation
12480 @cindex Per-object flags, emulated
12481
12482 @display
12483 One of my source files needs to be compiled with different flags.  How
12484 do I do?
12485 @end display
12486
12487 Automake supports per-program and per-library compilation flags (see
12488 @ref{Program and Library Variables} and @ref{Flag Variables
12489 Ordering}).  With this you can define compilation flags that apply to
12490 all files compiled for a target.  For instance, in
12491
12492 @example
12493 bin_PROGRAMS = foo
12494 foo_SOURCES = foo.c foo.h bar.c bar.h main.c
12495 foo_CFLAGS = -some -flags
12496 @end example
12497
12498 @noindent
12499 @file{foo-foo.o}, @file{foo-bar.o}, and @file{foo-main.o} will all be
12500 compiled with @samp{-some -flags}.  (If you wonder about the names of
12501 these object files, see @ref{Renamed Objects}.)  Note that
12502 @code{foo_CFLAGS} gives the flags to use when compiling all the C
12503 sources of the @emph{program} @code{foo}, it has nothing to do with
12504 @file{foo.c} or @file{foo-foo.o} specifically.
12505
12506 What if @file{foo.c} needs to be compiled into @file{foo.o} using some
12507 specific flags, that none of the other files requires?  Obviously
12508 per-program flags are not directly applicable here.  Something like
12509 per-object flags are expected, i.e., flags that would be used only
12510 when creating @file{foo-foo.o}.  Automake does not support that,
12511 however this is easy to simulate using a library that contains only
12512 that object, and compiling this library with per-library flags.
12513
12514 @example
12515 bin_PROGRAMS = foo
12516 foo_SOURCES = bar.c bar.h main.c
12517 foo_CFLAGS = -some -flags
12518 foo_LDADD = libfoo.a
12519 noinst_LIBRARIES = libfoo.a
12520 libfoo_a_SOURCES = foo.c foo.h
12521 libfoo_a_CFLAGS = -some -other -flags
12522 @end example
12523
12524 Here @file{foo-bar.o} and @file{foo-main.o} will all be
12525 compiled with @samp{-some -flags}, while @file{libfoo_a-foo.o} will
12526 be compiled using @samp{-some -other -flags}.  Eventually, all
12527 three objects will be linked to form @file{foo}.
12528
12529 This trick can also be achieved using Libtool convenience libraries,
12530 for instance @samp{noinst_LTLIBRARIES = libfoo.la} (@pxref{Libtool
12531 Convenience Libraries}).
12532
12533 Another tempting idea to implement per-object flags is to override the
12534 compile rules @command{automake} would output for these files.
12535 Automake will not define a rule for a target you have defined, so you
12536 could think about defining the @samp{foo-foo.o: foo.c} rule yourself.
12537 We recommend against this, because this is error prone.  For instance,
12538 if you add such a rule to the first example, it will break the day you
12539 decide to remove @code{foo_CFLAGS} (because @file{foo.c} will then be
12540 compiled as @file{foo.o} instead of @file{foo-foo.o}, @pxref{Renamed
12541 Objects}).  Also in order to support dependency tracking, the two
12542 @file{.o}/@file{.obj} extensions, and all the other flags variables
12543 involved in a compilation, you will end up modifying a copy of the
12544 rule previously output by @command{automake} for this file.  If a new
12545 release of Automake generates a different rule, your copy will need to
12546 be updated by hand.
12547
12548 @node Multiple Outputs
12549 @section Handling Tools that Produce Many Outputs
12550 @cindex multiple outputs, rules with
12551 @cindex many outputs, rules with
12552 @cindex rules with multiple outputs
12553
12554 This section describes a @command{make} idiom that can be used when a
12555 tool produces multiple output files.  It is not specific to Automake
12556 and can be used in ordinary @file{Makefile}s.
12557
12558 Suppose we have a program called @command{foo} that will read one file
12559 called @file{data.foo} and produce two files named @file{data.c} and
12560 @file{data.h}.  We want to write a @file{Makefile} rule that captures
12561 this one-to-two dependency.
12562
12563 The naive rule is incorrect:
12564
12565 @example
12566 # This is incorrect.
12567 data.c data.h: data.foo
12568         foo data.foo
12569 @end example
12570
12571 @noindent
12572 What the above rule really says is that @file{data.c} and
12573 @file{data.h} each depend on @file{data.foo}, and can each be built by
12574 running @samp{foo data.foo}.  In other words it is equivalent to:
12575
12576 @example
12577 # We do not want this.
12578 data.c: data.foo
12579         foo data.foo
12580 data.h: data.foo
12581         foo data.foo
12582 @end example
12583
12584 @noindent
12585 which means that @command{foo} can be run twice.  Usually it will not
12586 be run twice, because @command{make} implementations are smart enough
12587 to check for the existence of the second file after the first one has
12588 been built; they will therefore detect that it already exists.
12589 However there are a few situations where it can run twice anyway:
12590
12591 @itemize
12592 @item
12593 The most worrying case is when running a parallel @command{make}.  If
12594 @file{data.c} and @file{data.h} are built in parallel, two @samp{foo
12595 data.foo} commands will run concurrently.  This is harmful.
12596 @item
12597 Another case is when the dependency (here @file{data.foo}) is
12598 (or depends upon) a phony target.
12599 @end itemize
12600
12601 A solution that works with parallel @command{make} but not with
12602 phony dependencies is the following:
12603
12604 @example
12605 data.c data.h: data.foo
12606         foo data.foo
12607 data.h: data.c
12608 @end example
12609
12610 @noindent
12611 The above rules are equivalent to
12612
12613 @example
12614 data.c: data.foo
12615         foo data.foo
12616 data.h: data.foo data.c
12617         foo data.foo
12618 @end example
12619
12620 @noindent
12621 therefore a parallel @command{make} will have to serialize the builds
12622 of @file{data.c} and @file{data.h}, and will detect that the second is
12623 no longer needed once the first is over.
12624
12625 Using this pattern is probably enough for most cases.  However it does
12626 not scale easily to more output files (in this scheme all output files
12627 must be totally ordered by the dependency relation), so we will
12628 explore a more complicated solution.
12629
12630 Another idea is to write the following:
12631
12632 @example
12633 # There is still a problem with this one.
12634 data.c: data.foo
12635         foo data.foo
12636 data.h: data.c
12637 @end example
12638
12639 @noindent
12640 The idea is that @samp{foo data.foo} is run only when @file{data.c}
12641 needs to be updated, but we further state that @file{data.h} depends
12642 upon @file{data.c}.  That way, if @file{data.h} is required and
12643 @file{data.foo} is out of date, the dependency on @file{data.c} will
12644 trigger the build.
12645
12646 This is almost perfect, but suppose we have built @file{data.h} and
12647 @file{data.c}, and then we erase @file{data.h}.  Then, running
12648 @samp{make data.h} will not rebuild @file{data.h}.  The above rules
12649 just state that @file{data.c} must be up-to-date with respect to
12650 @file{data.foo}, and this is already the case.
12651
12652 What we need is a rule that forces a rebuild when @file{data.h} is
12653 missing.  Here it is:
12654
12655 @example
12656 data.c: data.foo
12657         foo data.foo
12658 data.h: data.c
12659 ## Recover from the removal of $@@
12660         @@if test -f $@@; then :; else \
12661           rm -f data.c; \
12662           $(MAKE) $(AM_MAKEFLAGS) data.c; \
12663         fi
12664 @end example
12665
12666 The above scheme can be extended to handle more outputs and more
12667 inputs.  One of the outputs is selected to serve as a witness to the
12668 successful completion of the command, it depends upon all inputs, and
12669 all other outputs depend upon it.  For instance, if @command{foo}
12670 should additionally read @file{data.bar} and also produce
12671 @file{data.w} and @file{data.x}, we would write:
12672
12673 @example
12674 data.c: data.foo data.bar
12675         foo data.foo data.bar
12676 data.h data.w data.x: data.c
12677 ## Recover from the removal of $@@
12678         @@if test -f $@@; then :; else \
12679           rm -f data.c; \
12680           $(MAKE) $(AM_MAKEFLAGS) data.c; \
12681         fi
12682 @end example
12683
12684 However there are now three minor problems in this setup.  One is related
12685 to the timestamp ordering of @file{data.h}, @file{data.w},
12686 @file{data.x}, and @file{data.c}.  Another one is a race condition
12687 if a parallel @command{make} attempts to run multiple instances of the
12688 recover block at once.  Finally, the recursive rule breaks @samp{make -n}
12689 when run with GNU @command{make} (as well as some other @command{make}
12690 implementations), as it may remove @file{data.h} even when it should not
12691 (@pxref{MAKE Variable, , How the @code{MAKE} Variable Works, make,
12692 The GNU Make Manual}).
12693
12694 Let us deal with the first problem.  @command{foo} outputs four files,
12695 but we do not know in which order these files are created.  Suppose
12696 that @file{data.h} is created before @file{data.c}.  Then we have a
12697 weird situation.  The next time @command{make} is run, @file{data.h}
12698 will appear older than @file{data.c}, the second rule will be
12699 triggered, a shell will be started to execute the @samp{if@dots{}fi}
12700 command, but actually it will just execute the @code{then} branch,
12701 that is: nothing.  In other words, because the witness we selected is
12702 not the first file created by @command{foo}, @command{make} will start
12703 a shell to do nothing each time it is run.
12704
12705 A simple riposte is to fix the timestamps when this happens.
12706
12707 @example
12708 data.c: data.foo data.bar
12709         foo data.foo data.bar
12710 data.h data.w data.x: data.c
12711         @@if test -f $@@; then \
12712           touch $@@; \
12713         else \
12714 ## Recover from the removal of $@@
12715           rm -f data.c; \
12716           $(MAKE) $(AM_MAKEFLAGS) data.c; \
12717         fi
12718 @end example
12719
12720 Another solution is to use a different and dedicated file as witness,
12721 rather than using any of @command{foo}'s outputs.
12722
12723 @example
12724 data.stamp: data.foo data.bar
12725         @@rm -f data.tmp
12726         @@touch data.tmp
12727         foo data.foo data.bar
12728         @@mv -f data.tmp $@@
12729 data.c data.h data.w data.x: data.stamp
12730 ## Recover from the removal of $@@
12731         @@if test -f $@@; then :; else \
12732           rm -f data.stamp; \
12733           $(MAKE) $(AM_MAKEFLAGS) data.stamp; \
12734         fi
12735 @end example
12736
12737 @file{data.tmp} is created before @command{foo} is run, so it has a
12738 timestamp older than output files output by @command{foo}.  It is then
12739 renamed to @file{data.stamp} after @command{foo} has run, because we
12740 do not want to update @file{data.stamp} if @command{foo} fails.
12741
12742 This solution still suffers from the second problem: the race
12743 condition in the recover rule.  If, after a successful build, a user
12744 erases @file{data.c} and @file{data.h}, and runs @samp{make -j}, then
12745 @command{make} may start both recover rules in parallel.  If the two
12746 instances of the rule execute @samp{$(MAKE) $(AM_MAKEFLAGS)
12747 data.stamp} concurrently the build is likely to fail (for instance, the
12748 two rules will create @file{data.tmp}, but only one can rename it).
12749
12750 Admittedly, such a weird situation does not arise during ordinary
12751 builds.  It occurs only when the build tree is mutilated.  Here
12752 @file{data.c} and @file{data.h} have been explicitly removed without
12753 also removing @file{data.stamp} and the other output files.
12754 @code{make clean; make} will always recover from these situations even
12755 with parallel makes, so you may decide that the recover rule is solely
12756 to help non-parallel make users and leave things as-is.  Fixing this
12757 requires some locking mechanism to ensure only one instance of the
12758 recover rule rebuilds @file{data.stamp}.  One could imagine something
12759 along the following lines.
12760
12761 @example
12762 data.c data.h data.w data.x: data.stamp
12763 ## Recover from the removal of $@@
12764         @@if test -f $@@; then :; else \
12765           trap 'rm -rf data.lock data.stamp' 1 2 13 15; \
12766 ## mkdir is a portable test-and-set
12767           if mkdir data.lock 2>/dev/null; then \
12768 ## This code is being executed by the first process.
12769             rm -f data.stamp; \
12770             $(MAKE) $(AM_MAKEFLAGS) data.stamp; \
12771             result=$$?; rm -rf data.lock; exit $$result; \
12772           else \
12773 ## This code is being executed by the follower processes.
12774 ## Wait until the first process is done.
12775             while test -d data.lock; do sleep 1; done; \
12776 ## Succeed if and only if the first process succeeded.
12777             test -f data.stamp; \
12778           fi; \
12779         fi
12780 @end example
12781
12782 Using a dedicated witness, like @file{data.stamp}, is very handy when
12783 the list of output files is not known beforehand.  As an illustration,
12784 consider the following rules to compile many @file{*.el} files into
12785 @file{*.elc} files in a single command.  It does not matter how
12786 @code{ELFILES} is defined (as long as it is not empty: empty targets
12787 are not accepted by POSIX).
12788
12789 @example
12790 ELFILES = one.el two.el three.el @dots{}
12791 ELCFILES = $(ELFILES:=c)
12792
12793 elc-stamp: $(ELFILES)
12794         @@rm -f elc-temp
12795         @@touch elc-temp
12796         $(elisp_comp) $(ELFILES)
12797         @@mv -f elc-temp $@@
12798
12799 $(ELCFILES): elc-stamp
12800         @@if test -f $@@; then :; else \
12801 ## Recover from the removal of $@@
12802           trap 'rm -rf elc-lock elc-stamp' 1 2 13 15; \
12803           if mkdir elc-lock 2>/dev/null; then \
12804 ## This code is being executed by the first process.
12805             rm -f elc-stamp; \
12806             $(MAKE) $(AM_MAKEFLAGS) elc-stamp; \
12807             rmdir elc-lock; \
12808           else \
12809 ## This code is being executed by the follower processes.
12810 ## Wait until the first process is done.
12811             while test -d elc-lock; do sleep 1; done; \
12812 ## Succeed if and only if the first process succeeded.
12813             test -f elc-stamp; exit $$?; \
12814 @c $$
12815           fi; \
12816         fi
12817 @end example
12818
12819 These solutions all still suffer from the third problem, namely that
12820 they break the promise that @samp{make -n} should not cause any actual
12821 changes to the tree.  For those solutions that do not create lock files,
12822 it is possible to split the recover rules into two separate recipe
12823 commands, one of which does all work but the recursion, and the
12824 other invokes the recursive @samp{$(MAKE)}.  The solutions involving
12825 locking could act upon the contents of the @samp{MAKEFLAGS} variable,
12826 but parsing that portably is not easy (@pxref{The Make Macro MAKEFLAGS,,,
12827 autoconf, The Autoconf Manual}).  Here is an example:
12828
12829 @example
12830 ELFILES = one.el two.el three.el @dots{}
12831 ELCFILES = $(ELFILES:=c)
12832
12833 elc-stamp: $(ELFILES)
12834         @@rm -f elc-temp
12835         @@touch elc-temp
12836         $(elisp_comp) $(ELFILES)
12837         @@mv -f elc-temp $@@
12838
12839 $(ELCFILES): elc-stamp
12840 ## Recover from the removal of $@@
12841         @@dry=; for f in x $$MAKEFLAGS; do \
12842           case $$f in \
12843             *=*|--*);; \
12844             *n*) dry=:;; \
12845           esac; \
12846         done; \
12847         if test -f $@@; then :; else \
12848           $$dry trap 'rm -rf elc-lock elc-stamp' 1 2 13 15; \
12849           if $$dry mkdir elc-lock 2>/dev/null; then \
12850 ## This code is being executed by the first process.
12851             $$dry rm -f elc-stamp; \
12852             $(MAKE) $(AM_MAKEFLAGS) elc-stamp; \
12853             $$dry rmdir elc-lock; \
12854           else \
12855 ## This code is being executed by the follower processes.
12856 ## Wait until the first process is done.
12857             while test -d elc-lock && test -z "$$dry"; do \
12858 @c $$
12859               sleep 1; \
12860             done; \
12861 ## Succeed if and only if the first process succeeded.
12862             $$dry test -f elc-stamp; exit $$?; \
12863           fi; \
12864         fi
12865 @end example
12866
12867 For completeness it should be noted that GNU @command{make} is able to
12868 express rules with multiple output files using pattern rules
12869 (@pxref{Pattern Examples, , Pattern Rule Examples, make, The GNU Make
12870 Manual}).  We do not discuss pattern rules here because they are not
12871 portable, but they can be convenient in packages that assume GNU
12872 @command{make}.
12873
12874
12875 @node Hard-Coded Install Paths
12876 @section Installing to Hard-Coded Locations
12877
12878 @display
12879 My package needs to install some configuration file.  I tried to use
12880 the following rule, but @samp{make distcheck} fails.  Why?
12881
12882 @example
12883 # Do not do this.
12884 install-data-local:
12885         $(INSTALL_DATA) $(srcdir)/afile $(DESTDIR)/etc/afile
12886 @end example
12887 @end display
12888
12889 @display
12890 My package needs to populate the installation directory of another
12891 package at install-time.  I can easily compute that installation
12892 directory in @file{configure}, but if I install files therein,
12893 @samp{make distcheck} fails.  How else should I do?
12894 @end display
12895
12896 These two setups share their symptoms: @samp{make distcheck} fails
12897 because they are installing files to hard-coded paths.  In the later
12898 case the path is not really hard-coded in the package, but we can
12899 consider it to be hard-coded in the system (or in whichever tool that
12900 supplies the path).  As long as the path does not use any of the
12901 standard directory variables (@samp{$(prefix)}, @samp{$(bindir)},
12902 @samp{$(datadir)}, etc.), the effect will be the same:
12903 user-installations are impossible.
12904
12905 As a (non-root) user who wants to install a package, you usually have no
12906 right to install anything in @file{/usr} or @file{/usr/local}.  So you
12907 do something like @samp{./configure --prefix ~/usr} to install a
12908 package in your own @file{~/usr} tree.
12909
12910 If a package attempts to install something to some hard-coded path
12911 (e.g., @file{/etc/afile}), regardless of this @option{--prefix} setting,
12912 then the installation will fail.  @samp{make distcheck} performs such
12913 a @option{--prefix} installation, hence it will fail too.
12914
12915 Now, there are some easy solutions.
12916
12917 The above @code{install-data-local} example for installing
12918 @file{/etc/afile} would be better replaced by
12919
12920 @example
12921 sysconf_DATA = afile
12922 @end example
12923
12924 @noindent
12925 by default @code{sysconfdir} will be @samp{$(prefix)/etc}, because
12926 this is what the GNU Standards require.  When such a package is
12927 installed on an FHS compliant system, the installer will have to set
12928 @samp{--sysconfdir=/etc}.  As the maintainer of the package you
12929 should not be concerned by such site policies: use the appropriate
12930 standard directory variable to install your files so that the installer
12931 can easily redefine these variables to match their site conventions.
12932
12933 Installing files that should be used by another package is slightly
12934 more involved.  Let's take an example and assume you want to install
12935 a shared library that is a Python extension module.  If you ask Python
12936 where to install the library, it will answer something like this:
12937
12938 @example
12939 % @kbd{python -c 'from distutils import sysconfig;
12940              print sysconfig.get_python_lib(1,0)'}
12941 /usr/lib/python2.5/site-packages
12942 @end example
12943
12944 If you indeed use this absolute path to install your shared library,
12945 non-root users will not be able to install the package, hence
12946 distcheck fails.
12947
12948 Let's do better.  The @samp{sysconfig.get_python_lib()} function
12949 actually accepts a third argument that will replace Python's
12950 installation prefix.
12951
12952 @example
12953 % @kbd{python -c 'from distutils import sysconfig;
12954              print sysconfig.get_python_lib(1,0,"$@{exec_prefix@}")'}
12955 $@{exec_prefix@}/lib/python2.5/site-packages
12956 @end example
12957
12958 You can also use this new path.  If you do
12959 @itemize @bullet
12960 @item
12961 root users can install your package with the same @option{--prefix}
12962 as Python (you get the behavior of the previous attempt)
12963
12964 @item
12965 non-root users can install your package too, they will have the
12966 extension module in a place that is not searched by Python but they
12967 can work around this using environment variables (and if you installed
12968 scripts that use this shared library, it's easy to tell Python were to
12969 look in the beginning of your script, so the script works in both
12970 cases).
12971 @end itemize
12972
12973 The @code{AM_PATH_PYTHON} macro uses similar commands to define
12974 @samp{$(pythondir)} and @samp{$(pyexecdir)} (@pxref{Python}).
12975
12976 Of course not all tools are as advanced as Python regarding that
12977 substitution of @var{prefix}.  So another strategy is to figure the
12978 part of the installation directory that must be preserved.  For
12979 instance, here is how @code{AM_PATH_LISPDIR} (@pxref{Emacs Lisp})
12980 computes @samp{$(lispdir)}:
12981
12982 @example
12983 $EMACS -batch -q -eval '(while load-path
12984   (princ (concat (car load-path) "\n"))
12985   (setq load-path (cdr load-path)))' >conftest.out
12986 lispdir=`sed -n
12987   -e 's,/$,,'
12988   -e '/.*\/lib\/x*emacs\/site-lisp$/@{
12989         s,.*/lib/\(x*emacs/site-lisp\)$,$@{libdir@}/\1,;p;q;
12990       @}'
12991   -e '/.*\/share\/x*emacs\/site-lisp$/@{
12992         s,.*/share/\(x*emacs/site-lisp\),$@{datarootdir@}/\1,;p;q;
12993       @}'
12994   conftest.out`
12995 @end example
12996
12997 I.e., it just picks the first directory that looks like
12998 @file{*/lib/*emacs/site-lisp} or @file{*/share/*emacs/site-lisp} in
12999 the search path of emacs, and then substitutes @samp{$@{libdir@}} or
13000 @samp{$@{datadir@}} appropriately.
13001
13002 The emacs case looks complicated because it processes a list and
13003 expects two possible layouts, otherwise it's easy, and the benefits for
13004 non-root users are really worth the extra @command{sed} invocation.
13005
13006
13007 @node Debugging Make Rules
13008 @section Debugging Make Rules
13009 @cindex debugging rules
13010 @cindex rules, debugging
13011
13012 The rules and dependency trees generated by @command{automake} can get
13013 rather complex, and leave the developer head-scratching when things
13014 don't work as expected.  Besides the debug options provided by the
13015 @command{make} command (@pxref{Options Summary,,, make, The GNU Make
13016 Manual}), here's a couple of further hints for debugging makefiles
13017 generated by @command{automake} effectively:
13018
13019 @itemize
13020 @item
13021 If less verbose output has been enabled in the package with the
13022 @samp{silent-rules} option (@pxref{Options}), you can use
13023 @code{make V=1} to see the commands being executed.
13024 @item
13025 @code{make -n} can help show what would be done without actually doing
13026 it.  Note however, that this will @emph{still execute} commands prefixed
13027 with @samp{+}, and, when using GNU @command{make}, commands that contain
13028 the strings @samp{$(MAKE)} or @samp{$@{MAKE@}} (@pxref{Instead of
13029 Execution,,, make, The GNU Make Manual}).
13030 Typically, this is helpful to show what recursive rules would do, but it
13031 means that, in your own rules, you should not mix such recursion with
13032 actions that change any files.@footnote{Automake's @samp{dist} and
13033 @samp{distcheck} rules had a bug in this regard in that they created
13034 directories even with @option{-n}, but this has been fixed in Automake
13035 1.11.}  Furthermore, note that GNU @command{make} will update
13036 prerequisites for the @file{Makefile} file itself even with @option{-n}
13037 (@pxref{Remaking Makefiles,,, make, The GNU Make Manual}).
13038 @item
13039 @code{make SHELL="/bin/bash -vx"} can help debug complex rules.
13040 @xref{The Make Macro SHELL,,, autoconf, The Autoconf Manual}, for some
13041 portability quirks associated with this construct.
13042 @item
13043 @code{echo 'print: ; @@echo "$(VAR)"' | make -f Makefile -f - print}
13044 can be handy to examine the expanded value of variables.  You may need
13045 to use a target other than @samp{print} if that is already used or a
13046 file with that name exists.
13047 @item
13048 @url{http://bashdb.sourceforge.net/@/remake/} provides a modified
13049 GNU @command{make} command called @command{remake} that copes with
13050 complex GNU @command{make}-specific Makefiles and allows to trace
13051 execution, examine variables, and call rules interactively, much like
13052 a debugger.
13053 @end itemize
13054
13055
13056 @node Reporting Bugs
13057 @section Reporting Bugs
13058
13059 Most nontrivial software has bugs.  Automake is no exception.  Although
13060 we cannot promise we can or will fix a bug, and we might not even agree
13061 that it is a bug, we want to hear about problems you encounter. Often we
13062 agree they are bugs and want to fix them.
13063
13064 To make it possible for us to fix a bug, please report it. In order to
13065 do so effectively, it helps to know when and how to do it.
13066
13067 Before reporting a bug, it is a good idea to see if it is already known.
13068 You can look at the @uref{http://debbugs.gnu.org/, GNU Bug Tracker}
13069 and the @uref{http://lists.gnu.org/@/archive/@/html/@/bug-automake/,
13070 bug-automake mailing list archives} for previous bug reports.  We
13071 previously used a
13072 @uref{http://sourceware.org/@/cgi-bin/@/gnatsweb.pl?database=automake,
13073 Gnats database} for bug tracking, so some bugs might have been reported
13074 there already.  Please do not use it for new bug reports, however.
13075
13076 If the bug is not already known, it should be reported.  It is very
13077 important to report bugs in a way that is useful and efficient.  For
13078 this, please familiarize yourself with
13079 @uref{http://www.chiark.greenend.org.uk/@/~sgtatham/@/bugs.html, How to
13080 Report Bugs Effectively} and
13081 @uref{http://catb.org/@/~esr/@/faqs/@/smart-questions.html, How to Ask
13082 Questions the Smart Way}.  This helps you and developers to save time
13083 which can then be spent on fixing more bugs and implementing more
13084 features.
13085
13086 For a bug report, a feature request or other suggestions, please send
13087 email to @email{@value{PACKAGE_BUGREPORT}}.  This will then open a new
13088 bug in the @uref{http://debbugs.gnu.org/@/automake, bug tracker}.  Be
13089 sure to include the versions of Autoconf and Automake that you use.
13090 Ideally, post a minimal @file{Makefile.am} and @file{configure.ac} that
13091 reproduces the problem you encounter.  If you have encountered test
13092 suite failures, please attach the @file{tests/test-suite.log} file.
13093
13094
13095 @node History
13096 @chapter History of Automake
13097
13098 This chapter presents various aspects of the history of Automake.  The
13099 exhausted reader can safely skip it; this will be more of interest to
13100 nostalgic people, or to those curious to learn about the evolution of
13101 Automake.
13102
13103 @menu
13104 * Timeline::                    The Automake story.
13105 * Dependency Tracking Evolution::  Evolution of Automatic Dependency Tracking
13106 * Releases::                    Statistics about Automake Releases
13107 @end menu
13108
13109 @node Timeline
13110 @section Timeline
13111
13112 @table @asis
13113 @item 1994-09-19 First CVS commit.
13114
13115 If we can trust the CVS repository, David J.@tie{}MacKenzie (djm) started
13116 working on Automake (or AutoMake, as it was spelt then) this Monday.
13117
13118 The first version of the @command{automake} script looks as follows.
13119
13120 @example
13121 #!/bin/sh
13122
13123 status=0
13124
13125 for makefile
13126 do
13127   if test ! -f $@{makefile@}.am; then
13128     echo "automake: $@{makefile@}.am: No such honkin' file"
13129     status=1
13130     continue
13131   fi
13132
13133   exec 4> $@{makefile@}.in
13134
13135 done
13136 @end example
13137
13138 From this you can already see that Automake will be about reading
13139 @file{*.am} file and producing @file{*.in} files.  You cannot see
13140 anything else, but if you also know that David is the one who created
13141 Autoconf two years before you can guess the rest.
13142
13143 Several commits follow, and by the end of the day Automake is
13144 reported to work for GNU fileutils and GNU m4.
13145
13146 The modus operandi is the one that is still used today: variable
13147 assignments in @file{Makefile.am} files trigger injections of
13148 precanned @file{Makefile} fragments into the generated
13149 @file{Makefile.in}.  The use of @file{Makefile} fragments was inspired
13150 by the 4.4BSD @command{make} and include files, however Automake aims
13151 to be portable and to conform to the GNU standards for @file{Makefile}
13152 variables and targets.
13153
13154 At this point, the most recent release of Autoconf is version 1.11,
13155 and David is preparing to release Autoconf 2.0 in late October.  As a
13156 matter of fact, he will barely touch Automake after September.
13157
13158 @item 1994-11-05 David MacKenzie's last commit.
13159
13160 At this point Automake is a 200 line portable shell script, plus 332
13161 lines of @file{Makefile} fragments.  In the @file{README}, David
13162 states his ambivalence between ``portable shell'' and ``more
13163 appropriate language'':
13164
13165 @quotation
13166 I wrote it keeping in mind the possibility of it becoming an Autoconf
13167 macro, so it would run at configure-time.  That would slow
13168 configuration down a bit, but allow users to modify the Makefile.am
13169 without needing to fetch the AutoMake package.  And, the Makefile.in
13170 files wouldn't need to be distributed.  But all of AutoMake would.  So
13171 I might reimplement AutoMake in Perl, m4, or some other more
13172 appropriate language.
13173 @end quotation
13174
13175 Automake is described as ``an experimental Makefile generator''.
13176 There is no documentation.  Adventurous users are referred to the
13177 examples and patches needed to use Automake with GNU m4 1.3, fileutils
13178 3.9, time 1.6, and development versions of find and indent.
13179
13180 These examples seem to have been lost.  However at the time of writing
13181 (10 years later in September, 2004) the FSF still distributes a
13182 package that uses this version of Automake: check out GNU termutils
13183 2.0.
13184
13185 @item 1995-11-12 Tom Tromey's first commit.
13186
13187 After one year of inactivity, Tom Tromey takes over the package.
13188 Tom was working on GNU cpio back then, and doing this just for fun,
13189 having trouble finding a project to contribute to.  So while hacking
13190 he wanted to bring the @file{Makefile.in} up to GNU standards.  This
13191 was hard, and one day he saw Automake on @url{ftp://alpha.gnu.org/},
13192 grabbed it and tried it out.
13193
13194 Tom didn't talk to djm about it until later, just to make sure he
13195 didn't mind if he made a release.  He did a bunch of early releases to
13196 the Gnits folks.
13197
13198 Gnits was (and still is) totally informal, just a few GNU friends who
13199 Fran@,cois Pinard knew, who were all interested in making a common
13200 infrastructure for GNU projects, and shared a similar outlook on how
13201 to do it.  So they were able to make some progress.  It came along
13202 with Autoconf and extensions thereof, and then Automake from David and
13203 Tom (who were both gnitsians).  One of their ideas was to write a
13204 document paralleling the GNU standards, that was more strict in some
13205 ways and more detailed.  They never finished the GNITS standards, but
13206 the ideas mostly made their way into Automake.
13207
13208 @item 1995-11-23 Automake 0.20
13209
13210 Besides introducing automatic dependency tracking (@pxref{Dependency
13211 Tracking Evolution}), this version also supplies a 9-page manual.
13212
13213 At this time @command{aclocal} and @code{AM_INIT_AUTOMAKE} did not
13214 exist, so many things had to be done by hand.  For instance, here is
13215 what a configure.in (this is the former name of the
13216 @file{configure.ac} we use today) must contain in order to use
13217 Automake 0.20:
13218
13219 @example
13220 PACKAGE=cpio
13221 VERSION=2.3.911
13222 AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE")
13223 AC_DEFINE_UNQUOTED(VERSION, "$VERSION")
13224 AC_SUBST(PACKAGE)
13225 AC_SUBST(VERSION)
13226 AC_ARG_PROGRAM
13227 AC_PROG_INSTALL
13228 @end example
13229
13230 (Today all of the above is achieved by @code{AC_INIT} and
13231 @code{AM_INIT_AUTOMAKE}.)
13232
13233 Here is how programs are specified in @file{Makefile.am}:
13234
13235 @example
13236 PROGRAMS = hello
13237 hello_SOURCES = hello.c
13238 @end example
13239
13240 This looks pretty much like what we do today, except the
13241 @code{PROGRAMS} variable has no directory prefix specifying where
13242 @file{hello} should be installed: all programs are installed in
13243 @samp{$(bindir)}.  @code{LIBPROGRAMS} can be used to specify programs
13244 that must be built but not installed (it is called
13245 @code{noinst_PROGRAMS} nowadays).
13246
13247 Programs can be built conditionally using @code{AC_SUBST}itutions:
13248
13249 @example
13250 PROGRAMS = @@progs@@
13251 AM_PROGRAMS = foo bar baz
13252 @end example
13253
13254 (@code{AM_PROGRAMS} has since then been renamed to
13255 @code{EXTRA_PROGRAMS}.)
13256
13257 Similarly scripts, static libraries, and data can be built and installed
13258 using the @code{LIBRARIES}, @code{SCRIPTS}, and @code{DATA} variables.
13259 However @code{LIBRARIES} were treated a bit specially in that Automake
13260 did automatically supply the @file{lib} and @file{.a} prefixes.
13261 Therefore to build @file{libcpio.a}, one had to write
13262
13263 @example
13264 LIBRARIES = cpio
13265 cpio_SOURCES = ...
13266 @end example
13267
13268 Extra files to distribute must be listed in @code{DIST_OTHER} (the
13269 ancestor of @code{EXTRA_DIST}).  Also extra directories that are to be
13270 distributed should appear in @code{DIST_SUBDIRS}, but the manual
13271 describes this as a temporary ugly hack (today extra directories should
13272 also be listed in @code{EXTRA_DIST}, and @code{DIST_SUBDIRS} is used
13273 for another purpose, @pxref{Conditional Subdirectories}).
13274
13275 @item 1995-11-26 Automake 0.21
13276
13277 In less time than it takes to cook a frozen pizza, Tom rewrites
13278 Automake using Perl.  At this time Perl 5 is only one year old, and
13279 Perl 4.036 is in use at many sites.  Supporting several Perl versions
13280 has been a source of problems through the whole history of Automake.
13281
13282 If you never used Perl 4, imagine Perl 5 without objects, without
13283 @samp{my} variables (only dynamically scoped @samp{local} variables),
13284 without function prototypes, with function calls that needs to be
13285 prefixed with @samp{&}, etc.  Traces of this old style can still be
13286 found in today's @command{automake}.
13287
13288 @item 1995-11-28 Automake 0.22
13289 @itemx 1995-11-29 Automake 0.23
13290
13291 Bug fixes.
13292
13293 @item 1995-12-08 Automake 0.24
13294 @itemx 1995-12-10 Automake 0.25
13295
13296 Releases are raining.  0.24 introduces the uniform naming scheme we
13297 use today, i.e., @code{bin_PROGRAMS} instead of @code{PROGRAMS},
13298 @code{noinst_LIBRARIES} instead of @code{LIBLIBRARIES}, etc.  (However
13299 @code{EXTRA_PROGRAMS} does not exist yet, @code{AM_PROGRAMS} is still
13300 in use; and @code{TEXINFOS} and @code{MANS} still have no directory
13301 prefixes.)  Adding support for prefixes like that was one of the major
13302 ideas in @command{automake}; it has lasted pretty well.
13303
13304 AutoMake is renamed to Automake (Tom seems to recall it was Fran@,cois
13305 Pinard's doing).
13306
13307 0.25 fixes a Perl 4 portability bug.
13308
13309 @item 1995-12-18 Jim Meyering starts using Automake in GNU Textutils.
13310 @item 1995-12-31 Fran@,cois Pinard starts using Automake in GNU tar.
13311
13312 @item 1996-01-03 Automake 0.26
13313 @itemx 1996-01-03 Automake 0.27
13314
13315 Of the many changes and suggestions sent by Fran@,cois Pinard and
13316 included in 0.26, perhaps the most important is the advice that to
13317 ease customization a user rule or variable definition should always
13318 override an Automake rule or definition.
13319
13320 Gordon Matzigkeit and Jim Meyering are two other early contributors
13321 that have been sending fixes.
13322
13323 0.27 fixes yet another Perl 4 portability bug.
13324
13325 @item 1996-01-13 Automake 0.28
13326
13327 Automake starts scanning @file{configure.in} for @code{LIBOBJS}
13328 support.  This is an important step because until this version
13329 Automake only knew about the @file{Makefile.am}s it processed.
13330 @file{configure.in} was Autoconf's world and the link between Autoconf
13331 and Automake had to be done by the @file{Makefile.am} author.  For
13332 instance, if @file{config.h} was generated by @file{configure}, it was the
13333 package maintainer's responsibility to define the @code{CONFIG_HEADER}
13334 variable in each @file{Makefile.am}.
13335
13336 Succeeding releases will rely more and more on scanning
13337 @file{configure.in} to better automate the Autoconf integration.
13338
13339 0.28 also introduces the @code{AUTOMAKE_OPTIONS} variable and the
13340 @option{--gnu} and @option{--gnits} options, the latter being stricter.
13341
13342 @item 1996-02-07 Automake 0.29
13343
13344 Thanks to @file{configure.in} scanning, @code{CONFIG_HEADER} is gone,
13345 and rebuild rules for @file{configure}-generated file are
13346 automatically output.
13347
13348 @code{TEXINFOS} and @code{MANS} converted to the uniform naming
13349 scheme.
13350
13351 @item 1996-02-24 Automake 0.30
13352
13353 The test suite is born.  It contains 9 tests.  From now on test cases
13354 will be added pretty regularly (@pxref{Releases}), and this proved to
13355 be really helpful later on.
13356
13357 @code{EXTRA_PROGRAMS} finally replaces @code{AM_PROGRAMS}.
13358
13359 All the third-party Autoconf macros, written mostly by Fran@,cois
13360 Pinard (and later Jim Meyering), are distributed in Automake's
13361 hand-written @file{aclocal.m4} file.  Package maintainers are expected
13362 to extract the necessary macros from this file.  (In previous versions
13363 you had to copy and paste them from the manual...)
13364
13365 @item 1996-03-11 Automake 0.31
13366
13367 The test suite in 0.30 was run via a long @code{check-local} rule.  Upon
13368 Ulrich Drepper's suggestion, 0.31 makes it an Automake rule output
13369 whenever the @code{TESTS} variable is defined.
13370
13371 @code{DIST_OTHER} is renamed to @code{EXTRA_DIST}, and the @code{check_}
13372 prefix is introduced.  The syntax is now the same as today.
13373
13374 @item 1996-03-15 Gordon Matzigkeit starts writing libtool.
13375
13376 @item 1996-04-27 Automake 0.32
13377
13378 @code{-hook} targets are introduced; an idea from Dieter Baron.
13379
13380 @file{*.info} files, which were output in the build directory are
13381 now built in the source directory, because they are distributed.  It
13382 seems these files like to move back and forth as that will happen
13383 again in future versions.
13384
13385 @item 1996-05-18 Automake 0.33
13386
13387 Gord Matzigkeit's main two contributions:
13388
13389 @itemize
13390 @item very preliminary libtool support
13391 @item the distcheck rule
13392 @end itemize
13393
13394 Although they were very basic at this point, these are probably
13395 among the top features for Automake today.
13396
13397 Jim Meyering also provides the infamous @code{jm_MAINTAINER_MODE},
13398 since then renamed to @code{AM_MAINTAINER_MODE} and abandoned by its
13399 author (@pxref{maintainer-mode}).
13400
13401 @item 1996-05-28 Automake 1.0
13402
13403 After only six months of heavy development, the @command{automake} script is
13404 3134 lines long, plus 973 lines of @file{Makefile} fragments.  The
13405 package has 30 pages of documentation, and 38 test cases.
13406 @file{aclocal.m4} contains 4 macros.
13407
13408 From now on and until version 1.4, new releases will occur at a rate
13409 of about one a year.  1.1 did not exist, actually 1.1b to 1.1p have
13410 been the name of beta releases for 1.2.  This is the first time
13411 Automake uses suffix letters to designate beta releases, a habit that
13412 lasts.
13413
13414 @item 1996-10-10 Kevin Dalley packages Automake 1.0 for Debian GNU/Linux.
13415
13416 @item 1996-11-26 David J.@tie{}MacKenzie releases Autoconf 2.12.
13417
13418 Between June and October, the Autoconf development is almost stalled.
13419 Roland McGrath has been working at the beginning of the year.  David
13420 comes back in November to release 2.12, but he won't touch Autoconf
13421 anymore after this year, and Autoconf then really stagnates.  The
13422 desolate Autoconf @file{ChangeLog} for 1997 lists only 7 commits.
13423
13424 @item 1997-02-28 @email{automake@@gnu.ai.mit.edu} list alive
13425
13426 The mailing list is announced as follows:
13427 @smallexample
13428 I've created the "automake" mailing list.  It is
13429 "automake@@gnu.ai.mit.edu".  Administrivia, as always, to
13430 automake-request@@gnu.ai.mit.edu.
13431
13432 The charter of this list is discussion of automake, autoconf, and
13433 other configuration/portability tools (e.g., libtool).  It is expected
13434 that discussion will range from pleas for help all the way up to
13435 patches.
13436
13437 This list is archived on the FSF machines.  Offhand I don't know if
13438 you can get the archive without an account there.
13439
13440 This list is open to anybody who wants to join.  Tell all your
13441 friends!
13442 -- Tom Tromey
13443 @end smallexample
13444
13445 Before that people were discussing Automake privately, on the Gnits
13446 mailing list (which is not public either), and less frequently on
13447 @code{gnu.misc.discuss}.
13448
13449 @code{gnu.ai.mit.edu} is now @code{gnu.org}, in case you never
13450 noticed.  The archives of the early years of the
13451 @code{automake@@gnu.org} list have been lost, so today it is almost
13452 impossible to find traces of discussions that occurred before 1999.
13453 This has been annoying more than once, as such discussions can be
13454 useful to understand the rationale behind a piece of uncommented code
13455 that was introduced back then.
13456
13457 @item 1997-06-22 Automake 1.2
13458
13459 Automake developments continues, and more and more new Autoconf macros
13460 are required.  Distributing them in @file{aclocal.m4} and requiring
13461 people to browse this file to extract the relevant macros becomes
13462 uncomfortable.  Ideally, some of them should be contributed to
13463 Autoconf so that they can be used directly, however Autoconf is
13464 currently inactive.  Automake 1.2 consequently introduces
13465 @command{aclocal} (@command{aclocal} was actually started on
13466 1996-07-28), a tool that automatically constructs an @file{aclocal.m4}
13467 file from a repository of third-party macros.  Because Autoconf has
13468 stalled, Automake also becomes a kind of repository for such
13469 third-party macros, even macros completely unrelated to Automake (for
13470 instance macros that fix broken Autoconf macros).
13471
13472 The 1.2 release contains 20 macros, including the
13473 @code{AM_INIT_AUTOMAKE} macro that simplifies the creation of
13474 @file{configure.in}.
13475
13476 Libtool is fully supported using @code{*_LTLIBRARIES}.
13477
13478 The missing script is introduced by Fran@,cois Pinard; it is meant to be
13479 a better solution than @code{AM_MAINTAINER_MODE}
13480 (@pxref{maintainer-mode}).
13481
13482 Conditionals support was implemented by Ian Lance Taylor.  At the
13483 time, Tom and Ian were working on an internal project at Cygnus.  They
13484 were using ILU, which is pretty similar to CORBA@.  They wanted to
13485 integrate ILU into their build, which was all @file{configure}-based,
13486 and Ian thought that adding conditionals to @command{automake} was
13487 simpler than doing all the work in @file{configure} (which was the
13488 standard at the time).  So this was actually funded by Cygnus.
13489
13490 This very useful but tricky feature will take a lot of time to
13491 stabilize.  (At the time this text is written, there are still
13492 primaries that have not been updated to support conditional
13493 definitions in Automake 1.9.)
13494
13495 The @command{automake} script has almost doubled: 6089 lines of Perl,
13496 plus 1294 lines of @file{Makefile} fragments.
13497
13498 @item 1997-07-08 Gordon Matzigkeit releases Libtool 1.0.
13499
13500 @item 1998-04-05 Automake 1.3
13501
13502 This is a small advance compared to 1.2.
13503 It adds support for assembly, and preliminary support for Java.
13504
13505 Perl 5.004_04 is out, but fixes to support Perl 4 are still
13506 regularly submitted whenever Automake breaks it.
13507
13508 @item 1998-09-06 @code{sourceware.cygnus.com} is on-line.
13509
13510 Sourceware was setup by Jason Molenda to host open source projects.
13511
13512 @item 1998-09-19  Automake CVS repository moved to @code{sourceware.cygnus.com}
13513 @itemx 1998-10-26  @code{sourceware.cygnus.com} announces it hosts Automake:
13514 Automake is now hosted on @code{sourceware.cygnus.com}.  It has a
13515 publicly accessible CVS repository.  This CVS repository is a copy of
13516 the one Tom was using on his machine, which in turn is based on
13517 a copy of the CVS repository of David MacKenzie.  This is why we still
13518 have to full source history.  (Automake was on Sourceware until 2007-10-29,
13519 when it moved to a git repository on @code{savannah.gnu.org},
13520 but the Sourceware host had been renamed to @code{sources.redhat.com}.)
13521
13522 The oldest file in the administrative directory of the CVS repository
13523 that was created on Sourceware is dated 1998-09-19, while the
13524 announcement that @command{automake} and @command{autoconf} had joined
13525 @command{sourceware} was made on 1998-10-26.  They were among the
13526 first projects to be hosted there.
13527
13528 The heedful reader will have noticed Automake was exactly 4 years old
13529 on 1998-09-19.
13530
13531 @item 1999-01-05 Ben Elliston releases Autoconf 2.13.
13532
13533 @item 1999-01-14 Automake 1.4
13534
13535 This release adds support for Fortran 77 and for the @code{include}
13536 statement.  Also, @samp{+=} assignments are introduced, but it is
13537 still quite easy to fool Automake when mixing this with conditionals.
13538
13539 These two releases, Automake 1.4 and Autoconf 2.13 make a duo that
13540 will be used together for years.
13541
13542 @command{automake} is 7228 lines, plus 1591 lines of Makefile
13543 fragment, 20 macros (some 1.3 macros were finally contributed back to
13544 Autoconf), 197 test cases, and 51 pages of documentation.
13545
13546 @item 1999-03-27 The @code{user-dep-branch} is created on the CVS repository.
13547
13548 This implements a new dependency tracking schemed that should be
13549 able to handle automatic dependency tracking using any compiler (not
13550 just gcc) and any make (not just GNU @command{make}).  In addition,
13551 the new scheme should be more reliable than the old one, as
13552 dependencies are generated on the end user's machine.  Alexandre Oliva
13553 creates depcomp for this purpose.
13554
13555 @xref{Dependency Tracking Evolution}, for more details about the
13556 evolution of automatic dependency tracking in Automake.
13557
13558 @item 1999-11-21 The @code{user-dep-branch} is merged into the main trunk.
13559
13560 This was a huge problem since we also had patches going in on the
13561 trunk.  The merge took a long time and was very painful.
13562
13563 @item 2000-05-10
13564
13565 Since September 1999 and until 2003, Akim Demaille will be zealously
13566 revamping Autoconf.
13567
13568 @quotation
13569 I think the next release should be called "3.0".@*
13570 Let's face it: you've basically rewritten autoconf.@*
13571 Every weekend there are 30 new patches.@*
13572 I don't see how we could call this "2.15" with a straight face.@*
13573 -- Tom Tromey on @email{autoconf@@gnu.org}
13574 @end quotation
13575
13576 Actually Akim works like a submarine: he will pile up patches while he
13577 works off-line during the weekend, and flush them in batch when he
13578 resurfaces on Monday.
13579
13580 @item 2001-01-24
13581
13582 On this Wednesday, Autoconf 2.49c, the last beta before Autoconf 2.50
13583 is out, and Akim has to find something to do during his week-end :)
13584
13585 @item 2001-01-28
13586
13587 Akim sends a batch of 14 patches to @email{automake@@gnu.org}.
13588
13589 @quotation
13590 Aiieeee!  I was dreading the day that the Demaillator turned his
13591 sights on automake@dots{} and now it has arrived! -- Tom Tromey
13592 @end quotation
13593
13594 It's only the beginning: in two months he will send 192 patches.  Then
13595 he would slow down so Tom can catch up and review all this.  Initially
13596 Tom actually read all these patches, then he probably trustingly
13597 answered OK to most of them, and finally gave up and let Akim apply
13598 whatever he wanted.  There was no way to keep up with that patch rate.
13599
13600 @quotation
13601 Anyway the patch below won't apply since it predates Akim's
13602 sourcequake; I have yet to figure where the relevant passage has
13603 been moved :) -- Alexandre Duret-Lutz
13604 @end quotation
13605
13606 All these patches were sent to and discussed on
13607 @email{automake@@gnu.org}, so subscribed users were literally drowning in
13608 technical mails.  Eventually, the @email{automake-patches@@gnu.org}
13609 mailing list was created in May.
13610
13611 Year after year, Automake had drifted away from its initial design:
13612 construct @file{Makefile.in} by assembling various @file{Makefile}
13613 fragments.  In 1.4, lots of @file{Makefile} rules are being emitted at
13614 various places in the @command{automake} script itself; this does not
13615 help ensuring a consistent treatment of these rules (for instance
13616 making sure that user-defined rules override Automake's own rules).
13617 One of Akim's goal was moving all these hard-coded rules to separate
13618 @file{Makefile} fragments, so the logic could be centralized in a
13619 @file{Makefile} fragment processor.
13620
13621 Another significant contribution of Akim is the interface with the
13622 ``trace'' feature of Autoconf.  The way to scan @file{configure.in} at
13623 this time was to read the file and grep the various macro of interest
13624 to Automake.  Doing so could break in many unexpected ways; @command{automake}
13625 could miss some definition (for instance @samp{AC_SUBST([$1], [$2])}
13626 where the arguments are known only when M4 is run), or conversely it
13627 could detect some macro that was not expanded (because it is called
13628 conditionally).  In the CVS version of Autoconf, Akim had implemented
13629 the @option{--trace} option, which provides accurate information about
13630 where macros are actually called and with what arguments.  Akim will
13631 equip Automake with a second @file{configure.in} scanner that uses
13632 this @option{--trace} interface.  Since it was not sensible to drop the
13633 Autoconf 2.13 compatibility yet, this experimental scanner was only
13634 used when an environment variable was set, the traditional
13635 grep-scanner being still the default.
13636
13637 @item 2001-04-25 Gary V.@tie{}Vaughan releases Libtool 1.4
13638
13639 It has been more than two years since Automake 1.4, CVS Automake has
13640 suffered lot's of heavy changes and still is not ready for release.
13641 Libtool 1.4 had to be distributed with a patch against Automake 1.4.
13642
13643 @item 2001-05-08 Automake 1.4-p1
13644 @itemx 2001-05-24 Automake 1.4-p2
13645
13646 Gary V.@tie{}Vaughan, the principal Libtool maintainer, makes a ``patch
13647 release'' of Automake:
13648
13649 @quotation
13650 The main purpose of this release is to have a stable automake
13651 which is compatible with the latest stable libtool.
13652 @end quotation
13653
13654 The release also contains obvious fixes for bugs in Automake 1.4,
13655 some of which were reported almost monthly.
13656
13657 @item 2001-05-21 Akim Demaille releases Autoconf 2.50
13658
13659 @item 2001-06-07 Automake 1.4-p3
13660 @itemx 2001-06-10 Automake 1.4-p4
13661 @itemx 2001-07-15 Automake 1.4-p5
13662
13663 Gary continues his patch-release series.  These also add support for
13664 some new Autoconf 2.50 idioms.  Essentially, Autoconf now advocates
13665 @file{configure.ac} over @file{configure.in}, and it introduces a new
13666 syntax for @code{AC_OUTPUT}ing files.
13667
13668 @item 2001-08-23 Automake 1.5
13669
13670 A major and long-awaited release, that comes more than two years after
13671 1.4.  It brings many changes, among which:
13672 @itemize
13673 @item The new dependency tracking scheme that uses @command{depcomp}.
13674 Aside from the improvement on the dependency tracking itself
13675 (@pxref{Dependency Tracking Evolution}), this also streamlines the use
13676 of @command{automake}-generated @file{Makefile.in}s as the @file{Makefile.in}s
13677 used during development are now the same as those used in
13678 distributions.  Before that the @file{Makefile.in}s generated for
13679 maintainers required GNU @command{make} and GCC, they were different
13680 from the portable @file{Makefile} generated for distribution; this was
13681 causing some confusion.
13682
13683 @item Support for per-target compilation flags.
13684
13685 @item Support for reference to files in subdirectories in most
13686 @file{Makefile.am} variables.
13687
13688 @item Introduction of the @code{dist_}, @code{nodist_}, and @code{nobase_}
13689 prefixes.
13690 @item Perl 4 support is finally dropped.
13691 @end itemize
13692
13693 1.5 did break several packages that worked with 1.4.  Enough so that
13694 Linux distributions could not easily install the new Automake version
13695 without breaking many of the packages for which they had to run
13696 @command{automake}.
13697
13698 Some of these breakages were effectively bugs that would eventually be
13699 fixed in the next release.  However, a lot of damage was caused by
13700 some changes made deliberately to render Automake stricter on some
13701 setup we did consider bogus.  For instance, @samp{make distcheck} was
13702 improved to check that @samp{make uninstall} did remove all the files
13703 @samp{make install} installed, that @samp{make distclean} did not omit
13704 some file, and that a VPATH build would work even if the source
13705 directory was read-only.  Similarly, Automake now rejects multiple
13706 definitions of the same variable (because that would mix very badly
13707 with conditionals), and @samp{+=} assignments with no previous
13708 definition.  Because these changes all occurred suddenly after 1.4 had
13709 been established for more than two years, it hurt users.
13710
13711 To make matter worse, meanwhile Autoconf (now at version 2.52) was
13712 facing similar troubles, for similar reasons.
13713
13714 @item 2002-03-05 Automake 1.6
13715
13716 This release introduced versioned installation (@pxref{API
13717 Versioning}).  This was mainly pushed by Havoc Pennington, taking the
13718 GNOME source tree as motive: due to incompatibilities between the
13719 autotools it's impossible for the GNOME packages to switch to Autoconf
13720 2.53 and Automake 1.5 all at once, so they are currently stuck with
13721 Autoconf 2.13 and Automake 1.4.
13722
13723 The idea was to call this version @file{automake-1.6}, call all its
13724 bug-fix versions identically, and switch to @file{automake-1.7} for
13725 the next release that adds new features or changes some rules.  This
13726 scheme implies maintaining a bug-fix branch in addition to the
13727 development trunk, which means more work from the maintainer, but
13728 providing regular bug-fix releases proved to be really worthwhile.
13729
13730 Like 1.5, 1.6 also introduced a bunch of incompatibilities, intentional or
13731 not.  Perhaps the more annoying was the dependence on the newly
13732 released Autoconf 2.53.  Autoconf seemed to have stabilized enough
13733 since its explosive 2.50 release and included changes required to fix
13734 some bugs in Automake.  In order to upgrade to Automake 1.6, people
13735 now had to upgrade Autoconf too; for some packages it was no picnic.
13736
13737 While versioned installation helped people to upgrade, it also
13738 unfortunately allowed people not to upgrade.  At the time of writing,
13739 some Linux distributions are shipping packages for Automake 1.4, 1.5,
13740 1.6, 1.7, 1.8, and 1.9.  Most of these still install 1.4 by default.
13741 Some distribution also call 1.4 the ``stable'' version, and present
13742 ``1.9'' as the development version; this does not really makes sense
13743 since 1.9 is way more solid than 1.4.  All this does not help the
13744 newcomer.
13745
13746 @item 2002-04-11 Automake 1.6.1
13747
13748 1.6, and the upcoming 1.4-p6 release were the last release by Tom.
13749 This one and those following will be handled by Alexandre
13750 Duret-Lutz.  Tom is still around, and will be there until about 1.7,
13751 but his interest into Automake is drifting away towards projects like
13752 @command{gcj}.
13753
13754 Alexandre has been using Automake since 2000, and started to
13755 contribute mostly on Akim's incitement (Akim and Alexandre have been
13756 working in the same room from 1999 to 2002).  In 2001 and 2002 he had
13757 a lot of free time to enjoy hacking Automake.
13758
13759 @item 2002-06-14 Automake 1.6.2
13760
13761 @item 2002-07-28 Automake 1.6.3
13762 @itemx 2002-07-28 Automake 1.4-p6
13763
13764 Two releases on the same day.  1.6.3 is a bug-fix release.
13765
13766 Tom Tromey backported the versioned installation mechanism on the 1.4
13767 branch, so that Automake 1.6.x and Automake 1.4-p6 could be installed
13768 side by side.  Another request from the GNOME folks.
13769
13770 @item 2002-09-25 Automake 1.7
13771
13772 This release switches to the new @file{configure.ac} scanner Akim
13773 was experimenting in 1.5.
13774
13775 @item 2002-10-16 Automake 1.7.1
13776 @itemx 2002-12-06 Automake 1.7.2
13777 @itemx 2003-02-20 Automake 1.7.3
13778 @itemx 2003-04-23 Automake 1.7.4
13779 @itemx 2003-05-18 Automake 1.7.5
13780 @itemx 2003-07-10 Automake 1.7.6
13781 @itemx 2003-09-07 Automake 1.7.7
13782 @itemx 2003-10-07 Automake 1.7.8
13783
13784 Many bug-fix releases.  1.7 lasted because the development version
13785 (upcoming 1.8) was suffering some major internal revamping.
13786
13787 @item 2003-10-26 Automake on screen
13788
13789 Episode 49, `Repercussions', in the third season of the `Alias' TV
13790 show is first aired.
13791
13792 Marshall, one of the characters, is working on a computer virus that he
13793 has to modify before it gets into the wrong hands or something like
13794 that.  The screenshots you see do not show any program code, they show
13795 a @file{Makefile.in} @code{generated by automake}...
13796
13797 @item 2003-11-09 Automake 1.7.9
13798
13799 @item 2003-12-10 Automake 1.8
13800
13801 The most striking update is probably that of @command{aclocal}.
13802
13803 @command{aclocal} now uses @code{m4_include} in the produced
13804 @file{aclocal.m4} when the included macros are already distributed
13805 with the package (an idiom used in many packages), which reduces code
13806 duplication.  Many people liked that, but in fact this change was
13807 really introduced to fix a bug in rebuild rules: @file{Makefile.in}
13808 must be rebuilt whenever a dependency of @file{configure} changes, but
13809 all the @file{m4} files included in @file{aclocal.m4} where unknown
13810 from @command{automake}.  Now @command{automake} can just trace the
13811 @code{m4_include}s to discover the dependencies.
13812
13813 @command{aclocal} also starts using the @option{--trace} Autoconf option
13814 in order to discover used macros more accurately.  This will turn out
13815 to be very tricky (later releases will improve this) as people had
13816 devised many ways to cope with the limitation of previous
13817 @command{aclocal} versions, notably using handwritten
13818 @code{m4_include}s: @command{aclocal} must make sure not to redefine a
13819 rule that is already included by such statement.
13820
13821 Automake also has seen its guts rewritten.  Although this rewriting
13822 took a lot of efforts, it is only apparent to the users in that some
13823 constructions previously disallowed by the implementation now work
13824 nicely.  Conditionals, Locations, Variable and Rule definitions,
13825 Options: these items on which Automake works have been rewritten as
13826 separate Perl modules, and documented.
13827
13828 @itemx 2004-01-11 Automake 1.8.1
13829 @itemx 2004-01-12 Automake 1.8.2
13830 @itemx 2004-03-07 Automake 1.8.3
13831 @itemx 2004-04-25 Automake 1.8.4
13832 @itemx 2004-05-16 Automake 1.8.5
13833
13834 @item 2004-07-28 Automake 1.9
13835
13836 This release tries to simplify the compilation rules it outputs to
13837 reduce the size of the Makefile.  The complaint initially come from
13838 the libgcj developers.  Their @file{Makefile.in} generated with
13839 Automake 1.4 and custom build rules (1.4 did not support compiled
13840 Java) is 250KB@.  The one generated by 1.8 was over 9MB@!  1.9 gets it
13841 down to 1.2MB@.
13842
13843 Aside from this it contains mainly minor changes and bug-fixes.
13844
13845 @itemx 2004-08-11 Automake 1.9.1
13846 @itemx 2004-09-19 Automake 1.9.2
13847
13848 Automake has ten years.  This chapter of the manual was initially
13849 written for this occasion.
13850
13851 @itemx 2007-10-29 Automake repository moves to @code{savannah.gnu.org} and uses
13852 git as primary repository.
13853
13854 @end table
13855
13856 @node Dependency Tracking Evolution
13857 @section Dependency Tracking in Automake
13858
13859 Over the years Automake has deployed three different dependency
13860 tracking methods.  Each method, including the current one, has had
13861 flaws of various sorts.  Here we lay out the different dependency
13862 tracking methods, their flaws, and their fixes.  We conclude with
13863 recommendations for tool writers, and by indicating future directions
13864 for dependency tracking work in Automake.
13865
13866 @menu
13867 * First Take on Dependencies::  Precomputed dependency tracking
13868 * Dependencies As Side Effects::  Update at developer compile time
13869 * Dependencies for the User::   Update at user compile time
13870 * Techniques for Dependencies::  Alternative approaches
13871 * Recommendations for Tool Writers::  What tool writers can do to help
13872 * Future Directions for Dependencies::  Languages Automake does not know
13873 @end menu
13874
13875 @node First Take on Dependencies
13876 @subsection First Take on Dependency Tracking
13877 @unnumberedsubsubsec Description
13878
13879 Our first attempt at automatic dependency tracking was based on the
13880 method recommended by GNU @command{make}.  (@pxref{Automatic
13881 Prerequisites, , Generating Prerequisites Automatically, make, The GNU
13882 make Manual})
13883
13884 This version worked by precomputing dependencies ahead of time.  For
13885 each source file, it had a special @file{.P} file that held the
13886 dependencies.  There was a rule to generate a @file{.P} file by
13887 invoking the compiler appropriately.  All such @file{.P} files were
13888 included by the @file{Makefile}, thus implicitly becoming dependencies
13889 of @file{Makefile}.
13890
13891 @unnumberedsubsubsec Bugs
13892
13893 This approach had several critical bugs.
13894
13895 @itemize
13896 @item
13897 The code to generate the @file{.P} file relied on @command{gcc}.
13898 (A limitation, not technically a bug.)
13899 @item
13900 The dependency tracking mechanism itself relied on GNU @command{make}.
13901 (A limitation, not technically a bug.)
13902 @item
13903 Because each @file{.P} file was a dependency of @file{Makefile}, this
13904 meant that dependency tracking was done eagerly by @command{make}.
13905 For instance, @samp{make clean} would cause all the dependency files
13906 to be updated, and then immediately removed.  This eagerness also
13907 caused problems with some configurations; if a certain source file
13908 could not be compiled on a given architecture for some reason,
13909 dependency tracking would fail, aborting the entire build.
13910 @item
13911 As dependency tracking was done as a pre-pass, compile times were
13912 doubled--the compiler had to be run twice per source file.
13913 @item
13914 @samp{make dist} re-ran @command{automake} to generate a
13915 @file{Makefile} that did not have automatic dependency tracking (and
13916 that was thus portable to any version of @command{make}).  In order to
13917 do this portably, Automake had to scan the dependency files and remove
13918 any reference that was to a source file not in the distribution.
13919 This process was error-prone.  Also, if @samp{make dist} was run in an
13920 environment where some object file had a dependency on a source file
13921 that was only conditionally created, Automake would generate a
13922 @file{Makefile} that referred to a file that might not appear in the
13923 end user's build.  A special, hacky mechanism was required to work
13924 around this.
13925 @end itemize
13926
13927 @unnumberedsubsubsec Historical Note
13928
13929 The code generated by Automake is often inspired by the
13930 @file{Makefile} style of a particular author.  In the case of the first
13931 implementation of dependency tracking, I believe the impetus and
13932 inspiration was Jim Meyering.  (I could be mistaken.  If you know
13933 otherwise feel free to correct me.)
13934
13935 @node Dependencies As Side Effects
13936 @subsection Dependencies As Side Effects
13937 @unnumberedsubsubsec Description
13938
13939 The next refinement of Automake's automatic dependency tracking scheme
13940 was to implement dependencies as side effects of the compilation.
13941 This was aimed at solving the most commonly reported problems with the
13942 first approach.  In particular we were most concerned with eliminating
13943 the weird rebuilding effect associated with make clean.
13944
13945 In this approach, the @file{.P} files were included using the
13946 @code{-include} command, which let us create these files lazily.  This
13947 avoided the @samp{make clean} problem.
13948
13949 We only computed dependencies when a file was actually compiled.  This
13950 avoided the performance penalty associated with scanning each file
13951 twice.  It also let us avoid the other problems associated with the
13952 first, eager, implementation.  For instance, dependencies would never
13953 be generated for a source file that was not compilable on a given
13954 architecture (because it in fact would never be compiled).
13955
13956 @unnumberedsubsubsec Bugs
13957
13958 @itemize
13959 @item
13960 This approach also relied on the existence of @command{gcc} and GNU
13961 @command{make}.  (A limitation, not technically a bug.)
13962 @item
13963 Dependency tracking was still done by the developer, so the problems
13964 from the first implementation relating to massaging of dependencies by
13965 @samp{make dist} were still in effect.
13966 @item
13967 This implementation suffered from the ``deleted header file'' problem.
13968 Suppose a lazily-created @file{.P} file includes a dependency on a
13969 given header file, like this:
13970
13971 @example
13972 maude.o: maude.c something.h
13973 @end example
13974
13975 Now suppose that you remove @file{something.h} and update @file{maude.c}
13976 so that this include is no longer needed.  If you run @command{make},
13977 you will get an error because there is no way to create
13978 @file{something.h}.
13979
13980 We fixed this problem in a later release by further massaging the
13981 output of @command{gcc} to include a dummy dependency for each header
13982 file.
13983 @end itemize
13984
13985 @node Dependencies for the User
13986 @subsection Dependencies for the User
13987 @unnumberedsubsubsec Description
13988
13989 The bugs associated with @samp{make dist}, over time, became a real
13990 problem.  Packages using Automake were being built on a large number
13991 of platforms, and were becoming increasingly complex.  Broken
13992 dependencies were distributed in ``portable'' @file{Makefile.in}s,
13993 leading to user complaints.  Also, the requirement for @command{gcc}
13994 and GNU @command{make} was a constant source of bug reports.  The next
13995 implementation of dependency tracking aimed to remove these problems.
13996
13997 We realized that the only truly reliable way to automatically track
13998 dependencies was to do it when the package itself was built.  This
13999 meant discovering a method portable to any version of make and any
14000 compiler.  Also, we wanted to preserve what we saw as the best point
14001 of the second implementation: dependency computation as a side effect
14002 of compilation.
14003
14004 In the end we found that most modern make implementations support some
14005 form of include directive.  Also, we wrote a wrapper script that let
14006 us abstract away differences between dependency tracking methods for
14007 compilers.  For instance, some compilers cannot generate dependencies
14008 as a side effect of compilation.  In this case we simply have the
14009 script run the compiler twice.  Currently our wrapper script
14010 (@command{depcomp}) knows about twelve different compilers (including
14011 a "compiler" that simply invokes @command{makedepend} and then the
14012 real compiler, which is assumed to be a standard Unix-like C compiler
14013 with no way to do dependency tracking).
14014
14015 @unnumberedsubsubsec Bugs
14016
14017 @itemize
14018 @item
14019 Running a wrapper script for each compilation slows down the build.
14020 @item
14021 Many users don't really care about precise dependencies.
14022 @item
14023 This implementation, like every other automatic dependency tracking
14024 scheme in common use today (indeed, every one we've ever heard of),
14025 suffers from the ``duplicated new header'' bug.
14026
14027 This bug occurs because dependency tracking tools, such as the
14028 compiler, only generate dependencies on the successful opening of a
14029 file, and not on every probe.
14030
14031 Suppose for instance that the compiler searches three directories for
14032 a given header, and that the header is found in the third directory.
14033 If the programmer erroneously adds a header file with the same name to
14034 the first directory, then a clean rebuild from scratch could fail
14035 (suppose the new header file is buggy), whereas an incremental rebuild
14036 will succeed.
14037
14038 What has happened here is that people have a misunderstanding of what
14039 a dependency is.  Tool writers think a dependency encodes information
14040 about which files were read by the compiler.  However, a dependency
14041 must actually encode information about what the compiler tried to do.
14042
14043 This problem is not serious in practice.  Programmers typically do not
14044 use the same name for a header file twice in a given project.  (At
14045 least, not in C or C++.  This problem may be more troublesome in
14046 Java.)  This problem is easy to fix, by modifying dependency
14047 generators to record every probe, instead of every successful open.
14048
14049 @item
14050 Since Automake generates dependencies as a side effect of compilation,
14051 there is a bootstrapping problem when header files are generated by
14052 running a program.  The problem is that, the first time the build is
14053 done, there is no way by default to know that the headers are
14054 required, so make might try to run a compilation for which the headers
14055 have not yet been built.
14056
14057 This was also a problem in the previous dependency tracking implementation.
14058
14059 The current fix is to use @code{BUILT_SOURCES} to list built headers
14060 (@pxref{Sources}).  This causes them to be built before any other
14061 build rules are run.  This is unsatisfactory as a general solution,
14062 however in practice it seems sufficient for most actual programs.
14063 @end itemize
14064
14065 This code is used since Automake 1.5.
14066
14067 In GCC 3.0, we managed to convince the maintainers to add special
14068 command-line options to help Automake more efficiently do its job.  We
14069 hoped this would let us avoid the use of a wrapper script when
14070 Automake's automatic dependency tracking was used with @command{gcc}.
14071
14072 Unfortunately, this code doesn't quite do what we want.  In
14073 particular, it removes the dependency file if the compilation fails;
14074 we'd prefer that it instead only touch the file in any way if the
14075 compilation succeeds.
14076
14077 Nevertheless, since Automake 1.7, when a recent @command{gcc} is
14078 detected at @command{configure} time, we inline the
14079 dependency-generation code and do not use the @command{depcomp}
14080 wrapper script.  This makes compilations faster for those using this
14081 compiler (probably our primary user base).  The counterpart is that
14082 because we have to encode two compilation rules in @file{Makefile}
14083 (with or without @command{depcomp}), the produced @file{Makefile}s are
14084 larger.
14085
14086 @node Techniques for Dependencies
14087 @subsection Techniques for Computing Dependencies
14088
14089 There are actually several ways for a build tool like Automake to
14090 cause tools to generate dependencies.
14091
14092 @table @asis
14093 @item @command{makedepend}
14094 This was a commonly-used method in the past.  The idea is to run a
14095 special program over the source and have it generate dependency
14096 information.  Traditional implementations of @command{makedepend} are
14097 not completely precise; ordinarily they were conservative and
14098 discovered too many dependencies.
14099 @item The tool
14100 An obvious way to generate dependencies is to simply write the tool so
14101 that it can generate the information needed by the build tool.  This is
14102 also the most portable method.  Many compilers have an option to
14103 generate dependencies.  Unfortunately, not all tools provide such an
14104 option.
14105 @item The file system
14106 It is possible to write a special file system that tracks opens,
14107 reads, writes, etc, and then feed this information back to the build
14108 tool.  @command{clearmake} does this.  This is a very powerful
14109 technique, as it doesn't require cooperation from the
14110 tool.  Unfortunately it is also very difficult to implement and also
14111 not practical in the general case.
14112 @item @code{LD_PRELOAD}
14113 Rather than use the file system, one could write a special library to
14114 intercept @code{open} and other syscalls.  This technique is also quite
14115 powerful, but unfortunately it is not portable enough for use in
14116 @command{automake}.
14117 @end table
14118
14119 @node Recommendations for Tool Writers
14120 @subsection Recommendations for Tool Writers
14121
14122 We think that every compilation tool ought to be able to generate
14123 dependencies as a side effect of compilation.  Furthermore, at least
14124 while @command{make}-based tools are nearly universally in use (at
14125 least in the free software community), the tool itself should generate
14126 dummy dependencies for header files, to avoid the deleted header file
14127 bug.  Finally, the tool should generate a dependency for each probe,
14128 instead of each successful file open, in order to avoid the duplicated
14129 new header bug.
14130
14131 @node Future Directions for Dependencies
14132 @subsection Future Directions for Dependencies
14133
14134 Currently, only languages and compilers understood by Automake can
14135 have dependency tracking enabled.  We would like to see if it is
14136 practical (and worthwhile) to let this support be extended by the user
14137 to languages unknown to Automake.
14138
14139 @node Releases
14140 @section Release Statistics
14141
14142 The following table (inspired by @samp{perlhist(1)}) quantifies the
14143 evolution of Automake using these metrics:
14144
14145 @table @asis
14146 @item Date, Rel
14147 The date and version of the release.
14148 @item am
14149 The number of lines of the @command{automake} script.
14150 @item acl
14151 The number of lines of the @command{aclocal} script.
14152 @item pm
14153 The number of lines of the @command{Perl} supporting modules.
14154 @item @file{*.am}
14155 The number of lines of the @file{Makefile} fragments.  The number in
14156 parentheses is the number of files.
14157 @item m4
14158 The number of lines (and files) of Autoconf macros.
14159 @item doc
14160 The number of pages of the documentation (the Postscript version).
14161 @item t
14162 The number of test cases in the test suite.  Of those, the number in
14163 parentheses is the number of generated test cases.
14164 @end table
14165
14166 @multitable {8888-88-88} {8.8-p8} {8888} {8888} {8888} {8888 (88)} {8888 (88)} {888} {888 (88)}
14167 @headitem Date   @tab Rel    @tab   am @tab acl @tab   pm @tab @file{*.am} @tab m4 @tab doc @tab t
14168 @item 1994-09-19 @tab CVS    @tab  141 @tab     @tab      @tab  299 (24) @tab           @tab     @tab
14169 @item 1994-11-05 @tab CVS    @tab  208 @tab     @tab      @tab  332 (28) @tab           @tab     @tab
14170 @item 1995-11-23 @tab 0.20   @tab  533 @tab     @tab      @tab  458 (35) @tab           @tab   9 @tab
14171 @item 1995-11-26 @tab 0.21   @tab  613 @tab     @tab      @tab  480 (36) @tab           @tab  11 @tab
14172 @item 1995-11-28 @tab 0.22   @tab 1116 @tab     @tab      @tab  539 (38) @tab           @tab  12 @tab
14173 @item 1995-11-29 @tab 0.23   @tab 1240 @tab     @tab      @tab  541 (38) @tab           @tab  12 @tab
14174 @item 1995-12-08 @tab 0.24   @tab 1462 @tab     @tab      @tab  504 (33) @tab           @tab  14 @tab
14175 @item 1995-12-10 @tab 0.25   @tab 1513 @tab     @tab      @tab  511 (37) @tab           @tab  15 @tab
14176 @item 1996-01-03 @tab 0.26   @tab 1706 @tab     @tab      @tab  438 (36) @tab           @tab  16 @tab
14177 @item 1996-01-03 @tab 0.27   @tab 1706 @tab     @tab      @tab  438 (36) @tab           @tab  16 @tab
14178 @item 1996-01-13 @tab 0.28   @tab 1964 @tab     @tab      @tab  934 (33) @tab           @tab  16 @tab
14179 @item 1996-02-07 @tab 0.29   @tab 2299 @tab     @tab      @tab  936 (33) @tab           @tab  17 @tab
14180 @item 1996-02-24 @tab 0.30   @tab 2544 @tab     @tab      @tab  919 (32) @tab   85 (1)  @tab  20 @tab 9
14181 @item 1996-03-11 @tab 0.31   @tab 2877 @tab     @tab      @tab  919 (32) @tab   85 (1)  @tab  29 @tab 17
14182 @item 1996-04-27 @tab 0.32   @tab 3058 @tab     @tab      @tab  921 (31) @tab   85 (1)  @tab  30 @tab 26
14183 @item 1996-05-18 @tab 0.33   @tab 3110 @tab     @tab      @tab  926 (31) @tab  105 (1)  @tab  30 @tab 35
14184 @item 1996-05-28 @tab 1.0    @tab 3134 @tab     @tab      @tab  973 (32) @tab  105 (1)  @tab  30 @tab 38
14185 @item 1997-06-22 @tab 1.2    @tab 6089 @tab 385 @tab      @tab 1294 (36) @tab  592 (20) @tab  37 @tab 126
14186 @item 1998-04-05 @tab 1.3    @tab 6415 @tab 422 @tab      @tab 1470 (39) @tab  741 (23) @tab  39 @tab 156
14187 @item 1999-01-14 @tab 1.4    @tab 7240 @tab 426 @tab      @tab 1591 (40) @tab  734 (20) @tab  51 @tab 197
14188 @item 2001-05-08 @tab 1.4-p1 @tab 7251 @tab 426 @tab      @tab 1591 (40) @tab  734 (20) @tab  51 @tab 197
14189 @item 2001-05-24 @tab 1.4-p2 @tab 7268 @tab 439 @tab      @tab 1591 (40) @tab  734 (20) @tab  49 @tab 197
14190 @item 2001-06-07 @tab 1.4-p3 @tab 7312 @tab 439 @tab      @tab 1591 (40) @tab  734 (20) @tab  49 @tab 197
14191 @item 2001-06-10 @tab 1.4-p4 @tab 7321 @tab 439 @tab      @tab 1591 (40) @tab  734 (20) @tab  49 @tab 198
14192 @item 2001-07-15 @tab 1.4-p5 @tab 7228 @tab 426 @tab      @tab 1596 (40) @tab  734 (20) @tab  51 @tab 198
14193 @item 2001-08-23 @tab 1.5    @tab 8016 @tab 475 @tab  600 @tab 2654 (39) @tab 1166 (29) @tab  63 @tab 327
14194 @item 2002-03-05 @tab 1.6    @tab 8465 @tab 475 @tab 1136 @tab 2732 (39) @tab 1603 (27) @tab  66 @tab 365
14195 @item 2002-04-11 @tab 1.6.1  @tab 8544 @tab 475 @tab 1136 @tab 2741 (39) @tab 1603 (27) @tab  66 @tab 372
14196 @item 2002-06-14 @tab 1.6.2  @tab 8575 @tab 475 @tab 1136 @tab 2800 (39) @tab 1609 (27) @tab  67 @tab 386
14197 @item 2002-07-28 @tab 1.6.3  @tab 8600 @tab 475 @tab 1153 @tab 2809 (39) @tab 1609 (27) @tab  67 @tab 391
14198 @item 2002-07-28 @tab 1.4-p6 @tab 7332 @tab 455 @tab      @tab 1596 (40) @tab  735 (20) @tab  49 @tab 197
14199 @item 2002-09-25 @tab 1.7    @tab 9189 @tab 471 @tab 1790 @tab 2965 (39) @tab 1606 (28) @tab  73 @tab 430
14200 @item 2002-10-16 @tab 1.7.1  @tab 9229 @tab 475 @tab 1790 @tab 2977 (39) @tab 1606 (28) @tab  73 @tab 437
14201 @item 2002-12-06 @tab 1.7.2  @tab 9334 @tab 475 @tab 1790 @tab 2988 (39) @tab 1606 (28) @tab  77 @tab 445
14202 @item 2003-02-20 @tab 1.7.3  @tab 9389 @tab 475 @tab 1790 @tab 3023 (39) @tab 1651 (29) @tab  84 @tab 448
14203 @item 2003-04-23 @tab 1.7.4  @tab 9429 @tab 475 @tab 1790 @tab 3031 (39) @tab 1644 (29) @tab  85 @tab 458
14204 @item 2003-05-18 @tab 1.7.5  @tab 9429 @tab 475 @tab 1790 @tab 3033 (39) @tab 1645 (29) @tab  85 @tab 459
14205 @item 2003-07-10 @tab 1.7.6  @tab 9442 @tab 475 @tab 1790 @tab 3033 (39) @tab 1660 (29) @tab  85 @tab 461
14206 @item 2003-09-07 @tab 1.7.7  @tab 9443 @tab 475 @tab 1790 @tab 3041 (39) @tab 1660 (29) @tab  90 @tab 467
14207 @item 2003-10-07 @tab 1.7.8  @tab 9444 @tab 475 @tab 1790 @tab 3041 (39) @tab 1660 (29) @tab  90 @tab 468
14208 @item 2003-11-09 @tab 1.7.9  @tab 9444 @tab 475 @tab 1790 @tab 3048 (39) @tab 1660 (29) @tab  90 @tab 468
14209 @item 2003-12-10 @tab 1.8    @tab 7171 @tab 585 @tab 7730 @tab 3236 (39) @tab 1666 (31) @tab 104 @tab 521
14210 @item 2004-01-11 @tab 1.8.1  @tab 7217 @tab 663 @tab 7726 @tab 3287 (39) @tab 1686 (31) @tab 104 @tab 525
14211 @item 2004-01-12 @tab 1.8.2  @tab 7217 @tab 663 @tab 7726 @tab 3288 (39) @tab 1686 (31) @tab 104 @tab 526
14212 @item 2004-03-07 @tab 1.8.3  @tab 7214 @tab 686 @tab 7735 @tab 3303 (39) @tab 1695 (31) @tab 111 @tab 530
14213 @item 2004-04-25 @tab 1.8.4  @tab 7214 @tab 686 @tab 7736 @tab 3310 (39) @tab 1701 (31) @tab 112 @tab 531
14214 @item 2004-05-16 @tab 1.8.5  @tab 7240 @tab 686 @tab 7736 @tab 3299 (39) @tab 1701 (31) @tab 112 @tab 533
14215 @item 2004-07-28 @tab 1.9    @tab 7508 @tab 715 @tab 7794 @tab 3352 (40) @tab 1812 (32) @tab 115 @tab 551
14216 @item 2004-08-11 @tab 1.9.1  @tab 7512 @tab 715 @tab 7794 @tab 3354 (40) @tab 1812 (32) @tab 115 @tab 552
14217 @item 2004-09-19 @tab 1.9.2  @tab 7512 @tab 715 @tab 7794 @tab 3354 (40) @tab 1812 (32) @tab 132 @tab 554
14218 @item 2004-11-01 @tab 1.9.3  @tab 7507 @tab 718 @tab 7804 @tab 3354 (40) @tab 1812 (32) @tab 134 @tab 556
14219 @item 2004-12-18 @tab 1.9.4  @tab 7508 @tab 718 @tab 7856 @tab 3361 (40) @tab 1811 (32) @tab 140 @tab 560
14220 @item 2005-02-13 @tab 1.9.5  @tab 7523 @tab 719 @tab 7859 @tab 3373 (40) @tab 1453 (32) @tab 142 @tab 562
14221 @item 2005-07-10 @tab 1.9.6  @tab 7539 @tab 699 @tab 7867 @tab 3400 (40) @tab 1453 (32) @tab 144 @tab 570
14222 @item 2006-10-15 @tab 1.10   @tab 7859 @tab 1072 @tab 8024 @tab 3512 (40) @tab 1496 (34) @tab 172 @tab 604
14223 @item 2008-01-19 @tab 1.10.1 @tab 7870 @tab 1089 @tab 8025 @tab 3520 (40) @tab 1499 (34) @tab 173 @tab 617
14224 @item 2008-11-23 @tab 1.10.2 @tab 7882 @tab 1089 @tab 8027 @tab 3540 (40) @tab 1509 (34) @tab 176 @tab 628
14225 @item 2009-05-17 @tab 1.11   @tab 8721 @tab 1092 @tab 8289 @tab 4164 (42) @tab 1714 (37) @tab 181 @tab 732 (20)
14226 @end multitable
14227
14228
14229 @c ========================================================== Appendices
14230
14231 @page
14232 @node Copying This Manual
14233 @appendix Copying This Manual
14234
14235 @menu
14236 * GNU Free Documentation License::  License for copying this manual
14237 @end menu
14238
14239 @node GNU Free Documentation License
14240 @appendixsec GNU Free Documentation License
14241 @include fdl.texi
14242
14243 @page
14244 @node Indices
14245 @appendix Indices
14246
14247 @menu
14248 * Macro Index::                 Index of Autoconf macros
14249 * Variable Index::              Index of Makefile variables
14250 * General Index::               General index
14251 @end menu
14252
14253 @node Macro Index
14254 @appendixsec Macro Index
14255
14256 @printindex fn
14257
14258 @node Variable Index
14259 @appendixsec Variable Index
14260
14261 @printindex vr
14262
14263 @node General Index
14264 @appendixsec General Index
14265
14266 @printindex cp
14267
14268
14269 @bye
14270
14271 @c  LocalWords:  texinfo setfilename settitle setchapternewpage texi direntry
14272 @c  LocalWords:  dircategory in's aclocal ifinfo titlepage Tromey vskip pt sp
14273 @c  LocalWords:  filll defcodeindex ov cv op tr syncodeindex fn cp vr ifnottex
14274 @c  LocalWords:  dir Automake's ac Dist Gnits gnits cygnus dfn Autoconf's pxref
14275 @c  LocalWords:  cindex Autoconf autoconf perl samp cvs dist trindex SUBST foo
14276 @c  LocalWords:  xs emph FIXME ref vindex pkglibdir pkgincludedir pkgdatadir mt
14277 @c  LocalWords:  pkg libdir cpio bindir sbindir rmt pax sbin zar zardir acindex
14278 @c  LocalWords:  HTML htmldir html noinst TEXINFOS nodist nobase strudel CFLAGS
14279 @c  LocalWords:  libmumble CC YFLAGS itemx de fication config url comp
14280 @c  LocalWords:  depcomp elisp sh mdate mkinstalldirs mkdir py tex dvi ps pdf
14281 @c  LocalWords:  ylwrap zardoz INIT gettext acinclude mv FUNCS LIBOBJS LDADD fr
14282 @c  LocalWords:  uref featureful dnl src LINGUAS es ko nl pl sl sv PROG ISC doc
14283 @c  LocalWords:  POSIX STDC fcntl FUNC ALLOCA blksize struct stat intl po chmod
14284 @c  LocalWords:  ChangeLog SUBDIRS gettextize gpl testdata getopt INTLLIBS cpp
14285 @c  LocalWords:  localedir datadir DLOCALEDIR DEXIT CPPFLAGS autoreconf opindex
14286 @c  LocalWords:  AUX var symlink deps Wno Wnone package's aclocal's distclean
14287 @c  LocalWords:  ltmain xref LIBSOURCE LIBSOURCES LIBOBJ MEMCMP vs RANLIB CXX
14288 @c  LocalWords:  LDFLAGS LIBTOOL libtool XTRA LIBS gettext's acdir APIVERSION
14289 @c  LocalWords:  dirlist noindent usr MULTILIB multilib Multilibs TIOCGWINSZ sc
14290 @c  LocalWords:  GWINSZ termios SRCDIR tarball bzip LISPDIR lispdir XEmacs CCAS
14291 @c  LocalWords:  emacsen MicroEmacs CCASFLAGS UX GCJ gcj GCJFLAGS posix DMALLOC
14292 @c  LocalWords:  dmalloc ldmalloc REGEX regex DEPDIR DEP DEFUN aclocaldir fi
14293 @c  LocalWords:  mymacro myothermacro AMFLAGS autopoint autogen libtoolize yum
14294 @c  LocalWords:  autoheader README MAKEFLAGS subdir Inetutils sync COND endif
14295 @c  LocalWords:  Miller's installable includedir inc pkgdata EXEEXT libexec bsd
14296 @c  LocalWords:  pkglib libexecdir prog libcpio cpio's dlopen dlpreopen linux
14297 @c  LocalWords:  subsubsection OBJEXT esac lib LTLIBRARIES liblob LIBADD AR ar
14298 @c  LocalWords:  ARFLAGS cru ing maude libgettext lo LTLIBOBJS rpath SGI PRE yy
14299 @c  LocalWords:  libmaude CCLD CXXFLAGS FFLAGS LFLAGS OBJCFLAGS RFLAGS DEFS cc
14300 @c  LocalWords:  SHORTNAME vtable srcdir nostdinc basename yxx cxx ll lxx gdb
14301 @c  LocalWords:  lexers yymaxdepth maxdepth yyparse yylex yyerror yylval lval
14302 @c  LocalWords:  yychar yydebug yypact yyr yydef def yychk chk yypgo pgo yyact
14303 @c  LocalWords:  yyexca exca yyerrflag errflag yynerrs nerrs yyps yypv pv yys
14304 @c  LocalWords:  yystate yytmp tmp yyv yyval val yylloc lloc yyreds yytoks toks
14305 @c  LocalWords:  yylhs yylen yydefred yydgoto yysindex yyrindex yygindex yyname
14306 @c  LocalWords:  yytable yycheck yyrule byacc CXXCOMPILE CXXLINK FLINK cfortran
14307 @c  LocalWords:  Catalogue preprocessable FLIBS libfoo baz JAVACFLAGS java exe
14308 @c  LocalWords:  SunOS fying basenames exeext uninstalled oldinclude kr FSF's
14309 @c  LocalWords:  pkginclude oldincludedir sysconf sharedstate localstate gcc rm
14310 @c  LocalWords:  sysconfdir sharedstatedir localstatedir preexist CLEANFILES gz
14311 @c  LocalWords:  depfile tmpdepfile depmode const interoperate
14312 @c  LocalWords:  JAVAC javac JAVAROOT builddir CLASSPATH ENV pyc pyo pkgpython
14313 @c  LocalWords:  pyexecdir pkgpyexecdir Python's pythondir pkgpythondir txi ois
14314 @c  LocalWords:  installinfo vers MAKEINFO makeinfo MAKEINFOFLAGS noinstall rf
14315 @c  LocalWords:  mandir thesame alsothesame installman myexecbin DESTDIR Pinard
14316 @c  LocalWords:  uninstall installdirs uninstalls MOSTLYCLEANFILES mostlyclean
14317 @c  LocalWords:  DISTCLEANFILES MAINTAINERCLEANFILES GZIP gzip shar exp
14318 @c  LocalWords:  distdir distcheck distcleancheck listfiles distuninstallcheck
14319 @c  LocalWords:  VPATH tarfile stdout XFAIL DejaGnu dejagnu DEJATOOL runtest ln
14320 @c  LocalWords:  RUNTESTDEFAULTFLAGS toolchain RUNTESTFLAGS asis readme DVIPS
14321 @c  LocalWords:  installcheck gzipped tarZ std utils etags mkid multilibbing cd
14322 @c  LocalWords:  ARGS taggable ETAGSFLAGS lang ctags CTAGSFLAGS GTAGS gtags idl
14323 @c  LocalWords:  foocc doit idlC multilibs ABIs cmindex defmac ARG enableval FC
14324 @c  LocalWords:  MSG xtrue DBG pathchk CYGWIN afile proglink versioned CVS's TE
14325 @c  LocalWords:  wildcards Autoconfiscated subsubheading autotools Meyering API
14326 @c  LocalWords:  ois's wildcard Wportability cartouche vrindex printindex Duret
14327 @c  LocalWords:  DSOMEFLAG DVERSION automake Lutz insertcopying versioning FAQ
14328 @c  LocalWords:  LTLIBOBJ Libtool's libtool's libltdl dlopening itutions libbar
14329 @c  LocalWords:  WANTEDLIBS libhello sublibraries libtop libsub dlopened Ratfor
14330 @c  LocalWords:  mymodule timestamps timestamp underquoted MAKEINFOHTMLFLAGS te
14331 @c  LocalWords:  GNUmakefile Subpackages subpackage's subpackages aux
14332 @c  LocalWords:  detailmenu Timeline pwd reldir AUTOM autom PREREQ FOOBAR libc
14333 @c  LocalWords:  libhand subpackage moduleN libmain libmisc FCFLAGS FCCOMPILE
14334 @c  LocalWords:  FCLINK subst sed ELCFILES elc MAKEINFOHTML dvips esyscmd ustar
14335 @c  LocalWords:  tarballs Woverride vfi ELFILES djm AutoMake honkin FSF
14336 @c  LocalWords:  fileutils precanned MacKenzie's reimplement termutils Tromey's
14337 @c  LocalWords:  cois gnitsians LIBPROGRAMS progs LIBLIBRARIES Textutils Ulrich
14338 @c  LocalWords:  Matzigkeit Drepper's Gord Matzigkeit's jm Dalley Debian org
14339 @c  LocalWords:  Administrivia ILU CORBA Sourceware Molenda sourceware Elliston
14340 @c  LocalWords:  dep Oliva Akim Demaille Aiieeee Demaillator Akim's sourcequake
14341 @c  LocalWords:  grep backported screenshots libgcj KB unnumberedsubsubsec pre
14342 @c  LocalWords:  precomputing hacky makedepend inline clearmake LD PRELOAD Rel
14343 @c  LocalWords:  syscalls perlhist acl pm multitable headitem fdl appendixsec
14344 @c  LocalWords:  LTALLOCA MALLOC malloc memcmp strdup alloca libcompat xyz DFOO
14345 @c  LocalWords:  unprefixed buildable preprocessed DBAZ DDATADIR WARNINGCFLAGS
14346 @c  LocalWords:  LIBFOOCFLAGS LIBFOOLDFLAGS ftable testSubDir obj LIBTOOLFLAGS
14347 @c  LocalWords:  barexec Pinard's automatize initialize lzip lzma xz cscope