news: describe recently-fixed bug in vala support
[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 * ANSI::                        Automatic de-ANSI-fication (deprecated, soon to be removed)
234 * Dependencies::                Automatic dependency tracking
235 * EXEEXT::                      Support for executable extensions
236
237 Building a program
238
239 * Program Sources::             Defining program sources
240 * Linking::                     Linking with libraries or extra objects
241 * Conditional Sources::         Handling conditional sources
242 * Conditional Programs::        Building a program conditionally
243
244 Building a Shared Library
245
246 * Libtool Concept::             Introducing Libtool
247 * Libtool Libraries::           Declaring Libtool Libraries
248 * Conditional Libtool Libraries::  Building Libtool Libraries Conditionally
249 * Conditional Libtool Sources::  Choosing Library Sources Conditionally
250 * Libtool Convenience Libraries::  Building Convenience Libtool Libraries
251 * Libtool Modules::             Building Libtool Modules
252 * Libtool Flags::               Using _LIBADD, _LDFLAGS, and _LIBTOOLFLAGS
253 * LTLIBOBJS::                   Using $(LTLIBOBJS) and $(LTALLOCA)
254 * Libtool Issues::              Common Issues Related to Libtool's Use
255
256 Common Issues Related to Libtool's Use
257
258 * Error required file ltmain.sh not found::  The need to run libtoolize
259 * Objects created both with libtool and without::  Avoid a specific build race
260
261 Fortran 77 Support
262
263 * Preprocessing Fortran 77::    Preprocessing Fortran 77 sources
264 * Compiling Fortran 77 Files::  Compiling Fortran 77 sources
265 * Mixing Fortran 77 With C and C++::  Mixing Fortran 77 With C and C++
266
267 Mixing Fortran 77 With C and C++
268
269 * How the Linker is Chosen::    Automatic linker selection
270
271 Fortran 9x Support
272
273 * Compiling Fortran 9x Files::  Compiling Fortran 9x sources
274
275 Other Derived Objects
276
277 * Scripts::                     Executable scripts
278 * Headers::                     Header files
279 * Data::                        Architecture-independent data files
280 * Sources::                     Derived sources
281
282 Built Sources
283
284 * Built Sources Example::       Several ways to handle built sources.
285
286 Other GNU Tools
287
288 * Emacs Lisp::                  Emacs Lisp
289 * gettext::                     Gettext
290 * Libtool::                     Libtool
291 * Java::                        Java bytecode compilation (deprecated)
292 * Python::                      Python
293
294 Building documentation
295
296 * Texinfo::                     Texinfo
297 * Man Pages::                   Man pages
298
299 What Gets Installed
300
301 * Basics of Installation::      What gets installed where
302 * The Two Parts of Install::    Installing data and programs separately
303 * Extending Installation::      Adding your own rules for installation
304 * Staged Installs::             Installation in a temporary location
305 * Install Rules for the User::  Useful additional rules
306
307 What Goes in a Distribution
308
309 * Basics of Distribution::      Files distributed by default
310 * Fine-grained Distribution Control::  @code{dist_} and @code{nodist_} prefixes
311 * The dist Hook::               A target for last-minute distribution changes
312 * Checking the Distribution::   @samp{make distcheck} explained
313 * The Types of Distributions::  A variety of formats and compression methods
314
315 Support for test suites
316
317 * Simple Tests::                Listing programs and scripts in @code{TESTS}
318 * Simple Tests using parallel-tests::  More powerful test driver
319 * DejaGnu Tests::               Interfacing with the external testing framework
320 * Install Tests::               Running tests on installed packages
321
322 Miscellaneous Rules
323
324 * Tags::                        Interfacing to etags and mkid
325 * Suffixes::                    Handling new file extensions
326 * Multilibs::                   Support for multilibs (deprecated, soon to be removed).
327
328 Conditionals
329
330 * Usage of Conditionals::       Declaring conditional content
331 * Limits of Conditionals::      Enclosing complete statements
332
333 Silencing Make
334
335 * Make verbosity::               Make is verbose by default
336 * Tricks For Silencing Make::    Standard and generic ways to silence make
337 * Automake silent-rules Option:: How Automake can help in silencing make
338
339 When Automake Isn't Enough
340
341 * Extending::                   Adding new rules or overriding existing ones.
342 * Third-Party Makefiles::       Integrating Non-Automake @file{Makefile}s.
343
344 Frequently Asked Questions about Automake
345
346 * CVS::                         CVS and generated files
347 * maintainer-mode::             missing and AM_MAINTAINER_MODE
348 * Wildcards::                   Why doesn't Automake support wildcards?
349 * Limitations on File Names::   Limitations on source and installed file names
350 * distcleancheck::              Files left in build directory after distclean
351 * Flag Variables Ordering::     CFLAGS vs.@: AM_CFLAGS vs.@: mumble_CFLAGS
352 * Renamed Objects::             Why are object files sometimes renamed?
353 * Per-Object Flags::            How to simulate per-object flags?
354 * Multiple Outputs::            Writing rules for tools with many output files
355 * Hard-Coded Install Paths::    Installing to hard-coded locations
356 * Debugging Make Rules::        Strategies when things don't work as expected
357 * Reporting Bugs::              Feedback on bugs and feature requests
358
359 History of Automake
360
361 * Timeline::                    The Automake story.
362 * Dependency Tracking Evolution::  Evolution of Automatic Dependency Tracking
363 * Releases::                    Statistics about Automake Releases
364
365 Dependency Tracking in Automake
366
367 * First Take on Dependencies::  Precomputed dependency tracking
368 * Dependencies As Side Effects::  Update at developer compile time
369 * Dependencies for the User::   Update at user compile time
370 * Techniques for Dependencies::  Alternative approaches
371 * Recommendations for Tool Writers::  What tool writers can do to help
372 * Future Directions for Dependencies::  Languages Automake does not know
373
374 Copying This Manual
375
376 * GNU Free Documentation License::  License for copying this manual
377
378 Indices
379
380 * Macro Index::                 Index of Autoconf macros
381 * Variable Index::              Index of Makefile variables
382 * General Index::               General index
383
384 @end detailmenu
385 @end menu
386
387 @end ifnottex
388
389
390 @node Introduction
391 @chapter Introduction
392
393 Automake is a tool for automatically generating @file{Makefile.in}s
394 from files called @file{Makefile.am}.  Each @file{Makefile.am} is
395 basically a series of @command{make} variable
396 definitions@footnote{These variables are also called @dfn{make macros}
397 in Make terminology, however in this manual we reserve the term
398 @dfn{macro} for Autoconf's macros.}, with rules being thrown in
399 occasionally.  The generated @file{Makefile.in}s are compliant with
400 the GNU Makefile standards.
401
402 @cindex GNU Makefile standards
403
404 The GNU Makefile Standards Document
405 (@pxref{Makefile Conventions, , , standards, The GNU Coding Standards})
406 is long, complicated, and subject to change.  The goal of Automake is to
407 remove the burden of Makefile maintenance from the back of the
408 individual GNU maintainer (and put it on the back of the Automake
409 maintainers).
410
411 The typical Automake input file is simply a series of variable definitions.
412 Each such file is processed to create a @file{Makefile.in}.  There
413 should generally be one @file{Makefile.am} per directory of a project.
414
415 @cindex Constraints of Automake
416 @cindex Automake constraints
417
418 Automake does constrain a project in certain ways; for instance, it
419 assumes that the project uses Autoconf (@pxref{Top, , Introduction,
420 autoconf, The Autoconf Manual}), and enforces certain restrictions on
421 the @file{configure.ac} contents@footnote{Older Autoconf versions used
422 @file{configure.in}.  Autoconf 2.50 and greater promotes
423 @file{configure.ac} over @file{configure.in}.  The rest of this
424 documentation will refer to @file{configure.ac}, but Automake also
425 supports @file{configure.in} for backward compatibility.}.
426
427 @cindex Automake requirements
428 @cindex Requirements, Automake
429
430 Automake requires @command{perl} in order to generate the
431 @file{Makefile.in}s.  However, the distributions created by Automake are
432 fully GNU standards-compliant, and do not require @command{perl} in order
433 to be built.
434
435 @cindex Bugs, reporting
436 @cindex Reporting bugs
437 @cindex E-mail, bug reports
438
439 For more information on bug reports, @xref{Reporting Bugs}.
440
441 @node Autotools Introduction
442 @chapter An Introduction to the Autotools
443
444 If you are new to Automake, maybe you know that it is part of a set of
445 tools called @emph{The Autotools}.  Maybe you've already delved into a
446 package full of files named @file{configure}, @file{configure.ac},
447 @file{Makefile.in}, @file{Makefile.am}, @file{aclocal.m4}, @dots{},
448 some of them claiming to be @emph{generated by} Autoconf or Automake.
449 But the exact purpose of these files and their relations is probably
450 fuzzy.  The goal of this chapter is to introduce you to this machinery,
451 to show you how it works and how powerful it is.  If you've never
452 installed or seen such a package, do not worry: this chapter will walk
453 you through it.
454
455 If you need some teaching material, more illustrations, or a less
456 @command{automake}-centered continuation, some slides for this
457 introduction are available in Alexandre Duret-Lutz's
458 @uref{http://www.lrde.epita.fr/@/~adl/@/autotools.html,
459 Autotools Tutorial}.
460 This chapter is the written version of the first part of his tutorial.
461
462 @menu
463 * GNU Build System::            Introducing the GNU Build System
464 * Use Cases::                   Use Cases for the GNU Build System
465 * Why Autotools::               How Autotools Help
466 * Hello World::                 A Small Hello World Package
467 @end menu
468
469 @node GNU Build System
470 @section Introducing the GNU Build System
471 @cindex GNU Build System, introduction
472
473 It is a truth universally acknowledged, that as a developer in
474 possession of a new package, you must be in want of a build system.
475
476 In the Unix world, such a build system is traditionally achieved using
477 the command @command{make} (@pxref{Top, , Overview, make, The GNU Make
478 Manual}).  You express the recipe to build your package in a
479 @file{Makefile}.  This file is a set of rules to build the files in
480 the package.  For instance the program @file{prog} may be built by
481 running the linker on the files @file{main.o}, @file{foo.o}, and
482 @file{bar.o}; the file @file{main.o} may be built by running the
483 compiler on @file{main.c}; etc.  Each time @command{make} is run, it
484 reads @file{Makefile}, checks the existence and modification time of
485 the files mentioned, decides what files need to be built (or rebuilt),
486 and runs the associated commands.
487
488 When a package needs to be built on a different platform than the one
489 it was developed on, its @file{Makefile} usually needs to be adjusted.
490 For instance the compiler may have another name or require more
491 options.  In 1991, David J. MacKenzie got tired of customizing
492 @file{Makefile} for the 20 platforms he had to deal with.  Instead, he
493 handcrafted a little shell script called @file{configure} to
494 automatically adjust the @file{Makefile} (@pxref{Genesis, , Genesis,
495 autoconf, The Autoconf Manual}).  Compiling his package was now
496 as simple as running @code{./configure && make}.
497
498 @cindex GNU Coding Standards
499
500 Today this process has been standardized in the GNU project.  The GNU
501 Coding Standards (@pxref{Managing Releases, The Release Process, ,
502 standards, The GNU Coding Standards}) explains how each package of the
503 GNU project should have a @file{configure} script, and the minimal
504 interface it should have.  The @file{Makefile} too should follow some
505 established conventions.  The result?  A unified build system that
506 makes all packages almost indistinguishable by the installer.  In its
507 simplest scenario, all the installer has to do is to unpack the
508 package, run @code{./configure && make && make install}, and repeat
509 with the next package to install.
510
511 We call this build system the @dfn{GNU Build System}, since it was
512 grown out of the GNU project.  However it is used by a vast number of
513 other packages: following any existing convention has its advantages.
514
515 @cindex Autotools, introduction
516
517 The Autotools are tools that will create a GNU Build System for your
518 package.  Autoconf mostly focuses on @file{configure} and Automake on
519 @file{Makefile}s.  It is entirely possible to create a GNU Build
520 System without the help of these tools.  However it is rather
521 burdensome and error-prone.  We will discuss this again after some
522 illustration of the GNU Build System in action.
523
524 @node Use Cases
525 @section Use Cases for the GNU Build System
526 @cindex GNU Build System, use cases
527 @cindex GNU Build System, features
528 @cindex Features of the GNU Build System
529 @cindex Use Cases for the GNU Build System
530 @cindex @file{amhello-1.0.tar.gz}, location
531 @cindex @file{amhello-1.0.tar.gz}, use cases
532
533 In this section we explore several use cases for the GNU Build System.
534 You can replay all these examples on the @file{amhello-1.0.tar.gz}
535 package distributed with Automake.  If Automake is installed on your
536 system, you should find a copy of this file in
537 @file{@var{prefix}/share/doc/automake/amhello-1.0.tar.gz}, where
538 @var{prefix} is the installation prefix specified during configuration
539 (@var{prefix} defaults to @file{/usr/local}, however if Automake was
540 installed by some GNU/Linux distribution it most likely has been set
541 to @file{/usr}).  If you do not have a copy of Automake installed,
542 you can find a copy of this file inside the @file{doc/} directory of
543 the Automake package.
544
545 Some of the following use cases present features that are in fact
546 extensions to the GNU Build System.  Read: they are not specified by
547 the GNU Coding Standards, but they are nonetheless part of the build
548 system created by the Autotools.  To keep things simple, we do not
549 point out the difference.  Our objective is to show you many of the
550 features that the build system created by the Autotools will offer to
551 you.
552
553 @menu
554 * Basic Installation::          Common installation procedure
555 * Standard Targets::            A list of standard Makefile targets
556 * Standard Directory Variables::  A list of standard directory variables
557 * Standard Configuration Variables::  Using configuration variables
558 * config.site::                 Using a config.site file
559 * VPATH Builds::                Parallel build trees
560 * Two-Part Install::            Installing data and programs separately
561 * Cross-Compilation::           Building for other architectures
562 * Renaming::                    Renaming programs at install time
563 * DESTDIR::                     Building binary packages with DESTDIR
564 * Preparing Distributions::     Rolling out tarballs
565 * Dependency Tracking::         Automatic dependency tracking
566 * Nested Packages::             The GNU Build Systems can be nested
567 @end menu
568
569 @node Basic Installation
570 @subsection Basic Installation
571 @cindex Configuration, basics
572 @cindex Installation, basics
573 @cindex GNU Build System, basics
574
575 The most common installation procedure looks as follows.
576
577 @example
578 ~ % @kbd{tar zxf amhello-1.0.tar.gz}
579 ~ % @kbd{cd amhello-1.0}
580 ~/amhello-1.0 % @kbd{./configure}
581 @dots{}
582 config.status: creating Makefile
583 config.status: creating src/Makefile
584 @dots{}
585 ~/amhello-1.0 % @kbd{make}
586 @dots{}
587 ~/amhello-1.0 % @kbd{make check}
588 @dots{}
589 ~/amhello-1.0 % @kbd{su}
590 Password:
591 /home/adl/amhello-1.0 # @kbd{make install}
592 @dots{}
593 /home/adl/amhello-1.0 # @kbd{exit}
594 ~/amhello-1.0 % @kbd{make installcheck}
595 @dots{}
596 @end example
597
598 @cindex Unpacking
599
600 The user first unpacks the package.  Here, and in the following
601 examples, we will use the non-portable @code{tar zxf} command for
602 simplicity.  On a system without GNU @command{tar} installed, this
603 command should read @code{gunzip -c amhello-1.0.tar.gz | tar xf -}.
604
605 The user then enters the newly created directory to run the
606 @file{configure} script.  This script probes the system for various
607 features, and finally creates the @file{Makefile}s.  In this toy
608 example there are only two @file{Makefile}s, but in real-world projects,
609 there may be many more, usually one @file{Makefile} per directory.
610
611 It is now possible to run @code{make}.  This will construct all the
612 programs, libraries, and scripts that need to be constructed for the
613 package.  In our example, this compiles the @file{hello} program.
614 All files are constructed in place, in the source tree; we will see
615 later how this can be changed.
616
617 @code{make check} causes the package's tests to be run.  This step is
618 not mandatory, but it is often good to make sure the programs that
619 have been built behave as they should, before you decide to install
620 them.  Our example does not contain any tests, so running @code{make
621 check} is a no-op.
622
623 @cindex su, before @code{make install}
624 After everything has been built, and maybe tested, it is time to
625 install it on the system.  That means copying the programs,
626 libraries, header files, scripts, and other data files from the
627 source directory to their final destination on the system.  The
628 command @code{make install} will do that.  However, by default
629 everything will be installed in subdirectories of @file{/usr/local}:
630 binaries will go into @file{/usr/local/bin}, libraries will end up in
631 @file{/usr/local/lib}, etc.  This destination is usually not writable
632 by any user, so we assume that we have to become root before we can
633 run @code{make install}.  In our example, running @code{make install}
634 will copy the program @file{hello} into @file{/usr/local/bin}
635 and @file{README} into @file{/usr/local/share/doc/amhello}.
636
637 A last and optional step is to run @code{make installcheck}.  This
638 command may run tests on the installed files.  @code{make check} tests
639 the files in the source tree, while @code{make installcheck} tests
640 their installed copies.  The tests run by the latter can be different
641 from those run by the former.  For instance, there are tests that
642 cannot be run in the source tree.  Conversely, some packages are set
643 up so that @code{make installcheck} will run the very same tests as
644 @code{make check}, only on different files (non-installed
645 vs.@: installed).  It can make a difference, for instance when the
646 source tree's layout is different from that of the installation.
647 Furthermore it may help to diagnose an incomplete installation.
648
649 Presently most packages do not have any @code{installcheck} tests
650 because the existence of @code{installcheck} is little known, and its
651 usefulness is neglected.  Our little toy package is no better: @code{make
652 installcheck} does nothing.
653
654 @node Standard Targets
655 @subsection Standard @file{Makefile} Targets
656
657 So far we have come across four ways to run @command{make} in the GNU
658 Build System: @code{make}, @code{make check}, @code{make install}, and
659 @code{make installcheck}.  The words @code{check}, @code{install}, and
660 @code{installcheck}, passed as arguments to @command{make}, are called
661 @dfn{targets}.  @code{make} is a shorthand for @code{make all},
662 @code{all} being the default target in the GNU Build System.
663
664 Here is a list of the most useful targets that the GNU Coding Standards
665 specify.
666
667 @table @code
668 @item make all
669 @trindex all
670 Build programs, libraries, documentation, etc.@: (same as @code{make}).
671 @item make install
672 @trindex install
673 Install what needs to be installed, copying the files from the
674 package's tree to system-wide directories.
675 @item make install-strip
676 @trindex install-strip
677 Same as @code{make install}, then strip debugging symbols.  Some
678 users like to trade space for useful bug reports@enddots{}
679 @item make uninstall
680 @trindex uninstall
681 The opposite of @code{make install}: erase the installed files.
682 (This needs to be run from the same build tree that was installed.)
683 @item make clean
684 @trindex clean
685 Erase from the build tree the files built by @code{make all}.
686 @item make distclean
687 @trindex distclean
688 Additionally erase anything @code{./configure} created.
689 @item make check
690 @trindex check
691 Run the test suite, if any.
692 @item make installcheck
693 @trindex installcheck
694 Check the installed programs or libraries, if supported.
695 @item make dist
696 @trindex dist
697 Recreate @file{@var{package}-@var{version}.tar.gz} from all the source
698 files.
699 @end table
700
701 @node Standard Directory Variables
702 @subsection Standard Directory Variables
703 @cindex directory variables
704
705 The GNU Coding Standards also specify a hierarchy of variables to
706 denote installation directories.  Some of these are:
707
708 @multitable {Directory variable} {@code{$@{datarootdir@}/doc/$@{PACKAGE@}}}
709 @headitem Directory variable    @tab Default value
710 @item @code{prefix}              @tab @code{/usr/local}
711 @item @w{@ @ @code{exec_prefix}} @tab @code{$@{prefix@}}
712 @item @w{@ @ @ @ @code{bindir}}  @tab @code{$@{exec_prefix@}/bin}
713 @item @w{@ @ @ @ @code{libdir}}  @tab @code{$@{exec_prefix@}/lib}
714 @item @w{@ @ @ @ @dots{}}
715 @item @w{@ @ @code{includedir}}  @tab @code{$@{prefix@}/include}
716 @item @w{@ @ @code{datarootdir}} @tab @code{$@{prefix@}/share}
717 @item @w{@ @ @ @ @code{datadir}} @tab @code{$@{datarootdir@}}
718 @item @w{@ @ @ @ @code{mandir}}  @tab @code{$@{datarootdir@}/man}
719 @item @w{@ @ @ @ @code{infodir}} @tab @code{$@{datarootdir@}/info}
720 @item @w{@ @ @ @ @code{docdir}}  @tab @code{$@{datarootdir@}/doc/$@{PACKAGE@}}
721 @item @w{@ @ @dots{}}
722 @end multitable
723
724 @c We should provide a complete table somewhere, but not here.  The
725 @c complete list of directory variables it too confusing as-is.  It
726 @c requires some explanations that are too complicated for this
727 @c introduction.  Besides listing directories like localstatedir
728 @c would make the explanations in ``Two-Part Install'' harder.
729
730 Each of these directories has a role which is often obvious from its
731 name.  In a package, any installable file will be installed in one of
732 these directories.  For instance in @code{amhello-1.0}, the program
733 @file{hello} is to be installed in @var{bindir}, the directory for
734 binaries.  The default value for this directory is
735 @file{/usr/local/bin}, but the user can supply a different value when
736 calling @command{configure}.  Also the file @file{README} will be
737 installed into @var{docdir}, which defaults to
738 @file{/usr/local/share/doc/amhello}.
739
740 @opindex --prefix
741
742 As a user, if you wish to install a package on your own account, you
743 could proceed as follows:
744
745 @example
746 ~/amhello-1.0 % @kbd{./configure --prefix ~/usr}
747 @dots{}
748 ~/amhello-1.0 % @kbd{make}
749 @dots{}
750 ~/amhello-1.0 % @kbd{make install}
751 @dots{}
752 @end example
753
754 This would install @file{~/usr/bin/hello} and
755 @file{~/usr/share/doc/amhello/README}.
756
757 The list of all such directory options is shown by
758 @code{./configure --help}.
759
760 @node Standard Configuration Variables
761 @subsection Standard Configuration Variables
762 @cindex configuration variables, overriding
763
764 The GNU Coding Standards also define a set of standard configuration
765 variables used during the build.  Here are some:
766
767 @table @asis
768 @item @code{CC}
769 C compiler command
770 @item @code{CFLAGS}
771 C compiler flags
772 @item @code{CXX}
773 C++ compiler command
774 @item @code{CXXFLAGS}
775 C++ compiler flags
776 @item @code{LDFLAGS}
777 linker flags
778 @item @code{CPPFLAGS}
779 C/C++ preprocessor flags
780 @item @dots{}
781 @end table
782
783 @command{configure} usually does a good job at setting appropriate
784 values for these variables, but there are cases where you may want to
785 override them.  For instance you may have several versions of a
786 compiler installed and would like to use another one, you may have
787 header files installed outside the default search path of the
788 compiler, or even libraries out of the way of the linker.
789
790 Here is how one would call @command{configure} to force it to use
791 @command{gcc-3} as C compiler, use header files from
792 @file{~/usr/include} when compiling, and libraries from
793 @file{~/usr/lib} when linking.
794
795 @example
796 ~/amhello-1.0 % @kbd{./configure --prefix ~/usr CC=gcc-3 \
797 CPPFLAGS=-I$HOME/usr/include LDFLAGS=-L$HOME/usr/lib}
798 @end example
799
800 Again, a full list of these variables appears in the output of
801 @code{./configure --help}.
802
803 @node config.site
804 @subsection Overriding Default Configuration Setting with @file{config.site}
805 @cindex @file{config.site} example
806
807 When installing several packages using the same setup, it can be
808 convenient to create a file to capture common settings.
809 If a file named @file{@var{prefix}/share/config.site} exists,
810 @command{configure} will source it at the beginning of its execution.
811
812 Recall the command from the previous section:
813
814 @example
815 ~/amhello-1.0 % @kbd{./configure --prefix ~/usr CC=gcc-3 \
816 CPPFLAGS=-I$HOME/usr/include LDFLAGS=-L$HOME/usr/lib}
817 @end example
818
819 Assuming we are installing many package in @file{~/usr}, and will
820 always want to use these definitions of @code{CC}, @code{CPPFLAGS}, and
821 @code{LDFLAGS}, we can automate this by creating the following
822 @file{~/usr/share/config.site} file:
823
824 @example
825 test -z "$CC" && CC=gcc-3
826 test -z "$CPPFLAGS" && CPPFLAGS=-I$HOME/usr/include
827 test -z "$LDFLAGS" && LDFLAGS=-L$HOME/usr/lib
828 @end example
829
830 Now, any time a @file{configure} script is using the @file{~/usr}
831 prefix, it will execute the above @file{config.site} and define
832 these three variables.
833
834 @example
835 ~/amhello-1.0 % @kbd{./configure --prefix ~/usr}
836 configure: loading site script /home/adl/usr/share/config.site
837 @dots{}
838 @end example
839
840 @xref{Site Defaults, , Setting Site Defaults, autoconf, The Autoconf
841 Manual}, for more information about this feature.
842
843
844 @node VPATH Builds
845 @subsection Parallel Build Trees (a.k.a.@: VPATH Builds)
846 @cindex Parallel build trees
847 @cindex VPATH builds
848 @cindex source tree and build tree
849 @cindex build tree and source tree
850 @cindex trees, source vs.@: build
851
852 The GNU Build System distinguishes two trees: the source tree, and
853 the build tree.
854
855 The source tree is rooted in the directory containing
856 @file{configure}.  It contains all the sources files (those that are
857 distributed), and may be arranged using several subdirectories.
858
859 The build tree is rooted in the directory in which @file{configure}
860 was run, and is populated with all object files, programs, libraries,
861 and other derived files built from the sources (and hence not
862 distributed).  The build tree usually has the same subdirectory layout
863 as the source tree; its subdirectories are created automatically by
864 the build system.
865
866 If @file{configure} is executed in its own directory, the source and
867 build trees are combined: derived files are constructed in the same
868 directories as their sources.  This was the case in our first
869 installation example (@pxref{Basic Installation}).
870
871 A common request from users is that they want to confine all derived
872 files to a single directory, to keep their source directories
873 uncluttered.  Here is how we could run @file{configure} to build
874 everything in a subdirectory called @file{build/}.
875
876 @example
877 ~ % @kbd{tar zxf ~/amhello-1.0.tar.gz}
878 ~ % @kbd{cd amhello-1.0}
879 ~/amhello-1.0 % @kbd{mkdir build && cd build}
880 ~/amhello-1.0/build % @kbd{../configure}
881 @dots{}
882 ~/amhello-1.0/build % @kbd{make}
883 @dots{}
884 @end example
885
886 These setups, where source and build trees are different, are often
887 called @dfn{parallel builds} or @dfn{VPATH builds}.  The expression
888 @emph{parallel build} is misleading: the word @emph{parallel} is a
889 reference to the way the build tree shadows the source tree, it is not
890 about some concurrency in the way build commands are run.  For this
891 reason we refer to such setups using the name @emph{VPATH builds} in
892 the following.  @emph{VPATH} is the name of the @command{make} feature
893 used by the @file{Makefile}s to allow these builds (@pxref{General
894 Search, , @code{VPATH} Search Path for All Prerequisites, make, The
895 GNU Make Manual}).
896
897 @cindex multiple configurations, example
898 @cindex debug build, example
899 @cindex optimized build, example
900
901 VPATH builds have other interesting uses.  One is to build the same
902 sources with multiple configurations.  For instance:
903
904 @c Keep in sync with amhello-cflags.test.
905 @example
906 ~ % @kbd{tar zxf ~/amhello-1.0.tar.gz}
907 ~ % @kbd{cd amhello-1.0}
908 ~/amhello-1.0 % @kbd{mkdir debug optim && cd debug}
909 ~/amhello-1.0/debug % @kbd{../configure CFLAGS='-g -O0'}
910 @dots{}
911 ~/amhello-1.0/debug % @kbd{make}
912 @dots{}
913 ~/amhello-1.0/debug % cd ../optim
914 ~/amhello-1.0/optim % @kbd{../configure CFLAGS='-O3 -fomit-frame-pointer'}
915 @dots{}
916 ~/amhello-1.0/optim % @kbd{make}
917 @dots{}
918 @end example
919
920 With network file systems, a similar approach can be used to build the
921 same sources on different machines.  For instance, suppose that the
922 sources are installed on a directory shared by two hosts: @code{HOST1}
923 and @code{HOST2}, which may be different platforms.
924
925 @example
926 ~ % @kbd{cd /nfs/src}
927 /nfs/src % @kbd{tar zxf ~/amhello-1.0.tar.gz}
928 @end example
929
930 On the first host, you could create a local build directory:
931 @example
932 [HOST1] ~ % @kbd{mkdir /tmp/amh && cd /tmp/amh}
933 [HOST1] /tmp/amh % @kbd{/nfs/src/amhello-1.0/configure}
934 ...
935 [HOST1] /tmp/amh % @kbd{make && sudo make install}
936 ...
937 @end example
938
939 @noindent
940 (Here we assume that the installer has configured @command{sudo} so it
941 can execute @code{make install} with root privileges; it is more convenient
942 than using @command{su} like in @ref{Basic Installation}).
943
944 On the second host, you would do exactly the same, possibly at
945 the same time:
946 @example
947 [HOST2] ~ % @kbd{mkdir /tmp/amh && cd /tmp/amh}
948 [HOST2] /tmp/amh % @kbd{/nfs/src/amhello-1.0/configure}
949 ...
950 [HOST2] /tmp/amh % @kbd{make && sudo make install}
951 ...
952 @end example
953
954 @cindex read-only source tree
955 @cindex source tree, read-only
956
957 In this scenario, nothing forbids the @file{/nfs/src/amhello-1.0}
958 directory from being read-only.  In fact VPATH builds are also a means
959 of building packages from a read-only medium such as a CD-ROM.  (The
960 FSF used to sell CD-ROM with unpacked source code, before the GNU
961 project grew so big.)
962
963 @node Two-Part Install
964 @subsection Two-Part Installation
965
966 In our last example (@pxref{VPATH Builds}), a source tree was shared
967 by two hosts, but compilation and installation were done separately on
968 each host.
969
970 The GNU Build System also supports networked setups where part of the
971 installed files should be shared amongst multiple hosts.  It does so
972 by distinguishing architecture-dependent files from
973 architecture-independent files, and providing two @file{Makefile}
974 targets to install each of these classes of files.
975
976 @trindex install-exec
977 @trindex install-data
978
979 These targets are @code{install-exec} for architecture-dependent files
980 and @code{install-data} for architecture-independent files.
981 The command we used up to now, @code{make install}, can be thought of
982 as a shorthand for @code{make install-exec install-data}.
983
984 From the GNU Build System point of view, the distinction between
985 architecture-dependent files and architecture-independent files is
986 based exclusively on the directory variable used to specify their
987 installation destination.  In the list of directory variables we
988 provided earlier (@pxref{Standard Directory Variables}), all the
989 variables based on @var{exec-prefix} designate architecture-dependent
990 directories whose files will be installed by @code{make install-exec}.
991 The others designate architecture-independent directories and will
992 serve files installed by @code{make install-data}.  @xref{The Two Parts
993 of Install}, for more details.
994
995 Here is how we could revisit our two-host installation example,
996 assuming that (1) we want to install the package directly in
997 @file{/usr}, and (2) the directory @file{/usr/share} is shared by the
998 two hosts.
999
1000 On the first host we would run
1001 @example
1002 [HOST1] ~ % @kbd{mkdir /tmp/amh && cd /tmp/amh}
1003 [HOST1] /tmp/amh % @kbd{/nfs/src/amhello-1.0/configure --prefix /usr}
1004 ...
1005 [HOST1] /tmp/amh % @kbd{make && sudo make install}
1006 ...
1007 @end example
1008
1009 On the second host, however, we need only install the
1010 architecture-specific files.
1011 @example
1012 [HOST2] ~ % @kbd{mkdir /tmp/amh && cd /tmp/amh}
1013 [HOST2] /tmp/amh % @kbd{/nfs/src/amhello-1.0/configure --prefix /usr}
1014 ...
1015 [HOST2] /tmp/amh % @kbd{make && sudo make install-exec}
1016 ...
1017 @end example
1018
1019 In packages that have installation checks, it would make sense to run
1020 @code{make installcheck} (@pxref{Basic Installation}) to verify that
1021 the package works correctly despite the apparent partial installation.
1022
1023 @node Cross-Compilation
1024 @subsection Cross-Compilation
1025 @cindex cross-compilation
1026
1027 To @dfn{cross-compile} is to build on one platform a binary that will
1028 run on another platform.  When speaking of cross-compilation, it is
1029 important to distinguish between the @dfn{build platform} on which
1030 the compilation is performed, and the @dfn{host platform} on which the
1031 resulting executable is expected to run.  The following
1032 @command{configure} options are used to specify each of them:
1033
1034 @table @option
1035 @item --build=@var{build}
1036 @opindex --build=@var{build}
1037 The system on which the package is built.
1038 @item --host=@var{host}
1039 @opindex --host=@var{host}
1040 The system where built programs and libraries will run.
1041 @end table
1042
1043 When the @option{--host} is used, @command{configure} will search for
1044 the cross-compiling suite for this platform.  Cross-compilation tools
1045 commonly have their target architecture as prefix of their name.  For
1046 instance my cross-compiler for MinGW32 has its binaries called
1047 @code{i586-mingw32msvc-gcc}, @code{i586-mingw32msvc-ld},
1048 @code{i586-mingw32msvc-as}, etc.
1049
1050 @cindex MinGW cross-compilation example
1051 @cindex cross-compilation example
1052
1053 Here is how we could build @code{amhello-1.0} for
1054 @code{i586-mingw32msvc} on a GNU/Linux PC.
1055
1056 @c Keep in sync with amhello-cross-compile.test.
1057 @smallexample
1058 ~/amhello-1.0 % @kbd{./configure --build i686-pc-linux-gnu --host i586-mingw32msvc}
1059 checking for a BSD-compatible install... /usr/bin/install -c
1060 checking whether build environment is sane... yes
1061 checking for gawk... gawk
1062 checking whether make sets $(MAKE)... yes
1063 checking for i586-mingw32msvc-strip... i586-mingw32msvc-strip
1064 checking for i586-mingw32msvc-gcc... i586-mingw32msvc-gcc
1065 checking for C compiler default output file name... a.exe
1066 checking whether the C compiler works... yes
1067 checking whether we are cross compiling... yes
1068 checking for suffix of executables... .exe
1069 checking for suffix of object files... o
1070 checking whether we are using the GNU C compiler... yes
1071 checking whether i586-mingw32msvc-gcc accepts -g... yes
1072 checking for i586-mingw32msvc-gcc option to accept ANSI C...
1073 @dots{}
1074 ~/amhello-1.0 % @kbd{make}
1075 @dots{}
1076 ~/amhello-1.0 % @kbd{cd src; file hello.exe}
1077 hello.exe: MS Windows PE 32-bit Intel 80386 console executable not relocatable
1078 @end smallexample
1079
1080 The @option{--host} and @option{--build} options are usually all we
1081 need for cross-compiling.  The only exception is if the package being
1082 built is itself a cross-compiler: we need a third option to specify
1083 its target architecture.
1084
1085 @table @option
1086 @item --target=@var{target}
1087 @opindex --target=@var{target}
1088 When building compiler tools: the system for which the tools will
1089 create output.
1090 @end table
1091
1092 For instance when installing GCC, the GNU Compiler Collection, we can
1093 use @option{--target=@/@var{target}} to specify that we want to build
1094 GCC as a cross-compiler for @var{target}.  Mixing @option{--build} and
1095 @option{--target}, we can actually cross-compile a cross-compiler;
1096 such a three-way cross-compilation is known as a @dfn{Canadian cross}.
1097
1098 @xref{Specifying Names, , Specifying the System Type, autoconf, The
1099 Autoconf Manual}, for more information about these @command{configure}
1100 options.
1101
1102 @node Renaming
1103 @subsection Renaming Programs at Install Time
1104 @cindex Renaming programs
1105 @cindex Transforming program names
1106 @cindex Programs, renaming during installation
1107
1108 The GNU Build System provides means to automatically rename
1109 executables and manpages before they are installed (@pxref{Man Pages}).
1110 This is especially convenient
1111 when installing a GNU package on a system that already has a
1112 proprietary implementation you do not want to overwrite.  For instance,
1113 you may want to install GNU @command{tar} as @command{gtar} so you can
1114 distinguish it from your vendor's @command{tar}.
1115
1116 This can be done using one of these three @command{configure} options.
1117
1118 @table @option
1119 @item --program-prefix=@var{prefix}
1120 @opindex --program-prefix=@var{prefix}
1121 Prepend @var{prefix} to installed program names.
1122 @item --program-suffix=@var{suffix}
1123 @opindex --program-suffix=@var{suffix}
1124 Append @var{suffix} to installed program names.
1125 @item --program-transform-name=@var{program}
1126 @opindex --program-transform-name=@var{program}
1127 Run @code{sed @var{program}} on installed program names.
1128 @end table
1129
1130 The following commands would install @file{hello}
1131 as @file{/usr/local/bin/test-hello}, for instance.
1132
1133 @example
1134 ~/amhello-1.0 % @kbd{./configure --program-prefix test-}
1135 @dots{}
1136 ~/amhello-1.0 % @kbd{make}
1137 @dots{}
1138 ~/amhello-1.0 % @kbd{sudo make install}
1139 @dots{}
1140 @end example
1141
1142 @node DESTDIR
1143 @subsection Building Binary Packages Using DESTDIR
1144 @vindex DESTDIR
1145
1146 The GNU Build System's @code{make install} and @code{make uninstall}
1147 interface does not exactly fit the needs of a system administrator
1148 who has to deploy and upgrade packages on lots of hosts.  In other
1149 words, the GNU Build System does not replace a package manager.
1150
1151 Such package managers usually need to know which files have been
1152 installed by a package, so a mere @code{make install} is
1153 inappropriate.
1154
1155 @cindex Staged installation
1156
1157 The @code{DESTDIR} variable can be used to perform a staged
1158 installation.  The package should be configured as if it was going to
1159 be installed in its final location (e.g., @code{--prefix /usr}), but
1160 when running @code{make install}, the @code{DESTDIR} should be set to
1161 the absolute name of a directory into which the installation will be
1162 diverted.  From this directory it is easy to review which files are
1163 being installed where, and finally copy them to their final location
1164 by some means.
1165
1166 @cindex Binary package
1167
1168 For instance here is how we could create a binary package containing a
1169 snapshot of all the files to be installed.
1170
1171 @c Keep in sync with amhello-binpkg.test.
1172 @example
1173 ~/amhello-1.0 % @kbd{./configure --prefix /usr}
1174 @dots{}
1175 ~/amhello-1.0 % @kbd{make}
1176 @dots{}
1177 ~/amhello-1.0 % @kbd{make DESTDIR=$HOME/inst install}
1178 @dots{}
1179 ~/amhello-1.0 % @kbd{cd ~/inst}
1180 ~/inst % @kbd{find . -type f -print > ../files.lst}
1181 ~/inst % @kbd{tar zcvf ~/amhello-1.0-i686.tar.gz `cat ../files.lst`}
1182 ./usr/bin/hello
1183 ./usr/share/doc/amhello/README
1184 @end example
1185
1186 After this example, @code{amhello-1.0-i686.tar.gz} is ready to be
1187 uncompressed in @file{/} on many hosts.  (Using @code{`cat ../files.lst`}
1188 instead of @samp{.} as argument for @command{tar} avoids entries for
1189 each subdirectory in the archive: we would not like @command{tar} to
1190 restore the modification time of @file{/}, @file{/usr/}, etc.)
1191
1192 Note that when building packages for several architectures, it might
1193 be convenient to use @code{make install-data} and @code{make
1194 install-exec} (@pxref{Two-Part Install}) to gather
1195 architecture-independent files in a single package.
1196
1197 @xref{Install}, for more information.
1198
1199 @c We should document PRE_INSTALL/POST_INSTALL/NORMAL_INSTALL and their
1200 @c UNINSTALL counterparts.
1201
1202 @node Preparing Distributions
1203 @subsection Preparing Distributions
1204 @cindex Preparing distributions
1205 @cindex Packages, preparation
1206 @cindex Distributions, preparation
1207
1208 We have already mentioned @code{make dist}.  This target collects all
1209 your source files and the necessary parts of the build system to
1210 create a tarball named @file{@var{package}-@var{version}.tar.gz}.
1211
1212 @cindex @code{distcheck} better than @code{dist}
1213
1214 Another, more useful command is @code{make distcheck}.  The
1215 @code{distcheck} target constructs
1216 @file{@var{package}-@var{version}.tar.gz} just as well as @code{dist},
1217 but it additionally ensures most of the use cases presented so far
1218 work:
1219
1220 @itemize @bullet
1221 @item
1222 It attempts a full compilation of the package (@pxref{Basic
1223 Installation}), unpacking the newly constructed tarball, running
1224 @code{make}, @code{make check}, @code{make install}, as well as
1225 @code{make installcheck}, and even @code{make dist},
1226 @item
1227 it tests VPATH builds with read-only source tree (@pxref{VPATH Builds}),
1228 @item
1229 it makes sure @code{make clean}, @code{make distclean}, and @code{make
1230 uninstall} do not omit any file (@pxref{Standard Targets}),
1231 @item
1232 and it checks that @code{DESTDIR} installations work (@pxref{DESTDIR}).
1233 @end itemize
1234
1235 All of these actions are performed in a temporary subdirectory, so
1236 that no root privileges are required.
1237
1238 Releasing a package that fails @code{make distcheck} means that one of
1239 the scenarios we presented will not work and some users will be
1240 disappointed.  Therefore it is a good practice to release a package
1241 only after a successful @code{make distcheck}.  This of course does
1242 not imply that the package will be flawless, but at least it will
1243 prevent some of the embarrassing errors you may find in packages
1244 released by people who have never heard about @code{distcheck} (like
1245 @code{DESTDIR} not working because of a typo, or a distributed file
1246 being erased by @code{make clean}, or even @code{VPATH} builds not
1247 working).
1248
1249 @xref{Creating amhello}, to recreate @file{amhello-1.0.tar.gz} using
1250 @code{make distcheck}.  @xref{Checking the Distribution}, for more
1251 information about @code{distcheck}.
1252
1253 @node Dependency Tracking
1254 @subsection Automatic Dependency Tracking
1255 @cindex Dependency tracking
1256
1257 Dependency tracking is performed as a side-effect of compilation.
1258 Each time the build system compiles a source file, it computes its
1259 list of dependencies (in C these are the header files included by the
1260 source being compiled).  Later, any time @command{make} is run and a
1261 dependency appears to have changed, the dependent files will be
1262 rebuilt.
1263
1264 Automake generates code for automatic dependency tracking by default,
1265 unless the developer chooses to override it; for more information,
1266 @pxref{Dependencies}.
1267
1268 When @command{configure} is executed, you can see it probing each
1269 compiler for the dependency mechanism it supports (several mechanisms
1270 can be used):
1271
1272 @example
1273 ~/amhello-1.0 % @kbd{./configure --prefix /usr}
1274 @dots{}
1275 checking dependency style of gcc... gcc3
1276 @dots{}
1277 @end example
1278
1279 Because dependencies are only computed as a side-effect of the
1280 compilation, no dependency information exists the first time a package
1281 is built.  This is OK because all the files need to be built anyway:
1282 @code{make} does not have to decide which files need to be rebuilt.
1283 In fact, dependency tracking is completely useless for one-time builds
1284 and there is a @command{configure} option to disable this:
1285
1286 @table @option
1287 @item --disable-dependency-tracking
1288 @opindex --disable-dependency-tracking
1289 Speed up one-time builds.
1290 @end table
1291
1292 Some compilers do not offer any practical way to derive the list of
1293 dependencies as a side-effect of the compilation, requiring a separate
1294 run (maybe of another tool) to compute these dependencies.  The
1295 performance penalty implied by these methods is important enough to
1296 disable them by default.  The option @option{--enable-dependency-tracking}
1297 must be passed to @command{configure} to activate them.
1298
1299 @table @option
1300 @item --enable-dependency-tracking
1301 @opindex --enable-dependency-tracking
1302 Do not reject slow dependency extractors.
1303 @end table
1304
1305 @xref{Dependency Tracking Evolution}, for some discussion about the
1306 different dependency tracking schemes used by Automake over the years.
1307
1308 @node Nested Packages
1309 @subsection Nested Packages
1310 @cindex Nested packages
1311 @cindex Packages, nested
1312 @cindex Subpackages
1313
1314 Although nesting packages isn't something we would recommend to
1315 someone who is discovering the Autotools, it is a nice feature worthy
1316 of mention in this small advertising tour.
1317
1318 Autoconfiscated packages (that means packages whose build system have
1319 been created by Autoconf and friends) can be nested to arbitrary
1320 depth.
1321
1322 A typical setup is that package A will distribute one of the libraries
1323 it needs in a subdirectory.  This library B is a complete package with
1324 its own GNU Build System.  The @command{configure} script of A will
1325 run the @command{configure} script of B as part of its execution,
1326 building and installing A will also build and install B.  Generating a
1327 distribution for A will also include B.
1328
1329 It is possible to gather several packages like this.  GCC is a heavy
1330 user of this feature.  This gives installers a single package to
1331 configure, build and install, while it allows developers to work on
1332 subpackages independently.
1333
1334 When configuring nested packages, the @command{configure} options
1335 given to the top-level @command{configure} are passed recursively to
1336 nested @command{configure}s.  A package that does not understand an
1337 option will ignore it, assuming it is meaningful to some other
1338 package.
1339
1340 @opindex --help=recursive
1341
1342 The command @code{configure --help=recursive} can be used to display
1343 the options supported by all the included packages.
1344
1345 @xref{Subpackages}, for an example setup.
1346
1347 @node Why Autotools
1348 @section How Autotools Help
1349 @cindex Autotools, purpose
1350
1351 There are several reasons why you may not want to implement the GNU
1352 Build System yourself (read: write a @file{configure} script and
1353 @file{Makefile}s yourself).
1354
1355 @itemize @bullet
1356 @item
1357 As we have seen, the GNU Build System has a lot of
1358 features (@pxref{Use Cases}).
1359 Some users may expect features you have not implemented because
1360 you did not need them.
1361 @item
1362 Implementing these features portably is difficult and exhausting.
1363 Think of writing portable shell scripts, and portable
1364 @file{Makefile}s, for systems you may not have handy.  @xref{Portable
1365 Shell, , Portable Shell Programming, autoconf, The Autoconf Manual}, to
1366 convince yourself.
1367 @item
1368 You will have to upgrade your setup to follow changes to the GNU
1369 Coding Standards.
1370 @end itemize
1371
1372 The GNU Autotools take all this burden off your back and provide:
1373
1374 @itemize @bullet
1375 @item
1376 Tools to create a portable, complete, and self-contained GNU Build
1377 System, from simple instructions.
1378 @emph{Self-contained} meaning the resulting build system does not
1379 require the GNU Autotools.
1380 @item
1381 A central place where fixes and improvements are made:
1382 a bug-fix for a portability issue will benefit every package.
1383 @end itemize
1384
1385 Yet there also exist reasons why you may want NOT to use the
1386 Autotools@enddots{} For instance you may be already using (or used to)
1387 another incompatible build system.  Autotools will only be useful if
1388 you do accept the concepts of the GNU Build System.  People who have their
1389 own idea of how a build system should work will feel frustrated by the
1390 Autotools.
1391
1392 @node Hello World
1393 @section A Small Hello World
1394 @cindex Example Hello World
1395 @cindex Hello World example
1396 @cindex @file{amhello-1.0.tar.gz}, creation
1397
1398 In this section we recreate the @file{amhello-1.0} package from
1399 scratch.  The first subsection shows how to call the Autotools to
1400 instantiate the GNU Build System, while the second explains the
1401 meaning of the @file{configure.ac} and @file{Makefile.am} files read
1402 by the Autotools.
1403
1404 @anchor{amhello Explained}
1405 @menu
1406 * Creating amhello::            Create @file{amhello-1.0.tar.gz} from scratch
1407 * amhello's configure.ac Setup Explained::
1408 * amhello's Makefile.am Setup Explained::
1409 @end menu
1410
1411 @node Creating amhello
1412 @subsection Creating @file{amhello-1.0.tar.gz}
1413
1414 Here is how we can recreate @file{amhello-1.0.tar.gz} from scratch.
1415 The package is simple enough so that we will only need to write 5
1416 files.  (You may copy them from the final @file{amhello-1.0.tar.gz}
1417 that is distributed with Automake if you do not want to write them.)
1418
1419 Create the following files in an empty directory.
1420
1421 @itemize @bullet
1422
1423 @item
1424 @file{src/main.c} is the source file for the @file{hello} program.  We
1425 store it in the @file{src/} subdirectory, because later, when the package
1426 evolves, it will ease the addition of a @file{man/} directory for man
1427 pages, a @file{data/} directory for data files, etc.
1428 @example
1429 ~/amhello % @kbd{cat src/main.c}
1430 #include <config.h>
1431 #include <stdio.h>
1432
1433 int
1434 main (void)
1435 @{
1436   puts ("Hello World!");
1437   puts ("This is " PACKAGE_STRING ".");
1438   return 0;
1439 @}
1440 @end example
1441
1442 @item
1443 @file{README} contains some very limited documentation for our little
1444 package.
1445 @example
1446 ~/amhello % @kbd{cat README}
1447 This is a demonstration package for GNU Automake.
1448 Type `info Automake' to read the Automake manual.
1449 @end example
1450
1451 @item
1452 @file{Makefile.am} and @file{src/Makefile.am} contain Automake
1453 instructions for these two directories.
1454
1455 @example
1456 ~/amhello % @kbd{cat src/Makefile.am}
1457 bin_PROGRAMS = hello
1458 hello_SOURCES = main.c
1459 ~/amhello % @kbd{cat Makefile.am}
1460 SUBDIRS = src
1461 dist_doc_DATA = README
1462 @end example
1463
1464 @item
1465 Finally, @file{configure.ac} contains Autoconf instructions to
1466 create the @command{configure} script.
1467
1468 @example
1469 ~/amhello % @kbd{cat configure.ac}
1470 AC_INIT([amhello], [1.0], [@value{PACKAGE_BUGREPORT}])
1471 AM_INIT_AUTOMAKE([-Wall -Werror foreign])
1472 AC_PROG_CC
1473 AC_CONFIG_HEADERS([config.h])
1474 AC_CONFIG_FILES([
1475  Makefile
1476  src/Makefile
1477 ])
1478 AC_OUTPUT
1479 @end example
1480 @end itemize
1481
1482 @cindex @command{autoreconf}, example
1483
1484 Once you have these five files, it is time to run the Autotools to
1485 instantiate the build system.  Do this using the @command{autoreconf}
1486 command as follows:
1487
1488 @example
1489 ~/amhello % @kbd{autoreconf --install}
1490 configure.ac: installing `./install-sh'
1491 configure.ac: installing `./missing'
1492 src/Makefile.am: installing `./depcomp'
1493 @end example
1494
1495 At this point the build system is complete.
1496
1497 In addition to the three scripts mentioned in its output, you can see
1498 that @command{autoreconf} created four other files: @file{configure},
1499 @file{config.h.in}, @file{Makefile.in}, and @file{src/Makefile.in}.
1500 The latter three files are templates that will be adapted to the
1501 system by @command{configure} under the names @file{config.h},
1502 @file{Makefile}, and @file{src/Makefile}.  Let's do this:
1503
1504 @example
1505 ~/amhello % @kbd{./configure}
1506 checking for a BSD-compatible install... /usr/bin/install -c
1507 checking whether build environment is sane... yes
1508 checking for gawk... no
1509 checking for mawk... mawk
1510 checking whether make sets $(MAKE)... yes
1511 checking for gcc... gcc
1512 checking for C compiler default output file name... a.out
1513 checking whether the C compiler works... yes
1514 checking whether we are cross compiling... no
1515 checking for suffix of executables...
1516 checking for suffix of object files... o
1517 checking whether we are using the GNU C compiler... yes
1518 checking whether gcc accepts -g... yes
1519 checking for gcc option to accept ISO C89... none needed
1520 checking for style of include used by make... GNU
1521 checking dependency style of gcc... gcc3
1522 configure: creating ./config.status
1523 config.status: creating Makefile
1524 config.status: creating src/Makefile
1525 config.status: creating config.h
1526 config.status: executing depfiles commands
1527 @end example
1528
1529 @trindex distcheck
1530 @cindex @code{distcheck} example
1531
1532 You can see @file{Makefile}, @file{src/Makefile}, and @file{config.h}
1533 being created at the end after @command{configure} has probed the
1534 system.  It is now possible to run all the targets we wish
1535 (@pxref{Standard Targets}).  For instance:
1536
1537 @example
1538 ~/amhello % @kbd{make}
1539 @dots{}
1540 ~/amhello % @kbd{src/hello}
1541 Hello World!
1542 This is amhello 1.0.
1543 ~/amhello % @kbd{make distcheck}
1544 @dots{}
1545 =============================================
1546 amhello-1.0 archives ready for distribution:
1547 amhello-1.0.tar.gz
1548 =============================================
1549 @end example
1550
1551 Note that running @command{autoreconf} is only needed initially when
1552 the GNU Build System does not exist.  When you later change some
1553 instructions in a @file{Makefile.am} or @file{configure.ac}, the
1554 relevant part of the build system will be regenerated automatically
1555 when you execute @command{make}.
1556
1557 @command{autoreconf} is a script that calls @command{autoconf},
1558 @command{automake}, and a bunch of other commands in the right order.
1559 If you are beginning with these tools, it is not important to figure
1560 out in which order all these tools should be invoked and why.  However,
1561 because Autoconf and Automake have separate manuals, the important
1562 point to understand is that @command{autoconf} is in charge of
1563 creating @file{configure} from @file{configure.ac}, while
1564 @command{automake} is in charge of creating @file{Makefile.in}s from
1565 @file{Makefile.am}s and @file{configure.ac}.  This should at least
1566 direct you to the right manual when seeking answers.
1567
1568
1569 @node amhello's configure.ac Setup Explained
1570 @subsection @code{amhello}'s @file{configure.ac} Setup Explained
1571
1572 @cindex @file{configure.ac}, Hello World
1573
1574 Let us begin with the contents of @file{configure.ac}.
1575
1576 @example
1577 AC_INIT([amhello], [1.0], [@value{PACKAGE_BUGREPORT}])
1578 AM_INIT_AUTOMAKE([-Wall -Werror foreign])
1579 AC_PROG_CC
1580 AC_CONFIG_HEADERS([config.h])
1581 AC_CONFIG_FILES([
1582  Makefile
1583  src/Makefile
1584 ])
1585 AC_OUTPUT
1586 @end example
1587
1588 This file is read by both @command{autoconf} (to create
1589 @file{configure}) and @command{automake} (to create the various
1590 @file{Makefile.in}s).  It contains a series of M4 macros that will be
1591 expanded as shell code to finally form the @file{configure} script.
1592 We will not elaborate on the syntax of this file, because the Autoconf
1593 manual has a whole section about it (@pxref{Writing Autoconf Input, ,
1594 Writing @file{configure.ac}, autoconf, The Autoconf Manual}).
1595
1596 The macros prefixed with @code{AC_} are Autoconf macros, documented
1597 in the Autoconf manual (@pxref{Autoconf Macro Index, , Autoconf Macro
1598 Index, autoconf, The Autoconf Manual}).  The macros that start with
1599 @code{AM_} are Automake macros, documented later in this manual
1600 (@pxref{Macro Index}).
1601
1602 The first two lines of @file{configure.ac} initialize Autoconf and
1603 Automake.  @code{AC_INIT} takes in as parameters the name of the package,
1604 its version number, and a contact address for bug-reports about the
1605 package (this address is output at the end of @code{./configure
1606 --help}, for instance).  When adapting this setup to your own package,
1607 by all means please do not blindly copy Automake's address: use the
1608 mailing list of your package, or your own mail address.
1609
1610 @opindex -Wall
1611 @opindex -Werror
1612 @opindex foreign
1613
1614 The argument to @code{AM_INIT_AUTOMAKE} is a list of options for
1615 @command{automake} (@pxref{Options}).  @option{-Wall} and
1616 @option{-Werror} ask @command{automake} to turn on all warnings and
1617 report them as errors.  We are speaking of @strong{Automake} warnings
1618 here, such as dubious instructions in @file{Makefile.am}.  This has
1619 absolutely nothing to do with how the compiler will be called, even
1620 though it may support options with similar names.  Using @option{-Wall
1621 -Werror} is a safe setting when starting to work on a package: you do
1622 not want to miss any issues.  Later you may decide to relax things a
1623 bit.  The @option{foreign} option tells Automake that this package
1624 will not follow the GNU Standards.  GNU packages should always
1625 distribute additional files such as @file{ChangeLog}, @file{AUTHORS},
1626 etc.  We do not want @command{automake} to complain about these
1627 missing files in our small example.
1628
1629 The @code{AC_PROG_CC} line causes the @command{configure} script to
1630 search for a C compiler and define the variable @code{CC} with its
1631 name.  The @file{src/Makefile.in} file generated by Automake uses the
1632 variable @code{CC} to build @file{hello}, so when @command{configure}
1633 creates @file{src/Makefile} from @file{src/Makefile.in}, it will define
1634 @code{CC} with the value it has found.  If Automake is asked to create
1635 a @file{Makefile.in} that uses @code{CC} but @file{configure.ac} does
1636 not define it, it will suggest you add a call to @code{AC_PROG_CC}.
1637
1638 The @code{AC_CONFIG_HEADERS([config.h])} invocation causes the
1639 @command{configure} script to create a @file{config.h} file gathering
1640 @samp{#define}s defined by other macros in @file{configure.ac}.  In our
1641 case, the @code{AC_INIT} macro already defined a few of them.  Here
1642 is an excerpt of @file{config.h} after @command{configure} has run:
1643
1644 @smallexample
1645 @dots{}
1646 /* Define to the address where bug reports for this package should be sent. */
1647 #define PACKAGE_BUGREPORT "@value{PACKAGE_BUGREPORT}"
1648
1649 /* Define to the full name and version of this package. */
1650 #define PACKAGE_STRING "amhello 1.0"
1651 @dots{}
1652 @end smallexample
1653
1654 As you probably noticed, @file{src/main.c} includes @file{config.h} so
1655 it can use @code{PACKAGE_STRING}.  In a real-world project,
1656 @file{config.h} can grow really big, with one @samp{#define} per
1657 feature probed on the system.
1658
1659 The @code{AC_CONFIG_FILES} macro declares the list of files that
1660 @command{configure} should create from their @file{*.in} templates.
1661 Automake also scans this list to find the @file{Makefile.am} files it must
1662 process.  (This is important to remember: when adding a new directory
1663 to your project, you should add its @file{Makefile} to this list,
1664 otherwise Automake will never process the new @file{Makefile.am} you
1665 wrote in that directory.)
1666
1667 Finally, the @code{AC_OUTPUT} line is a closing command that actually
1668 produces the part of the script in charge of creating the files
1669 registered with @code{AC_CONFIG_HEADERS} and @code{AC_CONFIG_FILES}.
1670
1671 @cindex @command{autoscan}
1672
1673 When starting a new project, we suggest you start with such a simple
1674 @file{configure.ac}, and gradually add the other tests it requires.
1675 The command @command{autoscan} can also suggest a few of the tests
1676 your package may need (@pxref{autoscan Invocation, , Using
1677 @command{autoscan} to Create @file{configure.ac}, autoconf, The
1678 Autoconf Manual}).
1679
1680
1681 @node amhello's Makefile.am Setup Explained
1682 @subsection @code{amhello}'s @file{Makefile.am} Setup Explained
1683
1684 @cindex @file{Makefile.am}, Hello World
1685
1686 We now turn to @file{src/Makefile.am}.  This file contains
1687 Automake instructions to build and install @file{hello}.
1688
1689 @example
1690 bin_PROGRAMS = hello
1691 hello_SOURCES = main.c
1692 @end example
1693
1694 A @file{Makefile.am} has the same syntax as an ordinary
1695 @file{Makefile}.  When @command{automake} processes a
1696 @file{Makefile.am} it copies the entire file into the output
1697 @file{Makefile.in} (that will be later turned into @file{Makefile} by
1698 @command{configure}) but will react to certain variable definitions
1699 by generating some build rules and other variables.
1700 Often @file{Makefile.am}s contain only a list of variable definitions as
1701 above, but they can also contain other variable and rule definitions that
1702 @command{automake} will pass along without interpretation.
1703
1704 Variables that end with @code{_PROGRAMS} are special variables
1705 that list programs that the resulting @file{Makefile} should build.
1706 In Automake speak, this @code{_PROGRAMS} suffix is called a
1707 @dfn{primary}; Automake recognizes other primaries such as
1708 @code{_SCRIPTS}, @code{_DATA}, @code{_LIBRARIES}, etc.@: corresponding
1709 to different types of files.
1710
1711 The @samp{bin} part of the @code{bin_PROGRAMS} tells
1712 @command{automake} that the resulting programs should be installed in
1713 @var{bindir}.  Recall that the GNU Build System uses a set of variables
1714 to denote destination directories and allow users to customize these
1715 locations (@pxref{Standard Directory Variables}).  Any such directory
1716 variable can be put in front of a primary (omitting the @code{dir}
1717 suffix) to tell @command{automake} where to install the listed files.
1718
1719 Programs need to be built from source files, so for each program
1720 @code{@var{prog}} listed in a @code{@w{_PROGRAMS}} variable,
1721 @command{automake} will look for another variable named
1722 @code{@var{prog}_SOURCES} listing its source files.  There may be more
1723 than one source file: they will all be compiled and linked together.
1724
1725 Automake also knows that source files need to be distributed when
1726 creating a tarball (unlike built programs).  So a side-effect of this
1727 @code{hello_SOURCES} declaration is that @file{main.c} will be
1728 part of the tarball created by @code{make dist}.
1729
1730 Finally here are some explanations regarding the top-level
1731 @file{Makefile.am}.
1732
1733 @example
1734 SUBDIRS = src
1735 dist_doc_DATA = README
1736 @end example
1737
1738 @code{SUBDIRS} is a special variable listing all directories that
1739 @command{make} should recurse into before processing the current
1740 directory.  So this line is responsible for @command{make} building
1741 @file{src/hello} even though we run it from the top-level.  This line
1742 also causes @code{make install} to install @file{src/hello} before
1743 installing @file{README} (not that this order matters).
1744
1745 The line @code{dist_doc_DATA = README} causes @file{README} to be
1746 distributed and installed in @var{docdir}.  Files listed with the
1747 @code{_DATA} primary are not automatically part of the tarball built
1748 with @code{make dist}, so we add the @code{dist_} prefix so they get
1749 distributed.  However, for @file{README} it would not have been
1750 necessary: @command{automake} automatically distributes any
1751 @file{README} file it encounters (the list of other files
1752 automatically distributed is presented by @code{automake --help}).
1753 The only important effect of this second line is therefore to install
1754 @file{README} during @code{make install}.
1755
1756 One thing not covered in this example is accessing the installation
1757 directory values (@pxref{Standard Directory Variables}) from your
1758 program code, that is, converting them into defined macros.  For this,
1759 @pxref{Defining Directories,,, autoconf, The Autoconf Manual}.
1760
1761
1762 @node Generalities
1763 @chapter General ideas
1764
1765 The following sections cover a few basic ideas that will help you
1766 understand how Automake works.
1767
1768 @menu
1769 * General Operation::           General operation of Automake
1770 * Strictness::                  Standards conformance checking
1771 * Uniform::                     The Uniform Naming Scheme
1772 * Length Limitations::          Staying below the command line length limit
1773 * Canonicalization::            How derived variables are named
1774 * User Variables::              Variables reserved for the user
1775 * Auxiliary Programs::          Programs automake might require
1776 @end menu
1777
1778
1779 @node General Operation
1780 @section General Operation
1781
1782 Automake works by reading a @file{Makefile.am} and generating a
1783 @file{Makefile.in}.  Certain variables and rules defined in the
1784 @file{Makefile.am} instruct Automake to generate more specialized code;
1785 for instance, a @code{bin_PROGRAMS} variable definition will cause rules
1786 for compiling and linking programs to be generated.
1787
1788 @cindex Non-standard targets
1789 @cindex @code{git-dist}, non-standard example
1790 @trindex git-dist
1791
1792 The variable definitions and rules in the @file{Makefile.am} are
1793 copied mostly verbatim into the generated file, with all variable
1794 definitions preceding all rules.  This allows you to add almost
1795 arbitrary code into the generated @file{Makefile.in}.  For instance,
1796 the Automake distribution includes a non-standard rule for the
1797 @code{git-dist} target, which the Automake maintainer uses to make
1798 distributions from the source control system.
1799
1800 @cindex GNU make extensions
1801
1802 Note that most GNU make extensions are not recognized by Automake.  Using
1803 such extensions in a @file{Makefile.am} will lead to errors or confusing
1804 behavior.
1805
1806 @cindex Append operator
1807 @cmindex +=
1808 A special exception is that the GNU make append operator, @samp{+=}, is
1809 supported.  This operator appends its right hand argument to the variable
1810 specified on the left.  Automake will translate the operator into
1811 an ordinary @samp{=} operator; @samp{+=} will thus work with any make program.
1812
1813 Automake tries to keep comments grouped with any adjoining rules or
1814 variable definitions.
1815
1816 @cindex Limitations of automake parser
1817 @cindex Automake parser, limitations of
1818 @cindex indentation in Makefile.am
1819 Generally, Automake is not particularly smart in the parsing of unusual
1820 Makefile constructs, so you're advised to avoid fancy constructs or
1821 ``creative'' use of whitespaces.
1822 @c Keep this in sync with doc-parsing-buglets-tabs.test.
1823 For example, @key{TAB} characters cannot be used between a target name
1824 and the following ``@code{:}'' character, and variable assignments
1825 shouldn't be indented with @key{TAB} characters.
1826 @c Keep this in sync with doc-parsing-buglets-colneq-subst.test.
1827 Also, using more complex macro in target names can cause trouble:
1828
1829 @example
1830 % @kbd{cat Makefile.am}
1831 $(FOO:=x): bar
1832 % @kbd{automake}
1833 Makefile.am:1: bad characters in variable name `$(FOO'
1834 Makefile.am:1: `:='-style assignments are not portable
1835 @end example
1836
1837 @cindex Make targets, overriding
1838 @cindex Make rules, overriding
1839 @cindex Overriding make rules
1840 @cindex Overriding make targets
1841
1842 A rule defined in @file{Makefile.am} generally overrides any such
1843 rule of a similar name that would be automatically generated by
1844 @command{automake}.  Although this is a supported feature, it is generally
1845 best to avoid making use of it, as sometimes the generated rules are
1846 very particular.
1847
1848 @cindex Variables, overriding
1849 @cindex Overriding make variables
1850
1851 Similarly, a variable defined in @file{Makefile.am} or
1852 @code{AC_SUBST}ed from @file{configure.ac} will override any
1853 definition of the variable that @command{automake} would ordinarily
1854 create.  This feature is more often useful than the ability to
1855 override a rule.  Be warned that many of the variables generated by
1856 @command{automake} are considered to be for internal use only, and their
1857 names might change in future releases.
1858
1859 @cindex Recursive operation of Automake
1860 @cindex Automake, recursive operation
1861 @cindex Example of recursive operation
1862
1863 When examining a variable definition, Automake will recursively examine
1864 variables referenced in the definition.  For example, if Automake is
1865 looking at the content of @code{foo_SOURCES} in this snippet
1866
1867 @c Keep in sync with interp.test.
1868 @example
1869 xs = a.c b.c
1870 foo_SOURCES = c.c $(xs)
1871 @end example
1872
1873 it would use the files @file{a.c}, @file{b.c}, and @file{c.c} as the
1874 contents of @code{foo_SOURCES}.
1875
1876 @cindex @code{##} (special Automake comment)
1877 @cindex Special Automake comment
1878 @cindex Comment, special to Automake
1879
1880 Automake also allows a form of comment that is @emph{not} copied into
1881 the output; all lines beginning with @samp{##} (leading spaces allowed)
1882 are completely ignored by Automake.
1883
1884 It is customary to make the first line of @file{Makefile.am} read:
1885
1886 @cindex Makefile.am, first line
1887 @cindex First line of Makefile.am
1888
1889 @example
1890 ## Process this file with automake to produce Makefile.in
1891 @end example
1892
1893 @c FIXME discuss putting a copyright into Makefile.am here?  I would but
1894 @c I don't know quite what to say.
1895
1896 @c FIXME document customary ordering of Makefile.am here!
1897
1898
1899 @node Strictness
1900 @section Strictness
1901
1902 @cindex Non-GNU packages
1903
1904 While Automake is intended to be used by maintainers of GNU packages, it
1905 does make some effort to accommodate those who wish to use it, but do
1906 not want to use all the GNU conventions.
1907
1908 @cindex Strictness, defined
1909 @cindex Strictness, @option{foreign}
1910 @cindex @option{foreign} strictness
1911 @cindex Strictness, @option{gnu}
1912 @cindex @option{gnu} strictness
1913 @cindex Strictness, @option{gnits}
1914 @cindex @option{gnits} strictness
1915
1916 To this end, Automake supports three levels of @dfn{strictness}---the
1917 strictness indicating how stringently Automake should check standards
1918 conformance.
1919
1920 The valid strictness levels are:
1921
1922 @table @option
1923 @item foreign
1924 Automake will check for only those things that are absolutely
1925 required for proper operations.  For instance, whereas GNU standards
1926 dictate the existence of a @file{NEWS} file, it will not be required in
1927 this mode.  The name comes from the fact that Automake is intended to be
1928 used for GNU programs; these relaxed rules are not the standard mode of
1929 operation.
1930
1931 @item gnu
1932 Automake will check---as much as possible---for compliance to the GNU
1933 standards for packages.  This is the default.
1934
1935 @item gnits
1936 Automake will check for compliance to the as-yet-unwritten @dfn{Gnits
1937 standards}.  These are based on the GNU standards, but are even more
1938 detailed.  Unless you are a Gnits standards contributor, it is
1939 recommended that you avoid this option until such time as the Gnits
1940 standard is actually published (which may never happen).
1941 @end table
1942
1943 @xref{Gnits}, for more information on the precise implications of the
1944 strictness level.
1945
1946 Automake also has a special ``cygnus'' mode that is similar to
1947 strictness but handled differently.  This mode is useful for packages
1948 that are put into a ``Cygnus'' style tree (e.g., the GCC tree).
1949 @xref{Cygnus}, for more information on this mode.
1950
1951
1952 @node Uniform
1953 @section The Uniform Naming Scheme
1954
1955 @cindex Uniform naming scheme
1956
1957 Automake variables generally follow a @dfn{uniform naming scheme} that
1958 makes it easy to decide how programs (and other derived objects) are
1959 built, and how they are installed.  This scheme also supports
1960 @command{configure} time determination of what should be built.
1961
1962 @cindex @code{_PROGRAMS} primary variable
1963 @cindex @code{PROGRAMS} primary variable
1964 @cindex Primary variable, @code{PROGRAMS}
1965 @cindex Primary variable, defined
1966 @vindex _PROGRAMS
1967
1968 At @command{make} time, certain variables are used to determine which
1969 objects are to be built.  The variable names are made of several pieces
1970 that are concatenated together.
1971
1972 The piece that tells @command{automake} what is being built is commonly called
1973 the @dfn{primary}.  For instance, the primary @code{PROGRAMS} holds a
1974 list of programs that are to be compiled and linked.
1975 @vindex PROGRAMS
1976
1977 @cindex @code{pkgdatadir}, defined
1978 @cindex @code{pkgincludedir}, defined
1979 @cindex @code{pkglibdir}, defined
1980 @cindex @code{pkglibexecdir}, defined
1981
1982 @vindex pkgdatadir
1983 @vindex pkgincludedir
1984 @vindex pkglibdir
1985 @vindex pkglibexecdir
1986
1987 @cindex @code{PACKAGE}, directory
1988 A different set of names is used to decide where the built objects
1989 should be installed.  These names are prefixes to the primary, and they
1990 indicate which standard directory should be used as the installation
1991 directory.  The standard directory names are given in the GNU standards
1992 (@pxref{Directory Variables, , , standards, The GNU Coding Standards}).
1993 Automake extends this list with @code{pkgdatadir}, @code{pkgincludedir},
1994 @code{pkglibdir}, and @code{pkglibexecdir}; these are the same as the
1995 non-@samp{pkg} versions, but with @samp{$(PACKAGE)} appended.  For instance,
1996 @code{pkglibdir} is defined as @samp{$(libdir)/$(PACKAGE)}.
1997
1998 @cindex @code{EXTRA_}, prepending
1999 For each primary, there is one additional variable named by prepending
2000 @samp{EXTRA_} to the primary name.  This variable is used to list
2001 objects that may or may not be built, depending on what
2002 @command{configure} decides.  This variable is required because Automake
2003 must statically know the entire list of objects that may be built in
2004 order to generate a @file{Makefile.in} that will work in all cases.
2005
2006 @cindex @code{EXTRA_PROGRAMS}, defined
2007 @cindex Example, @code{EXTRA_PROGRAMS}
2008 @cindex @command{cpio} example
2009
2010 For instance, @command{cpio} decides at configure time which programs
2011 should be built.  Some of the programs are installed in @code{bindir},
2012 and some are installed in @code{sbindir}:
2013
2014 @example
2015 EXTRA_PROGRAMS = mt rmt
2016 bin_PROGRAMS = cpio pax
2017 sbin_PROGRAMS = $(MORE_PROGRAMS)
2018 @end example
2019
2020 Defining a primary without a prefix as a variable, e.g.,
2021 @samp{PROGRAMS}, is an error.
2022
2023 Note that the common @samp{dir} suffix is left off when constructing the
2024 variable names; thus one writes @samp{bin_PROGRAMS} and not
2025 @samp{bindir_PROGRAMS}.
2026
2027 Not every sort of object can be installed in every directory.  Automake
2028 will flag those attempts it finds in error (but see below how to override
2029 the check if you really need to).
2030 Automake will also diagnose obvious misspellings in directory names.
2031
2032 @cindex Extending list of installation directories
2033 @cindex Installation directories, extending list
2034
2035 Sometimes the standard directories---even as augmented by
2036 Automake---are not enough.  In particular it is sometimes useful, for
2037 clarity, to install objects in a subdirectory of some predefined
2038 directory.  To this end, Automake allows you to extend the list of
2039 possible installation directories.  A given prefix (e.g., @samp{zar})
2040 is valid if a variable of the same name with @samp{dir} appended is
2041 defined (e.g., @samp{zardir}).
2042
2043 For instance, the following snippet will install @file{file.xml} into
2044 @samp{$(datadir)/xml}.
2045
2046 @c Keep in sync with primary-prefix-couples-documented-valid.test.
2047 @example
2048 xmldir = $(datadir)/xml
2049 xml_DATA = file.xml
2050 @end example
2051
2052 This feature can also be used to override the sanity checks Automake
2053 performs to diagnose suspicious directory/primary couples (in the
2054 unlikely case these checks are undesirable, and you really know what
2055 you're doing).  For example, Automake would error out on this input:
2056
2057 @c Should be tested in primary-prefix-invalid-couples.test.
2058 @example
2059 # Forbidden directory combinations, automake will error out on this.
2060 pkglib_PROGRAMS = foo
2061 doc_LIBRARIES = libquux.a
2062 @end example
2063
2064 @noindent
2065 but it will succeed with this:
2066
2067 @c Keep in sync with primary-prefix-couples-documented-valid.test.
2068 @example
2069 # Work around forbidden directory combinations.  Do not use this
2070 # without a very good reason!
2071 my_execbindir = $(pkglibdir)
2072 my_doclibdir = $(docdir)
2073 my_execbin_PROGRAMS = foo
2074 my_doclib_LIBRARIES = libquux.a
2075 @end example
2076
2077 The @samp{exec} substring of the @samp{my_execbindir} variable lets
2078 the files be installed at the right time (@pxref{The Two Parts of
2079 Install}).
2080
2081 @cindex @samp{noinst_} primary prefix, definition
2082 @vindex noinst_
2083
2084 The special prefix @samp{noinst_} indicates that the objects in question
2085 should be built but not installed at all.  This is usually used for
2086 objects required to build the rest of your package, for instance static
2087 libraries (@pxref{A Library}), or helper scripts.
2088
2089 @cindex @samp{check_} primary prefix, definition
2090 @vindex check_
2091
2092 The special prefix @samp{check_} indicates that the objects in question
2093 should not be built until the @samp{make check} command is run.  Those
2094 objects are not installed either.
2095
2096 The current primary names are @samp{PROGRAMS}, @samp{LIBRARIES},
2097 @samp{LTLIBRARIES}, @samp{LISP}, @samp{PYTHON}, @samp{JAVA},
2098 @samp{SCRIPTS}, @samp{DATA}, @samp{HEADERS}, @samp{MANS}, and
2099 @samp{TEXINFOS}.
2100 @vindex PROGRAMS
2101 @vindex LIBRARIES
2102 @vindex LTLIBRARIES
2103 @vindex LISP
2104 @vindex PYTHON
2105 @vindex JAVA
2106 @vindex SCRIPTS
2107 @vindex DATA
2108 @vindex HEADERS
2109 @vindex MANS
2110 @vindex TEXINFOS
2111
2112 Some primaries also allow additional prefixes that control other
2113 aspects of @command{automake}'s behavior.  The currently defined prefixes
2114 are @samp{dist_}, @samp{nodist_}, @samp{nobase_}, and @samp{notrans_}.
2115 These prefixes are explained later (@pxref{Program and Library Variables})
2116 (@pxref{Man Pages}).
2117
2118
2119 @node Length Limitations
2120 @section Staying below the command line length limit
2121
2122 @cindex command line length limit
2123 @cindex ARG_MAX
2124
2125 Traditionally, most unix-like systems have a length limitation for the
2126 command line arguments and environment contents when creating new
2127 processes (see for example
2128 @uref{http://www.in-ulm.de/@/~mascheck/@/various/@/argmax/} for an
2129 overview on this issue),
2130 which of course also applies to commands spawned by @command{make}.
2131 POSIX requires this limit to be at least 4096 bytes, and most modern
2132 systems have quite high limits (or are unlimited).
2133
2134 In order to create portable Makefiles that do not trip over these
2135 limits, it is necessary to keep the length of file lists bounded.
2136 Unfortunately, it is not possible to do so fully transparently within
2137 Automake, so your help may be needed.  Typically, you can split long
2138 file lists manually and use different installation directory names for
2139 each list.  For example,
2140
2141 @example
2142 data_DATA = file1 @dots{} file@var{N} file@var{N+1} @dots{} file@var{2N}
2143 @end example
2144
2145 @noindent
2146 may also be written as
2147
2148 @c Keep in sync with primary-prefix-couples-documented-valid.test.
2149 @example
2150 data_DATA = file1 @dots{} file@var{N}
2151 data2dir = $(datadir)
2152 data2_DATA = file@var{N+1} @dots{} file@var{2N}
2153 @end example
2154
2155 @noindent
2156 and will cause Automake to treat the two lists separately during
2157 @code{make install}.  See @ref{The Two Parts of Install} for choosing
2158 directory names that will keep the ordering of the two parts of
2159 installation Note that @code{make dist} may still only work on a host
2160 with a higher length limit in this example.
2161
2162 Automake itself employs a couple of strategies to avoid long command
2163 lines.  For example, when @samp{$@{srcdir@}/} is prepended to file
2164 names, as can happen with above @code{$(data_DATA)} lists, it limits
2165 the amount of arguments passed to external commands.
2166
2167 Unfortunately, some system's @command{make} commands may prepend
2168 @code{VPATH} prefixes like @samp{$@{srcdir@}/} to file names from the
2169 source tree automatically (@pxref{Automatic Rule Rewriting, , Automatic
2170 Rule Rewriting, autoconf, The Autoconf Manual}).  In this case, the user
2171 may have to switch to use GNU Make, or refrain from using VPATH builds,
2172 in order to stay below the length limit.
2173
2174 For libraries and programs built from many sources, convenience archives
2175 may be used as intermediates in order to limit the object list length
2176 (@pxref{Libtool Convenience Libraries}).
2177
2178
2179 @node Canonicalization
2180 @section How derived variables are named
2181
2182 @cindex canonicalizing Automake variables
2183
2184 Sometimes a Makefile variable name is derived from some text the
2185 maintainer supplies.  For instance, a program name listed in
2186 @samp{_PROGRAMS} is rewritten into the name of a @samp{_SOURCES}
2187 variable.  In cases like this, Automake canonicalizes the text, so that
2188 program names and the like do not have to follow Makefile variable naming
2189 rules.  All characters in the name except for letters, numbers, the
2190 strudel (@@), and the underscore are turned into underscores when making
2191 variable references.
2192
2193 For example, if your program is named @file{sniff-glue}, the derived
2194 variable name would be @samp{sniff_glue_SOURCES}, not
2195 @samp{sniff-glue_SOURCES}.  Similarly the sources for a library named
2196 @file{libmumble++.a} should be listed in the
2197 @samp{libmumble___a_SOURCES} variable.
2198
2199 The strudel is an addition, to make the use of Autoconf substitutions in
2200 variable names less obfuscating.
2201
2202
2203 @node User Variables
2204 @section Variables reserved for the user
2205
2206 @cindex variables, reserved for the user
2207 @cindex user variables
2208
2209 Some @file{Makefile} variables are reserved by the GNU Coding Standards
2210 for the use of the ``user''---the person building the package.  For
2211 instance, @code{CFLAGS} is one such variable.
2212
2213 Sometimes package developers are tempted to set user variables such as
2214 @code{CFLAGS} because it appears to make their job easier.  However,
2215 the package itself should never set a user variable, particularly not
2216 to include switches that are required for proper compilation of the
2217 package.  Since these variables are documented as being for the
2218 package builder, that person rightfully expects to be able to override
2219 any of these variables at build time.
2220
2221 To get around this problem, Automake introduces an automake-specific
2222 shadow variable for each user flag variable.  (Shadow variables are
2223 not introduced for variables like @code{CC}, where they would make no
2224 sense.)  The shadow variable is named by prepending @samp{AM_} to the
2225 user variable's name.  For instance, the shadow variable for
2226 @code{YFLAGS} is @code{AM_YFLAGS}.  The package maintainer---that is,
2227 the author(s) of the @file{Makefile.am} and @file{configure.ac}
2228 files---may adjust these shadow variables however necessary.
2229
2230 @xref{Flag Variables Ordering}, for more discussion about these
2231 variables and how they interact with per-target variables.
2232
2233 @node Auxiliary Programs
2234 @section Programs automake might require
2235
2236 @cindex Programs, auxiliary
2237 @cindex Auxiliary programs
2238
2239 Automake sometimes requires helper programs so that the generated
2240 @file{Makefile} can do its work properly.  There are a fairly large
2241 number of them, and we list them here.
2242
2243 Although all of these files are distributed and installed with
2244 Automake, a couple of them are maintained separately.  The Automake
2245 copies are updated before each release, but we mention the original
2246 source in case you need more recent versions.
2247
2248 @table @code
2249 @item ansi2knr.c
2250 @itemx ansi2knr.1
2251 These two files are used for de-ANSI-fication support (they are
2252 deprecated now, and @emph{will be removed} in the next major Automake
2253 release; @pxref{ANSI}).
2254
2255 @item compile
2256 This is a wrapper for compilers that do not accept options @option{-c}
2257 and @option{-o} at the same time.  It is only used when absolutely
2258 required.  Such compilers are rare.
2259
2260 @item config.guess
2261 @itemx config.sub
2262 These two programs compute the canonical triplets for the given build,
2263 host, or target architecture.  These programs are updated regularly to
2264 support new architectures and fix probes broken by changes in new
2265 kernel versions.  Each new release of Automake comes with up-to-date
2266 copies of these programs.  If your copy of Automake is getting old,
2267 you are encouraged to fetch the latest versions of these files from
2268 @url{http://savannah.gnu.org/git/?group=config} before making a
2269 release.
2270
2271 @item config-ml.in
2272 This file is not a program, it is a @file{configure} fragment used for
2273 multilib support (@pxref{Multilibs}).  Since the Automake multilib
2274 support has been @emph{deprecated} and targeted for removal, this
2275 file is going to be @emph{removed from the Automake core} in the next
2276 major release.  The master copy of this file is maintained in the GCC
2277 tree at @url{http://gcc.gnu.org/svn.html}.
2278
2279 @item depcomp
2280 This program understands how to run a compiler so that it will
2281 generate not only the desired output but also dependency information
2282 that is then used by the automatic dependency tracking feature
2283 (@pxref{Dependencies}).
2284
2285 @item elisp-comp
2286 This program is used to byte-compile Emacs Lisp code.
2287
2288 @item install-sh
2289 This is a replacement for the @command{install} program that works on
2290 platforms where @command{install} is unavailable or unusable.
2291
2292 @item mdate-sh
2293 This script is used to generate a @file{version.texi} file.  It examines
2294 a file and prints some date information about it.
2295
2296 @item missing
2297 This wraps a number of programs that are typically only required by
2298 maintainers.  If the program in question doesn't exist,
2299 @command{missing} prints an informative warning and attempts to fix
2300 things so that the build can continue.
2301
2302 @item mkinstalldirs
2303 This script used to be a wrapper around @samp{mkdir -p}, which is not
2304 portable.  Now we prefer to use @samp{install-sh -d} when @command{configure}
2305 finds that @samp{mkdir -p} does not work, this makes one less script to
2306 distribute.
2307
2308 For backward compatibility @file{mkinstalldirs} is still used and
2309 distributed when @command{automake} finds it in a package.  But it is no
2310 longer installed automatically, and it should be safe to remove it.
2311
2312 @item py-compile
2313 This is used to byte-compile Python scripts.
2314
2315 @item symlink-tree
2316 This program duplicates a tree of directories, using symbolic links
2317 instead of copying files.  Such an operation is performed when building
2318 multilibs (@pxref{Multilibs}).  Since the Automake multilib support has
2319 been @emph{deprecated} and targeted for removal, this file is going to
2320 be @emph{removed from the Automake core} in the next major release.
2321 The master copy of this file is maintained in the GCC tree at
2322 @url{http://gcc.gnu.org/svn.html}.
2323
2324 @item texinfo.tex
2325 Not a program, this file is required for @samp{make dvi}, @samp{make
2326 ps} and @samp{make pdf} to work when Texinfo sources are in the
2327 package.  The latest version can be downloaded from
2328 @url{http://www.gnu.org/software/texinfo/}.
2329
2330 @item ylwrap
2331 This program wraps @command{lex} and @command{yacc} to rename their
2332 output files.  It also ensures that, for instance, multiple
2333 @command{yacc} instances can be invoked in a single directory in
2334 parallel.
2335
2336 @end table
2337
2338
2339 @node Examples
2340 @chapter Some example packages
2341
2342 This section contains two small examples.
2343
2344 The first example (@pxref{Complete}) assumes you have an existing
2345 project already using Autoconf, with handcrafted @file{Makefile}s, and
2346 that you want to convert it to using Automake.  If you are discovering
2347 both tools, it is probably better that you look at the Hello World
2348 example presented earlier (@pxref{Hello World}).
2349
2350 The second example (@pxref{true}) shows how two programs can be built
2351 from the same file, using different compilation parameters.  It
2352 contains some technical digressions that are probably best skipped on
2353 first read.
2354
2355 @menu
2356 * Complete::                    A simple example, start to finish
2357 * true::                        Building true and false
2358 @end menu
2359
2360
2361 @node Complete
2362 @section A simple example, start to finish
2363
2364 @cindex Complete example
2365
2366 Let's suppose you just finished writing @code{zardoz}, a program to make
2367 your head float from vortex to vortex.  You've been using Autoconf to
2368 provide a portability framework, but your @file{Makefile.in}s have been
2369 ad-hoc.  You want to make them bulletproof, so you turn to Automake.
2370
2371 @cindex @code{AM_INIT_AUTOMAKE}, example use
2372
2373 The first step is to update your @file{configure.ac} to include the
2374 commands that @command{automake} needs.  The way to do this is to add an
2375 @code{AM_INIT_AUTOMAKE} call just after @code{AC_INIT}:
2376
2377 @example
2378 AC_INIT([zardoz], [1.0])
2379 AM_INIT_AUTOMAKE
2380 @dots{}
2381 @end example
2382
2383 Since your program doesn't have any complicating factors (e.g., it
2384 doesn't use @code{gettext}, it doesn't want to build a shared library),
2385 you're done with this part.  That was easy!
2386
2387 @cindex @command{aclocal} program, introduction
2388 @cindex @file{aclocal.m4}, preexisting
2389 @cindex @file{acinclude.m4}, defined
2390
2391 Now you must regenerate @file{configure}.  But to do that, you'll need
2392 to tell @command{autoconf} how to find the new macro you've used.  The
2393 easiest way to do this is to use the @command{aclocal} program to
2394 generate your @file{aclocal.m4} for you.  But wait@dots{} maybe you
2395 already have an @file{aclocal.m4}, because you had to write some hairy
2396 macros for your program.  The @command{aclocal} program lets you put
2397 your own macros into @file{acinclude.m4}, so simply rename and then
2398 run:
2399
2400 @example
2401 mv aclocal.m4 acinclude.m4
2402 aclocal
2403 autoconf
2404 @end example
2405
2406 @cindex @command{zardoz} example
2407
2408 Now it is time to write your @file{Makefile.am} for @code{zardoz}.
2409 Since @code{zardoz} is a user program, you want to install it where the
2410 rest of the user programs go: @code{bindir}.  Additionally,
2411 @code{zardoz} has some Texinfo documentation.  Your @file{configure.ac}
2412 script uses @code{AC_REPLACE_FUNCS}, so you need to link against
2413 @samp{$(LIBOBJS)}.  So here's what you'd write:
2414
2415 @example
2416 bin_PROGRAMS = zardoz
2417 zardoz_SOURCES = main.c head.c float.c vortex9.c gun.c
2418 zardoz_LDADD = $(LIBOBJS)
2419
2420 info_TEXINFOS = zardoz.texi
2421 @end example
2422
2423 Now you can run @samp{automake --add-missing} to generate your
2424 @file{Makefile.in} and grab any auxiliary files you might need, and
2425 you're done!
2426
2427
2428 @node true
2429 @section Building true and false
2430
2431 @cindex Example, @command{false} and @command{true}
2432 @cindex @command{false} Example
2433 @cindex @command{true} Example
2434
2435 Here is another, trickier example.  It shows how to generate two
2436 programs (@code{true} and @code{false}) from the same source file
2437 (@file{true.c}).  The difficult part is that each compilation of
2438 @file{true.c} requires different @code{cpp} flags.
2439
2440 @example
2441 bin_PROGRAMS = true false
2442 false_SOURCES =
2443 false_LDADD = false.o
2444
2445 true.o: true.c
2446         $(COMPILE) -DEXIT_CODE=0 -c true.c
2447
2448 false.o: true.c
2449         $(COMPILE) -DEXIT_CODE=1 -o false.o -c true.c
2450 @end example
2451
2452 Note that there is no @code{true_SOURCES} definition.  Automake will
2453 implicitly assume that there is a source file named @file{true.c}
2454 (@pxref{Default _SOURCES}), and
2455 define rules to compile @file{true.o} and link @file{true}.  The
2456 @samp{true.o: true.c} rule supplied by the above @file{Makefile.am},
2457 will override the Automake generated rule to build @file{true.o}.
2458
2459 @code{false_SOURCES} is defined to be empty---that way no implicit value
2460 is substituted.  Because we have not listed the source of
2461 @file{false}, we have to tell Automake how to link the program.  This is
2462 the purpose of the @code{false_LDADD} line.  A @code{false_DEPENDENCIES}
2463 variable, holding the dependencies of the @file{false} target will be
2464 automatically generated by Automake from the content of
2465 @code{false_LDADD}.
2466
2467 The above rules won't work if your compiler doesn't accept both
2468 @option{-c} and @option{-o}.  The simplest fix for this is to introduce a
2469 bogus dependency (to avoid problems with a parallel @command{make}):
2470
2471 @example
2472 true.o: true.c false.o
2473         $(COMPILE) -DEXIT_CODE=0 -c true.c
2474
2475 false.o: true.c
2476         $(COMPILE) -DEXIT_CODE=1 -c true.c && mv true.o false.o
2477 @end example
2478
2479 As it turns out, there is also a much easier way to do this same task.
2480 Some of the above technique is useful enough that we've kept the
2481 example in the manual.  However if you were to build @code{true} and
2482 @code{false} in real life, you would probably use per-program
2483 compilation flags, like so:
2484
2485 @c Keep in sync with specflg7.test and specflg8.test.
2486 @example
2487 bin_PROGRAMS = false true
2488
2489 false_SOURCES = true.c
2490 false_CPPFLAGS = -DEXIT_CODE=1
2491
2492 true_SOURCES = true.c
2493 true_CPPFLAGS = -DEXIT_CODE=0
2494 @end example
2495
2496 In this case Automake will cause @file{true.c} to be compiled twice,
2497 with different flags.  In this instance, the names of the object files
2498 would be chosen by automake; they would be @file{false-true.o} and
2499 @file{true-true.o}. (The name of the object files rarely matters.)
2500
2501 @node automake Invocation
2502 @chapter Creating a @file{Makefile.in}
2503 @c This node used to be named "Invoking automake".  This @anchor
2504 @c allows old links to still work.
2505 @anchor{Invoking automake}
2506
2507 @cindex Multiple @file{configure.ac} files
2508 @cindex Invoking @command{automake}
2509 @cindex @command{automake}, invoking
2510 @cindex Invocation of @command{automake}
2511 @cindex @command{automake}, invocation
2512
2513 To create all the @file{Makefile.in}s for a package, run the
2514 @command{automake} program in the top level directory, with no
2515 arguments.  @command{automake} will automatically find each
2516 appropriate @file{Makefile.am} (by scanning @file{configure.ac};
2517 @pxref{configure}) and generate the corresponding @file{Makefile.in}.
2518 Note that @command{automake} has a rather simplistic view of what
2519 constitutes a package; it assumes that a package has only one
2520 @file{configure.ac}, at the top.  If your package has multiple
2521 @file{configure.ac}s, then you must run @command{automake} in each
2522 directory holding a @file{configure.ac}.  (Alternatively, you may rely
2523 on Autoconf's @command{autoreconf}, which is able to recurse your
2524 package tree and run @command{automake} where appropriate.)
2525
2526 You can optionally give @command{automake} an argument; @file{.am} is
2527 appended to the argument and the result is used as the name of the
2528 input file.  This feature is generally only used to automatically
2529 rebuild an out-of-date @file{Makefile.in}.  Note that
2530 @command{automake} must always be run from the topmost directory of a
2531 project, even if being used to regenerate the @file{Makefile.in} in
2532 some subdirectory.  This is necessary because @command{automake} must
2533 scan @file{configure.ac}, and because @command{automake} uses the
2534 knowledge that a @file{Makefile.in} is in a subdirectory to change its
2535 behavior in some cases.
2536
2537 @vindex AUTOCONF
2538 Automake will run @command{autoconf} to scan @file{configure.ac} and
2539 its dependencies (i.e., @file{aclocal.m4} and any included file),
2540 therefore @command{autoconf} must be in your @env{PATH}.  If there is
2541 an @env{AUTOCONF} variable in your environment it will be used
2542 instead of @command{autoconf}, this allows you to select a particular
2543 version of Autoconf.  By the way, don't misunderstand this paragraph:
2544 @command{automake} runs @command{autoconf} to @strong{scan} your
2545 @file{configure.ac}, this won't build @file{configure} and you still
2546 have to run @command{autoconf} yourself for this purpose.
2547
2548 @cindex @command{automake} options
2549 @cindex Options, @command{automake}
2550 @cindex Strictness, command line
2551
2552 @command{automake} accepts the following options:
2553
2554 @cindex Extra files distributed with Automake
2555 @cindex Files distributed with Automake
2556 @cindex @file{config.guess}
2557
2558 @table @code
2559 @item -a
2560 @itemx --add-missing
2561 @opindex -a
2562 @opindex --add-missing
2563 Automake requires certain common files to exist in certain situations;
2564 for instance, @file{config.guess} is required if @file{configure.ac} invokes
2565 @code{AC_CANONICAL_HOST}.  Automake is distributed with several of these
2566 files (@pxref{Auxiliary Programs}); this option will cause the missing
2567 ones to be automatically added to the package, whenever possible.  In
2568 general if Automake tells you a file is missing, try using this option.
2569 By default Automake tries to make a symbolic link pointing to its own
2570 copy of the missing file; this can be changed with @option{--copy}.
2571
2572 Many of the potentially-missing files are common scripts whose
2573 location may be specified via the @code{AC_CONFIG_AUX_DIR} macro.
2574 Therefore, @code{AC_CONFIG_AUX_DIR}'s setting affects whether a
2575 file is considered missing, and where the missing file is added
2576 (@pxref{Optional}).
2577
2578 In some strictness modes, additional files are installed, see @ref{Gnits}
2579 for more information.
2580
2581 @item --libdir=@var{dir}
2582 @opindex --libdir
2583 Look for Automake data files in directory @var{dir} instead of in the
2584 installation directory.  This is typically used for debugging.
2585
2586 @item -c
2587 @opindex -c
2588 @itemx --copy
2589 @opindex --copy
2590 When used with @option{--add-missing}, causes installed files to be
2591 copied.  The default is to make a symbolic link.
2592
2593 @item --cygnus
2594 @opindex --cygnus
2595 Causes the generated @file{Makefile.in}s to follow Cygnus rules, instead
2596 of GNU or Gnits rules.  For more information, see @ref{Cygnus}.
2597
2598 @item -f
2599 @opindex -f
2600 @itemx --force-missing
2601 @opindex --force-missing
2602 When used with @option{--add-missing}, causes standard files to be reinstalled
2603 even if they already exist in the source tree.  This involves removing
2604 the file from the source tree before creating the new symlink (or, with
2605 @option{--copy}, copying the new file).
2606
2607 @item --foreign
2608 @opindex --foreign
2609 Set the global strictness to @option{foreign}.  For more information, see
2610 @ref{Strictness}.
2611
2612 @item --gnits
2613 @opindex --gnits
2614 Set the global strictness to @option{gnits}.  For more information, see
2615 @ref{Gnits}.
2616
2617 @item --gnu
2618 @opindex --gnu
2619 Set the global strictness to @option{gnu}.  For more information, see
2620 @ref{Gnits}.  This is the default strictness.
2621
2622 @item --help
2623 @opindex --help
2624 Print a summary of the command line options and exit.
2625
2626 @item -i
2627 @itemx --ignore-deps
2628 @opindex -i
2629 This disables the dependency tracking feature in generated
2630 @file{Makefile}s; see @ref{Dependencies}.
2631
2632 @item --include-deps
2633 @opindex --include-deps
2634 This enables the dependency tracking feature.  This feature is enabled
2635 by default.  This option is provided for historical reasons only and
2636 probably should not be used.
2637
2638 @item --no-force
2639 @opindex --no-force
2640 Ordinarily @command{automake} creates all @file{Makefile.in}s mentioned in
2641 @file{configure.ac}.  This option causes it to only update those
2642 @file{Makefile.in}s that are out of date with respect to one of their
2643 dependents.
2644
2645 @item -o @var{dir}
2646 @itemx --output-dir=@var{dir}
2647 @opindex -o
2648 @opindex --output-dir
2649 Put the generated @file{Makefile.in} in the directory @var{dir}.
2650 Ordinarily each @file{Makefile.in} is created in the directory of the
2651 corresponding @file{Makefile.am}.  This option is deprecated and will be
2652 removed in a future release.
2653
2654 @item -v
2655 @itemx --verbose
2656 @opindex -v
2657 @opindex --verbose
2658 Cause Automake to print information about which files are being read or
2659 created.
2660
2661 @item --version
2662 @opindex --version
2663 Print the version number of Automake and exit.
2664
2665 @item -W CATEGORY
2666 @itemx --warnings=@var{category}
2667 @opindex -W
2668 @opindex --warnings
2669 Output warnings falling in @var{category}.  @var{category} can be
2670 one of:
2671 @table @code
2672 @item gnu
2673 warnings related to the GNU Coding Standards
2674 (@pxref{Top, , , standards, The GNU Coding Standards}).
2675 @item obsolete
2676 obsolete features or constructions
2677 @item override
2678 user redefinitions of Automake rules or variables
2679 @item portability
2680 portability issues (e.g., use of @command{make} features that are
2681 known to be not portable)
2682 @item syntax
2683 weird syntax, unused variables, typos
2684 @item unsupported
2685 unsupported or incomplete features
2686 @item all
2687 all the warnings
2688 @item none
2689 turn off all the warnings
2690 @item error
2691 treat warnings as errors
2692 @end table
2693
2694 A category can be turned off by prefixing its name with @samp{no-}.  For
2695 instance, @option{-Wno-syntax} will hide the warnings about unused
2696 variables.
2697
2698 The categories output by default are @samp{syntax} and
2699 @samp{unsupported}.  Additionally, @samp{gnu} and @samp{portability}
2700 are enabled in @option{--gnu} and @option{--gnits} strictness.
2701 On the other hand, the @option{silent-rules} options (@pxref{Options})
2702 turns off portability warnings about recursive variable expansions.
2703
2704 @vindex WARNINGS
2705 The environment variable @env{WARNINGS} can contain a comma separated
2706 list of categories to enable.  It will be taken into account before the
2707 command-line switches, this way @option{-Wnone} will also ignore any
2708 warning category enabled by @env{WARNINGS}.  This variable is also used
2709 by other tools like @command{autoconf}; unknown categories are ignored
2710 for this reason.
2711
2712 @end table
2713
2714 @vindex AUTOMAKE_JOBS
2715 If the environment variable @env{AUTOMAKE_JOBS} contains a positive
2716 number, it is taken as the maximum number of Perl threads to use in
2717 @command{automake} for generating multiple @file{Makefile.in} files
2718 concurrently.  This is an experimental feature.
2719
2720
2721 @node configure
2722 @chapter Scanning @file{configure.ac}, using @command{aclocal}
2723
2724 @cindex @file{configure.ac}, scanning
2725 @cindex Scanning @file{configure.ac}
2726 @cindex Using @command{aclocal}
2727 @cindex @command{aclocal}, using
2728
2729 Automake scans the package's @file{configure.ac} to determine certain
2730 information about the package.  Some @command{autoconf} macros are required
2731 and some variables must be defined in @file{configure.ac}.  Automake
2732 will also use information from @file{configure.ac} to further tailor its
2733 output.
2734
2735 Automake also supplies some Autoconf macros to make the maintenance
2736 easier.  These macros can automatically be put into your
2737 @file{aclocal.m4} using the @command{aclocal} program.
2738
2739 @menu
2740 * Requirements::                Configuration requirements
2741 * Optional::                    Other things Automake recognizes
2742 * aclocal Invocation::          Auto-generating aclocal.m4
2743 * Macros::                      Autoconf macros supplied with Automake
2744 @end menu
2745
2746
2747 @node Requirements
2748 @section Configuration requirements
2749
2750 @cindex Automake requirements
2751 @cindex Requirements of Automake
2752
2753 @acindex AM_INIT_AUTOMAKE
2754 The one real requirement of Automake is that your @file{configure.ac}
2755 call @code{AM_INIT_AUTOMAKE}.  This macro does several things that are
2756 required for proper Automake operation (@pxref{Macros}).
2757
2758 Here are the other macros that Automake requires but which are not run
2759 by @code{AM_INIT_AUTOMAKE}:
2760
2761 @table @code
2762 @item AC_CONFIG_FILES
2763 @itemx AC_OUTPUT
2764 @acindex AC_CONFIG_FILES
2765 @acindex AC_OUTPUT
2766 These two macros are usually invoked as follows near the end of
2767 @file{configure.ac}.
2768
2769 @example
2770 @dots{}
2771 AC_CONFIG_FILES([
2772   Makefile
2773   doc/Makefile
2774   src/Makefile
2775   src/lib/Makefile
2776   @dots{}
2777 ])
2778 AC_OUTPUT
2779 @end example
2780
2781 Automake uses these to determine which files to create (@pxref{Output, ,
2782 Creating Output Files, autoconf, The Autoconf Manual}).  A listed file
2783 is considered to be an Automake generated @file{Makefile} if there
2784 exists a file with the same name and the @file{.am} extension appended.
2785 Typically, @samp{AC_CONFIG_FILES([foo/Makefile])} will cause Automake to
2786 generate @file{foo/Makefile.in} if @file{foo/Makefile.am} exists.
2787
2788 When using @code{AC_CONFIG_FILES} with multiple input files, as in
2789
2790 @example
2791 AC_CONFIG_FILES([Makefile:top.in:Makefile.in:bot.in])
2792 @end example
2793
2794 @noindent
2795 @command{automake} will generate the first @file{.in} input file for
2796 which a @file{.am} file exists.  If no such file exists the output
2797 file is not considered to be generated by Automake.
2798
2799 Files created by @code{AC_CONFIG_FILES}, be they Automake
2800 @file{Makefile}s or not, are all removed by @samp{make distclean}.
2801 Their inputs are automatically distributed, unless they
2802 are the output of prior @code{AC_CONFIG_FILES} commands.
2803 Finally, rebuild rules are generated in the Automake @file{Makefile}
2804 existing in the subdirectory of the output file, if there is one, or
2805 in the top-level @file{Makefile} otherwise.
2806
2807 The above machinery (cleaning, distributing, and rebuilding) works
2808 fine if the @code{AC_CONFIG_FILES} specifications contain only
2809 literals.  If part of the specification uses shell variables,
2810 @command{automake} will not be able to fulfill this setup, and you will
2811 have to complete the missing bits by hand.  For instance, on
2812
2813 @c Keep in sync with output11.test.
2814 @example
2815 file=input
2816 @dots{}
2817 AC_CONFIG_FILES([output:$file],, [file=$file])
2818 @end example
2819
2820 @noindent
2821 @command{automake} will output rules to clean @file{output}, and
2822 rebuild it.  However the rebuild rule will not depend on @file{input},
2823 and this file will not be distributed either.  (You must add
2824 @samp{EXTRA_DIST = input} to your @file{Makefile.am} if @file{input} is a
2825 source file.)
2826
2827 Similarly
2828
2829 @c Keep in sync with output11.test.
2830 @example
2831 file=output
2832 file2=out:in
2833 @dots{}
2834 AC_CONFIG_FILES([$file:input],, [file=$file])
2835 AC_CONFIG_FILES([$file2],, [file2=$file2])
2836 @end example
2837
2838 @noindent
2839 will only cause @file{input} to be distributed.  No file will be
2840 cleaned automatically (add @samp{DISTCLEANFILES = output out}
2841 yourself), and no rebuild rule will be output.
2842
2843 Obviously @command{automake} cannot guess what value @samp{$file} is
2844 going to hold later when @file{configure} is run, and it cannot use
2845 the shell variable @samp{$file} in a @file{Makefile}.  However, if you
2846 make reference to @samp{$file} as @samp{$@{file@}} (i.e., in a way
2847 that is compatible with @command{make}'s syntax) and furthermore use
2848 @code{AC_SUBST} to ensure that @samp{$@{file@}} is meaningful in a
2849 @file{Makefile}, then @command{automake} will be able to use
2850 @samp{$@{file@}} to generate all these rules.  For instance, here is
2851 how the Automake package itself generates versioned scripts for its
2852 test suite:
2853
2854 @example
2855 AC_SUBST([APIVERSION], @dots{})
2856 @dots{}
2857 AC_CONFIG_FILES(
2858   [tests/aclocal-$@{APIVERSION@}:tests/aclocal.in],
2859   [chmod +x tests/aclocal-$@{APIVERSION@}],
2860   [APIVERSION=$APIVERSION])
2861 AC_CONFIG_FILES(
2862   [tests/automake-$@{APIVERSION@}:tests/automake.in],
2863   [chmod +x tests/automake-$@{APIVERSION@}])
2864 @end example
2865
2866 @noindent
2867 Here cleaning, distributing, and rebuilding are done automatically,
2868 because @samp{$@{APIVERSION@}} is known at @command{make}-time.
2869
2870 Note that you should not use shell variables to declare
2871 @file{Makefile} files for which @command{automake} must create
2872 @file{Makefile.in}.  Even @code{AC_SUBST} does not help here, because
2873 @command{automake} needs to know the file name when it runs in order
2874 to check whether @file{Makefile.am} exists.  (In the very hairy case
2875 that your setup requires such use of variables, you will have to tell
2876 Automake which @file{Makefile.in}s to generate on the command-line.)
2877
2878 It is possible to let @command{automake} emit conditional rules for
2879 @code{AC_CONFIG_FILES} with the help of @code{AM_COND_IF}
2880 (@pxref{Optional}).
2881
2882 To summarize:
2883 @itemize @bullet
2884 @item
2885 Use literals for @file{Makefile}s, and for other files whenever possible.
2886 @item
2887 Use @samp{$file} (or @samp{$@{file@}} without @samp{AC_SUBST([file])})
2888 for files that @command{automake} should ignore.
2889 @item
2890 Use @samp{$@{file@}} and @samp{AC_SUBST([file])} for files
2891 that @command{automake} should not ignore.
2892 @end itemize
2893
2894 @end table
2895
2896
2897 @node Optional
2898 @section Other things Automake recognizes
2899
2900 @cindex Macros Automake recognizes
2901 @cindex Recognized macros by Automake
2902
2903 Every time Automake is run it calls Autoconf to trace
2904 @file{configure.ac}.  This way it can recognize the use of certain
2905 macros and tailor the generated @file{Makefile.in} appropriately.
2906 Currently recognized macros and their effects are:
2907
2908 @ftable @code
2909 @item AC_CANONICAL_BUILD
2910 @itemx AC_CANONICAL_HOST
2911 @itemx AC_CANONICAL_TARGET
2912 @vindex build_triplet
2913 @vindex host_triplet
2914 @vindex target_triplet
2915 Automake will ensure that @file{config.guess} and @file{config.sub}
2916 exist.  Also, the @file{Makefile} variables @code{build_triplet},
2917 @code{host_triplet} and @code{target_triplet} are introduced.  See
2918 @ref{Canonicalizing, , Getting the Canonical System Type, autoconf,
2919 The Autoconf Manual}.
2920
2921 @item AC_CONFIG_AUX_DIR
2922 Automake will look for various helper scripts, such as
2923 @file{install-sh}, in the directory named in this macro invocation.
2924 @c This list is accurate relative to version 1.8
2925 (The full list of scripts is: @file{config.guess}, @file{config.sub},
2926 @file{depcomp}, @file{elisp-comp}, @file{compile}, @file{install-sh},
2927 @file{ltmain.sh}, @file{mdate-sh}, @file{missing}, @file{mkinstalldirs},
2928 @file{py-compile}, @file{texinfo.tex}, and @file{ylwrap}.)  Not all
2929 scripts are always searched for; some scripts will only be sought if the
2930 generated @file{Makefile.in} requires them.
2931
2932 If @code{AC_CONFIG_AUX_DIR} is not given, the scripts are looked for in
2933 their standard locations.  For @file{mdate-sh},
2934 @file{texinfo.tex}, and @file{ylwrap}, the standard location is the
2935 source directory corresponding to the current @file{Makefile.am}.  For
2936 the rest, the standard location is the first one of @file{.}, @file{..},
2937 or @file{../..} (relative to the top source directory) that provides any
2938 one of the helper scripts.  @xref{Input, , Finding `configure' Input,
2939 autoconf, The Autoconf Manual}.
2940
2941 Required files from @code{AC_CONFIG_AUX_DIR} are automatically
2942 distributed, even if there is no @file{Makefile.am} in this directory.
2943
2944 @item AC_CONFIG_LIBOBJ_DIR
2945 Automake will require the sources file declared with
2946 @code{AC_LIBSOURCE} (see below) in the directory specified by this
2947 macro.
2948
2949 @item AC_CONFIG_HEADERS
2950 Automake will generate rules to rebuild these headers.  Older versions
2951 of Automake required the use of @code{AM_CONFIG_HEADER}
2952 (@pxref{Macros}); this is no longer the case.
2953
2954 As with @code{AC_CONFIG_FILES} (@pxref{Requirements}), parts of the
2955 specification using shell variables will be ignored as far as
2956 cleaning, distributing, and rebuilding is concerned.
2957
2958 @item AC_CONFIG_LINKS
2959 Automake will generate rules to remove @file{configure} generated
2960 links on @samp{make distclean} and to distribute named source files as
2961 part of @samp{make dist}.
2962
2963 As for @code{AC_CONFIG_FILES} (@pxref{Requirements}), parts of the
2964 specification using shell variables will be ignored as far as cleaning
2965 and distributing is concerned.  (There are no rebuild rules for links.)
2966
2967 @item AC_LIBOBJ
2968 @itemx AC_LIBSOURCE
2969 @itemx AC_LIBSOURCES
2970 @vindex LIBOBJS
2971 Automake will automatically distribute any file listed in
2972 @code{AC_LIBSOURCE} or @code{AC_LIBSOURCES}.
2973
2974 Note that the @code{AC_LIBOBJ} macro calls @code{AC_LIBSOURCE}.  So if
2975 an Autoconf macro is documented to call @samp{AC_LIBOBJ([file])}, then
2976 @file{file.c} will be distributed automatically by Automake.  This
2977 encompasses many macros like @code{AC_FUNC_ALLOCA},
2978 @code{AC_FUNC_MEMCMP}, @code{AC_REPLACE_FUNCS}, and others.
2979
2980 By the way, direct assignments to @code{LIBOBJS} are no longer
2981 supported.  You should always use @code{AC_LIBOBJ} for this purpose.
2982 @xref{AC_LIBOBJ vs LIBOBJS, , @code{AC_LIBOBJ} vs.@: @code{LIBOBJS},
2983 autoconf, The Autoconf Manual}.
2984
2985 @item AC_PROG_RANLIB
2986 This is required if any libraries are built in the package.
2987 @xref{Particular Programs, , Particular Program Checks, autoconf, The
2988 Autoconf Manual}.
2989
2990 @item AC_PROG_CXX
2991 This is required if any C++ source is included.  @xref{Particular
2992 Programs, , Particular Program Checks, autoconf, The Autoconf Manual}.
2993
2994 @item AC_PROG_OBJC
2995 This is required if any Objective C source is included.  @xref{Particular
2996 Programs, , Particular Program Checks, autoconf, The Autoconf Manual}.
2997
2998 @item AC_PROG_F77
2999 This is required if any Fortran 77 source is included.  This macro is
3000 distributed with Autoconf version 2.13 and later.  @xref{Particular
3001 Programs, , Particular Program Checks, autoconf, The Autoconf Manual}.
3002
3003 @item AC_F77_LIBRARY_LDFLAGS
3004 This is required for programs and shared libraries that are a mixture of
3005 languages that include Fortran 77 (@pxref{Mixing Fortran 77 With C and
3006 C++}).  @xref{Macros, , Autoconf macros supplied with Automake}.
3007
3008 @item AC_FC_SRCEXT
3009 Automake will add the flags computed by @code{AC_FC_SRCEXT} to compilation
3010 of files with the respective source extension (@pxref{Fortran Compiler, ,
3011 Fortran Compiler Characteristics, autoconf, The Autoconf Manual}).
3012
3013 @item AC_PROG_FC
3014 This is required if any Fortran 90/95 source is included.  This macro is
3015 distributed with Autoconf version 2.58 and later.  @xref{Particular
3016 Programs, , Particular Program Checks, autoconf, The Autoconf Manual}.
3017
3018 @item AC_PROG_LIBTOOL
3019 Automake will turn on processing for @command{libtool} (@pxref{Top, ,
3020 Introduction, libtool, The Libtool Manual}).
3021
3022 @item AC_PROG_YACC
3023 @vindex YACC
3024 If a Yacc source file is seen, then you must either use this macro or
3025 define the variable @code{YACC} in @file{configure.ac}.  The former is
3026 preferred (@pxref{Particular Programs, , Particular Program Checks,
3027 autoconf, The Autoconf Manual}).
3028
3029 @item AC_PROG_LEX
3030 If a Lex source file is seen, then this macro must be used.
3031 @xref{Particular Programs, , Particular Program Checks, autoconf, The
3032 Autoconf Manual}.
3033
3034 @item AC_REQUIRE_AUX_FILE
3035 For each @code{AC_REQUIRE_AUX_FILE([@var{file}])},
3036 @command{automake} will ensure that @file{@var{file}} exists in the
3037 aux directory, and will complain otherwise.  It
3038 will also automatically distribute the file.  This macro should be
3039 used by third-party Autoconf macros that require some supporting
3040 files in the aux directory specified with @code{AC_CONFIG_AUX_DIR}
3041 above.  @xref{Input, , Finding @command{configure} Input, autoconf,
3042 The Autoconf Manual}.
3043
3044 @item AC_SUBST
3045 The first argument is automatically defined as a variable in each
3046 generated @file{Makefile.in}, unless @code{AM_SUBST_NOTMAKE} is also
3047 used for this variable.  @xref{Setting Output Variables, , Setting
3048 Output Variables, autoconf, The Autoconf Manual}.
3049
3050 For every substituted variable @var{var}, @command{automake} will add
3051 a line @code{@var{var} = @var{value}} to each @file{Makefile.in} file.
3052 Many Autoconf macros invoke @code{AC_SUBST} to set output variables
3053 this way, e.g., @code{AC_PATH_XTRA} defines @code{X_CFLAGS} and
3054 @code{X_LIBS}.  Thus, you can access these variables as
3055 @code{$(X_CFLAGS)} and @code{$(X_LIBS)} in any @file{Makefile.am}
3056 if @code{AC_PATH_XTRA} is called.
3057
3058 @item AM_C_PROTOTYPES
3059 This is required when using the deprecated de-ANSI-fication feature;
3060 @pxref{ANSI}.  @emph{It will be removed} in the next major Automake
3061 release.
3062
3063 @item AM_CONDITIONAL
3064 This introduces an Automake conditional (@pxref{Conditionals}).
3065
3066 @item AM_COND_IF
3067 This macro allows @code{automake} to detect subsequent access within
3068 @file{configure.ac} to a conditional previously introduced with
3069 @code{AM_CONDITIONAL}, thus enabling conditional @code{AC_CONFIG_FILES}
3070 (@pxref{Usage of Conditionals}).
3071
3072 @item AM_GNU_GETTEXT
3073 This macro is required for packages that use GNU gettext
3074 (@pxref{gettext}).  It is distributed with gettext.  If Automake sees
3075 this macro it ensures that the package meets some of gettext's
3076 requirements.
3077
3078 @item AM_GNU_GETTEXT_INTL_SUBDIR
3079 This macro specifies that the @file{intl/} subdirectory is to be built,
3080 even if the @code{AM_GNU_GETTEXT} macro was invoked with a first argument
3081 of @samp{external}.
3082
3083 @item AM_MAINTAINER_MODE(@ovar{default-mode})
3084 @opindex --enable-maintainer-mode
3085 @opindex --disable-maintainer-mode
3086 This macro adds an @option{--enable-maintainer-mode} option to
3087 @command{configure}.  If this is used, @command{automake} will cause
3088 ``maintainer-only'' rules to be turned off by default in the
3089 generated @file{Makefile.in}s, unless @var{default-mode} is
3090 @samp{enable}.  This macro defines the @code{MAINTAINER_MODE}
3091 conditional, which you can use in your own @file{Makefile.am}.
3092 @xref{maintainer-mode}.
3093
3094 @item AM_SUBST_NOTMAKE(@var{var})
3095 Prevent Automake from defining a variable @var{var}, even if it is
3096 substituted by @command{config.status}.  Normally, Automake defines a
3097 @command{make} variable for each @command{configure} substitution,
3098 i.e., for each @code{AC_SUBST([@var{var}])}.  This macro prevents that
3099 definition from Automake.  If @code{AC_SUBST} has not been called
3100 for this variable, then @code{AM_SUBST_NOTMAKE} has no effects.
3101 Preventing variable definitions may be useful for substitution of
3102 multi-line values, where @code{@var{var} = @@@var{value}@@} might yield
3103 unintended results.
3104
3105 @item m4_include
3106 Files included by @file{configure.ac} using this macro will be
3107 detected by Automake and automatically distributed.  They will also
3108 appear as dependencies in @file{Makefile} rules.
3109
3110 @code{m4_include} is seldom used by @file{configure.ac} authors, but
3111 can appear in @file{aclocal.m4} when @command{aclocal} detects that
3112 some required macros come from files local to your package (as opposed to
3113 macros installed in a system-wide directory, @pxref{aclocal Invocation}).
3114
3115 @end ftable
3116
3117 @node aclocal Invocation
3118 @section Auto-generating aclocal.m4
3119 @c This node used to be named "Invoking automake".  This @anchor
3120 @c allows old links to still work.
3121 @anchor{Invoking aclocal}
3122
3123 @cindex Invocation of @command{aclocal}
3124 @cindex @command{aclocal}, Invocation
3125 @cindex Invoking @command{aclocal}
3126 @cindex @command{aclocal}, Invoking
3127
3128 Automake includes a number of Autoconf macros that can be used in
3129 your package (@pxref{Macros}); some of them are actually required by
3130 Automake in certain situations.  These macros must be defined in your
3131 @file{aclocal.m4}; otherwise they will not be seen by
3132 @command{autoconf}.
3133
3134 The @command{aclocal} program will automatically generate
3135 @file{aclocal.m4} files based on the contents of @file{configure.ac}.
3136 This provides a convenient way to get Automake-provided macros,
3137 without having to search around.  The @command{aclocal} mechanism
3138 allows other packages to supply their own macros (@pxref{Extending
3139 aclocal}).  You can also use it to maintain your own set of custom
3140 macros (@pxref{Local Macros}).
3141
3142 At startup, @command{aclocal} scans all the @file{.m4} files it can
3143 find, looking for macro definitions (@pxref{Macro Search Path}).  Then
3144 it scans @file{configure.ac}.  Any mention of one of the macros found
3145 in the first step causes that macro, and any macros it in turn
3146 requires, to be put into @file{aclocal.m4}.
3147
3148 @emph{Putting} the file that contains the macro definition into
3149 @file{aclocal.m4} is usually done by copying the entire text of this
3150 file, including unused macro definitions as well as both @samp{#} and
3151 @samp{dnl} comments.  If you want to make a comment that will be
3152 completely ignored by @command{aclocal}, use @samp{##} as the comment
3153 leader.
3154
3155 When a file selected by @command{aclocal} is located in a subdirectory
3156 specified as a relative search path with @command{aclocal}'s @option{-I}
3157 argument, @command{aclocal} assumes the file belongs to the package
3158 and uses @code{m4_include} instead of copying it into
3159 @file{aclocal.m4}.  This makes the package smaller, eases dependency
3160 tracking, and cause the file to be distributed automatically.
3161 (@xref{Local Macros}, for an example.)  Any macro that is found in a
3162 system-wide directory, or via an absolute search path will be copied.
3163 So use @samp{-I `pwd`/reldir} instead of @samp{-I reldir} whenever
3164 some relative directory should be considered outside the package.
3165
3166 The contents of @file{acinclude.m4}, if this file exists, are also
3167 automatically included in @file{aclocal.m4}.  We recommend against
3168 using @file{acinclude.m4} in new packages (@pxref{Local Macros}).
3169
3170 @vindex AUTOM4TE
3171 @cindex autom4te
3172 While computing @file{aclocal.m4}, @command{aclocal} runs
3173 @command{autom4te} (@pxref{Using autom4te, , Using @command{Autom4te},
3174 autoconf, The Autoconf Manual}) in order to trace the macros that are
3175 really used, and omit from @file{aclocal.m4} all macros that are
3176 mentioned but otherwise unexpanded (this can happen when a macro is
3177 called conditionally).  @command{autom4te} is expected to be in the
3178 @env{PATH}, just as @command{autoconf}.  Its location can be
3179 overridden using the @env{AUTOM4TE} environment variable.
3180
3181 @menu
3182 * aclocal Options::             Options supported by aclocal
3183 * Macro Search Path::           How aclocal finds .m4 files
3184 * Extending aclocal::           Writing your own aclocal macros
3185 * Local Macros::                Organizing local macros
3186 * Serials::                     Serial lines in Autoconf macros
3187 * Future of aclocal::           aclocal's scheduled death
3188 @end menu
3189
3190 @node aclocal Options
3191 @subsection aclocal Options
3192
3193 @cindex @command{aclocal}, Options
3194 @cindex Options, @command{aclocal}
3195
3196 @command{aclocal} accepts the following options:
3197
3198 @table @code
3199 @item --automake-acdir=@var{dir}
3200 @opindex --automake-acdir
3201 Look for the automake-provided macro files in @var{dir} instead of
3202 in the installation directory.  This is typically used for debugging.
3203
3204 @item --system-acdir=@var{dir}
3205 @opindex --system-acdir
3206 Look for the system-wide third-party macro files (and the special
3207 @file{dirlist} file) in @var{dir} instead of in the installation
3208 directory.  This is typically used for debugging.
3209
3210 @item --acdir=@var{dir}
3211 @opindex --acdir
3212 @emph{Deprecated} shorthand for ``@option{--automake-acdir=@var{dir}
3213 --system-acdir=@var{dir}}''.  Will be removed in future aclocal versions.
3214
3215 @item --diff[=@var{command}]
3216 @opindex --diff
3217 Run @var{command} on M4 file that would be installed or overwritten
3218 by @option{--install}.  The default @var{command} is @samp{diff -u}.
3219 This option implies @option{--install} and @option{--dry-run}.
3220
3221 @item --dry-run
3222 @opindex --dry-run
3223 Do not actually overwrite (or create) @file{aclocal.m4} and M4
3224 files installed by @option{--install}.
3225
3226 @item --help
3227 @opindex --help
3228 Print a summary of the command line options and exit.
3229
3230 @item -I @var{dir}
3231 @opindex -I
3232 Add the directory @var{dir} to the list of directories searched for
3233 @file{.m4} files.
3234
3235 @item --install
3236 @opindex --install
3237 Install system-wide third-party macros into the first directory
3238 specified with @samp{-I @var{dir}} instead of copying them in the
3239 output file.
3240 @c The following semantics is checked by `aclocal-install-absdir.test'.
3241 Note that this will happen also if @var{dir} is an absolute path.
3242
3243 @cindex serial number and @option{--install}
3244 When this option is used, and only when this option is used,
3245 @command{aclocal} will also honor @samp{#serial @var{number}} lines
3246 that appear in macros: an M4 file is ignored if there exists another
3247 M4 file with the same basename and a greater serial number in the
3248 search path (@pxref{Serials}).
3249
3250 @item --force
3251 @opindex --force
3252 Always overwrite the output file.  The default is to overwrite the output
3253 file only when really needed, i.e., when its contents changes or if one
3254 of its dependencies is younger.
3255
3256 This option forces the update of @file{aclocal.m4} (or the file
3257 specified with @file{--output} below) and only this file, it has
3258 absolutely no influence on files that may need to be installed by
3259 @option{--install}.
3260
3261 @item --output=@var{file}
3262 @opindex --output
3263 Cause the output to be put into @var{file} instead of @file{aclocal.m4}.
3264
3265 @item --print-ac-dir
3266 @opindex --print-ac-dir
3267 Prints the name of the directory that @command{aclocal} will search to
3268 find third-party @file{.m4} files.  When this option is given, normal
3269 processing is suppressed.  This option was used @emph{in the past} by
3270 third-party packages to determine where to install @file{.m4} macro
3271 files, but @emph{this usage is today discouraged}, since it causes
3272 @samp{$(prefix)} not to be thoroughly honoured (which violates the
3273 GNU Coding Standards), and a similar semantics can be better obtained
3274 with the @env{ACLOCAL_PATH} environment variable; @pxref{Extending aclocal}.
3275
3276 @item --verbose
3277 @opindex --verbose
3278 Print the names of the files it examines.
3279
3280 @item --version
3281 @opindex --version
3282 Print the version number of Automake and exit.
3283
3284 @item -W CATEGORY
3285 @item --warnings=@var{category}
3286 @opindex -W
3287 @opindex --warnings
3288 Output warnings falling in @var{category}.  @var{category} can be
3289 one of:
3290 @table @code
3291 @item syntax
3292 dubious syntactic constructs, underquoted macros, unused macros, etc.
3293 @item unsupported
3294 unknown macros
3295 @item all
3296 all the warnings, this is the default
3297 @item none
3298 turn off all the warnings
3299 @item error
3300 treat warnings as errors
3301 @end table
3302
3303 All warnings are output by default.
3304
3305 @vindex WARNINGS
3306 The environment variable @env{WARNINGS} is honored in the same
3307 way as it is for @command{automake} (@pxref{automake Invocation}).
3308
3309 @end table
3310
3311 @node Macro Search Path
3312 @subsection Macro Search Path
3313
3314 @cindex Macro search path
3315 @cindex @command{aclocal} search path
3316
3317 By default, @command{aclocal} searches for @file{.m4} files in the following
3318 directories, in this order:
3319
3320 @table @code
3321 @item @var{acdir-APIVERSION}
3322 This is where the @file{.m4} macros distributed with Automake itself
3323 are stored.  @var{APIVERSION} depends on the Automake release used;
3324 for example, for Automake 1.11.x, @var{APIVERSION} = @code{1.11}.
3325
3326 @item @var{acdir}
3327 This directory is intended for third party @file{.m4} files, and is
3328 configured when @command{automake} itself is built.  This is
3329 @file{@@datadir@@/aclocal/}, which typically
3330 expands to @file{$@{prefix@}/share/aclocal/}.  To find the compiled-in
3331 value of @var{acdir}, use the @option{--print-ac-dir} option
3332 (@pxref{aclocal Options}).
3333 @end table
3334
3335 As an example, suppose that @command{automake-1.11.2} was configured with
3336 @option{--prefix=@-/usr/local}.  Then, the search path would be:
3337
3338 @enumerate
3339 @item @file{/usr/local/share/aclocal-1.11.2/}
3340 @item @file{/usr/local/share/aclocal/}
3341 @end enumerate
3342
3343 The paths for the @var{acdir} and @var{acdir-APIVERSION} directories can
3344 be changed respectively through aclocal options @option{--system-acdir}
3345 and @option{--automake-acdir} (@pxref{aclocal Options}).  Note however
3346 that these options are only intended for use by the internal Automake
3347 test suite, or for debugging under highly unusual situations; they are
3348 not ordinarily needed by end-users.
3349
3350 As explained in (@pxref{aclocal Options}), there are several options that
3351 can be used to change or extend this search path.
3352
3353 @subsubheading Modifying the Macro Search Path: @samp{-I @var{dir}}
3354
3355 Any extra directories specified using @option{-I} options
3356 (@pxref{aclocal Options}) are @emph{prepended} to this search list.  Thus,
3357 @samp{aclocal -I /foo -I /bar} results in the following search path:
3358
3359 @enumerate
3360 @item @file{/foo}
3361 @item @file{/bar}
3362 @item @var{acdir}-@var{APIVERSION}
3363 @item @var{acdir}
3364 @end enumerate
3365
3366 @subsubheading Modifying the Macro Search Path: @file{dirlist}
3367 @cindex @file{dirlist}
3368
3369 There is a third mechanism for customizing the search path.  If a
3370 @file{dirlist} file exists in @var{acdir}, then that file is assumed to
3371 contain a list of directory patterns, one per line.  @command{aclocal}
3372 expands these patterns to directory names, and adds them to the search
3373 list @emph{after} all other directories.  @file{dirlist} entries may
3374 use shell wildcards such as @samp{*}, @samp{?}, or @code{[...]}.
3375
3376 For example, suppose
3377 @file{@var{acdir}/dirlist} contains the following:
3378
3379 @example
3380 /test1
3381 /test2
3382 /test3*
3383 @end example
3384
3385 @noindent
3386 and that @command{aclocal} was called with the @samp{-I /foo -I /bar} options.
3387 Then, the search path would be
3388
3389 @c @code looks better than @file here
3390 @enumerate
3391 @item @code{/foo}
3392 @item @code{/bar}
3393 @item @var{acdir}-@var{APIVERSION}
3394 @item @var{acdir}
3395 @item @code{/test1}
3396 @item @code{/test2}
3397 @end enumerate
3398
3399 @noindent
3400 and all directories with path names starting with @code{/test3}.
3401
3402 If the @option{--system-acdir=@var{dir}} option is used, then
3403 @command{aclocal} will search for the @file{dirlist} file in
3404 @var{dir}; but remember the warnings  above against the use of
3405 @option{--system-acdir}.
3406
3407 @file{dirlist} is useful in the following situation: suppose that
3408 @command{automake} version @code{1.11.2} is installed with
3409 @samp{--prefix=/usr} by the system vendor.  Thus, the default search
3410 directories are
3411
3412 @c @code looks better than @file here
3413 @enumerate
3414 @item @code{/usr/share/aclocal-1.11/}
3415 @item @code{/usr/share/aclocal/}
3416 @end enumerate
3417
3418 However, suppose further that many packages have been manually
3419 installed on the system, with $prefix=/usr/local, as is typical.  In
3420 that case, many of these ``extra'' @file{.m4} files are in
3421 @file{/usr/local/share/aclocal}.  The only way to force
3422 @file{/usr/bin/aclocal} to find these ``extra'' @file{.m4} files is to
3423 always call @samp{aclocal -I /usr/local/share/aclocal}.  This is
3424 inconvenient.  With @file{dirlist}, one may create a file
3425 @file{/usr/share/aclocal/dirlist} containing only the single line
3426
3427 @example
3428 /usr/local/share/aclocal
3429 @end example
3430
3431 Now, the ``default'' search path on the affected system is
3432
3433 @c @code looks better than @file here
3434 @enumerate
3435 @item @code{/usr/share/aclocal-1.11/}
3436 @item @code{/usr/share/aclocal/}
3437 @item @code{/usr/local/share/aclocal/}
3438 @end enumerate
3439
3440 without the need for @option{-I} options; @option{-I} options can be reserved
3441 for project-specific needs (@file{my-source-dir/m4/}), rather than
3442 using it to work around local system-dependent tool installation
3443 directories.
3444
3445 Similarly, @file{dirlist} can be handy if you have installed a local
3446 copy of Automake in your account and want @command{aclocal} to look for
3447 macros installed at other places on the system.
3448
3449 @anchor{ACLOCAL_PATH}
3450 @subsubheading Modifying the Macro Search Path: @file{ACLOCAL_PATH}
3451 @cindex @env{ACLOCAL_PATH}
3452
3453 The fourth and last mechanism to customize the macro search path is
3454 also the simplest.  Any directory included in the colon-separated
3455 environment variable @env{ACLOCAL_PATH} is added to the search path
3456 @c Keep in sync with aclocal-path-precedence.test.
3457 and takes precedence over system directories (including those found via
3458 @file{dirlist}), with the exception of the versioned directory
3459 @var{acdir-APIVERSION} (@pxref{Macro Search Path}).  However, directories
3460 passed via @option{-I} will take precedence over directories in
3461 @env{ACLOCAL_PATH}.
3462
3463 @c Keep in sync with aclocal-path-installed.test.
3464 Also note that, if the @option{--install} option is used, any @file{.m4}
3465 file containing a required macro that is found in a directory listed in
3466 @env{ACLOCAL_PATH} will be installed locally.
3467 @c Keep in sync with aclocal-path-installed-serial.test.
3468 In this case, serial numbers in @file{.m4} are honoured too,
3469 @pxref{Serials}.
3470
3471 Conversely to @file{dirlist}, @env{ACLOCAL_PATH} is useful if you are
3472 using a global copy of Automake and want @command{aclocal} to look for
3473 macros somewhere under your home directory.
3474
3475 @subsubheading Planned future incompatibilities
3476
3477 The order in which the directories in the macro search path are currently
3478 looked up is confusing and/or suboptimal in various aspects, and is
3479 probably going to be changed in the future Automake release.  In
3480 particular, directories in @env{ACLOCAL_PATH} and @file{@var{acdir}}
3481 might end up taking precedence over @file{@var{acdir-APIVERSION}}, and
3482 directories in @file{@var{acdir}/dirlist} might end up taking precedence
3483 over @file{@var{acdir}}.  @emph{This is a possible future incompatibility!}
3484
3485 @node Extending aclocal
3486 @subsection Writing your own aclocal macros
3487
3488 @cindex @command{aclocal}, extending
3489 @cindex Extending @command{aclocal}
3490
3491 The @command{aclocal} program doesn't have any built-in knowledge of any
3492 macros, so it is easy to extend it with your own macros.
3493
3494 This can be used by libraries that want to supply their own Autoconf
3495 macros for use by other programs.  For instance, the @command{gettext}
3496 library supplies a macro @code{AM_GNU_GETTEXT} that should be used by
3497 any package using @command{gettext}.  When the library is installed, it
3498 installs this macro so that @command{aclocal} will find it.
3499
3500 A macro file's name should end in @file{.m4}.  Such files should be
3501 installed in @file{$(datadir)/aclocal}.  This is as simple as writing:
3502
3503 @c Keep in sync with primary-prefix-couples-documented-valid.test.
3504 @example
3505 aclocaldir = $(datadir)/aclocal
3506 aclocal_DATA = mymacro.m4 myothermacro.m4
3507 @end example
3508
3509 @noindent
3510 Please do use @file{$(datadir)/aclocal}, and not something based on
3511 the result of @samp{aclocal --print-ac-dir} (@pxref{Hard-Coded Install
3512 Paths}, for arguments).  It might also be helpful to suggest to
3513 the user to add the @file{$(datadir)/aclocal} directory to his
3514 @env{ACLOCAL_PATH} variable (@pxref{ACLOCAL_PATH}) so that
3515 @command{aclocal} will find the @file{.m4} files installed by your
3516 package automatically.
3517
3518 A file of macros should be a series of properly quoted
3519 @code{AC_DEFUN}'s (@pxref{Macro Definitions, , , autoconf, The
3520 Autoconf Manual}).  The @command{aclocal} programs also understands
3521 @code{AC_REQUIRE} (@pxref{Prerequisite Macros, , , autoconf, The
3522 Autoconf Manual}), so it is safe to put each macro in a separate file.
3523 Each file should have no side effects but macro definitions.
3524 Especially, any call to @code{AC_PREREQ} should be done inside the
3525 defined macro, not at the beginning of the file.
3526
3527 @cindex underquoted @code{AC_DEFUN}
3528 @acindex AC_DEFUN
3529 @acindex AC_PREREQ
3530
3531 Starting with Automake 1.8, @command{aclocal} will warn about all
3532 underquoted calls to @code{AC_DEFUN}.  We realize this will annoy a
3533 lot of people, because @command{aclocal} was not so strict in the past
3534 and many third party macros are underquoted; and we have to apologize
3535 for this temporary inconvenience.  The reason we have to be stricter
3536 is that a future implementation of @command{aclocal} (@pxref{Future of
3537 aclocal}) will have to temporarily include all these third party
3538 @file{.m4} files, maybe several times, including even files that are
3539 not actually needed.  Doing so should alleviate many problems of the
3540 current implementation, however it requires a stricter style from the
3541 macro authors.  Hopefully it is easy to revise the existing macros.
3542 For instance,
3543
3544 @example
3545 # bad style
3546 AC_PREREQ(2.57)
3547 AC_DEFUN(AX_FOOBAR,
3548 [AC_REQUIRE([AX_SOMETHING])dnl
3549 AX_FOO
3550 AX_BAR
3551 ])
3552 @end example
3553
3554 @noindent
3555 should be rewritten as
3556
3557 @example
3558 AC_DEFUN([AX_FOOBAR],
3559 [AC_PREREQ([2.57])dnl
3560 AC_REQUIRE([AX_SOMETHING])dnl
3561 AX_FOO
3562 AX_BAR
3563 ])
3564 @end example
3565
3566 Wrapping the @code{AC_PREREQ} call inside the macro ensures that
3567 Autoconf 2.57 will not be required if @code{AX_FOOBAR} is not actually
3568 used.  Most importantly, quoting the first argument of @code{AC_DEFUN}
3569 allows the macro to be redefined or included twice (otherwise this
3570 first argument would be expanded during the second definition).  For
3571 consistency we like to quote even arguments such as @code{2.57} that
3572 do not require it.
3573
3574 If you have been directed here by the @command{aclocal} diagnostic but
3575 are not the maintainer of the implicated macro, you will want to
3576 contact the maintainer of that macro.  Please make sure you have the
3577 latest version of the macro and that the problem hasn't already been
3578 reported before doing so: people tend to work faster when they aren't
3579 flooded by mails.
3580
3581 Another situation where @command{aclocal} is commonly used is to
3582 manage macros that are used locally by the package, @ref{Local
3583 Macros}.
3584
3585 @node Local Macros
3586 @subsection Handling Local Macros
3587
3588 Feature tests offered by Autoconf do not cover all needs.  People
3589 often have to supplement existing tests with their own macros, or
3590 with third-party macros.
3591
3592 There are two ways to organize custom macros in a package.
3593
3594 The first possibility (the historical practice) is to list all your
3595 macros in @file{acinclude.m4}.  This file will be included in
3596 @file{aclocal.m4} when you run @command{aclocal}, and its macro(s) will
3597 henceforth be visible to @command{autoconf}.  However if it contains
3598 numerous macros, it will rapidly become difficult to maintain, and it
3599 will be almost impossible to share macros between packages.
3600
3601 @vindex ACLOCAL_AMFLAGS
3602 The second possibility, which we do recommend, is to write each macro
3603 in its own file and gather all these files in a directory.  This
3604 directory is usually called @file{m4/}.  To build @file{aclocal.m4},
3605 one should therefore instruct @command{aclocal} to scan @file{m4/}.
3606 From the command line, this is done with @samp{aclocal -I m4}.  The
3607 top-level @file{Makefile.am} should also be updated to define
3608
3609 @example
3610 ACLOCAL_AMFLAGS = -I m4
3611 @end example
3612
3613 @code{ACLOCAL_AMFLAGS} contains options to pass to @command{aclocal}
3614 when @file{aclocal.m4} is to be rebuilt by @command{make}.  This line is
3615 also used by @command{autoreconf} (@pxref{autoreconf Invocation, ,
3616 Using @command{autoreconf} to Update @file{configure} Scripts,
3617 autoconf, The Autoconf Manual}) to run @command{aclocal} with suitable
3618 options, or by @command{autopoint} (@pxref{autopoint Invocation, ,
3619 Invoking the @command{autopoint} Program, gettext, GNU gettext tools})
3620 and @command{gettextize} (@pxref{gettextize Invocation, , Invoking the
3621 @command{gettextize} Program, gettext, GNU gettext tools}) to locate
3622 the place where Gettext's macros should be installed.  So even if you
3623 do not really care about the rebuild rules, you should define
3624 @code{ACLOCAL_AMFLAGS}.
3625
3626 When @samp{aclocal -I m4} is run, it will build an @file{aclocal.m4}
3627 that @code{m4_include}s any file from @file{m4/} that defines a
3628 required macro.  Macros not found locally will still be searched in
3629 system-wide directories, as explained in @ref{Macro Search Path}.
3630
3631 Custom macros should be distributed for the same reason that
3632 @file{configure.ac} is: so that other people have all the sources of
3633 your package if they want to work on it.  Actually, this distribution
3634 happens automatically because all @code{m4_include}d files are
3635 distributed.
3636
3637 However there is no consensus on the distribution of third-party
3638 macros that your package may use.  Many libraries install their own
3639 macro in the system-wide @command{aclocal} directory (@pxref{Extending
3640 aclocal}).  For instance, Guile ships with a file called
3641 @file{guile.m4} that contains the macro @code{GUILE_FLAGS} that can
3642 be used to define setup compiler and linker flags appropriate for
3643 using Guile.  Using @code{GUILE_FLAGS} in @file{configure.ac} will
3644 cause @command{aclocal} to copy @file{guile.m4} into
3645 @file{aclocal.m4}, but as @file{guile.m4} is not part of the project,
3646 it will not be distributed.  Technically, that means a user who
3647 needs to rebuild @file{aclocal.m4} will have to install Guile first.
3648 This is probably OK, if Guile already is a requirement to build the
3649 package.  However, if Guile is only an optional feature, or if your
3650 package might run on architectures where Guile cannot be installed,
3651 this requirement will hinder development.  An easy solution is to copy
3652 such third-party macros in your local @file{m4/} directory so they get
3653 distributed.
3654
3655 Since Automake 1.10, @command{aclocal} offers an option to copy these
3656 system-wide third-party macros in your local macro directory, solving
3657 the above problem.  Simply use:
3658
3659 @example
3660 ACLOCAL_AMFLAGS = -I m4 --install
3661 @end example
3662
3663 @noindent
3664 With this setup, system-wide macros will be copied to @file{m4/}
3665 the first time you run @command{autoreconf}.  Then the locally
3666 installed macros will have precedence over the system-wide installed
3667 macros each time @command{aclocal} is run again.
3668
3669 One reason why you should keep @option{--install} in the flags even
3670 after the first run is that when you later edit @file{configure.ac}
3671 and depend on a new macro, this macro will be installed in your
3672 @file{m4/} automatically.  Another one is that serial numbers
3673 (@pxref{Serials}) can be used to update the macros in your source tree
3674 automatically when new system-wide versions are installed.  A serial
3675 number should be a single line of the form
3676
3677 @example
3678 #serial @var{nnn}
3679 @end example
3680
3681 @noindent
3682 where @var{nnn} contains only digits and dots.  It should appear in
3683 the M4 file before any macro definition.  It is a good practice to
3684 maintain a serial number for each macro you distribute, even if you do
3685 not use the @option{--install} option of @command{aclocal}: this allows
3686 other people to use it.
3687
3688
3689 @node Serials
3690 @subsection Serial Numbers
3691 @cindex serial numbers in macros
3692 @cindex macro serial numbers
3693 @cindex @code{#serial} syntax
3694 @cindex @command{aclocal} and serial numbers
3695
3696 Because third-party macros defined in @file{*.m4} files are naturally
3697 shared between multiple projects, some people like to version them.
3698 This makes it easier to tell which of two M4 files is newer.  Since at
3699 least 1996, the tradition is to use a @samp{#serial} line for this.
3700
3701 A serial number should be a single line of the form
3702
3703 @example
3704 # serial @var{version}
3705 @end example
3706
3707 @noindent
3708 where @var{version} is a version number containing only digits and
3709 dots.  Usually people use a single integer, and they increment it each
3710 time they change the macro (hence the name of ``serial'').  Such a
3711 line should appear in the M4 file before any macro definition.
3712
3713 The @samp{#} must be the first character on the line,
3714 and it is OK to have extra words after the version, as in
3715
3716 @example
3717 #serial @var{version} @var{garbage}
3718 @end example
3719
3720 Normally these serial numbers are completely ignored by
3721 @command{aclocal} and @command{autoconf}, like any genuine comment.
3722 However when using @command{aclocal}'s @option{--install} feature, these
3723 serial numbers will modify the way @command{aclocal} selects the
3724 macros to install in the package: if two files with the same basename
3725 exist in your search path, and if at least one of them uses a
3726 @samp{#serial} line, @command{aclocal} will ignore the file that has
3727 the older @samp{#serial} line (or the file that has none).
3728
3729 Note that a serial number applies to a whole M4 file, not to any macro
3730 it contains.  A file can contains multiple macros, but only one
3731 serial.
3732
3733 Here is a use case that illustrates the use of @option{--install} and
3734 its interaction with serial numbers.  Let's assume we maintain a
3735 package called MyPackage, the @file{configure.ac} of which requires a
3736 third-party macro @code{AX_THIRD_PARTY} defined in
3737 @file{/usr/share/aclocal/thirdparty.m4} as follows:
3738
3739 @example
3740 # serial 1
3741 AC_DEFUN([AX_THIRD_PARTY], [...])
3742 @end example
3743
3744 MyPackage uses an @file{m4/} directory to store local macros as
3745 explained in @ref{Local Macros}, and has
3746
3747 @example
3748 ACLOCAL_AMFLAGS = -I m4 --install
3749 @end example
3750
3751 @noindent
3752 in its top-level @file{Makefile.am}.
3753
3754 Initially the @file{m4/} directory is empty.  The first time we run
3755 @command{autoreconf}, it will fetch the options to pass to
3756 @command{aclocal} in @file{Makefile.am}, and run @samp{aclocal -I m4
3757 --install}.  @command{aclocal} will notice that
3758
3759 @itemize @bullet
3760 @item
3761 @file{configure.ac} uses @code{AX_THIRD_PARTY}
3762 @item
3763 No local macros define @code{AX_THIRD_PARTY}
3764 @item
3765 @file{/usr/share/aclocal/thirdparty.m4} defines @code{AX_THIRD_PARTY}
3766 with serial 1.
3767 @end itemize
3768
3769 @noindent
3770 Because @file{/usr/share/aclocal/thirdparty.m4} is a system-wide macro
3771 and @command{aclocal} was given the @option{--install} option, it will
3772 copy this file in @file{m4/thirdparty.m4}, and output an
3773 @file{aclocal.m4} that contains @samp{m4_include([m4/thirdparty.m4])}.
3774
3775 The next time @samp{aclocal -I m4 --install} is run (either via
3776 @command{autoreconf}, by hand, or from the @file{Makefile} rebuild
3777 rules) something different happens.  @command{aclocal} notices that
3778
3779 @itemize @bullet
3780 @item
3781 @file{configure.ac} uses @code{AX_THIRD_PARTY}
3782 @item
3783 @file{m4/thirdparty.m4} defines @code{AX_THIRD_PARTY}
3784 with serial 1.
3785 @item
3786 @file{/usr/share/aclocal/thirdparty.m4} defines @code{AX_THIRD_PARTY}
3787 with serial 1.
3788 @end itemize
3789
3790 @noindent
3791 Because both files have the same serial number, @command{aclocal} uses
3792 the first it found in its search path order (@pxref{Macro Search
3793 Path}).  @command{aclocal} therefore ignores
3794 @file{/usr/share/aclocal/thirdparty.m4} and outputs an
3795 @file{aclocal.m4} that contains @samp{m4_include([m4/thirdparty.m4])}.
3796
3797 Local directories specified with @option{-I} are always searched before
3798 system-wide directories, so a local file will always be preferred to
3799 the system-wide file in case of equal serial numbers.
3800
3801 Now suppose the system-wide third-party macro is changed.  This can
3802 happen if the package installing this macro is updated.  Let's suppose
3803 the new macro has serial number 2.  The next time @samp{aclocal -I m4
3804 --install} is run the situation is the following:
3805
3806 @itemize @bullet
3807 @item
3808 @file{configure.ac} uses @code{AX_THIRD_PARTY}
3809 @item
3810 @file{m4/thirdparty.m4} defines @code{AX_THIRD_PARTY}
3811 with serial 1.
3812 @item
3813 @file{/usr/share/aclocal/thirdparty.m4} defines @code{AX_THIRD_PARTY}
3814 with serial 2.
3815 @end itemize
3816
3817 @noindent
3818 When @command{aclocal} sees a greater serial number, it immediately
3819 forgets anything it knows from files that have the same basename and a
3820 smaller serial number.  So after it has found
3821 @file{/usr/share/aclocal/thirdparty.m4} with serial 2,
3822 @command{aclocal} will proceed as if it had never seen
3823 @file{m4/thirdparty.m4}.  This brings us back to a situation similar
3824 to that at the beginning of our example, where no local file defined
3825 the macro.  @command{aclocal} will install the new version of the
3826 macro in @file{m4/thirdparty.m4}, in this case overriding the old
3827 version.  MyPackage just had its macro updated as a side effect of
3828 running @command{aclocal}.
3829
3830 If you are leery of letting @command{aclocal} update your local macro,
3831 you can run @samp{aclocal -I m4 --diff} to review the changes
3832 @samp{aclocal -I m4 --install} would perform on these macros.
3833
3834 Finally, note that the @option{--force} option of @command{aclocal} has
3835 absolutely no effect on the files installed by @option{--install}.  For
3836 instance, if you have modified your local macros, do not expect
3837 @option{--install --force} to replace the local macros by their
3838 system-wide versions.  If you want to do so, simply erase the local
3839 macros you want to revert, and run @samp{aclocal -I m4 --install}.
3840
3841
3842 @node Future of aclocal
3843 @subsection The Future of @command{aclocal}
3844 @cindex @command{aclocal}'s scheduled death
3845
3846 @command{aclocal} is expected to disappear.  This feature really
3847 should not be offered by Automake.  Automake should focus on
3848 generating @file{Makefile}s; dealing with M4 macros really is
3849 Autoconf's job.  The fact that some people install Automake just to use
3850 @command{aclocal}, but do not use @command{automake} otherwise is an
3851 indication of how that feature is misplaced.
3852
3853 The new implementation will probably be done slightly differently.
3854 For instance, it could enforce the @file{m4/}-style layout discussed in
3855 @ref{Local Macros}.
3856
3857 We have no idea when and how this will happen.  This has been
3858 discussed several times in the past, but someone still has to commit
3859 to that non-trivial task.
3860
3861 From the user point of view, @command{aclocal}'s removal might turn
3862 out to be painful.  There is a simple precaution that you may take to
3863 make that switch more seamless: never call @command{aclocal} yourself.
3864 Keep this guy under the exclusive control of @command{autoreconf} and
3865 Automake's rebuild rules.  Hopefully you won't need to worry about
3866 things breaking, when @command{aclocal} disappears, because everything
3867 will have been taken care of.  If otherwise you used to call
3868 @command{aclocal} directly yourself or from some script, you will
3869 quickly notice the change.
3870
3871 Many packages come with a script called @file{bootstrap.sh} or
3872 @file{autogen.sh}, that will just call @command{aclocal},
3873 @command{libtoolize}, @command{gettextize} or @command{autopoint},
3874 @command{autoconf}, @command{autoheader}, and @command{automake} in
3875 the right order.  Actually this is precisely what @command{autoreconf}
3876 can do for you.  If your package has such a @file{bootstrap.sh} or
3877 @file{autogen.sh} script, consider using @command{autoreconf}.  That
3878 should simplify its logic a lot (less things to maintain, yum!), it's
3879 even likely you will not need the script anymore, and more to the point
3880 you will not call @command{aclocal} directly anymore.
3881
3882 For the time being, third-party packages should continue to install
3883 public macros into @file{/usr/share/aclocal/}.  If @command{aclocal}
3884 is replaced by another tool it might make sense to rename the
3885 directory, but supporting @file{/usr/share/aclocal/} for backward
3886 compatibility should be really easy provided all macros are properly
3887 written (@pxref{Extending aclocal}).
3888
3889
3890
3891 @node Macros
3892 @section Autoconf macros supplied with Automake
3893
3894 Automake ships with several Autoconf macros that you can use from your
3895 @file{configure.ac}.  When you use one of them it will be included by
3896 @command{aclocal} in @file{aclocal.m4}.
3897
3898 @menu
3899 * Public Macros::               Macros that you can use.
3900 * Obsolete Macros::             Macros that you should stop using.
3901 * Private Macros::              Macros that you should not use.
3902 @end menu
3903
3904 @c consider generating the following subsections automatically from m4 files.
3905
3906 @node Public Macros
3907 @subsection Public Macros
3908
3909 @table @code
3910
3911 @item AM_ENABLE_MULTILIB
3912 @acindex AM_ENABLE_MULTILIB
3913
3914 This is used when a ``multilib'' library is being built.  Please be
3915 aware that multilib support @emph{will be removed} from the Automake
3916 core in the next major release, and then @emph{this macro will go away
3917 as well} (even if a ``frozen'' version of will remain available in the
3918 @file{contrib/} directory of the Automake distribution).
3919
3920 The first optional argument is the name of the @file{Makefile} being
3921 generated; it defaults to @samp{Makefile}.  The second optional argument
3922 is used to find the top source directory; it defaults to the empty
3923 string (generally this should not be used unless you are familiar with
3924 the internals).  @xref{Multilibs}.
3925
3926 @item AM_INIT_AUTOMAKE([OPTIONS])
3927 @itemx AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
3928 @acindex AM_INIT_AUTOMAKE
3929 Runs many macros required for proper operation of the generated Makefiles.
3930
3931 @vindex AUTOMAKE_OPTIONS
3932 This macro has two forms, the first of which is preferred.
3933 In this form, @code{AM_INIT_AUTOMAKE} is called with a
3934 single argument: a space-separated list of Automake options that should
3935 be applied to every @file{Makefile.am} in the tree.  The effect is as if
3936 each option were listed in @code{AUTOMAKE_OPTIONS} (@pxref{Options}).
3937
3938 @acindex AC_INIT
3939 The second, deprecated, form of @code{AM_INIT_AUTOMAKE} has two required
3940 arguments: the package and the version number.  This form is
3941 obsolete because the @var{package} and @var{version} can be obtained
3942 from Autoconf's @code{AC_INIT} macro (which itself has an old and a new
3943 form).
3944
3945 If your @file{configure.ac} has:
3946
3947 @example
3948 AC_INIT([src/foo.c])
3949 AM_INIT_AUTOMAKE([mumble], [1.5])
3950 @end example
3951
3952 @noindent
3953 you can modernize it as follows:
3954
3955 @example
3956 AC_INIT([mumble], [1.5])
3957 AC_CONFIG_SRCDIR([src/foo.c])
3958 AM_INIT_AUTOMAKE
3959 @end example
3960
3961 Note that if you're upgrading your @file{configure.ac} from an earlier
3962 version of Automake, it is not always correct to simply move the
3963 package and version arguments from @code{AM_INIT_AUTOMAKE} directly to
3964 @code{AC_INIT}, as in the example above.  The first argument to
3965 @code{AC_INIT} should be the name of your package (e.g., @samp{GNU
3966 Automake}), not the tarball name (e.g., @samp{automake}) that you used
3967 to pass to @code{AM_INIT_AUTOMAKE}.  Autoconf tries to derive a
3968 tarball name from the package name, which should work for most but not
3969 all package names.  (If it doesn't work for yours, you can use the
3970 four-argument form of @code{AC_INIT} to provide the tarball name
3971 explicitly).
3972
3973 @cindex @code{PACKAGE}, prevent definition
3974 @cindex @code{VERSION}, prevent definition
3975 @opindex no-define
3976 By default this macro @code{AC_DEFINE}'s @code{PACKAGE} and
3977 @code{VERSION}.  This can be avoided by passing the @option{no-define}
3978 option, as in:
3979 @example
3980 AM_INIT_AUTOMAKE([gnits 1.5 no-define dist-bzip2])
3981 @end example
3982 or by passing a third non-empty argument to the obsolete form.
3983
3984 @item AM_PATH_LISPDIR
3985 @acindex AM_PATH_LISPDIR
3986 @vindex EMACS
3987 @vindex lispdir
3988 Searches for the program @command{emacs}, and, if found, sets the
3989 output variable @code{lispdir} to the full path to Emacs' site-lisp
3990 directory.
3991
3992 Note that this test assumes the @command{emacs} found to be a version
3993 that supports Emacs Lisp (such as GNU Emacs or XEmacs).  Other
3994 emacsen can cause this test to hang (some, like old versions of
3995 MicroEmacs, start up in interactive mode, requiring @kbd{C-x C-c} to
3996 exit, which is hardly obvious for a non-emacs user).  In most cases,
3997 however, you should be able to use @kbd{C-c} to kill the test.  In
3998 order to avoid problems, you can set @env{EMACS} to ``no'' in the
3999 environment, or use the @option{--with-lispdir} option to
4000 @command{configure} to explicitly set the correct path (if you're sure
4001 you have an @command{emacs} that supports Emacs Lisp).
4002
4003 @item AM_PROG_AS
4004 @acindex AM_PROG_AS
4005 @vindex CCAS
4006 @vindex CCASFLAGS
4007 Use this macro when you have assembly code in your project.  This will
4008 choose the assembler for you (by default the C compiler) and set
4009 @code{CCAS}, and will also set @code{CCASFLAGS} if required.
4010
4011 @item AM_PROG_CC_C_O
4012 @acindex AM_PROG_CC_C_O
4013 @acindex AC_PROG_CC_C_O
4014 This is like @code{AC_PROG_CC_C_O}, but it generates its results in
4015 the manner required by Automake.  You must use this instead of
4016 @code{AC_PROG_CC_C_O} when you need this functionality, that is, when
4017 using per-target flags or subdir-objects with C sources.
4018
4019 @item AM_PROG_LEX
4020 @acindex AM_PROG_LEX
4021 @acindex AC_PROG_LEX
4022 @cindex HP-UX 10, @command{lex} problems
4023 @cindex @command{lex} problems with HP-UX 10
4024 Like @code{AC_PROG_LEX} (@pxref{Particular Programs, , Particular
4025 Program Checks, autoconf, The Autoconf Manual}), but uses the
4026 @command{missing} script on systems that do not have @command{lex}.
4027 HP-UX 10 is one such system.
4028
4029 @item AM_PROG_GCJ
4030 @acindex AM_PROG_GCJ
4031 @vindex GCJ
4032 @vindex GCJFLAGS
4033 This macro finds the @command{gcj} program or causes an error.  It sets
4034 @code{GCJ} and @code{GCJFLAGS}.  @command{gcj} is the Java front-end to the
4035 GNU Compiler Collection.
4036
4037 @item AM_PROG_UPC([@var{compiler-search-list}])
4038 @acindex AM_PROG_UPC
4039 @vindex UPC
4040 Find a compiler for Unified Parallel C and define the @code{UPC}
4041 variable.  The default @var{compiler-search-list} is @samp{upcc upc}.
4042 This macro will abort @command{configure} if no Unified Parallel C
4043 compiler is found.
4044
4045 @item AM_SILENT_RULES
4046 @acindex AM_SILENT_RULES
4047 Enable the machinery for less verbose build output (@pxref{Options}).
4048
4049 @item AM_WITH_DMALLOC
4050 @acindex AM_WITH_DMALLOC
4051 @cindex @command{dmalloc}, support for
4052 @vindex WITH_DMALLOC
4053 @opindex --with-dmalloc
4054 Add support for the @uref{http://dmalloc.com/, Dmalloc package}.  If
4055 the user runs @command{configure} with @option{--with-dmalloc}, then
4056 define @code{WITH_DMALLOC} and add @option{-ldmalloc} to @code{LIBS}.
4057
4058 @end table
4059
4060
4061 @node Obsolete Macros
4062 @subsection Obsolete Macros
4063 @cindex obsolete macros
4064 @cindex autoupdate
4065
4066 Although using some of the following macros was required in past
4067 releases, you should not use any of them in new code.  Running
4068 @command{autoupdate} should adjust your @file{configure.ac}
4069 automatically (@pxref{autoupdate Invocation, , Using
4070 @command{autoupdate} to Modernize @file{configure.ac}, autoconf, The
4071 Autoconf Manual}).
4072
4073 @table @code
4074 @item AM_C_PROTOTYPES
4075 @acindex AM_C_PROTOTYPES
4076 @vindex ANSI2KNR
4077 @vindex U
4078 Check to see if function prototypes are understood by the compiler.  If
4079 so, define @samp{PROTOTYPES} and set the output variables @code{U} and
4080 @code{ANSI2KNR} to the empty string.  Otherwise, set @code{U} to
4081 @samp{_} and @code{ANSI2KNR} to @samp{./ansi2knr}.  Automake used these
4082 values to implement the deprecated de-ANSI-fication feature; however,
4083 support for @emph{that feature will be removed} in the next major Automake
4084 release, and then @emph{these macros and variables will go away as well}.
4085
4086 @item AM_CONFIG_HEADER
4087 @acindex AM_CONFIG_HEADER
4088 Automake will generate rules to automatically regenerate the config
4089 header.  This obsolete macro is a synonym of @code{AC_CONFIG_HEADERS}
4090 today (@pxref{Optional}).
4091
4092 @item AM_HEADER_TIOCGWINSZ_NEEDS_SYS_IOCTL
4093 @acindex AM_HEADER_TIOCGWINSZ_NEEDS_SYS_IOCTL
4094 If the use of @code{TIOCGWINSZ} requires @file{<sys/ioctl.h>}, then
4095 define @code{GWINSZ_IN_SYS_IOCTL}.  Otherwise @code{TIOCGWINSZ} can be
4096 found in @file{<termios.h>}.  This macro is obsolete, you should
4097 use Autoconf's @code{AC_HEADER_TIOCGWINSZ} instead.
4098
4099 @item AM_PROG_MKDIR_P
4100 @acindex AM_PROG_MKDIR_P
4101 @cindex @code{mkdir -p}, macro check
4102 @vindex MKDIR_P
4103 @vindex mkdir_p
4104
4105 From Automake 1.8 to 1.9.6 this macro used to define the output
4106 variable @code{mkdir_p} to one of @code{mkdir -p}, @code{install-sh
4107 -d}, or @code{mkinstalldirs}.
4108
4109 Nowadays Autoconf provides a similar functionality with
4110 @code{AC_PROG_MKDIR_P} (@pxref{Particular Programs, , Particular
4111 Program Checks, autoconf, The Autoconf Manual}), however this defines
4112 the output variable @code{MKDIR_P} instead.  Therefore
4113 @code{AM_PROG_MKDIR_P} has been rewritten as a thin wrapper around
4114 @code{AC_PROG_MKDIR_P} to define @code{mkdir_p} to the same value as
4115 @code{MKDIR_P} for backward compatibility.
4116
4117 If you are using Automake, there is normally no reason to call this
4118 macro, because @code{AM_INIT_AUTOMAKE} already does so.  However, make
4119 sure that the custom rules in your @file{Makefile}s use
4120 @code{$(MKDIR_P)} and not @code{$(mkdir_p)}.  Even if both variables
4121 still work, the latter should be considered obsolete.
4122
4123 If you are not using Automake, please call @code{AC_PROG_MKDIR_P}
4124 instead of @code{AM_PROG_MKDIR_P}.
4125
4126 @item AM_SYS_POSIX_TERMIOS
4127 @acindex AM_SYS_POSIX_TERMIOS
4128 @cindex POSIX termios headers
4129 @cindex termios POSIX headers
4130 Check to see if POSIX termios headers and functions are available on the
4131 system.  If so, set the shell variable @code{am_cv_sys_posix_termios} to
4132 @samp{yes}.  If not, set the variable to @samp{no}.  This macro is obsolete,
4133 you should use Autoconf's @code{AC_SYS_POSIX_TERMIOS} instead.
4134
4135 @item AM_WITH_REGEX
4136 @acindex AM_WITH_REGEX
4137 @vindex WITH_REGEX
4138 @opindex --with-regex
4139 @cindex regex package
4140 @cindex rx package
4141 Adds @option{--with-regex} to the @command{configure} command line.  If
4142 specified (the default), then the @samp{regex} regular expression
4143 library is used, @file{regex.o} is put into @code{LIBOBJS}, and
4144 @code{WITH_REGEX} is defined.  If @option{--without-regex} is given, then
4145 the @samp{rx} regular expression library is used, and @file{rx.o} is put
4146 into @code{LIBOBJS}.  This macro is obsolete now (since @samp{rx} doesn't
4147 seem to be maintained), and @emph{will be removed the next major version
4148 of Automake}.  Consider using gnulib if you need regex functionality.
4149
4150 @end table
4151
4152
4153 @node Private Macros
4154 @subsection Private Macros
4155
4156 The following macros are private macros you should not call directly.
4157 They are called by the other public macros when appropriate.  Do not
4158 rely on them, as they might be changed in a future version.  Consider
4159 them as implementation details; or better, do not consider them at all:
4160 skip this section!
4161
4162 @ftable @code
4163 @item _AM_DEPENDENCIES
4164 @itemx AM_SET_DEPDIR
4165 @itemx AM_DEP_TRACK
4166 @itemx AM_OUTPUT_DEPENDENCY_COMMANDS
4167 These macros are used to implement Automake's automatic dependency
4168 tracking scheme.  They are called automatically by Automake when
4169 required, and there should be no need to invoke them manually.
4170
4171 @item AM_MAKE_INCLUDE
4172 This macro is used to discover how the user's @command{make} handles
4173 @code{include} statements.  This macro is automatically invoked when
4174 needed; there should be no need to invoke it manually.
4175
4176 @item AM_PROG_INSTALL_STRIP
4177 This is used to find a version of @code{install} that can be used to
4178 strip a program at installation time.  This macro is automatically
4179 included when required.
4180
4181 @item AM_SANITY_CHECK
4182 This checks to make sure that a file created in the build directory is
4183 newer than a file in the source directory.  This can fail on systems
4184 where the clock is set incorrectly.  This macro is automatically run
4185 from @code{AM_INIT_AUTOMAKE}.
4186
4187 @end ftable
4188
4189
4190 @node Directories
4191 @chapter Directories
4192
4193 For simple projects that distribute all files in the same directory
4194 it is enough to have a single @file{Makefile.am} that builds
4195 everything in place.
4196
4197 In larger projects it is common to organize files in different
4198 directories, in a tree.  For instance one directory per program, per
4199 library or per module.  The traditional approach is to build these
4200 subdirectories recursively: each directory contains its @file{Makefile}
4201 (generated from @file{Makefile.am}), and when @command{make} is run
4202 from the top level directory it enters each subdirectory in turn to
4203 build its contents.
4204
4205 @menu
4206 * Subdirectories::              Building subdirectories recursively
4207 * Conditional Subdirectories::  Conditionally not building directories
4208 * Alternative::                 Subdirectories without recursion
4209 * Subpackages::                 Nesting packages
4210 @end menu
4211
4212 @node Subdirectories
4213 @section Recursing subdirectories
4214
4215 @cindex @code{SUBDIRS}, explained
4216
4217 In packages with subdirectories, the top level @file{Makefile.am} must
4218 tell Automake which subdirectories are to be built.  This is done via
4219 the @code{SUBDIRS} variable.
4220 @vindex SUBDIRS
4221
4222 The @code{SUBDIRS} variable holds a list of subdirectories in which
4223 building of various sorts can occur.  The rules for many targets
4224 (e.g., @code{all}) in the generated @file{Makefile} will run commands
4225 both locally and in all specified subdirectories.  Note that the
4226 directories listed in @code{SUBDIRS} are not required to contain
4227 @file{Makefile.am}s; only @file{Makefile}s (after configuration).
4228 This allows inclusion of libraries from packages that do not use
4229 Automake (such as @code{gettext}; see also @ref{Third-Party
4230 Makefiles}).
4231
4232 In packages that use subdirectories, the top-level @file{Makefile.am} is
4233 often very short.  For instance, here is the @file{Makefile.am} from the
4234 GNU Hello distribution:
4235
4236 @example
4237 EXTRA_DIST = BUGS ChangeLog.O README-alpha
4238 SUBDIRS = doc intl po src tests
4239 @end example
4240
4241 When Automake invokes @command{make} in a subdirectory, it uses the value
4242 of the @code{MAKE} variable.  It passes the value of the variable
4243 @code{AM_MAKEFLAGS} to the @command{make} invocation; this can be set in
4244 @file{Makefile.am} if there are flags you must always pass to
4245 @command{make}.
4246 @vindex MAKE
4247 @vindex AM_MAKEFLAGS
4248
4249 The directories mentioned in @code{SUBDIRS} are usually direct
4250 children of the current directory, each subdirectory containing its
4251 own @file{Makefile.am} with a @code{SUBDIRS} pointing to deeper
4252 subdirectories.  Automake can be used to construct packages of
4253 arbitrary depth this way.
4254
4255 By default, Automake generates @file{Makefiles} that work depth-first
4256 in postfix order: the subdirectories are built before the current
4257 directory.  However, it is possible to change this ordering.  You can
4258 do this by putting @samp{.} into @code{SUBDIRS}.  For instance,
4259 putting @samp{.} first will cause a prefix ordering of
4260 directories.
4261
4262 Using
4263
4264 @example
4265 SUBDIRS = lib src . test
4266 @end example
4267
4268 @noindent
4269 will cause @file{lib/} to be built before @file{src/}, then the
4270 current directory will be built, finally the @file{test/} directory
4271 will be built.  It is customary to arrange test directories to be
4272 built after everything else since they are meant to test what has
4273 been constructed.
4274
4275 All @code{clean} rules are run in reverse order of build rules.
4276
4277 @node Conditional Subdirectories
4278 @section Conditional Subdirectories
4279 @cindex Subdirectories, building conditionally
4280 @cindex Conditional subdirectories
4281 @cindex @code{SUBDIRS}, conditional
4282 @cindex Conditional @code{SUBDIRS}
4283
4284 It is possible to define the @code{SUBDIRS} variable conditionally if,
4285 like in the case of GNU Inetutils, you want to only build a subset of
4286 the entire package.
4287
4288 To illustrate how this works, let's assume we have two directories
4289 @file{src/} and @file{opt/}.  @file{src/} should always be built, but we
4290 want to decide in @command{configure} whether @file{opt/} will be built
4291 or not.  (For this example we will assume that @file{opt/} should be
4292 built when the variable @samp{$want_opt} was set to @samp{yes}.)
4293
4294 Running @command{make} should thus recurse into @file{src/} always, and
4295 then maybe in @file{opt/}.
4296
4297 However @samp{make dist} should always recurse into both @file{src/}
4298 and @file{opt/}.  Because @file{opt/} should be distributed even if it
4299 is not needed in the current configuration.  This means
4300 @file{opt/Makefile} should be created @emph{unconditionally}.
4301
4302 There are two ways to setup a project like this.  You can use Automake
4303 conditionals (@pxref{Conditionals}) or use Autoconf @code{AC_SUBST}
4304 variables (@pxref{Setting Output Variables, , Setting Output
4305 Variables, autoconf, The Autoconf Manual}).  Using Automake
4306 conditionals is the preferred solution.  Before we illustrate these
4307 two possibilities, let's introduce @code{DIST_SUBDIRS}.
4308
4309 @menu
4310 * SUBDIRS vs DIST_SUBDIRS::     Two sets of directories
4311 * Subdirectories with AM_CONDITIONAL::  Specifying conditional subdirectories
4312 * Subdirectories with AC_SUBST::  Another way for conditional recursion
4313 * Unconfigured Subdirectories::  Not even creating a @samp{Makefile}
4314 @end menu
4315
4316 @node SUBDIRS vs DIST_SUBDIRS
4317 @subsection @code{SUBDIRS} vs.@: @code{DIST_SUBDIRS}
4318 @cindex @code{DIST_SUBDIRS}, explained
4319
4320 Automake considers two sets of directories, defined by the variables
4321 @code{SUBDIRS} and @code{DIST_SUBDIRS}.
4322
4323 @code{SUBDIRS} contains the subdirectories of the current directory
4324 that must be built (@pxref{Subdirectories}).  It must be defined
4325 manually; Automake will never guess a directory is to be built.  As we
4326 will see in the next two sections, it is possible to define it
4327 conditionally so that some directory will be omitted from the build.
4328
4329 @code{DIST_SUBDIRS} is used in rules that need to recurse in all
4330 directories, even those that have been conditionally left out of the
4331 build.  Recall our example where we may not want to build subdirectory
4332 @file{opt/}, but yet we want to distribute it?  This is where
4333 @code{DIST_SUBDIRS} comes into play: @samp{opt} may not appear in
4334 @code{SUBDIRS}, but it must appear in @code{DIST_SUBDIRS}.
4335
4336 Precisely, @code{DIST_SUBDIRS} is used by @samp{make
4337 maintainer-clean}, @samp{make distclean} and @samp{make dist}.  All
4338 other recursive rules use @code{SUBDIRS}.
4339
4340 If @code{SUBDIRS} is defined conditionally using Automake
4341 conditionals, Automake will define @code{DIST_SUBDIRS} automatically
4342 from the possible values of @code{SUBDIRS} in all conditions.
4343
4344 If @code{SUBDIRS} contains @code{AC_SUBST} variables,
4345 @code{DIST_SUBDIRS} will not be defined correctly because Automake
4346 does not know the possible values of these variables.  In this case
4347 @code{DIST_SUBDIRS} needs to be defined manually.
4348
4349 @node Subdirectories with AM_CONDITIONAL
4350 @subsection Subdirectories with @code{AM_CONDITIONAL}
4351 @cindex @code{SUBDIRS} and @code{AM_CONDITIONAL}
4352 @cindex @code{AM_CONDITIONAL} and @code{SUBDIRS}
4353
4354 @c Keep in sync with subcond2.test.
4355
4356 @file{configure} should output the @file{Makefile} for each directory
4357 and define a condition into which @file{opt/} should be built.
4358
4359 @example
4360 @dots{}
4361 AM_CONDITIONAL([COND_OPT], [test "$want_opt" = yes])
4362 AC_CONFIG_FILES([Makefile src/Makefile opt/Makefile])
4363 @dots{}
4364 @end example
4365
4366 Then @code{SUBDIRS} can be defined in the top-level @file{Makefile.am}
4367 as follows.
4368
4369 @example
4370 if COND_OPT
4371   MAYBE_OPT = opt
4372 endif
4373 SUBDIRS = src $(MAYBE_OPT)
4374 @end example
4375
4376 As you can see, running @command{make} will rightly recurse into
4377 @file{src/} and maybe @file{opt/}.
4378
4379 @vindex DIST_SUBDIRS
4380 As you can't see, running @samp{make dist} will recurse into both
4381 @file{src/} and @file{opt/} directories because @samp{make dist}, unlike
4382 @samp{make all}, doesn't use the @code{SUBDIRS} variable.  It uses the
4383 @code{DIST_SUBDIRS} variable.
4384
4385 In this case Automake will define @samp{DIST_SUBDIRS = src opt}
4386 automatically because it knows that @code{MAYBE_OPT} can contain
4387 @samp{opt} in some condition.
4388
4389 @node Subdirectories with AC_SUBST
4390 @subsection Subdirectories with @code{AC_SUBST}
4391 @cindex @code{SUBDIRS} and @code{AC_SUBST}
4392 @cindex @code{AC_SUBST} and @code{SUBDIRS}
4393
4394 @c Keep in sync with subcond3.test.
4395
4396 Another possibility is to define @code{MAYBE_OPT} from
4397 @file{./configure} using @code{AC_SUBST}:
4398
4399 @example
4400 @dots{}
4401 if test "$want_opt" = yes; then
4402   MAYBE_OPT=opt
4403 else
4404   MAYBE_OPT=
4405 fi
4406 AC_SUBST([MAYBE_OPT])
4407 AC_CONFIG_FILES([Makefile src/Makefile opt/Makefile])
4408 @dots{}
4409 @end example
4410
4411 In this case the top-level @file{Makefile.am} should look as follows.
4412
4413 @example
4414 SUBDIRS = src $(MAYBE_OPT)
4415 DIST_SUBDIRS = src opt
4416 @end example
4417
4418 The drawback is that since Automake cannot guess what the possible
4419 values of @code{MAYBE_OPT} are, it is necessary to define
4420 @code{DIST_SUBDIRS}.
4421
4422 @node Unconfigured Subdirectories
4423 @subsection Unconfigured Subdirectories
4424 @cindex Subdirectories, configured conditionally
4425
4426 The semantics of @code{DIST_SUBDIRS} are often misunderstood by some
4427 users that try to @emph{configure and build} subdirectories
4428 conditionally.  Here by configuring we mean creating the
4429 @file{Makefile} (it might also involve running a nested
4430 @command{configure} script: this is a costly operation that explains
4431 why people want to do it conditionally, but only the @file{Makefile}
4432 is relevant to the discussion).
4433
4434 The above examples all assume that every @file{Makefile} is created,
4435 even in directories that are not going to be built.  The simple reason
4436 is that we want @samp{make dist} to distribute even the directories
4437 that are not being built (e.g., platform-dependent code), hence
4438 @file{make dist} must recurse into the subdirectory, hence this
4439 directory must be configured and appear in @code{DIST_SUBDIRS}.
4440
4441 Building packages that do not configure every subdirectory is a tricky
4442 business, and we do not recommend it to the novice as it is easy to
4443 produce an incomplete tarball by mistake.  We will not discuss this
4444 topic in depth here, yet for the adventurous here are a few rules to
4445 remember.
4446
4447 @cartouche
4448 @itemize
4449 @item @code{SUBDIRS} should always be a subset of @code{DIST_SUBDIRS}.
4450
4451 It makes little sense to have a directory in @code{SUBDIRS} that
4452 is not in @code{DIST_SUBDIRS}.  Think of the former as a way to tell
4453 which directories listed in the latter should be built.
4454 @item Any directory listed in @code{DIST_SUBDIRS} and @code{SUBDIRS}
4455 must be configured.
4456
4457 I.e., the @file{Makefile} must exists or the recursive @command{make}
4458 rules will not be able to process the directory.
4459 @item Any configured directory must be listed in @code{DIST_SUBDIRS}.
4460
4461 So that the cleaning rules remove the generated @file{Makefile}s.
4462 It would be correct to see @code{DIST_SUBDIRS} as a variable that
4463 lists all the directories that have been configured.
4464 @end itemize
4465 @end cartouche
4466
4467 In order to prevent recursion in some unconfigured directory you
4468 must therefore ensure that this directory does not appear in
4469 @code{DIST_SUBDIRS} (and @code{SUBDIRS}).  For instance, if you define
4470 @code{SUBDIRS} conditionally using @code{AC_SUBST} and do not define
4471 @code{DIST_SUBDIRS} explicitly, it will be default to
4472 @samp{$(SUBDIRS)}; another possibility is to force @code{DIST_SUBDIRS
4473 = $(SUBDIRS)}.
4474
4475 Of course, directories that are omitted from @code{DIST_SUBDIRS} will
4476 not be distributed unless you make other arrangements for this to
4477 happen (for instance, always running @samp{make dist} in a
4478 configuration where all directories are known to appear in
4479 @code{DIST_SUBDIRS}; or writing a @code{dist-hook} target to
4480 distribute these directories).
4481
4482 @cindex Subdirectories, not distributed
4483 In few packages, unconfigured directories are not even expected to
4484 be distributed.  Although these packages do not require the
4485 aforementioned extra arrangements, there is another pitfall.  If the
4486 name of a directory appears in @code{SUBDIRS} or @code{DIST_SUBDIRS},
4487 @command{automake} will make sure the directory exists.  Consequently
4488 @command{automake} cannot be run on such a distribution when one
4489 directory has been omitted.  One way to avoid this check is to use the
4490 @code{AC_SUBST} method to declare conditional directories; since
4491 @command{automake} does not know the values of @code{AC_SUBST}
4492 variables it cannot ensure the corresponding directory exists.
4493
4494 @node Alternative
4495 @section An Alternative Approach to Subdirectories
4496
4497 If you've ever read Peter Miller's excellent paper,
4498 @uref{http://miller.emu.id.au/pmiller/books/rmch/,
4499 Recursive Make Considered Harmful}, the preceding sections on the use of
4500 subdirectories will probably come as unwelcome advice.  For those who
4501 haven't read the paper, Miller's main thesis is that recursive
4502 @command{make} invocations are both slow and error-prone.
4503
4504 Automake provides sufficient cross-directory support @footnote{We
4505 believe.  This work is new and there are probably warts.
4506 @xref{Introduction}, for information on reporting bugs.} to enable you
4507 to write a single @file{Makefile.am} for a complex multi-directory
4508 package.
4509
4510
4511 By default an installable file specified in a subdirectory will have its
4512 directory name stripped before installation.  For instance, in this
4513 example, the header file will be installed as
4514 @file{$(includedir)/stdio.h}:
4515
4516 @example
4517 include_HEADERS = inc/stdio.h
4518 @end example
4519
4520 @vindex nobase_
4521 @cindex @code{nobase_} prefix
4522 @cindex Path stripping, avoiding
4523 @cindex Avoiding path stripping
4524
4525 However, the @samp{nobase_} prefix can be used to circumvent this path
4526 stripping.  In this example, the header file will be installed as
4527 @file{$(includedir)/sys/types.h}:
4528
4529 @example
4530 nobase_include_HEADERS = sys/types.h
4531 @end example
4532
4533 @cindex @code{nobase_} and @code{dist_} or @code{nodist_}
4534 @cindex @code{dist_} and @code{nobase_}
4535 @cindex @code{nodist_} and @code{nobase_}
4536 @vindex dist_
4537 @vindex nodist_
4538
4539 @samp{nobase_} should be specified first when used in conjunction with
4540 either @samp{dist_} or @samp{nodist_} (@pxref{Fine-grained Distribution
4541 Control}).  For instance:
4542
4543 @example
4544 nobase_dist_pkgdata_DATA = images/vortex.pgm sounds/whirl.ogg
4545 @end example
4546
4547 Finally, note that a variable using the @samp{nobase_} prefix can
4548 often be replaced by several variables, one for each destination
4549 directory (@pxref{Uniform}).  For instance, the last example could be
4550 rewritten as follows:
4551
4552 @c Keep in sync with primary-prefix-couples-documented-valid.test.
4553 @example
4554 imagesdir = $(pkgdatadir)/images
4555 soundsdir = $(pkgdatadir)/sounds
4556 dist_images_DATA = images/vortex.pgm
4557 dist_sounds_DATA = sounds/whirl.ogg
4558 @end example
4559
4560 @noindent
4561 This latter syntax makes it possible to change one destination
4562 directory without changing the layout of the source tree.
4563
4564 Currently, @samp{nobase_*_LTLIBRARIES} are the only exception to this
4565 rule, in that there is no particular installation order guarantee for
4566 an otherwise equivalent set of variables without @samp{nobase_} prefix.
4567
4568 @node Subpackages
4569 @section Nesting Packages
4570 @cindex Nesting packages
4571 @cindex Subpackages
4572 @acindex AC_CONFIG_SUBDIRS
4573 @acindex AC_CONFIG_AUX_DIR
4574
4575
4576 In the GNU Build System, packages can be nested to arbitrary depth.
4577 This means that a package can embed other packages with their own
4578 @file{configure}, @file{Makefile}s, etc.
4579
4580 These other packages should just appear as subdirectories of their
4581 parent package.  They must be listed in @code{SUBDIRS} like other
4582 ordinary directories.  However the subpackage's @file{Makefile}s
4583 should be output by its own @file{configure} script, not by the
4584 parent's @file{configure}.  This is achieved using the
4585 @code{AC_CONFIG_SUBDIRS} Autoconf macro (@pxref{Subdirectories,
4586 AC_CONFIG_SUBDIRS, Configuring Other Packages in Subdirectories,
4587 autoconf, The Autoconf Manual}).
4588
4589 Here is an example package for an @code{arm} program that links with
4590 a @code{hand} library that is a nested package in subdirectory
4591 @file{hand/}.
4592
4593 @code{arm}'s @file{configure.ac}:
4594
4595 @example
4596 AC_INIT([arm], [1.0])
4597 AC_CONFIG_AUX_DIR([.])
4598 AM_INIT_AUTOMAKE
4599 AC_PROG_CC
4600 AC_CONFIG_FILES([Makefile])
4601 # Call hand's ./configure script recursively.
4602 AC_CONFIG_SUBDIRS([hand])
4603 AC_OUTPUT
4604 @end example
4605
4606 @code{arm}'s @file{Makefile.am}:
4607
4608 @example
4609 # Build the library in the hand subdirectory first.
4610 SUBDIRS = hand
4611
4612 # Include hand's header when compiling this directory.
4613 AM_CPPFLAGS = -I$(srcdir)/hand
4614
4615 bin_PROGRAMS = arm
4616 arm_SOURCES = arm.c
4617 # link with the hand library.
4618 arm_LDADD = hand/libhand.a
4619 @end example
4620
4621 Now here is @code{hand}'s @file{hand/configure.ac}:
4622
4623 @example
4624 AC_INIT([hand], [1.2])
4625 AC_CONFIG_AUX_DIR([.])
4626 AM_INIT_AUTOMAKE
4627 AC_PROG_CC
4628 AC_PROG_RANLIB
4629 AC_CONFIG_FILES([Makefile])
4630 AC_OUTPUT
4631 @end example
4632
4633 @noindent
4634 and its @file{hand/Makefile.am}:
4635
4636 @example
4637 lib_LIBRARIES = libhand.a
4638 libhand_a_SOURCES = hand.c
4639 @end example
4640
4641 When @samp{make dist} is run from the top-level directory it will
4642 create an archive @file{arm-1.0.tar.gz} that contains the @code{arm}
4643 code as well as the @file{hand} subdirectory.  This package can be
4644 built and installed like any ordinary package, with the usual
4645 @samp{./configure && make && make install} sequence (the @code{hand}
4646 subpackage will be built and installed by the process).
4647
4648 When @samp{make dist} is run from the hand directory, it will create a
4649 self-contained @file{hand-1.2.tar.gz} archive.  So although it appears
4650 to be embedded in another package, it can still be used separately.
4651
4652 The purpose of the @samp{AC_CONFIG_AUX_DIR([.])} instruction is to
4653 force Automake and Autoconf to search for auxiliary scripts in the
4654 current directory.  For instance, this means that there will be two
4655 copies of @file{install-sh}: one in the top-level of the @code{arm}
4656 package, and another one in the @file{hand/} subdirectory for the
4657 @code{hand} package.
4658
4659 The historical default is to search for these auxiliary scripts in
4660 the parent directory and the grandparent directory.  So if the
4661 @samp{AC_CONFIG_AUX_DIR([.])} line was removed from
4662 @file{hand/configure.ac}, that subpackage would share the auxiliary
4663 script of the @code{arm} package.  This may looks like a gain in size
4664 (a few kilobytes), but it is actually a loss of modularity as the
4665 @code{hand} subpackage is no longer self-contained (@samp{make dist}
4666 in the subdirectory will not work anymore).
4667
4668 Packages that do not use Automake need more work to be integrated this
4669 way.  @xref{Third-Party Makefiles}.
4670
4671 @node Programs
4672 @chapter Building Programs and Libraries
4673
4674 A large part of Automake's functionality is dedicated to making it easy
4675 to build programs and libraries.
4676
4677 @menu
4678 * A Program::                   Building a program
4679 * A Library::                   Building a library
4680 * A Shared Library::            Building a Libtool library
4681 * Program and Library Variables::  Variables controlling program and
4682                                 library builds
4683 * Default _SOURCES::            Default source files
4684 * LIBOBJS::                     Special handling for LIBOBJS and ALLOCA
4685 * Program Variables::           Variables used when building a program
4686 * Yacc and Lex::                Yacc and Lex support
4687 * C++ Support::                 Compiling C++ sources
4688 * Objective C Support::         Compiling Objective C sources
4689 * Unified Parallel C Support::  Compiling Unified Parallel C sources
4690 * Assembly Support::            Compiling assembly sources
4691 * Fortran 77 Support::          Compiling Fortran 77 sources
4692 * Fortran 9x Support::          Compiling Fortran 9x sources
4693 * Java Support with gcj::       Compiling Java sources using gcj
4694 * Vala Support::                Compiling Vala sources
4695 * Support for Other Languages::  Compiling other languages
4696 * ANSI::                        Automatic de-ANSI-fication (deprecated, soon to be removed)
4697 * Dependencies::                Automatic dependency tracking
4698 * EXEEXT::                      Support for executable extensions
4699 @end menu
4700
4701
4702 @node A Program
4703 @section Building a program
4704
4705 In order to build a program, you need to tell Automake which sources
4706 are part of it, and which libraries it should be linked with.
4707
4708 This section also covers conditional compilation of sources or
4709 programs.  Most of the comments about these also apply to libraries
4710 (@pxref{A Library}) and libtool libraries (@pxref{A Shared Library}).
4711
4712 @menu
4713 * Program Sources::             Defining program sources
4714 * Linking::                     Linking with libraries or extra objects
4715 * Conditional Sources::         Handling conditional sources
4716 * Conditional Programs::        Building a program conditionally
4717 @end menu
4718
4719 @node Program Sources
4720 @subsection Defining program sources
4721
4722 @cindex @code{PROGRAMS}, @code{bindir}
4723 @vindex _PROGRAMS
4724 @vindex bin_PROGRAMS
4725 @vindex sbin_PROGRAMS
4726 @vindex libexec_PROGRAMS
4727 @vindex pkglibexec_PROGRAMS
4728 @vindex noinst_PROGRAMS
4729 @vindex check_PROGRAMS
4730
4731 In a directory containing source that gets built into a program (as
4732 opposed to a library or a script), the @code{PROGRAMS} primary is used.
4733 Programs can be installed in @code{bindir}, @code{sbindir},
4734 @code{libexecdir}, @code{pkglibexecdir}, or not at all
4735 (@code{noinst_}).  They can also be built only for @samp{make check}, in
4736 which case the prefix is @samp{check_}.
4737
4738 For instance:
4739
4740 @example
4741 bin_PROGRAMS = hello
4742 @end example
4743
4744 In this simple case, the resulting @file{Makefile.in} will contain code
4745 to generate a program named @code{hello}.
4746
4747 Associated with each program are several assisting variables that are
4748 named after the program.  These variables are all optional, and have
4749 reasonable defaults.  Each variable, its use, and default is spelled out
4750 below; we use the ``hello'' example throughout.
4751
4752 The variable @code{hello_SOURCES} is used to specify which source files
4753 get built into an executable:
4754
4755 @example
4756 hello_SOURCES = hello.c version.c getopt.c getopt1.c getopt.h system.h
4757 @end example
4758
4759 This causes each mentioned @file{.c} file to be compiled into the
4760 corresponding @file{.o}.  Then all are linked to produce @file{hello}.
4761
4762 @cindex @code{_SOURCES} primary, defined
4763 @cindex @code{SOURCES} primary, defined
4764 @cindex Primary variable, @code{SOURCES}
4765 @vindex _SOURCES
4766
4767 If @code{hello_SOURCES} is not specified, then it defaults to the single
4768 file @file{hello.c} (@pxref{Default _SOURCES}).
4769 @vindex _SOURCES
4770 @vindex SOURCES
4771
4772 Multiple programs can be built in a single directory.  Multiple programs
4773 can share a single source file, which must be listed in each
4774 @code{_SOURCES} definition.
4775
4776 @cindex Header files in @code{_SOURCES}
4777 @cindex @code{_SOURCES} and header files
4778
4779 Header files listed in a @code{_SOURCES} definition will be included in
4780 the distribution but otherwise ignored.  In case it isn't obvious, you
4781 should not include the header file generated by @file{configure} in a
4782 @code{_SOURCES} variable; this file should not be distributed.  Lex
4783 (@file{.l}) and Yacc (@file{.y}) files can also be listed; see @ref{Yacc
4784 and Lex}.
4785
4786
4787 @node Linking
4788 @subsection Linking the program
4789
4790 If you need to link against libraries that are not found by
4791 @command{configure}, you can use @code{LDADD} to do so.  This variable is
4792 used to specify additional objects or libraries to link with; it is
4793 inappropriate for specifying specific linker flags, you should use
4794 @code{AM_LDFLAGS} for this purpose.
4795 @vindex LDADD
4796 @vindex AM_LDFLAGS
4797
4798 @cindex @code{prog_LDADD}, defined
4799
4800 Sometimes, multiple programs are built in one directory but do not share
4801 the same link-time requirements.  In this case, you can use the
4802 @code{@var{prog}_LDADD} variable (where @var{prog} is the name of the
4803 program as it appears in some @code{_PROGRAMS} variable, and usually
4804 written in lowercase) to override @code{LDADD}.  If this variable exists
4805 for a given program, then that program is not linked using @code{LDADD}.
4806 @vindex maude_LDADD
4807
4808 For instance, in GNU cpio, @code{pax}, @code{cpio} and @code{mt} are
4809 linked against the library @file{libcpio.a}.  However, @code{rmt} is
4810 built in the same directory, and has no such link requirement.  Also,
4811 @code{mt} and @code{rmt} are only built on certain architectures.  Here
4812 is what cpio's @file{src/Makefile.am} looks like (abridged):
4813
4814 @example
4815 bin_PROGRAMS = cpio pax $(MT)
4816 libexec_PROGRAMS = $(RMT)
4817 EXTRA_PROGRAMS = mt rmt
4818
4819 LDADD = ../lib/libcpio.a $(INTLLIBS)
4820 rmt_LDADD =
4821
4822 cpio_SOURCES = @dots{}
4823 pax_SOURCES = @dots{}
4824 mt_SOURCES = @dots{}
4825 rmt_SOURCES = @dots{}
4826 @end example
4827
4828 @cindex @code{_LDFLAGS}, defined
4829 @vindex maude_LDFLAGS
4830 @code{@var{prog}_LDADD} is inappropriate for passing program-specific
4831 linker flags (except for @option{-l}, @option{-L}, @option{-dlopen} and
4832 @option{-dlpreopen}).  So, use the @code{@var{prog}_LDFLAGS} variable for
4833 this purpose.
4834
4835 @cindex @code{_DEPENDENCIES}, defined
4836 @vindex maude_DEPENDENCIES
4837 @vindex EXTRA_maude_DEPENDENCIES
4838 It is also occasionally useful to have a program depend on some other
4839 target that is not actually part of that program.  This can be done
4840 using either the @code{@var{prog}_DEPENDENCIES} or the
4841 @code{EXTRA_@var{prog}_DEPENDENCIES} variable.  Each program depends on
4842 the contents both variables, but no further interpretation is done.
4843
4844 Since these dependencies are associated to the link rule used to
4845 create the programs they should normally list files used by the link
4846 command.  That is @file{*.$(OBJEXT)}, @file{*.a}, or @file{*.la}
4847 files.  In rare cases you may need to add other kinds of files such as
4848 linker scripts, but @emph{listing a source file in
4849 @code{_DEPENDENCIES} is wrong}.  If some source file needs to be built
4850 before all the components of a program are built, consider using the
4851 @code{BUILT_SOURCES} variable instead (@pxref{Sources}).
4852
4853 If @code{@var{prog}_DEPENDENCIES} is not supplied, it is computed by
4854 Automake.  The automatically-assigned value is the contents of
4855 @code{@var{prog}_LDADD}, with most configure substitutions, @option{-l},
4856 @option{-L}, @option{-dlopen} and @option{-dlpreopen} options removed.  The
4857 configure substitutions that are left in are only @samp{$(LIBOBJS)} and
4858 @samp{$(ALLOCA)}; these are left because it is known that they will not
4859 cause an invalid value for @code{@var{prog}_DEPENDENCIES} to be
4860 generated.
4861
4862 @ref{Conditional Sources} shows a situation where @code{_DEPENDENCIES}
4863 may be used.
4864
4865 The @code{EXTRA_@var{prog}_DEPENDENCIES} may be useful for cases where
4866 you merely want to augment the @command{automake}-generated
4867 @code{@var{prog}_DEPENDENCIES} rather than replacing it.
4868
4869 @cindex @code{LDADD} and @option{-l}
4870 @cindex @option{-l} and @code{LDADD}
4871 We recommend that you avoid using @option{-l} options in @code{LDADD}
4872 or @code{@var{prog}_LDADD} when referring to libraries built by your
4873 package.  Instead, write the file name of the library explicitly as in
4874 the above @code{cpio} example.  Use @option{-l} only to list
4875 third-party libraries.  If you follow this rule, the default value of
4876 @code{@var{prog}_DEPENDENCIES} will list all your local libraries and
4877 omit the other ones.
4878
4879
4880 @node Conditional Sources
4881 @subsection Conditional compilation of sources
4882
4883 You can't put a configure substitution (e.g., @samp{@@FOO@@} or
4884 @samp{$(FOO)} where @code{FOO} is defined via @code{AC_SUBST}) into a
4885 @code{_SOURCES} variable.  The reason for this is a bit hard to
4886 explain, but suffice to say that it simply won't work.  Automake will
4887 give an error if you try to do this.
4888
4889 Fortunately there are two other ways to achieve the same result.  One is
4890 to use configure substitutions in @code{_LDADD} variables, the other is
4891 to use an Automake conditional.
4892
4893 @subsubheading Conditional Compilation using @code{_LDADD} Substitutions
4894
4895 @cindex @code{EXTRA_prog_SOURCES}, defined
4896
4897 Automake must know all the source files that could possibly go into a
4898 program, even if not all the files are built in every circumstance.  Any
4899 files that are only conditionally built should be listed in the
4900 appropriate @code{EXTRA_} variable.  For instance, if
4901 @file{hello-linux.c} or @file{hello-generic.c} were conditionally included
4902 in @code{hello}, the @file{Makefile.am} would contain:
4903
4904 @example
4905 bin_PROGRAMS = hello
4906 hello_SOURCES = hello-common.c
4907 EXTRA_hello_SOURCES = hello-linux.c hello-generic.c
4908 hello_LDADD = $(HELLO_SYSTEM)
4909 hello_DEPENDENCIES = $(HELLO_SYSTEM)
4910 @end example
4911
4912 @noindent
4913 You can then setup the @samp{$(HELLO_SYSTEM)} substitution from
4914 @file{configure.ac}:
4915
4916 @example
4917 @dots{}
4918 case $host in
4919   *linux*) HELLO_SYSTEM='hello-linux.$(OBJEXT)' ;;
4920   *)       HELLO_SYSTEM='hello-generic.$(OBJEXT)' ;;
4921 esac
4922 AC_SUBST([HELLO_SYSTEM])
4923 @dots{}
4924 @end example
4925
4926 In this case, the variable @code{HELLO_SYSTEM} should be replaced by
4927 either @file{hello-linux.o} or @file{hello-generic.o}, and added to
4928 both @code{hello_DEPENDENCIES} and @code{hello_LDADD} in order to be
4929 built and linked in.
4930
4931 @subsubheading Conditional Compilation using Automake Conditionals
4932
4933 An often simpler way to compile source files conditionally is to use
4934 Automake conditionals.  For instance, you could use this
4935 @file{Makefile.am} construct to build the same @file{hello} example:
4936
4937 @example
4938 bin_PROGRAMS = hello
4939 if LINUX
4940 hello_SOURCES = hello-linux.c hello-common.c
4941 else
4942 hello_SOURCES = hello-generic.c hello-common.c
4943 endif
4944 @end example
4945
4946 In this case, @file{configure.ac} should setup the @code{LINUX}
4947 conditional using @code{AM_CONDITIONAL} (@pxref{Conditionals}).
4948
4949 When using conditionals like this you don't need to use the
4950 @code{EXTRA_} variable, because Automake will examine the contents of
4951 each variable to construct the complete list of source files.
4952
4953 If your program uses a lot of files, you will probably prefer a
4954 conditional @samp{+=}.
4955
4956 @example
4957 bin_PROGRAMS = hello
4958 hello_SOURCES = hello-common.c
4959 if LINUX
4960 hello_SOURCES += hello-linux.c
4961 else
4962 hello_SOURCES += hello-generic.c
4963 endif
4964 @end example
4965
4966 @node Conditional Programs
4967 @subsection Conditional compilation of programs
4968 @cindex Conditional programs
4969 @cindex Programs, conditional
4970
4971 Sometimes it is useful to determine the programs that are to be built
4972 at configure time.  For instance, GNU @code{cpio} only builds
4973 @code{mt} and @code{rmt} under special circumstances.  The means to
4974 achieve conditional compilation of programs are the same you can use
4975 to compile source files conditionally: substitutions or conditionals.
4976
4977 @subsubheading Conditional Programs using @command{configure} Substitutions
4978
4979 @vindex EXTRA_PROGRAMS
4980 @cindex @code{EXTRA_PROGRAMS}, defined
4981 In this case, you must notify Automake of all the programs that can
4982 possibly be built, but at the same time cause the generated
4983 @file{Makefile.in} to use the programs specified by @command{configure}.
4984 This is done by having @command{configure} substitute values into each
4985 @code{_PROGRAMS} definition, while listing all optionally built programs
4986 in @code{EXTRA_PROGRAMS}.
4987
4988 @example
4989 bin_PROGRAMS = cpio pax $(MT)
4990 libexec_PROGRAMS = $(RMT)
4991 EXTRA_PROGRAMS = mt rmt
4992 @end example
4993
4994 As explained in @ref{EXEEXT}, Automake will rewrite
4995 @code{bin_PROGRAMS}, @code{libexec_PROGRAMS}, and
4996 @code{EXTRA_PROGRAMS}, appending @samp{$(EXEEXT)} to each binary.
4997 Obviously it cannot rewrite values obtained at run-time through
4998 @command{configure} substitutions, therefore you should take care of
4999 appending @samp{$(EXEEXT)} yourself, as in @samp{AC_SUBST([MT],
5000 ['mt$@{EXEEXT@}'])}.
5001
5002 @subsubheading Conditional Programs using Automake Conditionals
5003
5004 You can also use Automake conditionals (@pxref{Conditionals}) to
5005 select programs to be built.  In this case you don't have to worry
5006 about @samp{$(EXEEXT)} or @code{EXTRA_PROGRAMS}.
5007
5008 @c Keep in sync with exeext.test.
5009 @example
5010 bin_PROGRAMS = cpio pax
5011 if WANT_MT
5012   bin_PROGRAMS += mt
5013 endif
5014 if WANT_RMT
5015   libexec_PROGRAMS = rmt
5016 endif
5017 @end example
5018
5019
5020 @node A Library
5021 @section Building a library
5022
5023 @cindex @code{_LIBRARIES} primary, defined
5024 @cindex @code{LIBRARIES} primary, defined
5025 @cindex Primary variable, @code{LIBRARIES}
5026 @vindex _LIBRARIES
5027
5028 @vindex lib_LIBRARIES
5029 @vindex pkglib_LIBRARIES
5030 @vindex noinst_LIBRARIES
5031
5032 Building a library is much like building a program.  In this case, the
5033 name of the primary is @code{LIBRARIES}.  Libraries can be installed in
5034 @code{libdir} or @code{pkglibdir}.
5035
5036 @xref{A Shared Library}, for information on how to build shared
5037 libraries using libtool and the @code{LTLIBRARIES} primary.
5038
5039 Each @code{_LIBRARIES} variable is a list of the libraries to be built.
5040 For instance, to create a library named @file{libcpio.a}, but not install
5041 it, you would write:
5042
5043 @example
5044 noinst_LIBRARIES = libcpio.a
5045 libcpio_a_SOURCES = @dots{}
5046 @end example
5047
5048 The sources that go into a library are determined exactly as they are
5049 for programs, via the @code{_SOURCES} variables.  Note that the library
5050 name is canonicalized (@pxref{Canonicalization}), so the @code{_SOURCES}
5051 variable corresponding to @file{libcpio.a} is @samp{libcpio_a_SOURCES},
5052 not @samp{libcpio.a_SOURCES}.
5053
5054 @vindex maude_LIBADD
5055 Extra objects can be added to a library using the
5056 @code{@var{library}_LIBADD} variable.  This should be used for objects
5057 determined by @command{configure}.  Again from @code{cpio}:
5058
5059 @c Keep in sync with pr401c.test.
5060 @example
5061 libcpio_a_LIBADD = $(LIBOBJS) $(ALLOCA)
5062 @end example
5063
5064 In addition, sources for extra objects that will not exist until
5065 configure-time must be added to the @code{BUILT_SOURCES} variable
5066 (@pxref{Sources}).
5067
5068 Building a static library is done by compiling all object files, then
5069 by invoking @samp{$(AR) $(ARFLAGS)} followed by the name of the
5070 library and the list of objects, and finally by calling
5071 @samp{$(RANLIB)} on that library.  You should call
5072 @code{AC_PROG_RANLIB} from your @file{configure.ac} to define
5073 @code{RANLIB} (Automake will complain otherwise).  @code{AR} and
5074 @code{ARFLAGS} default to @code{ar} and @code{cru} respectively; you
5075 can override these two variables my setting them in your
5076 @file{Makefile.am}, by @code{AC_SUBST}ing them from your
5077 @file{configure.ac}, or by defining a per-library @code{maude_AR}
5078 variable (@pxref{Program and Library Variables}).
5079
5080 @cindex Empty libraries
5081 Be careful when selecting library components conditionally.  Because
5082 building an empty library is not portable, you should ensure that any
5083 library always contains at least one object.
5084
5085 To use a static library when building a program, add it to
5086 @code{LDADD} for this program.  In the following example, the program
5087 @file{cpio} is statically linked with the library @file{libcpio.a}.
5088
5089 @example
5090 noinst_LIBRARIES = libcpio.a
5091 libcpio_a_SOURCES = @dots{}
5092
5093 bin_PROGRAMS = cpio
5094 cpio_SOURCES = cpio.c @dots{}
5095 cpio_LDADD = libcpio.a
5096 @end example
5097
5098
5099 @node A Shared Library
5100 @section Building a Shared Library
5101
5102 @cindex Shared libraries, support for
5103
5104 Building shared libraries portably is a relatively complex matter.
5105 For this reason, GNU Libtool (@pxref{Top, , Introduction, libtool, The
5106 Libtool Manual}) was created to help build shared libraries in a
5107 platform-independent way.
5108
5109 @menu
5110 * Libtool Concept::             Introducing Libtool
5111 * Libtool Libraries::           Declaring Libtool Libraries
5112 * Conditional Libtool Libraries::  Building Libtool Libraries Conditionally
5113 * Conditional Libtool Sources::  Choosing Library Sources Conditionally
5114 * Libtool Convenience Libraries::  Building Convenience Libtool Libraries
5115 * Libtool Modules::             Building Libtool Modules
5116 * Libtool Flags::               Using _LIBADD, _LDFLAGS, and _LIBTOOLFLAGS
5117 * LTLIBOBJS::                   Using $(LTLIBOBJS) and $(LTALLOCA)
5118 * Libtool Issues::              Common Issues Related to Libtool's Use
5119 @end menu
5120
5121 @node Libtool Concept
5122 @subsection The Libtool Concept
5123
5124 @cindex @command{libtool}, introduction
5125 @cindex libtool library, definition
5126 @cindex suffix @file{.la}, defined
5127 @cindex @file{.la} suffix, defined
5128
5129 Libtool abstracts shared and static libraries into a unified concept
5130 henceforth called @dfn{libtool libraries}.  Libtool libraries are
5131 files using the @file{.la} suffix, and can designate a static library,
5132 a shared library, or maybe both.  Their exact nature cannot be
5133 determined until @file{./configure} is run: not all platforms support
5134 all kinds of libraries, and users can explicitly select which
5135 libraries should be built.  (However the package's maintainers can
5136 tune the default, @pxref{AC_PROG_LIBTOOL, , The @code{AC_PROG_LIBTOOL}
5137 macro, libtool, The Libtool Manual}.)
5138
5139 @cindex suffix @file{.lo}, defined
5140 Because object files for shared and static libraries must be compiled
5141 differently, libtool is also used during compilation.  Object files
5142 built by libtool are called @dfn{libtool objects}: these are files
5143 using the @file{.lo} suffix.  Libtool libraries are built from these
5144 libtool objects.
5145
5146 You should not assume anything about the structure of @file{.la} or
5147 @file{.lo} files and how libtool constructs them: this is libtool's
5148 concern, and the last thing one wants is to learn about libtool's
5149 guts.  However the existence of these files matters, because they are
5150 used as targets and dependencies in @file{Makefile}s rules when
5151 building libtool libraries.  There are situations where you may have
5152 to refer to these, for instance when expressing dependencies for
5153 building source files conditionally (@pxref{Conditional Libtool
5154 Sources}).
5155
5156 @cindex @file{libltdl}, introduction
5157
5158 People considering writing a plug-in system, with dynamically loaded
5159 modules, should look into @file{libltdl}: libtool's dlopening library
5160 (@pxref{Using libltdl, , Using libltdl, libtool, The Libtool Manual}).
5161 This offers a portable dlopening facility to load libtool libraries
5162 dynamically, and can also achieve static linking where unavoidable.
5163
5164 Before we discuss how to use libtool with Automake in details, it
5165 should be noted that the libtool manual also has a section about how
5166 to use Automake with libtool (@pxref{Using Automake, , Using Automake
5167 with Libtool, libtool, The Libtool Manual}).
5168
5169 @node Libtool Libraries
5170 @subsection Building Libtool Libraries
5171
5172 @cindex @code{_LTLIBRARIES} primary, defined
5173 @cindex @code{LTLIBRARIES} primary, defined
5174 @cindex Primary variable, @code{LTLIBRARIES}
5175 @cindex Example of shared libraries
5176 @vindex lib_LTLIBRARIES
5177 @vindex pkglib_LTLIBRARIES
5178 @vindex _LTLIBRARIES
5179
5180 Automake uses libtool to build libraries declared with the
5181 @code{LTLIBRARIES} primary.  Each @code{_LTLIBRARIES} variable is a
5182 list of libtool libraries to build.  For instance, to create a libtool
5183 library named @file{libgettext.la}, and install it in @code{libdir},
5184 write:
5185
5186 @example
5187 lib_LTLIBRARIES = libgettext.la
5188 libgettext_la_SOURCES = gettext.c gettext.h @dots{}
5189 @end example
5190
5191 Automake predefines the variable @code{pkglibdir}, so you can use
5192 @code{pkglib_LTLIBRARIES} to install libraries in
5193 @samp{$(libdir)/@@PACKAGE@@/}.
5194
5195 If @file{gettext.h} is a public header file that needs to be installed
5196 in order for people to use the library, it should be declared using a
5197 @code{_HEADERS} variable, not in @code{libgettext_la_SOURCES}.
5198 Headers listed in the latter should be internal headers that are not
5199 part of the public interface.
5200
5201 @example
5202 lib_LTLIBRARIES = libgettext.la
5203 libgettext_la_SOURCES = gettext.c @dots{}
5204 include_HEADERS = gettext.h @dots{}
5205 @end example
5206
5207 A package can build and install such a library along with other
5208 programs that use it.  This dependency should be specified using
5209 @code{LDADD}.  The following example builds a program named
5210 @file{hello} that is linked with @file{libgettext.la}.
5211
5212 @example
5213 lib_LTLIBRARIES = libgettext.la
5214 libgettext_la_SOURCES = gettext.c @dots{}
5215
5216 bin_PROGRAMS = hello
5217 hello_SOURCES = hello.c @dots{}
5218 hello_LDADD = libgettext.la
5219 @end example
5220
5221 @noindent
5222 Whether @file{hello} is statically or dynamically linked with
5223 @file{libgettext.la} is not yet known: this will depend on the
5224 configuration of libtool and the capabilities of the host.
5225
5226
5227 @node Conditional Libtool Libraries
5228 @subsection Building Libtool Libraries Conditionally
5229 @cindex libtool libraries, conditional
5230 @cindex conditional libtool libraries
5231
5232 Like conditional programs (@pxref{Conditional Programs}), there are
5233 two main ways to build conditional libraries: using Automake
5234 conditionals or using Autoconf @code{AC_SUBST}itutions.
5235
5236 The important implementation detail you have to be aware of is that
5237 the place where a library will be installed matters to libtool: it
5238 needs to be indicated @emph{at link-time} using the @option{-rpath}
5239 option.
5240
5241 For libraries whose destination directory is known when Automake runs,
5242 Automake will automatically supply the appropriate @option{-rpath}
5243 option to libtool.  This is the case for libraries listed explicitly in
5244 some installable @code{_LTLIBRARIES} variables such as
5245 @code{lib_LTLIBRARIES}.
5246
5247 However, for libraries determined at configure time (and thus
5248 mentioned in @code{EXTRA_LTLIBRARIES}), Automake does not know the
5249 final installation directory.  For such libraries you must add the
5250 @option{-rpath} option to the appropriate @code{_LDFLAGS} variable by
5251 hand.
5252
5253 The examples below illustrate the differences between these two methods.
5254
5255 Here is an example where @code{WANTEDLIBS} is an @code{AC_SUBST}ed
5256 variable set at @file{./configure}-time to either @file{libfoo.la},
5257 @file{libbar.la}, both, or none.  Although @samp{$(WANTEDLIBS)}
5258 appears in the @code{lib_LTLIBRARIES}, Automake cannot guess it
5259 relates to @file{libfoo.la} or @file{libbar.la} at the time it creates
5260 the link rule for these two libraries.  Therefore the @option{-rpath}
5261 argument must be explicitly supplied.
5262
5263 @c Keep in sync with ltcond.test.
5264 @example
5265 EXTRA_LTLIBRARIES = libfoo.la libbar.la
5266 lib_LTLIBRARIES = $(WANTEDLIBS)
5267 libfoo_la_SOURCES = foo.c @dots{}
5268 libfoo_la_LDFLAGS = -rpath '$(libdir)'
5269 libbar_la_SOURCES = bar.c @dots{}
5270 libbar_la_LDFLAGS = -rpath '$(libdir)'
5271 @end example
5272
5273 Here is how the same @file{Makefile.am} would look using Automake
5274 conditionals named @code{WANT_LIBFOO} and @code{WANT_LIBBAR}.  Now
5275 Automake is able to compute the @option{-rpath} setting itself, because
5276 it's clear that both libraries will end up in @samp{$(libdir)} if they
5277 are installed.
5278
5279 @c Keep in sync with ltcond.test.
5280 @example
5281 lib_LTLIBRARIES =
5282 if WANT_LIBFOO
5283 lib_LTLIBRARIES += libfoo.la
5284 endif
5285 if WANT_LIBBAR
5286 lib_LTLIBRARIES += libbar.la
5287 endif
5288 libfoo_la_SOURCES = foo.c @dots{}
5289 libbar_la_SOURCES = bar.c @dots{}
5290 @end example
5291
5292 @node Conditional Libtool Sources
5293 @subsection Libtool Libraries with Conditional Sources
5294
5295 Conditional compilation of sources in a library can be achieved in the
5296 same way as conditional compilation of sources in a program
5297 (@pxref{Conditional Sources}).  The only difference is that
5298 @code{_LIBADD} should be used instead of @code{_LDADD} and that it
5299 should mention libtool objects (@file{.lo} files).
5300
5301 So, to mimic the @file{hello} example from @ref{Conditional Sources},
5302 we could build a @file{libhello.la} library using either
5303 @file{hello-linux.c} or @file{hello-generic.c} with the following
5304 @file{Makefile.am}.
5305
5306 @c Keep in sync with ltcond2.test.
5307 @example
5308 lib_LTLIBRARIES = libhello.la
5309 libhello_la_SOURCES = hello-common.c
5310 EXTRA_libhello_la_SOURCES = hello-linux.c hello-generic.c
5311 libhello_la_LIBADD = $(HELLO_SYSTEM)
5312 libhello_la_DEPENDENCIES = $(HELLO_SYSTEM)
5313 @end example
5314
5315 @noindent
5316 And make sure @command{configure} defines @code{HELLO_SYSTEM} as
5317 either @file{hello-linux.lo} or @file{hello-@-generic.lo}.
5318
5319 Or we could simply use an Automake conditional as follows.
5320
5321 @c Keep in sync with ltcond2.test.
5322 @example
5323 lib_LTLIBRARIES = libhello.la
5324 libhello_la_SOURCES = hello-common.c
5325 if LINUX
5326 libhello_la_SOURCES += hello-linux.c
5327 else
5328 libhello_la_SOURCES += hello-generic.c
5329 endif
5330 @end example
5331
5332 @node Libtool Convenience Libraries
5333 @subsection Libtool Convenience Libraries
5334 @cindex convenience libraries, libtool
5335 @cindex libtool convenience libraries
5336 @vindex noinst_LTLIBRARIES
5337 @vindex check_LTLIBRARIES
5338
5339 Sometimes you want to build libtool libraries that should not be
5340 installed.  These are called @dfn{libtool convenience libraries} and
5341 are typically used to encapsulate many sublibraries, later gathered
5342 into one big installed library.
5343
5344 Libtool convenience libraries are declared by directory-less variables
5345 such as @code{noinst_LTLIBRARIES}, @code{check_LTLIBRARIES}, or even
5346 @code{EXTRA_LTLIBRARIES}.  Unlike installed libtool libraries they do
5347 not need an @option{-rpath} flag at link time (actually this is the only
5348 difference).
5349
5350 Convenience libraries listed in @code{noinst_LTLIBRARIES} are always
5351 built.  Those listed in @code{check_LTLIBRARIES} are built only upon
5352 @samp{make check}.  Finally, libraries listed in
5353 @code{EXTRA_LTLIBRARIES} are never built explicitly: Automake outputs
5354 rules to build them, but if the library does not appear as a Makefile
5355 dependency anywhere it won't be built (this is why
5356 @code{EXTRA_LTLIBRARIES} is used for conditional compilation).
5357
5358 Here is a sample setup merging libtool convenience libraries from
5359 subdirectories into one main @file{libtop.la} library.
5360
5361 @c Keep in sync with ltconv.test.
5362 @example
5363 # -- Top-level Makefile.am --
5364 SUBDIRS = sub1 sub2 @dots{}
5365 lib_LTLIBRARIES = libtop.la
5366 libtop_la_SOURCES =
5367 libtop_la_LIBADD = \
5368   sub1/libsub1.la \
5369   sub2/libsub2.la \
5370   @dots{}
5371
5372 # -- sub1/Makefile.am --
5373 noinst_LTLIBRARIES = libsub1.la
5374 libsub1_la_SOURCES = @dots{}
5375
5376 # -- sub2/Makefile.am --
5377 # showing nested convenience libraries
5378 SUBDIRS = sub2.1 sub2.2 @dots{}
5379 noinst_LTLIBRARIES = libsub2.la
5380 libsub2_la_SOURCES =
5381 libsub2_la_LIBADD = \
5382   sub21/libsub21.la \
5383   sub22/libsub22.la \
5384   @dots{}
5385 @end example
5386
5387 When using such setup, beware that @command{automake} will assume
5388 @file{libtop.la} is to be linked with the C linker.  This is because
5389 @code{libtop_la_SOURCES} is empty, so @command{automake} picks C as
5390 default language.  If @code{libtop_la_SOURCES} was not empty,
5391 @command{automake} would select the linker as explained in @ref{How
5392 the Linker is Chosen}.
5393
5394 If one of the sublibraries contains non-C source, it is important that
5395 the appropriate linker be chosen.  One way to achieve this is to
5396 pretend that there is such a non-C file among the sources of the
5397 library, thus forcing @command{automake} to select the appropriate
5398 linker.  Here is the top-level @file{Makefile} of our example updated
5399 to force C++ linking.
5400
5401 @example
5402 SUBDIRS = sub1 sub2 @dots{}
5403 lib_LTLIBRARIES = libtop.la
5404 libtop_la_SOURCES =
5405 # Dummy C++ source to cause C++ linking.
5406 nodist_EXTRA_libtop_la_SOURCES = dummy.cxx
5407 libtop_la_LIBADD = \
5408   sub1/libsub1.la \
5409   sub2/libsub2.la \
5410   @dots{}
5411 @end example
5412
5413 @samp{EXTRA_*_SOURCES} variables are used to keep track of source
5414 files that might be compiled (this is mostly useful when doing
5415 conditional compilation using @code{AC_SUBST}, @pxref{Conditional
5416 Libtool Sources}), and the @code{nodist_} prefix means the listed
5417 sources are not to be distributed (@pxref{Program and Library
5418 Variables}).  In effect the file @file{dummy.cxx} does not need to
5419 exist in the source tree.  Of course if you have some real source file
5420 to list in @code{libtop_la_SOURCES} there is no point in cheating with
5421 @code{nodist_EXTRA_libtop_la_SOURCES}.
5422
5423
5424 @node Libtool Modules
5425 @subsection Libtool Modules
5426 @cindex modules, libtool
5427 @cindex libtool modules
5428 @cindex @option{-module}, libtool
5429
5430 These are libtool libraries meant to be dlopened.  They are
5431 indicated to libtool by passing @option{-module} at link-time.
5432
5433 @example
5434 pkglib_LTLIBRARIES = mymodule.la
5435 mymodule_la_SOURCES = doit.c
5436 mymodule_la_LDFLAGS = -module
5437 @end example
5438
5439 Ordinarily, Automake requires that a library's name start with
5440 @code{lib}.  However, when building a dynamically loadable module you
5441 might wish to use a "nonstandard" name.  Automake will not complain
5442 about such nonstandard names if it knows the library being built is a
5443 libtool module, i.e., if @option{-module} explicitly appears in the
5444 library's @code{_LDFLAGS} variable (or in the common @code{AM_LDFLAGS}
5445 variable when no per-library @code{_LDFLAGS} variable is defined).
5446
5447 As always, @code{AC_SUBST} variables are black boxes to Automake since
5448 their values are not yet known when @command{automake} is run.
5449 Therefore if @option{-module} is set via such a variable, Automake
5450 cannot notice it and will proceed as if the library was an ordinary
5451 libtool library, with strict naming.
5452
5453 If @code{mymodule_la_SOURCES} is not specified, then it defaults to
5454 the single file @file{mymodule.c} (@pxref{Default _SOURCES}).
5455
5456 @node Libtool Flags
5457 @subsection @code{_LIBADD}, @code{_LDFLAGS}, and @code{_LIBTOOLFLAGS}
5458 @cindex @code{_LIBADD}, libtool
5459 @cindex @code{_LDFLAGS}, libtool
5460 @cindex @code{_LIBTOOLFLAGS}, libtool
5461 @vindex AM_LIBTOOLFLAGS
5462 @vindex LIBTOOLFLAGS
5463 @vindex maude_LIBTOOLFLAGS
5464
5465 As shown in previous sections, the @samp{@var{library}_LIBADD}
5466 variable should be used to list extra libtool objects (@file{.lo}
5467 files) or libtool libraries (@file{.la}) to add to @var{library}.
5468
5469 The @samp{@var{library}_LDFLAGS} variable is the place to list
5470 additional libtool linking flags, such as @option{-version-info},
5471 @option{-static}, and a lot more.  @xref{Link mode, , Link mode,
5472 libtool, The Libtool Manual}.
5473
5474 The @command{libtool} command has two kinds of options: mode-specific
5475 options and generic options.  Mode-specific options such as the
5476 aforementioned linking flags should be lumped with the other flags
5477 passed to the tool invoked by @command{libtool} (hence the use of
5478 @samp{@var{library}_LDFLAGS} for libtool linking flags).  Generic
5479 options include @option{--tag=@var{tag}} and @option{--silent}
5480 (@pxref{Invoking libtool, , Invoking @command{libtool}, libtool, The
5481 Libtool Manual} for more options) should appear before the mode
5482 selection on the command line; in @file{Makefile.am}s they should
5483 be listed in the @samp{@var{library}_LIBTOOLFLAGS} variable.
5484
5485 If @samp{@var{library}_LIBTOOLFLAGS} is not defined, then the variable
5486 @code{AM_LIBTOOLFLAGS} is used instead.
5487
5488 These flags are passed to libtool after the @option{--tag=@var{tag}}
5489 option computed by Automake (if any), so
5490 @samp{@var{library}_LIBTOOLFLAGS} (or @code{AM_LIBTOOLFLAGS}) is a
5491 good place to override or supplement the @option{--tag=@var{tag}}
5492 setting.
5493
5494 The libtool rules also use a @code{LIBTOOLFLAGS} variable that should
5495 not be set in @file{Makefile.am}: this is a user variable (@pxref{Flag
5496 Variables Ordering}.  It allows users to run @samp{make
5497 LIBTOOLFLAGS=--silent}, for instance.  Note that the verbosity of
5498 @command{libtool} can also be influenced with the Automake
5499 @option{silent-rules} option (@pxref{Options}).
5500
5501
5502 @node LTLIBOBJS, Libtool Issues, Libtool Flags, A Shared Library
5503 @subsection @code{LTLIBOBJS} and @code{LTALLOCA}
5504 @cindex @code{LTLIBOBJS}, special handling
5505 @cindex @code{LIBOBJS}, and Libtool
5506 @cindex @code{LTALLOCA}, special handling
5507 @cindex @code{ALLOCA}, and Libtool
5508 @vindex LTLIBOBJS
5509 @vindex LIBOBJS
5510 @vindex LTALLOCA
5511 @vindex ALLOCA
5512 @acindex AC_LIBOBJ
5513
5514 Where an ordinary library might include @samp{$(LIBOBJS)} or
5515 @samp{$(ALLOCA)} (@pxref{LIBOBJS}), a libtool library must use
5516 @samp{$(LTLIBOBJS)} or @samp{$(LTALLOCA)}.  This is required because
5517 the object files that libtool operates on do not necessarily end in
5518 @file{.o}.
5519
5520 Nowadays, the computation of @code{LTLIBOBJS} from @code{LIBOBJS} is
5521 performed automatically by Autoconf (@pxref{AC_LIBOBJ vs LIBOBJS, ,
5522 @code{AC_LIBOBJ} vs.@: @code{LIBOBJS}, autoconf, The Autoconf Manual}).
5523
5524 @node Libtool Issues
5525 @subsection Common Issues Related to Libtool's Use
5526
5527 @menu
5528 * Error required file ltmain.sh not found::  The need to run libtoolize
5529 * Objects created both with libtool and without::  Avoid a specific build race
5530 @end menu
5531
5532 @node Error required file ltmain.sh not found
5533 @subsubsection Error: @samp{required file `./ltmain.sh' not found}
5534 @cindex @file{ltmain.sh} not found
5535 @cindex @command{libtoolize}, no longer run by @command{automake}
5536 @cindex @command{libtoolize} and @command{autoreconf}
5537 @cindex @command{autoreconf} and @command{libtoolize}
5538 @cindex @file{bootstrap.sh} and @command{autoreconf}
5539 @cindex @file{autogen.sh} and @command{autoreconf}
5540
5541 Libtool comes with a tool called @command{libtoolize} that will
5542 install libtool's supporting files into a package.  Running this
5543 command will install @file{ltmain.sh}.  You should execute it before
5544 @command{aclocal} and @command{automake}.
5545
5546 People upgrading old packages to newer autotools are likely to face
5547 this issue because older Automake versions used to call
5548 @command{libtoolize}.  Therefore old build scripts do not call
5549 @command{libtoolize}.
5550
5551 Since Automake 1.6, it has been decided that running
5552 @command{libtoolize} was none of Automake's business.  Instead, that
5553 functionality has been moved into the @command{autoreconf} command
5554 (@pxref{autoreconf Invocation, , Using @command{autoreconf}, autoconf,
5555 The Autoconf Manual}).  If you do not want to remember what to run and
5556 when, just learn the @command{autoreconf} command.  Hopefully,
5557 replacing existing @file{bootstrap.sh} or @file{autogen.sh} scripts by
5558 a call to @command{autoreconf} should also free you from any similar
5559 incompatible change in the future.
5560
5561 @node Objects created both with libtool and without
5562 @subsubsection Objects @samp{created with both libtool and without}
5563
5564 Sometimes, the same source file is used both to build a libtool
5565 library and to build another non-libtool target (be it a program or
5566 another library).
5567
5568 Let's consider the following @file{Makefile.am}.
5569
5570 @example
5571 bin_PROGRAMS = prog
5572 prog_SOURCES = prog.c foo.c @dots{}
5573
5574 lib_LTLIBRARIES = libfoo.la
5575 libfoo_la_SOURCES = foo.c @dots{}
5576 @end example
5577
5578 @noindent
5579 (In this trivial case the issue could be avoided by linking
5580 @file{libfoo.la} with @file{prog} instead of listing @file{foo.c} in
5581 @code{prog_SOURCES}.  But let's assume we really want to keep
5582 @file{prog} and @file{libfoo.la} separate.)
5583
5584 Technically, it means that we should build @file{foo.$(OBJEXT)} for
5585 @file{prog}, and @file{foo.lo} for @file{libfoo.la}.  The problem is
5586 that in the course of creating @file{foo.lo}, libtool may erase (or
5587 replace) @file{foo.$(OBJEXT)}, and this cannot be avoided.
5588
5589 Therefore, when Automake detects this situation it will complain
5590 with a message such as
5591 @example
5592 object `foo.$(OBJEXT)' created both with libtool and without
5593 @end example
5594
5595 A workaround for this issue is to ensure that these two objects get
5596 different basenames.  As explained in @ref{Renamed Objects}, this
5597 happens automatically when per-targets flags are used.
5598
5599 @example
5600 bin_PROGRAMS = prog
5601 prog_SOURCES = prog.c foo.c @dots{}
5602 prog_CFLAGS = $(AM_CFLAGS)
5603
5604 lib_LTLIBRARIES = libfoo.la
5605 libfoo_la_SOURCES = foo.c @dots{}
5606 @end example
5607
5608 @noindent
5609 Adding @samp{prog_CFLAGS = $(AM_CFLAGS)} is almost a no-op, because
5610 when the @code{prog_CFLAGS} is defined, it is used instead of
5611 @code{AM_CFLAGS}.  However as a side effect it will cause
5612 @file{prog.c} and @file{foo.c} to be compiled as
5613 @file{prog-prog.$(OBJEXT)} and @file{prog-foo.$(OBJEXT)}, which solves
5614 the issue.
5615
5616 @node Program and Library Variables
5617 @section Program and Library Variables
5618
5619 Associated with each program is a collection of variables that can be
5620 used to modify how that program is built.  There is a similar list of
5621 such variables for each library.  The canonical name of the program (or
5622 library) is used as a base for naming these variables.
5623
5624 In the list below, we use the name ``maude'' to refer to the program or
5625 library.  In your @file{Makefile.am} you would replace this with the
5626 canonical name of your program.  This list also refers to ``maude'' as a
5627 program, but in general the same rules apply for both static and dynamic
5628 libraries; the documentation below notes situations where programs and
5629 libraries differ.
5630
5631 @vtable @code
5632 @item maude_SOURCES
5633 This variable, if it exists, lists all the source files that are
5634 compiled to build the program.  These files are added to the
5635 distribution by default.  When building the program, Automake will cause
5636 each source file to be compiled to a single @file{.o} file (or
5637 @file{.lo} when using libtool).  Normally these object files are named
5638 after the source file, but other factors can change this.  If a file in
5639 the @code{_SOURCES} variable has an unrecognized extension, Automake
5640 will do one of two things with it.  If a suffix rule exists for turning
5641 files with the unrecognized extension into @file{.o} files, then
5642 @command{automake} will treat this file as it will any other source file
5643 (@pxref{Support for Other Languages}).  Otherwise, the file will be
5644 ignored as though it were a header file.
5645
5646 The prefixes @code{dist_} and @code{nodist_} can be used to control
5647 whether files listed in a @code{_SOURCES} variable are distributed.
5648 @code{dist_} is redundant, as sources are distributed by default, but it
5649 can be specified for clarity if desired.
5650
5651 It is possible to have both @code{dist_} and @code{nodist_} variants of
5652 a given @code{_SOURCES} variable at once; this lets you easily
5653 distribute some files and not others, for instance:
5654
5655 @example
5656 nodist_maude_SOURCES = nodist.c
5657 dist_maude_SOURCES = dist-me.c
5658 @end example
5659
5660 By default the output file (on Unix systems, the @file{.o} file) will
5661 be put into the current build directory.  However, if the option
5662 @option{subdir-objects} is in effect in the current directory then the
5663 @file{.o} file will be put into the subdirectory named after the
5664 source file.  For instance, with @option{subdir-objects} enabled,
5665 @file{sub/dir/file.c} will be compiled to @file{sub/dir/file.o}.  Some
5666 people prefer this mode of operation.  You can specify
5667 @option{subdir-objects} in @code{AUTOMAKE_OPTIONS} (@pxref{Options}).
5668 @cindex Subdirectory, objects in
5669 @cindex Objects in subdirectory
5670
5671
5672 @item EXTRA_maude_SOURCES
5673 Automake needs to know the list of files you intend to compile
5674 @emph{statically}.  For one thing, this is the only way Automake has of
5675 knowing what sort of language support a given @file{Makefile.in}
5676 requires.  @footnote{There are other, more obscure reasons for
5677 this limitation as well.}  This means that, for example, you can't put a
5678 configure substitution like @samp{@@my_sources@@} into a @samp{_SOURCES}
5679 variable.  If you intend to conditionally compile source files and use
5680 @file{configure} to substitute the appropriate object names into, e.g.,
5681 @code{_LDADD} (see below), then you should list the corresponding source
5682 files in the @code{EXTRA_} variable.
5683
5684 This variable also supports @code{dist_} and @code{nodist_} prefixes.
5685 For instance, @code{nodist_EXTRA_maude_SOURCES} would list extra
5686 sources that may need to be built, but should not be distributed.
5687
5688 @item maude_AR
5689 A static library is created by default by invoking @samp{$(AR)
5690 $(ARFLAGS)} followed by the name of the library and then the objects
5691 being put into the library.  You can override this by setting the
5692 @code{_AR} variable.  This is usually used with C++; some C++
5693 compilers require a special invocation in order to instantiate all the
5694 templates that should go into a library.  For instance, the SGI C++
5695 compiler likes this variable set like so:
5696 @example
5697 libmaude_a_AR = $(CXX) -ar -o
5698 @end example
5699
5700 @item maude_LIBADD
5701 Extra objects can be added to a @emph{library} using the @code{_LIBADD}
5702 variable.  For instance, this should be used for objects determined by
5703 @command{configure} (@pxref{A Library}).
5704
5705 In the case of libtool libraries, @code{maude_LIBADD} can also refer
5706 to other libtool libraries.
5707
5708 @item maude_LDADD
5709 Extra objects (@file{*.$(OBJEXT)}) and libraries (@file{*.a},
5710 @file{*.la}) can be added to a @emph{program} by listing them in the
5711 @code{_LDADD} variable.  For instance, this should be used for objects
5712 determined by @command{configure} (@pxref{Linking}).
5713
5714 @code{_LDADD} and @code{_LIBADD} are inappropriate for passing
5715 program-specific linker flags (except for @option{-l}, @option{-L},
5716 @option{-dlopen} and @option{-dlpreopen}).  Use the @code{_LDFLAGS} variable
5717 for this purpose.
5718
5719 For instance, if your @file{configure.ac} uses @code{AC_PATH_XTRA}, you
5720 could link your program against the X libraries like so:
5721
5722 @example
5723 maude_LDADD = $(X_PRE_LIBS) $(X_LIBS) $(X_EXTRA_LIBS)
5724 @end example
5725
5726 We recommend that you use @option{-l} and @option{-L} only when
5727 referring to third-party libraries, and give the explicit file names
5728 of any library built by your package.  Doing so will ensure that
5729 @code{maude_DEPENDENCIES} (see below) is correctly defined by default.
5730
5731 @item maude_LDFLAGS
5732 This variable is used to pass extra flags to the link step of a program
5733 or a shared library.  It overrides the @code{AM_LDFLAGS} variable.
5734
5735 @item maude_LIBTOOLFLAGS
5736 This variable is used to pass extra options to @command{libtool}.
5737 It overrides the @code{AM_LIBTOOLFLAGS} variable.
5738 These options are output before @command{libtool}'s @option{--mode=@var{mode}}
5739 option, so they should not be mode-specific options (those belong to
5740 the compiler or linker flags).  @xref{Libtool Flags}.
5741
5742 @item maude_DEPENDENCIES
5743 @itemx EXTRA_maude_DEPENDENCIES
5744 It is also occasionally useful to have a target (program or library)
5745 depend on some other file that is not actually part of that target.
5746 This can be done using the @code{_DEPENDENCIES} variable.  Each
5747 target depends on the contents of such a variable, but no further
5748 interpretation is done.
5749
5750 Since these dependencies are associated to the link rule used to
5751 create the programs they should normally list files used by the link
5752 command.  That is @file{*.$(OBJEXT)}, @file{*.a}, or @file{*.la} files
5753 for programs; @file{*.lo} and @file{*.la} files for Libtool libraries;
5754 and @file{*.$(OBJEXT)} files for static libraries.  In rare cases you
5755 may need to add other kinds of files such as linker scripts, but
5756 @emph{listing a source file in @code{_DEPENDENCIES} is wrong}.  If
5757 some source file needs to be built before all the components of a
5758 program are built, consider using the @code{BUILT_SOURCES} variable
5759 (@pxref{Sources}).
5760
5761 If @code{_DEPENDENCIES} is not supplied, it is computed by Automake.
5762 The automatically-assigned value is the contents of @code{_LDADD} or
5763 @code{_LIBADD}, with most configure substitutions, @option{-l}, @option{-L},
5764 @option{-dlopen} and @option{-dlpreopen} options removed.  The configure
5765 substitutions that are left in are only @samp{$(LIBOBJS)} and
5766 @samp{$(ALLOCA)}; these are left because it is known that they will not
5767 cause an invalid value for @code{_DEPENDENCIES} to be generated.
5768
5769 @code{_DEPENDENCIES} is more likely used to perform conditional
5770 compilation using an @code{AC_SUBST} variable that contains a list of
5771 objects.  @xref{Conditional Sources}, and @ref{Conditional Libtool
5772 Sources}.
5773
5774 The @code{EXTRA_*_DEPENDENCIES} variable may be useful for cases where
5775 you merely want to augment the @command{automake}-generated
5776 @code{_DEPENDENCIES} variable rather than replacing it.
5777
5778 @item maude_LINK
5779 You can override the linker on a per-program basis.  By default the
5780 linker is chosen according to the languages used by the program.  For
5781 instance, a program that includes C++ source code would use the C++
5782 compiler to link.  The @code{_LINK} variable must hold the name of a
5783 command that can be passed all the @file{.o} file names and libraries
5784 to link against as arguments.  Note that the name of the underlying
5785 program is @emph{not} passed to @code{_LINK}; typically one uses
5786 @samp{$@@}:
5787
5788 @example
5789 maude_LINK = $(CCLD) -magic -o $@@
5790 @end example
5791
5792 If a @code{_LINK} variable is not supplied, it may still be generated
5793 and used by Automake due to the use of per-target link flags such as
5794 @code{_CFLAGS}, @code{_LDFLAGS} or @code{_LIBTOOLFLAGS}, in cases where
5795 they apply.
5796
5797 @item maude_CCASFLAGS
5798 @itemx maude_CFLAGS
5799 @itemx maude_CPPFLAGS
5800 @itemx maude_CXXFLAGS
5801 @itemx maude_FFLAGS
5802 @itemx maude_GCJFLAGS
5803 @itemx maude_LFLAGS
5804 @itemx maude_OBJCFLAGS
5805 @itemx maude_RFLAGS
5806 @itemx maude_UPCFLAGS
5807 @itemx maude_YFLAGS
5808 @cindex per-target compilation flags, defined
5809 Automake allows you to set compilation flags on a per-program (or
5810 per-library) basis.  A single source file can be included in several
5811 programs, and it will potentially be compiled with different flags for
5812 each program.  This works for any language directly supported by
5813 Automake.  These @dfn{per-target compilation flags} are
5814 @samp{_CCASFLAGS},
5815 @samp{_CFLAGS},
5816 @samp{_CPPFLAGS},
5817 @samp{_CXXFLAGS},
5818 @samp{_FFLAGS},
5819 @samp{_GCJFLAGS},
5820 @samp{_LFLAGS},
5821 @samp{_OBJCFLAGS},
5822 @samp{_RFLAGS},
5823 @samp{_UPCFLAGS}, and
5824 @samp{_YFLAGS}.
5825
5826 When using a per-target compilation flag, Automake will choose a
5827 different name for the intermediate object files.  Ordinarily a file
5828 like @file{sample.c} will be compiled to produce @file{sample.o}.
5829 However, if the program's @code{_CFLAGS} variable is set, then the
5830 object file will be named, for instance, @file{maude-sample.o}.  (See
5831 also @ref{Renamed Objects}.)  The use of per-target compilation flags
5832 with C sources requires that the macro @code{AM_PROG_CC_C_O} be called
5833 from @file{configure.ac}.
5834
5835 In compilations with per-target flags, the ordinary @samp{AM_} form of
5836 the flags variable is @emph{not} automatically included in the
5837 compilation (however, the user form of the variable @emph{is} included).
5838 So for instance, if you want the hypothetical @file{maude} compilations
5839 to also use the value of @code{AM_CFLAGS}, you would need to write:
5840
5841 @example
5842 maude_CFLAGS = @dots{} your flags @dots{} $(AM_CFLAGS)
5843 @end example
5844
5845 @xref{Flag Variables Ordering}, for more discussion about the
5846 interaction between user variables, @samp{AM_} shadow variables, and
5847 per-target variables.
5848
5849 @item maude_SHORTNAME
5850 On some platforms the allowable file names are very short.  In order to
5851 support these systems and per-target compilation flags at the same
5852 time, Automake allows you to set a ``short name'' that will influence
5853 how intermediate object files are named.  For instance, in the following
5854 example,
5855
5856 @example
5857 bin_PROGRAMS = maude
5858 maude_CPPFLAGS = -DSOMEFLAG
5859 maude_SHORTNAME = m
5860 maude_SOURCES = sample.c @dots{}
5861 @end example
5862
5863 @noindent
5864 the object file would be named @file{m-sample.o} rather than
5865 @file{maude-sample.o}.
5866
5867 This facility is rarely needed in practice,
5868 and we recommend avoiding it until you find it is required.
5869 @end vtable
5870
5871 @node Default _SOURCES
5872 @section Default @code{_SOURCES}
5873
5874 @vindex _SOURCES
5875 @vindex SOURCES
5876 @cindex @code{_SOURCES}, default
5877 @cindex default @code{_SOURCES}
5878 @vindex AM_DEFAULT_SOURCE_EXT
5879
5880 @code{_SOURCES} variables are used to specify source files of programs
5881 (@pxref{A Program}), libraries (@pxref{A Library}), and Libtool
5882 libraries (@pxref{A Shared Library}).
5883
5884 When no such variable is specified for a target, Automake will define
5885 one itself.  The default is to compile a single C file whose base name
5886 is the name of the target itself, with any extension replaced by
5887 @code{AM_DEFAULT_SOURCE_EXT}, which defaults to @file{.c}.
5888
5889 For example if you have the following somewhere in your
5890 @file{Makefile.am} with no corresponding @code{libfoo_a_SOURCES}:
5891
5892 @example
5893 lib_LIBRARIES = libfoo.a sub/libc++.a
5894 @end example
5895
5896 @noindent
5897 @file{libfoo.a} will be built using a default source file named
5898 @file{libfoo.c}, and @file{sub/libc++.a} will be built from
5899 @file{sub/libc++.c}.  (In older versions @file{sub/libc++.a}
5900 would be built from @file{sub_libc___a.c}, i.e., the default source
5901 was the canonized name of the target, with @file{.c} appended.
5902 We believe the new behavior is more sensible, but for backward
5903 compatibility @command{automake} will use the old name if a file or a rule
5904 with that name exists and @code{AM_DEFAULT_SOURCE_EXT} is not used.)
5905
5906 @cindex @code{check_PROGRAMS} example
5907 @vindex check_PROGRAMS
5908 Default sources are mainly useful in test suites, when building many
5909 test programs each from a single source.  For instance, in
5910
5911 @example
5912 check_PROGRAMS = test1 test2 test3
5913 AM_DEFAULT_SOURCE_EXT = .cpp
5914 @end example
5915
5916 @noindent
5917 @file{test1}, @file{test2}, and @file{test3} will be built
5918 from @file{test1.cpp}, @file{test2.cpp}, and @file{test3.cpp}.
5919 Without the last line, they will be built from @file{test1.c},
5920 @file{test2.c}, and @file{test3.c}.
5921
5922 @cindex Libtool modules, default source example
5923 @cindex default source, Libtool modules example
5924 Another case where this is convenient is building many Libtool modules
5925 (@file{module@var{n}.la}), each defined in its own file
5926 (@file{module@var{n}.c}).
5927
5928 @example
5929 AM_LDFLAGS = -module
5930 lib_LTLIBRARIES = module1.la module2.la module3.la
5931 @end example
5932
5933 @cindex empty @code{_SOURCES}
5934 @cindex @code{_SOURCES}, empty
5935 Finally, there is one situation where this default source computation
5936 needs to be avoided: when a target should not be built from sources.
5937 We already saw such an example in @ref{true}; this happens when all
5938 the constituents of a target have already been compiled and just need
5939 to be combined using a @code{_LDADD} variable.  Then it is necessary
5940 to define an empty @code{_SOURCES} variable, so that @command{automake}
5941 does not compute a default.
5942
5943 @example
5944 bin_PROGRAMS = target
5945 target_SOURCES =
5946 target_LDADD = libmain.a libmisc.a
5947 @end example
5948
5949 @node LIBOBJS
5950 @section Special handling for @code{LIBOBJS} and @code{ALLOCA}
5951
5952 @cindex @code{LIBOBJS}, example
5953 @cindex @code{ALLOCA}, example
5954 @cindex @code{LIBOBJS}, special handling
5955 @cindex @code{ALLOCA}, special handling
5956 @vindex LTLIBOBJS
5957 @vindex LIBOBJS
5958 @vindex LTALLOCA
5959 @vindex ALLOCA
5960
5961 The @samp{$(LIBOBJS)} and @samp{$(ALLOCA)} variables list object
5962 files that should be compiled into the project to provide an
5963 implementation for functions that are missing or broken on the host
5964 system.  They are substituted by @file{configure}.
5965
5966 @acindex AC_LIBOBJ
5967
5968 These variables are defined by Autoconf macros such as
5969 @code{AC_LIBOBJ}, @code{AC_REPLACE_FUNCS} (@pxref{Generic Functions, ,
5970 Generic Function Checks, autoconf, The Autoconf Manual}), or
5971 @code{AC_FUNC_ALLOCA} (@pxref{Particular Functions, , Particular
5972 Function Checks, autoconf, The Autoconf Manual}).  Many other Autoconf
5973 macros call @code{AC_LIBOBJ} or @code{AC_REPLACE_FUNCS} to
5974 populate @samp{$(LIBOBJS)}.
5975
5976 @acindex AC_LIBSOURCE
5977
5978 Using these variables is very similar to doing conditional compilation
5979 using @code{AC_SUBST} variables, as described in @ref{Conditional
5980 Sources}.  That is, when building a program, @samp{$(LIBOBJS)} and
5981 @samp{$(ALLOCA)} should be added to the associated @samp{*_LDADD}
5982 variable, or to the @samp{*_LIBADD} variable when building a library.
5983 However there is no need to list the corresponding sources in
5984 @samp{EXTRA_*_SOURCES} nor to define @samp{*_DEPENDENCIES}.  Automake
5985 automatically adds @samp{$(LIBOBJS)} and @samp{$(ALLOCA)} to the
5986 dependencies, and it will discover the list of corresponding source
5987 files automatically (by tracing the invocations of the
5988 @code{AC_LIBSOURCE} Autoconf macros).  If you have already defined
5989 @samp{*_DEPENDENCIES} explicitly for an unrelated reason, then you
5990 either need to add these variables manually, or use
5991 @samp{EXTRA_*_DEPENDENCIES} instead of @samp{*_DEPENDENCIES}.
5992
5993 These variables are usually used to build a portability library that
5994 is linked with all the programs of the project.  We now review a
5995 sample setup.  First, @file{configure.ac} contains some checks that
5996 affect either @code{LIBOBJS} or @code{ALLOCA}.
5997
5998 @example
5999 # configure.ac
6000 @dots{}
6001 AC_CONFIG_LIBOBJ_DIR([lib])
6002 @dots{}
6003 AC_FUNC_MALLOC             dnl May add malloc.$(OBJEXT) to LIBOBJS
6004 AC_FUNC_MEMCMP             dnl May add memcmp.$(OBJEXT) to LIBOBJS
6005 AC_REPLACE_FUNCS([strdup]) dnl May add strdup.$(OBJEXT) to LIBOBJS
6006 AC_FUNC_ALLOCA             dnl May add alloca.$(OBJEXT) to ALLOCA
6007 @dots{}
6008 AC_CONFIG_FILES([
6009   lib/Makefile
6010   src/Makefile
6011 ])
6012 AC_OUTPUT
6013 @end example
6014
6015 @acindex AC_CONFIG_LIBOBJ_DIR
6016
6017 The @code{AC_CONFIG_LIBOBJ_DIR} tells Autoconf that the source files
6018 of these object files are to be found in the @file{lib/} directory.
6019 Automake can also use this information, otherwise it expects the
6020 source files are to be in the directory where the @samp{$(LIBOBJS)}
6021 and @samp{$(ALLOCA)} variables are used.
6022
6023 The @file{lib/} directory should therefore contain @file{malloc.c},
6024 @file{memcmp.c}, @file{strdup.c}, @file{alloca.c}.  Here is its
6025 @file{Makefile.am}:
6026
6027 @example
6028 # lib/Makefile.am
6029
6030 noinst_LIBRARIES = libcompat.a
6031 libcompat_a_SOURCES =
6032 libcompat_a_LIBADD = $(LIBOBJS) $(ALLOCA)
6033 @end example
6034
6035 The library can have any name, of course, and anyway it is not going
6036 to be installed: it just holds the replacement versions of the missing
6037 or broken functions so we can later link them in.  Many projects
6038 also include extra functions, specific to the project, in that
6039 library: they are simply added on the @code{_SOURCES} line.
6040
6041 @cindex Empty libraries and @samp{$(LIBOBJS)}
6042 @cindex @samp{$(LIBOBJS)} and empty libraries
6043 There is a small trap here, though: @samp{$(LIBOBJS)} and
6044 @samp{$(ALLOCA)} might be empty, and building an empty library is not
6045 portable.  You should ensure that there is always something to put in
6046 @file{libcompat.a}.  Most projects will also add some utility
6047 functions in that directory, and list them in
6048 @code{libcompat_a_SOURCES}, so in practice @file{libcompat.a} cannot
6049 be empty.
6050
6051 Finally here is how this library could be used from the @file{src/}
6052 directory.
6053
6054 @example
6055 # src/Makefile.am
6056
6057 # Link all programs in this directory with libcompat.a
6058 LDADD = ../lib/libcompat.a
6059
6060 bin_PROGRAMS = tool1 tool2 @dots{}
6061 tool1_SOURCES = @dots{}
6062 tool2_SOURCES = @dots{}
6063 @end example
6064
6065 When option @option{subdir-objects} is not used, as in the above
6066 example, the variables @samp{$(LIBOBJS)} or @samp{$(ALLOCA)} can only
6067 be used in the directory where their sources lie.  E.g., here it would
6068 be wrong to use @samp{$(LIBOBJS)} or @samp{$(ALLOCA)} in
6069 @file{src/Makefile.am}.  However if both @option{subdir-objects} and
6070 @code{AC_CONFIG_LIBOBJ_DIR} are used, it is OK to use these variables
6071 in other directories.  For instance @file{src/Makefile.am} could be
6072 changed as follows.
6073
6074 @example
6075 # src/Makefile.am
6076
6077 AUTOMAKE_OPTIONS = subdir-objects
6078 LDADD = $(LIBOBJS) $(ALLOCA)
6079
6080 bin_PROGRAMS = tool1 tool2 @dots{}
6081 tool1_SOURCES = @dots{}
6082 tool2_SOURCES = @dots{}
6083 @end example
6084
6085 Because @samp{$(LIBOBJS)} and @samp{$(ALLOCA)} contain object
6086 file names that end with @samp{.$(OBJEXT)}, they are not suitable for
6087 Libtool libraries (where the expected object extension is @file{.lo}):
6088 @code{LTLIBOBJS} and @code{LTALLOCA} should be used instead.
6089
6090 @code{LTLIBOBJS} is defined automatically by Autoconf and should not
6091 be defined by hand (as in the past), however at the time of writing
6092 @code{LTALLOCA} still needs to be defined from @code{ALLOCA} manually.
6093 @xref{AC_LIBOBJ vs LIBOBJS, , @code{AC_LIBOBJ} vs.@: @code{LIBOBJS},
6094 autoconf, The Autoconf Manual}.
6095
6096
6097 @node Program Variables
6098 @section Variables used when building a program
6099
6100 Occasionally it is useful to know which @file{Makefile} variables
6101 Automake uses for compilations, and in which order (@pxref{Flag
6102 Variables Ordering}); for instance, you might need to do your own
6103 compilation in some special cases.
6104
6105 Some variables are inherited from Autoconf; these are @code{CC},
6106 @code{CFLAGS}, @code{CPPFLAGS}, @code{DEFS}, @code{LDFLAGS}, and
6107 @code{LIBS}.
6108 @vindex CC
6109 @vindex CFLAGS
6110 @vindex CPPFLAGS
6111 @vindex DEFS
6112 @vindex LDFLAGS
6113 @vindex LIBS
6114
6115 There are some additional variables that Automake defines on its own:
6116
6117 @vtable @code
6118 @item AM_CPPFLAGS
6119 The contents of this variable are passed to every compilation that invokes
6120 the C preprocessor; it is a list of arguments to the preprocessor.  For
6121 instance, @option{-I} and @option{-D} options should be listed here.
6122
6123 Automake already provides some @option{-I} options automatically, in a
6124 separate variable that is also passed to every compilation that invokes
6125 the C preprocessor.  In particular it generates @samp{-I.},
6126 @samp{-I$(srcdir)}, and a @option{-I} pointing to the directory holding
6127 @file{config.h} (if you've used @code{AC_CONFIG_HEADERS} or
6128 @code{AM_CONFIG_HEADER}).  You can disable the default @option{-I}
6129 options using the @option{nostdinc} option.
6130
6131 When a file to be included is generated during the build and not part
6132 of a distribution tarball, its location is under @code{$(builddir)},
6133 not under @code{$(srcdir)}.  This matters especially for packages that
6134 use header files placed in sub-directories and want to allow builds
6135 outside the source tree (@pxref{VPATH Builds}). In that case we
6136 recommend to use a pair of @option{-I} options, such as, e.g.,
6137 @samp{-Isome/subdir -I$(srcdir)/some/subdir} or
6138 @samp{-I$(top_builddir)/some/subdir -I$(top_srcdir)/some/subdir}.
6139 Note that the reference to the build tree should come before the
6140 reference to the source tree, so that accidentally leftover generated
6141 files in the source directory are ignored.
6142
6143 @code{AM_CPPFLAGS} is ignored in preference to a per-executable (or
6144 per-library) @code{_CPPFLAGS} variable if it is defined.
6145
6146 @item INCLUDES
6147 This does the same job as @code{AM_CPPFLAGS} (or any per-target
6148 @code{_CPPFLAGS} variable if it is used).  It is an older name for the
6149 same functionality.  This variable is deprecated; we suggest using
6150 @code{AM_CPPFLAGS} and per-target @code{_CPPFLAGS} instead.
6151
6152 @item AM_CFLAGS
6153 This is the variable the @file{Makefile.am} author can use to pass
6154 in additional C compiler flags.  It is more fully documented elsewhere.
6155 In some situations, this is not used, in preference to the
6156 per-executable (or per-library) @code{_CFLAGS}.
6157
6158 @item COMPILE
6159 This is the command used to actually compile a C source file.  The
6160 file name is appended to form the complete command line.
6161
6162 @item AM_LDFLAGS
6163 This is the variable the @file{Makefile.am} author can use to pass
6164 in additional linker flags.  In some situations, this is not used, in
6165 preference to the per-executable (or per-library) @code{_LDFLAGS}.
6166
6167 @item LINK
6168 This is the command used to actually link a C program.  It already
6169 includes @samp{-o $@@} and the usual variable references (for instance,
6170 @code{CFLAGS}); it takes as ``arguments'' the names of the object files
6171 and libraries to link in.  This variable is not used when the linker is
6172 overridden with a per-target @code{_LINK} variable or per-target flags
6173 cause Automake to define such a @code{_LINK} variable.
6174 @end vtable
6175
6176
6177 @node Yacc and Lex
6178 @section Yacc and Lex support
6179
6180 Automake has somewhat idiosyncratic support for Yacc and Lex.
6181
6182 Automake assumes that the @file{.c} file generated by @command{yacc}
6183 (or @command{lex}) should be named using the basename of the input
6184 file.  That is, for a yacc source file @file{foo.y}, Automake will
6185 cause the intermediate file to be named @file{foo.c} (as opposed to
6186 @file{y.tab.c}, which is more traditional).
6187
6188 The extension of a yacc source file is used to determine the extension
6189 of the resulting C or C++ file.  Files with the extension @file{.y}
6190 will be turned into @file{.c} files; likewise, @file{.yy} will become
6191 @file{.cc}; @file{.y++}, @file{c++}; @file{.yxx}, @file{.cxx}; and
6192 @file{.ypp}, @file{.cpp}.
6193
6194 Likewise, lex source files can be used to generate C or C++; the
6195 extensions @file{.l}, @file{.ll}, @file{.l++}, @file{.lxx}, and
6196 @file{.lpp} are recognized.
6197
6198 You should never explicitly mention the intermediate (C or C++) file
6199 in any @code{SOURCES} variable; only list the source file.
6200
6201 The intermediate files generated by @command{yacc} (or @command{lex})
6202 will be included in any distribution that is made.  That way the user
6203 doesn't need to have @command{yacc} or @command{lex}.
6204
6205 If a @command{yacc} source file is seen, then your @file{configure.ac} must
6206 define the variable @code{YACC}.  This is most easily done by invoking
6207 the macro @code{AC_PROG_YACC} (@pxref{Particular Programs, , Particular
6208 Program Checks, autoconf, The Autoconf Manual}).
6209
6210 @vindex YFLAGS
6211 @vindex AM_YFLAGS
6212 When @code{yacc} is invoked, it is passed @code{AM_YFLAGS} and
6213 @code{YFLAGS}.  The latter is a user variable and the former is
6214 intended for the @file{Makefile.am} author.
6215
6216 @code{AM_YFLAGS} is usually used to pass the @option{-d} option to
6217 @command{yacc}.  Automake knows what this means and will automatically
6218 adjust its rules to update and distribute the header file built by
6219 @samp{yacc -d}@footnote{Please note that @command{automake} recognizes
6220 @option{-d} in @code{AM_YFLAGS} only if it is not clustered with other
6221 options; for example, it won't be recognized if @code{AM_YFLAGS} is
6222 @option{-dt}, but it will be if @code{AM_YFLAGS} is @option{-d -t} or
6223 @option{-d -t}}.
6224 What Automake cannot guess, though, is where this
6225 header will be used: it is up to you to ensure the header gets built
6226 before it is first used.  Typically this is necessary in order for
6227 dependency tracking to work when the header is included by another
6228 file.  The common solution is listing the header file in
6229 @code{BUILT_SOURCES} (@pxref{Sources}) as follows.
6230
6231 @example
6232 BUILT_SOURCES = parser.h
6233 AM_YFLAGS = -d
6234 bin_PROGRAMS = foo
6235 foo_SOURCES = @dots{} parser.y @dots{}
6236 @end example
6237
6238 If a @command{lex} source file is seen, then your @file{configure.ac}
6239 must define the variable @code{LEX}.  You can use @code{AC_PROG_LEX}
6240 to do this (@pxref{Particular Programs, , Particular Program Checks,
6241 autoconf, The Autoconf Manual}), but using @code{AM_PROG_LEX} macro
6242 (@pxref{Macros}) is recommended.
6243
6244 @vindex LFLAGS
6245 @vindex AM_LFLAGS
6246 When @command{lex} is invoked, it is passed @code{AM_LFLAGS} and
6247 @code{LFLAGS}.  The latter is a user variable and the former is
6248 intended for the @file{Makefile.am} author.
6249
6250 When @code{AM_MAINTAINER_MODE} (@pxref{maintainer-mode}) is used, the
6251 rebuild rule for distributed Yacc and Lex sources are only used when
6252 @code{maintainer-mode} is enabled, or when the files have been erased.
6253
6254 @cindex @command{ylwrap}
6255 @cindex @command{yacc}, multiple parsers
6256 @cindex Multiple @command{yacc} parsers
6257 @cindex Multiple @command{lex} lexers
6258 @cindex @command{lex}, multiple lexers
6259
6260 When @command{lex} or @command{yacc} sources are used, @code{automake
6261 -i} automatically installs an auxiliary program called
6262 @command{ylwrap} in your package (@pxref{Auxiliary Programs}).  This
6263 program is used by the build rules to rename the output of these
6264 tools, and makes it possible to include multiple @command{yacc} (or
6265 @command{lex}) source files in a single directory.  (This is necessary
6266 because yacc's output file name is fixed, and a parallel make could
6267 conceivably invoke more than one instance of @command{yacc}
6268 simultaneously.)
6269
6270 For @command{yacc}, simply managing locking is insufficient.  The output of
6271 @command{yacc} always uses the same symbol names internally, so it isn't
6272 possible to link two @command{yacc} parsers into the same executable.
6273
6274 We recommend using the following renaming hack used in @command{gdb}:
6275 @example
6276 #define yymaxdepth c_maxdepth
6277 #define yyparse c_parse
6278 #define yylex   c_lex
6279 #define yyerror c_error
6280 #define yylval  c_lval
6281 #define yychar  c_char
6282 #define yydebug c_debug
6283 #define yypact  c_pact
6284 #define yyr1    c_r1
6285 #define yyr2    c_r2
6286 #define yydef   c_def
6287 #define yychk   c_chk
6288 #define yypgo   c_pgo
6289 #define yyact   c_act
6290 #define yyexca  c_exca
6291 #define yyerrflag c_errflag
6292 #define yynerrs c_nerrs
6293 #define yyps    c_ps
6294 #define yypv    c_pv
6295 #define yys     c_s
6296 #define yy_yys  c_yys
6297 #define yystate c_state
6298 #define yytmp   c_tmp
6299 #define yyv     c_v
6300 #define yy_yyv  c_yyv
6301 #define yyval   c_val
6302 #define yylloc  c_lloc
6303 #define yyreds  c_reds
6304 #define yytoks  c_toks
6305 #define yylhs   c_yylhs
6306 #define yylen   c_yylen
6307 #define yydefred c_yydefred
6308 #define yydgoto  c_yydgoto
6309 #define yysindex c_yysindex
6310 #define yyrindex c_yyrindex
6311 #define yygindex c_yygindex
6312 #define yytable  c_yytable
6313 #define yycheck  c_yycheck
6314 #define yyname   c_yyname
6315 #define yyrule   c_yyrule
6316 @end example
6317
6318 For each define, replace the @samp{c_} prefix with whatever you like.
6319 These defines work for @command{bison}, @command{byacc}, and
6320 traditional @code{yacc}s.  If you find a parser generator that uses a
6321 symbol not covered here, please report the new name so it can be added
6322 to the list.
6323
6324
6325 @node C++ Support
6326 @section C++ Support
6327
6328 @cindex C++ support
6329 @cindex Support for C++
6330
6331 Automake includes full support for C++.
6332
6333 Any package including C++ code must define the output variable
6334 @code{CXX} in @file{configure.ac}; the simplest way to do this is to use
6335 the @code{AC_PROG_CXX} macro (@pxref{Particular Programs, , Particular
6336 Program Checks, autoconf, The Autoconf Manual}).
6337
6338 A few additional variables are defined when a C++ source file is seen:
6339
6340 @vtable @code
6341 @item CXX
6342 The name of the C++ compiler.
6343
6344 @item CXXFLAGS
6345 Any flags to pass to the C++ compiler.
6346
6347 @item AM_CXXFLAGS
6348 The maintainer's variant of @code{CXXFLAGS}.
6349
6350 @item CXXCOMPILE
6351 The command used to actually compile a C++ source file.  The file name
6352 is appended to form the complete command line.
6353
6354 @item CXXLINK
6355 The command used to actually link a C++ program.
6356 @end vtable
6357
6358
6359 @node Objective C Support
6360 @section Objective C Support
6361
6362 @cindex Objective C support
6363 @cindex Support for Objective C
6364
6365 Automake includes some support for Objective C.
6366
6367 Any package including Objective C code must define the output variable
6368 @code{OBJC} in @file{configure.ac}; the simplest way to do this is to use
6369 the @code{AC_PROG_OBJC} macro (@pxref{Particular Programs, , Particular
6370 Program Checks, autoconf, The Autoconf Manual}).
6371
6372 A few additional variables are defined when an Objective C source file
6373 is seen:
6374
6375 @vtable @code
6376 @item OBJC
6377 The name of the Objective C compiler.
6378
6379 @item OBJCFLAGS
6380 Any flags to pass to the Objective C compiler.
6381
6382 @item AM_OBJCFLAGS
6383 The maintainer's variant of @code{OBJCFLAGS}.
6384
6385 @item OBJCCOMPILE
6386 The command used to actually compile an Objective C source file.  The
6387 file name is appended to form the complete command line.
6388
6389 @item OBJCLINK
6390 The command used to actually link an Objective C program.
6391 @end vtable
6392
6393
6394 @node Unified Parallel C Support
6395 @section Unified Parallel C Support
6396
6397 @cindex Unified Parallel C support
6398 @cindex Support for Unified Parallel C
6399
6400 Automake includes some support for Unified Parallel C.
6401
6402 Any package including Unified Parallel C code must define the output
6403 variable @code{UPC} in @file{configure.ac}; the simplest way to do
6404 this is to use the @code{AM_PROG_UPC} macro (@pxref{Public Macros}).
6405
6406 A few additional variables are defined when a Unified Parallel C
6407 source file is seen:
6408
6409 @vtable @code
6410 @item UPC
6411 The name of the Unified Parallel C compiler.
6412
6413 @item UPCFLAGS
6414 Any flags to pass to the Unified Parallel C compiler.
6415
6416 @item AM_UPCFLAGS
6417 The maintainer's variant of @code{UPCFLAGS}.
6418
6419 @item UPCCOMPILE
6420 The command used to actually compile a Unified Parallel C source file.
6421 The file name is appended to form the complete command line.
6422
6423 @item UPCLINK
6424 The command used to actually link a Unified Parallel C program.
6425 @end vtable
6426
6427
6428 @node Assembly Support
6429 @section Assembly Support
6430
6431 Automake includes some support for assembly code.  There are two forms
6432 of assembler files: normal (@file{*.s}) and preprocessed by @code{CPP}
6433 (@file{*.S} or @file{*.sx}).
6434
6435 @vindex CCAS
6436 @vindex CCASFLAGS
6437 @vindex CPPFLAGS
6438 @vindex AM_CCASFLAGS
6439 @vindex AM_CPPFLAGS
6440 The variable @code{CCAS} holds the name of the compiler used to build
6441 assembly code.  This compiler must work a bit like a C compiler; in
6442 particular it must accept @option{-c} and @option{-o}.  The values of
6443 @code{CCASFLAGS} and @code{AM_CCASFLAGS} (or its per-target
6444 definition) is passed to the compilation.  For preprocessed files,
6445 @code{DEFS}, @code{DEFAULT_INCLUDES}, @code{INCLUDES}, @code{CPPFLAGS}
6446 and @code{AM_CPPFLAGS} are also used.
6447
6448 The autoconf macro @code{AM_PROG_AS} will define @code{CCAS} and
6449 @code{CCASFLAGS} for you (unless they are already set, it simply sets
6450 @code{CCAS} to the C compiler and @code{CCASFLAGS} to the C compiler
6451 flags), but you are free to define these variables by other means.
6452
6453 Only the suffixes @file{.s}, @file{.S}, and @file{.sx} are recognized by
6454 @command{automake} as being files containing assembly code.
6455
6456
6457 @node Fortran 77 Support
6458 @comment  node-name,  next,  previous,  up
6459 @section Fortran 77 Support
6460
6461 @cindex Fortran 77 support
6462 @cindex Support for Fortran 77
6463
6464 Automake includes full support for Fortran 77.
6465
6466 Any package including Fortran 77 code must define the output variable
6467 @code{F77} in @file{configure.ac}; the simplest way to do this is to use
6468 the @code{AC_PROG_F77} macro (@pxref{Particular Programs, , Particular
6469 Program Checks, autoconf, The Autoconf Manual}).
6470
6471 A few additional variables are defined when a Fortran 77 source file is
6472 seen:
6473
6474 @vtable @code
6475
6476 @item F77
6477 The name of the Fortran 77 compiler.
6478
6479 @item FFLAGS
6480 Any flags to pass to the Fortran 77 compiler.
6481
6482 @item AM_FFLAGS
6483 The maintainer's variant of @code{FFLAGS}.
6484
6485 @item RFLAGS
6486 Any flags to pass to the Ratfor compiler.
6487
6488 @item AM_RFLAGS
6489 The maintainer's variant of @code{RFLAGS}.
6490
6491 @item F77COMPILE
6492 The command used to actually compile a Fortran 77 source file.  The file
6493 name is appended to form the complete command line.
6494
6495 @item FLINK
6496 The command used to actually link a pure Fortran 77 program or shared
6497 library.
6498
6499 @end vtable
6500
6501 Automake can handle preprocessing Fortran 77 and Ratfor source files in
6502 addition to compiling them@footnote{Much, if not most, of the
6503 information in the following sections pertaining to preprocessing
6504 Fortran 77 programs was taken almost verbatim from @ref{Catalogue of
6505 Rules, , Catalogue of Rules, make, The GNU Make Manual}.}.  Automake
6506 also contains some support for creating programs and shared libraries
6507 that are a mixture of Fortran 77 and other languages (@pxref{Mixing
6508 Fortran 77 With C and C++}).
6509
6510 These issues are covered in the following sections.
6511
6512 @menu
6513 * Preprocessing Fortran 77::    Preprocessing Fortran 77 sources
6514 * Compiling Fortran 77 Files::  Compiling Fortran 77 sources
6515 * Mixing Fortran 77 With C and C++::  Mixing Fortran 77 With C and C++
6516 @end menu
6517
6518
6519 @node Preprocessing Fortran 77
6520 @comment  node-name,  next,  previous,  up
6521 @subsection Preprocessing Fortran 77
6522
6523 @cindex Preprocessing Fortran 77
6524 @cindex Fortran 77, Preprocessing
6525 @cindex Ratfor programs
6526
6527 @file{N.f} is made automatically from @file{N.F} or @file{N.r}.  This
6528 rule runs just the preprocessor to convert a preprocessable Fortran 77
6529 or Ratfor source file into a strict Fortran 77 source file.  The precise
6530 command used is as follows:
6531
6532 @table @file
6533
6534 @item .F
6535 @code{$(F77) -F $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS)@*
6536 $(AM_FFLAGS) $(FFLAGS)}
6537
6538 @item .r
6539 @code{$(F77) -F $(AM_FFLAGS) $(FFLAGS) $(AM_RFLAGS) $(RFLAGS)}
6540
6541 @end table
6542
6543
6544 @node Compiling Fortran 77 Files
6545 @comment  node-name,  next,  previous,  up
6546 @subsection Compiling Fortran 77 Files
6547
6548 @file{N.o} is made automatically from @file{N.f}, @file{N.F} or
6549 @file{N.r} by running the Fortran 77 compiler.  The precise command used
6550 is as follows:
6551
6552 @table @file
6553
6554 @item .f
6555 @code{$(F77) -c $(AM_FFLAGS) $(FFLAGS)}
6556
6557 @item .F
6558 @code{$(F77) -c $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS)@*
6559 $(AM_FFLAGS) $(FFLAGS)}
6560
6561 @item .r
6562 @code{$(F77) -c $(AM_FFLAGS) $(FFLAGS) $(AM_RFLAGS) $(RFLAGS)}
6563
6564 @end table
6565
6566
6567 @node Mixing Fortran 77 With C and C++
6568 @comment  node-name,  next,  previous,  up
6569 @subsection Mixing Fortran 77 With C and C++
6570
6571 @cindex Fortran 77, mixing with C and C++
6572 @cindex Mixing Fortran 77 with C and C++
6573 @cindex Linking Fortran 77 with C and C++
6574 @cindex cfortran
6575 @cindex Mixing Fortran 77 with C and/or C++
6576
6577 Automake currently provides @emph{limited} support for creating programs
6578 and shared libraries that are a mixture of Fortran 77 and C and/or C++.
6579 However, there are many other issues related to mixing Fortran 77 with
6580 other languages that are @emph{not} (currently) handled by Automake, but
6581 that are handled by other packages@footnote{For example,
6582 @uref{http://www-zeus.desy.de/~burow/cfortran/, the cfortran package}
6583 addresses all of these inter-language issues, and runs under nearly all
6584 Fortran 77, C and C++ compilers on nearly all platforms.  However,
6585 @command{cfortran} is not yet Free Software, but it will be in the next
6586 major release.}.
6587
6588 Automake can help in two ways:
6589
6590 @enumerate
6591 @item
6592 Automatic selection of the linker depending on which combinations of
6593 source code.
6594
6595 @item
6596 Automatic selection of the appropriate linker flags (e.g., @option{-L} and
6597 @option{-l}) to pass to the automatically selected linker in order to link
6598 in the appropriate Fortran 77 intrinsic and run-time libraries.
6599
6600 @cindex @code{FLIBS}, defined
6601 @vindex FLIBS
6602 These extra Fortran 77 linker flags are supplied in the output variable
6603 @code{FLIBS} by the @code{AC_F77_LIBRARY_LDFLAGS} Autoconf macro
6604 supplied with newer versions of Autoconf (Autoconf version 2.13 and
6605 later).  @xref{Fortran Compiler, , Fortran Compiler Characteristics,
6606 autoconf, The Autoconf Manual}.
6607 @end enumerate
6608
6609 If Automake detects that a program or shared library (as mentioned in
6610 some @code{_PROGRAMS} or @code{_LTLIBRARIES} primary) contains source
6611 code that is a mixture of Fortran 77 and C and/or C++, then it requires
6612 that the macro @code{AC_F77_LIBRARY_LDFLAGS} be called in
6613 @file{configure.ac}, and that either @code{$(FLIBS)}
6614 appear in the appropriate @code{_LDADD} (for programs) or @code{_LIBADD}
6615 (for shared libraries) variables.  It is the responsibility of the
6616 person writing the @file{Makefile.am} to make sure that @samp{$(FLIBS)}
6617 appears in the appropriate @code{_LDADD} or
6618 @code{_LIBADD} variable.
6619
6620 @cindex Mixed language example
6621 @cindex Example, mixed language
6622
6623 For example, consider the following @file{Makefile.am}:
6624
6625 @example
6626 bin_PROGRAMS = foo
6627 foo_SOURCES  = main.cc foo.f
6628 foo_LDADD    = libfoo.la $(FLIBS)
6629
6630 pkglib_LTLIBRARIES = libfoo.la
6631 libfoo_la_SOURCES  = bar.f baz.c zardoz.cc
6632 libfoo_la_LIBADD   = $(FLIBS)
6633 @end example
6634
6635 In this case, Automake will insist that @code{AC_F77_LIBRARY_LDFLAGS}
6636 is mentioned in @file{configure.ac}.  Also, if @samp{$(FLIBS)} hadn't
6637 been mentioned in @code{foo_LDADD} and @code{libfoo_la_LIBADD}, then
6638 Automake would have issued a warning.
6639
6640 @menu
6641 * How the Linker is Chosen::    Automatic linker selection
6642 @end menu
6643
6644 @node How the Linker is Chosen
6645 @comment  node-name,  next,  previous,  up
6646 @subsubsection How the Linker is Chosen
6647
6648 @cindex Automatic linker selection
6649 @cindex Selecting the linker automatically
6650
6651 When a program or library mixes several languages, Automake choose the
6652 linker according to the following priorities.  (The names in
6653 parentheses are the variables containing the link command.)
6654
6655 @enumerate
6656 @item
6657 @vindex GCJLINK
6658 Native Java (@code{GCJLINK})
6659 @item
6660 @vindex CXXLINK
6661 C++ (@code{CXXLINK})
6662 @item
6663 @vindex F77LINK
6664 Fortran 77 (@code{F77LINK})
6665 @item
6666 @vindex FCLINK
6667 Fortran (@code{FCLINK})
6668 @item
6669 @vindex OBJCLINK
6670 Objective C (@code{OBJCLINK})
6671 @item
6672 @vindex UPCLINK
6673 Unified Parallel C (@code{UPCLINK})
6674 @item
6675 @vindex LINK
6676 C (@code{LINK})
6677 @end enumerate
6678
6679 For example, if Fortran 77, C and C++ source code is compiled
6680 into a program, then the C++ linker will be used.  In this case, if the
6681 C or Fortran 77 linkers required any special libraries that weren't
6682 included by the C++ linker, then they must be manually added to an
6683 @code{_LDADD} or @code{_LIBADD} variable by the user writing the
6684 @file{Makefile.am}.
6685
6686 Automake only looks at the file names listed in @file{_SOURCES}
6687 variables to choose the linker, and defaults to the C linker.
6688 Sometimes this is inconvenient because you are linking against a
6689 library written in another language and would like to set the linker
6690 more appropriately.  @xref{Libtool Convenience Libraries}, for a
6691 trick with @code{nodist_EXTRA_@dots{}_SOURCES}.
6692
6693 A per-target @code{_LINK} variable will override the above selection.
6694 Per-target link flags will cause Automake to write a per-target
6695 @code{_LINK} variable according to the language chosen as above.
6696
6697
6698 @node Fortran 9x Support
6699 @comment  node-name,  next,  previous,  up
6700 @section Fortran 9x Support
6701
6702 @cindex Fortran 9x support
6703 @cindex Support for Fortran 9x
6704
6705 Automake includes support for Fortran 9x.
6706
6707 Any package including Fortran 9x code must define the output variable
6708 @code{FC} in @file{configure.ac}; the simplest way to do this is to use
6709 the @code{AC_PROG_FC} macro (@pxref{Particular Programs, , Particular
6710 Program Checks, autoconf, The Autoconf Manual}).
6711
6712 A few additional variables are defined when a Fortran 9x source file is
6713 seen:
6714
6715 @vtable @code
6716
6717 @item FC
6718 The name of the Fortran 9x compiler.
6719
6720 @item FCFLAGS
6721 Any flags to pass to the Fortran 9x compiler.
6722
6723 @item AM_FCFLAGS
6724 The maintainer's variant of @code{FCFLAGS}.
6725
6726 @item FCCOMPILE
6727 The command used to actually compile a Fortran 9x source file.  The file
6728 name is appended to form the complete command line.
6729
6730 @item FCLINK
6731 The command used to actually link a pure Fortran 9x program or shared
6732 library.
6733
6734 @end vtable
6735
6736 @menu
6737 * Compiling Fortran 9x Files::  Compiling Fortran 9x sources
6738 @end menu
6739
6740 @node Compiling Fortran 9x Files
6741 @comment  node-name,  next,  previous,  up
6742 @subsection Compiling Fortran 9x Files
6743
6744 @file{@var{file}.o} is made automatically from @file{@var{file}.f90},
6745 @file{@var{file}.f95}, @file{@var{file}.f03}, or @file{@var{file}.f08}
6746 by running the Fortran 9x compiler.  The precise command used
6747 is as follows:
6748
6749 @table @file
6750
6751 @item .f90
6752 @code{$(FC) $(AM_FCFLAGS) $(FCFLAGS) -c $(FCFLAGS_f90) $<}
6753
6754 @item .f95
6755 @code{$(FC) $(AM_FCFLAGS) $(FCFLAGS) -c $(FCFLAGS_f95) $<}
6756
6757 @item .f03
6758 @code{$(FC) $(AM_FCFLAGS) $(FCFLAGS) -c $(FCFLAGS_f03) $<}
6759
6760 @item .f08
6761 @code{$(FC) $(AM_FCFLAGS) $(FCFLAGS) -c $(FCFLAGS_f08) $<}
6762
6763 @end table
6764
6765 @node Java Support with gcj
6766 @comment  node-name,  next,  previous,  up
6767 @section Compiling Java sources using gcj
6768
6769 @cindex Java support with gcj
6770 @cindex Support for Java with gcj
6771 @cindex Java to native code, compilation
6772 @cindex Compilation of Java to native code
6773
6774 Automake includes support for natively compiled Java, using @command{gcj},
6775 the Java front end to the GNU Compiler Collection (rudimentary support
6776 for compiling Java to bytecode using the @command{javac} compiler is
6777 also present, @emph{albeit deprecated}; @pxref{Java}).
6778
6779 Any package including Java code to be compiled must define the output
6780 variable @code{GCJ} in @file{configure.ac}; the variable @code{GCJFLAGS}
6781 must also be defined somehow (either in @file{configure.ac} or
6782 @file{Makefile.am}).  The simplest way to do this is to use the
6783 @code{AM_PROG_GCJ} macro.
6784
6785 @vindex GCJFLAGS
6786
6787 By default, programs including Java source files are linked with
6788 @command{gcj}.
6789
6790 As always, the contents of @code{AM_GCJFLAGS} are passed to every
6791 compilation invoking @command{gcj} (in its role as an ahead-of-time
6792 compiler, when invoking it to create @file{.class} files,
6793 @code{AM_JAVACFLAGS} is used instead).  If it is necessary to pass
6794 options to @command{gcj} from @file{Makefile.am}, this variable, and not
6795 the user variable @code{GCJFLAGS}, should be used.
6796
6797 @vindex AM_GCJFLAGS
6798
6799 @command{gcj} can be used to compile @file{.java}, @file{.class},
6800 @file{.zip}, or @file{.jar} files.
6801
6802 When linking, @command{gcj} requires that the main class be specified
6803 using the @option{--main=} option.  The easiest way to do this is to use
6804 the @code{_LDFLAGS} variable for the program.
6805
6806
6807 @node Vala Support
6808 @comment  node-name,  next,  previous,  up
6809 @section Vala Support
6810
6811 @cindex Vala Support
6812 @cindex Support for Vala
6813
6814 Automake provides initial support for Vala
6815 (@uref{http://www.vala-project.org/}).
6816 This requires valac version 0.7.0 or later, and currently requires
6817 the user to use GNU @command{make}.
6818
6819 @example
6820 foo_SOURCES = foo.vala bar.vala zardoc.c
6821 @end example
6822
6823 Any @file{.vala} file listed in a @code{_SOURCES} variable will be
6824 compiled into C code by the Vala compiler. The generated @file{.c} files are
6825 distributed. The end user does not need to have a Vala compiler installed.
6826
6827 Automake ships with an Autoconf macro called @code{AM_PROG_VALAC}
6828 that will locate the Vala compiler and optionally check its version
6829 number.
6830
6831 @defmac AM_PROG_VALAC (@ovar{minimum-version})
6832 Try to find a Vala compiler in @env{PATH}. If it is found, the variable
6833 @code{VALAC} is set. Optionally a minimum release number of the compiler
6834 can be requested:
6835
6836 @example
6837 AM_PROG_VALAC([0.7.0])
6838 @end example
6839 @end defmac
6840
6841 There are a few variables that are used when compiling Vala sources:
6842
6843 @vtable @code
6844 @item VALAC
6845 Path to the Vala compiler.
6846
6847 @item VALAFLAGS
6848 Additional arguments for the Vala compiler.
6849
6850 @item AM_VALAFLAGS
6851 The maintainer's variant of @code{VALAFLAGS}.
6852
6853 @example
6854 lib_LTLIBRARIES = libfoo.la
6855 libfoo_la_SOURCES = foo.vala
6856 @end example
6857 @end vtable
6858
6859 Note that currently, you cannot use per-target @code{*_VALAFLAGS}
6860 (@pxref{Renamed Objects}) to produce different C files from one Vala
6861 source file.
6862
6863
6864 @node Support for Other Languages
6865 @comment  node-name,  next,  previous,  up
6866 @section Support for Other Languages
6867
6868 Automake currently only includes full support for C, C++ (@pxref{C++
6869 Support}), Objective C (@pxref{Objective C Support}), Fortran 77
6870 (@pxref{Fortran 77 Support}), Fortran 9x (@pxref{Fortran 9x Support}),
6871 and Java (@pxref{Java Support with gcj}).  There is only rudimentary
6872 support for other languages, support for which will be improved based
6873 on user demand.
6874
6875 Some limited support for adding your own languages is available via the
6876 suffix rule handling (@pxref{Suffixes}).
6877
6878
6879 @node ANSI
6880 @section Automatic de-ANSI-fication (deprecated, soon to be removed)
6881
6882 @cindex de-ANSI-fication, defined
6883
6884 @emph{The features described in this section are deprecated; you must
6885 not use any of them in new code, and remove their use from older but
6886 still maintained code: they will be withdrawn in the next major
6887 Automake release.}
6888
6889 When the C language was standardized in 1989, there was a long
6890 transition period where package developers needed to worry about
6891 porting to older systems that did not support ANSI C by default.
6892 These older systems are no longer in practical use and are no longer
6893 supported by their original suppliers, so developers need not worry
6894 about this problem any more.
6895
6896 Automake allows you to write packages that are portable to K&R C by
6897 @dfn{de-ANSI-fying} each source file before the actual compilation takes
6898 place.
6899
6900 @vindex AUTOMAKE_OPTIONS
6901 @opindex ansi2knr
6902
6903 If the @file{Makefile.am} variable @code{AUTOMAKE_OPTIONS}
6904 (@pxref{Options}) contains the option @option{ansi2knr} then code to
6905 handle de-ANSI-fication is inserted into the generated
6906 @file{Makefile.in}.
6907
6908 This causes each C source file in the directory to be treated as ANSI C@.
6909 If an ANSI C compiler is available, it is used.  If no ANSI C compiler
6910 is available, the @command{ansi2knr} program is used to convert the source
6911 files into K&R C, which is then compiled.
6912
6913 The @command{ansi2knr} program is simple-minded.  It assumes the source
6914 code will be formatted in a particular way; see the @command{ansi2knr} man
6915 page for details.
6916
6917 @acindex AM_C_PROTOTYPES
6918 Support for the obsolete de-ANSI-fication feature
6919 requires the source files @file{ansi2knr.c}
6920 and @file{ansi2knr.1} to be in the same package as the ANSI C source;
6921 these files are distributed with Automake.  Also, the package
6922 @file{configure.ac} must call the macro @code{AM_C_PROTOTYPES}
6923 (@pxref{Macros}).
6924
6925 Automake also handles finding the @command{ansi2knr} support files in some
6926 other directory in the current package.  This is done by prepending the
6927 relative path to the appropriate directory to the @command{ansi2knr}
6928 option.  For instance, suppose the package has ANSI C code in the
6929 @file{src} and @file{lib} subdirectories.  The files @file{ansi2knr.c} and
6930 @file{ansi2knr.1} appear in @file{lib}.  Then this could appear in
6931 @file{src/Makefile.am}:
6932
6933 @example
6934 AUTOMAKE_OPTIONS = ../lib/ansi2knr
6935 @end example
6936
6937 If no directory prefix is given, the files are assumed to be in the
6938 current directory.
6939
6940 Note that automatic de-ANSI-fication will not work when the package is
6941 being built for a different host architecture.  That is because
6942 @command{automake} currently has no way to build @command{ansi2knr}
6943 for the build machine.
6944
6945 @c FIXME: this paragraph might be better moved to an `upgrading' section.
6946 @cindex @code{LTLIBOBJS} and @code{ansi2knr}
6947 @cindex @code{LIBOBJS} and @code{ansi2knr}
6948 @cindex @code{ansi2knr} and @code{LTLIBOBJS}
6949 @cindex @code{ansi2knr} and @code{LIBOBJS}
6950 Using @code{LIBOBJS} with source de-ANSI-fication used to require
6951 hand-crafted code in @file{configure} to append @samp{$U} to basenames
6952 in @code{LIBOBJS}.  This is no longer true today.  Starting with version
6953 2.54, Autoconf takes care of rewriting @code{LIBOBJS} and
6954 @code{LTLIBOBJS}.  (@pxref{AC_LIBOBJ vs LIBOBJS, , @code{AC_LIBOBJ}
6955 vs.@: @code{LIBOBJS}, autoconf, The Autoconf Manual})
6956
6957 @node Dependencies
6958 @section Automatic dependency tracking
6959
6960 As a developer it is often painful to continually update the
6961 @file{Makefile.am} whenever the include-file dependencies change in a
6962 project.  Automake supplies a way to automatically track dependency
6963 changes (@pxref{Dependency Tracking}).
6964
6965 @cindex Dependency tracking
6966 @cindex Automatic dependency tracking
6967
6968 Automake always uses complete dependencies for a compilation,
6969 including system headers.  Automake's model is that dependency
6970 computation should be a side effect of the build.  To this end,
6971 dependencies are computed by running all compilations through a
6972 special wrapper program called @command{depcomp}.  @command{depcomp}
6973 understands how to coax many different C and C++ compilers into
6974 generating dependency information in the format it requires.
6975 @samp{automake -a} will install @command{depcomp} into your source
6976 tree for you.  If @command{depcomp} can't figure out how to properly
6977 invoke your compiler, dependency tracking will simply be disabled for
6978 your build.
6979
6980 @cindex @command{depcomp}
6981
6982 Experience with earlier versions of Automake (@pxref{Dependency
6983 Tracking Evolution}) taught us that it is not reliable to generate
6984 dependencies only on the maintainer's system, as configurations vary
6985 too much.  So instead Automake implements dependency tracking at build
6986 time.
6987
6988 Automatic dependency tracking can be suppressed by putting
6989 @option{no-dependencies} in the variable @code{AUTOMAKE_OPTIONS}, or
6990 passing @option{no-dependencies} as an argument to @code{AM_INIT_AUTOMAKE}
6991 (this should be the preferred way).  Or, you can invoke @command{automake}
6992 with the @option{-i} option.  Dependency tracking is enabled by default.
6993
6994 @vindex AUTOMAKE_OPTIONS
6995 @opindex no-dependencies
6996
6997 The person building your package also can choose to disable dependency
6998 tracking by configuring with @option{--disable-dependency-tracking}.
6999
7000 @cindex Disabling dependency tracking
7001 @cindex Dependency tracking, disabling
7002
7003
7004 @node EXEEXT
7005 @section Support for executable extensions
7006
7007 @cindex Executable extension
7008 @cindex Extension, executable
7009 @cindex Windows
7010
7011 On some platforms, such as Windows, executables are expected to have an
7012 extension such as @file{.exe}.  On these platforms, some compilers (GCC
7013 among them) will automatically generate @file{foo.exe} when asked to
7014 generate @file{foo}.
7015
7016 Automake provides mostly-transparent support for this.  Unfortunately
7017 @emph{mostly} doesn't yet mean @emph{fully}.  Until the English
7018 dictionary is revised, you will have to assist Automake if your package
7019 must support those platforms.
7020
7021 One thing you must be aware of is that, internally, Automake rewrites
7022 something like this:
7023
7024 @example
7025 bin_PROGRAMS = liver
7026 @end example
7027
7028 to this:
7029
7030 @example
7031 bin_PROGRAMS = liver$(EXEEXT)
7032 @end example
7033
7034 The targets Automake generates are likewise given the @samp{$(EXEEXT)}
7035 extension.
7036
7037 The variables @code{TESTS} and @code{XFAIL_TESTS} (@pxref{Simple Tests})
7038 are also rewritten if they contain filenames that have been declared as
7039 programs in the same @file{Makefile}.  (This is mostly useful when some
7040 programs from @code{check_PROGRAMS} are listed in @code{TESTS}.)
7041
7042 However, Automake cannot apply this rewriting to @command{configure}
7043 substitutions.  This means that if you are conditionally building a
7044 program using such a substitution, then your @file{configure.ac} must
7045 take care to add @samp{$(EXEEXT)} when constructing the output variable.
7046
7047 With Autoconf 2.13 and earlier, you must explicitly use @code{AC_EXEEXT}
7048 to get this support.  With Autoconf 2.50, @code{AC_EXEEXT} is run
7049 automatically if you configure a compiler (say, through
7050 @code{AC_PROG_CC}).
7051
7052 Sometimes maintainers like to write an explicit link rule for their
7053 program.  Without executable extension support, this is easy---you
7054 simply write a rule whose target is the name of the program.  However,
7055 when executable extension support is enabled, you must instead add the
7056 @samp{$(EXEEXT)} suffix.
7057
7058 Unfortunately, due to the change in Autoconf 2.50, this means you must
7059 always add this extension.  However, this is a problem for maintainers
7060 who know their package will never run on a platform that has
7061 executable extensions.  For those maintainers, the @option{no-exeext}
7062 option (@pxref{Options}) will disable this feature.  This works in a
7063 fairly ugly way; if @option{no-exeext} is seen, then the presence of a
7064 rule for a target named @code{foo} in @file{Makefile.am} will override
7065 an @command{automake}-generated rule for @samp{foo$(EXEEXT)}.  Without
7066 the @option{no-exeext} option, this use will give a diagnostic.
7067
7068
7069 @node Other Objects
7070 @chapter Other Derived Objects
7071
7072 Automake can handle derived objects that are not C programs.  Sometimes
7073 the support for actually building such objects must be explicitly
7074 supplied, but Automake will still automatically handle installation and
7075 distribution.
7076
7077 @menu
7078 * Scripts::                     Executable scripts
7079 * Headers::                     Header files
7080 * Data::                        Architecture-independent data files
7081 * Sources::                     Derived sources
7082 @end menu
7083
7084
7085 @node Scripts
7086 @section Executable Scripts
7087
7088 @cindex @code{_SCRIPTS} primary, defined
7089 @cindex @code{SCRIPTS} primary, defined
7090 @cindex Primary variable, @code{SCRIPTS}
7091 @vindex _SCRIPTS
7092 @cindex Installing scripts
7093
7094 It is possible to define and install programs that are scripts.  Such
7095 programs are listed using the @code{SCRIPTS} primary name.  When the
7096 script is distributed in its final, installable form, the
7097 @file{Makefile} usually looks as follows:
7098 @vindex SCRIPTS
7099
7100 @example
7101 # Install my_script in $(bindir) and distribute it.
7102 dist_bin_SCRIPTS = my_script
7103 @end example
7104
7105 Scripts are not distributed by default; as we have just seen, those
7106 that should be distributed can be specified using a @code{dist_}
7107 prefix as with other primaries.
7108
7109 @cindex @code{SCRIPTS}, installation directories
7110 @vindex bin_SCRIPTS
7111 @vindex sbin_SCRIPTS
7112 @vindex libexec_SCRIPTS
7113 @vindex pkgdata_SCRIPTS
7114 @vindex pkglibexec_SCRIPTS
7115 @vindex noinst_SCRIPTS
7116 @vindex check_SCRIPTS
7117
7118 Scripts can be installed in @code{bindir}, @code{sbindir},
7119 @code{libexecdir}, @code{pkglibexecdir}, or @code{pkgdatadir}.
7120
7121 Scripts that need not be installed can be listed in
7122 @code{noinst_SCRIPTS}, and among them, those which are needed only by
7123 @samp{make check} should go in @code{check_SCRIPTS}.
7124
7125 When a script needs to be built, the @file{Makefile.am} should include
7126 the appropriate rules.  For instance the @command{automake} program
7127 itself is a Perl script that is generated from @file{automake.in}.
7128 Here is how this is handled:
7129
7130 @example
7131 bin_SCRIPTS = automake
7132 CLEANFILES = $(bin_SCRIPTS)
7133 EXTRA_DIST = automake.in
7134
7135 do_subst = sed -e 's,[@@]datadir[@@],$(datadir),g' \
7136             -e 's,[@@]PERL[@@],$(PERL),g' \
7137             -e 's,[@@]PACKAGE[@@],$(PACKAGE),g' \
7138             -e 's,[@@]VERSION[@@],$(VERSION),g' \
7139             @dots{}
7140
7141 automake: automake.in Makefile
7142         $(do_subst) < $(srcdir)/automake.in > automake
7143         chmod +x automake
7144 @end example
7145
7146 Such scripts for which a build rule has been supplied need to be
7147 deleted explicitly using @code{CLEANFILES} (@pxref{Clean}), and their
7148 sources have to be distributed, usually with @code{EXTRA_DIST}
7149 (@pxref{Basics of Distribution}).
7150
7151 Another common way to build scripts is to process them from
7152 @file{configure} with @code{AC_CONFIG_FILES}.  In this situation
7153 Automake knows which files should be cleaned and distributed, and what
7154 the rebuild rules should look like.
7155
7156 For instance if @file{configure.ac} contains
7157
7158 @example
7159 AC_CONFIG_FILES([src/my_script], [chmod +x src/my_script])
7160 @end example
7161
7162 @noindent
7163 to build @file{src/my_script} from @file{src/my_script.in}, then a
7164 @file{src/Makefile.am} to install this script in @code{$(bindir)} can
7165 be as simple as
7166
7167 @example
7168 bin_SCRIPTS = my_script
7169 CLEANFILES = $(bin_SCRIPTS)
7170 @end example
7171
7172 @noindent
7173 There is no need for @code{EXTRA_DIST} or any build rule: Automake
7174 infers them from @code{AC_CONFIG_FILES} (@pxref{Requirements}).
7175 @code{CLEANFILES} is still useful, because by default Automake will
7176 clean targets of @code{AC_CONFIG_FILES} in @code{distclean}, not
7177 @code{clean}.
7178
7179 Although this looks simpler, building scripts this way has one
7180 drawback: directory variables such as @code{$(datadir)} are not fully
7181 expanded and may refer to other directory variables.
7182
7183 @node Headers
7184 @section Header files
7185
7186 @cindex @code{_HEADERS} primary, defined
7187 @cindex @code{HEADERS} primary, defined
7188 @cindex Primary variable, @code{HEADERS}
7189 @vindex _HEADERS
7190 @vindex noinst_HEADERS
7191 @cindex @code{HEADERS}, installation directories
7192 @cindex Installing headers
7193 @vindex include_HEADERS
7194 @vindex oldinclude_HEADERS
7195 @vindex pkginclude_HEADERS
7196
7197
7198 Header files that must be installed are specified by the
7199 @code{HEADERS} family of variables.  Headers can be installed in
7200 @code{includedir}, @code{oldincludedir}, @code{pkgincludedir} or any
7201 other directory you may have defined (@pxref{Uniform}).  For instance,
7202
7203 @example
7204 include_HEADERS = foo.h bar/bar.h
7205 @end example
7206
7207 @noindent
7208 will install the two files as @file{$(includedir)/foo.h} and
7209 @file{$(includedir)/bar.h}.
7210
7211 The @code{nobase_} prefix is also supported,
7212
7213 @example
7214 nobase_include_HEADERS = foo.h bar/bar.h
7215 @end example
7216
7217 @noindent
7218 will install the two files as @file{$(includedir)/foo.h} and
7219 @file{$(includedir)/bar/bar.h} (@pxref{Alternative}).
7220
7221 @vindex noinst_HEADERS
7222 Usually, only header files that accompany installed libraries need to
7223 be installed.  Headers used by programs or convenience libraries are
7224 not installed.  The @code{noinst_HEADERS} variable can be used for
7225 such headers.  However when the header actually belongs to a single
7226 convenience library or program, we recommend listing it in the
7227 program's or library's @code{_SOURCES} variable (@pxref{Program
7228 Sources}) instead of in @code{noinst_HEADERS}.  This is clearer for
7229 the @file{Makefile.am} reader.  @code{noinst_HEADERS} would be the
7230 right variable to use in a directory containing only headers and no
7231 associated library or program.
7232
7233 All header files must be listed somewhere; in a @code{_SOURCES}
7234 variable or in a @code{_HEADERS} variable.  Missing ones will not
7235 appear in the distribution.
7236
7237 For header files that are built and must not be distributed, use the
7238 @code{nodist_} prefix as in @code{nodist_include_HEADERS} or
7239 @code{nodist_prog_SOURCES}.  If these generated headers are needed
7240 during the build, you must also ensure they exist before they are
7241 used (@pxref{Sources}).
7242
7243
7244 @node Data
7245 @section Architecture-independent data files
7246
7247 @cindex @code{_DATA} primary, defined
7248 @cindex @code{DATA} primary, defined
7249 @cindex Primary variable, @code{DATA}
7250 @vindex _DATA
7251
7252 Automake supports the installation of miscellaneous data files using the
7253 @code{DATA} family of variables.
7254 @vindex DATA
7255
7256 @vindex data_DATA
7257 @vindex sysconf_DATA
7258 @vindex sharedstate_DATA
7259 @vindex localstate_DATA
7260 @vindex pkgdata_DATA
7261
7262 Such data can be installed in the directories @code{datadir},
7263 @code{sysconfdir}, @code{sharedstatedir}, @code{localstatedir}, or
7264 @code{pkgdatadir}.
7265
7266 By default, data files are @emph{not} included in a distribution.  Of
7267 course, you can use the @code{dist_} prefix to change this on a
7268 per-variable basis.
7269
7270 Here is how Automake declares its auxiliary data files:
7271
7272 @example
7273 dist_pkgdata_DATA = clean-kr.am clean.am @dots{}
7274 @end example
7275
7276
7277 @node Sources
7278 @section Built Sources
7279
7280 Because Automake's automatic dependency tracking works as a side-effect
7281 of compilation (@pxref{Dependencies}) there is a bootstrap issue: a
7282 target should not be compiled before its dependencies are made, but
7283 these dependencies are unknown until the target is first compiled.
7284
7285 Ordinarily this is not a problem, because dependencies are distributed
7286 sources: they preexist and do not need to be built.  Suppose that
7287 @file{foo.c} includes @file{foo.h}.  When it first compiles
7288 @file{foo.o}, @command{make} only knows that @file{foo.o} depends on
7289 @file{foo.c}.  As a side-effect of this compilation @command{depcomp}
7290 records the @file{foo.h} dependency so that following invocations of
7291 @command{make} will honor it.  In these conditions, it's clear there is
7292 no problem: either @file{foo.o} doesn't exist and has to be built
7293 (regardless of the dependencies), or accurate dependencies exist and
7294 they can be used to decide whether @file{foo.o} should be rebuilt.
7295
7296 It's a different story if @file{foo.h} doesn't exist by the first
7297 @command{make} run.  For instance, there might be a rule to build
7298 @file{foo.h}.  This time @file{file.o}'s build will fail because the
7299 compiler can't find @file{foo.h}.  @command{make} failed to trigger the
7300 rule to build @file{foo.h} first by lack of dependency information.
7301
7302 @vindex BUILT_SOURCES
7303 @cindex @code{BUILT_SOURCES}, defined
7304
7305 The @code{BUILT_SOURCES} variable is a workaround for this problem.  A
7306 source file listed in @code{BUILT_SOURCES} is made on @samp{make all}
7307 or @samp{make check} (or even @samp{make install}) before other
7308 targets are processed.  However, such a source file is not
7309 @emph{compiled} unless explicitly requested by mentioning it in some
7310 other @code{_SOURCES} variable.
7311
7312 So, to conclude our introductory example, we could use
7313 @samp{BUILT_SOURCES = foo.h} to ensure @file{foo.h} gets built before
7314 any other target (including @file{foo.o}) during @samp{make all} or
7315 @samp{make check}.
7316
7317 @code{BUILT_SOURCES} is actually a bit of a misnomer, as any file which
7318 must be created early in the build process can be listed in this
7319 variable.  Moreover, all built sources do not necessarily have to be
7320 listed in @code{BUILT_SOURCES}.  For instance, a generated @file{.c} file
7321 doesn't need to appear in @code{BUILT_SOURCES} (unless it is included by
7322 another source), because it's a known dependency of the associated
7323 object.
7324
7325 It might be important to emphasize that @code{BUILT_SOURCES} is
7326 honored only by @samp{make all}, @samp{make check} and @samp{make
7327 install}.  This means you cannot build a specific target (e.g.,
7328 @samp{make foo}) in a clean tree if it depends on a built source.
7329 However it will succeed if you have run @samp{make all} earlier,
7330 because accurate dependencies are already available.
7331
7332 The next section illustrates and discusses the handling of built sources
7333 on a toy example.
7334
7335 @menu
7336 * Built Sources Example::       Several ways to handle built sources.
7337 @end menu
7338
7339 @node Built Sources Example
7340 @subsection Built Sources Example
7341
7342 Suppose that @file{foo.c} includes @file{bindir.h}, which is
7343 installation-dependent and not distributed: it needs to be built.  Here
7344 @file{bindir.h} defines the preprocessor macro @code{bindir} to the
7345 value of the @command{make} variable @code{bindir} (inherited from
7346 @file{configure}).
7347
7348 We suggest several implementations below.  It's not meant to be an
7349 exhaustive listing of all ways to handle built sources, but it will give
7350 you a few ideas if you encounter this issue.
7351
7352 @subsubheading First Try
7353
7354 This first implementation will illustrate the bootstrap issue mentioned
7355 in the previous section (@pxref{Sources}).
7356
7357 Here is a tentative @file{Makefile.am}.
7358
7359 @example
7360 # This won't work.
7361 bin_PROGRAMS = foo
7362 foo_SOURCES = foo.c
7363 nodist_foo_SOURCES = bindir.h
7364 CLEANFILES = bindir.h
7365 bindir.h: Makefile
7366         echo '#define bindir "$(bindir)"' >$@@
7367 @end example
7368
7369 This setup doesn't work, because Automake doesn't know that @file{foo.c}
7370 includes @file{bindir.h}.  Remember, automatic dependency tracking works
7371 as a side-effect of compilation, so the dependencies of @file{foo.o} will
7372 be known only after @file{foo.o} has been compiled (@pxref{Dependencies}).
7373 The symptom is as follows.
7374
7375 @example
7376 % make
7377 source='foo.c' object='foo.o' libtool=no \
7378 depfile='.deps/foo.Po' tmpdepfile='.deps/foo.TPo' \
7379 depmode=gcc /bin/sh ./depcomp \
7380 gcc -I. -I. -g -O2 -c `test -f 'foo.c' || echo './'`foo.c
7381 foo.c:2: bindir.h: No such file or directory
7382 make: *** [foo.o] Error 1
7383 @end example
7384
7385 In this example @file{bindir.h} is not distributed nor installed, and
7386 it is not even being built on-time.  One may wonder if the
7387 @samp{nodist_foo_SOURCES = bindir.h} line has any use at all.  This
7388 line simply states that @file{bindir.h} is a source of @code{foo}, so
7389 for instance, it should be inspected while generating tags
7390 (@pxref{Tags}).  In other words, it does not help our present problem,
7391 and the build would fail identically without it.
7392
7393 @subsubheading Using @code{BUILT_SOURCES}
7394
7395 A solution is to require @file{bindir.h} to be built before anything
7396 else.  This is what @code{BUILT_SOURCES} is meant for (@pxref{Sources}).
7397
7398 @example
7399 bin_PROGRAMS = foo
7400 foo_SOURCES = foo.c
7401 nodist_foo_SOURCES = bindir.h
7402 BUILT_SOURCES = bindir.h
7403 CLEANFILES = bindir.h
7404 bindir.h: Makefile
7405         echo '#define bindir "$(bindir)"' >$@@
7406 @end example
7407
7408 See how @file{bindir.h} gets built first:
7409
7410 @example
7411 % make
7412 echo '#define bindir "/usr/local/bin"' >bindir.h
7413 make  all-am
7414 make[1]: Entering directory `/home/adl/tmp'
7415 source='foo.c' object='foo.o' libtool=no \
7416 depfile='.deps/foo.Po' tmpdepfile='.deps/foo.TPo' \
7417 depmode=gcc /bin/sh ./depcomp \
7418 gcc -I. -I. -g -O2 -c `test -f 'foo.c' || echo './'`foo.c
7419 gcc  -g -O2   -o foo  foo.o
7420 make[1]: Leaving directory `/home/adl/tmp'
7421 @end example
7422
7423 However, as said earlier, @code{BUILT_SOURCES} applies only to the
7424 @code{all}, @code{check}, and @code{install} targets.  It still fails
7425 if you try to run @samp{make foo} explicitly:
7426
7427 @example
7428 % make clean
7429 test -z "bindir.h" || rm -f bindir.h
7430 test -z "foo" || rm -f foo
7431 rm -f *.o
7432 % : > .deps/foo.Po # Suppress previously recorded dependencies
7433 % make foo
7434 source='foo.c' object='foo.o' libtool=no \
7435 depfile='.deps/foo.Po' tmpdepfile='.deps/foo.TPo' \
7436 depmode=gcc /bin/sh ./depcomp \
7437 gcc -I. -I. -g -O2 -c `test -f 'foo.c' || echo './'`foo.c
7438 foo.c:2: bindir.h: No such file or directory
7439 make: *** [foo.o] Error 1
7440 @end example
7441
7442 @subsubheading Recording Dependencies manually
7443
7444 Usually people are happy enough with @code{BUILT_SOURCES} because they
7445 never build targets such as @samp{make foo} before @samp{make all}, as
7446 in the previous example.  However if this matters to you, you can
7447 avoid @code{BUILT_SOURCES} and record such dependencies explicitly in
7448 the @file{Makefile.am}.
7449
7450 @example
7451 bin_PROGRAMS = foo
7452 foo_SOURCES = foo.c
7453 nodist_foo_SOURCES = bindir.h
7454 foo.$(OBJEXT): bindir.h
7455 CLEANFILES = bindir.h
7456 bindir.h: Makefile
7457         echo '#define bindir "$(bindir)"' >$@@
7458 @end example
7459
7460 You don't have to list @emph{all} the dependencies of @file{foo.o}
7461 explicitly, only those that might need to be built.  If a dependency
7462 already exists, it will not hinder the first compilation and will be
7463 recorded by the normal dependency tracking code.  (Note that after
7464 this first compilation the dependency tracking code will also have
7465 recorded the dependency between @file{foo.o} and
7466 @file{bindir.h}; so our explicit dependency is really useful to
7467 the first build only.)
7468
7469 Adding explicit dependencies like this can be a bit dangerous if you are
7470 not careful enough.  This is due to the way Automake tries not to
7471 overwrite your rules (it assumes you know better than it).
7472 @samp{foo.$(OBJEXT): bindir.h} supersedes any rule Automake may want to
7473 output to build @samp{foo.$(OBJEXT)}.  It happens to work in this case
7474 because Automake doesn't have to output any @samp{foo.$(OBJEXT):}
7475 target: it relies on a suffix rule instead (i.e., @samp{.c.$(OBJEXT):}).
7476 Always check the generated @file{Makefile.in} if you do this.
7477
7478 @subsubheading Build @file{bindir.h} from @file{configure}
7479
7480 It's possible to define this preprocessor macro from @file{configure},
7481 either in @file{config.h} (@pxref{Defining Directories, , Defining
7482 Directories, autoconf, The Autoconf Manual}), or by processing a
7483 @file{bindir.h.in} file using @code{AC_CONFIG_FILES}
7484 (@pxref{Configuration Actions, ,Configuration Actions, autoconf, The
7485 Autoconf Manual}).
7486
7487 At this point it should be clear that building @file{bindir.h} from
7488 @file{configure} works well for this example.  @file{bindir.h} will exist
7489 before you build any target, hence will not cause any dependency issue.
7490
7491 The Makefile can be shrunk as follows.  We do not even have to mention
7492 @file{bindir.h}.
7493
7494 @example
7495 bin_PROGRAMS = foo
7496 foo_SOURCES = foo.c
7497 @end example
7498
7499 However, it's not always possible to build sources from
7500 @file{configure}, especially when these sources are generated by a tool
7501 that needs to be built first.
7502
7503 @subsubheading Build @file{bindir.c}, not @file{bindir.h}.
7504
7505 Another attractive idea is to define @code{bindir} as a variable or
7506 function exported from @file{bindir.o}, and build @file{bindir.c}
7507 instead of @file{bindir.h}.
7508
7509 @example
7510 noinst_PROGRAMS = foo
7511 foo_SOURCES = foo.c bindir.h
7512 nodist_foo_SOURCES = bindir.c
7513 CLEANFILES = bindir.c
7514 bindir.c: Makefile
7515         echo 'const char bindir[] = "$(bindir)";' >$@@
7516 @end example
7517
7518 @file{bindir.h} contains just the variable's declaration and doesn't
7519 need to be built, so it won't cause any trouble.  @file{bindir.o} is
7520 always dependent on @file{bindir.c}, so @file{bindir.c} will get built
7521 first.
7522
7523 @subsubheading Which is best?
7524
7525 There is no panacea, of course.  Each solution has its merits and
7526 drawbacks.
7527
7528 You cannot use @code{BUILT_SOURCES} if the ability to run @samp{make
7529 foo} on a clean tree is important to you.
7530
7531 You won't add explicit dependencies if you are leery of overriding
7532 an Automake rule by mistake.
7533
7534 Building files from @file{./configure} is not always possible, neither
7535 is converting @file{.h} files into @file{.c} files.
7536
7537
7538 @node Other GNU Tools
7539 @chapter Other GNU Tools
7540
7541 Since Automake is primarily intended to generate @file{Makefile.in}s for
7542 use in GNU programs, it tries hard to interoperate with other GNU tools.
7543
7544 @menu
7545 * Emacs Lisp::                  Emacs Lisp
7546 * gettext::                     Gettext
7547 * Libtool::                     Libtool
7548 * Java::                        Java bytecode compilation (deprecated)
7549 * Python::                      Python
7550 @end menu
7551
7552
7553 @node Emacs Lisp
7554 @section Emacs Lisp
7555
7556 @cindex @code{_LISP} primary, defined
7557 @cindex @code{LISP} primary, defined
7558 @cindex Primary variable, @code{LISP}
7559
7560 @vindex _LISP
7561 @vindex lisp_LISP
7562 @vindex noinst_LISP
7563
7564 Automake provides some support for Emacs Lisp.  The @code{LISP} primary
7565 is used to hold a list of @file{.el} files.  Possible prefixes for this
7566 primary are @code{lisp_} and @code{noinst_}.  Note that if
7567 @code{lisp_LISP} is defined, then @file{configure.ac} must run
7568 @code{AM_PATH_LISPDIR} (@pxref{Macros}).
7569
7570 @vindex dist_lisp_LISP
7571 @vindex dist_noinst_LISP
7572 Lisp sources are not distributed by default.  You can prefix the
7573 @code{LISP} primary with @code{dist_}, as in @code{dist_lisp_LISP} or
7574 @code{dist_noinst_LISP}, to indicate that these files should be
7575 distributed.
7576
7577 Automake will byte-compile all Emacs Lisp source files using the Emacs
7578 found by @code{AM_PATH_LISPDIR}, if any was found.
7579
7580 Byte-compiled Emacs Lisp files are not portable among all versions of
7581 Emacs, so it makes sense to turn this off if you expect sites to have
7582 more than one version of Emacs installed.  Furthermore, many packages
7583 don't actually benefit from byte-compilation.  Still, we recommend
7584 that you byte-compile your Emacs Lisp sources.  It is probably better
7585 for sites with strange setups to cope for themselves than to make the
7586 installation less nice for everybody else.
7587
7588 There are two ways to avoid byte-compiling.  Historically, we have
7589 recommended the following construct.
7590
7591 @example
7592 lisp_LISP = file1.el file2.el
7593 ELCFILES =
7594 @end example
7595
7596 @noindent
7597 @code{ELCFILES} is an internal Automake variable that normally lists
7598 all @file{.elc} files that must be byte-compiled.  Automake defines
7599 @code{ELCFILES} automatically from @code{lisp_LISP}.  Emptying this
7600 variable explicitly prevents byte-compilation.
7601
7602 Since Automake 1.8, we now recommend using @code{lisp_DATA} instead:
7603
7604 @c Keep in sync with primary-prefix-couples-documented-valid.test.
7605 @example
7606 lisp_DATA = file1.el file2.el
7607 @end example
7608
7609 Note that these two constructs are not equivalent.  @code{_LISP} will
7610 not install a file if Emacs is not installed, while @code{_DATA} will
7611 always install its files.
7612
7613 @node gettext
7614 @section Gettext
7615
7616 @cindex GNU Gettext support
7617 @cindex Gettext support
7618 @cindex Support for GNU Gettext
7619
7620 If @code{AM_GNU_GETTEXT} is seen in @file{configure.ac}, then Automake
7621 turns on support for GNU gettext, a message catalog system for
7622 internationalization
7623 (@pxref{Top, , Introduction, gettext, GNU gettext utilities}).
7624
7625 The @code{gettext} support in Automake requires the addition of one or
7626 two subdirectories to the package: @file{po} and possibly also @file{intl}.
7627 The latter is needed if @code{AM_GNU_GETTEXT} is not invoked with the
7628 @samp{external} argument, or if @code{AM_GNU_GETTEXT_INTL_SUBDIR} is used.
7629 Automake ensures that these directories exist and are mentioned in
7630 @code{SUBDIRS}.
7631
7632 @node Libtool
7633 @section Libtool
7634
7635 Automake provides support for GNU Libtool (@pxref{Top, , Introduction,
7636 libtool, The Libtool Manual}) with the @code{LTLIBRARIES} primary.
7637 @xref{A Shared Library}.
7638
7639
7640 @node Java
7641 @section Java bytecode compilation (deprecated)
7642
7643 @cindex @code{_JAVA} primary, defined
7644 @cindex @code{JAVA} primary, defined
7645 @cindex Primary variable, @code{JAVA}
7646 @cindex Java to bytecode, compilation
7647 @cindex Compilation of Java to bytecode
7648
7649 Automake provides some minimal support for Java bytecode compilation with
7650 the @code{JAVA} primary (in addition to the support for compiling Java to
7651 native machine code; @pxref{Java Support with gcj}).  Note however that
7652 @emph{the interface and most features described here are deprecated}; the
7653 next automake release will strive to provide a better and cleaner
7654 interface, which however @emph{won't be backward-compatible}; the present
7655 interface will probably be removed altogether in future automake releases
7656 (1.13 or later), so don't use it in new code.
7657
7658 Any @file{.java} files listed in a @code{_JAVA} variable will be
7659 compiled with @code{JAVAC} at build time.  By default, @file{.java}
7660 files are not included in the distribution, you should use the
7661 @code{dist_} prefix to distribute them.
7662
7663 Here is a typical setup for distributing @file{.java} files and
7664 installing the @file{.class} files resulting from their compilation.
7665
7666 @c Keep in sync with primary-prefix-couples-documented-valid.test.
7667 @example
7668 javadir = $(datadir)/java
7669 dist_java_JAVA = a.java b.java @dots{}
7670 @end example
7671
7672 @cindex @code{JAVA} restrictions
7673 @cindex Restrictions for @code{JAVA}
7674
7675 Currently Automake enforces the restriction that only one @code{_JAVA}
7676 primary can be used in a given @file{Makefile.am}.  The reason for this
7677 restriction is that, in general, it isn't possible to know which
7678 @file{.class} files were generated from which @file{.java} files, so
7679 it would be impossible to know which files to install where.  For
7680 instance, a @file{.java} file can define multiple classes; the resulting
7681 @file{.class} file names cannot be predicted without parsing the
7682 @file{.java} file.
7683
7684 There are a few variables that are used when compiling Java sources:
7685
7686 @vtable @code
7687 @item JAVAC
7688 The name of the Java compiler.  This defaults to @samp{javac}.
7689
7690 @item JAVACFLAGS
7691 The flags to pass to the compiler.  This is considered to be a user
7692 variable (@pxref{User Variables}).
7693
7694 @item AM_JAVACFLAGS
7695 More flags to pass to the Java compiler.  This, and not
7696 @code{JAVACFLAGS}, should be used when it is necessary to put Java
7697 compiler flags into @file{Makefile.am}.
7698
7699 @item JAVAROOT
7700 The value of this variable is passed to the @option{-d} option to
7701 @code{javac}.  It defaults to @samp{$(top_builddir)}.
7702
7703 @item CLASSPATH_ENV
7704 This variable is a shell expression that is used to set the
7705 @env{CLASSPATH} environment variable on the @code{javac} command line.
7706 (In the future we will probably handle class path setting differently.)
7707 @end vtable
7708
7709
7710 @node Python
7711 @section Python
7712
7713 @cindex @code{_PYTHON} primary, defined
7714 @cindex @code{PYTHON} primary, defined
7715 @cindex Primary variable, @code{PYTHON}
7716 @vindex _PYTHON
7717
7718 Automake provides support for Python compilation with the
7719 @code{PYTHON} primary.  A typical setup is to call
7720 @code{AM_PATH_PYTHON} in @file{configure.ac} and use a line like the
7721 following in @file{Makefile.am}:
7722
7723 @example
7724 python_PYTHON = tree.py leave.py
7725 @end example
7726
7727 Any files listed in a @code{_PYTHON} variable will be byte-compiled
7728 with @command{py-compile} at install time.  @command{py-compile}
7729 actually creates both standard (@file{.pyc}) and optimized
7730 (@file{.pyo}) byte-compiled versions of the source files.  Note that
7731 because byte-compilation occurs at install time, any files listed in
7732 @code{noinst_PYTHON} will not be compiled.  Python source files are
7733 included in the distribution by default, prepend @code{nodist_} (as in
7734 @code{nodist_python_PYTHON}) to omit them.
7735
7736 Automake ships with an Autoconf macro called @code{AM_PATH_PYTHON}
7737 that will determine some Python-related directory variables (see
7738 below).  If you have called @code{AM_PATH_PYTHON} from
7739 @file{configure.ac}, then you may use the variables
7740 @c Keep in sync with primary-prefix-couples-documented-valid.test.
7741 @code{python_PYTHON} or @code{pkgpython_PYTHON} to list Python source
7742 files in your @file{Makefile.am}, depending on where you want your files
7743 installed (see the definitions of @code{pythondir} and
7744 @code{pkgpythondir} below).
7745
7746 @defmac AM_PATH_PYTHON (@ovar{version}, @ovar{action-if-found},
7747   @ovar{action-if-not-found})
7748
7749 Search for a Python interpreter on the system.  This macro takes three
7750 optional arguments.  The first argument, if present, is the minimum
7751 version of Python required for this package: @code{AM_PATH_PYTHON}
7752 will skip any Python interpreter that is older than @var{version}.
7753 If an interpreter is found and satisfies @var{version}, then
7754 @var{action-if-found} is run.  Otherwise, @var{action-if-not-found} is
7755 run.
7756
7757 If @var{action-if-not-found} is not specified, as in the following
7758 example, the default is to abort @command{configure}.
7759
7760 @example
7761 AM_PATH_PYTHON([2.2])
7762 @end example
7763
7764 @noindent
7765 This is fine when Python is an absolute requirement for the package.
7766 If Python >= 2.5 was only @emph{optional} to the package,
7767 @code{AM_PATH_PYTHON} could be called as follows.
7768
7769 @example
7770 AM_PATH_PYTHON([2.5],, [:])
7771 @end example
7772
7773 If the @env{PYTHON} variable is set when @code{AM_PATH_PYTHON} is
7774 called, then that will be the only Python interpreter that is tried.
7775
7776 @code{AM_PATH_PYTHON} creates the following output variables based on
7777 the Python installation found during configuration.
7778 @end defmac
7779
7780 @vtable @code
7781 @item PYTHON
7782 The name of the Python executable, or @samp{:} if no suitable
7783 interpreter could be found.
7784
7785 Assuming @var{action-if-not-found} is used (otherwise @file{./configure}
7786 will abort if Python is absent), the value of @code{PYTHON} can be used
7787 to setup a conditional in order to disable the relevant part of a build
7788 as follows.
7789
7790 @example
7791 AM_PATH_PYTHON(,, [:])
7792 AM_CONDITIONAL([HAVE_PYTHON], [test "$PYTHON" != :])
7793 @end example
7794
7795 @item PYTHON_VERSION
7796 The Python version number, in the form @var{major}.@var{minor}
7797 (e.g., @samp{2.5}).  This is currently the value of
7798 @samp{sys.version[:3]}.
7799
7800 @item PYTHON_PREFIX
7801 The string @samp{$@{prefix@}}.  This term may be used in future work
7802 that needs the contents of Python's @samp{sys.prefix}, but general
7803 consensus is to always use the value from @command{configure}.
7804
7805 @item PYTHON_EXEC_PREFIX
7806 The string @samp{$@{exec_prefix@}}.  This term may be used in future work
7807 that needs the contents of Python's @samp{sys.exec_prefix}, but general
7808 consensus is to always use the value from @command{configure}.
7809
7810 @item PYTHON_PLATFORM
7811 The canonical name used by Python to describe the operating system, as
7812 given by @samp{sys.platform}.  This value is sometimes needed when
7813 building Python extensions.
7814
7815 @item pythondir
7816 The directory name for the @file{site-packages} subdirectory of the
7817 standard Python install tree.
7818
7819 @item pkgpythondir
7820 This is the directory under @code{pythondir} that is named after the
7821 package.  That is, it is @samp{$(pythondir)/$(PACKAGE)}.  It is provided
7822 as a convenience.
7823
7824 @item pyexecdir
7825 This is the directory where Python extension modules (shared libraries)
7826 should be installed.  An extension module written in C could be declared
7827 as follows to Automake:
7828
7829 @c Keep in sync with primary-prefix-couples-documented-valid.test.
7830 @example
7831 pyexec_LTLIBRARIES = quaternion.la
7832 quaternion_la_SOURCES = quaternion.c support.c support.h
7833 quaternion_la_LDFLAGS = -avoid-version -module
7834 @end example
7835
7836 @item pkgpyexecdir
7837 This is a convenience variable that is defined as
7838 @samp{$(pyexecdir)/$(PACKAGE)}.
7839 @end vtable
7840
7841 All these directory variables have values that start with either
7842 @samp{$@{prefix@}} or @samp{$@{exec_prefix@}} unexpanded.  This works
7843 fine in @file{Makefiles}, but it makes these variables hard to use in
7844 @file{configure}.  This is mandated by the GNU coding standards, so
7845 that the user can run @samp{make prefix=/foo install}.  The Autoconf
7846 manual has a section with more details on this topic
7847 (@pxref{Installation Directory Variables, , Installation Directory
7848 Variables, autoconf, The Autoconf Manual}).  See also @ref{Hard-Coded
7849 Install Paths}.
7850
7851
7852 @node Documentation
7853 @chapter Building documentation
7854
7855 Currently Automake provides support for Texinfo and man pages.
7856
7857 @menu
7858 * Texinfo::                     Texinfo
7859 * Man Pages::                   Man pages
7860 @end menu
7861
7862
7863 @node Texinfo
7864 @section Texinfo
7865
7866 @cindex @code{_TEXINFOS} primary, defined
7867 @cindex @code{TEXINFOS} primary, defined
7868 @cindex Primary variable, @code{TEXINFOS}
7869 @cindex HTML output using Texinfo
7870 @cindex PDF output using Texinfo
7871 @cindex PS output using Texinfo
7872 @cindex DVI output using Texinfo
7873 @vindex _TEXINFOS
7874 @vindex info_TEXINFOS
7875
7876 If the current directory contains Texinfo source, you must declare it
7877 with the @code{TEXINFOS} primary.  Generally Texinfo files are converted
7878 into info, and thus the @code{info_TEXINFOS} variable is most commonly used
7879 here.  Any Texinfo source file must end in the @file{.texi},
7880 @file{.txi}, or @file{.texinfo} extension.  We recommend @file{.texi}
7881 for new manuals.
7882
7883 Automake generates rules to build @file{.info}, @file{.dvi},
7884 @file{.ps}, @file{.pdf} and @file{.html} files from your Texinfo
7885 sources.  Following the GNU Coding Standards, only the @file{.info}
7886 files are built by @samp{make all} and installed by @samp{make
7887 install} (unless you use @option{no-installinfo}, see below).
7888 Furthermore, @file{.info} files are automatically distributed so that
7889 Texinfo is not a prerequisite for installing your package.
7890
7891 @trindex dvi
7892 @trindex html
7893 @trindex pdf
7894 @trindex ps
7895 @trindex install-dvi
7896 @trindex install-html
7897 @trindex install-pdf
7898 @trindex install-ps
7899 Other documentation formats can be built on request by @samp{make
7900 dvi}, @samp{make ps}, @samp{make pdf} and @samp{make html}, and they
7901 can be installed with @samp{make install-dvi}, @samp{make install-ps},
7902 @samp{make install-pdf} and @samp{make install-html} explicitly.
7903 @samp{make uninstall} will remove everything: the Texinfo
7904 documentation installed by default as well as all the above optional
7905 formats.
7906
7907 All these targets can be extended using @samp{-local} rules
7908 (@pxref{Extending}).
7909
7910 @cindex Texinfo flag, @code{VERSION}
7911 @cindex Texinfo flag, @code{UPDATED}
7912 @cindex Texinfo flag, @code{EDITION}
7913 @cindex Texinfo flag, @code{UPDATED-MONTH}
7914
7915 @cindex @code{VERSION} Texinfo flag
7916 @cindex @code{UPDATED} Texinfo flag
7917 @cindex @code{EDITION} Texinfo flag
7918 @cindex @code{UPDATED-MONTH} Texinfo flag
7919
7920 @cindex @file{mdate-sh}
7921
7922 If the @file{.texi} file @code{@@include}s @file{version.texi}, then
7923 that file will be automatically generated.  The file @file{version.texi}
7924 defines four Texinfo flag you can reference using
7925 @code{@@value@{EDITION@}}, @code{@@value@{VERSION@}},
7926 @code{@@value@{UPDATED@}}, and @code{@@value@{UPDATED-MONTH@}}.
7927
7928 @table @code
7929 @item EDITION
7930 @itemx VERSION
7931 Both of these flags hold the version number of your program.  They are
7932 kept separate for clarity.
7933
7934 @item UPDATED
7935 This holds the date the primary @file{.texi} file was last modified.
7936
7937 @item UPDATED-MONTH
7938 This holds the name of the month in which the primary @file{.texi} file
7939 was last modified.
7940 @end table
7941
7942 The @file{version.texi} support requires the @command{mdate-sh}
7943 script; this script is supplied with Automake and automatically
7944 included when @command{automake} is invoked with the
7945 @option{--add-missing} option.
7946
7947 If you have multiple Texinfo files, and you want to use the
7948 @file{version.texi} feature, then you have to have a separate version
7949 file for each Texinfo file.  Automake will treat any include in a
7950 Texinfo file that matches @file{vers*.texi} just as an automatically
7951 generated version file.
7952
7953 Sometimes an info file actually depends on more than one @file{.texi}
7954 file.  For instance, in GNU Hello, @file{hello.texi} includes the file
7955 @file{fdl.texi}.  You can tell Automake about these dependencies using
7956 the @code{@var{texi}_TEXINFOS} variable.  Here is how GNU Hello does it:
7957 @vindex TEXINFOS
7958 @vindex _TEXINFOS
7959
7960 @example
7961 info_TEXINFOS = hello.texi
7962 hello_TEXINFOS = fdl.texi
7963 @end example
7964
7965 @cindex @file{texinfo.tex}
7966
7967 By default, Automake requires the file @file{texinfo.tex} to appear in
7968 the same directory as the @file{Makefile.am} file that lists the
7969 @file{.texi} files.  If you used @code{AC_CONFIG_AUX_DIR} in
7970 @file{configure.ac} (@pxref{Input, , Finding `configure' Input,
7971 autoconf, The Autoconf Manual}), then @file{texinfo.tex} is looked for
7972 there.  In both cases, @command{automake} then supplies @file{texinfo.tex} if
7973 @option{--add-missing} is given, and takes care of its distribution.
7974 However, if you set the @code{TEXINFO_TEX} variable (see below),
7975 it overrides the location of the file and turns off its installation
7976 into the source as well as its distribution.
7977
7978 The option @option{no-texinfo.tex} can be used to eliminate the
7979 requirement for the file @file{texinfo.tex}.  Use of the variable
7980 @code{TEXINFO_TEX} is preferable, however, because that allows the
7981 @code{dvi}, @code{ps}, and @code{pdf} targets to still work.
7982
7983 @cindex Option, @code{no-installinfo}
7984 @cindex Target, @code{install-info}
7985 @cindex @code{install-info} target
7986 @cindex @code{no-installinfo} option
7987
7988 @opindex no-installinfo
7989 @trindex install-info
7990
7991 Automake generates an @code{install-info} rule; some people apparently
7992 use this.  By default, info pages are installed by @samp{make
7993 install}, so running @code{make install-info} is pointless.  This can
7994 be prevented via the @code{no-installinfo} option.  In this case,
7995 @file{.info} files are not installed by default, and user must
7996 request this explicitly using @samp{make install-info}.
7997
7998 @vindex AM_UPDATE_INFO_DIR
7999 By default, @code{make install-info} will try to run the
8000 @command{install-info} program (if available) to update (or create)
8001 the @file{@code{$@{infodir@}}/dir} index.  If this is undesired, it
8002 can be prevented by exporting the @code{AM_UPDATE_INFO_DIR} variable
8003 to "@code{no}".
8004
8005 The following variables are used by the Texinfo build rules.
8006
8007 @vtable @code
8008 @item MAKEINFO
8009 The name of the program invoked to build @file{.info} files.  This
8010 variable is defined by Automake.  If the @command{makeinfo} program is
8011 found on the system then it will be used by default; otherwise
8012 @command{missing} will be used instead.
8013
8014 @item MAKEINFOHTML
8015 The command invoked to build @file{.html} files.  Automake
8016 defines this to @samp{$(MAKEINFO) --html}.
8017
8018 @item MAKEINFOFLAGS
8019 User flags passed to each invocation of @samp{$(MAKEINFO)} and
8020 @samp{$(MAKEINFOHTML)}.  This user variable (@pxref{User Variables}) is
8021 not expected to be defined in any @file{Makefile}; it can be used by
8022 users to pass extra flags to suit their needs.
8023
8024 @item AM_MAKEINFOFLAGS
8025 @itemx AM_MAKEINFOHTMLFLAGS
8026 Maintainer flags passed to each @command{makeinfo} invocation.  Unlike
8027 @code{MAKEINFOFLAGS}, these variables are meant to be defined by
8028 maintainers in @file{Makefile.am}.  @samp{$(AM_MAKEINFOFLAGS)} is
8029 passed to @code{makeinfo} when building @file{.info} files; and
8030 @samp{$(AM_MAKEINFOHTMLFLAGS)} is used when building @file{.html}
8031 files.
8032
8033 @c Keep in sync with txinfo21.test.
8034 For instance, the following setting can be used to obtain one single
8035 @file{.html} file per manual, without node separators.
8036 @example
8037 AM_MAKEINFOHTMLFLAGS = --no-headers --no-split
8038 @end example
8039
8040 @code{AM_MAKEINFOHTMLFLAGS} defaults to @samp{$(AM_MAKEINFOFLAGS)}.
8041 This means that defining @code{AM_MAKEINFOFLAGS} without defining
8042 @code{AM_MAKEINFOHTMLFLAGS} will impact builds of both @file{.info}
8043 and @file{.html} files.
8044
8045 @item TEXI2DVI
8046 The name of the command that converts a @file{.texi} file into a
8047 @file{.dvi} file.  This defaults to @samp{texi2dvi}, a script that ships
8048 with the Texinfo package.
8049
8050 @item TEXI2PDF
8051 The name of the command that translates a @file{.texi} file into a
8052 @file{.pdf} file.  This defaults to @samp{$(TEXI2DVI) --pdf --batch}.
8053
8054 @item DVIPS
8055 The name of the command that builds a @file{.ps} file out of a
8056 @file{.dvi} file.  This defaults to @samp{dvips}.
8057
8058 @item TEXINFO_TEX
8059
8060 If your package has Texinfo files in many directories, you can use the
8061 variable @code{TEXINFO_TEX} to tell Automake where to find the canonical
8062 @file{texinfo.tex} for your package.  The value of this variable should
8063 be the relative path from the current @file{Makefile.am} to
8064 @file{texinfo.tex}:
8065
8066 @example
8067 TEXINFO_TEX = ../doc/texinfo.tex
8068 @end example
8069 @end vtable
8070
8071
8072 @node Man Pages
8073 @section Man Pages
8074
8075 @cindex @code{_MANS} primary, defined
8076 @cindex @code{MANS} primary, defined
8077 @cindex Primary variable, @code{MANS}
8078
8079 @vindex _MANS
8080 @vindex man_MANS
8081 A package can also include man pages (but see the GNU standards on this
8082 matter, @ref{Man Pages, , , standards, The GNU Coding Standards}.)  Man
8083 pages are declared using the @code{MANS} primary.  Generally the
8084 @code{man_MANS} variable is used.  Man pages are automatically installed in
8085 the correct subdirectory of @code{mandir}, based on the file extension.
8086
8087 File extensions such as @file{.1c} are handled by looking for the valid
8088 part of the extension and using that to determine the correct
8089 subdirectory of @code{mandir}.  Valid section names are the digits
8090 @samp{0} through @samp{9}, and the letters @samp{l} and @samp{n}.
8091
8092 Sometimes developers prefer to name a man page something like
8093 @file{foo.man} in the source, and then rename it to have the correct
8094 suffix, for example @file{foo.1}, when installing the file.  Automake
8095 also supports this mode.  For a valid section named @var{section},
8096 there is a corresponding directory named @samp{man@var{section}dir},
8097 and a corresponding @code{_MANS} variable.  Files listed in such a
8098 variable are installed in the indicated section.  If the file already
8099 has a valid suffix, then it is installed as-is; otherwise the file
8100 suffix is changed to match the section.
8101
8102 For instance, consider this example:
8103 @example
8104 man1_MANS = rename.man thesame.1 alsothesame.1c
8105 @end example
8106
8107 @noindent
8108 In this case, @file{rename.man} will be renamed to @file{rename.1} when
8109 installed, but the other files will keep their names.
8110
8111 @cindex Target, @code{install-man}
8112 @cindex Option, @option{no-installman}
8113 @cindex @code{install-man} target
8114 @cindex @option{no-installman} option
8115 @opindex no-installman
8116 @trindex install-man
8117
8118 By default, man pages are installed by @samp{make install}.  However,
8119 since the GNU project does not require man pages, many maintainers do
8120 not expend effort to keep the man pages up to date.  In these cases, the
8121 @option{no-installman} option will prevent the man pages from being
8122 installed by default.  The user can still explicitly install them via
8123 @samp{make install-man}.
8124
8125 For fast installation, with many files it is preferable to use
8126 @samp{man@var{section}_MANS} over @samp{man_MANS} as well as files that
8127 do not need to be renamed.
8128
8129 Man pages are not currently considered to be source, because it is not
8130 uncommon for man pages to be automatically generated.  Therefore they
8131 are not automatically included in the distribution.  However, this can
8132 be changed by use of the @code{dist_} prefix.  For instance here is
8133 how to distribute and install the two man pages of GNU @command{cpio}
8134 (which includes both Texinfo documentation and man pages):
8135
8136 @example
8137 dist_man_MANS = cpio.1 mt.1
8138 @end example
8139
8140 The @code{nobase_} prefix is meaningless for man pages and is
8141 disallowed.
8142
8143 @vindex notrans_
8144 @cindex @code{notrans_} prefix
8145 @cindex Man page renaming, avoiding
8146 @cindex Avoiding man page renaming
8147
8148 Executables and manpages may be renamed upon installation
8149 (@pxref{Renaming}).  For manpages this can be avoided by use of the
8150 @code{notrans_} prefix.  For instance, suppose an executable @samp{foo}
8151 allowing to access a library function @samp{foo} from the command line.
8152 The way to avoid renaming of the @file{foo.3} manpage is:
8153
8154 @example
8155 man_MANS = foo.1
8156 notrans_man_MANS = foo.3
8157 @end example
8158
8159 @cindex @code{notrans_} and @code{dist_} or @code{nodist_}
8160 @cindex @code{dist_} and @code{notrans_}
8161 @cindex @code{nodist_} and @code{notrans_}
8162
8163 @samp{notrans_} must be specified first when used in conjunction with
8164 either @samp{dist_} or @samp{nodist_} (@pxref{Fine-grained Distribution
8165 Control}).  For instance:
8166
8167 @example
8168 notrans_dist_man3_MANS = bar.3
8169 @end example
8170
8171 @node Install
8172 @chapter What Gets Installed
8173
8174 @cindex Installation support
8175 @cindex @samp{make install} support
8176
8177 Naturally, Automake handles the details of actually installing your
8178 program once it has been built.  All files named by the various
8179 primaries are automatically installed in the appropriate places when the
8180 user runs @samp{make install}.
8181
8182 @menu
8183 * Basics of Installation::      What gets installed where
8184 * The Two Parts of Install::    Installing data and programs separately
8185 * Extending Installation::      Adding your own rules for installation
8186 * Staged Installs::             Installation in a temporary location
8187 * Install Rules for the User::  Useful additional rules
8188 @end menu
8189
8190 @node Basics of Installation
8191 @section Basics of Installation
8192
8193 A file named in a primary is installed by copying the built file into
8194 the appropriate directory.  The base name of the file is used when
8195 installing.
8196
8197 @example
8198 bin_PROGRAMS = hello subdir/goodbye
8199 @end example
8200
8201 In this example, both @samp{hello} and @samp{goodbye} will be installed
8202 in @samp{$(bindir)}.
8203
8204 Sometimes it is useful to avoid the basename step at install time.  For
8205 instance, you might have a number of header files in subdirectories of
8206 the source tree that are laid out precisely how you want to install
8207 them.  In this situation you can use the @code{nobase_} prefix to
8208 suppress the base name step.  For example:
8209
8210 @example
8211 nobase_include_HEADERS = stdio.h sys/types.h
8212 @end example
8213
8214 @noindent
8215 will install @file{stdio.h} in @samp{$(includedir)} and @file{types.h}
8216 in @samp{$(includedir)/sys}.
8217
8218 For most file types, Automake will install multiple files at once, while
8219 avoiding command line length issues (@pxref{Length Limitations}).  Since
8220 some @command{install} programs will not install the same file twice in
8221 one invocation, you may need to ensure that file lists are unique within
8222 one variable such as @samp{nobase_include_HEADERS} above.
8223
8224 You should not rely on the order in which files listed in one variable
8225 are installed.  Likewise, to cater for parallel make, you should not
8226 rely on any particular file installation order even among different
8227 file types (library dependencies are an exception here).
8228
8229
8230 @node The Two Parts of Install
8231 @section The Two Parts of Install
8232
8233 Automake generates separate @code{install-data} and @code{install-exec}
8234 rules, in case the installer is installing on multiple machines that
8235 share directory structure---these targets allow the machine-independent
8236 parts to be installed only once.  @code{install-exec} installs
8237 platform-dependent files, and @code{install-data} installs
8238 platform-independent files.  The @code{install} target depends on both
8239 of these targets.  While Automake tries to automatically segregate
8240 objects into the correct category, the @file{Makefile.am} author is, in
8241 the end, responsible for making sure this is done correctly.
8242 @trindex install-data
8243 @trindex install-exec
8244 @trindex install
8245 @cindex Install, two parts of
8246
8247 Variables using the standard directory prefixes @samp{data},
8248 @samp{info}, @samp{man}, @samp{include}, @samp{oldinclude},
8249 @samp{pkgdata}, or @samp{pkginclude} are installed by
8250 @code{install-data}.
8251
8252 Variables using the standard directory prefixes @samp{bin},
8253 @samp{sbin}, @samp{libexec}, @samp{sysconf}, @samp{localstate},
8254 @samp{lib}, or @samp{pkglib} are installed by @code{install-exec}.
8255
8256 For instance, @code{data_DATA} files are installed by @code{install-data},
8257 while @code{bin_PROGRAMS} files are installed by @code{install-exec}.
8258
8259 Any variable using a user-defined directory prefix with
8260 @samp{exec} in the name (e.g.,
8261 @c Keep in sync with primary-prefix-couples-documented-valid.test.
8262 @code{myexecbin_PROGRAMS}) is installed by @code{install-exec}.  All
8263 other user-defined prefixes are installed by @code{install-data}.
8264
8265 @node Extending Installation
8266 @section Extending Installation
8267
8268 It is possible to extend this mechanism by defining an
8269 @code{install-exec-local} or @code{install-data-local} rule.  If these
8270 rules exist, they will be run at @samp{make install} time.  These
8271 rules can do almost anything; care is required.
8272 @trindex install-exec-local
8273 @trindex install-data-local
8274
8275 Automake also supports two install hooks, @code{install-exec-hook} and
8276 @code{install-data-hook}.  These hooks are run after all other install
8277 rules of the appropriate type, exec or data, have completed.  So, for
8278 instance, it is possible to perform post-installation modifications
8279 using an install hook.  @xref{Extending}, for some examples.
8280 @cindex Install hook
8281
8282 @node Staged Installs
8283 @section Staged Installs
8284
8285 @vindex DESTDIR
8286 Automake generates support for the @code{DESTDIR} variable in all
8287 install rules.  @code{DESTDIR} is used during the @samp{make install}
8288 step to relocate install objects into a staging area.  Each object and
8289 path is prefixed with the value of @code{DESTDIR} before being copied
8290 into the install area.  Here is an example of typical DESTDIR usage:
8291
8292 @example
8293 mkdir /tmp/staging &&
8294 make DESTDIR=/tmp/staging install
8295 @end example
8296
8297 The @command{mkdir} command avoids a security problem if the attacker
8298 creates a symbolic link from @file{/tmp/staging} to a victim area;
8299 then @command{make} places install objects in a directory tree built under
8300 @file{/tmp/staging}.  If @file{/gnu/bin/foo} and
8301 @file{/gnu/share/aclocal/foo.m4} are to be installed, the above command
8302 would install @file{/tmp/staging/gnu/bin/foo} and
8303 @file{/tmp/staging/gnu/share/aclocal/foo.m4}.
8304
8305 This feature is commonly used to build install images and packages
8306 (@pxref{DESTDIR}).
8307
8308 Support for @code{DESTDIR} is implemented by coding it directly into
8309 the install rules.  If your @file{Makefile.am} uses a local install
8310 rule (e.g., @code{install-exec-local}) or an install hook, then you
8311 must write that code to respect @code{DESTDIR}.
8312
8313 @xref{Makefile Conventions, , , standards, The GNU Coding Standards},
8314 for another usage example.
8315
8316 @node Install Rules for the User
8317 @section Install Rules for the User
8318
8319 Automake also generates rules for targets @code{uninstall},
8320 @code{installdirs}, and @code{install-strip}.
8321 @trindex uninstall
8322 @trindex installdirs
8323 @trindex install-strip
8324
8325 Automake supports @code{uninstall-local} and @code{uninstall-hook}.
8326 There is no notion of separate uninstalls for ``exec'' and ``data'', as
8327 these features would not provide additional functionality.
8328
8329 Note that @code{uninstall} is not meant as a replacement for a real
8330 packaging tool.
8331
8332
8333 @node Clean
8334 @chapter What Gets Cleaned
8335
8336 @cindex @samp{make clean} support
8337
8338 The GNU Makefile Standards specify a number of different clean rules.
8339 @xref{Standard Targets, , Standard Targets for Users, standards,
8340 The GNU Coding Standards}.
8341
8342 Generally the files that can be cleaned are determined automatically by
8343 Automake.  Of course, Automake also recognizes some variables that can
8344 be defined to specify additional files to clean.  These variables are
8345 @code{MOSTLYCLEANFILES}, @code{CLEANFILES}, @code{DISTCLEANFILES}, and
8346 @code{MAINTAINERCLEANFILES}.
8347 @vindex MOSTLYCLEANFILES
8348 @vindex CLEANFILES
8349 @vindex DISTCLEANFILES
8350 @vindex MAINTAINERCLEANFILES
8351
8352 @trindex mostlyclean-local
8353 @trindex clean-local
8354 @trindex distclean-local
8355 @trindex maintainer-clean-local
8356 When cleaning involves more than deleting some hard-coded list of
8357 files, it is also possible to supplement the cleaning rules with your
8358 own commands.  Simply define a rule for any of the
8359 @code{mostlyclean-local}, @code{clean-local}, @code{distclean-local},
8360 or @code{maintainer-clean-local} targets (@pxref{Extending}).  A common
8361 case is deleting a directory, for instance, a directory created by the
8362 test suite:
8363
8364 @example
8365 clean-local:
8366         -rm -rf testSubDir
8367 @end example
8368
8369 Since @command{make} allows only one set of rules for a given target,
8370 a more extensible way of writing this is to use a separate target
8371 listed as a dependency:
8372
8373 @example
8374 clean-local: clean-local-check
8375 .PHONY: clean-local-check
8376 clean-local-check:
8377         -rm -rf testSubDir
8378 @end example
8379
8380 As the GNU Standards aren't always explicit as to which files should
8381 be removed by which rule, we've adopted a heuristic that we believe
8382 was first formulated by Fran@,{c}ois Pinard:
8383
8384 @itemize @bullet
8385 @item
8386 If @command{make} built it, and it is commonly something that one would
8387 want to rebuild (for instance, a @file{.o} file), then
8388 @code{mostlyclean} should delete it.
8389
8390 @item
8391 Otherwise, if @command{make} built it, then @code{clean} should delete it.
8392
8393 @item
8394 If @command{configure} built it, then @code{distclean} should delete it.
8395
8396 @item
8397 If the maintainer built it (for instance, a @file{.info} file), then
8398 @code{maintainer-clean} should delete it.  However
8399 @code{maintainer-clean} should not delete anything that needs to exist
8400 in order to run @samp{./configure && make}.
8401 @end itemize
8402
8403 We recommend that you follow this same set of heuristics in your
8404 @file{Makefile.am}.
8405
8406
8407 @node Dist
8408 @chapter What Goes in a Distribution
8409
8410 @menu
8411 * Basics of Distribution::      Files distributed by default
8412 * Fine-grained Distribution Control::  @code{dist_} and @code{nodist_} prefixes
8413 * The dist Hook::               A target for last-minute distribution changes
8414 * Checking the Distribution::   @samp{make distcheck} explained
8415 * The Types of Distributions::  A variety of formats and compression methods
8416 @end menu
8417
8418 @node Basics of Distribution
8419 @section Basics of Distribution
8420
8421 @cindex @samp{make dist}
8422
8423 @vindex PACKAGE
8424 @vindex VERSION
8425 @trindex dist
8426 The @code{dist} rule in the generated @file{Makefile.in} can be used
8427 to generate a gzipped @code{tar} file and other flavors of archive for
8428 distribution.  The file is named based on the @code{PACKAGE} and
8429 @code{VERSION} variables defined by @code{AM_INIT_AUTOMAKE}
8430 (@pxref{Macros}); more precisely the gzipped @code{tar} file is named
8431 @samp{@var{package}-@var{version}.tar.gz}.
8432 @vindex GZIP_ENV
8433 You can use the @command{make} variable @code{GZIP_ENV} to control how gzip
8434 is run.  The default setting is @option{--best}.
8435
8436 @cindex @code{m4_include}, distribution
8437 @cindex @code{include}, distribution
8438 @acindex m4_include
8439 @cmindex include
8440 For the most part, the files to distribute are automatically found by
8441 Automake: all source files are automatically included in a distribution,
8442 as are all @file{Makefile.am} and @file{Makefile.in} files.  Automake also
8443 has a built-in list of commonly used files that are automatically
8444 included if they are found in the current directory (either physically,
8445 or as the target of a @file{Makefile.am} rule); this list is printed by
8446 @samp{automake --help}.  Note that some files in this list are actually
8447 distributed only if other certain conditions hold (for example,
8448 @c Keep in sync with autodist-config-headers.test.
8449 the @file{config.h.top} and @file{config.h.bot} files are automatically
8450 distributed only if, e.g., @samp{AC_CONFIG_HEADERS([config.h])} is used
8451 in @file{configure.ac}).  Also, files that are read by @command{configure}
8452 (i.e.@: the source files corresponding to the files specified in various
8453 Autoconf macros such as @code{AC_CONFIG_FILES} and siblings) are
8454 automatically distributed.  Files included in a @file{Makefile.am} (using
8455 @code{include}) or in @file{configure.ac} (using @code{m4_include}), and
8456 helper scripts installed with @samp{automake --add-missing} are also
8457 distributed.
8458
8459 @vindex EXTRA_DIST
8460 Still, sometimes there are files that must be distributed, but which
8461 are not covered in the automatic rules.  These files should be listed in
8462 the @code{EXTRA_DIST} variable.  You can mention files from
8463 subdirectories in @code{EXTRA_DIST}.
8464
8465 You can also mention a directory in @code{EXTRA_DIST}; in this case the
8466 entire directory will be recursively copied into the distribution.
8467 Please note that this will also copy @emph{everything} in the directory,
8468 including, e.g., Subversion's @file{.svn} private directories or CVS/RCS
8469 version control files.  We recommend against using this feature.
8470
8471 @vindex SUBDIRS
8472 @vindex DIST_SUBDIRS
8473 If you define @code{SUBDIRS}, Automake will recursively include the
8474 subdirectories in the distribution.  If @code{SUBDIRS} is defined
8475 conditionally (@pxref{Conditionals}), Automake will normally include
8476 all directories that could possibly appear in @code{SUBDIRS} in the
8477 distribution.  If you need to specify the set of directories
8478 conditionally, you can set the variable @code{DIST_SUBDIRS} to the
8479 exact list of subdirectories to include in the distribution
8480 (@pxref{Conditional Subdirectories}).
8481
8482
8483 @node Fine-grained Distribution Control
8484 @section Fine-grained Distribution Control
8485
8486 @vindex dist_
8487 @vindex nodist_
8488 Sometimes you need tighter control over what does @emph{not} go into the
8489 distribution; for instance, you might have source files that are
8490 generated and that you do not want to distribute.  In this case
8491 Automake gives fine-grained control using the @code{dist} and
8492 @code{nodist} prefixes.  Any primary or @code{_SOURCES} variable can be
8493 prefixed with @code{dist_} to add the listed files to the distribution.
8494 Similarly, @code{nodist_} can be used to omit the files from the
8495 distribution.
8496
8497 As an example, here is how you would cause some data to be distributed
8498 while leaving some source code out of the distribution:
8499
8500 @example
8501 dist_data_DATA = distribute-this
8502 bin_PROGRAMS = foo
8503 nodist_foo_SOURCES = do-not-distribute.c
8504 @end example
8505
8506 @node The dist Hook
8507 @section The dist Hook
8508
8509 @trindex dist-hook
8510
8511 Occasionally it is useful to be able to change the distribution before
8512 it is packaged up.  If the @code{dist-hook} rule exists, it is run
8513 after the distribution directory is filled, but before the actual tar
8514 (or shar) file is created.  One way to use this is for distributing
8515 files in subdirectories for which a new @file{Makefile.am} is overkill:
8516
8517 @example
8518 dist-hook:
8519         mkdir $(distdir)/random
8520         cp -p $(srcdir)/random/a1 $(srcdir)/random/a2 $(distdir)/random
8521 @end example
8522
8523 Another way to use this is for removing unnecessary files that get
8524 recursively included by specifying a directory in EXTRA_DIST:
8525
8526 @example
8527 EXTRA_DIST = doc
8528
8529 dist-hook:
8530         rm -rf `find $(distdir)/doc -type d -name .svn`
8531 @end example
8532
8533 @vindex distdir
8534 @vindex top_distdir
8535 Two variables that come handy when writing @code{dist-hook} rules are
8536 @samp{$(distdir)} and @samp{$(top_distdir)}.
8537
8538 @samp{$(distdir)} points to the directory where the @code{dist} rule
8539 will copy files from the current directory before creating the
8540 tarball.  If you are at the top-level directory, then @samp{distdir =
8541 $(PACKAGE)-$(VERSION)}.  When used from subdirectory named
8542 @file{foo/}, then @samp{distdir = ../$(PACKAGE)-$(VERSION)/foo}.
8543 @samp{$(distdir)} can be a relative or absolute path, do not assume
8544 any form.
8545
8546 @samp{$(top_distdir)} always points to the root directory of the
8547 distributed tree.  At the top-level it's equal to @samp{$(distdir)}.
8548 In the @file{foo/} subdirectory
8549 @samp{top_distdir = ../$(PACKAGE)-$(VERSION)}.
8550 @samp{$(top_distdir)} too can be a relative or absolute path.
8551
8552 Note that when packages are nested using @code{AC_CONFIG_SUBDIRS}
8553 (@pxref{Subpackages}), then @samp{$(distdir)} and
8554 @samp{$(top_distdir)} are relative to the package where @samp{make
8555 dist} was run, not to any sub-packages involved.
8556
8557 @node Checking the Distribution
8558 @section Checking the Distribution
8559
8560 @cindex @samp{make distcheck}
8561 @cindex @samp{make distcleancheck}
8562 @vindex distcleancheck_listfiles
8563 @cindex @samp{make distuninstallcheck}
8564 @vindex distuninstallcheck_listfiles
8565
8566 @trindex distcheck
8567 Automake also generates a @code{distcheck} rule that can be of help to
8568 ensure that a given distribution will actually work.  @code{distcheck}
8569 makes a distribution, then tries to do a @code{VPATH} build
8570 (@pxref{VPATH Builds}), run the test suite, and finally make another
8571 tarball to ensure the distribution is self-contained.
8572
8573 @vindex AM_DISTCHECK_CONFIGURE_FLAGS
8574 @vindex DISTCHECK_CONFIGURE_FLAGS
8575 Building the package involves running @samp{./configure}.  If you need
8576 to supply additional flags to @command{configure}, define them in the
8577 @code{AM_DISTCHECK_CONFIGURE_FLAGS} variable in your top-level
8578 @file{Makefile.am}.  The user can still extend or override the flags
8579 provided there by defining the @code{DISTCHECK_CONFIGURE_FLAGS} variable,
8580 on the command line when invoking @command{make}.
8581
8582 Still, developers are encouraged to strive to make their code buildable
8583 without requiring any special configure option; thus, in general, you
8584 shouldn't define @code{AM_DISTCHECK_CONFIGURE_FLAGS}. However, there
8585 might be few scenarios in which the use of this variable is justified.
8586 GNU @command{m4} offers an example.  GNU @command{m4} configures by
8587 default with its experimental and seldom used "changeword" feature
8588 disabled; so in its case it is useful to have @command{make distcheck}
8589 run configure with the @option{--with-changeword} option, to ensure that
8590 the code for changeword support still compiles correctly.
8591 GNU @command{m4} also employs the @code{AM_DISTCHECK_CONFIGURE_FLAGS}
8592 variable to stress-test the use of @option{--program-prefix=g}, since at
8593 one point the @command{m4} build system had a bug where @command{make
8594 installcheck} was wrongly assuming it could blindly test "@command{m4}",
8595 rather than the just-installed "@command{gm4}".
8596
8597 @trindex distcheck-hook
8598 If the @code{distcheck-hook} rule is defined in your top-level
8599 @file{Makefile.am}, then it will be invoked by @code{distcheck} after
8600 the new distribution has been unpacked, but before the unpacked copy
8601 is configured and built.  Your @code{distcheck-hook} can do almost
8602 anything, though as always caution is advised.  Generally this hook is
8603 used to check for potential distribution errors not caught by the
8604 standard mechanism.  Note that @code{distcheck-hook} as well as
8605 @code{AM_DISTCHECK_CONFIGURE_FLAGS} and @code{DISTCHECK_CONFIGURE_FLAGS}
8606 are not honored in a subpackage @file{Makefile.am}, but the flags from
8607 @code{AM_DISTCHECK_CONFIGURE_FLAGS} and @code{DISTCHECK_CONFIGURE_FLAGS}
8608 are passed down to the @command{configure} script of the subpackage.
8609
8610 @trindex distcleancheck
8611 @vindex DISTCLEANFILES
8612 @vindex distcleancheck_listfiles
8613 Speaking of potential distribution errors, @code{distcheck} also
8614 ensures that the @code{distclean} rule actually removes all built
8615 files.  This is done by running @samp{make distcleancheck} at the end of
8616 the @code{VPATH} build.  By default, @code{distcleancheck} will run
8617 @code{distclean} and then make sure the build tree has been emptied by
8618 running @samp{$(distcleancheck_listfiles)}.  Usually this check will
8619 find generated files that you forgot to add to the @code{DISTCLEANFILES}
8620 variable (@pxref{Clean}).
8621
8622 The @code{distcleancheck} behavior should be OK for most packages,
8623 otherwise you have the possibility to override the definition of
8624 either the @code{distcleancheck} rule, or the
8625 @samp{$(distcleancheck_listfiles)} variable.  For instance, to disable
8626 @code{distcleancheck} completely, add the following rule to your
8627 top-level @file{Makefile.am}:
8628
8629 @example
8630 distcleancheck:
8631         @@:
8632 @end example
8633
8634 If you want @code{distcleancheck} to ignore built files that have not
8635 been cleaned because they are also part of the distribution, add the
8636 following definition instead:
8637
8638 @c Keep in sync with distcleancheck.test.
8639 @example
8640 distcleancheck_listfiles = \
8641   find . -type f -exec sh -c 'test -f $(srcdir)/$$1 || echo $$1' \
8642        sh '@{@}' ';'
8643 @end example
8644
8645 The above definition is not the default because it's usually an error if
8646 your Makefiles cause some distributed files to be rebuilt when the user
8647 build the package.  (Think about the user missing the tool required to
8648 build the file; or if the required tool is built by your package,
8649 consider the cross-compilation case where it can't be run.)  There is
8650 an entry in the FAQ about this (@pxref{distcleancheck}), make sure you
8651 read it before playing with @code{distcleancheck_listfiles}.
8652
8653 @code{distcheck} also checks that the @code{uninstall} rule works
8654 properly, both for ordinary and @code{DESTDIR} builds.  It does this
8655 by invoking @samp{make uninstall}, and then it checks the install tree
8656 to see if any files are left over.  This check will make sure that you
8657 correctly coded your @code{uninstall}-related rules.
8658
8659 By default, the checking is done by the @code{distuninstallcheck} rule,
8660 and the list of files in the install tree is generated by
8661 @samp{$(distuninstallcheck_listfiles)} (this is a variable whose value is
8662 a shell command to run that prints the list of files to stdout).
8663
8664 Either of these can be overridden to modify the behavior of
8665 @code{distcheck}.  For instance, to disable this check completely, you
8666 would write:
8667
8668 @example
8669 distuninstallcheck:
8670         @@:
8671 @end example
8672
8673 @node The Types of Distributions
8674 @section The Types of Distributions
8675
8676 Automake generates rules to provide archives of the project for
8677 distributions in various formats.  Their targets are:
8678
8679 @table @asis
8680 @vindex BZIP2
8681 @item @code{dist-bzip2}
8682 Generate a bzip2 tar archive of the distribution.  bzip2 archives are
8683 frequently smaller than gzipped archives.
8684 By default, this rule makes @samp{bzip2} use a compression option of
8685 @option{-9}.  To make it use a different one, set the @env{BZIP2}
8686 environment variable.  For example, @samp{make dist-bzip2 BZIP2=-7}.
8687 @trindex dist-bzip2
8688
8689 @item @code{dist-gzip}
8690 Generate a gzip tar archive of the distribution.
8691 @trindex dist-gzip
8692
8693 @item @code{dist-lzip}
8694 Generate a @samp{lzip} tar archive of the distribution.  @command{lzip}
8695 archives are frequently smaller than @command{bzip2}-compressed archives.
8696 @trindex dist-lzip
8697
8698 @item @code{dist-lzma}
8699 Generate an @samp{lzma} tar archive of the distribution.
8700 The @samp{lzma} format is obsolete, you should use the @samp{xz} format
8701 instead. @emph{Support for @samp{lzma}-compressed archives will be
8702 removed in the next major Automake release.}
8703 @trindex dist-lzma
8704
8705 @item @code{dist-shar}
8706 Generate a shar archive of the distribution.
8707 @trindex dist-shar
8708
8709 @vindex XZ_OPT
8710 @item @code{dist-xz}
8711 Generate an @samp{xz} tar archive of the distribution.  @command{xz}
8712 archives are frequently smaller than @command{bzip2}-compressed archives.
8713 The @samp{xz} format displaces the obsolete @samp{lzma} format.
8714 By default, this rule makes @samp{xz} use a compression option of
8715 @option{-e}.  To make it use a different one, set the @env{XZ_OPT}
8716 environment variable.  For example, run this command to use the
8717 default compression ratio, but with a progress indicator:
8718 @samp{make dist-xz XZ_OPT=-7e}.
8719 @trindex dist-xz
8720
8721 @item @code{dist-zip}
8722 Generate a zip archive of the distribution.
8723 @trindex dist-zip
8724
8725 @item @code{dist-tarZ}
8726 Generate a compressed tar archive of
8727 the distribution.
8728 @trindex dist-tarZ
8729 @end table
8730
8731 The rule @code{dist} (and its historical synonym @code{dist-all}) will
8732 create archives in all the enabled formats, @ref{Options}.  By
8733 default, only the @code{dist-gzip} target is hooked to @code{dist}.
8734
8735
8736 @node Tests
8737 @chapter Support for test suites
8738
8739 @cindex Test suites
8740 @cindex @code{make check}
8741 @trindex check
8742
8743 Automake supports three forms of test suites, the first two of which
8744 are very similar.
8745
8746 @menu
8747 * Simple Tests::                Listing programs and scripts in @code{TESTS}
8748 * Simple Tests using parallel-tests::  More powerful test driver
8749 * DejaGnu Tests::               Interfacing with the external testing framework
8750 * Install Tests::               Running tests on installed packages
8751 @end menu
8752
8753 @node Simple Tests
8754 @section Simple Tests
8755
8756 If the variable @code{TESTS} is defined, its value is taken to be a
8757 list of programs or scripts to run in order to do the testing.
8758 Programs needing data files should look for them in @code{srcdir}
8759 (which is both an environment variable and a make variable) so they
8760 work when building in a separate directory (@pxref{Build Directories,
8761 , Build Directories , autoconf, The Autoconf Manual}), and in
8762 particular for the @code{distcheck} rule (@pxref{Checking the
8763 Distribution}).
8764
8765 For each of the @code{TESTS}, the result of execution is printed along
8766 with the test name, where @code{PASS} denotes a successful test,
8767 @code{FAIL} denotes a failed test, @code{XFAIL} an expected failure,
8768 @code{XPASS} an unexpected pass for a test that is supposed to fail,
8769 and @code{SKIP} denotes a skipped test.
8770
8771 @cindex Exit status 77, special interpretation
8772
8773 The number of failures will be printed at the end of the run.  If a
8774 given test program exits with a status of 77, then its result is ignored
8775 in the final count.  This feature allows non-portable tests to be
8776 ignored in environments where they don't make sense.
8777
8778 @vindex AM_COLOR_TESTS
8779 If the Automake option @code{color-tests} is used (@pxref{Options})
8780 and standard output is connected to a capable terminal, then the test
8781 results and the summary are colored appropriately.  The user can disable
8782 colored output by setting the @command{make} variable
8783 @samp{AM_COLOR_TESTS=no}, or force colored output even without a connecting
8784 terminal with @samp{AM_COLOR_TESTS=always}.
8785
8786 Note that the semantics of some @command{make} implementations when used
8787 in parallel mode (@pxref{Parallel make,,, autoconf, The Autoconf Manual})
8788 can cause the automatic detection of a connection to a capable terminal
8789 to fail.  In that case, you can still resort to the use of
8790 @samp{AM_COLOR_TESTS=always}.
8791
8792 @vindex TESTS
8793 @vindex TESTS_ENVIRONMENT
8794 The variable @code{TESTS_ENVIRONMENT} can be used to set environment
8795 variables for the test run; the environment variable @env{srcdir} is
8796 set in the rule.  If all your test programs are scripts, you can also
8797 set @code{TESTS_ENVIRONMENT} to an invocation of the shell (e.g.
8798 @samp{$(SHELL) -x} can be useful for debugging the tests), or any other
8799 interpreter.  For instance, the following setup may be used to run tests
8800 with Perl:
8801
8802 @c Keep in sync with tests-environment-backcompat.test.
8803 @example
8804 TESTS_ENVIRONMENT = $(PERL) -Mstrict -w
8805 TESTS = foo.pl bar.pl baz.pl
8806 @end example
8807
8808 Note that the @option{parallel-tests} driver provides a more elegant
8809 way to achieve the same effect, freeing the @code{TESTS_ENVIRONMENT}
8810 variable for the user to override (@pxref{Simple Tests using
8811 parallel-tests}).
8812
8813
8814 @cindex Tests, expected failure
8815 @cindex Expected test failure
8816
8817 @vindex XFAIL_TESTS
8818 You may define the variable @code{XFAIL_TESTS} to a list of tests
8819 (usually a subset of @code{TESTS}) that are expected to fail.  This will
8820 reverse the result of those tests.
8821
8822 Automake ensures that each file listed in @code{TESTS} is built before
8823 any tests are run; you can list both source and derived programs (or
8824 scripts) in @code{TESTS}; the generated rule will look both in
8825 @code{srcdir} and @file{.}.  For instance, you might want to run a C
8826 program as a test.  To do this you would list its name in @code{TESTS}
8827 and also in @code{check_PROGRAMS}, and then specify it as you would
8828 any other program.
8829
8830 Programs listed in @code{check_PROGRAMS} (and @code{check_LIBRARIES},
8831 @code{check_LTLIBRARIES}...) are only built during @code{make check},
8832 not during @code{make all}.  You should list there any program needed
8833 by your tests that does not need to be built by @code{make all}.  Note
8834 that @code{check_PROGRAMS} are @emph{not} automatically added to
8835 @code{TESTS} because @code{check_PROGRAMS} usually lists programs used
8836 by the tests, not the tests themselves.  Of course you can set
8837 @code{TESTS = $(check_PROGRAMS)} if all your programs are test cases.
8838
8839
8840 @node Simple Tests using parallel-tests
8841 @section Simple Tests using @samp{parallel-tests}
8842 @cindex @option{parallel-tests}, Using
8843
8844 The option @option{parallel-tests} (@pxref{Options}) enables a test suite
8845 driver that is mostly compatible to the simple test driver described in
8846 the previous section, but provides a few more features and slightly
8847 different semantics.  It features concurrent execution of tests with
8848 @code{make -j} and automatic collection of the test scripts output and
8849 summary thereof in @file{.log} files, and allows to specify inter-test
8850 dependencies, lazy reruns of tests that have not completed in a prior
8851 run, and hard errors for exceptional failures.  Similar to the simple
8852 test driver, @code{TESTS_ENVIRONMENT}, @code{AM_COLOR_TESTS},
8853 @code{XFAIL_TESTS}, and the @code{check_*} variables are honored,
8854 and the environment variable @env{srcdir} is set during test execution.
8855
8856 This test driver is still experimental and may undergo changes in order
8857 to satisfy additional portability requirements.
8858
8859 @vindex TEST_SUITE_LOG
8860 @vindex TESTS
8861 The driver operates by defining a set of @command{make} rules to create
8862 a summary log file, @code{TEST_SUITE_LOG}, which defaults to
8863 @file{test-suite.log} and requires a @file{.log} suffix.  This file
8864 depends upon log files created for each single test program listed in
8865 @code{TESTS}, which in turn contain all output produced by the
8866 corresponding tests.
8867
8868 @vindex TEST_EXTENSIONS
8869 @vindex TEST_LOGS
8870 Each log file is created when the corresponding test has completed.
8871 The set of log files is listed in the read-only variable
8872 @code{TEST_LOGS}, and defaults to @code{TESTS}, with the executable
8873 extension if any (@pxref{EXEEXT}), as well as any suffix listed in
8874 @code{TEST_EXTENSIONS} removed, and @file{.log} appended.  Results
8875 are undefined if a test file name ends in several concatenated suffixes.
8876 @code{TEST_EXTENSIONS} defaults to @file{.test}; it can be overridden by
8877 the user, in which case any extension listed in it must be constituted
8878 by a dot, followed by a non-digit alphabetic character, followed by any
8879 number of alphabetic characters.
8880 @c Keep in sync with test-extensions.test.
8881 For example, @samp{.sh}, @samp{.T} and @samp{.t1} are valid extensions,
8882 while @samp{.x-y}, @samp{.6c} and @samp{.t.1} are not.
8883
8884 @vindex _LOG_COMPILE
8885 @vindex _LOG_COMPILER
8886 @vindex _LOG_FLAGS
8887 @vindex LOG_COMPILE
8888 @vindex LOG_COMPILER
8889 @vindex LOG_FLAGS
8890 @vindex @var{ext}_LOG_COMPILE
8891 @vindex @var{ext}_LOG_COMPILER
8892 @vindex @var{ext}_LOG_FLAGS
8893 @vindex AM_@var{ext}_LOG_FLAGS
8894 @vindex AM_LOG_FLAGS
8895 For tests that match an extension @code{.@var{ext}} listed in
8896 @code{TEST_EXTENSIONS}, you can provide a test driver using the variable
8897 @code{@var{ext}_LOG_COMPILER} (note the upper-case extension) and pass
8898 options in @code{AM_@var{ext}_LOG_FLAGS} and allow the user to pass
8899 options in @code{@var{ext}_LOG_FLAGS}.  It will cause all tests with
8900 this extension to be called with this driver.  For all tests without a
8901 registered extension, the variables @code{LOG_COMPILER},
8902 @code{AM_LOG_FLAGS}, and @code{LOG_FLAGS} may be used.  For example,
8903
8904 @c Keep in sync with parallel-tests-log-compiler-example.test.
8905 @example
8906 TESTS = foo.pl bar.py baz
8907 TEST_EXTENSIONS = .pl .py
8908 PL_LOG_COMPILER = $(PERL)
8909 AM_PL_LOG_FLAGS = -w
8910 PY_LOG_COMPILER = $(PYTHON)
8911 AM_PY_LOG_FLAGS = -v
8912 LOG_COMPILER = ./wrapper-script
8913 AM_LOG_FLAGS = -d
8914 @end example
8915
8916 @noindent
8917 will invoke @samp{$(PERL) -w foo.pl}, @samp{$(PYTHON) -v bar.py},
8918 and @samp{./wrapper-script -d baz} to produce @file{foo.log},
8919 @file{bar.log}, and @file{baz.log}, respectively.  The
8920 @samp{TESTS_ENVIRONMENT} variable is still expanded before the driver,
8921 but should be reserved for the user.
8922
8923 @vindex VERBOSE
8924 As with the simple driver above, by default one status line is printed
8925 per completed test, and a short summary after the suite has completed.
8926 However, standard output and standard error of the test are redirected
8927 to a per-test log file, so that parallel execution does not produce
8928 intermingled output.  The output from failed tests is collected in the
8929 @file{test-suite.log} file.  If the variable @samp{VERBOSE} is set, this
8930 file is output after the summary.  For best results, the tests should be
8931 verbose by default now.
8932
8933 @trindex check-html
8934 @vindex RST2HTML
8935 @vindex TEST_SUITE_HTML
8936 Previous versions of automake used to provide a @code{check-html} target
8937 to convert the log files to HTML.  This feature is now deprecated, and
8938 @emph{will be removed} in the next major Automake release, so don't rely
8939 on it anymore.
8940
8941 @vindex DISABLE_HARD_ERRORS
8942 @cindex Exit status 99, special interpretation
8943 @cindex hard error
8944 Even in the presence of expected failures (see @code{XFAIL_TESTS}), there
8945 may be conditions under which a test outcome needs attention.  For
8946 example, with test-driven development, you may write tests for features
8947 that you have not implemented yet, and thus mark these tests as expected
8948 to fail.  However, you may still be interested in exceptional conditions,
8949 for example, tests that fail due to a segmentation violation or another
8950 error that is independent of the feature awaiting implementation.
8951 Tests can exit with an exit status of 99 to signal such a @emph{hard
8952 error}.  Unless the variable @code{DISABLE_HARD_ERRORS} is set to a
8953 nonempty value, such tests will be counted as failed.
8954
8955 By default, the test suite driver will run all tests, but there are
8956 several ways to limit the set of tests that are run:
8957
8958 @itemize @bullet
8959 @item
8960 You can set the @code{TESTS} variable, similarly to how you can with
8961 the simple test driver from the previous section.  For example, you can
8962 use a command like this to run only a subset of the tests:
8963
8964 @example
8965 env TESTS="foo.test bar.test" make -e check
8966 @end example
8967
8968 Note however that the command above will unconditionally overwrite the
8969 @file{test-suite.log} file, thus clobbering the recorded results
8970 of any previous testsuite run.  This might be undesirable for packages
8971 whose testsuite takes long time to execute.  Luckily, this problem can
8972 easily be avoided by overriding also @code{TEST_SUITE_LOG} at runtime;
8973 for example,
8974
8975 @c Keep in sync with parallel-tests-log-override-2.test.
8976 @example
8977 env TEST_SUITE_LOG=partial.log TESTS="..." make -e check
8978 @end example
8979
8980 will write the result of the partial testsuite runs to the
8981 @file{partial.log}, without touching @file{test-suite.log}.
8982
8983 @item
8984 You can set the @code{TEST_LOGS} variable.  By default, this variable is
8985 computed at @command{make} run time from the value of @code{TESTS} as
8986 described above.  For example, you can use the following:
8987
8988 @example
8989 set x subset*.log; shift
8990 env TEST_LOGS="foo.log $*" make -e check
8991 @end example
8992
8993 The comments made above about @code{TEST_SUITE_LOG} overriding applies
8994 here too.
8995
8996 @item
8997 @vindex RECHECK_LOGS
8998 @cindex lazy test execution
8999 By default, the test driver removes all old per-test log files before it
9000 starts running tests to regenerate them.  The variable
9001 @code{RECHECK_LOGS} contains the set of log files which are removed.
9002 @code{RECHECK_LOGS} defaults to @code{TEST_LOGS}, which means all tests
9003 need to be rechecked.  By overriding this variable, you can choose which
9004 tests need to be reconsidered.  For example, you can lazily rerun only
9005 those tests which are outdated, i.e., older than their prerequisite test
9006 files, by setting this variable to the empty value:
9007
9008 @example
9009 env RECHECK_LOGS= make -e check
9010 @end example
9011
9012 @item
9013 @trindex recheck
9014 You can ensure that all tests are rerun which have failed or passed
9015 unexpectedly, by running @code{make recheck} in the test directory.
9016 This convenience target will set @code{RECHECK_LOGS} appropriately
9017 before invoking the main test driver.
9018 @end itemize
9019
9020 In order to guarantee an ordering between tests even with @code{make
9021 -j@var{N}}, dependencies between the corresponding log files may be
9022 specified through usual @command{make} dependencies.  For example, the
9023 following snippet lets the test named @file{foo-execute.test} depend
9024 upon completion of the test @file{foo-compile.test}:
9025
9026 @example
9027 TESTS = foo-compile.test foo-execute.test
9028 foo-execute.log: foo-compile.log
9029 @end example
9030
9031 @noindent
9032 Please note that this ordering ignores the @emph{results} of required
9033 tests, thus the test @file{foo-execute.test} is run even if the test
9034 @file{foo-compile.test} failed or was skipped beforehand.  Further,
9035 please note that specifying such dependencies currently works only for
9036 tests that end in one of the suffixes listed in @code{TEST_EXTENSIONS}.
9037
9038 Tests without such specified dependencies may be run concurrently with
9039 parallel @command{make -j@var{N}}, so be sure they are prepared for
9040 concurrent execution.
9041
9042 @cindex Unit tests
9043 The combination of lazy test execution and correct dependencies between
9044 tests and their sources may be exploited for efficient unit testing
9045 during development.  To further speed up the edit-compile-test cycle, it
9046 may even be useful to specify compiled programs in @code{EXTRA_PROGRAMS}
9047 instead of with @code{check_PROGRAMS}, as the former allows intertwined
9048 compilation and test execution (but note that @code{EXTRA_PROGRAMS} are
9049 not cleaned automatically, @pxref{Uniform}).
9050
9051 The variables @code{TESTS} and @code{XFAIL_TESTS} may contain
9052 conditional parts as well as configure substitutions.  In the latter
9053 case, however, certain restrictions apply: substituted test names
9054 must end with a nonempty test suffix like @file{.test}, so that one of
9055 the inference rules generated by @command{automake} can apply.  For
9056 literal test names, @command{automake} can generate per-target rules
9057 to avoid this limitation.
9058
9059 Please note that it is currently not possible to use @code{$(srcdir)/}
9060 or @code{$(top_srcdir)/} in the @code{TESTS} variable.  This technical
9061 limitation is necessary to avoid generating test logs in the source tree
9062 and has the unfortunate consequence that it is not possible to specify
9063 distributed tests that are themselves generated by means of explicit
9064 rules, in a way that is portable to all @command{make} implementations
9065 (@pxref{Make Target Lookup,,, autoconf, The Autoconf Manual}, the
9066 semantics of FreeBSD and OpenBSD @command{make} conflict with this).
9067 In case of doubt you may want to require to use GNU @command{make},
9068 or work around the issue with inference rules to generate the tests.
9069
9070
9071 @node DejaGnu Tests
9072 @section DejaGnu Tests
9073
9074 If @uref{ftp://ftp.gnu.org/gnu/dejagnu/, @command{dejagnu}} appears in
9075 @code{AUTOMAKE_OPTIONS}, then a @command{dejagnu}-based test suite is
9076 assumed.  The variable @code{DEJATOOL} is a list of names that are
9077 passed, one at a time, as the @option{--tool} argument to
9078 @command{runtest} invocations; it defaults to the name of the package.
9079
9080 The variable @code{RUNTESTDEFAULTFLAGS} holds the @option{--tool} and
9081 @option{--srcdir} flags that are passed to dejagnu by default; this can be
9082 overridden if necessary.
9083 @vindex RUNTESTDEFAULTFLAGS
9084
9085 The variables @code{EXPECT} and @code{RUNTEST} can
9086 also be overridden to provide project-specific values.  For instance,
9087 you will need to do this if you are testing a compiler toolchain,
9088 because the default values do not take into account host and target
9089 names.
9090 @opindex dejagnu
9091 @vindex DEJATOOL
9092 @vindex EXPECT
9093 @vindex RUNTEST
9094
9095 The contents of the variable @code{RUNTESTFLAGS} are passed to the
9096 @code{runtest} invocation.  This is considered a ``user variable''
9097 (@pxref{User Variables}).  If you need to set @command{runtest} flags in
9098 @file{Makefile.am}, you can use @code{AM_RUNTESTFLAGS} instead.
9099 @vindex RUNTESTFLAGS
9100 @vindex AM_RUNTESTFLAGS
9101
9102 @cindex @file{site.exp}
9103 Automake will generate rules to create a local @file{site.exp} file,
9104 defining various variables detected by @command{configure}.  This file
9105 is automatically read by DejaGnu.  It is OK for the user of a package
9106 to edit this file in order to tune the test suite.  However this is
9107 not the place where the test suite author should define new variables:
9108 this should be done elsewhere in the real test suite code.
9109 Especially, @file{site.exp} should not be distributed.
9110
9111 Still, if the package author has legitimate reasons to extend
9112 @file{site.exp} at @command{make} time, he can do so by defining
9113 the variable @code{EXTRA_DEJAGNU_SITE_CONFIG}; the files listed
9114 there will be considered @file{site.exp} prerequisites, and their
9115 content will be appended to it (in the same order in which they
9116 appear in @code{EXTRA_DEJAGNU_SITE_CONFIG}).  Note that files are
9117 @emph{not} distributed by default.
9118
9119 For more information regarding DejaGnu test suites, see @ref{Top, , ,
9120 dejagnu, The DejaGnu Manual}.
9121
9122 In either case, the testing is done via @samp{make check}.
9123
9124 @node Install Tests
9125 @section Install Tests
9126
9127 The @code{installcheck} target is available to the user as a way to
9128 run any tests after the package has been installed.  You can add tests
9129 to this by writing an @code{installcheck-local} rule.
9130
9131
9132 @node Rebuilding
9133 @chapter Rebuilding Makefiles
9134 @cindex rebuild rules
9135
9136 Automake generates rules to automatically rebuild @file{Makefile}s,
9137 @file{configure}, and other derived files like @file{Makefile.in}.
9138
9139 @acindex AM_MAINTAINER_MODE
9140 If you are using @code{AM_MAINTAINER_MODE} in @file{configure.ac}, then
9141 these automatic rebuilding rules are only enabled in maintainer mode.
9142
9143 @vindex ACLOCAL_AMFLAGS
9144 Sometimes you need to run @command{aclocal} with an argument like
9145 @option{-I} to tell it where to find @file{.m4} files.  Since
9146 sometimes @command{make} will automatically run @command{aclocal}, you
9147 need a way to specify these arguments.  You can do this by defining
9148 @code{ACLOCAL_AMFLAGS}; this holds arguments that are passed verbatim
9149 to @command{aclocal}.  This variable is only useful in the top-level
9150 @file{Makefile.am}.
9151
9152 @vindex CONFIG_STATUS_DEPENDENCIES
9153 @vindex CONFIGURE_DEPENDENCIES
9154 @cindex @file{version.sh}, example
9155 @cindex @file{version.m4}, example
9156
9157 Sometimes it is convenient to supplement the rebuild rules for
9158 @file{configure} or @file{config.status} with additional dependencies.
9159 The variables @code{CONFIGURE_DEPENDENCIES} and
9160 @code{CONFIG_STATUS_DEPENDENCIES} can be used to list these extra
9161 dependencies.  These variables should be defined in all
9162 @file{Makefile}s of the tree (because these two rebuild rules are
9163 output in all them), so it is safer and easier to @code{AC_SUBST} them
9164 from @file{configure.ac}.  For instance, the following statement will
9165 cause @file{configure} to be rerun each time @file{version.sh} is
9166 changed.
9167
9168 @example
9169 AC_SUBST([CONFIG_STATUS_DEPENDENCIES], ['$(top_srcdir)/version.sh'])
9170 @end example
9171
9172 @noindent
9173 Note the @samp{$(top_srcdir)/} in the file name.  Since this variable
9174 is to be used in all @file{Makefile}s, its value must be sensible at
9175 any level in the build hierarchy.
9176
9177 Beware not to mistake @code{CONFIGURE_DEPENDENCIES} for
9178 @code{CONFIG_STATUS_DEPENDENCIES}.
9179
9180 @code{CONFIGURE_DEPENDENCIES} adds dependencies to the
9181 @file{configure} rule, whose effect is to run @command{autoconf}.  This
9182 variable should be seldom used, because @command{automake} already tracks
9183 @code{m4_include}d files.  However it can be useful when playing
9184 tricky games with @code{m4_esyscmd} or similar non-recommendable
9185 macros with side effects.
9186
9187 @code{CONFIG_STATUS_DEPENDENCIES} adds dependencies to the
9188 @file{config.status} rule, whose effect is to run @file{configure}.
9189 This variable should therefore carry any non-standard source that may
9190 be read as a side effect of running @command{configure}, like @file{version.sh}
9191 in the example above.
9192
9193 Speaking of @file{version.sh} scripts, we recommend against them
9194 today.  They are mainly used when the version of a package is updated
9195 automatically by a script (e.g., in daily builds).  Here is what some
9196 old-style @file{configure.ac}s may look like:
9197
9198 @example
9199 AC_INIT
9200 . $srcdir/version.sh
9201 AM_INIT_AUTOMAKE([name], $VERSION_NUMBER)
9202 @dots{}
9203 @end example
9204
9205 @noindent
9206 Here, @file{version.sh} is a shell fragment that sets
9207 @code{VERSION_NUMBER}.  The problem with this example is that
9208 @command{automake} cannot track dependencies (listing @file{version.sh}
9209 in @command{CONFIG_STATUS_DEPENDENCIES}, and distributing this file is up
9210 to the user), and that it uses the obsolete form of @code{AC_INIT} and
9211 @code{AM_INIT_AUTOMAKE}.  Upgrading to the new syntax is not
9212 straightforward, because shell variables are not allowed in
9213 @code{AC_INIT}'s arguments.  We recommend that @file{version.sh} be
9214 replaced by an M4 file that is included by @file{configure.ac}:
9215
9216 @example
9217 m4_include([version.m4])
9218 AC_INIT([name], VERSION_NUMBER)
9219 AM_INIT_AUTOMAKE
9220 @dots{}
9221 @end example
9222
9223 @noindent
9224 Here @file{version.m4} could contain something like
9225 @samp{m4_define([VERSION_NUMBER], [1.2])}.  The advantage of this
9226 second form is that @command{automake} will take care of the
9227 dependencies when defining the rebuild rule, and will also distribute
9228 the file automatically.  An inconvenience is that @command{autoconf}
9229 will now be rerun each time the version number is bumped, when only
9230 @file{configure} had to be rerun in the previous setup.
9231
9232
9233 @node Options
9234 @chapter Changing Automake's Behavior
9235
9236 Various features of Automake can be controlled by options.  Except where
9237 noted otherwise, options can be specified in one of several ways: Most
9238 options can be applied on a per-@file{Makefile} basis when listed in a
9239 special @file{Makefile} variable named @code{AUTOMAKE_OPTIONS}.  Some
9240 of these options only make sense when specified in the toplevel
9241 @file{Makefile.am} file.  Options are applied globally to all processed
9242 @file{Makefile} files when listed in the first argument of
9243 @code{AM_INIT_AUTOMAKE} in @file{configure.ac}, and some options which
9244 require changes to the @command{configure} script can only be specified
9245 there.  These are annotated below.
9246
9247 Currently understood options are:
9248 @vindex AUTOMAKE_OPTIONS
9249
9250 @table @asis
9251 @item @option{gnits}
9252 @itemx @option{gnu}
9253 @itemx @option{foreign}
9254 @itemx @option{cygnus}
9255 @cindex Option, @option{gnits}
9256 @cindex Option, @option{gnu}
9257 @cindex Option, @option{foreign}
9258 @cindex Option, @option{cygnus}
9259 @opindex gnits
9260 @opindex gnu
9261 @opindex foreign
9262 @opindex cygnus
9263
9264 Set the strictness as appropriate.  The @option{gnits} option also
9265 implies options @option{readme-alpha} and @option{check-news}.
9266
9267 @item @option{ansi2knr}
9268 @itemx @option{@var{path}/ansi2knr}
9269 @cindex Option, @option{ansi2knr}
9270 @opindex ansi2knr
9271 Turn on the deprecated de-ANSI-fication feature (@pxref{ANSI}).  Note
9272 that that feature and this option @emph{will be removed} in the next
9273 major Automake release.
9274
9275 If preceded by a
9276 path, the generated @file{Makefile.in} will look in the specified
9277 directory to find the @file{ansi2knr} program.  The path should be a
9278 relative path to another directory in the same distribution (Automake
9279 does not check this).
9280
9281 @item @option{check-news}
9282 @cindex Option, @option{check-news}
9283 @opindex check-news
9284 Cause @samp{make dist} to fail unless the current version number appears
9285 in the first few lines of the @file{NEWS} file.
9286
9287 @item @option{color-tests}
9288 @cindex Option, @option{color-tests}
9289 @opindex color-tests
9290 Cause output of the simple test suite (@pxref{Simple Tests}) to be
9291 colorized on capable terminals.
9292
9293 @item @option{dejagnu}
9294 @cindex Option, @option{dejagnu}
9295 @opindex dejagnu
9296 Cause @command{dejagnu}-specific rules to be generated.  @xref{DejaGnu Tests}.
9297
9298 @item @option{dist-bzip2}
9299 @cindex Option, @option{dist-bzip2}
9300 @opindex dist-bzip2
9301 Hook @code{dist-bzip2} to @code{dist}.
9302 @trindex dist-bzip2
9303
9304 @item @option{dist-lzip}
9305 @cindex Option, @option{dist-lzip}
9306 @opindex dist-lzip
9307 Hook @code{dist-lzip} to @code{dist}.
9308 @trindex dist-lzip
9309
9310 @item @option{dist-lzma}
9311 @cindex Option, @option{dist-lzma}
9312 @opindex dist-lzma
9313 Hook @code{dist-lzma} to @code{dist}.  Obsoleted by @code{dist-xz}.
9314 @trindex dist-lzma
9315
9316 @item @option{dist-shar}
9317 @cindex Option, @option{dist-shar}
9318 @opindex dist-shar
9319 Hook @code{dist-shar} to @code{dist}.
9320 @trindex dist-shar
9321
9322 @item @option{dist-zip}
9323 @cindex Option, @option{dist-zip}
9324 @opindex dist-zip
9325 Hook @code{dist-zip} to @code{dist}.
9326 @trindex dist-zip
9327
9328 @item @option{dist-tarZ}
9329 @cindex Option, @option{dist-tarZ}
9330 @opindex dist-tarZ
9331 Hook @code{dist-tarZ} to @code{dist}.
9332 @trindex dist-tarZ
9333
9334 @item @option{filename-length-max=99}
9335 @cindex Option, @option{filename-length-max=99}
9336 @opindex filename-length-max=99
9337 Abort if file names longer than 99 characters are found during
9338 @samp{make dist}.  Such long file names are generally considered not to
9339 be portable in tarballs.  See the @option{tar-v7} and @option{tar-ustar}
9340 options below.  This option should be used in the top-level
9341 @file{Makefile.am} or as an argument of @code{AM_INIT_AUTOMAKE} in
9342 @file{configure.ac}, it will be ignored otherwise.  It will also be
9343 ignored in sub-packages of nested packages (@pxref{Subpackages}).
9344
9345 @item @option{no-define}
9346 @cindex Option, @option{no-define}
9347 @opindex no-define
9348 This option is meaningful only when passed as an argument to
9349 @code{AM_INIT_AUTOMAKE}.  It will prevent the @code{PACKAGE} and
9350 @code{VERSION} variables from being @code{AC_DEFINE}d.
9351
9352 @item @option{no-dependencies}
9353 @cindex Option, @option{no-dependencies}
9354 @opindex no-dependencies
9355 This is similar to using @option{--ignore-deps} on the command line,
9356 but is useful for those situations where you don't have the necessary
9357 bits to make automatic dependency tracking work
9358 (@pxref{Dependencies}).  In this case the effect is to effectively
9359 disable automatic dependency tracking.
9360
9361 @item @option{no-dist}
9362 @cindex Option, @option{no-dist}
9363 @opindex no-dist
9364 Don't emit any code related to @code{dist} target.  This is useful
9365 when a package has its own method for making distributions.
9366
9367 @item @option{no-dist-gzip}
9368 @cindex Option, @option{no-dist-gzip}
9369 @opindex no-dist-gzip
9370 Do not hook @code{dist-gzip} to @code{dist}.
9371 @trindex no-dist-gzip
9372
9373 @item @option{no-exeext}
9374 @cindex Option, @option{no-exeext}
9375 @opindex no-exeext
9376 If your @file{Makefile.am} defines a rule for target @code{foo}, it
9377 will override a rule for a target named @samp{foo$(EXEEXT)}.  This is
9378 necessary when @code{EXEEXT} is found to be empty.  However, by
9379 default @command{automake} will generate an error for this use.  The
9380 @option{no-exeext} option will disable this error.  This is intended for
9381 use only where it is known in advance that the package will not be
9382 ported to Windows, or any other operating system using extensions on
9383 executables.
9384
9385 @item @option{no-installinfo}
9386 @cindex Option, @option{no-installinfo}
9387 @opindex no-installinfo
9388 The generated @file{Makefile.in} will not cause info pages to be built
9389 or installed by default.  However, @code{info} and @code{install-info}
9390 targets will still be available.  This option is disallowed at
9391 @option{gnu} strictness and above.
9392 @trindex info
9393 @trindex install-info
9394
9395 @item @option{no-installman}
9396 @cindex Option, @option{no-installman}
9397 @opindex no-installman
9398 The generated @file{Makefile.in} will not cause man pages to be
9399 installed by default.  However, an @code{install-man} target will still
9400 be available for optional installation.  This option is disallowed at
9401 @option{gnu} strictness and above.
9402 @trindex install-man
9403
9404 @item @option{nostdinc}
9405 @cindex Option, @option{nostdinc}
9406 @opindex nostdinc
9407 This option can be used to disable the standard @option{-I} options that
9408 are ordinarily automatically provided by Automake.
9409
9410 @item @option{no-texinfo.tex}
9411 @cindex Option, @option{no-texinfo.tex}
9412 @opindex no-texinfo.tex
9413 Don't require @file{texinfo.tex}, even if there are texinfo files in
9414 this directory.
9415
9416 @item @option{parallel-tests}
9417 @cindex Option, @option{parallel-tests}
9418 @opindex parallel-tests
9419 Enable test suite driver for @code{TESTS} that can run tests in parallel
9420 (@pxref{Simple Tests using parallel-tests}, for more information).
9421
9422 @item @option{readme-alpha}
9423 @cindex Option, @option{readme-alpha}
9424 @opindex readme-alpha
9425 If this release is an alpha release, and the file @file{README-alpha}
9426 exists, then it will be added to the distribution.  If this option is
9427 given, version numbers are expected to follow one of two forms.  The
9428 first form is @samp{@var{major}.@var{minor}.@var{alpha}}, where each
9429 element is a number; the final period and number should be left off for
9430 non-alpha releases.  The second form is
9431 @samp{@var{major}.@var{minor}@var{alpha}}, where @var{alpha} is a
9432 letter; it should be omitted for non-alpha releases.
9433
9434 @item @option{silent-rules}
9435 @cindex Option, @option{silent-rules}
9436 @opindex silent-rules
9437 Enable less verbose build rules.  This can be used to let build rules
9438 output status lines of the form:
9439 @example
9440 GEN @var{output-file}
9441  CC @var{object-file}
9442 @end example
9443 @noindent
9444 instead of printing the command that will be executed to update
9445 @var{output-file} or to compile @var{object-file}.  It can also
9446 silence @command{libtool} output.
9447
9448 For more information about how to use, enable, or disable silent
9449 rules, @pxref{Automake silent-rules Option}.
9450
9451 @item @option{std-options}
9452 @cindex Options, @option{std-options}
9453 @cindex @samp{make installcheck}, testing @option{--help} and @option{--version}
9454 @cindex @option{--help} check
9455 @cindex @option{--version} check
9456 @opindex std-options
9457
9458 Make the @code{installcheck} rule check that installed scripts and
9459 programs support the @option{--help} and @option{--version} options.
9460 This also provides a basic check that the program's
9461 run-time dependencies are satisfied after installation.
9462
9463 @vindex AM_INSTALLCHECK_STD_OPTIONS_EXEMPT
9464 In a few situations, programs (or scripts) have to be exempted from this
9465 test.  For instance, @command{false} (from GNU coreutils) is never
9466 successful, even for @option{--help} or @option{--version}.  You can list
9467 such programs in the variable @code{AM_INSTALLCHECK_STD_OPTIONS_EXEMPT}.
9468 Programs (not scripts) listed in this variable should be suffixed by
9469 @samp{$(EXEEXT)} for the sake of Win32 or OS/2.  For instance, suppose we
9470 build @file{false} as a program but @file{true.sh} as a script, and that
9471 neither of them support @option{--help} or @option{--version}:
9472
9473 @example
9474 AUTOMAKE_OPTIONS = std-options
9475 bin_PROGRAMS = false ...
9476 bin_SCRIPTS = true.sh ...
9477 AM_INSTALLCHECK_STD_OPTIONS_EXEMPT = false$(EXEEXT) true.sh
9478 @end example
9479
9480 @item @option{subdir-objects}
9481 @cindex Options, @option{subdir-objects}
9482 @opindex subdir-objects
9483 If this option is specified, then objects are placed into the
9484 subdirectory of the build directory corresponding to the subdirectory of
9485 the source file.  For instance, if the source file is
9486 @file{subdir/file.cxx}, then the output file would be
9487 @file{subdir/file.o}.
9488
9489 In order to use this option with C sources, you should add
9490 @code{AM_PROG_CC_C_O} to @file{configure.ac}.
9491
9492 @anchor{tar-formats}
9493 @item @option{tar-v7}
9494 @itemx @option{tar-ustar}
9495 @itemx @option{tar-pax}
9496 @cindex Option, @option{tar-v7}
9497 @cindex Option, @option{tar-ustar}
9498 @cindex Option, @option{tar-pax}
9499 @cindex @command{tar} formats
9500 @cindex v7 @command{tar} format
9501 @cindex ustar format
9502 @cindex pax format
9503 @opindex tar-v7
9504 @opindex tar-ustar
9505 @opindex tar-pax
9506
9507 These three mutually exclusive options select the tar format to use
9508 when generating tarballs with @samp{make dist}.  (The tar file created
9509 is then compressed according to the set of @option{no-dist-gzip},
9510 @option{dist-bzip2}, @option{dist-lzip}, @option{dist-xz} and
9511 @option{dist-tarZ} options in use.)
9512
9513 These options must be passed as arguments to @code{AM_INIT_AUTOMAKE}
9514 (@pxref{Macros}) because they can require additional configure checks.
9515 Automake will complain if it sees such options in an
9516 @code{AUTOMAKE_OPTIONS} variable.
9517
9518 @option{tar-v7} selects the old V7 tar format.  This is the historical
9519 default.  This antiquated format is understood by all tar
9520 implementations and supports file names with up to 99 characters.  When
9521 given longer file names some tar implementations will diagnose the
9522 problem while other will generate broken tarballs or use non-portable
9523 extensions.  Furthermore, the V7 format cannot store empty
9524 directories.  When using this format, consider using the
9525 @option{filename-length-max=99} option to catch file names too long.
9526
9527 @option{tar-ustar} selects the ustar format defined by POSIX
9528 1003.1-1988.  This format is believed to be old enough to be portable.
9529 It fully supports empty directories.  It can store file names with up
9530 to 256 characters, provided that the file name can be split at
9531 directory separator in two parts, first of them being at most 155
9532 bytes long.  So, in most cases the maximum file name length will be
9533 shorter than 256 characters.  However you may run against broken tar
9534 implementations that incorrectly handle file names longer than 99
9535 characters (please report them to @email{@value{PACKAGE_BUGREPORT}} so we
9536 can document this accurately).
9537
9538 @option{tar-pax} selects the new pax interchange format defined by POSIX
9539 1003.1-2001.  It does not limit the length of file names.  However,
9540 this format is very young and should probably be restricted to
9541 packages that target only very modern platforms.  There are moves to
9542 change the pax format in an upward-compatible way, so this option may
9543 refer to a more recent version in the future.
9544
9545 @xref{Formats, , Controlling the Archive Format, tar, GNU Tar}, for
9546 further discussion about tar formats.
9547
9548 @command{configure} knows several ways to construct these formats.  It
9549 will not abort if it cannot find a tool up to the task (so that the
9550 package can still be built), but @samp{make dist} will fail.
9551
9552 @item @var{version}
9553 @cindex Option, @var{version}
9554 A version number (e.g., @samp{0.30}) can be specified.  If Automake is not
9555 newer than the version specified, creation of the @file{Makefile.in}
9556 will be suppressed.
9557
9558 @item @option{-W@var{category}} or @option{--warnings=@var{category}}
9559 @cindex Option, warnings
9560 @cindex Option, @option{-W@var{category}}
9561 @cindex Option, @option{--warnings=@var{category}}
9562 These options behave exactly like their command-line counterpart
9563 (@pxref{automake Invocation}).  This allows you to enable or disable some
9564 warning categories on a per-file basis.  You can also setup some warnings
9565 for your entire project; for instance, try @samp{AM_INIT_AUTOMAKE([-Wall])}
9566 in your @file{configure.ac}.
9567
9568 @end table
9569
9570 Unrecognized options are diagnosed by @command{automake}.
9571
9572 If you want an option to apply to all the files in the tree, you can use
9573 the @code{AM_INIT_AUTOMAKE} macro in @file{configure.ac}.
9574 @xref{Macros}.
9575
9576
9577 @node Miscellaneous
9578 @chapter Miscellaneous Rules
9579
9580 There are a few rules and variables that didn't fit anywhere else.
9581
9582 @menu
9583 * Tags::        Interfacing to etags and mkid
9584 * Suffixes::    Handling new file extensions
9585 * Multilibs::   Support for multilibs (deprecated, soon to be removed).
9586 @end menu
9587
9588
9589 @node Tags
9590 @section Interfacing to @command{etags}
9591
9592 @cindex @file{TAGS} support
9593
9594 Automake will generate rules to generate @file{TAGS} files for use with
9595 GNU Emacs under some circumstances.
9596
9597 @trindex tags
9598 If any C, C++ or Fortran 77 source code or headers are present, then
9599 @code{tags} and @code{TAGS} rules will be generated for the directory.
9600 All files listed using the @code{_SOURCES}, @code{_HEADERS}, and
9601 @code{_LISP} primaries will be used to generate tags.  Note that
9602 generated source files that are not distributed must be declared in
9603 variables like @code{nodist_noinst_HEADERS} or
9604 @code{nodist_@var{prog}_SOURCES} or they will be ignored.
9605
9606 A @code{tags} rule will be output at the topmost directory of a
9607 multi-directory package.  When run from this topmost directory,
9608 @samp{make tags} will generate a @file{TAGS} file that includes by
9609 reference all @file{TAGS} files from subdirectories.
9610
9611 The @code{tags} rule will also be generated if the variable
9612 @code{ETAGS_ARGS} is defined.  This variable is intended for use in
9613 directories that contain taggable source that @command{etags} does
9614 not understand.  The user can use the @code{ETAGSFLAGS} to pass
9615 additional flags to @command{etags}; @code{AM_ETAGSFLAGS} is also
9616 available for use in @file{Makefile.am}.
9617 @vindex ETAGS_ARGS
9618 @vindex ETAGSFLAGS
9619 @vindex AM_ETAGSFLAGS
9620
9621 Here is how Automake generates tags for its source, and for nodes in its
9622 Texinfo file:
9623
9624 @example
9625 ETAGS_ARGS = automake.in --lang=none \
9626  --regex='/^@@node[ \t]+\([^,]+\)/\1/' automake.texi
9627 @end example
9628
9629 If you add file names to @code{ETAGS_ARGS}, you will probably also
9630 want to define @code{TAGS_DEPENDENCIES}.  The contents of this variable
9631 are added directly to the dependencies for the @code{tags} rule.
9632 @vindex TAGS_DEPENDENCIES
9633
9634 Automake also generates a @code{ctags} rule that can be used to
9635 build @command{vi}-style @file{tags} files.  The variable @code{CTAGS}
9636 is the name of the program to invoke (by default @command{ctags});
9637 @code{CTAGSFLAGS} can be used by the user to pass additional flags,
9638 and @code{AM_CTAGSFLAGS} can be used by the @file{Makefile.am}.
9639
9640 Automake will also generate an @code{ID} rule that will run
9641 @command{mkid} on the source.  This is only supported on a
9642 directory-by-directory basis.
9643 @trindex id
9644
9645 Finally, Automake also emits rules to support the
9646 @uref{http://www.gnu.org/software/global/, GNU Global Tags program}.
9647 The @code{GTAGS} rule runs Global Tags and puts the
9648 result in the top build directory.  The variable @code{GTAGS_ARGS}
9649 holds arguments that are passed to @command{gtags}.
9650 @vindex GTAGS_ARGS
9651
9652
9653 @node Suffixes
9654 @section Handling new file extensions
9655
9656 @cindex Adding new @code{SUFFIXES}
9657 @cindex @code{SUFFIXES}, adding
9658 @vindex SUFFIXES
9659
9660 It is sometimes useful to introduce a new implicit rule to handle a file
9661 type that Automake does not know about.
9662
9663 For instance, suppose you had a compiler that could compile @file{.foo}
9664 files to @file{.o} files.  You would simply define a suffix rule for
9665 your language:
9666
9667 @example
9668 .foo.o:
9669         foocc -c -o $@@ $<
9670 @end example
9671
9672 Then you could directly use a @file{.foo} file in a @code{_SOURCES}
9673 variable and expect the correct results:
9674
9675 @example
9676 bin_PROGRAMS = doit
9677 doit_SOURCES = doit.foo
9678 @end example
9679
9680 This was the simpler and more common case.  In other cases, you will
9681 have to help Automake to figure out which extensions you are defining your
9682 suffix rule for.  This usually happens when your extension does not
9683 start with a dot.  Then, all you have to do is to put a list of new
9684 suffixes in the @code{SUFFIXES} variable @strong{before} you define your
9685 implicit rule.
9686
9687 For instance, the following definition prevents Automake from misinterpreting
9688 the @samp{.idlC.cpp:} rule as an attempt to transform @file{.idlC} files into
9689 @file{.cpp} files.
9690
9691 @c Keep in sync with suffix7.test.
9692 @example
9693 SUFFIXES = .idl C.cpp
9694 .idlC.cpp:
9695         # whatever
9696 @end example
9697
9698 As you may have noted, the @code{SUFFIXES} variable behaves like the
9699 @code{.SUFFIXES} special target of @command{make}.  You should not touch
9700 @code{.SUFFIXES} yourself, but use @code{SUFFIXES} instead and let
9701 Automake generate the suffix list for @code{.SUFFIXES}.  Any given
9702 @code{SUFFIXES} go at the start of the generated suffixes list, followed
9703 by Automake generated suffixes not already in the list.
9704
9705 @node Multilibs
9706 @section Support for Multilibs (deprecated, soon to be removed).
9707
9708 Automake used to support an obscure feature called multilibs.  @emph{This
9709 feature is now deprecated, and will be removed in the next major Automake
9710 version}.  Still, its implementation will remain available in the
9711 @file{contrib/} directory of the Automake distribution, so it should be
9712 very easy for motivated users to continue to use it in their projects,
9713 if they really need to.
9714
9715 A @dfn{multilib} is a library that is built for multiple different ABIs
9716 at a single time; each time the library is built with a different target
9717 flag combination.  This is only useful when the library is intended to
9718 be cross-compiled, and it is almost exclusively used for compiler
9719 support libraries.
9720
9721 @node Include
9722 @chapter Include
9723
9724 @cmindex include
9725 @cindex Including @file{Makefile} fragment
9726 @cindex @file{Makefile} fragment, including
9727
9728 Automake supports an @code{include} directive that  can be used to
9729 include other @file{Makefile} fragments when @command{automake} is run.
9730 Note that these fragments are read and interpreted by @command{automake},
9731 not by @command{make}.  As with conditionals, @command{make} has no idea that
9732 @code{include} is in use.
9733
9734 There are two forms of @code{include}:
9735
9736 @table @code
9737 @item include $(srcdir)/file
9738 Include a fragment that is found relative to the current source
9739 directory.
9740
9741 @item include $(top_srcdir)/file
9742 Include a fragment that is found relative to the top source directory.
9743 @end table
9744
9745 Note that if a fragment is included inside a conditional, then the
9746 condition applies to the entire contents of that fragment.
9747
9748 Makefile fragments included this way are always distributed because
9749 they are needed to rebuild @file{Makefile.in}.
9750
9751 @node Conditionals
9752 @chapter Conditionals
9753
9754 @cindex Conditionals
9755
9756 Automake supports a simple type of conditionals.
9757
9758 These conditionals are not the same as conditionals in
9759 GNU Make.  Automake conditionals are checked at configure time by the
9760 @file{configure} script, and affect the translation from
9761 @file{Makefile.in} to @file{Makefile}.  They are based on options passed
9762 to @file{configure} and on results that @file{configure} has discovered
9763 about the host system.  GNU Make conditionals are checked at @command{make}
9764 time, and are based on variables passed to the make program or defined
9765 in the @file{Makefile}.
9766
9767 Automake conditionals will work with any make program.
9768
9769 @menu
9770 * Usage of Conditionals::       Declaring conditional content
9771 * Limits of Conditionals::      Enclosing complete statements
9772 @end menu
9773
9774 @node Usage of Conditionals
9775 @section Usage of Conditionals
9776
9777 @acindex AM_CONDITIONAL
9778 Before using a conditional, you must define it by using
9779 @code{AM_CONDITIONAL} in the @file{configure.ac} file (@pxref{Macros}).
9780
9781 @defmac AM_CONDITIONAL (@var{conditional}, @var{condition})
9782 The conditional name, @var{conditional}, should be a simple string
9783 starting with a letter and containing only letters, digits, and
9784 underscores.  It must be different from @samp{TRUE} and @samp{FALSE}
9785 that are reserved by Automake.
9786
9787 The shell @var{condition} (suitable for use in a shell @code{if}
9788 statement) is evaluated when @command{configure} is run.  Note that you
9789 must arrange for @emph{every} @code{AM_CONDITIONAL} to be invoked every
9790 time @command{configure} is run.  If @code{AM_CONDITIONAL} is run
9791 conditionally (e.g., in a shell @code{if} statement), then the result
9792 will confuse @command{automake}.
9793 @end defmac
9794
9795 @cindex @option{--enable-debug}, example
9796 @cindex Example conditional @option{--enable-debug}
9797 @cindex Conditional example, @option{--enable-debug}
9798
9799 Conditionals typically depend upon options that the user provides to
9800 the @command{configure} script.  Here is an example of how to write a
9801 conditional that is true if the user uses the @option{--enable-debug}
9802 option.
9803
9804 @example
9805 AC_ARG_ENABLE([debug],
9806 [  --enable-debug    Turn on debugging],
9807 [case "$@{enableval@}" in
9808   yes) debug=true ;;
9809   no)  debug=false ;;
9810   *) AC_MSG_ERROR([bad value $@{enableval@} for --enable-debug]) ;;
9811 esac],[debug=false])
9812 AM_CONDITIONAL([DEBUG], [test x$debug = xtrue])
9813 @end example
9814
9815 Here is an example of how to use that conditional in @file{Makefile.am}:
9816
9817 @cmindex if
9818 @cmindex endif
9819 @cmindex else
9820
9821 @example
9822 if DEBUG
9823 DBG = debug
9824 else
9825 DBG =
9826 endif
9827 noinst_PROGRAMS = $(DBG)
9828 @end example
9829
9830 This trivial example could also be handled using @code{EXTRA_PROGRAMS}
9831 (@pxref{Conditional Programs}).
9832
9833 You may only test a single variable in an @code{if} statement, possibly
9834 negated using @samp{!}.  The @code{else} statement may be omitted.
9835 Conditionals may be nested to any depth.  You may specify an argument to
9836 @code{else} in which case it must be the negation of the condition used
9837 for the current @code{if}.  Similarly you may specify the condition
9838 that is closed on the @code{endif} line:
9839
9840 @example
9841 if DEBUG
9842 DBG = debug
9843 else !DEBUG
9844 DBG =
9845 endif !DEBUG
9846 @end example
9847
9848 @noindent
9849 Unbalanced conditions are errors.  The @code{if}, @code{else}, and
9850 @code{endif} statements should not be indented, i.e., start on column
9851 one.
9852
9853 The @code{else} branch of the above two examples could be omitted,
9854 since assigning the empty string to an otherwise undefined variable
9855 makes no difference.
9856
9857 @acindex AM_COND_IF
9858 In order to allow access to the condition registered by
9859 @code{AM_CONDITIONAL} inside @file{configure.ac}, and to allow
9860 conditional @code{AC_CONFIG_FILES}, @code{AM_COND_IF} may be used:
9861
9862 @defmac AM_COND_IF (@var{conditional}, @ovar{if-true}, @ovar{if-false})
9863 If @var{conditional} is fulfilled, execute @var{if-true}, otherwise
9864 execute @var{if-false}.  If either branch contains @code{AC_CONFIG_FILES},
9865 it will cause @command{automake} to output the rules for the respective
9866 files only for the given condition.
9867 @end defmac
9868
9869 @code{AM_COND_IF} macros may be nested when m4 quotation is used
9870 properly (@pxref{M4 Quotation, ,, autoconf, The Autoconf Manual}).
9871
9872 @cindex Example conditional @code{AC_CONFIG_FILES}
9873 @cindex @code{AC_CONFIG_FILES}, conditional
9874
9875 Here is an example of how to define a conditional config file:
9876
9877 @example
9878 AM_CONDITIONAL([SHELL_WRAPPER], [test "x$with_wrapper" = xtrue])
9879 AM_COND_IF([SHELL_WRAPPER],
9880            [AC_CONFIG_FILES([wrapper:wrapper.in])])
9881 @end example
9882
9883 @node Limits of Conditionals
9884 @section Limits of Conditionals
9885
9886 Conditionals should enclose complete statements like variables or
9887 rules definitions.  Automake cannot deal with conditionals used inside
9888 a variable definition, for instance, and is not even able to diagnose
9889 this situation.  The following example would not work:
9890
9891 @example
9892 # This syntax is not understood by Automake
9893 AM_CPPFLAGS = \
9894   -DFEATURE_A \
9895 if WANT_DEBUG
9896   -DDEBUG \
9897 endif
9898   -DFEATURE_B
9899 @end example
9900
9901 However the intended definition of @code{AM_CPPFLAGS} can be achieved
9902 with
9903
9904 @example
9905 if WANT_DEBUG
9906   DEBUGFLAGS = -DDEBUG
9907 endif
9908 AM_CPPFLAGS = -DFEATURE_A $(DEBUGFLAGS) -DFEATURE_B
9909 @end example
9910
9911 @noindent
9912 or
9913
9914 @example
9915 AM_CPPFLAGS = -DFEATURE_A
9916 if WANT_DEBUG
9917 AM_CPPFLAGS += -DDEBUG
9918 endif
9919 AM_CPPFLAGS += -DFEATURE_B
9920 @end example
9921
9922 More details and examples of conditionals are described alongside
9923 various Automake features in this manual (@pxref{Conditional
9924 Subdirectories}, @pxref{Conditional Sources}, @pxref{Conditional
9925 Programs}, @pxref{Conditional Libtool Libraries}, @pxref{Conditional
9926 Libtool Sources}).
9927
9928 @node Silencing Make
9929 @chapter Silencing @command{make}
9930
9931 @cindex Silent @command{make}
9932 @cindex Silencing @command{make}
9933 @cindex Silent rules
9934 @cindex Silent @command{make} rules
9935
9936 @menu
9937 * Make verbosity::               Make is verbose by default
9938 * Tricks For Silencing Make::    Standard and generic ways to silence make
9939 * Automake silent-rules Option:: How Automake can help in silencing make
9940 @end menu
9941
9942 @node Make verbosity
9943 @section Make is verbose by default
9944
9945 Normally, when executing the set of rules associated with a target,
9946 @command{make} prints each rule before it is executed.  This behaviour,
9947 while having been in place for a long time, and being even mandated by
9948 the POSIX standard, starkly violates the ``silence is golden'' UNIX
9949 principle@footnote{See also
9950 @uref{http://catb.org/~esr/writings/taoup/html/ch11s09.html}.}:
9951
9952 @quotation
9953 When a program has nothing interesting or surprising to say, it should
9954 say nothing.  Well-behaved Unix programs do their jobs unobtrusively,
9955 with a minimum of fuss and bother.  Silence is golden.
9956 @end quotation
9957
9958 In fact, while such verbosity of @command{make} can theoretically be
9959 useful to track bugs and understand reasons of failures right away, it
9960 can also hide warning and error messages from @command{make}-invoked
9961 tools, drowning them in a flood of uninteresting and seldom useful
9962 messages, and thus allowing them to go easily undetected.
9963
9964 This problem can be very annoying, especially for developers, who usually
9965 know quite well what's going on behind the scenes, and for whom the
9966 verbose output from @command{make} ends up being mostly noise that hampers
9967 the easy detection of potentially important warning messages.
9968
9969 @node Tricks For Silencing Make
9970 @section Standard and generic ways to silence make
9971
9972 Here we describe some common idioms/tricks to obtain a quieter make
9973 output, with their relative advantages and drawbacks.  In the next
9974 section (@ref{Automake silent-rules Option}) we'll see how Automake
9975 can help in this respect.
9976
9977 @itemize @bullet
9978
9979 @item @command{make -s}
9980
9981 This simply causes @command{make} not to print @emph{any} rule before
9982 executing it.
9983
9984 The @option{-s} flag is mandated by POSIX, universally supported, and
9985 its purpose and function are easy to understand.
9986
9987 But it also has its serious limitations too.  First of all, it embodies
9988 an ``all or nothing'' strategy, i.e., either everything is silenced, or
9989 nothing is; this lack of granularity can sometimes be a fatal flaw.
9990 Moreover, when the @option{-s} flag is used, the @command{make} output
9991 might turn out to be too much terse; in case of errors, the user won't
9992 be able to easily see what rule or command have caused them, or even,
9993 in case of tools with poor error reporting, what the errors were!
9994
9995 @item @command{make >/dev/null || make}
9996
9997 Apparently, this perfectly obeys the ``silence is golden'' rule: warnings
9998 from stderr are passed through, output reporting is done only in case of
9999 error, and in that case it should provide a verbose-enough report to allow
10000 an easy determination of the error location and causes.
10001
10002 However, calling @command{make} two times in a row might hide errors
10003 (especially intermittent ones), or subtly change the expected semantic
10004 of the @command{make} calls --- things these which can clearly make
10005 debugging and error assessment very difficult.
10006
10007 @item @command{make --no-print-directory}
10008
10009 This is GNU @command{make} specific.  When called with the
10010 @option{--no-print-directory} option, GNU @command{make} will disable
10011 printing of the working directory by invoked sub-@command{make}s (the
10012 well-known ``@i{Entering/Leaving directory ...}'' messages).  This helps
10013 to decrease the verbosity of the output, but experience has shown that
10014 it can also often render debugging considerably harder in projects using
10015 deeply-nested @command{make} recursion.
10016
10017 As an aside, notice that the @option{--no-print-directory} option is
10018 automatically activated if the @option{-s} flag is used.
10019
10020 @c TODO: Other tricks?
10021 @c TODO: Maybe speak about the @code{.SILENT} target?
10022 @c TODO:  - Pros: More granularity on what to silence.
10023 @c TODO:  - Cons: No easy way to temporarily override.
10024
10025 @end itemize
10026
10027 @node Automake silent-rules Option
10028 @section How Automake can help in silencing make
10029
10030 The tricks and idioms for silencing @command{make} described in the
10031 previous section can be useful from time to time, but we've seen that
10032 they all have their serious drawbacks and limitations.  That's why
10033 automake provides support for a more advanced and flexible way of
10034 obtaining quieter output from @command{make}: the @option{silent-rules}
10035 mode.
10036
10037 @c TODO: Maybe describe in brief the precedent set by the build system
10038 @c of the Linux Kernel, from which Automake took inspiration ... Links?
10039
10040 To give the gist of what @option{silent-rules} can do, here is a simple
10041 comparison between a typical @command{make} output (where silent rules
10042 are disabled) and one with silent rules enabled:
10043
10044 @example
10045 % @kbd{cat Makefile.am}
10046 bin_PROGRAMS = foo
10047 foo_SOURCES = main.c func.c
10048 % @kbd{cat main.c}
10049 int main (void) @{ return func (); @}  /* func used undeclared */
10050 % @kbd{cat func.c}
10051 int func (void) @{ int i; return i; @} /* i used uninitialized */
10052
10053 @i{The make output is by default very verbose.  This causes warnings
10054 from the compiler to be somewhat hidden, and not immediate to spot.}
10055 % @kbd{make CFLAGS=-Wall}
10056 gcc -DPACKAGE_NAME=\"foo\" -DPACKAGE_TARNAME=\"foo\" ...
10057 -DPACKAGE_STRING=\"foo\ 1.0\" -DPACKAGE_BUGREPORT=\"\" ...
10058 -DPACKAGE=\"foo\" -DVERSION=\"1.0\" -I. -Wall -MT main.o
10059 -MD -MP -MF .deps/main.Tpo -c -o main.o main.c
10060 main.c: In function â€˜main’:
10061 main.c:3:3: warning: implicit declaration of function â€˜func’
10062 mv -f .deps/main.Tpo .deps/main.Po
10063 gcc -DPACKAGE_NAME=\"foo\" -DPACKAGE_TARNAME=\"foo\" ...
10064 -DPACKAGE_STRING=\"foo\ 1.0\" -DPACKAGE_BUGREPORT=\"\" ...
10065 -DPACKAGE=\"foo\" -DVERSION=\"1.0\" -I. -Wall -MT func.o
10066 -MD -MP -MF .deps/func.Tpo -c -o func.o func.c
10067 func.c: In function â€˜func’:
10068 func.c:4:3: warning: â€˜i’ used uninitialized in this function
10069 mv -f .deps/func.Tpo .deps/func.Po
10070 gcc -Wall -o foo main.o func.o
10071
10072 @i{Clean up, so that we we can rebuild everything from scratch.}
10073 % @kbd{make clean}
10074 test -z "foo" || rm -f foo
10075 rm -f *.o
10076
10077 @i{Silent rules enabled: the output is minimal but informative.  In
10078 particular, the warnings from the compiler stick out very clearly.}
10079 % @kbd{make V=0 CFLAGS=-Wall}
10080   CC     main.o
10081 main.c: In function â€˜main’:
10082 main.c:3:3: warning: implicit declaration of function â€˜func’
10083   CC     func.o
10084 func.c: In function â€˜func’:
10085 func.c:4:3: warning: â€˜i’ used uninitialized in this function
10086   CCLD   foo
10087 @end example
10088
10089 @cindex silent-rules and libtool
10090 Also, in projects using @command{libtool}, the use of silent rules can
10091 automatically enable the @command{libtool}'s @option{--silent} option:
10092
10093 @example
10094 % @kbd{cat Makefile.am}
10095 lib_LTLIBRARIES = libx.la
10096
10097 % @kbd{make # Both make and libtool are verbose by default.}
10098 ...
10099 libtool: compile: gcc -DPACKAGE_NAME=\"foo\" ... -DLT_OBJDIR=\".libs/\"
10100   -I. -g -O2 -MT libx.lo -MD -MP -MF .deps/libx.Tpo -c libx.c -fPIC
10101   -DPIC -o .libs/libx.o
10102 mv -f .deps/libx.Tpo .deps/libx.Plo
10103 /bin/sh ./libtool --tag=CC --mode=link gcc -g -O2 -o libx.la -rpath
10104   /usr/local/lib libx.lo
10105 libtool: link: gcc -shared .libs/libx.o -Wl,-soname -Wl,libx.so.0
10106   -o .libs/libx.so.0.0.0
10107 libtool: link: cd .libs && rm -f libx.so && ln -s libx.so.0.0.0 libx.so
10108 ...
10109
10110 % @kbd{make V=0}
10111   CC     libx.lo
10112   CCLD   libx.la
10113 @end example
10114
10115 Let's now see how the @option{silent-rules} mode interfaces with the
10116 package developer and the package user.
10117
10118 To enable the use of @option{silent-rules} in his package, a developer
10119 needs to do either of the following:
10120
10121 @itemize @bullet
10122 @item
10123 Add the @option{silent-rules} option as argument to @code{AM_INIT_AUTOMAKE}.
10124 @item
10125 Call the @code{AM_SILENT_RULES} macro from within the @file{configure.ac}
10126 file.
10127 @end itemize
10128
10129 It is not possible to instead specify @option{silent-rules} in a
10130 @file{Makefile.am} file.
10131
10132 If the developer has done either of the above, then the user of the
10133 package may influence the verbosity at @command{configure} run time as
10134 well as at @command{make} run time:
10135
10136 @itemize @bullet
10137 @item
10138 @opindex --enable-silent-rules
10139 @opindex --disable-silent-rules
10140 Passing @option{--enable-silent-rules} to @command{configure} will cause
10141 build rules to be less verbose; the option @option{--disable-silent-rules}
10142 will cause normal verbose output.
10143 @item
10144 @vindex @code{V}
10145 At @command{make} run time, the default chosen at @command{configure}
10146 time may be overridden: @code{make V=1} will produce verbose output,
10147 @code{make V=0} less verbose output.
10148 @end itemize
10149
10150 @cindex default verbosity for silent-rules
10151 Note that silent rules are @emph{disabled} by default; the user must
10152 enable them explicitly at either @command{configure} run time or at
10153 @command{make} run time.  We think that this is a good policy, since
10154 it provides the casual user with enough information to prepare a good
10155 bug report in case anything breaks.
10156
10157 Still, notwithstanding the rationales above, a developer who wants to
10158 make silent rules enabled by default in his own package can do so by
10159 adding a @samp{yes} argument to the @code{AM_SILENT_RULES} call in
10160 @file{configure.ac}.  We advise against this approach, though.
10161
10162 @c Keep in sync with silent-configsite.test
10163 Users who prefer to have silent rules enabled by default can edit their
10164 @file{config.site} file to make the variable @code{enable_silent_rules}
10165 default to @samp{yes}.  This should still allow disabling silent rules
10166 at @command{configure} time and at @command{make} time.
10167
10168 @c FIXME: there's really a need to specify this explicitly?
10169 For portability to different @command{make} implementations, package authors
10170 are advised to not set the variable @code{V} inside the @file{Makefile.am}
10171 file, to allow the user to override the value for subdirectories as well.
10172
10173 The current implementation of this feature normally uses nested
10174 variable expansion @samp{$(@var{var1}$(V))}, a @file{Makefile} feature
10175 that is not required by POSIX 2008 but is widely supported in
10176 practice.  The @option{silent-rules} option thus turns off warnings
10177 about recursive variable expansion, which are in turn enabled by
10178 @option{-Wportability} (@pxref{automake Invocation}).  On the rare
10179 @command{make} implementations that do not support nested variable
10180 expansion, whether rules are silent is always determined at configure
10181 time, and cannot be overridden at make time.  Future versions of POSIX
10182 are likely to require nested variable expansion, so this minor
10183 limitation should go away with time.
10184
10185 @vindex @code{AM_V_GEN}
10186 @vindex @code{AM_V_at}
10187 @vindex @code{AM_DEFAULT_VERBOSITY}
10188 @vindex @code{AM_V}
10189 @vindex @code{AM_DEFAULT_V}
10190 To extend the silent mode to your own rules, you have two choices:
10191
10192 @itemize @bullet
10193 @item
10194 You can use the predefined variable @code{AM_V_GEN} as a prefix to
10195 commands that should output a status line in silent mode, and
10196 @code{AM_V_at} as a prefix to commands that should not output anything
10197 in silent mode.  When output is to be verbose, both of these variables
10198 will expand to the empty string.
10199 @item
10200 You can add your own variables, so strings of your own choice are shown.
10201 The following snippet shows how you would define your own equivalent of
10202 @code{AM_V_GEN}:
10203
10204 @example
10205 pkg_verbose = $(pkg_verbose_@@AM_V@@)
10206 pkg_verbose_ = $(pkg_verbose_@@AM_DEFAULT_V@@)
10207 pkg_verbose_0 = @@echo PKG-GEN $@@;
10208
10209 foo: foo.in
10210         $(pkg_verbose)cp $(srcdir)/foo.in $@@
10211 @end example
10212
10213 @end itemize
10214
10215 As a final note, observe that, even when silent rules are enabled,
10216 the @option{--no-print-directory} option is still required with GNU
10217 @command{make} if the ``@i{Entering/Leaving directory ...}'' messages
10218 are to be disabled.
10219
10220 @node Gnits
10221 @chapter The effect of @option{--gnu} and @option{--gnits}
10222
10223 @cindex @option{--gnu}, required files
10224 @cindex @option{--gnu}, complete description
10225
10226 The @option{--gnu} option (or @option{gnu} in the
10227 @code{AUTOMAKE_OPTIONS} variable) causes @command{automake} to check
10228 the following:
10229
10230 @itemize @bullet
10231 @item
10232 The files @file{INSTALL}, @file{NEWS}, @file{README}, @file{AUTHORS},
10233 and @file{ChangeLog}, plus one of @file{COPYING.LIB}, @file{COPYING.LESSER}
10234 or @file{COPYING}, are required at the topmost directory of the package.
10235
10236 If the @option{--add-missing} option is given, @command{automake} will
10237 add a generic version of the @file{INSTALL} file as well as the
10238 @file{COPYING} file containing the text of the current version of the
10239 GNU General Public License existing at the time of this Automake release
10240 (version 3 as this is written, @uref{http://www.gnu.org/@/copyleft/@/gpl.html}).
10241 However, an existing @file{COPYING} file will never be overwritten by
10242 @command{automake}.
10243
10244 @item
10245 The options @option{no-installman} and @option{no-installinfo} are
10246 prohibited.
10247 @end itemize
10248
10249 Note that this option will be extended in the future to do even more
10250 checking; it is advisable to be familiar with the precise requirements
10251 of the GNU standards.  Also, @option{--gnu} can require certain
10252 non-standard GNU programs to exist for use by various maintainer-only
10253 rules; for instance, in the future @command{pathchk} might be required for
10254 @samp{make dist}.
10255
10256 @cindex @option{--gnits}, complete description
10257
10258 The @option{--gnits} option does everything that @option{--gnu} does, and
10259 checks the following as well:
10260
10261 @itemize @bullet
10262 @item
10263 @samp{make installcheck} will check to make sure that the @option{--help}
10264 and @option{--version} really print a usage message and a version string,
10265 respectively.  This is the @option{std-options} option (@pxref{Options}).
10266
10267 @item
10268 @samp{make dist} will check to make sure the @file{NEWS} file has been
10269 updated to the current version.
10270
10271 @item
10272 @code{VERSION} is checked to make sure its format complies with Gnits
10273 standards.
10274 @c FIXME xref when standards are finished
10275
10276 @item
10277 @cindex @file{README-alpha}
10278 If @code{VERSION} indicates that this is an alpha release, and the file
10279 @file{README-alpha} appears in the topmost directory of a package, then
10280 it is included in the distribution.  This is done in @option{--gnits}
10281 mode, and no other, because this mode is the only one where version
10282 number formats are constrained, and hence the only mode where Automake
10283 can automatically determine whether @file{README-alpha} should be
10284 included.
10285
10286 @item
10287 The file @file{THANKS} is required.
10288 @end itemize
10289
10290
10291 @node Cygnus
10292 @chapter The effect of @option{--cygnus}
10293
10294 @cindex @option{cygnus} strictness
10295
10296 Some packages, notably GNU GCC and GNU gdb, have a build environment
10297 originally written at Cygnus Support (subsequently renamed Cygnus
10298 Solutions, and then later purchased by Red Hat).  Packages with this
10299 ancestry are sometimes referred to as ``Cygnus'' trees.
10300
10301 A Cygnus tree has slightly different rules for how a
10302 @file{Makefile.in} is to be constructed.  Passing @option{--cygnus} to
10303 @command{automake} will cause any generated @file{Makefile.in} to
10304 comply with Cygnus rules.
10305
10306 Here are the precise effects of @option{--cygnus}:
10307
10308 @itemize @bullet
10309 @item
10310 Info files are always created in the build directory, and not in the
10311 source directory.
10312
10313 @item
10314 @file{texinfo.tex} is not required if a Texinfo source file is
10315 specified.  The assumption is that the file will be supplied, but in a
10316 place that Automake cannot find.  This assumption is an artifact of how
10317 Cygnus packages are typically bundled.
10318
10319 @item
10320 @samp{make dist} is not supported, and the rules for it are not
10321 generated.  Cygnus-style trees use their own distribution mechanism.
10322
10323 @item
10324 Certain tools will be searched for in the build tree as well as in the
10325 user's @env{PATH}.  These tools are @command{runtest}, @command{expect},
10326 @command{makeinfo} and @command{texi2dvi}.
10327
10328 @item
10329 @option{--foreign} is implied.
10330
10331 @item
10332 The options @option{no-installinfo} and @option{no-dependencies} are
10333 implied.
10334
10335 @item
10336 The macro @code{AM_MAINTAINER_MODE} is required.
10337
10338 @item
10339 The @code{check} target doesn't depend on @code{all}.
10340 @end itemize
10341
10342 GNU maintainers are advised to use @option{gnu} strictness in preference
10343 to the special Cygnus mode.  Some day, perhaps, the differences between
10344 Cygnus trees and GNU trees will disappear (for instance, as GCC is made
10345 more standards compliant).  At that time the special Cygnus mode will be
10346 removed.
10347
10348
10349 @node Not Enough
10350 @chapter When Automake Isn't Enough
10351
10352 In some situations, where Automake is not up to one task, one has to
10353 resort to handwritten rules or even handwritten @file{Makefile}s.
10354
10355 @menu
10356 * Extending::                   Adding new rules or overriding existing ones.
10357 * Third-Party Makefiles::       Integrating Non-Automake @file{Makefile}s.
10358 @end menu
10359
10360 @node Extending
10361 @section Extending Automake Rules
10362
10363 With some minor exceptions (for example @code{_PROGRAMS} variables,
10364 @code{TESTS}, or @code{XFAIL_TESTS}) being rewritten to append
10365 @samp{$(EXEEXT)}), the contents of a @file{Makefile.am} is copied to
10366 @file{Makefile.in} verbatim.
10367
10368 @cindex copying semantics
10369
10370 These copying semantics mean that many problems can be worked around
10371 by simply adding some @command{make} variables and rules to
10372 @file{Makefile.am}.  Automake will ignore these additions.
10373
10374 @cindex conflicting definitions
10375 @cindex rules, conflicting
10376 @cindex variables, conflicting
10377 @cindex definitions, conflicts
10378
10379 Since a @file{Makefile.in} is built from data gathered from three
10380 different places (@file{Makefile.am}, @file{configure.ac}, and
10381 @command{automake} itself), it is possible to have conflicting
10382 definitions of rules or variables.  When building @file{Makefile.in}
10383 the following priorities are respected by @command{automake} to ensure
10384 the user always has the last word:
10385
10386 @itemize
10387 @item
10388 User defined variables in @file{Makefile.am} have priority over
10389 variables @code{AC_SUBST}ed from @file{configure.ac}, and
10390 @code{AC_SUBST}ed variables have priority over
10391 @command{automake}-defined variables.
10392 @item
10393 As far as rules are concerned, a user-defined rule overrides any
10394 @command{automake}-defined rule for the same target.
10395 @end itemize
10396
10397 @cindex overriding rules
10398 @cindex overriding semantics
10399 @cindex rules, overriding
10400
10401 These overriding semantics make it possible to fine tune some default
10402 settings of Automake, or replace some of its rules.  Overriding
10403 Automake rules is often inadvisable, particularly in the topmost
10404 directory of a package with subdirectories.  The @option{-Woverride}
10405 option (@pxref{automake Invocation}) comes in handy to catch overridden
10406 definitions.
10407
10408 Note that Automake does not make any distinction between rules with
10409 commands and rules that only specify dependencies.  So it is not
10410 possible to append new dependencies to an @command{automake}-defined
10411 target without redefining the entire rule.
10412
10413 @cindex @option{-local} targets
10414 @cindex local targets
10415
10416 However, various useful targets have a @samp{-local} version you can
10417 specify in your @file{Makefile.am}.  Automake will supplement the
10418 standard target with these user-supplied targets.
10419
10420 @trindex  all
10421 @trindex  all-local
10422 @trindex  info
10423 @trindex  info-local
10424 @trindex  dvi
10425 @trindex  dvi-local
10426 @trindex  ps
10427 @trindex  ps-local
10428 @trindex  pdf
10429 @trindex  pdf-local
10430 @trindex  html
10431 @trindex  html-local
10432 @trindex  check
10433 @trindex  check-local
10434 @trindex  install
10435 @trindex  install-data
10436 @trindex  install-data-local
10437 @trindex  install-dvi
10438 @trindex  install-dvi-local
10439 @trindex  install-exec
10440 @trindex  install-exec-local
10441 @trindex  install-html
10442 @trindex  install-html-local
10443 @trindex  install-info
10444 @trindex  install-info-local
10445 @trindex  install-pdf
10446 @trindex  install-pdf-local
10447 @trindex  install-ps
10448 @trindex  install-ps-local
10449 @trindex  uninstall
10450 @trindex  uninstall-local
10451 @trindex  mostlyclean
10452 @trindex  mostlyclean-local
10453 @trindex  clean
10454 @trindex  clean-local
10455 @trindex  distclean
10456 @trindex  distclean-local
10457 @trindex  installdirs
10458 @trindex  installdirs-local
10459 @trindex  installcheck
10460 @trindex  installcheck-local
10461
10462 The targets that support a local version are @code{all}, @code{info},
10463 @code{dvi}, @code{ps}, @code{pdf}, @code{html}, @code{check},
10464 @code{install-data}, @code{install-dvi}, @code{install-exec},
10465 @code{install-html}, @code{install-info}, @code{install-pdf},
10466 @code{install-ps}, @code{uninstall}, @code{installdirs},
10467 @code{installcheck} and the various @code{clean} targets
10468 (@code{mostlyclean}, @code{clean}, @code{distclean}, and
10469 @code{maintainer-clean}).
10470
10471 Note that there are no @code{uninstall-exec-local} or
10472 @code{uninstall-data-local} targets; just use @code{uninstall-local}.
10473 It doesn't make sense to uninstall just data or just executables.
10474
10475 For instance, here is one way to erase a subdirectory during
10476 @samp{make clean} (@pxref{Clean}).
10477
10478 @example
10479 clean-local:
10480         -rm -rf testSubDir
10481 @end example
10482
10483 You may be tempted to use @code{install-data-local} to install a file
10484 to some hard-coded location, but you should avoid this
10485 (@pxref{Hard-Coded Install Paths}).
10486
10487 With the @code{-local} targets, there is no particular guarantee of
10488 execution order; typically, they are run early, but with parallel
10489 make, there is no way to be sure of that.
10490
10491 @cindex @option{-hook} targets
10492 @cindex hook targets
10493 @trindex install-data-hook
10494 @trindex install-exec-hook
10495 @trindex uninstall-hook
10496 @trindex dist-hook
10497
10498 In contrast, some rules also have a way to run another rule, called a
10499 @dfn{hook}; hooks are always executed after the main rule's work is done.
10500 The hook is named after the principal target, with @samp{-hook} appended.
10501 The targets allowing hooks are @code{install-data},
10502 @code{install-exec}, @code{uninstall}, @code{dist}, and
10503 @code{distcheck}.
10504
10505 For instance, here is how to create a hard link to an installed program:
10506
10507 @example
10508 install-exec-hook:
10509         ln $(DESTDIR)$(bindir)/program$(EXEEXT) \
10510            $(DESTDIR)$(bindir)/proglink$(EXEEXT)
10511 @end example
10512
10513 Although cheaper and more portable than symbolic links, hard links
10514 will not work everywhere (for instance, OS/2 does not have
10515 @command{ln}).  Ideally you should fall back to @samp{cp -p} when
10516 @command{ln} does not work.  An easy way, if symbolic links are
10517 acceptable to you, is to add @code{AC_PROG_LN_S} to
10518 @file{configure.ac} (@pxref{Particular Programs, , Particular Program
10519 Checks, autoconf, The Autoconf Manual}) and use @samp{$(LN_S)} in
10520 @file{Makefile.am}.
10521
10522 @cindex versioned binaries, installing
10523 @cindex installing versioned binaries
10524 @cindex @code{LN_S} example
10525 For instance, here is how you could install a versioned copy of a
10526 program using @samp{$(LN_S)}:
10527
10528 @c Keep in sync with insthook.test
10529 @example
10530 install-exec-hook:
10531         cd $(DESTDIR)$(bindir) && \
10532           mv -f prog$(EXEEXT) prog-$(VERSION)$(EXEEXT) && \
10533           $(LN_S) prog-$(VERSION)$(EXEEXT) prog$(EXEEXT)
10534 @end example
10535
10536 Note that we rename the program so that a new version will erase the
10537 symbolic link, not the real binary.  Also we @command{cd} into the
10538 destination directory in order to create relative links.
10539
10540 When writing @code{install-exec-hook} or @code{install-data-hook},
10541 please bear in mind that the exec/data distinction is based on the
10542 installation directory, not on the primary used (@pxref{The Two Parts of
10543 Install}).
10544 @c Keep in sync with primary-prefix-couples-documented-valid.test.
10545 So a @code{foo_SCRIPTS} will be installed by
10546 @code{install-data}, and a @code{barexec_SCRIPTS} will be installed by
10547 @code{install-exec}.  You should define your hooks consequently.
10548
10549 @c FIXME should include discussion of variables you can use in these
10550 @c rules
10551
10552 @node Third-Party Makefiles
10553 @section Third-Party @file{Makefile}s
10554
10555 @cindex Third-party packages, interfacing with
10556 @cindex Interfacing with third-party packages
10557
10558 In most projects all @file{Makefile}s are generated by Automake.  In
10559 some cases, however, projects need to embed subdirectories with
10560 handwritten @file{Makefile}s.  For instance, one subdirectory could be
10561 a third-party project with its own build system, not using Automake.
10562
10563 It is possible to list arbitrary directories in @code{SUBDIRS} or
10564 @code{DIST_SUBDIRS} provided each of these directories has a
10565 @file{Makefile} that recognizes all the following recursive targets.
10566
10567 @cindex recursive targets and third-party @file{Makefile}s
10568 When a user runs one of these targets, that target is run recursively
10569 in all subdirectories.  This is why it is important that even
10570 third-party @file{Makefile}s support them.
10571
10572 @table @code
10573 @item all
10574 Compile the entire package.  This is the default target in
10575 Automake-generated @file{Makefile}s, but it does not need to be the
10576 default in third-party @file{Makefile}s.
10577
10578 @item distdir
10579 @trindex distdir
10580 @vindex distdir
10581 @vindex top_distdir
10582 Copy files to distribute into @samp{$(distdir)}, before a tarball is
10583 constructed.  Of course this target is not required if the
10584 @option{no-dist} option (@pxref{Options}) is used.
10585
10586 The variables @samp{$(top_distdir)} and @samp{$(distdir)}
10587 (@pxref{The dist Hook}) will be passed from the outer package to the subpackage
10588 when the @code{distdir} target is invoked.  These two variables have
10589 been adjusted for the directory that is being recursed into, so they
10590 are ready to use.
10591
10592 @item install
10593 @itemx install-data
10594 @itemx install-exec
10595 @itemx uninstall
10596 Install or uninstall files (@pxref{Install}).
10597
10598 @item install-dvi
10599 @itemx install-html
10600 @itemx install-info
10601 @itemx install-ps
10602 @itemx install-pdf
10603 Install only some specific documentation format (@pxref{Texinfo}).
10604
10605 @item installdirs
10606 Create install directories, but do not install any files.
10607
10608 @item check
10609 @itemx installcheck
10610 Check the package (@pxref{Tests}).
10611
10612 @item mostlyclean
10613 @itemx clean
10614 @itemx distclean
10615 @itemx maintainer-clean
10616 Cleaning rules (@pxref{Clean}).
10617
10618 @item dvi
10619 @itemx pdf
10620 @itemx ps
10621 @itemx info
10622 @itemx html
10623 Build the documentation in various formats (@pxref{Texinfo}).
10624
10625 @item tags
10626 @itemx ctags
10627 Build @file{TAGS} and @file{CTAGS} (@pxref{Tags}).
10628 @end table
10629
10630 If you have ever used Gettext in a project, this is a good example of
10631 how third-party @file{Makefile}s can be used with Automake.  The
10632 @file{Makefile}s @command{gettextize} puts in the @file{po/} and
10633 @file{intl/} directories are handwritten @file{Makefile}s that
10634 implement all these targets.  That way they can be added to
10635 @code{SUBDIRS} in Automake packages.
10636
10637 Directories that are only listed in @code{DIST_SUBDIRS} but not in
10638 @code{SUBDIRS} need only the @code{distclean},
10639 @code{maintainer-clean}, and @code{distdir} rules (@pxref{Conditional
10640 Subdirectories}).
10641
10642 Usually, many of these rules are irrelevant to the third-party
10643 subproject, but they are required for the whole package to work.  It's
10644 OK to have a rule that does nothing, so if you are integrating a
10645 third-party project with no documentation or tag support, you could
10646 simply augment its @file{Makefile} as follows:
10647
10648 @example
10649 EMPTY_AUTOMAKE_TARGETS = dvi pdf ps info html tags ctags
10650 .PHONY: $(EMPTY_AUTOMAKE_TARGETS)
10651 $(EMPTY_AUTOMAKE_TARGETS):
10652 @end example
10653
10654 Another aspect of integrating third-party build systems is whether
10655 they support VPATH builds (@pxref{VPATH Builds}).  Obviously if the
10656 subpackage does not support VPATH builds the whole package will not
10657 support VPATH builds.  This in turns means that @samp{make distcheck}
10658 will not work, because it relies on VPATH builds.  Some people can
10659 live without this (actually, many Automake users have never heard of
10660 @samp{make distcheck}).  Other people may prefer to revamp the
10661 existing @file{Makefile}s to support VPATH@.  Doing so does not
10662 necessarily require Automake, only Autoconf is needed (@pxref{Build
10663 Directories, , Build Directories, autoconf, The Autoconf Manual}).
10664 The necessary substitutions: @samp{@@srcdir@@}, @samp{@@top_srcdir@@},
10665 and @samp{@@top_builddir@@} are defined by @file{configure} when it
10666 processes a @file{Makefile} (@pxref{Preset Output Variables, , Preset
10667 Output Variables, autoconf, The Autoconf Manual}), they are not
10668 computed by the Makefile like the aforementioned @samp{$(distdir)} and
10669 @samp{$(top_distdir)} variables.
10670
10671 It is sometimes inconvenient to modify a third-party @file{Makefile}
10672 to introduce the above required targets.  For instance, one may want to
10673 keep the third-party sources untouched to ease upgrades to new
10674 versions.
10675
10676 @cindex @file{GNUmakefile} including @file{Makefile}
10677 Here are two other ideas.  If GNU make is assumed, one possibility is
10678 to add to that subdirectory a @file{GNUmakefile} that defines the
10679 required targets and includes the third-party @file{Makefile}.  For
10680 this to work in VPATH builds, @file{GNUmakefile} must lie in the build
10681 directory; the easiest way to do this is to write a
10682 @file{GNUmakefile.in} instead, and have it processed with
10683 @code{AC_CONFIG_FILES} from the outer package.  For example if we
10684 assume @file{Makefile} defines all targets except the documentation
10685 targets, and that the @code{check} target is actually called
10686 @code{test}, we could write @file{GNUmakefile} (or
10687 @file{GNUmakefile.in}) like this:
10688
10689 @example
10690 # First, include the real Makefile
10691 include Makefile
10692 # Then, define the other targets needed by Automake Makefiles.
10693 .PHONY: dvi pdf ps info html check
10694 dvi pdf ps info html:
10695 check: test
10696 @end example
10697
10698 @cindex Proxy @file{Makefile} for third-party packages
10699 A similar idea that does not use @code{include} is to write a proxy
10700 @file{Makefile} that dispatches rules to the real @file{Makefile},
10701 either with @samp{$(MAKE) -f Makefile.real $(AM_MAKEFLAGS) target} (if
10702 it's OK to rename the original @file{Makefile}) or with @samp{cd
10703 subdir && $(MAKE) $(AM_MAKEFLAGS) target} (if it's OK to store the
10704 subdirectory project one directory deeper).  The good news is that
10705 this proxy @file{Makefile} can be generated with Automake.  All we
10706 need are @option{-local} targets (@pxref{Extending}) that perform the
10707 dispatch.  Of course the other Automake features are available, so you
10708 could decide to let Automake perform distribution or installation.
10709 Here is a possible @file{Makefile.am}:
10710
10711 @example
10712 all-local:
10713         cd subdir && $(MAKE) $(AM_MAKEFLAGS) all
10714 check-local:
10715         cd subdir && $(MAKE) $(AM_MAKEFLAGS) test
10716 clean-local:
10717         cd subdir && $(MAKE) $(AM_MAKEFLAGS) clean
10718
10719 # Assuming the package knows how to install itself
10720 install-data-local:
10721         cd subdir && $(MAKE) $(AM_MAKEFLAGS) install-data
10722 install-exec-local:
10723         cd subdir && $(MAKE) $(AM_MAKEFLAGS) install-exec
10724 uninstall-local:
10725         cd subdir && $(MAKE) $(AM_MAKEFLAGS) uninstall
10726
10727 # Distribute files from here.
10728 EXTRA_DIST = subdir/Makefile subdir/program.c ...
10729 @end example
10730
10731 Pushing this idea to the extreme, it is also possible to ignore the
10732 subproject build system and build everything from this proxy
10733 @file{Makefile.am}.  This might sound very sensible if you need VPATH
10734 builds but the subproject does not support them.
10735
10736 @node Distributing
10737 @chapter Distributing @file{Makefile.in}s
10738
10739 Automake places no restrictions on the distribution of the resulting
10740 @file{Makefile.in}s.  We still encourage software authors to
10741 distribute their work under terms like those of the GPL, but doing so
10742 is not required to use Automake.
10743
10744 Some of the files that can be automatically installed via the
10745 @option{--add-missing} switch do fall under the GPL@.  However, these also
10746 have a special exception allowing you to distribute them with your
10747 package, regardless of the licensing you choose.
10748
10749
10750 @node API Versioning
10751 @chapter Automake API Versioning
10752
10753 New Automake releases usually include bug fixes and new features.
10754 Unfortunately they may also introduce new bugs and incompatibilities.
10755 This makes four reasons why a package may require a particular Automake
10756 version.
10757
10758 Things get worse when maintaining a large tree of packages, each one
10759 requiring a different version of Automake.  In the past, this meant that
10760 any developer (and sometimes users) had to install several versions of
10761 Automake in different places, and switch @samp{$PATH} appropriately for
10762 each package.
10763
10764 Starting with version 1.6, Automake installs versioned binaries.  This
10765 means you can install several versions of Automake in the same
10766 @samp{$prefix}, and can select an arbitrary Automake version by running
10767 @command{automake-1.6} or @command{automake-1.7} without juggling with
10768 @samp{$PATH}.  Furthermore, @file{Makefile}'s generated by Automake 1.6
10769 will use @command{automake-1.6} explicitly in their rebuild rules.
10770
10771 The number @samp{1.6} in @command{automake-1.6} is Automake's API version,
10772 not Automake's version.  If a bug fix release is made, for instance
10773 Automake 1.6.1, the API version will remain 1.6.  This means that a
10774 package that works with Automake 1.6 should also work with 1.6.1; after
10775 all, this is what people expect from bug fix releases.
10776
10777 If your package relies on a feature or a bug fix introduced in
10778 a release, you can pass this version as an option to Automake to ensure
10779 older releases will not be used.  For instance, use this in your
10780 @file{configure.ac}:
10781
10782 @example
10783   AM_INIT_AUTOMAKE([1.6.1])    dnl Require Automake 1.6.1 or better.
10784 @end example
10785
10786 @noindent
10787 or, in a particular @file{Makefile.am}:
10788
10789 @example
10790   AUTOMAKE_OPTIONS = 1.6.1   # Require Automake 1.6.1 or better.
10791 @end example
10792
10793 @noindent
10794 Automake will print an error message if its version is
10795 older than the requested version.
10796
10797
10798 @heading What is in the API
10799
10800 Automake's programming interface is not easy to define.  Basically it
10801 should include at least all @strong{documented} variables and targets
10802 that a @file{Makefile.am} author can use, any behavior associated with
10803 them (e.g., the places where @samp{-hook}'s are run), the command line
10804 interface of @command{automake} and @command{aclocal}, @dots{}
10805
10806 @heading What is not in the API
10807
10808 Every undocumented variable, target, or command line option, is not part
10809 of the API@.  You should avoid using them, as they could change from one
10810 version to the other (even in bug fix releases, if this helps to fix a
10811 bug).
10812
10813 If it turns out you need to use such an undocumented feature, contact
10814 @email{automake@@gnu.org} and try to get it documented and exercised by
10815 the test-suite.
10816
10817 @node Upgrading
10818 @chapter Upgrading a Package to a Newer Automake Version
10819
10820 Automake maintains three kind of files in a package.
10821
10822 @itemize
10823 @item @file{aclocal.m4}
10824 @item @file{Makefile.in}s
10825 @item auxiliary tools like @file{install-sh} or @file{py-compile}
10826 @end itemize
10827
10828 @file{aclocal.m4} is generated by @command{aclocal} and contains some
10829 Automake-supplied M4 macros.  Auxiliary tools are installed by
10830 @samp{automake --add-missing} when needed.  @file{Makefile.in}s are
10831 built from @file{Makefile.am} by @command{automake}, and rely on the
10832 definitions of the M4 macros put in @file{aclocal.m4} as well as the
10833 behavior of the auxiliary tools installed.
10834
10835 Because all these files are closely related, it is important to
10836 regenerate all of them when upgrading to a newer Automake release.
10837 The usual way to do that is
10838
10839 @example
10840 aclocal # with any option needed (such a -I m4)
10841 autoconf
10842 automake --add-missing --force-missing
10843 @end example
10844
10845 @noindent
10846 or more conveniently:
10847
10848 @example
10849 autoreconf -vfi
10850 @end example
10851
10852 The use of @option{--force-missing} ensures that auxiliary tools will be
10853 overridden by new versions (@pxref{automake Invocation}).
10854
10855 It is important to regenerate all these files each time Automake is
10856 upgraded, even between bug fixes releases.  For instance, it is not
10857 unusual for a bug fix to involve changes to both the rules generated
10858 in @file{Makefile.in} and the supporting M4 macros copied to
10859 @file{aclocal.m4}.
10860
10861 Presently @command{automake} is able to diagnose situations where
10862 @file{aclocal.m4} has been generated with another version of
10863 @command{aclocal}.  However it never checks whether auxiliary scripts
10864 are up-to-date.  In other words, @command{automake} will tell you when
10865 @command{aclocal} needs to be rerun, but it will never diagnose a
10866 missing @option{--force-missing}.
10867
10868 Before upgrading to a new major release, it is a good idea to read the
10869 file @file{NEWS}.  This file lists all changes between releases: new
10870 features, obsolete constructs, known incompatibilities, and
10871 workarounds.
10872
10873 @node FAQ
10874 @chapter Frequently Asked Questions about Automake
10875
10876 This chapter covers some questions that often come up on the mailing
10877 lists.
10878
10879 @menu
10880 * CVS::                         CVS and generated files
10881 * maintainer-mode::             missing and AM_MAINTAINER_MODE
10882 * Wildcards::                   Why doesn't Automake support wildcards?
10883 * Limitations on File Names::   Limitations on source and installed file names
10884 * distcleancheck::              Files left in build directory after distclean
10885 * Flag Variables Ordering::     CFLAGS vs.@: AM_CFLAGS vs.@: mumble_CFLAGS
10886 * Renamed Objects::             Why are object files sometimes renamed?
10887 * Per-Object Flags::            How to simulate per-object flags?
10888 * Multiple Outputs::            Writing rules for tools with many output files
10889 * Hard-Coded Install Paths::    Installing to hard-coded locations
10890 * Debugging Make Rules::        Strategies when things don't work as expected
10891 * Reporting Bugs::              Feedback on bugs and feature requests
10892 @end menu
10893
10894 @node CVS
10895 @section CVS and generated files
10896
10897 @subheading Background: distributed generated Files
10898 @cindex generated files, distributed
10899 @cindex rebuild rules
10900
10901 Packages made with Autoconf and Automake ship with some generated
10902 files like @file{configure} or @file{Makefile.in}.  These files were
10903 generated on the developer's host and are distributed so that
10904 end-users do not have to install the maintainer tools required to
10905 rebuild them.  Other generated files like Lex scanners, Yacc parsers,
10906 or Info documentation, are usually distributed on similar grounds.
10907
10908 Automake outputs rules in @file{Makefile}s to rebuild these files.  For
10909 instance, @command{make} will run @command{autoconf} to rebuild
10910 @file{configure} whenever @file{configure.ac} is changed.  This makes
10911 development safer by ensuring a @file{configure} is never out-of-date
10912 with respect to @file{configure.ac}.
10913
10914 As generated files shipped in packages are up-to-date, and because
10915 @command{tar} preserves times-tamps, these rebuild rules are not
10916 triggered when a user unpacks and builds a package.
10917
10918 @subheading Background: CVS and Timestamps
10919 @cindex timestamps and CVS
10920 @cindex CVS and timestamps
10921
10922 Unless you use CVS keywords (in which case files must be updated at
10923 commit time), CVS preserves timestamp during @samp{cvs commit} and
10924 @samp{cvs import -d} operations.
10925
10926 When you check out a file using @samp{cvs checkout} its timestamp is
10927 set to that of the revision that is being checked out.
10928
10929 However, during @command{cvs update}, files will have the date of the
10930 update, not the original timestamp of this revision.  This is meant to
10931 make sure that @command{make} notices sources files have been updated.
10932
10933 This timestamp shift is troublesome when both sources and generated
10934 files are kept under CVS@.  Because CVS processes files in lexical
10935 order, @file{configure.ac} will appear newer than @file{configure}
10936 after a @command{cvs update} that updates both files, even if
10937 @file{configure} was newer than @file{configure.ac} when it was
10938 checked in.  Calling @command{make} will then trigger a spurious rebuild
10939 of @file{configure}.
10940
10941 @subheading Living with CVS in Autoconfiscated Projects
10942 @cindex CVS and generated files
10943 @cindex generated files and CVS
10944
10945 There are basically two clans amongst maintainers: those who keep all
10946 distributed files under CVS, including generated files, and those who
10947 keep generated files @emph{out} of CVS.
10948
10949 @subsubheading All Files in CVS
10950
10951 @itemize @bullet
10952 @item
10953 The CVS repository contains all distributed files so you know exactly
10954 what is distributed, and you can checkout any prior version entirely.
10955
10956 @item
10957 Maintainers can see how generated files evolve (for instance, you can
10958 see what happens to your @file{Makefile.in}s when you upgrade Automake
10959 and make sure they look OK).
10960
10961 @item
10962 Users do not need the autotools to build a checkout of the project, it
10963 works just like a released tarball.
10964
10965 @item
10966 If users use @command{cvs update} to update their copy, instead of
10967 @command{cvs checkout} to fetch a fresh one, timestamps will be
10968 inaccurate.  Some rebuild rules will be triggered and attempt to
10969 run developer tools such as @command{autoconf} or @command{automake}.
10970
10971 Actually, calls to such tools are all wrapped into a call to the
10972 @command{missing} script discussed later (@pxref{maintainer-mode}).
10973 @command{missing} will take care of fixing the timestamps when these
10974 tools are not installed, so that the build can continue.
10975
10976 @item
10977 In distributed development, developers are likely to have different
10978 version of the maintainer tools installed.  In this case rebuilds
10979 triggered by timestamp lossage will lead to spurious changes
10980 to generated files.  There are several solutions to this:
10981
10982 @itemize
10983 @item
10984 All developers should use the same versions, so that the rebuilt files
10985 are identical to files in CVS@.  (This starts to be difficult when each
10986 project you work on uses different versions.)
10987 @item
10988 Or people use a script to fix the timestamp after a checkout (the GCC
10989 folks have such a script).
10990 @item
10991 Or @file{configure.ac} uses @code{AM_MAINTAINER_MODE}, which will
10992 disable all these rebuild rules by default.  This is further discussed
10993 in @ref{maintainer-mode}.
10994 @end itemize
10995
10996 @item
10997 Although we focused on spurious rebuilds, the converse can also
10998 happen.  CVS's timestamp handling can also let you think an
10999 out-of-date file is up-to-date.
11000
11001 For instance, suppose a developer has modified @file{Makefile.am} and
11002 has rebuilt @file{Makefile.in}, and then decides to do a last-minute
11003 change to @file{Makefile.am} right before checking in both files
11004 (without rebuilding @file{Makefile.in} to account for the change).
11005
11006 This last change to @file{Makefile.am} makes the copy of
11007 @file{Makefile.in} out-of-date.  Since CVS processes files
11008 alphabetically, when another developer @samp{cvs update}s his or her
11009 tree, @file{Makefile.in} will happen to be newer than
11010 @file{Makefile.am}.  This other developer will not see that
11011 @file{Makefile.in} is out-of-date.
11012
11013 @end itemize
11014
11015 @subsubheading Generated Files out of CVS
11016
11017 One way to get CVS and @command{make} working peacefully is to never
11018 store generated files in CVS, i.e., do not CVS-control files that
11019 are @file{Makefile} targets (also called @emph{derived} files).
11020
11021 This way developers are not annoyed by changes to generated files.  It
11022 does not matter if they all have different versions (assuming they are
11023 compatible, of course).  And finally, timestamps are not lost, changes
11024 to sources files can't be missed as in the
11025 @file{Makefile.am}/@file{Makefile.in} example discussed earlier.
11026
11027 The drawback is that the CVS repository is not an exact copy of what
11028 is distributed and that users now need to install various development
11029 tools (maybe even specific versions) before they can build a checkout.
11030 But, after all, CVS's job is versioning, not distribution.
11031
11032 Allowing developers to use different versions of their tools can also
11033 hide bugs during distributed development.  Indeed, developers will be
11034 using (hence testing) their own generated files, instead of the
11035 generated files that will be released actually.  The developer who
11036 prepares the tarball might be using a version of the tool that
11037 produces bogus output (for instance a non-portable C file), something
11038 other developers could have noticed if they weren't using their own
11039 versions of this tool.
11040
11041 @subheading Third-party Files
11042 @cindex CVS and third-party files
11043 @cindex third-party files and CVS
11044
11045 Another class of files not discussed here (because they do not cause
11046 timestamp issues) are files that are shipped with a package, but
11047 maintained elsewhere.  For instance, tools like @command{gettextize}
11048 and @command{autopoint} (from Gettext) or @command{libtoolize} (from
11049 Libtool), will install or update files in your package.
11050
11051 These files, whether they are kept under CVS or not, raise similar
11052 concerns about version mismatch between developers' tools.  The
11053 Gettext manual has a section about this, see @ref{CVS Issues, CVS
11054 Issues, Integrating with CVS, gettext, GNU gettext tools}.
11055
11056 @node maintainer-mode
11057 @section @command{missing} and @code{AM_MAINTAINER_MODE}
11058
11059 @subheading @command{missing}
11060 @cindex @command{missing}, purpose
11061
11062 The @command{missing} script is a wrapper around several maintainer
11063 tools, designed to warn users if a maintainer tool is required but
11064 missing.  Typical maintainer tools are @command{autoconf},
11065 @command{automake}, @command{bison}, etc.  Because file generated by
11066 these tools are shipped with the other sources of a package, these
11067 tools shouldn't be required during a user build and they are not
11068 checked for in @file{configure}.
11069
11070 However, if for some reason a rebuild rule is triggered and involves a
11071 missing tool, @command{missing} will notice it and warn the user.
11072 Besides the warning, when a tool is missing, @command{missing} will
11073 attempt to fix timestamps in a way that allows the build to continue.
11074 For instance, @command{missing} will touch @file{configure} if
11075 @command{autoconf} is not installed.  When all distributed files are
11076 kept under version control, this feature of @command{missing} allows a
11077 user @emph{with no maintainer tools} to build a package off its version
11078 control repository, bypassing any timestamp inconsistency (implied by
11079 e.g.@: @samp{cvs update} or @samp{git clone}).
11080
11081 If the required tool is installed, @command{missing} will run it and
11082 won't attempt to continue after failures.  This is correct during
11083 development: developers love fixing failures.  However, users with
11084 wrong versions of maintainer tools may get an error when the rebuild
11085 rule is spuriously triggered, halting the build.  This failure to let
11086 the build continue is one of the arguments of the
11087 @code{AM_MAINTAINER_MODE} advocates.
11088
11089 @subheading @code{AM_MAINTAINER_MODE}
11090 @cindex @code{AM_MAINTAINER_MODE}, purpose
11091 @acindex AM_MAINTAINER_MODE
11092
11093 @code{AM_MAINTAINER_MODE} allows you to choose whether the so called
11094 "rebuild rules" should be enabled or disabled.  With
11095 @code{AM_MAINTAINER_MODE([enable])}, they are enabled by default,
11096 otherwise they are disabled by default.  In the latter case, if
11097 you have @code{AM_MAINTAINER_MODE} in @file{configure.ac}, and run
11098 @samp{./configure && make}, then @command{make} will *never* attempt to
11099 rebuild @file{configure}, @file{Makefile.in}s, Lex or Yacc outputs, etc.
11100 I.e., this disables build rules for files that are usually distributed
11101 and that users should normally not have to update.
11102
11103 The user can override the default setting by passing either
11104 @samp{--enable-maintainer-mode} or @samp{--disable-maintainer-mode}
11105 to @command{configure}.
11106
11107 People use @code{AM_MAINTAINER_MODE} either because they do not want their
11108 users (or themselves) annoyed by timestamps lossage (@pxref{CVS}), or
11109 because they simply can't stand the rebuild rules and prefer running
11110 maintainer tools explicitly.
11111
11112 @code{AM_MAINTAINER_MODE} also allows you to disable some custom build
11113 rules conditionally.  Some developers use this feature to disable
11114 rules that need exotic tools that users may not have available.
11115
11116 Several years ago Fran@,{c}ois Pinard pointed out several arguments
11117 against this @code{AM_MAINTAINER_MODE} macro.  Most of them relate to
11118 insecurity.  By removing dependencies you get non-dependable builds:
11119 changes to sources files can have no effect on generated files and this
11120 can be very confusing when unnoticed.  He adds that security shouldn't
11121 be reserved to maintainers (what @option{--enable-maintainer-mode}
11122 suggests), on the contrary.  If one user has to modify a
11123 @file{Makefile.am}, then either @file{Makefile.in} should be updated
11124 or a warning should be output (this is what Automake uses
11125 @command{missing} for) but the last thing you want is that nothing
11126 happens and the user doesn't notice it (this is what happens when
11127 rebuild rules are disabled by @code{AM_MAINTAINER_MODE}).
11128
11129 Jim Meyering, the inventor of the @code{AM_MAINTAINER_MODE} macro was
11130 swayed by Fran@,{c}ois's arguments, and got rid of
11131 @code{AM_MAINTAINER_MODE} in all of his packages.
11132
11133 Still many people continue to use @code{AM_MAINTAINER_MODE}, because
11134 it helps them working on projects where all files are kept under version
11135 control, and because @command{missing} isn't enough if you have the
11136 wrong version of the tools.
11137
11138
11139 @node Wildcards
11140 @section Why doesn't Automake support wildcards?
11141 @cindex wildcards
11142
11143 Developers are lazy.  They would often like to use wildcards in
11144 @file{Makefile.am}s, so that they would not need to remember to
11145 update @file{Makefile.am}s every time they add, delete, or rename
11146 a file.
11147
11148 There are several objections to this:
11149 @itemize
11150 @item
11151 When using CVS (or similar) developers need to remember they have to
11152 run @samp{cvs add} or @samp{cvs rm} anyway.  Updating
11153 @file{Makefile.am} accordingly quickly becomes a reflex.
11154
11155 Conversely, if your application doesn't compile
11156 because you forgot to add a file in @file{Makefile.am}, it will help
11157 you remember to @samp{cvs add} it.
11158
11159 @item
11160 Using wildcards makes it easy to distribute files by mistake.  For
11161 instance, some code a developer is experimenting with (a test case,
11162 say) that should not be part of the distribution.
11163
11164 @item
11165 Using wildcards it's easy to omit some files by mistake.  For
11166 instance, one developer creates a new file, uses it in many places,
11167 but forgets to commit it.  Another developer then checks out the
11168 incomplete project and is able to run @samp{make dist} successfully,
11169 even though a file is missing. By listing files, @samp{make dist}
11170 @emph{will} complain.
11171
11172 @item
11173 Wildcards are not portable to some non-GNU @command{make} implementations,
11174 e.g., NetBSD @command{make} will not expand globs such as @samp{*} in
11175 prerequisites of a target.
11176
11177 @item
11178 Finally, it's really hard to @emph{forget} to add a file to
11179 @file{Makefile.am}: files that are not listed in @file{Makefile.am} are
11180 not compiled or installed, so you can't even test them.
11181 @end itemize
11182
11183 Still, these are philosophical objections, and as such you may disagree,
11184 or find enough value in wildcards to dismiss all of them.  Before you
11185 start writing a patch against Automake to teach it about wildcards,
11186 let's see the main technical issue: portability.
11187
11188 Although @samp{$(wildcard ...)} works with GNU @command{make}, it is
11189 not portable to other @command{make} implementations.
11190
11191 The only way Automake could support @command{$(wildcard ...)} is by
11192 expending @command{$(wildcard ...)} when @command{automake} is run.
11193 The resulting @file{Makefile.in}s would be portable since they would
11194 list all files and not use @samp{$(wildcard ...)}.  However that
11195 means developers would need to remember to run @command{automake} each
11196 time they add, delete, or rename files.
11197
11198 Compared to editing @file{Makefile.am}, this is a very small gain.  Sure,
11199 it's easier and faster to type @samp{automake; make} than to type
11200 @samp{emacs Makefile.am; make}.  But nobody bothered enough to write a
11201 patch to add support for this syntax.  Some people use scripts to
11202 generate file lists in @file{Makefile.am} or in separate
11203 @file{Makefile} fragments.
11204
11205 Even if you don't care about portability, and are tempted to use
11206 @samp{$(wildcard ...)} anyway because you target only GNU Make, you
11207 should know there are many places where Automake needs to know exactly
11208 which files should be processed.  As Automake doesn't know how to
11209 expand @samp{$(wildcard ...)}, you cannot use it in these places.
11210 @samp{$(wildcard ...)} is a black box comparable to @code{AC_SUBST}ed
11211 variables as far Automake is concerned.
11212
11213 You can get warnings about @samp{$(wildcard ...}) constructs using the
11214 @option{-Wportability} flag.
11215
11216 @node Limitations on File Names
11217 @section Limitations on File Names
11218 @cindex file names, limitations on
11219
11220 Automake attempts to support all kinds of file names, even those that
11221 contain unusual characters or are unusually long.  However, some
11222 limitations are imposed by the underlying operating system and tools.
11223
11224 Most operating systems prohibit the use of the null byte in file
11225 names, and reserve @samp{/} as a directory separator.  Also, they
11226 require that file names are properly encoded for the user's locale.
11227 Automake is subject to these limits.
11228
11229 Portable packages should limit themselves to POSIX file
11230 names.  These can contain ASCII letters and digits,
11231 @samp{_}, @samp{.}, and @samp{-}.  File names consist of components
11232 separated by @samp{/}.  File name components cannot begin with
11233 @samp{-}.
11234
11235 Portable POSIX file names cannot contain components that exceed a
11236 14-byte limit, but nowadays it's normally safe to assume the
11237 more-generous XOPEN limit of 255 bytes.  POSIX
11238 limits file names to 255 bytes (XOPEN allows 1023 bytes),
11239 but you may want to limit a source tarball to file names of 99 bytes
11240 to avoid interoperability problems with old versions of @command{tar}.
11241
11242 If you depart from these rules (e.g., by using non-ASCII
11243 characters in file names, or by using lengthy file names), your
11244 installers may have problems for reasons unrelated to Automake.
11245 However, if this does not concern you, you should know about the
11246 limitations imposed by Automake itself.  These limitations are
11247 undesirable, but some of them seem to be inherent to underlying tools
11248 like Autoconf, Make, M4, and the shell.  They fall into three
11249 categories: install directories, build directories, and file names.
11250
11251 The following characters:
11252
11253 @example
11254 @r{newline} " # $ ' `
11255 @end example
11256
11257 should not appear in the names of install directories.  For example,
11258 the operand of @command{configure}'s @option{--prefix} option should
11259 not contain these characters.
11260
11261 Build directories suffer the same limitations as install directories,
11262 and in addition should not contain the following characters:
11263
11264 @example
11265 & @@ \
11266 @end example
11267
11268 For example, the full name of the directory containing the source
11269 files should not contain these characters.
11270
11271 Source and installation file names like @file{main.c} are limited even
11272 further: they should conform to the POSIX/XOPEN
11273 rules described above.  In addition, if you plan to port to
11274 non-POSIX environments, you should avoid file names that
11275 differ only in case (e.g., @file{makefile} and @file{Makefile}).
11276 Nowadays it is no longer worth worrying about the 8.3 limits of
11277 DOS file systems.
11278
11279 @node distcleancheck
11280 @section Files left in build directory after distclean
11281 @cindex @code{distclean}, diagnostic
11282 @cindex @samp{make distclean}, diagnostic
11283 @cindex dependencies and distributed files
11284 @trindex distclean
11285 @trindex distcleancheck
11286
11287 This is a diagnostic you might encounter while running @samp{make
11288 distcheck}.
11289
11290 As explained in @ref{Checking the Distribution}, @samp{make distcheck}
11291 attempts to build and check your package for errors like this one.
11292
11293 @samp{make distcheck} will perform a @code{VPATH} build of your
11294 package (@pxref{VPATH Builds}), and then call @samp{make distclean}.
11295 Files left in the build directory after @samp{make distclean} has run
11296 are listed after this error.
11297
11298 This diagnostic really covers two kinds of errors:
11299
11300 @itemize @bullet
11301 @item
11302 files that are forgotten by distclean;
11303 @item
11304 distributed files that are erroneously rebuilt.
11305 @end itemize
11306
11307 The former left-over files are not distributed, so the fix is to mark
11308 them for cleaning (@pxref{Clean}), this is obvious and doesn't deserve
11309 more explanations.
11310
11311 The latter bug is not always easy to understand and fix, so let's
11312 proceed with an example.  Suppose our package contains a program for
11313 which we want to build a man page using @command{help2man}.  GNU
11314 @command{help2man} produces simple manual pages from the @option{--help}
11315 and @option{--version} output of other commands (@pxref{Top, , Overview,
11316 help2man, The Help2man Manual}).  Because we don't want to force our
11317 users to install @command{help2man}, we decide to distribute the
11318 generated man page using the following setup.
11319
11320 @example
11321 # This Makefile.am is bogus.
11322 bin_PROGRAMS = foo
11323 foo_SOURCES = foo.c
11324 dist_man_MANS = foo.1
11325
11326 foo.1: foo$(EXEEXT)
11327         help2man --output=foo.1 ./foo$(EXEEXT)
11328 @end example
11329
11330 This will effectively distribute the man page.  However,
11331 @samp{make distcheck} will fail with:
11332
11333 @example
11334 ERROR: files left in build directory after distclean:
11335 ./foo.1
11336 @end example
11337
11338 Why was @file{foo.1} rebuilt?  Because although distributed,
11339 @file{foo.1} depends on a non-distributed built file:
11340 @file{foo$(EXEEXT)}.  @file{foo$(EXEEXT)} is built by the user, so it
11341 will always appear to be newer than the distributed @file{foo.1}.
11342
11343 @samp{make distcheck} caught an inconsistency in our package.  Our
11344 intent was to distribute @file{foo.1} so users do not need to install
11345 @command{help2man}, however since this rule causes this file to be
11346 always rebuilt, users @emph{do} need @command{help2man}.  Either we
11347 should ensure that @file{foo.1} is not rebuilt by users, or there is
11348 no point in distributing @file{foo.1}.
11349
11350 More generally, the rule is that distributed files should never depend
11351 on non-distributed built files.  If you distribute something
11352 generated, distribute its sources.
11353
11354 One way to fix the above example, while still distributing
11355 @file{foo.1} is to not depend on @file{foo$(EXEEXT)}.  For instance,
11356 assuming @command{foo --version} and @command{foo --help} do not
11357 change unless @file{foo.c} or @file{configure.ac} change, we could
11358 write the following @file{Makefile.am}:
11359
11360 @example
11361 bin_PROGRAMS = foo
11362 foo_SOURCES = foo.c
11363 dist_man_MANS = foo.1
11364
11365 foo.1: foo.c $(top_srcdir)/configure.ac
11366         $(MAKE) $(AM_MAKEFLAGS) foo$(EXEEXT)
11367         help2man --output=foo.1 ./foo$(EXEEXT)
11368 @end example
11369
11370 This way, @file{foo.1} will not get rebuilt every time
11371 @file{foo$(EXEEXT)} changes.  The @command{make} call makes sure
11372 @file{foo$(EXEEXT)} is up-to-date before @command{help2man}.  Another
11373 way to ensure this would be to use separate directories for binaries
11374 and man pages, and set @code{SUBDIRS} so that binaries are built
11375 before man pages.
11376
11377 We could also decide not to distribute @file{foo.1}.  In
11378 this case it's fine to have @file{foo.1} dependent upon
11379 @file{foo$(EXEEXT)}, since both will have to be rebuilt.
11380 However it would be impossible to build the package in a
11381 cross-compilation, because building @file{foo.1} involves
11382 an @emph{execution} of @file{foo$(EXEEXT)}.
11383
11384 Another context where such errors are common is when distributed files
11385 are built by tools that are built by the package.  The pattern is
11386 similar:
11387
11388 @example
11389 distributed-file: built-tools distributed-sources
11390         build-command
11391 @end example
11392
11393 @noindent
11394 should be changed to
11395
11396 @example
11397 distributed-file: distributed-sources
11398         $(MAKE) $(AM_MAKEFLAGS) built-tools
11399         build-command
11400 @end example
11401
11402 @noindent
11403 or you could choose not to distribute @file{distributed-file}, if
11404 cross-compilation does not matter.
11405
11406 The points made through these examples are worth a summary:
11407
11408 @cartouche
11409 @itemize
11410 @item
11411 Distributed files should never depend upon non-distributed built
11412 files.
11413 @item
11414 Distributed files should be distributed with all their dependencies.
11415 @item
11416 If a file is @emph{intended} to be rebuilt by users, then there is no point
11417 in distributing it.
11418 @end itemize
11419 @end cartouche
11420
11421 @vrindex distcleancheck_listfiles
11422 For desperate cases, it's always possible to disable this check by
11423 setting @code{distcleancheck_listfiles} as documented in @ref{Checking
11424 the Distribution}.
11425 Make sure you do understand the reason why @samp{make distcheck}
11426 complains before you do this.  @code{distcleancheck_listfiles} is a
11427 way to @emph{hide} errors, not to fix them.  You can always do better.
11428
11429 @node Flag Variables Ordering
11430 @section Flag Variables Ordering
11431 @cindex Ordering flag variables
11432 @cindex Flag variables, ordering
11433
11434 @display
11435 What is the difference between @code{AM_CFLAGS}, @code{CFLAGS}, and
11436 @code{mumble_CFLAGS}?
11437 @end display
11438
11439 @display
11440 Why does @command{automake} output @code{CPPFLAGS} after
11441 @code{AM_CPPFLAGS} on compile lines?  Shouldn't it be the converse?
11442 @end display
11443
11444 @display
11445 My @file{configure} adds some warning flags into @code{CXXFLAGS}.  In
11446 one @file{Makefile.am} I would like to append a new flag, however if I
11447 put the flag into @code{AM_CXXFLAGS} it is prepended to the other
11448 flags, not appended.
11449 @end display
11450
11451 @subheading Compile Flag Variables
11452 @cindex Flag Variables, Ordering
11453 @cindex Compile Flag Variables
11454 @cindex @code{AM_CCASFLAGS} and @code{CCASFLAGS}
11455 @cindex @code{AM_CFLAGS} and @code{CFLAGS}
11456 @cindex @code{AM_CPPFLAGS} and @code{CPPFLAGS}
11457 @cindex @code{AM_CXXFLAGS} and @code{CXXFLAGS}
11458 @cindex @code{AM_FCFLAGS} and @code{FCFLAGS}
11459 @cindex @code{AM_FFLAGS} and @code{FFLAGS}
11460 @cindex @code{AM_GCJFLAGS} and @code{GCJFLAGS}
11461 @cindex @code{AM_LDFLAGS} and @code{LDFLAGS}
11462 @cindex @code{AM_LFLAGS} and @code{LFLAGS}
11463 @cindex @code{AM_LIBTOOLFLAGS} and @code{LIBTOOLFLAGS}
11464 @cindex @code{AM_OBJCFLAGS} and @code{OBJCFLAGS}
11465 @cindex @code{AM_RFLAGS} and @code{RFLAGS}
11466 @cindex @code{AM_UPCFLAGS} and @code{UPCFLAGS}
11467 @cindex @code{AM_YFLAGS} and @code{YFLAGS}
11468 @cindex @code{CCASFLAGS} and @code{AM_CCASFLAGS}
11469 @cindex @code{CFLAGS} and @code{AM_CFLAGS}
11470 @cindex @code{CPPFLAGS} and @code{AM_CPPFLAGS}
11471 @cindex @code{CXXFLAGS} and @code{AM_CXXFLAGS}
11472 @cindex @code{FCFLAGS} and @code{AM_FCFLAGS}
11473 @cindex @code{FFLAGS} and @code{AM_FFLAGS}
11474 @cindex @code{GCJFLAGS} and @code{AM_GCJFLAGS}
11475 @cindex @code{LDFLAGS} and @code{AM_LDFLAGS}
11476 @cindex @code{LFLAGS} and @code{AM_LFLAGS}
11477 @cindex @code{LIBTOOLFLAGS} and @code{AM_LIBTOOLFLAGS}
11478 @cindex @code{OBJCFLAGS} and @code{AM_OBJCFLAGS}
11479 @cindex @code{RFLAGS} and @code{AM_RFLAGS}
11480 @cindex @code{UPCFLAGS} and @code{AM_UPCFLAGS}
11481 @cindex @code{YFLAGS} and @code{AM_YFLAGS}
11482
11483 This section attempts to answer all the above questions.  We will
11484 mostly discuss @code{CPPFLAGS} in our examples, but actually the
11485 answer holds for all the compile flags used in Automake:
11486 @code{CCASFLAGS}, @code{CFLAGS}, @code{CPPFLAGS}, @code{CXXFLAGS},
11487 @code{FCFLAGS}, @code{FFLAGS}, @code{GCJFLAGS}, @code{LDFLAGS},
11488 @code{LFLAGS}, @code{LIBTOOLFLAGS}, @code{OBJCFLAGS}, @code{RFLAGS},
11489 @code{UPCFLAGS}, and @code{YFLAGS}.
11490
11491 @code{CPPFLAGS}, @code{AM_CPPFLAGS}, and @code{mumble_CPPFLAGS} are
11492 three variables that can be used to pass flags to the C preprocessor
11493 (actually these variables are also used for other languages like C++
11494 or preprocessed Fortran).  @code{CPPFLAGS} is the user variable
11495 (@pxref{User Variables}), @code{AM_CPPFLAGS} is the Automake variable,
11496 and @code{mumble_CPPFLAGS} is the variable specific to the
11497 @code{mumble} target (we call this a per-target variable,
11498 @pxref{Program and Library Variables}).
11499
11500 Automake always uses two of these variables when compiling C sources
11501 files.  When compiling an object file for the @code{mumble} target,
11502 the first variable will be @code{mumble_CPPFLAGS} if it is defined, or
11503 @code{AM_CPPFLAGS} otherwise.  The second variable is always
11504 @code{CPPFLAGS}.
11505
11506 In the following example,
11507
11508 @example
11509 bin_PROGRAMS = foo bar
11510 foo_SOURCES = xyz.c
11511 bar_SOURCES = main.c
11512 foo_CPPFLAGS = -DFOO
11513 AM_CPPFLAGS = -DBAZ
11514 @end example
11515
11516 @noindent
11517 @file{xyz.o} will be compiled with @samp{$(foo_CPPFLAGS) $(CPPFLAGS)},
11518 (because @file{xyz.o} is part of the @code{foo} target), while
11519 @file{main.o} will be compiled with @samp{$(AM_CPPFLAGS) $(CPPFLAGS)}
11520 (because there is no per-target variable for target @code{bar}).
11521
11522 The difference between @code{mumble_CPPFLAGS} and @code{AM_CPPFLAGS}
11523 being clear enough, let's focus on @code{CPPFLAGS}.  @code{CPPFLAGS}
11524 is a user variable, i.e., a variable that users are entitled to modify
11525 in order to compile the package.  This variable, like many others,
11526 is documented at the end of the output of @samp{configure --help}.
11527
11528 For instance, someone who needs to add @file{/home/my/usr/include} to
11529 the C compiler's search path would configure a package with
11530
11531 @example
11532 ./configure CPPFLAGS='-I /home/my/usr/include'
11533 @end example
11534
11535 @noindent
11536 and this flag would be propagated to the compile rules of all
11537 @file{Makefile}s.
11538
11539 It is also not uncommon to override a user variable at
11540 @command{make}-time.  Many installers do this with @code{prefix}, but
11541 this can be useful with compiler flags too.  For instance, if, while
11542 debugging a C++ project, you need to disable optimization in one
11543 specific object file, you can run something like
11544
11545 @example
11546 rm file.o
11547 make CXXFLAGS=-O0 file.o
11548 make
11549 @end example
11550
11551 The reason @samp{$(CPPFLAGS)} appears after @samp{$(AM_CPPFLAGS)} or
11552 @samp{$(mumble_CPPFLAGS)} in the compile command is that users
11553 should always have the last say.  It probably makes more sense if you
11554 think about it while looking at the @samp{CXXFLAGS=-O0} above, which
11555 should supersede any other switch from @code{AM_CXXFLAGS} or
11556 @code{mumble_CXXFLAGS} (and this of course replaces the previous value
11557 of @code{CXXFLAGS}).
11558
11559 You should never redefine a user variable such as @code{CPPFLAGS} in
11560 @file{Makefile.am}.  Use @samp{automake -Woverride} to diagnose such
11561 mistakes.  Even something like
11562
11563 @example
11564 CPPFLAGS = -DDATADIR=\"$(datadir)\" @@CPPFLAGS@@
11565 @end example
11566
11567 @noindent
11568 is erroneous.  Although this preserves @file{configure}'s value of
11569 @code{CPPFLAGS}, the definition of @code{DATADIR} will disappear if a
11570 user attempts to override @code{CPPFLAGS} from the @command{make}
11571 command line.
11572
11573 @example
11574 AM_CPPFLAGS = -DDATADIR=\"$(datadir)\"
11575 @end example
11576
11577 @noindent
11578 is all that is needed here if no per-target flags are used.
11579
11580 You should not add options to these user variables within
11581 @file{configure} either, for the same reason.  Occasionally you need
11582 to modify these variables to perform a test, but you should reset
11583 their values afterwards.  In contrast, it is OK to modify the
11584 @samp{AM_} variables within @file{configure} if you @code{AC_SUBST}
11585 them, but it is rather rare that you need to do this, unless you
11586 really want to change the default definitions of the @samp{AM_}
11587 variables in all @file{Makefile}s.
11588
11589 What we recommend is that you define extra flags in separate
11590 variables.  For instance, you may write an Autoconf macro that computes
11591 a set of warning options for the C compiler, and @code{AC_SUBST} them
11592 in @code{WARNINGCFLAGS}; you may also have an Autoconf macro that
11593 determines which compiler and which linker flags should be used to
11594 link with library @file{libfoo}, and @code{AC_SUBST} these in
11595 @code{LIBFOOCFLAGS} and @code{LIBFOOLDFLAGS}.  Then, a
11596 @file{Makefile.am} could use these variables as follows:
11597
11598 @example
11599 AM_CFLAGS = $(WARNINGCFLAGS)
11600 bin_PROGRAMS = prog1 prog2
11601 prog1_SOURCES = @dots{}
11602 prog2_SOURCES = @dots{}
11603 prog2_CFLAGS = $(LIBFOOCFLAGS) $(AM_CFLAGS)
11604 prog2_LDFLAGS = $(LIBFOOLDFLAGS)
11605 @end example
11606
11607 In this example both programs will be compiled with the flags
11608 substituted into @samp{$(WARNINGCFLAGS)}, and @code{prog2} will
11609 additionally be compiled with the flags required to link with
11610 @file{libfoo}.
11611
11612 Note that listing @code{AM_CFLAGS} in a per-target @code{CFLAGS}
11613 variable is a common idiom to ensure that @code{AM_CFLAGS} applies to
11614 every target in a @file{Makefile.in}.
11615
11616 Using variables like this gives you full control over the ordering of
11617 the flags.  For instance, if there is a flag in $(WARNINGCFLAGS) that
11618 you want to negate for a particular target, you can use something like
11619 @samp{prog1_CFLAGS = $(AM_CFLAGS) -no-flag}.  If all these flags had
11620 been forcefully appended to @code{CFLAGS}, there would be no way to
11621 disable one flag.  Yet another reason to leave user variables to
11622 users.
11623
11624 Finally, we have avoided naming the variable of the example
11625 @code{LIBFOO_LDFLAGS} (with an underscore) because that would cause
11626 Automake to think that this is actually a per-target variable (like
11627 @code{mumble_LDFLAGS}) for some non-declared @code{LIBFOO} target.
11628
11629 @subheading Other Variables
11630
11631 There are other variables in Automake that follow similar principles
11632 to allow user options.  For instance, Texinfo rules (@pxref{Texinfo})
11633 use @code{MAKEINFOFLAGS} and @code{AM_MAKEINFOFLAGS}.  Similarly,
11634 DejaGnu tests (@pxref{DejaGnu Tests}) use @code{RUNTESTDEFAULTFLAGS} and
11635 @code{AM_RUNTESTDEFAULTFLAGS}.  The tags and ctags rules
11636 (@pxref{Tags}) use @code{ETAGSFLAGS}, @code{AM_ETAGSFLAGS},
11637 @code{CTAGSFLAGS}, and @code{AM_CTAGSFLAGS}.  Java rules
11638 (@pxref{Java}) use @code{JAVACFLAGS} and @code{AM_JAVACFLAGS}.  None
11639 of these rules support per-target flags (yet).
11640
11641 To some extent, even @code{AM_MAKEFLAGS} (@pxref{Subdirectories})
11642 obeys this naming scheme.  The slight difference is that
11643 @code{MAKEFLAGS} is passed to sub-@command{make}s implicitly by
11644 @command{make} itself.
11645
11646 However you should not think that all variables ending with
11647 @code{FLAGS} follow this convention.  For instance,
11648 @code{DISTCHECK_CONFIGURE_FLAGS} (@pxref{Checking the Distribution}) and
11649 @code{ACLOCAL_AMFLAGS} (see @ref{Rebuilding} and @ref{Local Macros}),
11650 are two variables that are only useful to the maintainer and have no
11651 user counterpart.
11652
11653 @code{ARFLAGS} (@pxref{A Library}) is usually defined by Automake and
11654 has neither @code{AM_} nor per-target cousin.
11655
11656 Finally you should not think that the existence of a per-target
11657 variable implies the existance of an @code{AM_} variable or of a user
11658 variable.  For instance, the @code{mumble_LDADD} per-target variable
11659 overrides the makefile-wide @code{LDADD} variable (which is not a user
11660 variable), and @code{mumble_LIBADD} exists only as a per-target
11661 variable.  @xref{Program and Library Variables}.
11662
11663
11664 @node Renamed Objects
11665 @section Why are object files sometimes renamed?
11666
11667 This happens when per-target compilation flags are used.  Object
11668 files need to be renamed just in case they would clash with object
11669 files compiled from the same sources, but with different flags.
11670 Consider the following example.
11671
11672 @example
11673 bin_PROGRAMS = true false
11674 true_SOURCES = generic.c
11675 true_CPPFLAGS = -DEXIT_CODE=0
11676 false_SOURCES = generic.c
11677 false_CPPFLAGS = -DEXIT_CODE=1
11678 @end example
11679
11680 @noindent
11681 Obviously the two programs are built from the same source, but it
11682 would be bad if they shared the same object, because @file{generic.o}
11683 cannot be built with both @samp{-DEXIT_CODE=0} @emph{and}
11684 @samp{-DEXIT_CODE=1}.  Therefore @command{automake} outputs rules to
11685 build two different objects: @file{true-generic.o} and
11686 @file{false-generic.o}.
11687
11688 @command{automake} doesn't actually look whether source files are
11689 shared to decide if it must rename objects.  It will just rename all
11690 objects of a target as soon as it sees per-target compilation flags
11691 used.
11692
11693 It's OK to share object files when per-target compilation flags are not
11694 used.  For instance, @file{true} and @file{false} will both use
11695 @file{version.o} in the following example.
11696
11697 @example
11698 AM_CPPFLAGS = -DVERSION=1.0
11699 bin_PROGRAMS = true false
11700 true_SOURCES = true.c version.c
11701 false_SOURCES = false.c version.c
11702 @end example
11703
11704 Note that the renaming of objects is also affected by the
11705 @code{_SHORTNAME} variable (@pxref{Program and Library Variables}).
11706
11707
11708 @node Per-Object Flags
11709 @section Per-Object Flags Emulation
11710 @cindex Per-object flags, emulated
11711
11712 @display
11713 One of my source files needs to be compiled with different flags.  How
11714 do I do?
11715 @end display
11716
11717 Automake supports per-program and per-library compilation flags (see
11718 @ref{Program and Library Variables} and @ref{Flag Variables
11719 Ordering}).  With this you can define compilation flags that apply to
11720 all files compiled for a target.  For instance, in
11721
11722 @example
11723 bin_PROGRAMS = foo
11724 foo_SOURCES = foo.c foo.h bar.c bar.h main.c
11725 foo_CFLAGS = -some -flags
11726 @end example
11727
11728 @noindent
11729 @file{foo-foo.o}, @file{foo-bar.o}, and @file{foo-main.o} will all be
11730 compiled with @samp{-some -flags}.  (If you wonder about the names of
11731 these object files, see @ref{Renamed Objects}.)  Note that
11732 @code{foo_CFLAGS} gives the flags to use when compiling all the C
11733 sources of the @emph{program} @code{foo}, it has nothing to do with
11734 @file{foo.c} or @file{foo-foo.o} specifically.
11735
11736 What if @file{foo.c} needs to be compiled into @file{foo.o} using some
11737 specific flags, that none of the other files requires?  Obviously
11738 per-program flags are not directly applicable here.  Something like
11739 per-object flags are expected, i.e., flags that would be used only
11740 when creating @file{foo-foo.o}.  Automake does not support that,
11741 however this is easy to simulate using a library that contains only
11742 that object, and compiling this library with per-library flags.
11743
11744 @example
11745 bin_PROGRAMS = foo
11746 foo_SOURCES = bar.c bar.h main.c
11747 foo_CFLAGS = -some -flags
11748 foo_LDADD = libfoo.a
11749 noinst_LIBRARIES = libfoo.a
11750 libfoo_a_SOURCES = foo.c foo.h
11751 libfoo_a_CFLAGS = -some -other -flags
11752 @end example
11753
11754 Here @file{foo-bar.o} and @file{foo-main.o} will all be
11755 compiled with @samp{-some -flags}, while @file{libfoo_a-foo.o} will
11756 be compiled using @samp{-some -other -flags}.  Eventually, all
11757 three objects will be linked to form @file{foo}.
11758
11759 This trick can also be achieved using Libtool convenience libraries,
11760 for instance @samp{noinst_LTLIBRARIES = libfoo.la} (@pxref{Libtool
11761 Convenience Libraries}).
11762
11763 Another tempting idea to implement per-object flags is to override the
11764 compile rules @command{automake} would output for these files.
11765 Automake will not define a rule for a target you have defined, so you
11766 could think about defining the @samp{foo-foo.o: foo.c} rule yourself.
11767 We recommend against this, because this is error prone.  For instance,
11768 if you add such a rule to the first example, it will break the day you
11769 decide to remove @code{foo_CFLAGS} (because @file{foo.c} will then be
11770 compiled as @file{foo.o} instead of @file{foo-foo.o}, @pxref{Renamed
11771 Objects}).  Also in order to support dependency tracking, the two
11772 @file{.o}/@file{.obj} extensions, and all the other flags variables
11773 involved in a compilation, you will end up modifying a copy of the
11774 rule previously output by @command{automake} for this file.  If a new
11775 release of Automake generates a different rule, your copy will need to
11776 be updated by hand.
11777
11778 @node Multiple Outputs
11779 @section Handling Tools that Produce Many Outputs
11780 @cindex multiple outputs, rules with
11781 @cindex many outputs, rules with
11782 @cindex rules with multiple outputs
11783
11784 This section describes a @command{make} idiom that can be used when a
11785 tool produces multiple output files.  It is not specific to Automake
11786 and can be used in ordinary @file{Makefile}s.
11787
11788 Suppose we have a program called @command{foo} that will read one file
11789 called @file{data.foo} and produce two files named @file{data.c} and
11790 @file{data.h}.  We want to write a @file{Makefile} rule that captures
11791 this one-to-two dependency.
11792
11793 The naive rule is incorrect:
11794
11795 @example
11796 # This is incorrect.
11797 data.c data.h: data.foo
11798         foo data.foo
11799 @end example
11800
11801 @noindent
11802 What the above rule really says is that @file{data.c} and
11803 @file{data.h} each depend on @file{data.foo}, and can each be built by
11804 running @samp{foo data.foo}.  In other words it is equivalent to:
11805
11806 @example
11807 # We do not want this.
11808 data.c: data.foo
11809         foo data.foo
11810 data.h: data.foo
11811         foo data.foo
11812 @end example
11813
11814 @noindent
11815 which means that @command{foo} can be run twice.  Usually it will not
11816 be run twice, because @command{make} implementations are smart enough
11817 to check for the existence of the second file after the first one has
11818 been built; they will therefore detect that it already exists.
11819 However there are a few situations where it can run twice anyway:
11820
11821 @itemize
11822 @item
11823 The most worrying case is when running a parallel @command{make}.  If
11824 @file{data.c} and @file{data.h} are built in parallel, two @samp{foo
11825 data.foo} commands will run concurrently.  This is harmful.
11826 @item
11827 Another case is when the dependency (here @file{data.foo}) is
11828 (or depends upon) a phony target.
11829 @end itemize
11830
11831 A solution that works with parallel @command{make} but not with
11832 phony dependencies is the following:
11833
11834 @example
11835 data.c data.h: data.foo
11836         foo data.foo
11837 data.h: data.c
11838 @end example
11839
11840 @noindent
11841 The above rules are equivalent to
11842
11843 @example
11844 data.c: data.foo
11845         foo data.foo
11846 data.h: data.foo data.c
11847         foo data.foo
11848 @end example
11849
11850 @noindent
11851 therefore a parallel @command{make} will have to serialize the builds
11852 of @file{data.c} and @file{data.h}, and will detect that the second is
11853 no longer needed once the first is over.
11854
11855 Using this pattern is probably enough for most cases.  However it does
11856 not scale easily to more output files (in this scheme all output files
11857 must be totally ordered by the dependency relation), so we will
11858 explore a more complicated solution.
11859
11860 Another idea is to write the following:
11861
11862 @example
11863 # There is still a problem with this one.
11864 data.c: data.foo
11865         foo data.foo
11866 data.h: data.c
11867 @end example
11868
11869 @noindent
11870 The idea is that @samp{foo data.foo} is run only when @file{data.c}
11871 needs to be updated, but we further state that @file{data.h} depends
11872 upon @file{data.c}.  That way, if @file{data.h} is required and
11873 @file{data.foo} is out of date, the dependency on @file{data.c} will
11874 trigger the build.
11875
11876 This is almost perfect, but suppose we have built @file{data.h} and
11877 @file{data.c}, and then we erase @file{data.h}.  Then, running
11878 @samp{make data.h} will not rebuild @file{data.h}.  The above rules
11879 just state that @file{data.c} must be up-to-date with respect to
11880 @file{data.foo}, and this is already the case.
11881
11882 What we need is a rule that forces a rebuild when @file{data.h} is
11883 missing.  Here it is:
11884
11885 @example
11886 data.c: data.foo
11887         foo data.foo
11888 data.h: data.c
11889 ## Recover from the removal of $@@
11890         @@if test -f $@@; then :; else \
11891           rm -f data.c; \
11892           $(MAKE) $(AM_MAKEFLAGS) data.c; \
11893         fi
11894 @end example
11895
11896 The above scheme can be extended to handle more outputs and more
11897 inputs.  One of the outputs is selected to serve as a witness to the
11898 successful completion of the command, it depends upon all inputs, and
11899 all other outputs depend upon it.  For instance, if @command{foo}
11900 should additionally read @file{data.bar} and also produce
11901 @file{data.w} and @file{data.x}, we would write:
11902
11903 @example
11904 data.c: data.foo data.bar
11905         foo data.foo data.bar
11906 data.h data.w data.x: data.c
11907 ## Recover from the removal of $@@
11908         @@if test -f $@@; then :; else \
11909           rm -f data.c; \
11910           $(MAKE) $(AM_MAKEFLAGS) data.c; \
11911         fi
11912 @end example
11913
11914 However there are now three minor problems in this setup.  One is related
11915 to the timestamp ordering of @file{data.h}, @file{data.w},
11916 @file{data.x}, and @file{data.c}.  Another one is a race condition
11917 if a parallel @command{make} attempts to run multiple instances of the
11918 recover block at once.  Finally, the recursive rule breaks @samp{make -n}
11919 when run with GNU @command{make} (as well as some other @command{make}
11920 implementations), as it may remove @file{data.h} even when it should not
11921 (@pxref{MAKE Variable, , How the @code{MAKE} Variable Works, make,
11922 The GNU Make Manual}).
11923
11924 Let us deal with the first problem.  @command{foo} outputs four files,
11925 but we do not know in which order these files are created.  Suppose
11926 that @file{data.h} is created before @file{data.c}.  Then we have a
11927 weird situation.  The next time @command{make} is run, @file{data.h}
11928 will appear older than @file{data.c}, the second rule will be
11929 triggered, a shell will be started to execute the @samp{if@dots{}fi}
11930 command, but actually it will just execute the @code{then} branch,
11931 that is: nothing.  In other words, because the witness we selected is
11932 not the first file created by @command{foo}, @command{make} will start
11933 a shell to do nothing each time it is run.
11934
11935 A simple riposte is to fix the timestamps when this happens.
11936
11937 @example
11938 data.c: data.foo data.bar
11939         foo data.foo data.bar
11940 data.h data.w data.x: data.c
11941         @@if test -f $@@; then \
11942           touch $@@; \
11943         else \
11944 ## Recover from the removal of $@@
11945           rm -f data.c; \
11946           $(MAKE) $(AM_MAKEFLAGS) data.c; \
11947         fi
11948 @end example
11949
11950 Another solution is to use a different and dedicated file as witness,
11951 rather than using any of @command{foo}'s outputs.
11952
11953 @example
11954 data.stamp: data.foo data.bar
11955         @@rm -f data.tmp
11956         @@touch data.tmp
11957         foo data.foo data.bar
11958         @@mv -f data.tmp $@@
11959 data.c data.h data.w data.x: data.stamp
11960 ## Recover from the removal of $@@
11961         @@if test -f $@@; then :; else \
11962           rm -f data.stamp; \
11963           $(MAKE) $(AM_MAKEFLAGS) data.stamp; \
11964         fi
11965 @end example
11966
11967 @file{data.tmp} is created before @command{foo} is run, so it has a
11968 timestamp older than output files output by @command{foo}.  It is then
11969 renamed to @file{data.stamp} after @command{foo} has run, because we
11970 do not want to update @file{data.stamp} if @command{foo} fails.
11971
11972 This solution still suffers from the second problem: the race
11973 condition in the recover rule.  If, after a successful build, a user
11974 erases @file{data.c} and @file{data.h}, and runs @samp{make -j}, then
11975 @command{make} may start both recover rules in parallel.  If the two
11976 instances of the rule execute @samp{$(MAKE) $(AM_MAKEFLAGS)
11977 data.stamp} concurrently the build is likely to fail (for instance, the
11978 two rules will create @file{data.tmp}, but only one can rename it).
11979
11980 Admittedly, such a weird situation does not arise during ordinary
11981 builds.  It occurs only when the build tree is mutilated.  Here
11982 @file{data.c} and @file{data.h} have been explicitly removed without
11983 also removing @file{data.stamp} and the other output files.
11984 @code{make clean; make} will always recover from these situations even
11985 with parallel makes, so you may decide that the recover rule is solely
11986 to help non-parallel make users and leave things as-is.  Fixing this
11987 requires some locking mechanism to ensure only one instance of the
11988 recover rule rebuilds @file{data.stamp}.  One could imagine something
11989 along the following lines.
11990
11991 @example
11992 data.c data.h data.w data.x: data.stamp
11993 ## Recover from the removal of $@@
11994         @@if test -f $@@; then :; else \
11995           trap 'rm -rf data.lock data.stamp' 1 2 13 15; \
11996 ## mkdir is a portable test-and-set
11997           if mkdir data.lock 2>/dev/null; then \
11998 ## This code is being executed by the first process.
11999             rm -f data.stamp; \
12000             $(MAKE) $(AM_MAKEFLAGS) data.stamp; \
12001             result=$$?; rm -rf data.lock; exit $$result; \
12002           else \
12003 ## This code is being executed by the follower processes.
12004 ## Wait until the first process is done.
12005             while test -d data.lock; do sleep 1; done; \
12006 ## Succeed if and only if the first process succeeded.
12007             test -f data.stamp; \
12008           fi; \
12009         fi
12010 @end example
12011
12012 Using a dedicated witness, like @file{data.stamp}, is very handy when
12013 the list of output files is not known beforehand.  As an illustration,
12014 consider the following rules to compile many @file{*.el} files into
12015 @file{*.elc} files in a single command.  It does not matter how
12016 @code{ELFILES} is defined (as long as it is not empty: empty targets
12017 are not accepted by POSIX).
12018
12019 @example
12020 ELFILES = one.el two.el three.el @dots{}
12021 ELCFILES = $(ELFILES:=c)
12022
12023 elc-stamp: $(ELFILES)
12024         @@rm -f elc-temp
12025         @@touch elc-temp
12026         $(elisp_comp) $(ELFILES)
12027         @@mv -f elc-temp $@@
12028
12029 $(ELCFILES): elc-stamp
12030         @@if test -f $@@; then :; else \
12031 ## Recover from the removal of $@@
12032           trap 'rm -rf elc-lock elc-stamp' 1 2 13 15; \
12033           if mkdir elc-lock 2>/dev/null; then \
12034 ## This code is being executed by the first process.
12035             rm -f elc-stamp; \
12036             $(MAKE) $(AM_MAKEFLAGS) elc-stamp; \
12037             rmdir elc-lock; \
12038           else \
12039 ## This code is being executed by the follower processes.
12040 ## Wait until the first process is done.
12041             while test -d elc-lock; do sleep 1; done; \
12042 ## Succeed if and only if the first process succeeded.
12043             test -f elc-stamp; exit $$?; \
12044 @c $$
12045           fi; \
12046         fi
12047 @end example
12048
12049 These solutions all still suffer from the third problem, namely that
12050 they break the promise that @samp{make -n} should not cause any actual
12051 changes to the tree.  For those solutions that do not create lock files,
12052 it is possible to split the recover rules into two separate recipe
12053 commands, one of which does all work but the recursion, and the
12054 other invokes the recursive @samp{$(MAKE)}.  The solutions involving
12055 locking could act upon the contents of the @samp{MAKEFLAGS} variable,
12056 but parsing that portably is not easy (@pxref{The Make Macro MAKEFLAGS,,,
12057 autoconf, The Autoconf Manual}).  Here is an example:
12058
12059 @example
12060 ELFILES = one.el two.el three.el @dots{}
12061 ELCFILES = $(ELFILES:=c)
12062
12063 elc-stamp: $(ELFILES)
12064         @@rm -f elc-temp
12065         @@touch elc-temp
12066         $(elisp_comp) $(ELFILES)
12067         @@mv -f elc-temp $@@
12068
12069 $(ELCFILES): elc-stamp
12070 ## Recover from the removal of $@@
12071         @@dry=; for f in x $$MAKEFLAGS; do \
12072           case $$f in \
12073             *=*|--*);; \
12074             *n*) dry=:;; \
12075           esac; \
12076         done; \
12077         if test -f $@@; then :; else \
12078           $$dry trap 'rm -rf elc-lock elc-stamp' 1 2 13 15; \
12079           if $$dry mkdir elc-lock 2>/dev/null; then \
12080 ## This code is being executed by the first process.
12081             $$dry rm -f elc-stamp; \
12082             $(MAKE) $(AM_MAKEFLAGS) elc-stamp; \
12083             $$dry rmdir elc-lock; \
12084           else \
12085 ## This code is being executed by the follower processes.
12086 ## Wait until the first process is done.
12087             while test -d elc-lock && test -z "$$dry"; do \
12088 @c $$
12089               sleep 1; \
12090             done; \
12091 ## Succeed if and only if the first process succeeded.
12092             $$dry test -f elc-stamp; exit $$?; \
12093           fi; \
12094         fi
12095 @end example
12096
12097 For completeness it should be noted that GNU @command{make} is able to
12098 express rules with multiple output files using pattern rules
12099 (@pxref{Pattern Examples, , Pattern Rule Examples, make, The GNU Make
12100 Manual}).  We do not discuss pattern rules here because they are not
12101 portable, but they can be convenient in packages that assume GNU
12102 @command{make}.
12103
12104
12105 @node Hard-Coded Install Paths
12106 @section Installing to Hard-Coded Locations
12107
12108 @display
12109 My package needs to install some configuration file.  I tried to use
12110 the following rule, but @samp{make distcheck} fails.  Why?
12111
12112 @example
12113 # Do not do this.
12114 install-data-local:
12115         $(INSTALL_DATA) $(srcdir)/afile $(DESTDIR)/etc/afile
12116 @end example
12117 @end display
12118
12119 @display
12120 My package needs to populate the installation directory of another
12121 package at install-time.  I can easily compute that installation
12122 directory in @file{configure}, but if I install files therein,
12123 @samp{make distcheck} fails.  How else should I do?
12124 @end display
12125
12126 These two setups share their symptoms: @samp{make distcheck} fails
12127 because they are installing files to hard-coded paths.  In the later
12128 case the path is not really hard-coded in the package, but we can
12129 consider it to be hard-coded in the system (or in whichever tool that
12130 supplies the path).  As long as the path does not use any of the
12131 standard directory variables (@samp{$(prefix)}, @samp{$(bindir)},
12132 @samp{$(datadir)}, etc.), the effect will be the same:
12133 user-installations are impossible.
12134
12135 As a (non-root) user who wants to install a package, you usually have no
12136 right to install anything in @file{/usr} or @file{/usr/local}.  So you
12137 do something like @samp{./configure --prefix ~/usr} to install a
12138 package in your own @file{~/usr} tree.
12139
12140 If a package attempts to install something to some hard-coded path
12141 (e.g., @file{/etc/afile}), regardless of this @option{--prefix} setting,
12142 then the installation will fail.  @samp{make distcheck} performs such
12143 a @option{--prefix} installation, hence it will fail too.
12144
12145 Now, there are some easy solutions.
12146
12147 The above @code{install-data-local} example for installing
12148 @file{/etc/afile} would be better replaced by
12149
12150 @example
12151 sysconf_DATA = afile
12152 @end example
12153
12154 @noindent
12155 by default @code{sysconfdir} will be @samp{$(prefix)/etc}, because
12156 this is what the GNU Standards require.  When such a package is
12157 installed on an FHS compliant system, the installer will have to set
12158 @samp{--sysconfdir=/etc}.  As the maintainer of the package you
12159 should not be concerned by such site policies: use the appropriate
12160 standard directory variable to install your files so that the installer
12161 can easily redefine these variables to match their site conventions.
12162
12163 Installing files that should be used by another package is slightly
12164 more involved.  Let's take an example and assume you want to install
12165 a shared library that is a Python extension module.  If you ask Python
12166 where to install the library, it will answer something like this:
12167
12168 @example
12169 % @kbd{python -c 'from distutils import sysconfig;
12170              print sysconfig.get_python_lib(1,0)'}
12171 /usr/lib/python2.5/site-packages
12172 @end example
12173
12174 If you indeed use this absolute path to install your shared library,
12175 non-root users will not be able to install the package, hence
12176 distcheck fails.
12177
12178 Let's do better.  The @samp{sysconfig.get_python_lib()} function
12179 actually accepts a third argument that will replace Python's
12180 installation prefix.
12181
12182 @example
12183 % @kbd{python -c 'from distutils import sysconfig;
12184              print sysconfig.get_python_lib(1,0,"$@{exec_prefix@}")'}
12185 $@{exec_prefix@}/lib/python2.5/site-packages
12186 @end example
12187
12188 You can also use this new path.  If you do
12189 @itemize @bullet
12190 @item
12191 root users can install your package with the same @option{--prefix}
12192 as Python (you get the behavior of the previous attempt)
12193
12194 @item
12195 non-root users can install your package too, they will have the
12196 extension module in a place that is not searched by Python but they
12197 can work around this using environment variables (and if you installed
12198 scripts that use this shared library, it's easy to tell Python were to
12199 look in the beginning of your script, so the script works in both
12200 cases).
12201 @end itemize
12202
12203 The @code{AM_PATH_PYTHON} macro uses similar commands to define
12204 @samp{$(pythondir)} and @samp{$(pyexecdir)} (@pxref{Python}).
12205
12206 Of course not all tools are as advanced as Python regarding that
12207 substitution of @var{prefix}.  So another strategy is to figure the
12208 part of the installation directory that must be preserved.  For
12209 instance, here is how @code{AM_PATH_LISPDIR} (@pxref{Emacs Lisp})
12210 computes @samp{$(lispdir)}:
12211
12212 @example
12213 $EMACS -batch -q -eval '(while load-path
12214   (princ (concat (car load-path) "\n"))
12215   (setq load-path (cdr load-path)))' >conftest.out
12216 lispdir=`sed -n
12217   -e 's,/$,,'
12218   -e '/.*\/lib\/x*emacs\/site-lisp$/@{
12219         s,.*/lib/\(x*emacs/site-lisp\)$,$@{libdir@}/\1,;p;q;
12220       @}'
12221   -e '/.*\/share\/x*emacs\/site-lisp$/@{
12222         s,.*/share/\(x*emacs/site-lisp\),$@{datarootdir@}/\1,;p;q;
12223       @}'
12224   conftest.out`
12225 @end example
12226
12227 I.e., it just picks the first directory that looks like
12228 @file{*/lib/*emacs/site-lisp} or @file{*/share/*emacs/site-lisp} in
12229 the search path of emacs, and then substitutes @samp{$@{libdir@}} or
12230 @samp{$@{datadir@}} appropriately.
12231
12232 The emacs case looks complicated because it processes a list and
12233 expects two possible layouts, otherwise it's easy, and the benefits for
12234 non-root users are really worth the extra @command{sed} invocation.
12235
12236
12237 @node Debugging Make Rules
12238 @section Debugging Make Rules
12239 @cindex debugging rules
12240 @cindex rules, debugging
12241
12242 The rules and dependency trees generated by @command{automake} can get
12243 rather complex, and leave the developer head-scratching when things
12244 don't work as expected.  Besides the debug options provided by the
12245 @command{make} command (@pxref{Options Summary,,, make, The GNU Make
12246 Manual}), here's a couple of further hints for debugging makefiles
12247 generated by @command{automake} effectively:
12248
12249 @itemize
12250 @item
12251 If less verbose output has been enabled in the package with the
12252 @samp{silent-rules} option (@pxref{Options}), you can use
12253 @code{make V=1} to see the commands being executed.
12254 @item
12255 @code{make -n} can help show what would be done without actually doing
12256 it.  Note however, that this will @emph{still execute} commands prefixed
12257 with @samp{+}, and, when using GNU @command{make}, commands that contain
12258 the strings @samp{$(MAKE)} or @samp{$@{MAKE@}} (@pxref{Instead of
12259 Execution,,, make, The GNU Make Manual}).
12260 Typically, this is helpful to show what recursive rules would do, but it
12261 means that, in your own rules, you should not mix such recursion with
12262 actions that change any files.@footnote{Automake's @samp{dist} and
12263 @samp{distcheck} rules had a bug in this regard in that they created
12264 directories even with @option{-n}, but this has been fixed in Automake
12265 1.11.}  Furthermore, note that GNU @command{make} will update
12266 prerequisites for the @file{Makefile} file itself even with @option{-n}
12267 (@pxref{Remaking Makefiles,,, make, The GNU Make Manual}).
12268 @item
12269 @code{make SHELL="/bin/bash -vx"} can help debug complex rules.
12270 @xref{The Make Macro SHELL,,, autoconf, The Autoconf Manual}, for some
12271 portability quirks associated with this construct.
12272 @item
12273 @code{echo 'print: ; @@echo "$(VAR)"' | make -f Makefile -f - print}
12274 can be handy to examine the expanded value of variables.  You may need
12275 to use a target other than @samp{print} if that is already used or a
12276 file with that name exists.
12277 @item
12278 @url{http://bashdb.sourceforge.net/@/remake/} provides a modified
12279 GNU @command{make} command called @command{remake} that copes with
12280 complex GNU @command{make}-specific Makefiles and allows to trace
12281 execution, examine variables, and call rules interactively, much like
12282 a debugger.
12283 @end itemize
12284
12285
12286 @node Reporting Bugs
12287 @section Reporting Bugs
12288
12289 Most nontrivial software has bugs.  Automake is no exception.  Although
12290 we cannot promise we can or will fix a bug, and we might not even agree
12291 that it is a bug, we want to hear about problems you encounter. Often we
12292 agree they are bugs and want to fix them.
12293
12294 To make it possible for us to fix a bug, please report it. In order to
12295 do so effectively, it helps to know when and how to do it.
12296
12297 Before reporting a bug, it is a good idea to see if it is already known.
12298 You can look at the @uref{http://debbugs.gnu.org/, GNU Bug Tracker}
12299 and the @uref{http://lists.gnu.org/@/archive/@/html/@/bug-automake/,
12300 bug-automake mailing list archives} for previous bug reports.  We
12301 previously used a
12302 @uref{http://sourceware.org/@/cgi-bin/@/gnatsweb.pl?database=automake,
12303 Gnats database} for bug tracking, so some bugs might have been reported
12304 there already.  Please do not use it for new bug reports, however.
12305
12306 If the bug is not already known, it should be reported.  It is very
12307 important to report bugs in a way that is useful and efficient.  For
12308 this, please familiarize yourself with
12309 @uref{http://www.chiark.greenend.org.uk/@/~sgtatham/@/bugs.html, How to
12310 Report Bugs Effectively} and
12311 @uref{http://catb.org/@/~esr/@/faqs/@/smart-questions.html, How to Ask
12312 Questions the Smart Way}.  This helps you and developers to save time
12313 which can then be spent on fixing more bugs and implementing more
12314 features.
12315
12316 For a bug report, a feature request or other suggestions, please send
12317 email to @email{@value{PACKAGE_BUGREPORT}}.  This will then open a new
12318 bug in the @uref{http://debbugs.gnu.org/@/automake, bug tracker}.  Be
12319 sure to include the versions of Autoconf and Automake that you use.
12320 Ideally, post a minimal @file{Makefile.am} and @file{configure.ac} that
12321 reproduces the problem you encounter.  If you have encountered test
12322 suite failures, please attach the @file{tests/test-suite.log} file.
12323
12324
12325 @node History
12326 @chapter History of Automake
12327
12328 This chapter presents various aspects of the history of Automake.  The
12329 exhausted reader can safely skip it; this will be more of interest to
12330 nostalgic people, or to those curious to learn about the evolution of
12331 Automake.
12332
12333 @menu
12334 * Timeline::                    The Automake story.
12335 * Dependency Tracking Evolution::  Evolution of Automatic Dependency Tracking
12336 * Releases::                    Statistics about Automake Releases
12337 @end menu
12338
12339 @node Timeline
12340 @section Timeline
12341
12342 @table @asis
12343 @item 1994-09-19 First CVS commit.
12344
12345 If we can trust the CVS repository, David J.@tie{}MacKenzie (djm) started
12346 working on Automake (or AutoMake, as it was spelt then) this Monday.
12347
12348 The first version of the @command{automake} script looks as follows.
12349
12350 @example
12351 #!/bin/sh
12352
12353 status=0
12354
12355 for makefile
12356 do
12357   if test ! -f $@{makefile@}.am; then
12358     echo "automake: $@{makefile@}.am: No such honkin' file"
12359     status=1
12360     continue
12361   fi
12362
12363   exec 4> $@{makefile@}.in
12364
12365 done
12366 @end example
12367
12368 From this you can already see that Automake will be about reading
12369 @file{*.am} file and producing @file{*.in} files.  You cannot see
12370 anything else, but if you also know that David is the one who created
12371 Autoconf two years before you can guess the rest.
12372
12373 Several commits follow, and by the end of the day Automake is
12374 reported to work for GNU fileutils and GNU m4.
12375
12376 The modus operandi is the one that is still used today: variable
12377 assignments in @file{Makefile.am} files trigger injections of
12378 precanned @file{Makefile} fragments into the generated
12379 @file{Makefile.in}.  The use of @file{Makefile} fragments was inspired
12380 by the 4.4BSD @command{make} and include files, however Automake aims
12381 to be portable and to conform to the GNU standards for @file{Makefile}
12382 variables and targets.
12383
12384 At this point, the most recent release of Autoconf is version 1.11,
12385 and David is preparing to release Autoconf 2.0 in late October.  As a
12386 matter of fact, he will barely touch Automake after September.
12387
12388 @item 1994-11-05 David MacKenzie's last commit.
12389
12390 At this point Automake is a 200 line portable shell script, plus 332
12391 lines of @file{Makefile} fragments.  In the @file{README}, David
12392 states his ambivalence between ``portable shell'' and ``more
12393 appropriate language'':
12394
12395 @quotation
12396 I wrote it keeping in mind the possibility of it becoming an Autoconf
12397 macro, so it would run at configure-time.  That would slow
12398 configuration down a bit, but allow users to modify the Makefile.am
12399 without needing to fetch the AutoMake package.  And, the Makefile.in
12400 files wouldn't need to be distributed.  But all of AutoMake would.  So
12401 I might reimplement AutoMake in Perl, m4, or some other more
12402 appropriate language.
12403 @end quotation
12404
12405 Automake is described as ``an experimental Makefile generator''.
12406 There is no documentation.  Adventurous users are referred to the
12407 examples and patches needed to use Automake with GNU m4 1.3, fileutils
12408 3.9, time 1.6, and development versions of find and indent.
12409
12410 These examples seem to have been lost.  However at the time of writing
12411 (10 years later in September, 2004) the FSF still distributes a
12412 package that uses this version of Automake: check out GNU termutils
12413 2.0.
12414
12415 @item 1995-11-12 Tom Tromey's first commit.
12416
12417 After one year of inactivity, Tom Tromey takes over the package.
12418 Tom was working on GNU cpio back then, and doing this just for fun,
12419 having trouble finding a project to contribute to.  So while hacking
12420 he wanted to bring the @file{Makefile.in} up to GNU standards.  This
12421 was hard, and one day he saw Automake on @url{ftp://alpha.gnu.org/},
12422 grabbed it and tried it out.
12423
12424 Tom didn't talk to djm about it until later, just to make sure he
12425 didn't mind if he made a release.  He did a bunch of early releases to
12426 the Gnits folks.
12427
12428 Gnits was (and still is) totally informal, just a few GNU friends who
12429 Fran@,cois Pinard knew, who were all interested in making a common
12430 infrastructure for GNU projects, and shared a similar outlook on how
12431 to do it.  So they were able to make some progress.  It came along
12432 with Autoconf and extensions thereof, and then Automake from David and
12433 Tom (who were both gnitsians).  One of their ideas was to write a
12434 document paralleling the GNU standards, that was more strict in some
12435 ways and more detailed.  They never finished the GNITS standards, but
12436 the ideas mostly made their way into Automake.
12437
12438 @item 1995-11-23 Automake 0.20
12439
12440 Besides introducing automatic dependency tracking (@pxref{Dependency
12441 Tracking Evolution}), this version also supplies a 9-page manual.
12442
12443 At this time @command{aclocal} and @code{AM_INIT_AUTOMAKE} did not
12444 exist, so many things had to be done by hand.  For instance, here is
12445 what a configure.in (this is the former name of the
12446 @file{configure.ac} we use today) must contain in order to use
12447 Automake 0.20:
12448
12449 @example
12450 PACKAGE=cpio
12451 VERSION=2.3.911
12452 AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE")
12453 AC_DEFINE_UNQUOTED(VERSION, "$VERSION")
12454 AC_SUBST(PACKAGE)
12455 AC_SUBST(VERSION)
12456 AC_ARG_PROGRAM
12457 AC_PROG_INSTALL
12458 @end example
12459
12460 (Today all of the above is achieved by @code{AC_INIT} and
12461 @code{AM_INIT_AUTOMAKE}.)
12462
12463 Here is how programs are specified in @file{Makefile.am}:
12464
12465 @example
12466 PROGRAMS = hello
12467 hello_SOURCES = hello.c
12468 @end example
12469
12470 This looks pretty much like what we do today, except the
12471 @code{PROGRAMS} variable has no directory prefix specifying where
12472 @file{hello} should be installed: all programs are installed in
12473 @samp{$(bindir)}.  @code{LIBPROGRAMS} can be used to specify programs
12474 that must be built but not installed (it is called
12475 @code{noinst_PROGRAMS} nowadays).
12476
12477 Programs can be built conditionally using @code{AC_SUBST}itutions:
12478
12479 @example
12480 PROGRAMS = @@progs@@
12481 AM_PROGRAMS = foo bar baz
12482 @end example
12483
12484 (@code{AM_PROGRAMS} has since then been renamed to
12485 @code{EXTRA_PROGRAMS}.)
12486
12487 Similarly scripts, static libraries, and data can be built and installed
12488 using the @code{LIBRARIES}, @code{SCRIPTS}, and @code{DATA} variables.
12489 However @code{LIBRARIES} were treated a bit specially in that Automake
12490 did automatically supply the @file{lib} and @file{.a} prefixes.
12491 Therefore to build @file{libcpio.a}, one had to write
12492
12493 @example
12494 LIBRARIES = cpio
12495 cpio_SOURCES = ...
12496 @end example
12497
12498 Extra files to distribute must be listed in @code{DIST_OTHER} (the
12499 ancestor of @code{EXTRA_DIST}).  Also extra directories that are to be
12500 distributed should appear in @code{DIST_SUBDIRS}, but the manual
12501 describes this as a temporary ugly hack (today extra directories should
12502 also be listed in @code{EXTRA_DIST}, and @code{DIST_SUBDIRS} is used
12503 for another purpose, @pxref{Conditional Subdirectories}).
12504
12505 @item 1995-11-26 Automake 0.21
12506
12507 In less time than it takes to cook a frozen pizza, Tom rewrites
12508 Automake using Perl.  At this time Perl 5 is only one year old, and
12509 Perl 4.036 is in use at many sites.  Supporting several Perl versions
12510 has been a source of problems through the whole history of Automake.
12511
12512 If you never used Perl 4, imagine Perl 5 without objects, without
12513 @samp{my} variables (only dynamically scoped @samp{local} variables),
12514 without function prototypes, with function calls that needs to be
12515 prefixed with @samp{&}, etc.  Traces of this old style can still be
12516 found in today's @command{automake}.
12517
12518 @item 1995-11-28 Automake 0.22
12519 @itemx 1995-11-29 Automake 0.23
12520
12521 Bug fixes.
12522
12523 @item 1995-12-08 Automake 0.24
12524 @itemx 1995-12-10 Automake 0.25
12525
12526 Releases are raining.  0.24 introduces the uniform naming scheme we
12527 use today, i.e., @code{bin_PROGRAMS} instead of @code{PROGRAMS},
12528 @code{noinst_LIBRARIES} instead of @code{LIBLIBRARIES}, etc.  (However
12529 @code{EXTRA_PROGRAMS} does not exist yet, @code{AM_PROGRAMS} is still
12530 in use; and @code{TEXINFOS} and @code{MANS} still have no directory
12531 prefixes.)  Adding support for prefixes like that was one of the major
12532 ideas in @command{automake}; it has lasted pretty well.
12533
12534 AutoMake is renamed to Automake (Tom seems to recall it was Fran@,cois
12535 Pinard's doing).
12536
12537 0.25 fixes a Perl 4 portability bug.
12538
12539 @item 1995-12-18 Jim Meyering starts using Automake in GNU Textutils.
12540 @item 1995-12-31 Fran@,cois Pinard starts using Automake in GNU tar.
12541
12542 @item 1996-01-03 Automake 0.26
12543 @itemx 1996-01-03 Automake 0.27
12544
12545 Of the many changes and suggestions sent by Fran@,cois Pinard and
12546 included in 0.26, perhaps the most important is the advice that to
12547 ease customization a user rule or variable definition should always
12548 override an Automake rule or definition.
12549
12550 Gordon Matzigkeit and Jim Meyering are two other early contributors
12551 that have been sending fixes.
12552
12553 0.27 fixes yet another Perl 4 portability bug.
12554
12555 @item 1996-01-13 Automake 0.28
12556
12557 Automake starts scanning @file{configure.in} for @code{LIBOBJS}
12558 support.  This is an important step because until this version
12559 Automake only knew about the @file{Makefile.am}s it processed.
12560 @file{configure.in} was Autoconf's world and the link between Autoconf
12561 and Automake had to be done by the @file{Makefile.am} author.  For
12562 instance, if @file{config.h} was generated by @file{configure}, it was the
12563 package maintainer's responsibility to define the @code{CONFIG_HEADER}
12564 variable in each @file{Makefile.am}.
12565
12566 Succeeding releases will rely more and more on scanning
12567 @file{configure.in} to better automate the Autoconf integration.
12568
12569 0.28 also introduces the @code{AUTOMAKE_OPTIONS} variable and the
12570 @option{--gnu} and @option{--gnits} options, the latter being stricter.
12571
12572 @item 1996-02-07 Automake 0.29
12573
12574 Thanks to @file{configure.in} scanning, @code{CONFIG_HEADER} is gone,
12575 and rebuild rules for @file{configure}-generated file are
12576 automatically output.
12577
12578 @code{TEXINFOS} and @code{MANS} converted to the uniform naming
12579 scheme.
12580
12581 @item 1996-02-24 Automake 0.30
12582
12583 The test suite is born.  It contains 9 tests.  From now on test cases
12584 will be added pretty regularly (@pxref{Releases}), and this proved to
12585 be really helpful later on.
12586
12587 @code{EXTRA_PROGRAMS} finally replaces @code{AM_PROGRAMS}.
12588
12589 All the third-party Autoconf macros, written mostly by Fran@,cois
12590 Pinard (and later Jim Meyering), are distributed in Automake's
12591 hand-written @file{aclocal.m4} file.  Package maintainers are expected
12592 to extract the necessary macros from this file.  (In previous versions
12593 you had to copy and paste them from the manual...)
12594
12595 @item 1996-03-11 Automake 0.31
12596
12597 The test suite in 0.30 was run via a long @code{check-local} rule.  Upon
12598 Ulrich Drepper's suggestion, 0.31 makes it an Automake rule output
12599 whenever the @code{TESTS} variable is defined.
12600
12601 @code{DIST_OTHER} is renamed to @code{EXTRA_DIST}, and the @code{check_}
12602 prefix is introduced.  The syntax is now the same as today.
12603
12604 @item 1996-03-15 Gordon Matzigkeit starts writing libtool.
12605
12606 @item 1996-04-27 Automake 0.32
12607
12608 @code{-hook} targets are introduced; an idea from Dieter Baron.
12609
12610 @file{*.info} files, which were output in the build directory are
12611 now built in the source directory, because they are distributed.  It
12612 seems these files like to move back and forth as that will happen
12613 again in future versions.
12614
12615 @item 1996-05-18 Automake 0.33
12616
12617 Gord Matzigkeit's main two contributions:
12618
12619 @itemize
12620 @item very preliminary libtool support
12621 @item the distcheck rule
12622 @end itemize
12623
12624 Although they were very basic at this point, these are probably
12625 among the top features for Automake today.
12626
12627 Jim Meyering also provides the infamous @code{jm_MAINTAINER_MODE},
12628 since then renamed to @code{AM_MAINTAINER_MODE} and abandoned by its
12629 author (@pxref{maintainer-mode}).
12630
12631 @item 1996-05-28 Automake 1.0
12632
12633 After only six months of heavy development, the @command{automake} script is
12634 3134 lines long, plus 973 lines of @file{Makefile} fragments.  The
12635 package has 30 pages of documentation, and 38 test cases.
12636 @file{aclocal.m4} contains 4 macros.
12637
12638 From now on and until version 1.4, new releases will occur at a rate
12639 of about one a year.  1.1 did not exist, actually 1.1b to 1.1p have
12640 been the name of beta releases for 1.2.  This is the first time
12641 Automake uses suffix letters to designate beta releases, a habit that
12642 lasts.
12643
12644 @item 1996-10-10 Kevin Dalley packages Automake 1.0 for Debian GNU/Linux.
12645
12646 @item 1996-11-26 David J.@tie{}MacKenzie releases Autoconf 2.12.
12647
12648 Between June and October, the Autoconf development is almost stalled.
12649 Roland McGrath has been working at the beginning of the year.  David
12650 comes back in November to release 2.12, but he won't touch Autoconf
12651 anymore after this year, and Autoconf then really stagnates.  The
12652 desolate Autoconf @file{ChangeLog} for 1997 lists only 7 commits.
12653
12654 @item 1997-02-28 @email{automake@@gnu.ai.mit.edu} list alive
12655
12656 The mailing list is announced as follows:
12657 @smallexample
12658 I've created the "automake" mailing list.  It is
12659 "automake@@gnu.ai.mit.edu".  Administrivia, as always, to
12660 automake-request@@gnu.ai.mit.edu.
12661
12662 The charter of this list is discussion of automake, autoconf, and
12663 other configuration/portability tools (e.g., libtool).  It is expected
12664 that discussion will range from pleas for help all the way up to
12665 patches.
12666
12667 This list is archived on the FSF machines.  Offhand I don't know if
12668 you can get the archive without an account there.
12669
12670 This list is open to anybody who wants to join.  Tell all your
12671 friends!
12672 -- Tom Tromey
12673 @end smallexample
12674
12675 Before that people were discussing Automake privately, on the Gnits
12676 mailing list (which is not public either), and less frequently on
12677 @code{gnu.misc.discuss}.
12678
12679 @code{gnu.ai.mit.edu} is now @code{gnu.org}, in case you never
12680 noticed.  The archives of the early years of the
12681 @code{automake@@gnu.org} list have been lost, so today it is almost
12682 impossible to find traces of discussions that occurred before 1999.
12683 This has been annoying more than once, as such discussions can be
12684 useful to understand the rationale behind a piece of uncommented code
12685 that was introduced back then.
12686
12687 @item 1997-06-22 Automake 1.2
12688
12689 Automake developments continues, and more and more new Autoconf macros
12690 are required.  Distributing them in @file{aclocal.m4} and requiring
12691 people to browse this file to extract the relevant macros becomes
12692 uncomfortable.  Ideally, some of them should be contributed to
12693 Autoconf so that they can be used directly, however Autoconf is
12694 currently inactive.  Automake 1.2 consequently introduces
12695 @command{aclocal} (@command{aclocal} was actually started on
12696 1996-07-28), a tool that automatically constructs an @file{aclocal.m4}
12697 file from a repository of third-party macros.  Because Autoconf has
12698 stalled, Automake also becomes a kind of repository for such
12699 third-party macros, even macros completely unrelated to Automake (for
12700 instance macros that fix broken Autoconf macros).
12701
12702 The 1.2 release contains 20 macros, including the
12703 @code{AM_INIT_AUTOMAKE} macro that simplifies the creation of
12704 @file{configure.in}.
12705
12706 Libtool is fully supported using @code{*_LTLIBRARIES}.
12707
12708 The missing script is introduced by Fran@,cois Pinard; it is meant to be
12709 a better solution than @code{AM_MAINTAINER_MODE}
12710 (@pxref{maintainer-mode}).
12711
12712 Conditionals support was implemented by Ian Lance Taylor.  At the
12713 time, Tom and Ian were working on an internal project at Cygnus.  They
12714 were using ILU, which is pretty similar to CORBA@.  They wanted to
12715 integrate ILU into their build, which was all @file{configure}-based,
12716 and Ian thought that adding conditionals to @command{automake} was
12717 simpler than doing all the work in @file{configure} (which was the
12718 standard at the time).  So this was actually funded by Cygnus.
12719
12720 This very useful but tricky feature will take a lot of time to
12721 stabilize.  (At the time this text is written, there are still
12722 primaries that have not been updated to support conditional
12723 definitions in Automake 1.9.)
12724
12725 The @command{automake} script has almost doubled: 6089 lines of Perl,
12726 plus 1294 lines of @file{Makefile} fragments.
12727
12728 @item 1997-07-08 Gordon Matzigkeit releases Libtool 1.0.
12729
12730 @item 1998-04-05 Automake 1.3
12731
12732 This is a small advance compared to 1.2.
12733 It adds support for assembly, and preliminary support for Java.
12734
12735 Perl 5.004_04 is out, but fixes to support Perl 4 are still
12736 regularly submitted whenever Automake breaks it.
12737
12738 @item 1998-09-06 @code{sourceware.cygnus.com} is on-line.
12739
12740 Sourceware was setup by Jason Molenda to host open source projects.
12741
12742 @item 1998-09-19  Automake CVS repository moved to @code{sourceware.cygnus.com}
12743 @itemx 1998-10-26  @code{sourceware.cygnus.com} announces it hosts Automake:
12744 Automake is now hosted on @code{sourceware.cygnus.com}.  It has a
12745 publicly accessible CVS repository.  This CVS repository is a copy of
12746 the one Tom was using on his machine, which in turn is based on
12747 a copy of the CVS repository of David MacKenzie.  This is why we still
12748 have to full source history.  (Automake was on Sourceware until 2007-10-29,
12749 when it moved to a git repository on @code{savannah.gnu.org},
12750 but the Sourceware host had been renamed to @code{sources.redhat.com}.)
12751
12752 The oldest file in the administrative directory of the CVS repository
12753 that was created on Sourceware is dated 1998-09-19, while the
12754 announcement that @command{automake} and @command{autoconf} had joined
12755 @command{sourceware} was made on 1998-10-26.  They were among the
12756 first projects to be hosted there.
12757
12758 The heedful reader will have noticed Automake was exactly 4 years old
12759 on 1998-09-19.
12760
12761 @item 1999-01-05 Ben Elliston releases Autoconf 2.13.
12762
12763 @item 1999-01-14 Automake 1.4
12764
12765 This release adds support for Fortran 77 and for the @code{include}
12766 statement.  Also, @samp{+=} assignments are introduced, but it is
12767 still quite easy to fool Automake when mixing this with conditionals.
12768
12769 These two releases, Automake 1.4 and Autoconf 2.13 make a duo that
12770 will be used together for years.
12771
12772 @command{automake} is 7228 lines, plus 1591 lines of Makefile
12773 fragment, 20 macros (some 1.3 macros were finally contributed back to
12774 Autoconf), 197 test cases, and 51 pages of documentation.
12775
12776 @item 1999-03-27 The @code{user-dep-branch} is created on the CVS repository.
12777
12778 This implements a new dependency tracking schemed that should be
12779 able to handle automatic dependency tracking using any compiler (not
12780 just gcc) and any make (not just GNU @command{make}).  In addition,
12781 the new scheme should be more reliable than the old one, as
12782 dependencies are generated on the end user's machine.  Alexandre Oliva
12783 creates depcomp for this purpose.
12784
12785 @xref{Dependency Tracking Evolution}, for more details about the
12786 evolution of automatic dependency tracking in Automake.
12787
12788 @item 1999-11-21 The @code{user-dep-branch} is merged into the main trunk.
12789
12790 This was a huge problem since we also had patches going in on the
12791 trunk.  The merge took a long time and was very painful.
12792
12793 @item 2000-05-10
12794
12795 Since September 1999 and until 2003, Akim Demaille will be zealously
12796 revamping Autoconf.
12797
12798 @quotation
12799 I think the next release should be called "3.0".@*
12800 Let's face it: you've basically rewritten autoconf.@*
12801 Every weekend there are 30 new patches.@*
12802 I don't see how we could call this "2.15" with a straight face.@*
12803 -- Tom Tromey on @email{autoconf@@gnu.org}
12804 @end quotation
12805
12806 Actually Akim works like a submarine: he will pile up patches while he
12807 works off-line during the weekend, and flush them in batch when he
12808 resurfaces on Monday.
12809
12810 @item 2001-01-24
12811
12812 On this Wednesday, Autoconf 2.49c, the last beta before Autoconf 2.50
12813 is out, and Akim has to find something to do during his week-end :)
12814
12815 @item 2001-01-28
12816
12817 Akim sends a batch of 14 patches to @email{automake@@gnu.org}.
12818
12819 @quotation
12820 Aiieeee!  I was dreading the day that the Demaillator turned his
12821 sights on automake@dots{} and now it has arrived! -- Tom Tromey
12822 @end quotation
12823
12824 It's only the beginning: in two months he will send 192 patches.  Then
12825 he would slow down so Tom can catch up and review all this.  Initially
12826 Tom actually read all these patches, then he probably trustingly
12827 answered OK to most of them, and finally gave up and let Akim apply
12828 whatever he wanted.  There was no way to keep up with that patch rate.
12829
12830 @quotation
12831 Anyway the patch below won't apply since it predates Akim's
12832 sourcequake; I have yet to figure where the relevant passage has
12833 been moved :) -- Alexandre Duret-Lutz
12834 @end quotation
12835
12836 All these patches were sent to and discussed on
12837 @email{automake@@gnu.org}, so subscribed users were literally drowning in
12838 technical mails.  Eventually, the @email{automake-patches@@gnu.org}
12839 mailing list was created in May.
12840
12841 Year after year, Automake had drifted away from its initial design:
12842 construct @file{Makefile.in} by assembling various @file{Makefile}
12843 fragments.  In 1.4, lots of @file{Makefile} rules are being emitted at
12844 various places in the @command{automake} script itself; this does not
12845 help ensuring a consistent treatment of these rules (for instance
12846 making sure that user-defined rules override Automake's own rules).
12847 One of Akim's goal was moving all these hard-coded rules to separate
12848 @file{Makefile} fragments, so the logic could be centralized in a
12849 @file{Makefile} fragment processor.
12850
12851 Another significant contribution of Akim is the interface with the
12852 ``trace'' feature of Autoconf.  The way to scan @file{configure.in} at
12853 this time was to read the file and grep the various macro of interest
12854 to Automake.  Doing so could break in many unexpected ways; @command{automake}
12855 could miss some definition (for instance @samp{AC_SUBST([$1], [$2])}
12856 where the arguments are known only when M4 is run), or conversely it
12857 could detect some macro that was not expanded (because it is called
12858 conditionally).  In the CVS version of Autoconf, Akim had implemented
12859 the @option{--trace} option, which provides accurate information about
12860 where macros are actually called and with what arguments.  Akim will
12861 equip Automake with a second @file{configure.in} scanner that uses
12862 this @option{--trace} interface.  Since it was not sensible to drop the
12863 Autoconf 2.13 compatibility yet, this experimental scanner was only
12864 used when an environment variable was set, the traditional
12865 grep-scanner being still the default.
12866
12867 @item 2001-04-25 Gary V.@tie{}Vaughan releases Libtool 1.4
12868
12869 It has been more than two years since Automake 1.4, CVS Automake has
12870 suffered lot's of heavy changes and still is not ready for release.
12871 Libtool 1.4 had to be distributed with a patch against Automake 1.4.
12872
12873 @item 2001-05-08 Automake 1.4-p1
12874 @itemx 2001-05-24 Automake 1.4-p2
12875
12876 Gary V.@tie{}Vaughan, the principal Libtool maintainer, makes a ``patch
12877 release'' of Automake:
12878
12879 @quotation
12880 The main purpose of this release is to have a stable automake
12881 which is compatible with the latest stable libtool.
12882 @end quotation
12883
12884 The release also contains obvious fixes for bugs in Automake 1.4,
12885 some of which were reported almost monthly.
12886
12887 @item 2001-05-21 Akim Demaille releases Autoconf 2.50
12888
12889 @item 2001-06-07 Automake 1.4-p3
12890 @itemx 2001-06-10 Automake 1.4-p4
12891 @itemx 2001-07-15 Automake 1.4-p5
12892
12893 Gary continues his patch-release series.  These also add support for
12894 some new Autoconf 2.50 idioms.  Essentially, Autoconf now advocates
12895 @file{configure.ac} over @file{configure.in}, and it introduces a new
12896 syntax for @code{AC_OUTPUT}ing files.
12897
12898 @item 2001-08-23 Automake 1.5
12899
12900 A major and long-awaited release, that comes more than two years after
12901 1.4.  It brings many changes, among which:
12902 @itemize
12903 @item The new dependency tracking scheme that uses @command{depcomp}.
12904 Aside from the improvement on the dependency tracking itself
12905 (@pxref{Dependency Tracking Evolution}), this also streamlines the use
12906 of @command{automake}-generated @file{Makefile.in}s as the @file{Makefile.in}s
12907 used during development are now the same as those used in
12908 distributions.  Before that the @file{Makefile.in}s generated for
12909 maintainers required GNU @command{make} and GCC, they were different
12910 from the portable @file{Makefile} generated for distribution; this was
12911 causing some confusion.
12912
12913 @item Support for per-target compilation flags.
12914
12915 @item Support for reference to files in subdirectories in most
12916 @file{Makefile.am} variables.
12917
12918 @item Introduction of the @code{dist_}, @code{nodist_}, and @code{nobase_}
12919 prefixes.
12920 @item Perl 4 support is finally dropped.
12921 @end itemize
12922
12923 1.5 did break several packages that worked with 1.4.  Enough so that
12924 Linux distributions could not easily install the new Automake version
12925 without breaking many of the packages for which they had to run
12926 @command{automake}.
12927
12928 Some of these breakages were effectively bugs that would eventually be
12929 fixed in the next release.  However, a lot of damage was caused by
12930 some changes made deliberately to render Automake stricter on some
12931 setup we did consider bogus.  For instance, @samp{make distcheck} was
12932 improved to check that @samp{make uninstall} did remove all the files
12933 @samp{make install} installed, that @samp{make distclean} did not omit
12934 some file, and that a VPATH build would work even if the source
12935 directory was read-only.  Similarly, Automake now rejects multiple
12936 definitions of the same variable (because that would mix very badly
12937 with conditionals), and @samp{+=} assignments with no previous
12938 definition.  Because these changes all occurred suddenly after 1.4 had
12939 been established for more than two years, it hurt users.
12940
12941 To make matter worse, meanwhile Autoconf (now at version 2.52) was
12942 facing similar troubles, for similar reasons.
12943
12944 @item 2002-03-05 Automake 1.6
12945
12946 This release introduced versioned installation (@pxref{API
12947 Versioning}).  This was mainly pushed by Havoc Pennington, taking the
12948 GNOME source tree as motive: due to incompatibilities between the
12949 autotools it's impossible for the GNOME packages to switch to Autoconf
12950 2.53 and Automake 1.5 all at once, so they are currently stuck with
12951 Autoconf 2.13 and Automake 1.4.
12952
12953 The idea was to call this version @file{automake-1.6}, call all its
12954 bug-fix versions identically, and switch to @file{automake-1.7} for
12955 the next release that adds new features or changes some rules.  This
12956 scheme implies maintaining a bug-fix branch in addition to the
12957 development trunk, which means more work from the maintainer, but
12958 providing regular bug-fix releases proved to be really worthwhile.
12959
12960 Like 1.5, 1.6 also introduced a bunch of incompatibilities, intentional or
12961 not.  Perhaps the more annoying was the dependence on the newly
12962 released Autoconf 2.53.  Autoconf seemed to have stabilized enough
12963 since its explosive 2.50 release and included changes required to fix
12964 some bugs in Automake.  In order to upgrade to Automake 1.6, people
12965 now had to upgrade Autoconf too; for some packages it was no picnic.
12966
12967 While versioned installation helped people to upgrade, it also
12968 unfortunately allowed people not to upgrade.  At the time of writing,
12969 some Linux distributions are shipping packages for Automake 1.4, 1.5,
12970 1.6, 1.7, 1.8, and 1.9.  Most of these still install 1.4 by default.
12971 Some distribution also call 1.4 the ``stable'' version, and present
12972 ``1.9'' as the development version; this does not really makes sense
12973 since 1.9 is way more solid than 1.4.  All this does not help the
12974 newcomer.
12975
12976 @item 2002-04-11 Automake 1.6.1
12977
12978 1.6, and the upcoming 1.4-p6 release were the last release by Tom.
12979 This one and those following will be handled by Alexandre
12980 Duret-Lutz.  Tom is still around, and will be there until about 1.7,
12981 but his interest into Automake is drifting away towards projects like
12982 @command{gcj}.
12983
12984 Alexandre has been using Automake since 2000, and started to
12985 contribute mostly on Akim's incitement (Akim and Alexandre have been
12986 working in the same room from 1999 to 2002).  In 2001 and 2002 he had
12987 a lot of free time to enjoy hacking Automake.
12988
12989 @item 2002-06-14 Automake 1.6.2
12990
12991 @item 2002-07-28 Automake 1.6.3
12992 @itemx 2002-07-28 Automake 1.4-p6
12993
12994 Two releases on the same day.  1.6.3 is a bug-fix release.
12995
12996 Tom Tromey backported the versioned installation mechanism on the 1.4
12997 branch, so that Automake 1.6.x and Automake 1.4-p6 could be installed
12998 side by side.  Another request from the GNOME folks.
12999
13000 @item 2002-09-25 Automake 1.7
13001
13002 This release switches to the new @file{configure.ac} scanner Akim
13003 was experimenting in 1.5.
13004
13005 @item 2002-10-16 Automake 1.7.1
13006 @itemx 2002-12-06 Automake 1.7.2
13007 @itemx 2003-02-20 Automake 1.7.3
13008 @itemx 2003-04-23 Automake 1.7.4
13009 @itemx 2003-05-18 Automake 1.7.5
13010 @itemx 2003-07-10 Automake 1.7.6
13011 @itemx 2003-09-07 Automake 1.7.7
13012 @itemx 2003-10-07 Automake 1.7.8
13013
13014 Many bug-fix releases.  1.7 lasted because the development version
13015 (upcoming 1.8) was suffering some major internal revamping.
13016
13017 @item 2003-10-26 Automake on screen
13018
13019 Episode 49, `Repercussions', in the third season of the `Alias' TV
13020 show is first aired.
13021
13022 Marshall, one of the characters, is working on a computer virus that he
13023 has to modify before it gets into the wrong hands or something like
13024 that.  The screenshots you see do not show any program code, they show
13025 a @file{Makefile.in} @code{generated by automake}...
13026
13027 @item 2003-11-09 Automake 1.7.9
13028
13029 @item 2003-12-10 Automake 1.8
13030
13031 The most striking update is probably that of @command{aclocal}.
13032
13033 @command{aclocal} now uses @code{m4_include} in the produced
13034 @file{aclocal.m4} when the included macros are already distributed
13035 with the package (an idiom used in many packages), which reduces code
13036 duplication.  Many people liked that, but in fact this change was
13037 really introduced to fix a bug in rebuild rules: @file{Makefile.in}
13038 must be rebuilt whenever a dependency of @file{configure} changes, but
13039 all the @file{m4} files included in @file{aclocal.m4} where unknown
13040 from @command{automake}.  Now @command{automake} can just trace the
13041 @code{m4_include}s to discover the dependencies.
13042
13043 @command{aclocal} also starts using the @option{--trace} Autoconf option
13044 in order to discover used macros more accurately.  This will turn out
13045 to be very tricky (later releases will improve this) as people had
13046 devised many ways to cope with the limitation of previous
13047 @command{aclocal} versions, notably using handwritten
13048 @code{m4_include}s: @command{aclocal} must make sure not to redefine a
13049 rule that is already included by such statement.
13050
13051 Automake also has seen its guts rewritten.  Although this rewriting
13052 took a lot of efforts, it is only apparent to the users in that some
13053 constructions previously disallowed by the implementation now work
13054 nicely.  Conditionals, Locations, Variable and Rule definitions,
13055 Options: these items on which Automake works have been rewritten as
13056 separate Perl modules, and documented.
13057
13058 @itemx 2004-01-11 Automake 1.8.1
13059 @itemx 2004-01-12 Automake 1.8.2
13060 @itemx 2004-03-07 Automake 1.8.3
13061 @itemx 2004-04-25 Automake 1.8.4
13062 @itemx 2004-05-16 Automake 1.8.5
13063
13064 @item 2004-07-28 Automake 1.9
13065
13066 This release tries to simplify the compilation rules it outputs to
13067 reduce the size of the Makefile.  The complaint initially come from
13068 the libgcj developers.  Their @file{Makefile.in} generated with
13069 Automake 1.4 and custom build rules (1.4 did not support compiled
13070 Java) is 250KB@.  The one generated by 1.8 was over 9MB@!  1.9 gets it
13071 down to 1.2MB@.
13072
13073 Aside from this it contains mainly minor changes and bug-fixes.
13074
13075 @itemx 2004-08-11 Automake 1.9.1
13076 @itemx 2004-09-19 Automake 1.9.2
13077
13078 Automake has ten years.  This chapter of the manual was initially
13079 written for this occasion.
13080
13081 @itemx 2007-10-29 Automake repository moves to @code{savannah.gnu.org} and uses
13082 git as primary repository.
13083
13084 @end table
13085
13086 @node Dependency Tracking Evolution
13087 @section Dependency Tracking in Automake
13088
13089 Over the years Automake has deployed three different dependency
13090 tracking methods.  Each method, including the current one, has had
13091 flaws of various sorts.  Here we lay out the different dependency
13092 tracking methods, their flaws, and their fixes.  We conclude with
13093 recommendations for tool writers, and by indicating future directions
13094 for dependency tracking work in Automake.
13095
13096 @menu
13097 * First Take on Dependencies::  Precomputed dependency tracking
13098 * Dependencies As Side Effects::  Update at developer compile time
13099 * Dependencies for the User::   Update at user compile time
13100 * Techniques for Dependencies::  Alternative approaches
13101 * Recommendations for Tool Writers::  What tool writers can do to help
13102 * Future Directions for Dependencies::  Languages Automake does not know
13103 @end menu
13104
13105 @node First Take on Dependencies
13106 @subsection First Take on Dependency Tracking
13107 @unnumberedsubsubsec Description
13108
13109 Our first attempt at automatic dependency tracking was based on the
13110 method recommended by GNU @command{make}.  (@pxref{Automatic
13111 Prerequisites, , Generating Prerequisites Automatically, make, The GNU
13112 make Manual})
13113
13114 This version worked by precomputing dependencies ahead of time.  For
13115 each source file, it had a special @file{.P} file that held the
13116 dependencies.  There was a rule to generate a @file{.P} file by
13117 invoking the compiler appropriately.  All such @file{.P} files were
13118 included by the @file{Makefile}, thus implicitly becoming dependencies
13119 of @file{Makefile}.
13120
13121 @unnumberedsubsubsec Bugs
13122
13123 This approach had several critical bugs.
13124
13125 @itemize
13126 @item
13127 The code to generate the @file{.P} file relied on @command{gcc}.
13128 (A limitation, not technically a bug.)
13129 @item
13130 The dependency tracking mechanism itself relied on GNU @command{make}.
13131 (A limitation, not technically a bug.)
13132 @item
13133 Because each @file{.P} file was a dependency of @file{Makefile}, this
13134 meant that dependency tracking was done eagerly by @command{make}.
13135 For instance, @samp{make clean} would cause all the dependency files
13136 to be updated, and then immediately removed.  This eagerness also
13137 caused problems with some configurations; if a certain source file
13138 could not be compiled on a given architecture for some reason,
13139 dependency tracking would fail, aborting the entire build.
13140 @item
13141 As dependency tracking was done as a pre-pass, compile times were
13142 doubled--the compiler had to be run twice per source file.
13143 @item
13144 @samp{make dist} re-ran @command{automake} to generate a
13145 @file{Makefile} that did not have automatic dependency tracking (and
13146 that was thus portable to any version of @command{make}).  In order to
13147 do this portably, Automake had to scan the dependency files and remove
13148 any reference that was to a source file not in the distribution.
13149 This process was error-prone.  Also, if @samp{make dist} was run in an
13150 environment where some object file had a dependency on a source file
13151 that was only conditionally created, Automake would generate a
13152 @file{Makefile} that referred to a file that might not appear in the
13153 end user's build.  A special, hacky mechanism was required to work
13154 around this.
13155 @end itemize
13156
13157 @unnumberedsubsubsec Historical Note
13158
13159 The code generated by Automake is often inspired by the
13160 @file{Makefile} style of a particular author.  In the case of the first
13161 implementation of dependency tracking, I believe the impetus and
13162 inspiration was Jim Meyering.  (I could be mistaken.  If you know
13163 otherwise feel free to correct me.)
13164
13165 @node Dependencies As Side Effects
13166 @subsection Dependencies As Side Effects
13167 @unnumberedsubsubsec Description
13168
13169 The next refinement of Automake's automatic dependency tracking scheme
13170 was to implement dependencies as side effects of the compilation.
13171 This was aimed at solving the most commonly reported problems with the
13172 first approach.  In particular we were most concerned with eliminating
13173 the weird rebuilding effect associated with make clean.
13174
13175 In this approach, the @file{.P} files were included using the
13176 @code{-include} command, which let us create these files lazily.  This
13177 avoided the @samp{make clean} problem.
13178
13179 We only computed dependencies when a file was actually compiled.  This
13180 avoided the performance penalty associated with scanning each file
13181 twice.  It also let us avoid the other problems associated with the
13182 first, eager, implementation.  For instance, dependencies would never
13183 be generated for a source file that was not compilable on a given
13184 architecture (because it in fact would never be compiled).
13185
13186 @unnumberedsubsubsec Bugs
13187
13188 @itemize
13189 @item
13190 This approach also relied on the existence of @command{gcc} and GNU
13191 @command{make}.  (A limitation, not technically a bug.)
13192 @item
13193 Dependency tracking was still done by the developer, so the problems
13194 from the first implementation relating to massaging of dependencies by
13195 @samp{make dist} were still in effect.
13196 @item
13197 This implementation suffered from the ``deleted header file'' problem.
13198 Suppose a lazily-created @file{.P} file includes a dependency on a
13199 given header file, like this:
13200
13201 @example
13202 maude.o: maude.c something.h
13203 @end example
13204
13205 Now suppose that you remove @file{something.h} and update @file{maude.c}
13206 so that this include is no longer needed.  If you run @command{make},
13207 you will get an error because there is no way to create
13208 @file{something.h}.
13209
13210 We fixed this problem in a later release by further massaging the
13211 output of @command{gcc} to include a dummy dependency for each header
13212 file.
13213 @end itemize
13214
13215 @node Dependencies for the User
13216 @subsection Dependencies for the User
13217 @unnumberedsubsubsec Description
13218
13219 The bugs associated with @samp{make dist}, over time, became a real
13220 problem.  Packages using Automake were being built on a large number
13221 of platforms, and were becoming increasingly complex.  Broken
13222 dependencies were distributed in ``portable'' @file{Makefile.in}s,
13223 leading to user complaints.  Also, the requirement for @command{gcc}
13224 and GNU @command{make} was a constant source of bug reports.  The next
13225 implementation of dependency tracking aimed to remove these problems.
13226
13227 We realized that the only truly reliable way to automatically track
13228 dependencies was to do it when the package itself was built.  This
13229 meant discovering a method portable to any version of make and any
13230 compiler.  Also, we wanted to preserve what we saw as the best point
13231 of the second implementation: dependency computation as a side effect
13232 of compilation.
13233
13234 In the end we found that most modern make implementations support some
13235 form of include directive.  Also, we wrote a wrapper script that let
13236 us abstract away differences between dependency tracking methods for
13237 compilers.  For instance, some compilers cannot generate dependencies
13238 as a side effect of compilation.  In this case we simply have the
13239 script run the compiler twice.  Currently our wrapper script
13240 (@command{depcomp}) knows about twelve different compilers (including
13241 a "compiler" that simply invokes @command{makedepend} and then the
13242 real compiler, which is assumed to be a standard Unix-like C compiler
13243 with no way to do dependency tracking).
13244
13245 @unnumberedsubsubsec Bugs
13246
13247 @itemize
13248 @item
13249 Running a wrapper script for each compilation slows down the build.
13250 @item
13251 Many users don't really care about precise dependencies.
13252 @item
13253 This implementation, like every other automatic dependency tracking
13254 scheme in common use today (indeed, every one we've ever heard of),
13255 suffers from the ``duplicated new header'' bug.
13256
13257 This bug occurs because dependency tracking tools, such as the
13258 compiler, only generate dependencies on the successful opening of a
13259 file, and not on every probe.
13260
13261 Suppose for instance that the compiler searches three directories for
13262 a given header, and that the header is found in the third directory.
13263 If the programmer erroneously adds a header file with the same name to
13264 the first directory, then a clean rebuild from scratch could fail
13265 (suppose the new header file is buggy), whereas an incremental rebuild
13266 will succeed.
13267
13268 What has happened here is that people have a misunderstanding of what
13269 a dependency is.  Tool writers think a dependency encodes information
13270 about which files were read by the compiler.  However, a dependency
13271 must actually encode information about what the compiler tried to do.
13272
13273 This problem is not serious in practice.  Programmers typically do not
13274 use the same name for a header file twice in a given project.  (At
13275 least, not in C or C++.  This problem may be more troublesome in
13276 Java.)  This problem is easy to fix, by modifying dependency
13277 generators to record every probe, instead of every successful open.
13278
13279 @item
13280 Since Automake generates dependencies as a side effect of compilation,
13281 there is a bootstrapping problem when header files are generated by
13282 running a program.  The problem is that, the first time the build is
13283 done, there is no way by default to know that the headers are
13284 required, so make might try to run a compilation for which the headers
13285 have not yet been built.
13286
13287 This was also a problem in the previous dependency tracking implementation.
13288
13289 The current fix is to use @code{BUILT_SOURCES} to list built headers
13290 (@pxref{Sources}).  This causes them to be built before any other
13291 build rules are run.  This is unsatisfactory as a general solution,
13292 however in practice it seems sufficient for most actual programs.
13293 @end itemize
13294
13295 This code is used since Automake 1.5.
13296
13297 In GCC 3.0, we managed to convince the maintainers to add special
13298 command-line options to help Automake more efficiently do its job.  We
13299 hoped this would let us avoid the use of a wrapper script when
13300 Automake's automatic dependency tracking was used with @command{gcc}.
13301
13302 Unfortunately, this code doesn't quite do what we want.  In
13303 particular, it removes the dependency file if the compilation fails;
13304 we'd prefer that it instead only touch the file in any way if the
13305 compilation succeeds.
13306
13307 Nevertheless, since Automake 1.7, when a recent @command{gcc} is
13308 detected at @command{configure} time, we inline the
13309 dependency-generation code and do not use the @command{depcomp}
13310 wrapper script.  This makes compilations faster for those using this
13311 compiler (probably our primary user base).  The counterpart is that
13312 because we have to encode two compilation rules in @file{Makefile}
13313 (with or without @command{depcomp}), the produced @file{Makefile}s are
13314 larger.
13315
13316 @node Techniques for Dependencies
13317 @subsection Techniques for Computing Dependencies
13318
13319 There are actually several ways for a build tool like Automake to
13320 cause tools to generate dependencies.
13321
13322 @table @asis
13323 @item @command{makedepend}
13324 This was a commonly-used method in the past.  The idea is to run a
13325 special program over the source and have it generate dependency
13326 information.  Traditional implementations of @command{makedepend} are
13327 not completely precise; ordinarily they were conservative and
13328 discovered too many dependencies.
13329 @item The tool
13330 An obvious way to generate dependencies is to simply write the tool so
13331 that it can generate the information needed by the build tool.  This is
13332 also the most portable method.  Many compilers have an option to
13333 generate dependencies.  Unfortunately, not all tools provide such an
13334 option.
13335 @item The file system
13336 It is possible to write a special file system that tracks opens,
13337 reads, writes, etc, and then feed this information back to the build
13338 tool.  @command{clearmake} does this.  This is a very powerful
13339 technique, as it doesn't require cooperation from the
13340 tool.  Unfortunately it is also very difficult to implement and also
13341 not practical in the general case.
13342 @item @code{LD_PRELOAD}
13343 Rather than use the file system, one could write a special library to
13344 intercept @code{open} and other syscalls.  This technique is also quite
13345 powerful, but unfortunately it is not portable enough for use in
13346 @command{automake}.
13347 @end table
13348
13349 @node Recommendations for Tool Writers
13350 @subsection Recommendations for Tool Writers
13351
13352 We think that every compilation tool ought to be able to generate
13353 dependencies as a side effect of compilation.  Furthermore, at least
13354 while @command{make}-based tools are nearly universally in use (at
13355 least in the free software community), the tool itself should generate
13356 dummy dependencies for header files, to avoid the deleted header file
13357 bug.  Finally, the tool should generate a dependency for each probe,
13358 instead of each successful file open, in order to avoid the duplicated
13359 new header bug.
13360
13361 @node Future Directions for Dependencies
13362 @subsection Future Directions for Dependencies
13363
13364 Currently, only languages and compilers understood by Automake can
13365 have dependency tracking enabled.  We would like to see if it is
13366 practical (and worthwhile) to let this support be extended by the user
13367 to languages unknown to Automake.
13368
13369 @node Releases
13370 @section Release Statistics
13371
13372 The following table (inspired by @samp{perlhist(1)}) quantifies the
13373 evolution of Automake using these metrics:
13374
13375 @table @asis
13376 @item Date, Rel
13377 The date and version of the release.
13378 @item am
13379 The number of lines of the @command{automake} script.
13380 @item acl
13381 The number of lines of the @command{aclocal} script.
13382 @item pm
13383 The number of lines of the @command{Perl} supporting modules.
13384 @item @file{*.am}
13385 The number of lines of the @file{Makefile} fragments.  The number in
13386 parentheses is the number of files.
13387 @item m4
13388 The number of lines (and files) of Autoconf macros.
13389 @item doc
13390 The number of pages of the documentation (the Postscript version).
13391 @item t
13392 The number of test cases in the test suite.  Of those, the number in
13393 parentheses is the number of generated test cases.
13394 @end table
13395
13396 @multitable {8888-88-88} {8.8-p8} {8888} {8888} {8888} {8888 (88)} {8888 (88)} {888} {888 (88)}
13397 @headitem Date   @tab Rel    @tab   am @tab acl @tab   pm @tab @file{*.am} @tab m4 @tab doc @tab t
13398 @item 1994-09-19 @tab CVS    @tab  141 @tab     @tab      @tab  299 (24) @tab           @tab     @tab
13399 @item 1994-11-05 @tab CVS    @tab  208 @tab     @tab      @tab  332 (28) @tab           @tab     @tab
13400 @item 1995-11-23 @tab 0.20   @tab  533 @tab     @tab      @tab  458 (35) @tab           @tab   9 @tab
13401 @item 1995-11-26 @tab 0.21   @tab  613 @tab     @tab      @tab  480 (36) @tab           @tab  11 @tab
13402 @item 1995-11-28 @tab 0.22   @tab 1116 @tab     @tab      @tab  539 (38) @tab           @tab  12 @tab
13403 @item 1995-11-29 @tab 0.23   @tab 1240 @tab     @tab      @tab  541 (38) @tab           @tab  12 @tab
13404 @item 1995-12-08 @tab 0.24   @tab 1462 @tab     @tab      @tab  504 (33) @tab           @tab  14 @tab
13405 @item 1995-12-10 @tab 0.25   @tab 1513 @tab     @tab      @tab  511 (37) @tab           @tab  15 @tab
13406 @item 1996-01-03 @tab 0.26   @tab 1706 @tab     @tab      @tab  438 (36) @tab           @tab  16 @tab
13407 @item 1996-01-03 @tab 0.27   @tab 1706 @tab     @tab      @tab  438 (36) @tab           @tab  16 @tab
13408 @item 1996-01-13 @tab 0.28   @tab 1964 @tab     @tab      @tab  934 (33) @tab           @tab  16 @tab
13409 @item 1996-02-07 @tab 0.29   @tab 2299 @tab     @tab      @tab  936 (33) @tab           @tab  17 @tab
13410 @item 1996-02-24 @tab 0.30   @tab 2544 @tab     @tab      @tab  919 (32) @tab   85 (1)  @tab  20 @tab 9
13411 @item 1996-03-11 @tab 0.31   @tab 2877 @tab     @tab      @tab  919 (32) @tab   85 (1)  @tab  29 @tab 17
13412 @item 1996-04-27 @tab 0.32   @tab 3058 @tab     @tab      @tab  921 (31) @tab   85 (1)  @tab  30 @tab 26
13413 @item 1996-05-18 @tab 0.33   @tab 3110 @tab     @tab      @tab  926 (31) @tab  105 (1)  @tab  30 @tab 35
13414 @item 1996-05-28 @tab 1.0    @tab 3134 @tab     @tab      @tab  973 (32) @tab  105 (1)  @tab  30 @tab 38
13415 @item 1997-06-22 @tab 1.2    @tab 6089 @tab 385 @tab      @tab 1294 (36) @tab  592 (20) @tab  37 @tab 126
13416 @item 1998-04-05 @tab 1.3    @tab 6415 @tab 422 @tab      @tab 1470 (39) @tab  741 (23) @tab  39 @tab 156
13417 @item 1999-01-14 @tab 1.4    @tab 7240 @tab 426 @tab      @tab 1591 (40) @tab  734 (20) @tab  51 @tab 197
13418 @item 2001-05-08 @tab 1.4-p1 @tab 7251 @tab 426 @tab      @tab 1591 (40) @tab  734 (20) @tab  51 @tab 197
13419 @item 2001-05-24 @tab 1.4-p2 @tab 7268 @tab 439 @tab      @tab 1591 (40) @tab  734 (20) @tab  49 @tab 197
13420 @item 2001-06-07 @tab 1.4-p3 @tab 7312 @tab 439 @tab      @tab 1591 (40) @tab  734 (20) @tab  49 @tab 197
13421 @item 2001-06-10 @tab 1.4-p4 @tab 7321 @tab 439 @tab      @tab 1591 (40) @tab  734 (20) @tab  49 @tab 198
13422 @item 2001-07-15 @tab 1.4-p5 @tab 7228 @tab 426 @tab      @tab 1596 (40) @tab  734 (20) @tab  51 @tab 198
13423 @item 2001-08-23 @tab 1.5    @tab 8016 @tab 475 @tab  600 @tab 2654 (39) @tab 1166 (29) @tab  63 @tab 327
13424 @item 2002-03-05 @tab 1.6    @tab 8465 @tab 475 @tab 1136 @tab 2732 (39) @tab 1603 (27) @tab  66 @tab 365
13425 @item 2002-04-11 @tab 1.6.1  @tab 8544 @tab 475 @tab 1136 @tab 2741 (39) @tab 1603 (27) @tab  66 @tab 372
13426 @item 2002-06-14 @tab 1.6.2  @tab 8575 @tab 475 @tab 1136 @tab 2800 (39) @tab 1609 (27) @tab  67 @tab 386
13427 @item 2002-07-28 @tab 1.6.3  @tab 8600 @tab 475 @tab 1153 @tab 2809 (39) @tab 1609 (27) @tab  67 @tab 391
13428 @item 2002-07-28 @tab 1.4-p6 @tab 7332 @tab 455 @tab      @tab 1596 (40) @tab  735 (20) @tab  49 @tab 197
13429 @item 2002-09-25 @tab 1.7    @tab 9189 @tab 471 @tab 1790 @tab 2965 (39) @tab 1606 (28) @tab  73 @tab 430
13430 @item 2002-10-16 @tab 1.7.1  @tab 9229 @tab 475 @tab 1790 @tab 2977 (39) @tab 1606 (28) @tab  73 @tab 437
13431 @item 2002-12-06 @tab 1.7.2  @tab 9334 @tab 475 @tab 1790 @tab 2988 (39) @tab 1606 (28) @tab  77 @tab 445
13432 @item 2003-02-20 @tab 1.7.3  @tab 9389 @tab 475 @tab 1790 @tab 3023 (39) @tab 1651 (29) @tab  84 @tab 448
13433 @item 2003-04-23 @tab 1.7.4  @tab 9429 @tab 475 @tab 1790 @tab 3031 (39) @tab 1644 (29) @tab  85 @tab 458
13434 @item 2003-05-18 @tab 1.7.5  @tab 9429 @tab 475 @tab 1790 @tab 3033 (39) @tab 1645 (29) @tab  85 @tab 459
13435 @item 2003-07-10 @tab 1.7.6  @tab 9442 @tab 475 @tab 1790 @tab 3033 (39) @tab 1660 (29) @tab  85 @tab 461
13436 @item 2003-09-07 @tab 1.7.7  @tab 9443 @tab 475 @tab 1790 @tab 3041 (39) @tab 1660 (29) @tab  90 @tab 467
13437 @item 2003-10-07 @tab 1.7.8  @tab 9444 @tab 475 @tab 1790 @tab 3041 (39) @tab 1660 (29) @tab  90 @tab 468
13438 @item 2003-11-09 @tab 1.7.9  @tab 9444 @tab 475 @tab 1790 @tab 3048 (39) @tab 1660 (29) @tab  90 @tab 468
13439 @item 2003-12-10 @tab 1.8    @tab 7171 @tab 585 @tab 7730 @tab 3236 (39) @tab 1666 (31) @tab 104 @tab 521
13440 @item 2004-01-11 @tab 1.8.1  @tab 7217 @tab 663 @tab 7726 @tab 3287 (39) @tab 1686 (31) @tab 104 @tab 525
13441 @item 2004-01-12 @tab 1.8.2  @tab 7217 @tab 663 @tab 7726 @tab 3288 (39) @tab 1686 (31) @tab 104 @tab 526
13442 @item 2004-03-07 @tab 1.8.3  @tab 7214 @tab 686 @tab 7735 @tab 3303 (39) @tab 1695 (31) @tab 111 @tab 530
13443 @item 2004-04-25 @tab 1.8.4  @tab 7214 @tab 686 @tab 7736 @tab 3310 (39) @tab 1701 (31) @tab 112 @tab 531
13444 @item 2004-05-16 @tab 1.8.5  @tab 7240 @tab 686 @tab 7736 @tab 3299 (39) @tab 1701 (31) @tab 112 @tab 533
13445 @item 2004-07-28 @tab 1.9    @tab 7508 @tab 715 @tab 7794 @tab 3352 (40) @tab 1812 (32) @tab 115 @tab 551
13446 @item 2004-08-11 @tab 1.9.1  @tab 7512 @tab 715 @tab 7794 @tab 3354 (40) @tab 1812 (32) @tab 115 @tab 552
13447 @item 2004-09-19 @tab 1.9.2  @tab 7512 @tab 715 @tab 7794 @tab 3354 (40) @tab 1812 (32) @tab 132 @tab 554
13448 @item 2004-11-01 @tab 1.9.3  @tab 7507 @tab 718 @tab 7804 @tab 3354 (40) @tab 1812 (32) @tab 134 @tab 556
13449 @item 2004-12-18 @tab 1.9.4  @tab 7508 @tab 718 @tab 7856 @tab 3361 (40) @tab 1811 (32) @tab 140 @tab 560
13450 @item 2005-02-13 @tab 1.9.5  @tab 7523 @tab 719 @tab 7859 @tab 3373 (40) @tab 1453 (32) @tab 142 @tab 562
13451 @item 2005-07-10 @tab 1.9.6  @tab 7539 @tab 699 @tab 7867 @tab 3400 (40) @tab 1453 (32) @tab 144 @tab 570
13452 @item 2006-10-15 @tab 1.10   @tab 7859 @tab 1072 @tab 8024 @tab 3512 (40) @tab 1496 (34) @tab 172 @tab 604
13453 @item 2008-01-19 @tab 1.10.1 @tab 7870 @tab 1089 @tab 8025 @tab 3520 (40) @tab 1499 (34) @tab 173 @tab 617
13454 @item 2008-11-23 @tab 1.10.2 @tab 7882 @tab 1089 @tab 8027 @tab 3540 (40) @tab 1509 (34) @tab 176 @tab 628
13455 @item 2009-05-17 @tab 1.11   @tab 8721 @tab 1092 @tab 8289 @tab 4164 (42) @tab 1714 (37) @tab 181 @tab 732 (20)
13456 @end multitable
13457
13458
13459 @c ========================================================== Appendices
13460
13461 @page
13462 @node Copying This Manual
13463 @appendix Copying This Manual
13464
13465 @menu
13466 * GNU Free Documentation License::  License for copying this manual
13467 @end menu
13468
13469 @node GNU Free Documentation License
13470 @appendixsec GNU Free Documentation License
13471 @include fdl.texi
13472
13473 @page
13474 @node Indices
13475 @appendix Indices
13476
13477 @menu
13478 * Macro Index::                 Index of Autoconf macros
13479 * Variable Index::              Index of Makefile variables
13480 * General Index::               General index
13481 @end menu
13482
13483 @node Macro Index
13484 @appendixsec Macro Index
13485
13486 @printindex fn
13487
13488 @node Variable Index
13489 @appendixsec Variable Index
13490
13491 @printindex vr
13492
13493 @node General Index
13494 @appendixsec General Index
13495
13496 @printindex cp
13497
13498
13499 @bye
13500
13501 @c  LocalWords:  texinfo setfilename settitle setchapternewpage texi direntry
13502 @c  LocalWords:  dircategory in's aclocal ifinfo titlepage Tromey vskip pt sp
13503 @c  LocalWords:  filll defcodeindex ov cv op tr syncodeindex fn cp vr ifnottex
13504 @c  LocalWords:  dir Automake's ac Dist Gnits gnits cygnus dfn Autoconf's pxref
13505 @c  LocalWords:  cindex Autoconf autoconf perl samp cvs dist trindex SUBST foo
13506 @c  LocalWords:  xs emph FIXME ref vindex pkglibdir pkgincludedir pkgdatadir mt
13507 @c  LocalWords:  pkg libdir cpio bindir sbindir rmt pax sbin zar zardir acindex
13508 @c  LocalWords:  HTML htmldir html noinst TEXINFOS nodist nobase strudel CFLAGS
13509 @c  LocalWords:  libmumble CC YFLAGS ansi knr itemx de fication config url comp
13510 @c  LocalWords:  depcomp elisp sh mdate mkinstalldirs mkdir py tex dvi ps pdf
13511 @c  LocalWords:  ylwrap zardoz INIT gettext acinclude mv FUNCS LIBOBJS LDADD fr
13512 @c  LocalWords:  uref featureful dnl src LINGUAS es ko nl pl sl sv PROG ISC doc
13513 @c  LocalWords:  POSIX STDC fcntl FUNC ALLOCA blksize struct stat intl po chmod
13514 @c  LocalWords:  ChangeLog SUBDIRS gettextize gpl testdata getopt INTLLIBS cpp
13515 @c  LocalWords:  localedir datadir DLOCALEDIR DEXIT CPPFLAGS autoreconf opindex
13516 @c  LocalWords:  AUX var symlink deps Wno Wnone package's aclocal's distclean
13517 @c  LocalWords:  ltmain xref LIBSOURCE LIBSOURCES LIBOBJ MEMCMP vs RANLIB CXX
13518 @c  LocalWords:  LDFLAGS LIBTOOL libtool XTRA LIBS gettext's acdir APIVERSION
13519 @c  LocalWords:  dirlist noindent usr MULTILIB multilib Multilibs TIOCGWINSZ sc
13520 @c  LocalWords:  GWINSZ termios SRCDIR tarball bzip LISPDIR lispdir XEmacs CCAS
13521 @c  LocalWords:  emacsen MicroEmacs CCASFLAGS UX GCJ gcj GCJFLAGS posix DMALLOC
13522 @c  LocalWords:  dmalloc ldmalloc REGEX regex rx DEPDIR DEP DEFUN aclocaldir fi
13523 @c  LocalWords:  mymacro myothermacro AMFLAGS autopoint autogen libtoolize yum
13524 @c  LocalWords:  autoheader README MAKEFLAGS subdir Inetutils sync COND endif
13525 @c  LocalWords:  Miller's installable includedir inc pkgdata EXEEXT libexec bsd
13526 @c  LocalWords:  pkglib libexecdir prog libcpio cpio's dlopen dlpreopen linux
13527 @c  LocalWords:  subsubsection OBJEXT esac lib LTLIBRARIES liblob LIBADD AR ar
13528 @c  LocalWords:  ARFLAGS cru ing maude libgettext lo LTLIBOBJS rpath SGI PRE yy
13529 @c  LocalWords:  libmaude CCLD CXXFLAGS FFLAGS LFLAGS OBJCFLAGS RFLAGS DEFS cc
13530 @c  LocalWords:  SHORTNAME vtable srcdir nostdinc basename yxx cxx ll lxx gdb
13531 @c  LocalWords:  lexers yymaxdepth maxdepth yyparse yylex yyerror yylval lval
13532 @c  LocalWords:  yychar yydebug yypact yyr yydef def yychk chk yypgo pgo yyact
13533 @c  LocalWords:  yyexca exca yyerrflag errflag yynerrs nerrs yyps yypv pv yys
13534 @c  LocalWords:  yystate yytmp tmp yyv yyval val yylloc lloc yyreds yytoks toks
13535 @c  LocalWords:  yylhs yylen yydefred yydgoto yysindex yyrindex yygindex yyname
13536 @c  LocalWords:  yytable yycheck yyrule byacc CXXCOMPILE CXXLINK FLINK cfortran
13537 @c  LocalWords:  Catalogue preprocessable FLIBS libfoo baz JAVACFLAGS java exe
13538 @c  LocalWords:  SunOS fying basenames exeext uninstalled oldinclude kr FSF's
13539 @c  LocalWords:  pkginclude oldincludedir sysconf sharedstate localstate gcc rm
13540 @c  LocalWords:  sysconfdir sharedstatedir localstatedir preexist CLEANFILES gz
13541 @c  LocalWords:  depfile tmpdepfile depmode const interoperate
13542 @c  LocalWords:  JAVAC javac JAVAROOT builddir CLASSPATH ENV pyc pyo pkgpython
13543 @c  LocalWords:  pyexecdir pkgpyexecdir Python's pythondir pkgpythondir txi ois
13544 @c  LocalWords:  installinfo vers MAKEINFO makeinfo MAKEINFOFLAGS noinstall rf
13545 @c  LocalWords:  mandir thesame alsothesame installman myexecbin DESTDIR Pinard
13546 @c  LocalWords:  uninstall installdirs uninstalls MOSTLYCLEANFILES mostlyclean
13547 @c  LocalWords:  DISTCLEANFILES MAINTAINERCLEANFILES GZIP gzip shar exp
13548 @c  LocalWords:  distdir distcheck distcleancheck listfiles distuninstallcheck
13549 @c  LocalWords:  VPATH tarfile stdout XFAIL DejaGnu dejagnu DEJATOOL runtest ln
13550 @c  LocalWords:  RUNTESTDEFAULTFLAGS toolchain RUNTESTFLAGS asis readme DVIPS
13551 @c  LocalWords:  installcheck gzipped tarZ std utils etags mkid multilibbing cd
13552 @c  LocalWords:  ARGS taggable ETAGSFLAGS lang ctags CTAGSFLAGS GTAGS gtags idl
13553 @c  LocalWords:  foocc doit idlC multilibs ABIs cmindex defmac ARG enableval FC
13554 @c  LocalWords:  MSG xtrue DBG pathchk CYGWIN afile proglink versioned CVS's TE
13555 @c  LocalWords:  wildcards Autoconfiscated subsubheading autotools Meyering API
13556 @c  LocalWords:  ois's wildcard Wportability cartouche vrindex printindex Duret
13557 @c  LocalWords:  DSOMEFLAG DVERSION automake Lutz insertcopying versioning FAQ
13558 @c  LocalWords:  LTLIBOBJ Libtool's libtool's libltdl dlopening itutions libbar
13559 @c  LocalWords:  WANTEDLIBS libhello sublibraries libtop libsub dlopened Ratfor
13560 @c  LocalWords:  mymodule timestamps timestamp underquoted MAKEINFOHTMLFLAGS te
13561 @c  LocalWords:  GNUmakefile Subpackages subpackage's subpackages aux
13562 @c  LocalWords:  detailmenu Timeline pwd reldir AUTOM autom PREREQ FOOBAR libc
13563 @c  LocalWords:  libhand subpackage moduleN libmain libmisc FCFLAGS FCCOMPILE
13564 @c  LocalWords:  FCLINK subst sed ELCFILES elc MAKEINFOHTML dvips esyscmd ustar
13565 @c  LocalWords:  tarballs Woverride vfi ELFILES djm AutoMake honkin FSF
13566 @c  LocalWords:  fileutils precanned MacKenzie's reimplement termutils Tromey's
13567 @c  LocalWords:  cois gnitsians LIBPROGRAMS progs LIBLIBRARIES Textutils Ulrich
13568 @c  LocalWords:  Matzigkeit Drepper's Gord Matzigkeit's jm Dalley Debian org
13569 @c  LocalWords:  Administrivia ILU CORBA Sourceware Molenda sourceware Elliston
13570 @c  LocalWords:  dep Oliva Akim Demaille Aiieeee Demaillator Akim's sourcequake
13571 @c  LocalWords:  grep backported screenshots libgcj KB unnumberedsubsubsec pre
13572 @c  LocalWords:  precomputing hacky makedepend inline clearmake LD PRELOAD Rel
13573 @c  LocalWords:  syscalls perlhist acl pm multitable headitem fdl appendixsec
13574 @c  LocalWords:  LTALLOCA MALLOC malloc memcmp strdup alloca libcompat xyz DFOO
13575 @c  LocalWords:  unprefixed buildable preprocessed DBAZ DDATADIR WARNINGCFLAGS
13576 @c  LocalWords:  LIBFOOCFLAGS LIBFOOLDFLAGS ftable testSubDir obj LIBTOOLFLAGS
13577 @c  LocalWords:  barexec Pinard's automatize initialize lzip lzma xz