2002-02-23 Per Bothner <per@bothner.com>
[platform/upstream/automake.git] / 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 @dircategory GNU programming tools
11 @direntry
12 * automake: (automake).         Making Makefile.in's
13 @end direntry
14
15 @dircategory Individual utilities
16 @direntry
17 * aclocal: (automake)Invoking aclocal.          Generating aclocal.m4
18 @end direntry
19
20 @ifinfo
21 This file documents GNU automake @value{VERSION}
22
23 Copyright 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002
24 Free Software Foundation, Inc.
25
26 Permission is granted to make and distribute verbatim copies of
27 this manual provided the copyright notice and this permission notice
28 are preserved on all copies.
29
30 @ignore
31 Permission is granted to process this file through TeX and print the
32 results, provided the printed document carries copying permission
33 notice identical to this one except for the removal of this paragraph
34
35
36 @end ignore
37 Permission is granted to copy and distribute modified versions of this
38 manual under the conditions for verbatim copying, provided that the entire
39 resulting derived work is distributed under the terms of a permission
40 notice identical to this one.
41
42 Permission is granted to copy and distribute translations of this manual
43 into another language, under the above conditions for modified versions,
44 except that this permission notice may be stated in a translation approved
45 by the Foundation.
46 @end ifinfo
47
48
49 @titlepage
50 @title GNU Automake
51 @subtitle For version @value{VERSION}, @value{UPDATED}
52 @author David MacKenzie and Tom Tromey
53
54 @page
55 @vskip 0pt plus 1filll
56 Copyright @copyright{} 1995, 1996, 2000, 2001, 2002 Free Software Foundation, Inc.
57 @sp 2
58 This is the first edition of the GNU Automake documentation,@*
59 and is consistent with GNU Automake @value{VERSION}.@*
60 @sp 2
61 Published by the Free Software Foundation @*
62 59 Temple Place - Suite 330, @*
63 Boston, MA 02111-1307 USA @*
64
65 Permission is granted to make and distribute verbatim copies of
66 this manual provided the copyright notice and this permission notice
67 are preserved on all copies.
68
69 Permission is granted to copy and distribute modified versions of this
70 manual under the conditions for verbatim copying, provided that the entire
71 resulting derived work is distributed under the terms of a permission
72 notice identical to this one.
73
74 Permission is granted to copy and distribute translations of this manual
75 into another language, under the above conditions for modified versions,
76 except that this permission notice may be stated in a translation
77 approved by the Free Software Foundation.
78 @end titlepage
79
80 @c Define an index of configure output variables.
81 @defcodeindex ov
82 @c Define an index of configure variables.
83 @defcodeindex cv
84 @c Define an index of options.
85 @defcodeindex op
86 @c Define an index of targets.
87 @defcodeindex tr
88 @c Define an index of commands.
89 @defcodeindex cm
90
91 @c Put the macros and variables into their own index.
92 @c @syncodeindex fn cp
93 @syncodeindex ov vr
94 @syncodeindex cv vr
95 @syncodeindex fn vr
96
97 @c Put everything else into one index (arbitrarily chosen to be the concept index).
98 @syncodeindex op cp
99 @syncodeindex tr cp
100 @syncodeindex cm cp
101
102 @ifnottex
103 @node Top, Introduction, (dir), (dir)
104 @comment  node-name,  next,  previous,  up
105 @top GNU Automake
106
107 This file documents the GNU Automake package.  Automake is a program
108 which creates GNU standards-compliant Makefiles from template files.
109 This edition documents version @value{VERSION}.
110
111 @menu
112 * Introduction::                Automake's purpose
113 * Generalities::                General ideas
114 * Examples::                    Some example packages
115 * Invoking Automake::           Creating a Makefile.in
116 * configure::                   Scanning configure.ac or configure.in
117 * Top level::                   The top-level Makefile.am
118 * Alternative::                 An alternative approach to subdirectories
119 * Rebuilding::                  Automatic rebuilding of Makefile
120 * Programs::                    Building programs and libraries
121 * Other objects::               Other derived objects
122 * Other GNU Tools::             Other GNU Tools
123 * Documentation::               Building documentation
124 * Install::                     What gets installed
125 * Clean::                       What gets cleaned
126 * Dist::                        What goes in a distribution
127 * Tests::                       Support for test suites
128 * Options::                     Changing Automake's behavior
129 * Miscellaneous::               Miscellaneous rules
130 * Include::                     Including extra files in an Automake template.
131 * Conditionals::                Conditionals
132 * Gnits::                       The effect of @code{--gnu} and @code{--gnits}
133 * Cygnus::                      The effect of @code{--cygnus}
134 * Extending::                   Extending Automake
135 * Distributing::                Distributing the Makefile.in
136 * API versioning::              About compatibility between Automake versions
137 * Macro and Variable Index::
138 * General Index::
139 @end menu
140
141 @end ifnottex
142
143
144 @node Introduction, Generalities, Top, Top
145 @chapter Introduction
146
147 Automake is a tool for automatically generating @file{Makefile.in}s from
148 files called @file{Makefile.am}.  Each @file{Makefile.am} is basically a
149 series of @code{make} macro definitions (with rules being thrown in
150 occasionally).  The generated @file{Makefile.in}s are compliant with the
151 GNU Makefile standards.
152
153 @cindex GNU Makefile standards
154
155 The GNU Makefile Standards Document
156 (@pxref{Makefile Conventions, , , standards, The GNU Coding Standards})
157 is long, complicated, and subject to change.  The goal of Automake is to
158 remove the burden of Makefile maintenance from the back of the
159 individual GNU maintainer (and put it on the back of the Automake
160 maintainer).
161
162 The typical Automake input file is simply a series of macro definitions.
163 Each such file is processed to create a @file{Makefile.in}.  There
164 should generally be one @file{Makefile.am} per directory of a project.
165
166 @cindex Constraints of Automake
167 @cindex Automake constraints
168
169 Automake does constrain a project in certain ways; for instance it
170 assumes that the project uses Autoconf (@pxref{Top, , Introduction,
171 autoconf, The Autoconf Manual}), and enforces certain restrictions on
172 the @file{configure.in} contents@footnote{Autoconf 2.50 promotes
173 @file{configure.ac} over @file{configure.in}.  The rest of this
174 documentation will refer to @file{configure.in} as this use is not yet
175 spread, but Automake supports @file{configure.ac} too.}.
176
177 @cindex Automake requirements
178 @cindex Requirements, Automake
179
180 Automake requires @code{perl} in order to generate the
181 @file{Makefile.in}s.  However, the distributions created by Automake are
182 fully GNU standards-compliant, and do not require @code{perl} in order
183 to be built.
184
185 @cindex BUGS, reporting
186 @cindex Reporting BUGS
187 @cindex E-mail, bug reports
188
189 Mail suggestions and bug reports for Automake to
190 @email{bug-automake@@gnu.org}.
191
192
193 @node Generalities, Examples, Introduction, Top
194 @chapter General ideas
195
196 The following sections cover a few basic ideas that will help you
197 understand how Automake works.
198
199 @menu
200 * General Operation::           General operation of Automake
201 * Strictness::                  Standards conformance checking
202 * Uniform::                     The Uniform Naming Scheme
203 * Canonicalization::            How derived variables are named
204 * User Variables::              Variables reserved for the user
205 * Auxiliary Programs::          Programs automake might require
206 @end menu
207
208
209 @node General Operation, Strictness, Generalities, Generalities
210 @section General Operation
211
212 Automake works by reading a @file{Makefile.am} and generating a
213 @file{Makefile.in}.  Certain macros and targets defined in the
214 @file{Makefile.am} instruct Automake to generate more specialized code;
215 for instance, a @samp{bin_PROGRAMS} macro definition will cause targets
216 for compiling and linking programs to be generated.
217
218 @cindex Non-standard targets
219 @cindex cvs-dist, non-standard example
220 @trindex cvs-dist
221
222 The macro definitions and targets in the @file{Makefile.am} are copied
223 verbatim into the generated file.  This allows you to add arbitrary code
224 into the generated @file{Makefile.in}.  For instance the Automake
225 distribution includes a non-standard @code{cvs-dist} target, which the
226 Automake maintainer uses to make distributions from his source control
227 system.
228
229 @cindex GNU make extensions
230
231 Note that GNU make extensions are not recognized by Automake.  Using
232 such extensions in a @file{Makefile.am} will lead to errors or confusing
233 behavior.
234
235 Automake tries to group comments with adjoining targets and macro
236 definitions in an intelligent way.
237 @c FIXME: What does this imply practically?
238
239 @cindex Make targets, overriding
240 @cindex Overriding make targets
241
242 A target defined in @file{Makefile.am} generally overrides any such
243 target of a similar name that would be automatically generated by
244 @code{automake}.  Although this is a supported feature, it is generally
245 best to avoid making use of it, as sometimes the generated rules are
246 very particular.
247
248 @cindex Macros, overriding
249 @cindex Overriding make macros
250
251 Similarly, a macro defined in @file{Makefile.am} or @code{AC_SUBST}'ed
252 from @file{configure.in} will override any definition of the macro that
253 @code{automake} would ordinarily create.  This feature is more often
254 useful than the ability to override a target definition.  Be warned that
255 many of the macros generated by @code{automake} are considered to be for
256 internal use only, and their names might change in future releases.
257
258 @cindex Recursive operation of Automake
259 @cindex Automake, recursive operation
260 @cindex Example of recursive operation
261
262 When examining a macro definition, Automake will recursively examine
263 macros referenced in the definition.  For example, if Automake is
264 looking at the content of @code{foo_SOURCES} in this snippet
265
266 @example
267 xs = a.c b.c
268 foo_SOURCES = c.c $(xs)
269 @end example
270
271 it would use the files @file{a.c}, @file{b.c}, and @file{c.c} as the
272 contents of @code{foo_SOURCES}.
273
274 @cindex ## (special Automake comment)
275 @cindex Special Automake comment
276 @cindex Comment, special to Automake
277
278 Automake also allows a form of comment which is @emph{not} copied into
279 the output; all lines beginning with @samp{##} (leading spaces allowed)
280 are completely ignored by Automake.
281
282 It is customary to make the first line of @file{Makefile.am} read:
283
284 @cindex Makefile.am, first line
285 @cindex First line of Makefile.am
286
287 @example
288 ## Process this file with automake to produce Makefile.in
289 @end example
290
291 @c FIXME discuss putting a copyright into Makefile.am here?  I would but
292 @c I don't know quite what to say.
293
294 @c FIXME document customary ordering of Makefile.am here!
295
296
297 @node Strictness, Uniform, General Operation, Generalities
298 @section Strictness
299
300 @cindex Non-GNU packages
301
302 While Automake is intended to be used by maintainers of GNU packages, it
303 does make some effort to accommodate those who wish to use it, but do
304 not want to use all the GNU conventions.
305
306 @cindex Strictness, defined
307 @cindex Strictness, foreign
308 @cindex foreign strictness
309 @cindex Strictness, gnu
310 @cindex gnu strictness
311 @cindex Strictness, gnits
312 @cindex gnits strictness
313
314 To this end, Automake supports three levels of @dfn{strictness}---the
315 strictness indicating how stringently Automake should check standards
316 conformance.
317
318 The valid strictness levels are:
319
320 @table @samp
321 @item foreign
322 Automake will check for only those things which are absolutely
323 required for proper operations.  For instance, whereas GNU standards
324 dictate the existence of a @file{NEWS} file, it will not be required in
325 this mode.  The name comes from the fact that Automake is intended to be
326 used for GNU programs; these relaxed rules are not the standard mode of
327 operation.
328
329 @item gnu
330 Automake will check---as much as possible---for compliance to the GNU
331 standards for packages.  This is the default.
332
333 @item gnits
334 Automake will check for compliance to the as-yet-unwritten @dfn{Gnits
335 standards}.  These are based on the GNU standards, but are even more
336 detailed.  Unless you are a Gnits standards contributor, it is
337 recommended that you avoid this option until such time as the Gnits
338 standard is actually published (which may never happen).
339 @end table
340
341 For more information on the precise implications of the strictness
342 level, see @ref{Gnits}.
343
344 Automake also has a special ``cygnus'' mode which is similar to
345 strictness but handled differently.  This mode is useful for packages
346 which are put into a ``Cygnus'' style tree (e.g., the GCC tree).  For
347 more information on this mode, see @ref{Cygnus}.
348
349
350 @node Uniform, Canonicalization, Strictness, Generalities
351 @section The Uniform Naming Scheme
352
353 @cindex Uniform naming scheme
354
355 Automake macros (from here on referred to as @emph{variables}) generally
356 follow a @dfn{uniform naming scheme} that makes it easy to decide how
357 programs (and other derived objects) are built, and how they are
358 installed.  This scheme also supports @code{configure} time
359 determination of what should be built.
360
361 @cindex _PROGRAMS primary variable
362 @cindex PROGRAMS primary variable
363 @cindex Primary variable, PROGRAMS
364 @cindex Primary variable, defined
365
366 At @code{make} time, certain variables are used to determine which
367 objects are to be built.  The variable names are made of several pieces
368 which are concatenated together.
369
370 The piece which tells automake what is being built is commonly called
371 the @dfn{primary}.  For instance, the primary @code{PROGRAMS} holds a
372 list of programs which are to be compiled and linked.
373 @vindex PROGRAMS
374
375 @cindex pkglibdir, defined
376 @cindex pkgincludedir, defined
377 @cindex pkgdatadir, defined
378
379 @vindex pkglibdir
380 @vindex pkgincludedir
381 @vindex pkgdatadir
382
383 A different set of names is used to decide where the built objects
384 should be installed.  These names are prefixes to the primary which
385 indicate which standard directory should be used as the installation
386 directory.  The standard directory names are given in the GNU standards
387 (@pxref{Directory Variables, , , standards, The GNU Coding Standards}).
388 Automake extends this list with @code{pkglibdir}, @code{pkgincludedir},
389 and @code{pkgdatadir}; these are the same as the non-@samp{pkg}
390 versions, but with @samp{@@PACKAGE@@} appended.  For instance,
391 @code{pkglibdir} is defined as @code{$(libdir)/@@PACKAGE@@}.
392 @cvindex PACKAGE, directory
393
394 @cindex EXTRA_, prepending
395
396 For each primary, there is one additional variable named by prepending
397 @samp{EXTRA_} to the primary name.  This variable is used to list
398 objects which may or may not be built, depending on what
399 @code{configure} decides.  This variable is required because Automake
400 must statically know the entire list of objects that may be built in
401 order to generate a @file{Makefile.in} that will work in all cases.
402
403 @cindex EXTRA_PROGRAMS, defined
404 @cindex Example, EXTRA_PROGRAMS
405 @cindex cpio example
406
407 For instance, @code{cpio} decides at configure time which programs are
408 built.  Some of the programs are installed in @code{bindir}, and some
409 are installed in @code{sbindir}:
410
411 @example
412 EXTRA_PROGRAMS = mt rmt
413 bin_PROGRAMS = cpio pax
414 sbin_PROGRAMS = @@MORE_PROGRAMS@@
415 @end example
416
417 Defining a primary without a prefix as a variable, e.g.,
418 @code{PROGRAMS}, is an error.
419
420 Note that the common @samp{dir} suffix is left off when constructing the
421 variable names; thus one writes @samp{bin_PROGRAMS} and not
422 @samp{bindir_PROGRAMS}.
423
424 Not every sort of object can be installed in every directory.  Automake
425 will flag those attempts it finds in error.
426 @c FIXME: This is broken today: &am_primary_prefix will allow data_PROGRAMS
427 @c because $datadir is defined before Makefile.am is parsed.  This
428 @c means that passing the list of allowed directory suffix to
429 @c &am_install_var or &am_primary_prefix is absolutely useless (except
430 @c for 'noinst', 'check' and friends).
431 Automake will also diagnose obvious misspellings in directory names.
432
433 @cindex Extending list of installation directories
434 @cindex Installation directories, extending list
435
436 Sometimes the standard directories---even as augmented by Automake---
437 are not enough.  In particular it is sometimes useful, for clarity, to
438 install objects in a subdirectory of some predefined directory.  To this
439 end, Automake allows you to extend the list of possible installation
440 directories.  A given prefix (e.g. @samp{zar}) is valid if a variable of
441 the same name with @samp{dir} appended is defined (e.g. @code{zardir}).
442
443 @cindex HTML support, example
444
445 For instance, until HTML support is part of Automake, you could use this
446 to install raw HTML documentation:
447
448 @example
449 htmldir = $(prefix)/html
450 html_DATA = automake.html
451 @end example
452
453 @cindex noinst primary prefix, definition
454
455 The special prefix @samp{noinst} indicates that the objects in question
456 should be built but not installed at all.  This is usually used for
457 objects required to build the rest of your package, for instance static
458 libraries (@pxref{A Library}), or helper scripts.
459
460 @cindex check primary prefix, definition
461
462 The special prefix @samp{check} indicates that the objects in question
463 should not be built until the @code{make check} command is run.  Those
464 objects are not installed either.
465
466 The current primary names are @samp{PROGRAMS}, @samp{LIBRARIES},
467 @samp{LISP}, @samp{PYTHON}, @samp{JAVA}, @samp{SCRIPTS}, @samp{DATA},
468 @samp{HEADERS}, @samp{MANS}, and @samp{TEXINFOS}.
469 @vindex PROGRAMS
470 @vindex LIBRARIES
471 @vindex LISP
472 @vindex PYTHON
473 @vindex JAVA
474 @vindex SCRIPTS
475 @vindex DATA
476 @vindex HEADERS
477 @vindex MANS
478 @vindex TEXINFOS
479
480 Some primaries also allow additional prefixes which control other
481 aspects of @code{automake}'s behavior.  The currently defined prefixes
482 are @samp{dist_}, @samp{nodist_}, and @samp{nobase_}.  These prefixes
483 are explained later (@pxref{Program and Library Variables}).
484
485
486 @node Canonicalization, User Variables, Uniform, Generalities
487 @section How derived variables are named
488
489 @cindex canonicalizing Automake macros
490
491 Sometimes a Makefile variable name is derived from some text the
492 maintainer supplies.  For instance, a program name listed in
493 @samp{_PROGRAMS} is rewritten into the name of a @samp{_SOURCES}
494 variable.  In cases like this, Automake canonicalizes the text, so that
495 program names and the like do not have to follow Makefile macro naming
496 rules.  All characters in the name except for letters, numbers, the
497 strudel (@@), and the underscore are turned into underscores when making
498 macro references.
499
500 For example, if your program is named @code{sniff-glue}, the derived
501 variable name would be @code{sniff_glue_SOURCES}, not
502 @code{sniff-glue_SOURCES}.
503
504 The strudel is an addition, to make the use of Autoconf substitutions in
505 macro names less obfuscating.
506
507
508 @node User Variables, Auxiliary Programs, Canonicalization, Generalities
509 @section Variables reserved for the user
510
511 @cindex variables, reserved for the user
512 @cindex user variables
513
514 Some @code{Makefile} variables are reserved by the GNU Coding Standards
515 for the use of the ``user'' -- the person building the package.  For
516 instance, @code{CFLAGS} is one such variable.
517
518 Sometimes package developers are tempted to set user variables such as
519 @code{CFLAGS} because it appears to make their job easier -- they don't
520 have to introduce a second variable into every target.
521
522 However, the package itself should never set a user variable,
523 particularly not to include switches which are required for proper
524 compilation of the package.  Since these variables are documented as
525 being for the package builder, that person rightfully expects to be able
526 to override any of these variables at build time.
527 @c FIXME: maybe Automake could bark if a developer forces a user variable
528 @c from Makefile.am.
529
530 To get around this problem, automake introduces an automake-specific
531 shadow variable for each user flag variable.  (Shadow variables are not
532 introduced for variables like @code{CC}, where they would make no
533 sense.)  The shadow variable is named by prepending @samp{AM_} to the
534 user variable's name.  For instance, the shadow variable for
535 @code{YFLAGS} is @code{AM_YFLAGS}.
536
537
538 @node Auxiliary Programs,  , User Variables, Generalities
539 @section Programs automake might require
540
541 @cindex Programs, auxiliary
542 @cindex Auxiliary programs
543
544 Automake sometimes requires helper programs so that the generated
545 @file{Makefile} can do its work properly.  There are a fairly large
546 number of them, and we list them here.
547
548 @table @code
549 @item ansi2knr.c
550 @itemx ansi2knr.1
551 These two files are used by the automatic de-ANSI-fication support
552 (@pxref{ANSI}).
553
554 @item compile
555 This is a wrapper for compilers which don't accept both @samp{-c} and
556 @samp{-o} at the same time.  It is only used when absolutely required.
557 Such compilers are rare.
558
559 @item config.guess
560 @itemx config.sub
561 These programs compute the canonical triplets for the given build, host,
562 or target architecture.  These programs are updated regulary to support
563 new architectures and fix probes broken by changes in new kernel
564 versions.  You are encouraged to fetch the latest versions of these
565 files from @url{ftp://ftp.gnu.org/gnu/config/} before making a release.
566
567 @item depcomp
568 This program understands how to run a compiler so that it will generate
569 not only the desired output but also dependency information which is
570 then used by the automatic dependency tracking feature.
571
572 @item elisp-comp
573 This program is used to byte-compile Emacs Lisp code.
574
575 @item install-sh
576 This is a replacement for the @code{install} program which works on
577 platforms where @code{install} is unavailable or unusable.
578
579 @item mdate-sh
580 This script is used to generate a @file{version.texi} file.  It examines
581 a file and prints some date information about it.
582
583 @item missing
584 This wraps a number of programs which are typically only required by
585 maintainers.  If the program in question doesn't exist, @code{missing}
586 prints an informative warning and attempts to fix things so that the
587 build can continue.
588
589 @item mkinstalldirs
590 This works around the fact that @code{mkdir -p} is not portable.
591
592 @item py-compile
593 This is used to byte-compile Python scripts.
594
595 @item texinfo.tex
596 Not a program, this file is required for @code{make dvi} to work when
597 Texinfo sources are in the package.
598
599 @item ylwrap
600 This program wraps @code{lex} and @code{yacc} and ensures that, for
601 instance, multiple @code{yacc} instances can be invoked in a single
602 directory in parallel.
603
604 @end table
605
606
607 @node Examples, Invoking Automake, Generalities, Top
608 @chapter Some example packages
609
610 @menu
611 * Complete::                    A simple example, start to finish
612 * Hello::                       A classic program
613 * etags::                       Building etags and ctags
614 @end menu
615
616
617 @node Complete, Hello, Examples, Examples
618 @section A simple example, start to finish
619
620 @cindex Complete example
621
622 Let's suppose you just finished writing @code{zardoz}, a program to make
623 your head float from vortex to vortex.  You've been using Autoconf to
624 provide a portability framework, but your @file{Makefile.in}s have been
625 ad-hoc.  You want to make them bulletproof, so you turn to Automake.
626
627 @cindex AM_INIT_AUTOMAKE, example use
628
629 The first step is to update your @file{configure.in} to include the
630 commands that @code{automake} needs.  The way to do this is to add an
631 @code{AM_INIT_AUTOMAKE} call just after @code{AC_INIT}:
632
633 @example
634 AC_INIT(zardoz, 1.0)
635 AM_INIT_AUTOMAKE
636 ...
637 @end example
638
639 Since your program doesn't have any complicating factors (e.g., it
640 doesn't use @code{gettext}, it doesn't want to build a shared library),
641 you're done with this part.  That was easy!
642
643 @cindex aclocal program, introduction
644 @cindex aclocal.m4, preexisting
645 @cindex acinclude.m4, defined
646
647 Now you must regenerate @file{configure}.  But to do that, you'll need
648 to tell @code{autoconf} how to find the new macro you've used.  The
649 easiest way to do this is to use the @code{aclocal} program to generate
650 your @file{aclocal.m4} for you.  But wait... maybe you already have an
651 @file{aclocal.m4}, because you had to write some hairy macros for your
652 program.  The @code{aclocal} program lets you put your own macros into
653 @file{acinclude.m4}, so simply rename and then run:
654
655 @example
656 mv aclocal.m4 acinclude.m4
657 aclocal
658 autoconf
659 @end example
660
661 @cindex zardoz example
662
663 Now it is time to write your @file{Makefile.am} for @code{zardoz}.
664 Since @code{zardoz} is a user program, you want to install it where the
665 rest of the user programs go: @code{bindir}.  Additionally,
666 @code{zardoz} has some Texinfo documentation.  Your @file{configure.in}
667 script uses @code{AC_REPLACE_FUNCS}, so you need to link against
668 @samp{@@LIBOBJS@@}.  So here's what you'd write:
669
670 @example
671 bin_PROGRAMS = zardoz
672 zardoz_SOURCES = main.c head.c float.c vortex9.c gun.c
673 zardoz_LDADD = @@LIBOBJS@@
674
675 info_TEXINFOS = zardoz.texi
676 @end example
677
678 Now you can run @code{automake --add-missing} to generate your
679 @file{Makefile.in} and grab any auxiliary files you might need, and
680 you're done!
681
682
683 @node Hello, etags, Complete, Examples
684 @section A classic program
685
686 @cindex Example, GNU Hello
687 @cindex Hello example
688 @cindex GNU Hello, example
689
690 @uref{ftp://prep.ai.mit.edu/pub/gnu/hello-1.3.tar.gz, GNU hello} is
691 renowned for its classic simplicity and versatility.  This section shows
692 how Automake could be used with the GNU Hello package.  The examples
693 below are from the latest beta version of GNU Hello, but with all of the
694 maintainer-only code stripped out, as well as all copyright comments.
695
696 Of course, GNU Hello is somewhat more featureful than your traditional
697 two-liner.  GNU Hello is internationalized, does option processing, and
698 has a manual and a test suite.
699
700 @cindex configure.in, from GNU Hello
701 @cindex GNU Hello, configure.in
702 @cindex Hello, configure.in
703
704 Here is the @file{configure.in} from GNU Hello:
705 @c FIXME: This definitively requires an update.
706
707 @example
708 dnl Process this file with autoconf to produce a configure script.
709 AC_INIT(src/hello.c)
710 AM_INIT_AUTOMAKE(hello, 1.3.11)
711 AM_CONFIG_HEADER(config.h)
712
713 dnl Set of available languages.
714 ALL_LINGUAS="de fr es ko nl no pl pt sl sv"
715
716 dnl Checks for programs.
717 AC_PROG_CC
718 AC_ISC_POSIX
719
720 dnl Checks for libraries.
721
722 dnl Checks for header files.
723 AC_STDC_HEADERS
724 AC_HAVE_HEADERS(string.h fcntl.h sys/file.h sys/param.h)
725
726 dnl Checks for library functions.
727 AC_FUNC_ALLOCA
728
729 dnl Check for st_blksize in struct stat
730 AC_ST_BLKSIZE
731
732 dnl internationalization macros
733 AM_GNU_GETTEXT
734 AC_OUTPUT([Makefile doc/Makefile intl/Makefile po/Makefile.in \
735            src/Makefile tests/Makefile tests/hello],
736    [chmod +x tests/hello])
737 @end example
738
739 The @samp{AM_} macros are provided by Automake (or the Gettext library);
740 the rest are standard Autoconf macros.
741
742
743 The top-level @file{Makefile.am}:
744
745 @example
746 EXTRA_DIST = BUGS ChangeLog.O
747 SUBDIRS = doc intl po src tests
748 @end example
749
750 As you can see, all the work here is really done in subdirectories.
751
752 The @file{po} and @file{intl} directories are automatically generated
753 using @code{gettextize}; they will not be discussed here.
754
755 @cindex Texinfo file handling example
756 @cindex Example, handling Texinfo files
757
758 In @file{doc/Makefile.am} we see:
759
760 @example
761 info_TEXINFOS = hello.texi
762 hello_TEXINFOS = gpl.texi
763 @end example
764
765 This is sufficient to build, install, and distribute the GNU Hello
766 manual.
767
768 @cindex Regression test example
769 @cindex Example, regression test
770
771 Here is @file{tests/Makefile.am}:
772
773 @example
774 TESTS = hello
775 EXTRA_DIST = hello.in testdata
776 @end example
777
778 The script @file{hello} is generated by @code{configure}, and is the
779 only test case.  @code{make check} will run this test.
780
781 @cindex INCLUDES, example usage
782
783 Last we have @file{src/Makefile.am}, where all the real work is done:
784 @c FIXME: As all the Hello World excerpts in this manual, this
785 @c shows deprecated features (here: $(INCLUDES)).
786
787 @example
788 bin_PROGRAMS = hello
789 hello_SOURCES = hello.c version.c getopt.c getopt1.c getopt.h system.h
790 hello_LDADD = @@INTLLIBS@@ @@ALLOCA@@
791 localedir = $(datadir)/locale
792 INCLUDES = -I../intl -DLOCALEDIR=\"$(localedir)\"
793 @end example
794
795
796 @node etags,  , Hello, Examples
797 @section Building etags and ctags
798
799 @cindex Example, ctags and etags
800 @cindex ctags Example
801 @cindex etags Example
802
803 Here is another, trickier example.  It shows how to generate two
804 programs (@code{ctags} and @code{etags}) from the same source file
805 (@file{etags.c}).  The difficult part is that each compilation of
806 @file{etags.c} requires different @code{cpp} flags.
807
808 @example
809 bin_PROGRAMS = etags ctags
810 ctags_SOURCES =
811 ctags_LDADD = ctags.o
812
813 etags.o: etags.c
814         $(COMPILE) -DETAGS_REGEXPS -c etags.c
815
816 ctags.o: etags.c
817         $(COMPILE) -DCTAGS -o ctags.o -c etags.c
818 @end example
819
820 Note that there is no @code{etags_SOURCES} definition.  Automake will
821 implicitly assume that there is a source file named @file{etags.c}, and
822 define rules to compile @file{etags.o} and link @file{etags}.  The
823 @code{etags.o: etags.c} rule supplied by the above @file{Makefile.am},
824 will override the Automake generated rule to build @file{etags.o}.
825
826 @code{ctags_SOURCES} is defined to be empty---that way no implicit value
827 is substituted.  Because we have not listed the source of
828 @file{ctags}, we have to tell Automake how to link the program.  This is
829 the purpose of the @code{ctags_LDADD} line.  A @code{ctags_DEPENDENCIES}
830 variable, holding the dependencies of the @file{ctags} target will be
831 automatically generated by Automake from the contant of
832 @code{ctags_LDADD}.
833
834 The above rules won't work if your compiler doesn't accept both
835 @samp{-c} and @samp{-o}.  The simplest fix for this is to introduce a
836 bogus dependency (to avoid problems with a parallel @code{make}):
837
838 @example
839 etags.o: etags.c ctags.o
840         $(COMPILE) -DETAGS_REGEXPS -c etags.c
841
842 ctags.o: etags.c
843         $(COMPILE) -DCTAGS -c etags.c && mv etags.o ctags.o
844 @end example
845
846 Also, these explicit rules do not work if the de-ANSI-fication feature
847 is used (@pxref{ANSI}).  Supporting de-ANSI-fication requires a little
848 more work:
849
850 @example
851 etags._o: etags._c ctags.o
852         $(COMPILE) -DETAGS_REGEXPS -c etags.c
853
854 ctags._o: etags._c
855         $(COMPILE) -DCTAGS -c etags.c && mv etags._o ctags.o
856 @end example
857
858 As it turns out, there is also a much easier way to do this same task.
859 Some of the above techniques are useful enough that we've kept the
860 example in the manual.  However if you were to build @code{etags} and
861 @code{ctags} in real life, you would probably use per-program
862 compilation flags, like so:
863
864 @example
865 bin_PROGRAMS = ctags etags
866
867 ctags_SOURCES = etags.c
868 ctags_CFLAGS = -DCTAGS
869
870 etags_SOURCES = etags.c
871 etags_CFLAGS = -DETAGS_REGEXPS
872 @end example
873
874 In this case Automake will cause @file{etags.c} to be compiled twice,
875 with different flags.  De-ANSI-fication will work automatically.  In
876 this instance, the names of the object files would be chosen by
877 automake; they would be @file{ctags-etags.o} and @file{etags-etags.o}.
878 (The name of the object files rarely matters.)
879
880
881 @node Invoking Automake, configure, Examples, Top
882 @chapter Creating a @file{Makefile.in}
883
884 @cindex Multiple configure.in files
885 @cindex Invoking Automake
886 @cindex Automake, invoking
887
888 To create all the @file{Makefile.in}s for a package, run the
889 @code{automake} program in the top level directory, with no arguments.
890 @code{automake} will automatically find each appropriate
891 @file{Makefile.am} (by scanning @file{configure.in}; @pxref{configure})
892 and generate the corresponding @file{Makefile.in}.  Note that
893 @code{automake} has a rather simplistic view of what constitutes a
894 package; it assumes that a package has only one @file{configure.in}, at
895 the top.  If your package has multiple @file{configure.in}s, then you
896 must run @code{automake} in each directory holding a
897 @file{configure.in}.  (Alteratively, you may rely on Autoconf's
898 @code{autoreconf}, which is able to recurse your package tree and run
899 @code{automake} where appropriate.)
900
901 You can optionally give @code{automake} an argument; @file{.am} is
902 appended to the argument and the result is used as the name of the input
903 file.  This feature is generally only used to automatically rebuild an
904 out-of-date @file{Makefile.in}.  Note that @code{automake} must always
905 be run from the topmost directory of a project, even if being used to
906 regenerate the @file{Makefile.in} in some subdirectory.  This is
907 necessary because @code{automake} must scan @file{configure.in}, and
908 because @code{automake} uses the knowledge that a @file{Makefile.in} is
909 in a subdirectory to change its behavior in some cases.
910
911 @cindex Automake options
912 @cindex Options, Automake
913 @cindex Strictness, command line
914
915 @code{automake} accepts the following options:
916
917 @cindex Extra files distributed with Automake
918 @cindex Files distributed with Automake
919 @cindex config.guess
920
921 @table @samp
922 @item -a
923 @itemx --add-missing
924 @opindex -a
925 @opindex --add-missing
926 Automake requires certain common files to exist in certain situations;
927 for instance @file{config.guess} is required if @file{configure.in} runs
928 @code{AC_CANONICAL_HOST}.  Automake is distributed with several of these
929 files (@pxref{Auxiliary Programs}); this option will cause the missing
930 ones to be automatically added to the package, whenever possible.  In
931 general if Automake tells you a file is missing, try using this option.
932 By default Automake tries to make a symbolic link pointing to its own
933 copy of the missing file; this can be changed with @code{--copy}.
934
935 @item --libdir=@var{dir}
936 @opindex --libdir
937 Look for Automake data files in directory @var{dir} instead of in the
938 installation directory.  This is typically used for debugging.
939
940 @item -c
941 @opindex -c
942 @itemx --copy
943 @opindex --copy
944 When used with @code{--add-missing}, causes installed files to be
945 copied.  The default is to make a symbolic link.
946
947 @item --cygnus
948 @opindex --cygnus
949 Causes the generated @file{Makefile.in}s to follow Cygnus rules, instead
950 of GNU or Gnits rules.  For more information, see @ref{Cygnus}.
951
952 @item -f
953 @opindex -f
954 @itemx --force-missing
955 @opindex --force-missing
956 When used with @code{--add-missing}, causes standard files to be reinstalled
957 even if they already exist in the source tree.  This involves removing
958 the file from the source tree before creating the new symlink (or, with
959 @code{--copy}, copying the new file).
960
961 @item --foreign
962 @opindex --foreign
963 Set the global strictness to @samp{foreign}.  For more information, see
964 @ref{Strictness}.
965
966 @item --gnits
967 @opindex --gnits
968 Set the global strictness to @samp{gnits}.  For more information, see
969 @ref{Gnits}.
970
971 @item --gnu
972 @opindex --gnu
973 Set the global strictness to @samp{gnu}.  For more information, see
974 @ref{Gnits}.  This is the default strictness.
975
976 @item --help
977 @opindex --help
978 Print a summary of the command line options and exit.
979
980 @item -i
981 @itemx --ignore-deps
982 @opindex -i
983 This disables the dependency tracking feature in generated
984 @file{Makefile}s; see @ref{Dependencies}.
985
986 @item --include-deps
987 @opindex --include-deps
988 This enables the dependency tracking feature.  This feature is enabled
989 by default.  This option is provided for historical reasons only and
990 probably should not be used.
991
992 @item --no-force
993 @opindex --no-force
994 Ordinarily @code{automake} creates all @file{Makefile.in}s mentioned in
995 @file{configure.in}.  This option causes it to only update those
996 @file{Makefile.in}s which are out of date with respect to one of their
997 dependents.
998
999 @item -o @var{dir}
1000 @itemx --output-dir=@var{dir}
1001 @opindex -o
1002 @opindex --output-dir
1003 @c FIXME: This seems to be a left-over from Automake 1.4, unused today.
1004 Put the generated @file{Makefile.in} in the directory @var{dir}.
1005 Ordinarily each @file{Makefile.in} is created in the directory of the
1006 corresponding @file{Makefile.am}.  This option is used when making
1007 distributions.
1008
1009 @item -v
1010 @itemx --verbose
1011 @opindex -v
1012 @opindex --verbose
1013 Cause Automake to print information about which files are being read or
1014 created.
1015
1016 @item --version
1017 @opindex --version
1018 Print the version number of Automake and exit.
1019
1020 @item --Werror
1021 @itemx --Wno-error
1022 @opindex --Werror
1023 @opindex --Wno-error
1024 @samp{--Werror} will cause all warnings issued by @code{automake} to
1025 become errors.  Errors affect the exit status of @code{automake}, while
1026 warnings do not.  @samp{--Wno-error}, the default, causes warnings to be
1027 treated as warnings only.
1028 @end table
1029
1030
1031 @node configure, Top level, Invoking Automake, Top
1032 @chapter Scanning @file{configure.in}
1033
1034 @cindex configure.in, scanning
1035 @cindex Scanning configure.in
1036
1037 Automake scans the package's @file{configure.in} to determine certain
1038 information about the package.  Some @code{autoconf} macros are required
1039 and some variables must be defined in @file{configure.in}.  Automake
1040 will also use information from @file{configure.in} to further tailor its
1041 output.
1042
1043 Automake also supplies some Autoconf macros to make the maintenance
1044 easier.  These macros can automatically be put into your
1045 @file{aclocal.m4} using the @code{aclocal} program.
1046
1047 @menu
1048 * Requirements::                Configuration requirements
1049 * Optional::                    Other things Automake recognizes
1050 * Invoking aclocal::            Auto-generating aclocal.m4
1051 * Macros::                      Autoconf macros supplied with Automake
1052 * Extending aclocal::           Writing your own aclocal macros
1053 @end menu
1054
1055
1056 @node Requirements, Optional, configure, configure
1057 @section Configuration requirements
1058
1059 @cindex Automake requirements
1060 @cindex Requirements of Automake
1061
1062 The one real requirement of Automake is that your @file{configure.in}
1063 call @code{AM_INIT_AUTOMAKE}.  This macro does several things which are
1064 required for proper Automake operation (@pxref{Macros}).
1065 @cvindex AM_INIT_AUTOMAKE
1066
1067 Here are the other macros which Automake requires but which are not run
1068 by @code{AM_INIT_AUTOMAKE}:
1069
1070 @cindex AC_OUTPUT, scanning
1071
1072 @table @code
1073 @item AC_CONFIG_FILES
1074 @itemx AC_OUTPUT
1075 Automake uses these to determine which files to create (@pxref{Output, ,
1076 Creating Output Files, autoconf, The Autoconf Manual}).  A listed file
1077 is considered to be an Automake generated @file{Makefile} if there
1078 exists a file with the same name and the @file{.am} extension appended.
1079 Typically, @code{AC_CONFIG_FILES([foo/Makefile])} will cause Automake to
1080 generate @file{foo/Makefile.in} if @file{foo/Makefile.am} exists.
1081
1082 Other listed files are treated differently.  Currently the only
1083 difference is that an Automake @file{Makefile} is removed by @code{make
1084 distclean}, while other files are removed by @code{make clean}.
1085 @c FIXME: this is in violation of standards!
1086 @cvindex AC_OUTPUT
1087 @end table
1088
1089
1090 @node Optional, Invoking aclocal, Requirements, configure
1091 @section Other things Automake recognizes
1092
1093 @cindex Macros Automake recognizes
1094 @cindex Recognized macros by Automake
1095
1096 Automake will also recognize the use of certain macros and tailor the
1097 generated @file{Makefile.in} appropriately.  Currently recognized macros
1098 and their effects are:
1099
1100 @table @code
1101 @item AC_CONFIG_HEADER
1102 Automake requires the use of @code{AM_CONFIG_HEADER} (@pxref{Macros}),
1103 which is similar to @code{AC_CONFIG_HEADER} (@pxref{Configuration
1104 Headers, , Configuration Header Files, autoconf, The Autoconf Manual}),
1105 but does some useful Automake-specific work.
1106 @cvindex AC_CONFIG_HEADER
1107
1108 @item AC_CONFIG_AUX_DIR
1109 Automake will look for various helper scripts, such as
1110 @file{mkinstalldirs}, in the directory named in this macro invocation.
1111 If not seen, the scripts are looked for in their @samp{standard}
1112 locations (either the top source directory, or in the source directory
1113 corresponding to the current @file{Makefile.am}, whichever is
1114 appropriate).  @xref{Input, , Finding `configure' Input, autoconf, The
1115 Autoconf Manual}.
1116 @cvindex AC_CONFIG_AUX_DIR
1117 FIXME: give complete list of things looked for in this directory
1118
1119 @item AC_PATH_XTRA
1120 Automake will insert definitions for the variables defined by
1121 @code{AC_PATH_XTRA} into each @file{Makefile.in} that builds a C program
1122 or library.  @xref{System Services, , System Services, autoconf, The
1123 Autoconf Manual}.
1124 @cvindex AC_PATH_XTRA
1125
1126 @item AC_CANONICAL_HOST
1127 Automake will ensure that @file{config.guess} and @file{config.sub}
1128 exist.  Also, the @file{Makefile} variables @samp{host_alias} and
1129 @samp{host_triplet} are introduced.  See @ref{Canonicalizing, ,
1130 Getting the Canonical System Type, autoconf, The Autoconf Manual}.
1131 @cvindex AC_CANONICAL_HOST
1132 @vindex host_alias
1133 @vindex host_triplet
1134
1135 @item AC_CANONICAL_SYSTEM
1136 This is similar to @code{AC_CANONICAL_HOST}, but also defines the
1137 @file{Makefile} variables @samp{build_alias} and @samp{target_alias}.
1138 @xref{Canonicalizing, , Getting the Canonical System Type, autoconf, The
1139 Autoconf Manual}.
1140 @cvindex AC_CANONICAL_SYSTEM
1141 @vindex build_alias
1142 @vindex target_alias
1143
1144 @item  AC_FUNC_ALLOCA
1145 @itemx AC_FUNC_ERROR_AT_LINE
1146 @itemx AC_FUNC_FNMATCH
1147 @itemx AC_FUNC_GETLOADAVG
1148 @itemx AC_FUNC_MEMCMP
1149 @itemx AC_FUNC_MKTIME
1150 @itemx AC_FUNC_OBSTACK
1151 @itemx AC_FUNC_STRTOD
1152 @itemx AC_REPLACE_FUNCS
1153 @itemx AC_REPLACE_GNU_GETOPT
1154 @itemx AC_STRUCT_ST_BLOCKS
1155 @itemx AM_WITH_REGEX
1156 Automake will ensure that the appropriate dependencies are generated for
1157 the objects corresponding to these macros.  Also, Automake will verify
1158 that the appropriate source files are part of the distribution.  Note
1159 that Automake does not come with any of the C sources required to use
1160 these macros, so @code{automake -a} will not install the sources.
1161 @xref{A Library}, for more information.  Also, see @ref{Particular
1162 Functions, , Particular Function Checks, autoconf, The Autoconf Manual}.
1163 @cvindex AC_FUNC_ALLOCA
1164 @cvindex AC_FUNC_ERROR_AT_LINE
1165 @cvindex AC_FUNC_FNMATCH
1166 @cvindex AC_FUNC_GETLOADAVG
1167 @cvindex AC_FUNC_MEMCMP
1168 @cvindex AC_FUNC_MKTIME
1169 @cvindex AC_FUNC_OBSTACK
1170 @cvindex AC_FUNC_STRTOD
1171 @cvindex AC_REPLACE_FUNCS
1172 @cvindex AC_REPLACE_GNU_GETOPT
1173 @cvindex AC_STRUCT_ST_BLOCKS
1174 @cvindex AM_WITH_REGEX
1175
1176 @item AC_LIBOBJ
1177 @itemx LIBOBJS
1178 @itemx AC_LIBSOURCE
1179 @itemx AC_LIBSOURCES
1180 Automake will detect statements which put @file{.o} files into
1181 @code{LIBOBJS}, or pass @file{.o} files to @code{AC_LIBOBJ}, and will
1182 treat these additional files as if they were discovered via
1183 @code{AC_REPLACE_FUNCS}.  Similarly, Automake will also distribute file
1184 listed in @code{AC_LIBSOURCE} and @code{AC_LIBSOURCES}.
1185
1186 Note that assignments to @code{LIBOBJS} is a construct which is being
1187 phased out; they will be ignored in a future release of Automake.  You
1188 should call the @code{AC_LIBOBJ} macro instead.  @xref{Generic
1189 Functions, , Generic Function Checks, autoconf, The Autoconf Manual}.
1190
1191 @cvindex AC_LIBOBJ
1192 @cvindex AC_LIBSOURCE
1193 @cvindex AC_LIBSOURCES
1194 @cvindex LIBOBJS
1195
1196 @item AC_PROG_RANLIB
1197 This is required if any libraries are built in the package.
1198 @xref{Particular Programs, , Particular Program Checks, autoconf, The
1199 Autoconf Manual}.
1200 @cvindex AC_PROG_RANLIB
1201
1202 @item AC_PROG_CXX
1203 This is required if any C++ source is included.  @xref{Particular
1204 Programs, , Particular Program Checks, autoconf, The Autoconf Manual}.
1205 @cvindex AC_PROG_CXX
1206
1207 @item AC_PROG_F77
1208 This is required if any Fortran 77 source is included.  This macro is
1209 distributed with Autoconf version 2.13 and later.  @xref{Particular
1210 Programs, , Particular Program Checks, autoconf, The Autoconf Manual}.
1211 @cvindex AC_PROG_F77
1212
1213 @item AC_F77_LIBRARY_LDFLAGS
1214 This is required for programs and shared libraries that are a mixture of
1215 languages that include Fortran 77 (@pxref{Mixing Fortran 77 With C and
1216 C++}).  @xref{Macros, , Autoconf macros supplied with Automake}.
1217 @cvindex AC_F77_LIBRARY_LDFLAGS
1218
1219 @item AC_PROG_LIBTOOL
1220 Automake will turn on processing for @code{libtool} (@pxref{Top, ,
1221 Introduction, libtool, The Libtool Manual}).
1222 @cvindex AC_PROG_LIBTOOL
1223
1224 @item AC_PROG_YACC
1225 If a Yacc source file is seen, then you must either use this macro or
1226 define the variable @samp{YACC} in @file{configure.in}.  The former is
1227 preferred (@pxref{Particular Programs, , Particular Program Checks,
1228 autoconf, The Autoconf Manual}).
1229 @cvindex AC_PROG_YACC
1230 @cvindex YACC
1231
1232 @item AC_PROG_LEX
1233 If a Lex source file is seen, then this macro must be used.
1234 @xref{Particular Programs, , Particular Program Checks, autoconf, The
1235 Autoconf Manual}.
1236 @cvindex AC_PROG_LEX
1237
1238 @item AM_C_PROTOTYPES
1239 This is required when using automatic de-ANSI-fication; see @ref{ANSI}.
1240 @cvindex AM_C_PROTOTYPES
1241
1242 @item AM_GNU_GETTEXT
1243 This macro is required for packages which use GNU gettext
1244 (@pxref{gettext}).  It is distributed with gettext.  If Automake sees
1245 this macro it ensures that the package meets some of gettext's
1246 requirements.
1247 @cvindex AM_GNU_GETTEXT
1248
1249 @item AM_MAINTAINER_MODE
1250 @opindex --enable-maintainer-mode
1251 This macro adds a @samp{--enable-maintainer-mode} option to
1252 @code{configure}.  If this is used, @code{automake} will cause
1253 @samp{maintainer-only} rules to be turned off by default in the
1254 generated @file{Makefile.in}s.  This macro is disallowed in @samp{Gnits}
1255 mode (@pxref{Gnits}).  This macro defines the @samp{MAINTAINER_MODE}
1256 conditional, which you can use in your own @file{Makefile.am}.
1257 @cvindex AM_MAINTAINER_MODE
1258
1259 @item AC_SUBST
1260 @itemx AC_CHECK_TOOL
1261 @itemx AC_CHECK_PROG
1262 @itemx AC_CHECK_PROGS
1263 @itemx AC_PATH_PROG
1264 @itemx AC_PATH_PROGS
1265 For each of these macros, the first argument is automatically defined as
1266 a variable in each generated @file{Makefile.in}.  @xref{Setting Output
1267 Variables, , Setting Output Variables, autoconf, The Autoconf Manual},
1268 and @ref{Generic Programs, , Generic Program Checks, autoconf, The
1269 Autoconf Manual}.
1270 @cvindex AC_SUBST
1271 @cvindex AC_CHECK_TOOL
1272 @cvindex AC_CHECK_PROG
1273 @cvindex AC_CHECK_PROGS
1274 @cvindex AC_PATH_PROG
1275 @cvindex AC_PATH_PROGS
1276
1277 @end table
1278
1279
1280 @node Invoking aclocal, Macros, Optional, configure
1281 @section Auto-generating aclocal.m4
1282
1283 @cindex Invoking aclocal
1284 @cindex aclocal, Invoking
1285
1286 Automake includes a number of Autoconf macros which can be used in your
1287 package; some of them are actually required by Automake in certain
1288 situations.  These macros must be defined in your @file{aclocal.m4};
1289 otherwise they will not be seen by @code{autoconf}.
1290
1291 The @code{aclocal} program will automatically generate @file{aclocal.m4}
1292 files based on the contents of @file{configure.in}.  This provides a
1293 convenient way to get Automake-provided macros, without having to
1294 search around.  Also, the @code{aclocal} mechanism allows other packages
1295 to supply their own macros.
1296
1297 At startup, @code{aclocal} scans all the @file{.m4} files it can find,
1298 looking for macro definitions.  Then it scans @file{configure.in}.  Any
1299 mention of one of the macros found in the first step causes that macro,
1300 and any macros it in turn requires, to be put into @file{aclocal.m4}.
1301
1302 The contents of @file{acinclude.m4}, if it exists, are also
1303 automatically included in @file{aclocal.m4}.  This is useful for
1304 incorporating local macros into @file{configure}.
1305
1306 @code{aclocal} tries to be smart about looking for new @code{AC_DEFUN}s
1307 in the files it scans.  It also
1308 tries to copy the full text of the scanned file into @file{aclocal.m4},
1309 including both @samp{#} and @samp{dnl} comments.  If you want to make a
1310 comment which will be completely ignored by @code{aclocal}, use
1311 @samp{##} as the comment leader.
1312
1313 @code{aclocal} accepts the following options:
1314
1315 @table @code
1316 @item --acdir=@var{dir}
1317 @opindex --acdir
1318 Look for the macro files in @var{dir} instead of the installation
1319 directory.  This is typically used for debugging.
1320
1321 @item --help
1322 @opindex --help
1323 Print a summary of the command line options and exit.
1324
1325 @item -I @var{dir}
1326 @opindex -I
1327 Add the directory @var{dir} to the list of directories searched for
1328 @file{.m4} files.
1329
1330 @item --output=@var{file}
1331 @opindex --output
1332 Cause the output to be put into @var{file} instead of @file{aclocal.m4}.
1333
1334 @item --print-ac-dir
1335 @opindex --print-ac-dir
1336 Prints the name of the directory which @code{aclocal} will search to
1337 find third-party @file{.m4} files.  When this option is given, normal
1338 processing is suppressed.  This option can be used by a package to
1339 determine where to install a macro file.
1340
1341 @item --verbose
1342 @opindex --verbose
1343 Print the names of the files it examines.
1344
1345 @item --version
1346 @opindex --version
1347 Print the version number of Automake and exit.
1348 @end table
1349
1350
1351 @node Macros, Extending aclocal, Invoking aclocal, configure
1352 @section Autoconf macros supplied with Automake
1353
1354 Automake ships with several Autoconf macros that you can use from your
1355 @file{configure.in}.  When you use one of them it will be included by
1356 @code{aclocal} in @file{aclocal.m4}.
1357
1358 @menu
1359 * Public macros::               Macros that you can use.
1360 * Private macros::              Macros that you should not use.
1361 @end menu
1362
1363 @c consider generating the following subsections automatically from m4 files.
1364
1365 @node Public macros, Private macros, Macros, Macros
1366 @subsection Public macros
1367
1368 @table @code
1369 @item AM_CONFIG_HEADER
1370 Automake will generate rules to automatically regenerate the config
1371 header.
1372 @cvindex AM_CONFIG_HEADER
1373
1374 @item AM_ENABLE_MULTILIB
1375 This is used when a ``multilib'' library is being built.  The first
1376 optional argument is the name of the @file{Makefile} being generated; it
1377 defaults to @samp{Makefile}.  The second option argument is used to find
1378 the top source directory; it defaults to the empty string (generally
1379 this should not be used unless you are familiar with the internals).
1380 @xref{Multilibs}.
1381
1382 @item AM_C_PROTOTYPES
1383 Check to see if function prototypes are understood by the compiler.  If
1384 so, define @samp{PROTOTYPES} and set the output variables @samp{U} and
1385 @samp{ANSI2KNR} to the empty string.  Otherwise, set @samp{U} to
1386 @samp{_} and @samp{ANSI2KNR} to @samp{./ansi2knr}.  Automake uses these
1387 values to implement automatic de-ANSI-fication.
1388 @cvindex AM_C_PROTOTYPES
1389
1390 @item AM_HEADER_TIOCGWINSZ_NEEDS_SYS_IOCTL
1391 If the use of @code{TIOCGWINSZ} requires @file{<sys/ioctl.h>}, then
1392 define @code{GWINSZ_IN_SYS_IOCTL}.  Otherwise @code{TIOCGWINSZ} can be
1393 found in @file{<termios.h>}.
1394 @cvindex AM_HEADER_TIOCGWINSZ_NEEDS_SYS_IOCTL
1395
1396 @item AM_INIT_AUTOMAKE([OPTIONS])
1397 @itemx AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
1398 Runs many macros required for proper operation of the generated Makefiles.
1399
1400 This macro has two forms, the second of which has two required
1401 arguments: the package and the version number.  This latter form is
1402 obsolete because the @var{package} and @var{version} can be obtained
1403 from Autoconf's @code{AC_INIT} macro (which itself has an old and a new
1404 form).
1405
1406 If your @file{configure.in} has:
1407 @example
1408 AC_INIT(src/foo.c)
1409 AM_INIT_AUTOMAKE(mumble, 1.5)
1410 @end example
1411 you can modernize it as follow:
1412 @example
1413 AC_INIT(mumble, 1.5)
1414 AC_CONFIG_SRCDIR(src/foo.c)
1415 AM_INIT_AUTOMAKE
1416 @end example
1417
1418 Note that if you're upgrading your @file{configure.in} from an earlier
1419 version of Automake, it is not always correct to simply move the package
1420 and version arguments from @code{AM_INIT_AUTOMAKE} directly to
1421 @code{AC_INIT}, as in the example above.  The first argument of
1422 @code{AC_INIT} is the name of your package (e.g. @samp{GNU Automake}),
1423 not the tarball name (e.g. @samp{automake}) you used to pass to
1424 @code{AM_INIT_AUTOMAKE}.  Autoconf's rule to derive a tarball name from
1425 the package name should work for most but not all packages.  Especially,
1426 if your tarball name is not all lower case, you will have to use the
1427 four-argument form of @code{AC_INIT} (supported in Autoconf versions
1428 greater than 2.52g).
1429
1430 When @code{AM_INIT_AUTOMAKE} is called with a single argument, it is
1431 interpreted as a space-separated list of Automake options which should
1432 be applied to every @file{Makefile.am} in the tree.  The effect is as if
1433 each option were listed in @code{AUTOMAKE_OPTIONS}.
1434
1435 By default this macro @code{AC_DEFINE}'s @samp{PACKAGE} and
1436 @samp{VERSION}.  This can be avoided by passing the @samp{no-define}
1437 option, as in:
1438 @example
1439 AM_INIT_AUTOMAKE([gnits 1.5 no-define dist-bzip2])
1440 @end example
1441 or by passing a third non-empty argument to the obsolete form.
1442
1443 @cvindex PACKAGE, prevent definition
1444 @cvindex VERSION, prevent definition
1445
1446
1447 @item AM_PATH_LISPDIR
1448 Searches for the program @code{emacs}, and, if found, sets the output
1449 variable @code{lispdir} to the full path to Emacs' site-lisp directory.
1450
1451 Note that this test assumes the @code{emacs} found to be a version that
1452 supports Emacs Lisp (such as @sc{gnu} Emacs or XEmacs).  Other emacsen
1453 can cause this test to hang (some, like old versions of MicroEmacs,
1454 start up in interactive mode, requiring @samp{C-x C-c} to exit, which
1455 is hardly obvious for a non-emacs user).  In most cases, however, you
1456 should be able to use @samp{C-c} to kill the test.  In order to avoid
1457 problems, you can set @code{EMACS} to ``no'' in the environment, or
1458 use the @samp{--with-lispdir} option to @command{configure} to
1459 explictly set the correct path (if you're sure you have an @code{emacs}
1460 that supports Emacs Lisp.
1461 @cvindex AM_PATH_LISPDIR
1462
1463 @item AM_PROG_AS
1464 Use this macro when you have assembly code in your project.  This will
1465 choose the assembler for you (by default the C compiler) and set
1466 @code{CCAS}, and will also set @code{CCASFLAGS} if required.
1467
1468 @item AM_PROG_CC_C_O
1469 This is like @code{AC_PROG_CC_C_O}, but it generates its results in the
1470 manner required by automake.  You must use this instead of
1471 @code{AC_PROG_CC_C_O} when you need this functionality.
1472
1473 @item AM_PROG_CC_STDC
1474 If the C compiler is not in ANSI C mode by default, try to add an option
1475 to output variable @code{CC} to make it so.  This macro tries various
1476 options that select ANSI C on some system or another.  It considers the
1477 compiler to be in ANSI C mode if it handles function prototypes correctly.
1478
1479 If you use this macro, you should check after calling it whether the C
1480 compiler has been set to accept ANSI C; if not, the shell variable
1481 @code{am_cv_prog_cc_stdc} is set to @samp{no}.  If you wrote your source
1482 code in ANSI C, you can make an un-ANSIfied copy of it by using the
1483 @code{ansi2knr} option (@pxref{ANSI}).
1484
1485 @item AM_PROG_LEX
1486 @cindex HP-UX 10, lex problems
1487 @cindex lex problems with HP-UX 10
1488 Like @code{AC_PROG_LEX} (@pxref{Particular Programs, , Particular
1489 Program Checks, autoconf, The Autoconf Manual}), but uses the
1490 @code{missing} script on systems that do not have @code{lex}.
1491 @samp{HP-UX 10} is one such system.
1492
1493 @item AM_PROG_GCJ
1494 This macro finds the @code{gcj} program or causes an error.  It sets
1495 @samp{GCJ} and @samp{GCJFLAGS}.  @code{gcj} is the Java front-end to the
1496 GNU Compiler Collection.
1497 @cvindex AM_PROG_GCJ
1498
1499 @item AM_SYS_POSIX_TERMIOS
1500 @cvindex am_cv_sys_posix_termios
1501 @cindex POSIX termios headers
1502 @cindex termios POSIX headers
1503 Check to see if POSIX termios headers and functions are available on the
1504 system.  If so, set the shell variable @code{am_cv_sys_posix_termios} to
1505 @samp{yes}.  If not, set the variable to @samp{no}.
1506
1507 @item AM_WITH_DMALLOC
1508 @cvindex WITH_DMALLOC
1509 @cindex dmalloc, support for
1510 @opindex --with-dmalloc
1511 Add support for the
1512 @uref{ftp://ftp.letters.com/src/dmalloc/dmalloc.tar.gz, dmalloc}
1513 package.  If the user configures with @samp{--with-dmalloc}, then define
1514 @code{WITH_DMALLOC} and add @samp{-ldmalloc} to @code{LIBS}.
1515
1516 @item AM_WITH_REGEX
1517 @cvindex WITH_REGEX
1518 @opindex --with-regex
1519 @cindex regex package
1520 @cindex rx package
1521 Adds @samp{--with-regex} to the @code{configure} command line.  If
1522 specified (the default), then the @samp{regex} regular expression
1523 library is used, @file{regex.o} is put into @samp{LIBOBJS}, and
1524 @samp{WITH_REGEX} is defined.  If @samp{--without-regex} is given, then
1525 the @samp{rx} regular expression library is used, and @file{rx.o} is put
1526 into @samp{LIBOBJS}.
1527
1528 @end table
1529
1530 @node Private macros,  , Public macros, Macros
1531 @subsection Private macros
1532
1533 The following macros are private macros you should not call directly.
1534 They are called by the other public macros when appropriate.  Do not
1535 rely on them, as they might be changed in a future version.  Consider
1536 them as implementation details; or better, do not consider them at all:
1537 skip this section!
1538
1539 @table @code
1540 @item _AM_DEPENDENCIES
1541 @itemx AM_SET_DEPDIR
1542 @itemx AM_DEP_TRACK
1543 @itemx AM_OUTPUT_DEPENDENCY_COMMANDS
1544 These macros are used to implement automake's automatic dependency
1545 tracking scheme.  They are called automatically by automake when
1546 required, and there should be no need to invoke them manually.
1547
1548 @item AM_MAKE_INCLUDE
1549 This macro is used to discover how the user's @code{make} handles
1550 @code{include} statements.  This macro is automatically invoked when
1551 needed; there should be no need to invoke it manually.
1552
1553 @item AM_PROG_INSTALL_STRIP
1554 This is used to find a version of @code{install} which can be used to
1555 @code{strip} a program at installation time.  This macro is
1556 automatically included when required.
1557
1558 @item AM_SANITY_CHECK
1559 This checks to make sure that a file created in the build directory is
1560 newer than a file in the source directory.  This can fail on systems
1561 where the clock is set incorrectly.  This macro is automatically run
1562 from @code{AM_INIT_AUTOMAKE}.
1563
1564 @end table
1565
1566
1567
1568 @node Extending aclocal,  , Macros, configure
1569 @section Writing your own aclocal macros
1570
1571 @cindex aclocal, extending
1572 @cindex Extending aclocal
1573
1574 The @code{aclocal} program doesn't have any built-in knowledge of any
1575 macros, so it is easy to extend it with your own macros.
1576
1577 This is mostly used for libraries which want to supply their own
1578 Autoconf macros for use by other programs.  For instance the
1579 @code{gettext} library supplies a macro @code{AM_GNU_GETTEXT} which
1580 should be used by any package using @code{gettext}.  When the library is
1581 installed, it installs this macro so that @code{aclocal} will find it.
1582
1583 A file of macros should be a series of @code{AC_DEFUN}'s.  The
1584 @code{aclocal} programs also understands @code{AC_REQUIRE}, so it is
1585 safe to put each macro in a separate file.  @xref{Prerequisite Macros, ,
1586 , autoconf, The Autoconf Manual}, and @ref{Macro Definitions, , ,
1587 autoconf, The Autoconf Manual}.
1588
1589 A macro file's name should end in @file{.m4}.  Such files should be
1590 installed in @code{`aclocal --print-ac-dir`} (which usually happens to
1591 be @file{$(datadir)/aclocal}).
1592
1593
1594 @node Top level, Alternative, configure, Top
1595 @chapter The top-level @file{Makefile.am}
1596
1597 @cindex SUBDIRS, explained
1598
1599 In packages with subdirectories, the top level @file{Makefile.am} must
1600 tell Automake which subdirectories are to be built.  This is done via
1601 the @code{SUBDIRS} variable.
1602 @vindex SUBDIRS
1603
1604 The @code{SUBDIRS} macro holds a list of subdirectories in which
1605 building of various sorts can occur.  Many targets (e.g. @code{all}) in
1606 the generated @file{Makefile} will run both locally and in all specified
1607 subdirectories.  Note that the directories listed in @code{SUBDIRS} are
1608 not required to contain @file{Makefile.am}s; only @file{Makefile}s
1609 (after configuration).  This allows inclusion of libraries from packages
1610 which do not use Automake (such as @code{gettext}).  The directories
1611 mentioned in @code{SUBDIRS} must be direct children of the current
1612 directory.  For instance, you cannot put @samp{src/subdir} into
1613 @code{SUBDIRS}.
1614
1615 In packages that use subdirectories, the top-level @file{Makefile.am} is
1616 often very short.  For instance, here is the @file{Makefile.am} from the
1617 GNU Hello distribution:
1618
1619 @example
1620 EXTRA_DIST = BUGS ChangeLog.O README-alpha
1621 SUBDIRS = doc intl po src tests
1622 @end example
1623
1624 @cindex SUBDIRS, overriding
1625 @cindex Overriding SUBDIRS
1626
1627 It is possible to override the @code{SUBDIRS} variable if, like in the
1628 case of GNU @code{Inetutils}, you want to only build a subset of the
1629 entire package.  In your @file{Makefile.am} include:
1630
1631 @example
1632 SUBDIRS = @@MY_SUBDIRS@@
1633 @end example
1634
1635 Then in your @file{configure.in} you can specify:
1636
1637 @example
1638 MY_SUBDIRS="src doc lib po"
1639 AC_SUBST(MY_SUBDIRS)
1640 @end example
1641
1642 (Note that we don't use the variable name @code{SUBDIRS} in our
1643 @file{configure.in}; that would cause Automake to believe that every
1644 @file{Makefile.in} should recurse into the listed subdirectories.)
1645
1646 The upshot of this is that Automake is tricked into building the package
1647 to take the subdirs, but doesn't actually bind that list until
1648 @code{configure} is run.
1649
1650 Although the @code{SUBDIRS} macro can contain configure substitutions
1651 (e.g. @samp{@@DIRS@@}); Automake itself does not actually examine the
1652 contents of this variable.
1653
1654 If @code{SUBDIRS} is defined, then your @file{configure.in} must include
1655 @code{AC_PROG_MAKE_SET}.  When Automake invokes @code{make} in a
1656 subdirectory, it uses the value of the @code{MAKE} variable.  It passes
1657 the value of the variable @code{AM_MAKEFLAGS} to the @code{make}
1658 invocation; this can be set in @file{Makefile.am} if there are flags you
1659 must always pass to @code{make}.
1660 @vindex MAKE
1661 @vindex MAKEFLAGS
1662
1663 The use of @code{SUBDIRS} is not restricted to just the top-level
1664 @file{Makefile.am}.  Automake can be used to construct packages of
1665 arbitrary depth.
1666
1667 By default, Automake generates @file{Makefiles} which work depth-first
1668 (@samp{postfix}).  However, it is possible to change this ordering.  You
1669 can do this by putting @samp{.} into @code{SUBDIRS}.  For instance,
1670 putting @samp{.}  first will cause a @samp{prefix} ordering of
1671 directories.  All @samp{clean} targets are run in reverse order of build
1672 targets.
1673
1674 Sometimes, such as when running @code{make dist}, you want all possible
1675 subdirectories to be examined.  In this case Automake will use
1676 @code{DIST_SUBDIRS}, instead of @code{SUBDIRS}, to determine where to
1677 recurse.  This variable will also be used when the user runs
1678 @code{distclean} or @code{maintainer-clean}.  It should be set to the
1679 full list of subdirectories in the project.  If this macro is not set,
1680 Automake will attempt to set it for you.
1681
1682
1683 @node Alternative, Rebuilding, Top level, Top
1684 @chapter An Alternative Approach to Subdirectories
1685
1686 If you've ever read Peter Miller's excellent paper,
1687 @uref{http://www.pcug.org.au/~millerp/rmch/recu-make-cons-harm.html,
1688 Recursive Make Considered Harmful}, the preceding section on the use of
1689 subdirectories will probably come as unwelcome advice.  For those who
1690 haven't read the paper, Miller's main thesis is that recursive
1691 @code{make} invocations are both slow and error-prone.
1692
1693 Automake provides sufficient cross-directory support @footnote{We
1694 believe.  This work is new and there are probably warts.
1695 @xref{Introduction}, for information on reporting bugs.} to enable you
1696 to write a single @file{Makefile.am} for a complex multi-directory
1697 package.
1698
1699
1700 By default an installable file specified in a subdirectory will have its
1701 directory name stripped before installation.  For instance, in this
1702 example, the header file will be installed as
1703 @file{$(includedir)/stdio.h}:
1704
1705 @example
1706 include_HEADERS = inc/stdio.h
1707 @end example
1708
1709 @cindex nobase_
1710 @cindex Path stripping, avoiding
1711 @cindex Avoiding path stripping
1712
1713 However, the @samp{nobase_} prefix can be used to circumvent this path
1714 stripping.  In this example, the header file will be installed as
1715 @file{$(includedir)/sys/types.h}:
1716
1717 @example
1718 nobase_include_HEADERS = sys/types.h
1719 @end example
1720
1721 @cindex nobase_ and dist_ or nodist_
1722 @cindex dist_ and nobase_
1723 @cindex nodist_ and nobase_
1724
1725 @samp{nobase_} should be specified first when used in conjonction with
1726 either @samp{dist_} or @samp{nodist_} (@pxref{Dist}).  For instance:
1727
1728 @example
1729 nobase_dist_pkgdata_DATA = images/vortex.pgm
1730 @end example
1731
1732 @node Rebuilding, Programs, Alternative, Top
1733 @chapter Rebuilding Makefiles
1734
1735 Automake generates rules to automatically rebuild @file{Makefile}s,
1736 @file{configure}, and other derived files like @file{Makefile.in}.
1737
1738 If you are using @code{AM_MAINTAINER_MODE} in @file{configure.in}, then
1739 these automatic rebuilding rules are only enabled in maintainer mode.
1740
1741 Sometimes you need to run @code{aclocal} with an argument like @code{-I}
1742 to tell it where to find @file{.m4} files.  Since sometimes @code{make}
1743 will automatically run @code{aclocal}, you need a way to specify these
1744 arguments.  You can do this by defining @code{ACLOCAL_AMFLAGS}; this
1745 holds arguments which are passed verbatim to @code{aclocal}.  This macro
1746 is only useful in the top-level @file{Makefile.am}.
1747 @vindex ACLOCAL_AMFLAGS
1748
1749
1750 @node Programs, Other objects, Rebuilding, Top
1751 @chapter Building Programs and Libraries
1752
1753 A large part of Automake's functionality is dedicated to making it easy
1754 to build programs and libraries.
1755
1756 @menu
1757 * A Program::                   Building a program
1758 * A Library::                   Building a library
1759 * A Shared Library::            Building a Libtool library
1760 * Program and Library Variables::  Variables controlling program and
1761                                 library builds
1762 * LIBOBJS::                     Special handling for LIBOBJS and ALLOCA
1763 * Program variables::           Variables used when building a program
1764 * Yacc and Lex::                Yacc and Lex support
1765 * C++ Support::
1766 * Assembly Support::
1767 * Fortran 77 Support::
1768 * Java Support::
1769 * Support for Other Languages::
1770 * ANSI::                        Automatic de-ANSI-fication
1771 * Dependencies::                Automatic dependency tracking
1772 * EXEEXT::                      Support for executable extensions
1773 @end menu
1774
1775
1776 @node A Program, A Library, Programs, Programs
1777 @section Building a program
1778
1779 @subsection Introductory blathering
1780
1781 @cindex PROGRAMS, bindir
1782 @vindex bin_PROGRAMS
1783 @vindex sbin_PROGRAMS
1784 @vindex libexec_PROGRAMS
1785 @vindex pkglib_PROGRAMS
1786 @vindex noinst_PROGRAMS
1787 @vindex check_PROGRAMS
1788
1789 In a directory containing source that gets built into a program (as
1790 opposed to a library or a script), the @samp{PROGRAMS} primary is used.
1791 Programs can be installed in @code{bindir}, @code{sbindir},
1792 @code{libexecdir}, @code{pkglibdir}, or not at all (@samp{noinst}).
1793 They can also be built only for @code{make check}, in which case the
1794 prefix is @samp{check}.
1795
1796 For instance:
1797
1798 @example
1799 bin_PROGRAMS = hello
1800 @end example
1801
1802 In this simple case, the resulting @file{Makefile.in} will contain code
1803 to generate a program named @code{hello}.
1804
1805 Associated with each program are several assisting variables which are
1806 named after the program.  These variables are all optional, and have
1807 reasonable defaults.  Each variable, its use, and default is spelled out
1808 below; we use the ``hello'' example throughout.
1809
1810 The variable @code{hello_SOURCES} is used to specify which source files
1811 get built into an executable:
1812
1813 @example
1814 hello_SOURCES = hello.c version.c getopt.c getopt1.c getopt.h system.h
1815 @end example
1816
1817 This causes each mentioned @samp{.c} file to be compiled into the
1818 corresponding @samp{.o}.  Then all are linked to produce @file{hello}.
1819
1820 @cindex _SOURCES primary, defined
1821 @cindex SOURCES primary, defined
1822 @cindex Primary variable, SOURCES
1823
1824 If @samp{hello_SOURCES} is not specified, then it defaults to the single
1825 file @file{hello.c}; that is, the default is to compile a single C file
1826 whose base name is the name of the program itself.  (This is a terrible
1827 default but we are stuck with it for historical reasons.)
1828 @vindex _SOURCES
1829 @vindex SOURCES
1830
1831 Multiple programs can be built in a single directory.  Multiple programs
1832 can share a single source file, which must be listed in each
1833 @samp{_SOURCES} definition.
1834
1835 @cindex Header files in _SOURCES
1836 @cindex _SOURCES and header files
1837
1838 Header files listed in a @samp{_SOURCES} definition will be included in
1839 the distribution but otherwise ignored.  In case it isn't obvious, you
1840 should not include the header file generated by @file{configure} in a
1841 @samp{_SOURCES} variable; this file should not be distributed.  Lex
1842 (@samp{.l}) and Yacc (@samp{.y}) files can also be listed; see @ref{Yacc
1843 and Lex}.
1844
1845 @subsection Conditional compilations
1846
1847 You can't put a configure substitution (e.g., @samp{@@FOO@@}) into a
1848 @samp{_SOURCES} variable.  The reason for this is a bit hard to explain,
1849 but suffice to say that it simply won't work.  Automake will give an
1850 error if you try to do this.
1851
1852 @cindex EXTRA_prog_SOURCES, defined
1853
1854 Automake must know all the source files that could possibly go into a
1855 program, even if not all the files are built in every circumstance.
1856 Any files which are only conditionally built should be listed in the
1857 appropriate @samp{EXTRA_} variable.  For instance, if
1858 @file{hello-linux.c} were conditionally included in @code{hello}, the
1859 @file{Makefile.am} would contain:
1860
1861 @example
1862 EXTRA_hello_SOURCES = hello-linux.c
1863 @end example
1864
1865 In this case, @file{hello-linux.o} would be added, via a
1866 @file{configure} substitution, to @code{hello_LDADD} in order to cause
1867 it to be built and linked in.
1868
1869 An often simpler way to compile source files conditionally is to use
1870 Automake conditionals.  For instance, you could use this construct to
1871 conditionally use @file{hello-linux.c} or @file{hello-generic.c} as the
1872 basis for your program @file{hello}:
1873
1874 @example
1875 if LINUX
1876 hello_SOURCES = hello-linux.c
1877 else
1878 hello_SOURCES = hello-generic.c
1879 endif
1880 @end example
1881
1882 When using conditionals like this you don't need to use the
1883 @samp{EXTRA_} variable, because Automake will examine the contents of
1884 each variable to construct the complete list of source files.
1885
1886 Sometimes it is useful to determine the programs that are to be built at
1887 configure time.  For instance, GNU @code{cpio} only builds @code{mt} and
1888 @code{rmt} under special circumstances.
1889
1890 @cindex EXTRA_PROGRAMS, defined
1891
1892 In this case, you must notify Automake of all the programs that can
1893 possibly be built, but at the same time cause the generated
1894 @file{Makefile.in} to use the programs specified by @code{configure}.
1895 This is done by having @code{configure} substitute values into each
1896 @samp{_PROGRAMS} definition, while listing all optionally built programs
1897 in @code{EXTRA_PROGRAMS}.
1898 @vindex EXTRA_PROGRAMS
1899
1900 Of course you can use Automake conditionals to determine the programs to
1901 be built.
1902
1903 @subsection Linking the program
1904
1905 If you need to link against libraries that are not found by
1906 @code{configure}, you can use @code{LDADD} to do so.  This variable is
1907 used to specify additional objects or libraries to link with; it is
1908 inappropriate for specifying specific linker flags, you should use
1909 @code{AM_LDFLAGS} for this purpose.
1910 @vindex LDADD
1911 @vindex AM_LDFLAGS
1912
1913 @cindex prog_LDADD, defined
1914
1915 Sometimes, multiple programs are built in one directory but do not share
1916 the same link-time requirements.  In this case, you can use the
1917 @samp{@var{prog}_LDADD} variable (where @var{prog} is the name of the
1918 program as it appears in some @samp{_PROGRAMS} variable, and usually
1919 written in lowercase) to override the global @code{LDADD}.  If this
1920 variable exists for a given program, then that program is not linked
1921 using @code{LDADD}.
1922 @vindex _LDADD
1923
1924 For instance, in GNU cpio, @code{pax}, @code{cpio} and @code{mt} are
1925 linked against the library @file{libcpio.a}.  However, @code{rmt} is
1926 built in the same directory, and has no such link requirement.  Also,
1927 @code{mt} and @code{rmt} are only built on certain architectures.  Here
1928 is what cpio's @file{src/Makefile.am} looks like (abridged):
1929
1930 @example
1931 bin_PROGRAMS = cpio pax @@MT@@
1932 libexec_PROGRAMS = @@RMT@@
1933 EXTRA_PROGRAMS = mt rmt
1934
1935 LDADD = ../lib/libcpio.a @@INTLLIBS@@
1936 rmt_LDADD =
1937
1938 cpio_SOURCES = @dots{}
1939 pax_SOURCES = @dots{}
1940 mt_SOURCES = @dots{}
1941 rmt_SOURCES = @dots{}
1942 @end example
1943
1944 @cindex _LDFLAGS, defined
1945
1946 @samp{@var{prog}_LDADD} is inappropriate for passing program-specific
1947 linker flags (except for @samp{-l}, @samp{-L}, @samp{-dlopen} and
1948 @samp{-dlpreopen}).  So, use the @samp{@var{prog}_LDFLAGS} variable for
1949 this purpose.
1950 @vindex _LDFLAGS
1951
1952 @cindex _DEPENDENCIES, defined
1953
1954 It is also occasionally useful to have a program depend on some other
1955 target which is not actually part of that program.  This can be done
1956 using the @samp{@var{prog}_DEPENDENCIES} variable.  Each program depends
1957 on the contents of such a variable, but no further interpretation is
1958 done.
1959
1960 If @samp{@var{prog}_DEPENDENCIES} is not supplied, it is computed by
1961 Automake.  The automatically-assigned value is the contents of
1962 @samp{@var{prog}_LDADD}, with most configure substitutions, @samp{-l},
1963 @samp{-L}, @samp{-dlopen} and @samp{-dlpreopen} options removed.  The
1964 configure substitutions that are left in are only @samp{@@LIBOBJS@@} and
1965 @samp{@@ALLOCA@@}; these are left because it is known that they will not
1966 cause an invalid value for @samp{@var{prog}_DEPENDENCIES} to be
1967 generated.
1968
1969
1970 @node A Library, A Shared Library, A Program, Programs
1971 @section Building a library
1972
1973 @cindex _LIBRARIES primary, defined
1974 @cindex LIBRARIES primary, defined
1975 @cindex Primary variable, LIBRARIES
1976
1977 @vindex lib_LIBRARIES
1978 @vindex pkglib_LIBRARIES
1979 @vindex noinst_LIBRARIES
1980
1981 Building a library is much like building a program.  In this case, the
1982 name of the primary is @samp{LIBRARIES}.  Libraries can be installed in
1983 @code{libdir} or @code{pkglibdir}.
1984
1985 @xref{A Shared Library}, for information on how to build shared
1986 libraries using Libtool and the @samp{LTLIBRARIES} primary.
1987
1988 Each @samp{_LIBRARIES} variable is a list of the libraries to be built.
1989 For instance to create a library named @file{libcpio.a}, but not install
1990 it, you would write:
1991
1992 @example
1993 noinst_LIBRARIES = libcpio.a
1994 @end example
1995
1996 The sources that go into a library are determined exactly as they are
1997 for programs, via the @samp{_SOURCES} variables.  Note that the library
1998 name is canonicalized (@pxref{Canonicalization}), so the @samp{_SOURCES}
1999 variable corresponding to @file{liblob.a} is @samp{liblob_a_SOURCES},
2000 not @samp{liblob.a_SOURCES}.
2001
2002 @cindex _LIBADD primary, defined
2003 @cindex LIBADD primary, defined
2004 @cindex Primary variable, LIBADD
2005
2006 Extra objects can be added to a library using the
2007 @samp{@var{library}_LIBADD} variable.  This should be used for objects
2008 determined by @code{configure}.  Again from @code{cpio}:
2009 @vindex _LIBADD
2010 @vindex LIBADD
2011
2012 @example
2013 libcpio_a_LIBADD = @@LIBOBJS@@ @@ALLOCA@@
2014 @end example
2015
2016 In addition, sources for extra objects that will not exist until
2017 configure-time must be added to the @code{BUILT_SOURCES} variable
2018 (@pxref{Sources}).
2019
2020
2021 @node A Shared Library, Program and Library Variables, A Library, Programs
2022 @section Building a Shared Library
2023
2024 @cindex Shared libraries, support for
2025
2026 Building shared libraries is a relatively complex matter.  For this
2027 reason, GNU Libtool (@pxref{Top, , Introduction, libtool, The
2028 Libtool Manual}) was created to help build shared libraries in a
2029 platform-independent way.
2030
2031 @cindex _LTLIBRARIES primary, defined
2032 @cindex LTLIBRARIES primary, defined
2033 @cindex Primary variable, LTLIBRARIES
2034 @cindex Example of shared libraries
2035
2036 @cindex suffix .la, defined
2037
2038 Automake uses Libtool to build libraries declared with the
2039 @samp{LTLIBRARIES} primary.  Each @samp{_LTLIBRARIES} variable is a list
2040 of shared libraries to build.  For instance, to create a library named
2041 @file{libgettext.a} and its corresponding shared libraries, and install
2042 them in @samp{libdir}, write:
2043
2044 @example
2045 lib_LTLIBRARIES = libgettext.la
2046 @end example
2047
2048 @vindex lib_LTLIBRARIES
2049 @vindex pkglib_LTLIBRARIES
2050 @vindex noinst_LTLIBRARIES
2051 @vindex check_LTLIBRARIES
2052
2053 @cindex check_LTLIBRARIES, not allowed
2054
2055 Note that shared libraries @emph{must} be installed in order to work
2056 properly, so @code{check_LTLIBRARIES} is not allowed.  However,
2057 @code{noinst_LTLIBRARIES} is allowed.  This feature should be used for
2058 libtool ``convenience libraries''.
2059
2060 @cindex suffix .lo, defined
2061
2062 For each library, the @samp{@var{library}_LIBADD} variable contains the
2063 names of extra libtool objects (@file{.lo} files) to add to the shared
2064 library.  The @samp{@var{library}_LDFLAGS} variable contains any
2065 additional libtool flags, such as @samp{-version-info} or
2066 @samp{-static}.
2067
2068 @cindex @@LTLIBOBJS@@, special handling
2069
2070 Where an ordinary library might include @code{@@LIBOBJS@@}, a libtool
2071 library must use @code{@@LTLIBOBJS@@}.  This is required because the
2072 object files that libtool operates on do not necessarily end in
2073 @file{.o}.  The libtool manual contains more details on this topic.
2074
2075 For libraries installed in some directory, Automake will automatically
2076 supply the appropriate @samp{-rpath} option.  However, for libraries
2077 determined at configure time (and thus mentioned in
2078 @code{EXTRA_LTLIBRARIES}), Automake does not know the eventual
2079 installation directory; for such libraries you must add the
2080 @samp{-rpath} option to the appropriate @samp{_LDFLAGS} variable by
2081 hand.
2082
2083 Ordinarily, Automake requires that a shared library's name start with
2084 @samp{lib}.  However, if you are building a dynamically loadable module
2085 then you might wish to use a "nonstandard" name.  In this case, put
2086 @code{-module} into the @samp{_LDFLAGS} variable.
2087
2088 @xref{Using Automake, Using Automake with Libtool, The Libtool Manual,
2089 libtool, The Libtool Manual}, for more information.
2090
2091
2092 @node Program and Library Variables, LIBOBJS, A Shared Library, Programs
2093 @section Program and Library Variables
2094
2095 Associated with each program are a collection of variables which can be
2096 used to modify how that program is built.  There is a similar list of
2097 such variables for each library.  The canonical name of the program (or
2098 library) is used as a base for naming these variables.
2099
2100 In the list below, we use the name ``maude'' to refer to the program or
2101 library.  In your @file{Makefile.am} you would replace this with the
2102 canonical name of your program.  This list also refers to ``maude'' as a
2103 program, but in general the same rules apply for both static and dynamic
2104 libraries; the documentation below notes situations where programs and
2105 libraries differ.
2106
2107 @table @samp
2108 @item maude_SOURCES
2109 This variable, if it exists, lists all the source files which are
2110 compiled to build the program.  These files are added to the
2111 distribution by default.  When building the program, Automake will cause
2112 each source file to be compiled to a single @file{.o} file (or
2113 @file{.lo} when using libtool).  Normally these object files are named
2114 after the source file, but other factors can change this.  If a file in
2115 the @samp{_SOURCES} variable has an unrecognized extension, Automake
2116 will do one of two things with it.  If a suffix rule exists for turning
2117 files with the unrecognized extension into @file{.o} files, then
2118 automake will treat this file as it will any other source file
2119 (@pxref{Support for Other Languages}).  Otherwise, the file will be
2120 ignored as though it were a header file.
2121
2122 The prefixes @samp{dist_} and @samp{nodist_} can be used to control
2123 whether files listed in a @samp{_SOURCES} variable are distributed.
2124 @samp{dist_} is redundant, as sources are distributed by default, but it
2125 can be specified for clarity if desired.
2126
2127 It is possible to have both @samp{dist_} and @samp{nodist_} variants of
2128 a given @samp{_SOURCES} variable at once; this lets you easily
2129 distribute some files and not others, for instance:
2130
2131 @example
2132 nodist_maude_SOURCES = nodist.c
2133 dist_maude_SOURCES = dist-me.c
2134 @end example
2135
2136 By default the output file (on Unix systems, the @file{.o} file) will be
2137 put into the current build directory.  However, if the option
2138 @code{subdir-objects} is in effect in the current directory then the
2139 @file{.o} file will be put into the subdirectory named after the source
2140 file.  For instance, with @code{subdir-objects} enabled,
2141 @file{sub/dir/file.c} will be compiled to @file{sub/dir/file.o}.  Some
2142 people prefer this mode of operation.  You can specify
2143 @code{subdir-objects} in @code{AUTOMAKE_OPTIONS} (@pxref{Options}).
2144 @cindex Subdirectory, objects in
2145 @cindex Objects in subdirectory
2146
2147
2148 @item EXTRA_maude_SOURCES
2149 Automake needs to know the list of files you intend to compile
2150 @emph{statically}.  For one thing, this is the only way Automake has of
2151 knowing what sort of language support a given @file{Makefile.in}
2152 requires.  @footnote{There are other, more obscure reasons reasons for
2153 this limitation as well.}  This means that, for example, you can't put a
2154 configure substitution like @samp{@@my_sources@@} into a @samp{_SOURCES}
2155 variable.  If you intend to conditionally compile source files and use
2156 @file{configure} to substitute the appropriate object names into, e.g.,
2157 @samp{_LDADD} (see below), then you should list the corresponding source
2158 files in the @samp{EXTRA_} variable.
2159
2160 This variable also supports @samp{dist_} and @samp{nodist_} prefixes,
2161 e.g., @samp{nodist_EXTRA_maude_SOURCES}.
2162
2163 @item maude_AR
2164 A static library is created by default by invoking @code{$(AR) cru}
2165 followed by the name of the library and then the objects being put into
2166 the library.  You can override this by setting the @samp{_AR} variable.
2167 This is usually used with C++; some C++ compilers require a special
2168 invocation in order to instantiate all the templates which should go
2169 into a library.  For instance, the SGI C++ compiler likes this macro set
2170 like so:
2171 @example
2172 libmaude_a_AR = $(CXX) -ar -o
2173 @end example
2174
2175 @item maude_LIBADD
2176 Extra objects can be added to a static library using the @samp{_LIBADD}
2177 variable.  This should be used for objects determined by
2178 @code{configure}.  Note that @samp{_LIBADD} is not used for shared
2179 libraries; there you must use @samp{_LDADD}.
2180
2181 @item maude_LDADD
2182 Extra objects can be added to a shared library or a program by listing
2183 them in the @samp{_LDADD} variable.  This should be used for objects
2184 determined by @code{configure}.
2185
2186 @samp{_LDADD} and @samp{_LIBADD} are inappropriate for passing
2187 program-specific linker flags (except for @samp{-l}, @samp{-L},
2188 @samp{-dlopen} and @samp{-dlpreopen}).  Use the @samp{_LDFLAGS} variable
2189 for this purpose.
2190
2191 For instance, if your @file{configure.in} uses @code{AC_PATH_XTRA}, you
2192 could link your program against the X libraries like so:
2193
2194 @example
2195 maude_LDADD = $(X_PRE_LIBS) $(X_LIBS) $(X_EXTRA_LIBS)
2196 @end example
2197
2198 @item maude_LDFLAGS
2199 This variable is used to pass extra flags to the link step of a program
2200 or a shared library.
2201
2202 @item maude_LINK
2203 You can override the linker on a per-program basis.  By default the
2204 linker is chosen according to the languages used by the program.  For
2205 instance, a program that includes C++ source code would use the C++
2206 compiler to link.  The @samp{_LINK} variable must hold the name of a
2207 command which can be passed all the @file{.o} file names as arguments.
2208 Note that the name of the underlying program is @emph{not} passed to
2209 @samp{_LINK}; typically one uses @samp{$@@}:
2210
2211 @example
2212 maude_LINK = $(CCLD) -magic -o $@@
2213 @end example
2214
2215 @item maude_CFLAGS
2216 Automake allows you to set compilation flags on a per-program (or
2217 per-library) basis.  A single source file can be included in several
2218 programs, and it will potentially be compiled with different flags for
2219 each program.  This works for any language directly supported by
2220 Automake.  The flags are @samp{_CFLAGS}, @samp{_CXXFLAGS},
2221 @samp{_OBJCFLAGS}, @samp{_YFLAGS}, @samp{_CCASFLAGS}, @samp{_FFLAGS},
2222 @samp{_RFLAGS}, and @samp{_GCJFLAGS}.
2223
2224 When using a per-program compilation flag, Automake will choose a
2225 different name for the intermediate object files.  Ordinarily a file
2226 like @file{sample.c} will be compiled to produce @file{sample.o}.
2227 However, if the program's @samp{_CFLAGS} variable is set, then the
2228 object file will be named, for instance, @file{maude-sample.o}.
2229
2230 In compilations with per-program flags, the ordinary @samp{AM_} form of
2231 the flags variable is @emph{not} automatically included in the
2232 compilation (however, the user form of the variable @emph{is} included).
2233 So for instance, if you want the hypothetical @file{maude} compilations
2234 to also use the value of @samp{AM_CFLAGS}, you would need to write:
2235
2236 @example
2237 maude_CFLAGS = ... your flags ... $(AM_CFLAGS)
2238 @end example
2239
2240 @item maude_DEPENDENCIES
2241 It is also occasionally useful to have a program depend on some other
2242 target which is not actually part of that program.  This can be done
2243 using the @samp{_DEPENDENCIES} variable.  Each program depends on the
2244 contents of such a variable, but no further interpretation is done.
2245
2246 If @samp{_DEPENDENCIES} is not supplied, it is computed by Automake.
2247 The automatically-assigned value is the contents of @samp{_LDADD} or
2248 @samp{_LIBADD}, with most configure substitutions, @samp{-l}, @samp{-L},
2249 @samp{-dlopen} and @samp{-dlpreopen} options removed.  The configure
2250 substitutions that are left in are only @samp{@@LIBOBJS@@} and
2251 @samp{@@ALLOCA@@}; these are left because it is known that they will not
2252 cause an invalid value for @samp{_DEPENDENCIES} to be generated.
2253
2254 @item maude_SHORTNAME
2255 On some platforms the allowable file names are very short.  In order to
2256 support these systems and per-program compilation flags at the same
2257 time, Automake allows you to set a ``short name'' which will influence
2258 how intermediate object files are named.  For instance, if you set
2259 @samp{maude_SHORTNAME} to @samp{m}, then in the above per-program
2260 compilation flag example the object file would be named
2261 @file{m-sample.o} rather than @file{maude-sample.o}.  This facility is
2262 rarely needed in practice, and we recommend avoiding it until you find
2263 it is required.
2264 @end table
2265
2266
2267 @node LIBOBJS, Program variables, Program and Library Variables, Programs
2268 @section Special handling for LIBOBJS and ALLOCA
2269
2270 @cindex @@LIBOBJS@@, special handling
2271 @cindex @@ALLOCA@@, special handling
2272
2273 Automake explicitly recognizes the use of @code{@@LIBOBJS@@} and
2274 @code{@@ALLOCA@@}, and uses this information, plus the list of
2275 @code{LIBOBJS} files derived from @file{configure.in} to automatically
2276 include the appropriate source files in the distribution (@pxref{Dist}).
2277 These source files are also automatically handled in the
2278 dependency-tracking scheme; see @xref{Dependencies}.
2279
2280 @code{@@LIBOBJS@@} and @code{@@ALLOCA@@} are specially recognized in any
2281 @samp{_LDADD} or @samp{_LIBADD} variable.
2282
2283
2284 @node Program variables, Yacc and Lex, LIBOBJS, Programs
2285 @section Variables used when building a program
2286
2287 Occasionally it is useful to know which @file{Makefile} variables
2288 Automake uses for compilations; for instance you might need to do your
2289 own compilation in some special cases.
2290
2291 Some variables are inherited from Autoconf; these are @code{CC},
2292 @code{CFLAGS}, @code{CPPFLAGS}, @code{DEFS}, @code{LDFLAGS}, and
2293 @code{LIBS}.
2294 @vindex CC
2295 @vindex CFLAGS
2296 @vindex CPPFLAGS
2297 @vindex DEFS
2298 @vindex LDFLAGS
2299 @vindex LIBS
2300
2301 There are some additional variables which Automake itself defines:
2302
2303 @vtable @code
2304 @item AM_CPPFLAGS
2305 The contents of this macro are passed to every compilation which invokes
2306 the C preprocessor; it is a list of arguments to the preprocessor.  For
2307 instance, @samp{-I} and @samp{-D} options should be listed here.
2308
2309 Automake already provides some @samp{-I} options automatically.  In
2310 particular it generates @samp{-I$(srcdir)}, @samp{-I.}, and a @samp{-I}
2311 pointing to the directory holding @file{config.h} (if you've used
2312 @code{AC_CONFIG_HEADER} or @code{AM_CONFIG_HEADER}).  You can disable
2313 the default @samp{-I} options using the @samp{nostdinc} option.
2314
2315 @item INCLUDES
2316 This does the same job as @samp{AM_CPPFLAGS}.  It is an older name for
2317 the same functionality.  This macro is deprecated; we suggest using
2318 @samp{AM_CPPFLAGS} instead.
2319
2320 @item AM_CFLAGS
2321 This is the variable which the @file{Makefile.am} author can use to pass
2322 in additional C compiler flags.  It is more fully documented elsewhere.
2323 In some situations, this is not used, in preference to the
2324 per-executable (or per-library) @code{_CFLAGS}.
2325
2326 @item COMPILE
2327 This is the command used to actually compile a C source file.  The
2328 filename is appended to form the complete command line.
2329
2330 @item AM_LDFLAGS
2331 This is the variable which the @file{Makefile.am} author can use to pass
2332 in additional linker flags.  In some situations, this is not used, in
2333 preference to the per-executable (or per-library) @code{_LDFLAGS}.
2334
2335 @item LINK
2336 This is the command used to actually link a C program.  It already
2337 includes @samp{-o $@@} and the usual variable references (for instance,
2338 @code{CFLAGS}); it takes as ``arguments'' the names of the object files
2339 and libraries to link in.
2340 @end vtable
2341
2342
2343 @node Yacc and Lex, C++ Support, Program variables, Programs
2344 @section Yacc and Lex support
2345
2346 Automake has somewhat idiosyncratic support for Yacc and Lex.
2347
2348 Automake assumes that the @file{.c} file generated by @code{yacc} (or
2349 @code{lex}) should be named using the basename of the input file.  That
2350 is, for a yacc source file @file{foo.y}, Automake will cause the
2351 intermediate file to be named @file{foo.c} (as opposed to
2352 @file{y.tab.c}, which is more traditional).
2353
2354 The extension of a yacc source file is used to determine the extension
2355 of the resulting @samp{C} or @samp{C++} file.  Files with the extension
2356 @samp{.y} will be turned into @samp{.c} files; likewise, @samp{.yy} will
2357 become @samp{.cc}; @samp{.y++}, @samp{c++}; and @samp{.yxx},
2358 @samp{.cxx}.
2359
2360 Likewise, lex source files can be used to generate @samp{C} or
2361 @samp{C++}; the extensions @samp{.l}, @samp{.ll}, @samp{.l++}, and
2362 @samp{.lxx} are recognized.
2363
2364 You should never explicitly mention the intermediate (@samp{C} or
2365 @samp{C++}) file in any @samp{SOURCES} variable; only list the source
2366 file.
2367
2368 The intermediate files generated by @code{yacc} (or @code{lex}) will be
2369 included in any distribution that is made.  That way the user doesn't
2370 need to have @code{yacc} or @code{lex}.
2371
2372 If a @code{yacc} source file is seen, then your @file{configure.in} must
2373 define the variable @samp{YACC}.  This is most easily done by invoking
2374 the macro @samp{AC_PROG_YACC} (@pxref{Particular Programs, , Particular
2375 Program Checks, autoconf, The Autoconf Manual}).
2376
2377 When @code{yacc} is invoked, it is passed @samp{YFLAGS} and
2378 @samp{AM_YFLAGS}.  The former is a user variable and the latter is
2379 intended for the @file{Makefile.am} author.
2380
2381 Similarly, if a @code{lex} source file is seen, then your
2382 @file{configure.in} must define the variable @samp{LEX}.  You can use
2383 @samp{AC_PROG_LEX} to do this (@pxref{Particular Programs, , Particular
2384 Program Checks, autoconf, The Autoconf Manual}), but using
2385 @code{AM_PROG_LEX} macro (@pxref{Macros}) is recommended.
2386
2387 When @code{lex} is invoked, it is passed @samp{LFLAGS} and
2388 @samp{AM_LFLAGS}.  The former is a user variable and the latter is
2389 intended for the @file{Makefile.am} author.
2390
2391
2392
2393 @cindex ylwrap
2394 @cindex yacc, multiple parsers
2395 @cindex Multiple yacc parsers
2396 @cindex Multiple lex lexers
2397 @cindex lex, multiple lexers
2398
2399
2400 Automake makes it possible to include multiple @code{yacc} (or
2401 @code{lex}) source files in a single program.  Automake uses a small
2402 program called @code{ylwrap} to run @code{yacc} (or @code{lex}) in a
2403 subdirectory.  This is necessary because yacc's output filename is
2404 fixed, and a parallel make could conceivably invoke more than one
2405 instance of @code{yacc} simultaneously.  The @code{ylwrap} program is
2406 distributed with Automake.  It should appear in the directory specified
2407 by @samp{AC_CONFIG_AUX_DIR} (@pxref{Input, , Finding `configure' Input,
2408 autoconf, The Autoconf Manual}), or the current directory if that macro
2409 is not used in @file{configure.in}.
2410
2411 For @code{yacc}, simply managing locking is insufficient.  The output of
2412 @code{yacc} always uses the same symbol names internally, so it isn't
2413 possible to link two @code{yacc} parsers into the same executable.
2414
2415 We recommend using the following renaming hack used in @code{gdb}:
2416 @example
2417 #define yymaxdepth c_maxdepth
2418 #define yyparse c_parse
2419 #define yylex   c_lex
2420 #define yyerror c_error
2421 #define yylval  c_lval
2422 #define yychar  c_char
2423 #define yydebug c_debug
2424 #define yypact  c_pact
2425 #define yyr1    c_r1
2426 #define yyr2    c_r2
2427 #define yydef   c_def
2428 #define yychk   c_chk
2429 #define yypgo   c_pgo
2430 #define yyact   c_act
2431 #define yyexca  c_exca
2432 #define yyerrflag c_errflag
2433 #define yynerrs c_nerrs
2434 #define yyps    c_ps
2435 #define yypv    c_pv
2436 #define yys     c_s
2437 #define yy_yys  c_yys
2438 #define yystate c_state
2439 #define yytmp   c_tmp
2440 #define yyv     c_v
2441 #define yy_yyv  c_yyv
2442 #define yyval   c_val
2443 #define yylloc  c_lloc
2444 #define yyreds  c_reds
2445 #define yytoks  c_toks
2446 #define yylhs   c_yylhs
2447 #define yylen   c_yylen
2448 #define yydefred c_yydefred
2449 #define yydgoto c_yydgoto
2450 #define yysindex c_yysindex
2451 #define yyrindex c_yyrindex
2452 #define yygindex c_yygindex
2453 #define yytable  c_yytable
2454 #define yycheck  c_yycheck
2455 #define yyname   c_yyname
2456 #define yyrule   c_yyrule
2457 @end example
2458
2459 For each define, replace the @samp{c_} prefix with whatever you like.
2460 These defines work for @code{bison}, @code{byacc}, and traditional
2461 @code{yacc}s.  If you find a parser generator that uses a symbol not
2462 covered here, please report the new name so it can be added to the list.
2463
2464
2465 @node C++ Support, Assembly Support, Yacc and Lex, Programs
2466 @section C++ Support
2467
2468 @cindex C++ support
2469 @cindex Support for C++
2470
2471 Automake includes full support for C++.
2472
2473 Any package including C++ code must define the output variable
2474 @samp{CXX} in @file{configure.in}; the simplest way to do this is to use
2475 the @code{AC_PROG_CXX} macro (@pxref{Particular Programs, , Particular
2476 Program Checks, autoconf, The Autoconf Manual}).
2477
2478 A few additional variables are defined when a C++ source file is seen:
2479
2480 @vtable @code
2481 @item CXX
2482 The name of the C++ compiler.
2483
2484 @item CXXFLAGS
2485 Any flags to pass to the C++ compiler.
2486
2487 @item AM_CXXFLAGS
2488 The maintainer's variant of @code{CXXFLAGS}.
2489
2490 @item CXXCOMPILE
2491 The command used to actually compile a C++ source file.  The file name
2492 is appended to form the complete command line.
2493
2494 @item CXXLINK
2495 The command used to actually link a C++ program.
2496 @end vtable
2497
2498
2499 @node Assembly Support, Fortran 77 Support, C++ Support, Programs
2500 @section Assembly Support
2501
2502 Automake includes some support for assembly code.
2503
2504 The variable @code{CCAS} holds the name of the compiler used to build
2505 assembly code.  This compiler must work a bit like a C compiler; in
2506 particular it must accept @samp{-c} and @samp{-o}.  The value of
2507 @code{CCASFLAGS} is passed to the compilation.
2508 @vindex CCAS
2509 @vindex CCASFLAGS
2510
2511 You are required to set @code{CCAS} and @code{CCASFLAGS} via
2512 @file{configure.in}.  The autoconf macro @code{AM_PROG_AS} will do this
2513 for you.  Unless they are already set, it simply sets @code{CCAS} to the
2514 C compiler and @code{CCASFLAGS} to the C compiler flags.
2515
2516 Only the suffixes @samp{.s} and @samp{.S} are recognized by
2517 @code{automake} as being files containing assembly code.
2518
2519
2520 @node Fortran 77 Support, Java Support, Assembly Support, Programs
2521 @comment  node-name,  next,  previous,  up
2522 @section Fortran 77 Support
2523
2524 @cindex Fortran 77 support
2525 @cindex Support for Fortran 77
2526
2527 Automake includes full support for Fortran 77.
2528
2529 Any package including Fortran 77 code must define the output variable
2530 @samp{F77} in @file{configure.in}; the simplest way to do this is to use
2531 the @code{AC_PROG_F77} macro (@pxref{Particular Programs, , Particular
2532 Program Checks, autoconf, The Autoconf Manual}).  @xref{Fortran 77 and
2533 Autoconf}.
2534
2535 A few additional variables are defined when a Fortran 77 source file is
2536 seen:
2537
2538 @vtable @code
2539
2540 @item F77
2541 The name of the Fortran 77 compiler.
2542
2543 @item FFLAGS
2544 Any flags to pass to the Fortran 77 compiler.
2545
2546 @item AM_FFLAGS
2547 The maintainer's variant of @code{FFLAGS}.
2548
2549 @item RFLAGS
2550 Any flags to pass to the Ratfor compiler.
2551
2552 @item AM_RFLAGS
2553 The maintainer's variant of @code{RFLAGS}.
2554
2555 @item F77COMPILE
2556 The command used to actually compile a Fortran 77 source file.  The file
2557 name is appended to form the complete command line.
2558
2559 @item FLINK
2560 The command used to actually link a pure Fortran 77 program or shared
2561 library.
2562
2563 @end vtable
2564
2565 Automake can handle preprocessing Fortran 77 and Ratfor source files in
2566 addition to compiling them@footnote{Much, if not most, of the
2567 information in the following sections pertaining to preprocessing
2568 Fortran 77 programs was taken almost verbatim from @ref{Catalogue of
2569 Rules, , Catalogue of Rules, make, The GNU Make Manual}.}.  Automake
2570 also contains some support for creating programs and shared libraries
2571 that are a mixture of Fortran 77 and other languages (@pxref{Mixing
2572 Fortran 77 With C and C++}).
2573
2574 These issues are covered in the following sections.
2575
2576 @menu
2577 * Preprocessing Fortran 77::
2578 * Compiling Fortran 77 Files::
2579 * Mixing Fortran 77 With C and C++::
2580 * Fortran 77 and Autoconf::
2581 @end menu
2582
2583
2584 @node Preprocessing Fortran 77, Compiling Fortran 77 Files, Fortran 77 Support, Fortran 77 Support
2585 @comment  node-name,  next,  previous,  up
2586 @subsection Preprocessing Fortran 77
2587
2588 @cindex Preprocessing Fortran 77
2589 @cindex Fortran 77, Preprocessing
2590 @cindex Ratfor programs
2591
2592 @file{N.f} is made automatically from @file{N.F} or @file{N.r}.  This
2593 rule runs just the preprocessor to convert a preprocessable Fortran 77
2594 or Ratfor source file into a strict Fortran 77 source file.  The precise
2595 command used is as follows:
2596
2597 @table @file
2598
2599 @item .F
2600 @code{$(F77) -F $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_FFLAGS) $(FFLAGS)}
2601
2602 @item .r
2603 @code{$(F77) -F $(AM_FFLAGS) $(FFLAGS) $(AM_RFLAGS) $(RFLAGS)}
2604
2605 @end table
2606
2607
2608 @node Compiling Fortran 77 Files, Mixing Fortran 77 With C and C++, Preprocessing Fortran 77, Fortran 77 Support
2609 @comment  node-name,  next,  previous,  up
2610 @subsection Compiling Fortran 77 Files
2611
2612 @file{N.o} is made automatically from @file{N.f}, @file{N.F} or
2613 @file{N.r} by running the Fortran 77 compiler.  The precise command used
2614 is as follows:
2615
2616 @table @file
2617
2618 @item .f
2619 @code{$(F77) -c $(AM_FFLAGS) $(FFLAGS)}
2620
2621 @item .F
2622 @code{$(F77) -c $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_FFLAGS) $(FFLAGS)}
2623
2624 @item .r
2625 @code{$(F77) -c $(AM_FFLAGS) $(FFLAGS) $(AM_RFLAGS) $(RFLAGS)}
2626
2627 @end table
2628
2629
2630 @node Mixing Fortran 77 With C and C++, Fortran 77 and Autoconf, Compiling Fortran 77 Files, Fortran 77 Support
2631 @comment  node-name,  next,  previous,  up
2632 @subsection Mixing Fortran 77 With C and C++
2633
2634 @cindex Fortran 77, mixing with C and C++
2635 @cindex Mixing Fortran 77 with C and C++
2636 @cindex Linking Fortran 77 with C and C++
2637 @cindex cfortran
2638 @cindex Mixing Fortran 77 with C and/or C++
2639
2640 Automake currently provides @emph{limited} support for creating programs
2641 and shared libraries that are a mixture of Fortran 77 and C and/or C++.
2642 However, there are many other issues related to mixing Fortran 77 with
2643 other languages that are @emph{not} (currently) handled by Automake, but
2644 that are handled by other packages@footnote{For example,
2645 @uref{http://www-zeus.desy.de/~burow/cfortran/, the cfortran package}
2646 addresses all of these inter-language issues, and runs under nearly all
2647 Fortran 77, C and C++ compilers on nearly all platforms.  However,
2648 @code{cfortran} is not yet Free Software, but it will be in the next
2649 major release.}.
2650
2651 @page
2652 Automake can help in two ways:
2653
2654 @enumerate
2655 @item
2656 Automatic selection of the linker depending on which combinations of
2657 source code.
2658
2659 @item
2660 Automatic selection of the appropriate linker flags (e.g. @samp{-L} and
2661 @samp{-l}) to pass to the automatically selected linker in order to link
2662 in the appropriate Fortran 77 intrinsic and run-time libraries.
2663
2664 @cindex FLIBS, defined
2665 These extra Fortran 77 linker flags are supplied in the output variable
2666 @code{FLIBS} by the @code{AC_F77_LIBRARY_LDFLAGS} Autoconf macro
2667 supplied with newer versions of Autoconf (Autoconf version 2.13 and
2668 later).  @xref{Fortran 77 Compiler Characteristics, , , autoconf, The
2669 Autoconf}.
2670 @end enumerate
2671
2672 If Automake detects that a program or shared library (as mentioned in
2673 some @code{_PROGRAMS} or @code{_LTLIBRARIES} primary) contains source
2674 code that is a mixture of Fortran 77 and C and/or C++, then it requires
2675 that the macro @code{AC_F77_LIBRARY_LDFLAGS} be called in
2676 @file{configure.in}, and that either @code{$(FLIBS)} or @code{@@FLIBS@@}
2677 appear in the appropriate @code{_LDADD} (for programs) or @code{_LIBADD}
2678 (for shared libraries) variables.  It is the responsibility of the
2679 person writing the @file{Makefile.am} to make sure that @code{$(FLIBS)}
2680 or @code{@@FLIBS@@} appears in the appropriate @code{_LDADD} or
2681 @code{_LIBADD} variable.
2682
2683 @cindex Mixed language example
2684 @cindex Example, mixed language
2685
2686 For example, consider the following @file{Makefile.am}:
2687
2688 @example
2689 bin_PROGRAMS = foo
2690 foo_SOURCES  = main.cc foo.f
2691 foo_LDADD    = libfoo.la @@FLIBS@@
2692
2693 pkglib_LTLIBRARIES = libfoo.la
2694 libfoo_la_SOURCES  = bar.f baz.c zardoz.cc
2695 libfoo_la_LIBADD   = $(FLIBS)
2696 @end example
2697
2698 In this case, Automake will insist that @code{AC_F77_LIBRARY_LDFLAGS}
2699 is mentioned in @file{configure.in}.  Also, if @code{@@FLIBS@@} hadn't
2700 been mentioned in @code{foo_LDADD} and @code{libfoo_la_LIBADD}, then
2701 Automake would have issued a warning.
2702
2703
2704 @page
2705 @menu
2706 * How the Linker is Chosen::
2707 @end menu
2708
2709 @node How the Linker is Chosen,  , Mixing Fortran 77 With C and C++, Mixing Fortran 77 With C and C++
2710 @comment  node-name,  next,  previous,  up
2711 @subsubsection How the Linker is Chosen
2712
2713 @cindex Automatic linker selection
2714 @cindex Selecting the linker automatically
2715
2716 The following diagram demonstrates under what conditions a particular
2717 linker is chosen by Automake.
2718
2719 For example, if Fortran 77, C and C++ source code were to be compiled
2720 into a program, then the C++ linker will be used.  In this case, if the
2721 C or Fortran 77 linkers required any special libraries that weren't
2722 included by the C++ linker, then they must be manually added to an
2723 @code{_LDADD} or @code{_LIBADD} variable by the user writing the
2724 @file{Makefile.am}.
2725
2726 @example
2727                      \              Linker
2728           source      \
2729            code        \     C        C++     Fortran
2730      -----------------  +---------+---------+---------+
2731                         |         |         |         |
2732      C                  |    x    |         |         |
2733                         |         |         |         |
2734                         +---------+---------+---------+
2735                         |         |         |         |
2736          C++            |         |    x    |         |
2737                         |         |         |         |
2738                         +---------+---------+---------+
2739                         |         |         |         |
2740                Fortran  |         |         |    x    |
2741                         |         |         |         |
2742                         +---------+---------+---------+
2743                         |         |         |         |
2744      C + C++            |         |    x    |         |
2745                         |         |         |         |
2746                         +---------+---------+---------+
2747                         |         |         |         |
2748      C +       Fortran  |         |         |    x    |
2749                         |         |         |         |
2750                         +---------+---------+---------+
2751                         |         |         |         |
2752          C++ + Fortran  |         |    x    |         |
2753                         |         |         |         |
2754                         +---------+---------+---------+
2755                         |         |         |         |
2756      C + C++ + Fortran  |         |    x    |         |
2757                         |         |         |         |
2758                         +---------+---------+---------+
2759 @end example
2760
2761
2762 @node Fortran 77 and Autoconf,  , Mixing Fortran 77 With C and C++, Fortran 77 Support
2763 @comment  node-name,  next,  previous,  up
2764 @subsection Fortran 77 and Autoconf
2765
2766 The current Automake support for Fortran 77 requires a recent enough
2767 version of Autoconf that also includes support for Fortran 77.  Full
2768 Fortran 77 support was added to Autoconf 2.13, so you will want to use
2769 that version of Autoconf or later.
2770
2771
2772 @node Java Support, Support for Other Languages, Fortran 77 Support, Programs
2773 @comment  node-name,  next,  previous,  up
2774 @section Java Support
2775
2776 @cindex Java support
2777 @cindex Support for Java
2778
2779 Automake includes support for compiled Java, using @code{gcj}, the Java
2780 front end to the GNU Compiler Collection.
2781
2782 Any package including Java code to be compiled must define the output
2783 variable @samp{GCJ} in @file{configure.in}; the variable @samp{GCJFLAGS}
2784 must also be defined somehow (either in @file{configure.in} or
2785 @file{Makefile.am}).  The simplest way to do this is to use the
2786 @code{AM_PROG_GCJ} macro.
2787
2788 @vindex GCJFLAGS
2789
2790 By default, programs including Java source files are linked with
2791 @code{gcj}.
2792
2793 As always, the contents of @samp{AM_GCJFLAGS} are passed to every
2794 compilation invoking @code{gcj} (in its role as an ahead-of-time
2795 compiler -- when invoking it to create @file{.class} files,
2796 @samp{AM_JAVACFLAGS} is used instead).  If it is necessary to pass
2797 options to @code{gcj} from @file{Makefile.am}, this macro, and not the
2798 user macro @samp{GCJFLAGS}, should be used.
2799
2800 @vindex AM_GCJFLAGS
2801
2802 @code{gcj} can be used to compile @file{.java}, @file{.class},
2803 @file{.zip}, or @file{.jar} files.
2804
2805
2806 @node Support for Other Languages, ANSI, Java Support, Programs
2807 @comment  node-name,  next,  previous,  up
2808 @section Support for Other Languages
2809
2810 Automake currently only includes full support for C, C++ (@pxref{C++
2811 Support}), Fortran 77 (@pxref{Fortran 77 Support}), and Java
2812 (@pxref{Java Support}).  There is only rudimentary support for other
2813 languages, support for which will be improved based on user demand.
2814
2815 Some limited support for adding your own languages is available via the
2816 suffix rule handling; see @ref{Suffixes}.
2817
2818
2819 @node ANSI, Dependencies, Support for Other Languages, Programs
2820 @section Automatic de-ANSI-fication
2821
2822 @cindex de-ANSI-fication, defined
2823
2824 Although the GNU standards allow the use of ANSI C, this can have the
2825 effect of limiting portability of a package to some older compilers
2826 (notably the SunOS C compiler).
2827
2828 Automake allows you to work around this problem on such machines by
2829 @dfn{de-ANSI-fying} each source file before the actual compilation takes
2830 place.
2831
2832 @vindex AUTOMAKE_OPTIONS
2833 @opindex ansi2knr
2834
2835 If the @file{Makefile.am} variable @code{AUTOMAKE_OPTIONS}
2836 (@pxref{Options}) contains the option @code{ansi2knr} then code to
2837 handle de-ANSI-fication is inserted into the generated
2838 @file{Makefile.in}.
2839
2840 This causes each C source file in the directory to be treated as ANSI C.
2841 If an ANSI C compiler is available, it is used.  If no ANSI C compiler
2842 is available, the @code{ansi2knr} program is used to convert the source
2843 files into K&R C, which is then compiled.
2844
2845 The @code{ansi2knr} program is simple-minded.  It assumes the source
2846 code will be formatted in a particular way; see the @code{ansi2knr} man
2847 page for details.
2848
2849 Support for de-ANSI-fication requires the source files @file{ansi2knr.c}
2850 and @file{ansi2knr.1} to be in the same package as the ANSI C source;
2851 these files are distributed with Automake.  Also, the package
2852 @file{configure.in} must call the macro @code{AM_C_PROTOTYPES}
2853 (@pxref{Macros}).
2854 @cvindex AM_C_PROTOTYPES
2855
2856 Automake also handles finding the @code{ansi2knr} support files in some
2857 other directory in the current package.  This is done by prepending the
2858 relative path to the appropriate directory to the @code{ansi2knr}
2859 option.  For instance, suppose the package has ANSI C code in the
2860 @file{src} and @file{lib} subdirs.  The files @file{ansi2knr.c} and
2861 @file{ansi2knr.1} appear in @file{lib}.  Then this could appear in
2862 @file{src/Makefile.am}:
2863
2864 @example
2865 AUTOMAKE_OPTIONS = ../lib/ansi2knr
2866 @end example
2867
2868 If no directory prefix is given, the files are assumed to be in the
2869 current directory.
2870
2871 Files mentioned in @code{LIBOBJS} which need de-ANSI-fication will not
2872 be automatically handled.  That's because @code{configure} will generate
2873 an object name like @file{regex.o}, while @code{make} will be looking
2874 for @file{regex_.o} (when de-ANSI-fying).  Eventually this problem will
2875 be fixed via @code{autoconf} magic, but for now you must put this code
2876 into your @file{configure.in}, just before the @code{AC_OUTPUT} call:
2877
2878 @example
2879 # This is necessary so that .o files in LIBOBJS are also built via
2880 # the ANSI2KNR-filtering rules.
2881 LIBOBJS=`echo $LIBOBJS|sed 's/\.o /\$U.o /g;s/\.o$/\$U.o/'`
2882 @end example
2883 @c FIXME: Ask Akim how this should be handled in the upcoming Autoconf.
2884
2885 Note that automatic de-ANSI-fication will not work when the package is
2886 being built for a different host architecture.  That is because automake
2887 currently has no way to build @code{ansi2knr} for the build machine.
2888
2889
2890 @node Dependencies, EXEEXT, ANSI, Programs
2891 @section Automatic dependency tracking
2892
2893 As a developer it is often painful to continually update the
2894 @file{Makefile.in} whenever the include-file dependencies change in a
2895 project.  Automake supplies a way to automatically track dependency
2896 changes.
2897
2898 @cindex Dependency tracking
2899 @cindex Automatic dependency tracking
2900
2901 Automake always uses complete dependencies for a compilation, including
2902 system headers.  Automake's model is that dependency computation should
2903 be a side effect of the build.  To this end, dependencies are computed
2904 by running all compilations through a special wrapper program called
2905 @code{depcomp}.  @code{depcomp} understands how to coax many different C
2906 and C++ compilers into generating dependency information in the format
2907 it requires.  @code{automake -a} will install @code{depcomp} into your
2908 source tree for you.  If @code{depcomp} can't figure out how to properly
2909 invoke your compiler, dependency tracking will simply be disabled for
2910 your build.
2911
2912 @cindex depcomp
2913
2914 Experience with earlier versions of Automake @footnote{See
2915 @uref{http://sources.redhat.com/automake/dependencies.html} for more
2916 information on the history and experiences with automatic dependency
2917 tracking in Automake} taught us that it is not reliable to generate
2918 dependencies only on the maintainer's system, as configurations vary too
2919 much.  So instead Automake implements dependency tracking at build time.
2920
2921 Automatic dependency tracking can be suppressed by putting
2922 @code{no-dependencies} in the variable @code{AUTOMAKE_OPTIONS}, or
2923 passing @code{no-dependencies} as an argument to @code{AM_INIT_AUTOMAKE}
2924 (this should be the prefered way).  Or, you can invoke @code{automake}
2925 with the @code{-i} option.  Dependency tracking is enabled by default.
2926
2927 @vindex AUTOMAKE_OPTIONS
2928 @opindex no-dependencies
2929
2930 The person building your package also can choose to disable dependency
2931 tracking by configuring with @code{--disable-dependency-tracking}.
2932
2933 @cindex Disabling dependency tracking
2934 @cindex Dependency tracking, disabling
2935
2936
2937 @node EXEEXT,  , Dependencies, Programs
2938 @section Support for executable extensions
2939
2940 @cindex Executable extension
2941 @cindex Extension, executable
2942 @cindex Windows
2943
2944 On some platforms, such as Windows, executables are expected to have an
2945 extension such as @samp{.exe}.  On these platforms, some compilers (GCC
2946 among them) will automatically generate @file{foo.exe} when asked to
2947 generate @file{foo}.
2948
2949 Automake provides mostly-transparent support for this.  Unfortunately
2950 @emph{mostly} doesn't yet mean @emph{fully}.  Until the English
2951 dictionary is revised, you will have to assist Automake if your package
2952 must support those platforms.
2953
2954 One thing you must be aware of is that, internally, Automake rewrites
2955 something like this:
2956
2957 @example
2958 bin_PROGRAMS = liver
2959 @end example
2960
2961 to this:
2962
2963 @example
2964 bin_PROGRAMS = liver$(EXEEXT)
2965 @end example
2966
2967 The targets Automake generates are likewise given the @samp{$(EXEEXT)}
2968 extension.  @code{EXEEXT}
2969
2970 However, Automake cannot apply this rewriting to @code{configure}
2971 substitutions.  This means that if you are conditionally building a
2972 program using such a substitution, then your @file{configure.in} must
2973 take care to add @samp{$(EXEEXT)} when constructing the output variable.
2974
2975 With Autoconf 2.13 and earlier, you must explicitly use @code{AC_EXEEXT}
2976 to get this support.  With Autoconf 2.50, @code{AC_EXEEXT} is run
2977 automatically if you configure a compiler (say, through
2978 @code{AC_PROG_CC}).
2979
2980 Sometimes maintainers like to write an explicit link rule for their
2981 program.  Without executable extension support, this is easy---you
2982 simply write a target with the same name as the program.  However, when
2983 executable extension support is enabled, you must instead add the
2984 @samp{$(EXEEXT)} suffix.
2985
2986 Unfortunately, due to the change in Autoconf 2.50, this means you must
2987 always add this extension.  However, this is a problem for maintainers
2988 who know their package will never run on a platform that has executable
2989 extensions.  For those maintainers, the @code{no-exeext} option
2990 (@pxref{Options}) will disable this feature.  This works in a fairly
2991 ugly way; if @code{no-exeext} is seen, then the presence of a target
2992 named @code{foo} in @file{Makefile.am} will override an
2993 automake-generated target of the form @code{foo$(EXEEXT)}.  Without the
2994 @code{no-exeext} option, this use will give an error.
2995
2996
2997 @node Other objects, Other GNU Tools, Programs, Top
2998 @chapter Other Derived Objects
2999
3000 Automake can handle derived objects which are not C programs.  Sometimes
3001 the support for actually building such objects must be explicitly
3002 supplied, but Automake will still automatically handle installation and
3003 distribution.
3004
3005 @menu
3006 * Scripts::                     Executable scripts
3007 * Headers::                     Header files
3008 * Data::                        Architecture-independent data files
3009 * Sources::                     Derived sources
3010 @end menu
3011
3012
3013 @node Scripts, Headers, Other objects, Other objects
3014 @section Executable Scripts
3015
3016 @cindex _SCRIPTS primary, defined
3017 @cindex SCRIPTS primary, defined
3018 @cindex Primary variable, SCRIPTS
3019
3020 It is possible to define and install programs which are scripts.  Such
3021 programs are listed using the @samp{SCRIPTS} primary name.  Automake
3022 doesn't define any dependencies for scripts; the @file{Makefile.am}
3023 should include the appropriate rules.
3024 @vindex SCRIPTS
3025
3026 Automake does not assume that scripts are derived objects; such objects
3027 must be deleted by hand (@pxref{Clean}).
3028
3029 The @code{automake} program itself is a Perl script that is generated at
3030 configure time from @file{automake.in}.  Here is how this is handled:
3031
3032 @example
3033 bin_SCRIPTS = automake
3034 @end example
3035
3036 Since @code{automake} appears in the @code{AC_OUTPUT} macro, a target
3037 for it is automatically generated, and it is also automatically cleaned
3038 (despite the fact it's a script).
3039
3040 @cindex SCRIPTS, installation directories
3041 @cindex Installing scripts
3042
3043 @vindex bin_SCRIPTS
3044 @vindex sbin_SCRIPTS
3045 @vindex libexec_SCRIPTS
3046 @vindex pkgdata_SCRIPTS
3047 @vindex noinst_SCRIPTS
3048 @vindex check_SCRIPTS
3049
3050 Script objects can be installed in @code{bindir}, @code{sbindir},
3051 @code{libexecdir}, or @code{pkgdatadir}.
3052
3053 Scripts that need not being installed can be listed in
3054 @code{noinst_SCRIPTS}, and among them, those which are needed only by
3055 @code{make check} should go in @code{check_SCRIPTS}.
3056
3057
3058 @node Headers, Data, Scripts, Other objects
3059 @section Header files
3060
3061 @cindex _HEADERS primary, defined
3062 @cindex HEADERS primary, defined
3063 @cindex Primary variable, HEADERS
3064
3065 @vindex noinst_HEADERS
3066
3067 Header files are specified by the @samp{HEADERS} family of variables.
3068 Generally header files are not installed, so the @code{noinst_HEADERS}
3069 variable will be the most used.  @footnote{However, for the case of a
3070 non-installed header file that is actually used by a particular program,
3071 we recommend listing it in the program's @samp{_SOURCES} variable
3072 instead of in @code{noinst_HEADERS}.  We believe this is more clear.}
3073 @vindex HEADERS
3074
3075 All header files must be listed somewhere; missing ones will not appear
3076 in the distribution.  Often it is clearest to list uninstalled headers
3077 with the rest of the sources for a program.  @xref{A Program}.  Headers
3078 listed in a @samp{_SOURCES} variable need not be listed in any
3079 @samp{_HEADERS} variable.
3080
3081 @cindex HEADERS, installation directories
3082 @cindex Installing headers
3083
3084 @vindex include_HEADERS
3085 @vindex oldinclude_HEADERS
3086 @vindex pkginclude_HEADERS
3087
3088 Headers can be installed in @code{includedir}, @code{oldincludedir}, or
3089 @code{pkgincludedir}.
3090
3091
3092 @node Data, Sources, Headers, Other objects
3093 @section Architecture-independent data files
3094
3095 @cindex _DATA primary, defined
3096 @cindex DATA primary, defined
3097 @cindex Primary variable, DATA
3098
3099 Automake supports the installation of miscellaneous data files using the
3100 @samp{DATA} family of variables.
3101 @vindex DATA
3102
3103 @vindex data_DATA
3104 @vindex sysconf_DATA
3105 @vindex sharedstate_DATA
3106 @vindex localstate_DATA
3107 @vindex pkgdata_DATA
3108
3109 Such data can be installed in the directories @code{datadir},
3110 @code{sysconfdir}, @code{sharedstatedir}, @code{localstatedir}, or
3111 @code{pkgdatadir}.
3112
3113 By default, data files are @emph{not} included in a distribution.  Of
3114 course, you can use the @samp{dist_} prefix to change this on a
3115 per-variable basis.
3116
3117 Here is how Automake declares its auxiliary data files:
3118
3119 @example
3120 dist_pkgdata_DATA = clean-kr.am clean.am @dots{}
3121 @end example
3122
3123
3124 @node Sources,  , Data, Other objects
3125 @section Built sources
3126
3127 @cindex BUILT_SOURCES, defined
3128
3129 Occasionally a file which would otherwise be called @samp{source}
3130 (e.g. a C @samp{.h} file) is actually derived from some other file.
3131 Such files should be listed in the @code{BUILT_SOURCES} variable.
3132 @vindex BUILT_SOURCES
3133
3134 @code{BUILT_SOURCES} is actually a bit of a misnomer, as any file which
3135 must be created early in the build process can be listed in this
3136 variable.
3137
3138 A source file listed in @code{BUILT_SOURCES} is created before the other
3139 @code{all} targets are made.  However, such a source file is not
3140 compiled unless explicitly requested by mentioning it in some other
3141 @samp{_SOURCES} variable.
3142
3143 So, for instance, if you had header files which were created by a script
3144 run at build time, then you would list these headers in
3145 @code{BUILT_SOURCES}, to ensure that they would be built before any
3146 other compilations (perhaps ones using these headers) were started.
3147
3148
3149 @node Other GNU Tools, Documentation, Other objects, Top
3150 @chapter Other GNU Tools
3151
3152 Since Automake is primarily intended to generate @file{Makefile.in}s for
3153 use in GNU programs, it tries hard to interoperate with other GNU tools.
3154
3155 @menu
3156 * Emacs Lisp::                  Emacs Lisp
3157 * gettext::                     Gettext
3158 * Libtool::                     Libtool
3159 * Java::                        Java
3160 * Python::                      Python
3161 @end menu
3162
3163
3164 @node Emacs Lisp, gettext, Other GNU Tools, Other GNU Tools
3165 @section Emacs Lisp
3166
3167 @cindex _LISP primary, defined
3168 @cindex LISP primary, defined
3169 @cindex Primary variable, LISP
3170
3171 @vindex LISP
3172 @vindex lisp_LISP
3173 @vindex noinst_LISP
3174
3175 Automake provides some support for Emacs Lisp.  The @samp{LISP} primary
3176 is used to hold a list of @file{.el} files.  Possible prefixes for this
3177 primary are @samp{lisp_} and @samp{noinst_}.  Note that if
3178 @code{lisp_LISP} is defined, then @file{configure.in} must run
3179 @code{AM_PATH_LISPDIR} (@pxref{Macros}).
3180
3181 @vindex ELCFILES
3182
3183 By default Automake will byte-compile all Emacs Lisp source files using
3184 the Emacs found by @code{AM_PATH_LISPDIR}.  If you wish to avoid
3185 byte-compiling, simply define the variable @code{ELCFILES} to be empty.
3186 Byte-compiled Emacs Lisp files are not portable among all versions of
3187 Emacs, so it makes sense to turn this off if you expect sites to have
3188 more than one version of Emacs installed.  Furthermore, many packages
3189 don't actually benefit from byte-compilation.  Still, we recommend that
3190 you leave it enabled by default.  It is probably better for sites with
3191 strange setups to cope for themselves than to make the installation less
3192 nice for everybody else.
3193
3194
3195 @node gettext, Libtool, Emacs Lisp, Other GNU Tools
3196 @section Gettext
3197
3198 @cindex GNU Gettext support
3199 @cindex Gettext support
3200 @cindex Support for GNU Gettext
3201
3202 If @code{AM_GNU_GETTEXT} is seen in @file{configure.in}, then Automake
3203 turns on support for GNU gettext, a message catalog system for
3204 internationalization
3205 (@pxref{GNU Gettext, , , gettext, GNU gettext utilities}).
3206
3207 The @code{gettext} support in Automake requires the addition of two
3208 subdirectories to the package, @file{intl} and @file{po}.  Automake
3209 insures that these directories exist and are mentioned in
3210 @code{SUBDIRS}.
3211
3212
3213 @node Libtool, Java, gettext, Other GNU Tools
3214 @section Libtool
3215
3216 Automake provides support for GNU Libtool (@pxref{Top, , Introduction,
3217 libtool, The Libtool Manual}) with the @samp{LTLIBRARIES} primary.
3218 @xref{A Shared Library}.
3219
3220
3221 @node Java, Python, Libtool, Other GNU Tools
3222 @section Java
3223
3224 @cindex _JAVA primary, defined
3225 @cindex JAVA primary, defined
3226 @cindex Primary variable, JAVA
3227
3228 Automake provides some minimal support for Java compilation with the
3229 @samp{JAVA} primary.
3230
3231 Any @file{.java} files listed in a @samp{_JAVA} variable will be
3232 compiled with @code{JAVAC} at build time.  By default, @file{.class}
3233 files are not included in the distribution.
3234
3235 @cindex JAVA restrictions
3236 @cindex Restrictions for JAVA
3237
3238 Currently Automake enforces the restriction that only one @samp{_JAVA}
3239 primary can be used in a given @file{Makefile.am}.  The reason for this
3240 restriction is that, in general, it isn't possible to know which
3241 @file{.class} files were generated from which @file{.java} files -- so
3242 it would be impossible to know which files to install where.  For
3243 instance, a @file{.java} file can define multiple classes; the resulting
3244 @file{.class} file names cannot be predicted without parsing the
3245 @file{.java} file.
3246
3247 There are a few variables which are used when compiling Java sources:
3248
3249 @vtable @code
3250 @item JAVAC
3251 The name of the Java compiler.  This defaults to @samp{javac}.
3252
3253 @item JAVACFLAGS
3254 The flags to pass to the compiler.  This is considered to be a user
3255 variable (@pxref{User Variables}).
3256
3257 @item AM_JAVACFLAGS
3258 More flags to pass to the Java compiler.  This, and not
3259 @code{JAVACFLAGS}, should be used when it is necessary to put Java
3260 compiler flags into @file{Makefile.am}.
3261
3262 @item JAVAROOT
3263 The value of this variable is passed to the @samp{-d} option to
3264 @code{javac}.  It defaults to @samp{$(top_builddir)}.
3265
3266 @item CLASSPATH_ENV
3267 This variable is an @code{sh} expression which is used to set the
3268 @code{CLASSPATH} environment variable on the @code{javac} command line.
3269 (In the future we will probably handle class path setting differently.)
3270 @end vtable
3271
3272
3273 @node Python,  , Java, Other GNU Tools
3274 @section Python
3275
3276 @cindex _PYTHON primary, defined
3277 @cindex PYTHON primary, defined
3278 @cindex Primary variable, PYTHON
3279
3280
3281 Automake provides support for Python compilation with the @samp{PYTHON}
3282 primary.
3283
3284 Any files listed in a @samp{_PYTHON} variable will be byte-compiled with
3285 @code{py-compile} at install time.  @code{py-compile} actually creates
3286 both standard (@file{.pyc}) and byte-compiled (@file{.pyo}) versions of
3287 the source files.  Note that because byte-compilation occurs at install
3288 time, any files listed in @samp{noinst_PYTHON} will not be compiled.
3289 Python source files are included in the distribution by default.
3290
3291 Automake ships with an Autoconf macro called @code{AM_PATH_PYTHON} which
3292 will determine some Python-related directory variables (see below).  If
3293 have called @code{AM_PATH_PYTHON} from you @file{configure.in}, then you
3294 may use the following variables to list you Python source files in your
3295 variables: @samp{python_PYTHON}, @samp{pkgpython_PYTHON},
3296 @samp{pkgpython_PYTHON}, @samp{pyexecdir_PYTHON},
3297 @samp{pkgpyexecdir_PYTHON}, depending where you want your files
3298 installed.
3299
3300 @code{AM_PATH_PYTHON} takes a single optional argument.  This argument,
3301 if present, is the minimum version of Python which can be used for this
3302 package.  If the version of Python found on the system is older than the
3303 required version, then @code{AM_PATH_PYTHON} will cause an error.
3304
3305 @code{AM_PATH_PYTHON} creates several output variables based on the
3306 Python installation found during configuration.
3307
3308 @vtable @code
3309 @item PYTHON
3310 The name of the Python executable.
3311
3312 @item PYTHON_VERSION
3313 The Python version number, in the form @var{major}.@var{minor}
3314 (e.g. @samp{1.5}).  This is currently the value of
3315 @code{sys.version[:3]}.
3316
3317 @item PYTHON_PREFIX
3318 The string @code{$prefix}.  This term may be used in future work
3319 which needs the contents of Python's @code{sys.prefix}, but general
3320 consensus is to always use the value from configure.
3321
3322 @item PYTHON_EXEC_PREFIX
3323 The string @code{$exec_prefix}.  This term may be used in future work
3324 which needs the contents of Python's @code{sys.exec_prefix}, but general
3325 consensus is to always use the value from configure.
3326
3327 @item PYTHON_PLATFORM
3328 The canonical name used by Python to describe the operating system, as
3329 given by @code{sys.platform}.  This value is sometimes needed when
3330 building Python extensions.
3331
3332 @item pythondir
3333 The directory name for the @file{site-packages} subdirectory of the
3334 standard Python install tree.
3335
3336 @item pkgpythondir
3337 This is is the directory under @code{pythondir} which is named after the
3338 package.  That is, it is @samp{$(pythondir)/$(PACKAGE)}.  It is provided
3339 as a convenience.
3340
3341 @item pyexecdir
3342 This is the directory where Python extension modules (shared libraries)
3343 should be installed.
3344
3345 @item pkgpyexecdir
3346 This is a convenience variable which is defined as
3347 @samp{$(pyexecdir)/$(PACKAGE)}.
3348 @end vtable
3349
3350
3351 @node Documentation, Install, Other GNU Tools, Top
3352 @chapter Building documentation
3353
3354 Currently Automake provides support for Texinfo and man pages.
3355
3356 @menu
3357 * Texinfo::                     Texinfo
3358 * Man pages::                   Man pages
3359 @end menu
3360
3361
3362 @node Texinfo, Man pages, Documentation, Documentation
3363 @section Texinfo
3364
3365 @cindex _TEXINFOS primary, defined
3366 @cindex TEXINFOS primary, defined
3367 @cindex Primary variable, TEXINFOS
3368
3369 If the current directory contains Texinfo source, you must declare it
3370 with the @samp{TEXINFOS} primary.  Generally Texinfo files are converted
3371 into info, and thus the @code{info_TEXINFOS} macro is most commonly used
3372 here.  Any Texinfo source file must end in the @file{.texi},
3373 @file{.txi}, or @file{.texinfo} extension.  We recommend @file{.texi}
3374 for new manuals.
3375 @vindex TEXINFOS
3376 @vindex info_TEXINFOS
3377
3378 @cindex Texinfo macro, VERSION
3379 @cindex Texinfo macro, UPDATED
3380 @cindex Texinfo macro, EDITION
3381 @cindex Texinfo macro, UPDATED-MONTH
3382
3383 @cindex VERSION Texinfo macro
3384 @cindex UPDATED Texinfo macro
3385 @cindex EDITION Texinfo macro
3386 @cindex UPDATED-MONTH Texinfo macro
3387
3388 @cindex mdate-sh
3389
3390 If the @file{.texi} file @code{@@include}s @file{version.texi}, then
3391 that file will be automatically generated.  The file @file{version.texi}
3392 defines four Texinfo macros you can reference:
3393
3394 @table @code
3395 @item EDITION
3396 @itemx VERSION
3397 Both of these macros hold the version number of your program.  They are
3398 kept separate for clarity.
3399
3400 @item UPDATED
3401 This holds the date the primary @file{.texi} file was last modified.
3402
3403 @item UPDATED-MONTH
3404 This holds the name of the month in which the primary @file{.texi} file
3405 was last modified.
3406 @end table
3407
3408 The @file{version.texi} support requires the @code{mdate-sh} program;
3409 this program is supplied with Automake and automatically included when
3410 @code{automake} is invoked with the @code{--add-missing} option.
3411
3412 If you have multiple Texinfo files, and you want to use the
3413 @file{version.texi} feature, then you have to have a separate version
3414 file for each Texinfo file.  Automake will treat any include in a
3415 Texinfo file that matches @samp{vers*.texi} just as an automatically
3416 generated version file.
3417
3418 When an info file is rebuilt, the program named by the @code{MAKEINFO}
3419 variable is used to invoke it.  If the @code{makeinfo} program is found
3420 on the system then it will be used by default; otherwise @code{missing}
3421 will be used instead.  The flags in the variables @code{MAKEINFOFLAGS}
3422 and @code{AM_MAKEINFOFLAGS} will be passed to the @code{makeinfo}
3423 invocation; the first of these is intended for use by the user
3424 (@pxref{User Variables}) and the second by the @file{Makefile.am}
3425 writer.
3426 @vindex MAKEINFO
3427 @vindex MAKEINFOFLAGS
3428 @vindex AM_MAKEINFOFLAGS
3429
3430 Sometimes an info file actually depends on more than one @file{.texi}
3431 file.  For instance, in GNU Hello, @file{hello.texi} includes the file
3432 @file{gpl.texi}.  You can tell Automake about these dependencies using
3433 the @code{@var{texi}_TEXINFOS} variable.  Here is how GNU Hello does it:
3434 @vindex TEXINFOS
3435 @vindex _TEXINFOS
3436
3437 @example
3438 info_TEXINFOS = hello.texi
3439 hello_TEXINFOS = gpl.texi
3440 @end example
3441
3442 @cindex texinfo.tex
3443
3444 By default, Automake requires the file @file{texinfo.tex} to appear in
3445 the same directory as the Texinfo source.  However, if you used
3446 @code{AC_CONFIG_AUX_DIR} in @file{configure.in} (@pxref{Input, , Finding
3447 `configure' Input, autoconf, The Autoconf Manual}), then
3448 @file{texinfo.tex} is looked for there.  Automake supplies
3449 @file{texinfo.tex} if @samp{--add-missing} is given.
3450
3451 @vindex TEXINFO_TEX
3452
3453 If your package has Texinfo files in many directories, you can use the
3454 variable @code{TEXINFO_TEX} to tell Automake where to find the canonical
3455 @file{texinfo.tex} for your package.  The value of this variable should
3456 be the relative path from the current @file{Makefile.am} to
3457 @file{texinfo.tex}:
3458
3459 @example
3460 TEXINFO_TEX = ../doc/texinfo.tex
3461 @end example
3462
3463 @opindex no-texinfo.tex
3464
3465 The option @samp{no-texinfo.tex} can be used to eliminate the
3466 requirement for @file{texinfo.tex}.  Use of the variable
3467 @code{TEXINFO_TEX} is preferable, however, because that allows the
3468 @code{dvi} target to still work.
3469
3470 @cindex Target, install-info
3471 @cindex Target, noinstall-info
3472 @cindex install-info target
3473 @cindex noinstall-info target
3474
3475 @opindex no-installinfo
3476 @trindex install-info
3477
3478 Automake generates an @code{install-info} target; some people apparently
3479 use this.  By default, info pages are installed by @samp{make install}.
3480 This can be prevented via the @code{no-installinfo} option.
3481
3482
3483 @node Man pages,  , Texinfo, Documentation
3484 @section Man pages
3485
3486 @cindex _MANS primary, defined
3487 @cindex MANS primary, defined
3488 @cindex Primary variable, MANS
3489
3490 A package can also include man pages (but see the GNU standards on this
3491 matter, @ref{Man Pages, , , standards, The GNU Coding Standards}.)  Man
3492 pages are declared using the @samp{MANS} primary.  Generally the
3493 @code{man_MANS} macro is used.  Man pages are automatically installed in
3494 the correct subdirectory of @code{mandir}, based on the file extension.
3495 @vindex MANS
3496 @vindex man_MANS
3497
3498 File extensions such as @samp{.1c} are handled by looking for the valid
3499 part of the extension and using that to determine the correct
3500 subdirectory of @code{mandir}.  Valid section names are the digits
3501 @samp{0} through @samp{9}, and the letters @samp{l} and @samp{n}.
3502
3503 Sometimes developers prefer to name a man page something like
3504 @file{foo.man} in the source, and then rename it to have the correct
3505 suffix, e.g. @file{foo.1}, when installing the file.  Automake also
3506 supports this mode.  For a valid section named @var{SECTION}, there is a
3507 corresponding directory named @samp{man@var{SECTION}dir}, and a
3508 corresponding @samp{_MANS} variable.  Files listed in such a variable
3509 are installed in the indicated section.  If the file already has a
3510 valid suffix, then it is installed as-is; otherwise the file suffix is
3511 changed to match the section.
3512
3513 For instance, consider this example:
3514 @example
3515 man1_MANS = rename.man thesame.1 alsothesame.1c
3516 @end example
3517
3518 In this case, @file{rename.man} will be renamed to @file{rename.1} when
3519 installed, but the other files will keep their names.
3520
3521 @cindex Target, install-man
3522 @cindex Target, noinstall-man
3523 @cindex install-man target
3524 @cindex noinstall-man target
3525
3526 @c Use @samp{make install} per documentation: (texi)code.
3527 By default, man pages are installed by @samp{make install}.  However,
3528 since the GNU project does not require man pages, many maintainers do
3529 not expend effort to keep the man pages up to date.  In these cases, the
3530 @code{no-installman} option will prevent the man pages from being
3531 installed by default.  The user can still explicitly install them via
3532 @samp{make install-man}.
3533 @opindex no-installman
3534 @trindex install-man
3535
3536 Here is how the man pages are handled in GNU @code{cpio} (which includes
3537 both Texinfo documentation and man pages):
3538
3539 @example
3540 man_MANS = cpio.1 mt.1
3541 EXTRA_DIST = $(man_MANS)
3542 @end example
3543
3544 Man pages are not currently considered to be source, because it is not
3545 uncommon for man pages to be automatically generated.  Therefore they
3546 are not automatically included in the distribution.  However, this can
3547 be changed by use of the @samp{dist_} prefix.
3548
3549 The @samp{nobase_} prefix is meaningless for man pages and is
3550 disallowed.
3551
3552
3553 @node Install, Clean, Documentation, Top
3554 @chapter What Gets Installed
3555
3556 @cindex Installation support
3557 @cindex make install support
3558
3559 @section Basics of installation
3560
3561 Naturally, Automake handles the details of actually installing your
3562 program once it has been built.  All files named by the various
3563 primaries are automatically installed in the appropriate places when the
3564 user runs @code{make install}.
3565
3566 A file named in a primary is installed by copying the built file into
3567 the appropriate directory.  The base name of the file is used when
3568 installing.
3569
3570 @example
3571 bin_PROGRAMS = hello subdir/goodbye
3572 @end example
3573
3574 In this example, both @samp{hello} and @samp{goodbye} will be installed
3575 in @code{$(bindir)}.
3576
3577 Sometimes it is useful to avoid the basename step at install time.  For
3578 instance, you might have a number of header files in subdirectories of
3579 the source tree which are laid out precisely how you want to install
3580 them.  In this situation you can use the @samp{nobase_} prefix to
3581 suppress the base name step.  For example:
3582
3583 @example
3584 nobase_include_HEADERS = stdio.h sys/types.h
3585 @end example
3586
3587 Will install @file{stdio.h} in @code{$(includedir)} and @file{types.h}
3588 in @code{$(includedir)/sys}.
3589
3590 @section The two parts of install
3591
3592 Automake generates separate @code{install-data} and @code{install-exec}
3593 targets, in case the installer is installing on multiple machines which
3594 share directory structure---these targets allow the machine-independent
3595 parts to be installed only once.  @code{install-exec} installs
3596 platform-dependent files, and @code{install-data} installs
3597 platform-independent files.  The @code{install} target depends on both
3598 of these targets.  While Automake tries to automatically segregate
3599 objects into the correct category, the @file{Makefile.am} author is, in
3600 the end, responsible for making sure this is done correctly.
3601 @trindex install-data
3602 @trindex install-exec
3603 @trindex install
3604 @cindex Install, two parts of
3605
3606 Variables using the standard directory prefixes @samp{data},
3607 @samp{info}, @samp{man}, @samp{include}, @samp{oldinclude},
3608 @samp{pkgdata}, or @samp{pkginclude} (e.g. @samp{data_DATA}) are
3609 installed by @samp{install-data}.
3610
3611 Variables using the standard directory prefixes @samp{bin}, @samp{sbin},
3612 @samp{libexec}, @samp{sysconf}, @samp{localstate}, @samp{lib}, or
3613 @samp{pkglib} (e.g. @samp{bin_PROGRAMS}) are installed by
3614 @samp{install-exec}.
3615
3616 Any variable using a user-defined directory prefix with @samp{exec} in
3617 the name (e.g. @samp{myexecbin_PROGRAMS} is installed by
3618 @samp{install-exec}.  All other user-defined prefixes are installed by
3619 @samp{install-data}.
3620
3621 @section Extending installation
3622
3623 It is possible to extend this mechanism by defining an
3624 @code{install-exec-local} or @code{install-data-local} target.  If these
3625 targets exist, they will be run at @samp{make install} time.  These
3626 rules can do almost anything; care is required.
3627 @trindex install-exec-local
3628 @trindex install-data-local
3629
3630 Automake also supports two install hooks, @code{install-exec-hook} and
3631 @code{install-data-hook}.  These hooks are run after all other install
3632 rules of the appropriate type, exec or data, have completed.  So, for
3633 instance, it is possible to perform post-installation modifications
3634 using an install hook.
3635 @cindex Install hook
3636
3637 @section Staged installs
3638
3639 @vindex DESTDIR
3640 Automake generates support for the @samp{DESTDIR} variable in all
3641 install rules.  @samp{DESTDIR} is used during the @samp{make install}
3642 step to relocate install objects into a staging area.  Each object and
3643 path is prefixed with the value of @samp{DESTDIR} before being copied
3644 into the install area.  Here is an example of typical DESTDIR usage:
3645
3646 @example
3647 make DESTDIR=/tmp/staging install
3648 @end example
3649
3650 This places install objects in a directory tree built under
3651 @file{/tmp/staging}.  If @file{/gnu/bin/foo} and
3652 @file{/gnu/share/aclocal/foo.m4} are to be installed, the above command
3653 would install @file{/tmp/staging/gnu/bin/foo} and
3654 @file{/tmp/staging/gnu/share/aclocal/foo.m4}.
3655
3656 This feature is commonly used to build install images and packages.  For
3657 more information, see @ref{Makefile Conventions, , , standards, The GNU
3658 Coding Standards}.
3659
3660 Support for @samp{DESTDIR} is implemented by coding it directly into the
3661 install rules.  If your @file{Makefile.am} uses a local install rule
3662 (e.g., @code{install-exec-local}) or an install hook, then you must
3663 write that code to respect @samp{DESTDIR}.
3664
3665 @section Rules for the user
3666
3667 Automake also generates an @code{uninstall} target, an
3668 @code{installdirs} target, and an @code{install-strip} target.
3669 @trindex uninstall
3670 @trindex installdirs
3671 @trindex install-strip
3672
3673 Automake supports @code{uninstall-local} and @code{uninstall-hook}.
3674 There is no notion of separate uninstalls for ``exec'' and ``data'', as
3675 these features would not provide additional functionality.
3676
3677 Note that @code{uninstall} is not meant as a replacement for a real
3678 packaging tool.
3679
3680
3681 @node Clean, Dist, Install, Top
3682 @chapter What Gets Cleaned
3683
3684 @cindex make clean support
3685
3686 The GNU Makefile Standards specify a number of different clean rules.
3687 See @xref{Standard Targets, , Standard Targets for Users, standards,
3688 The GNU Coding Standards}.
3689
3690 Generally the files that can be cleaned are determined automatically by
3691 Automake.  Of course, Automake also recognizes some variables that can
3692 be defined to specify additional files to clean.  These variables are
3693 @code{MOSTLYCLEANFILES}, @code{CLEANFILES}, @code{DISTCLEANFILES}, and
3694 @code{MAINTAINERCLEANFILES}.
3695 @vindex MOSTLYCLEANFILES
3696 @vindex CLEANFILES
3697 @vindex DISTCLEANFILES
3698 @vindex MAINTAINERCLEANFILES
3699
3700 As the GNU Standards aren't always explicit as to which files should be
3701 removed by which target, we've adopted a heuristic which we believe was
3702 first formulated by Fran@,{c}ois Pinard:
3703
3704 @itemize @bullet
3705 @item
3706 If @code{make} built it, and it is commonly something that one would
3707 want to rebuild (for instance, a @file{.o} file), then
3708 @code{mostlyclean} should delete it.
3709
3710 @item
3711 Otherwise, if @code{make} built it, then @code{clean} should delete it.
3712
3713 @item
3714 If @code{configure} built it, then @code{distclean} should delete it
3715
3716 @item
3717 If the maintainer built it, then @code{maintainer-clean} should
3718 delete it.
3719 @end itemize
3720
3721 We recommend that you follow this same set of heuristics in your
3722 @file{Makefile.am}.
3723
3724
3725 @node Dist, Tests, Clean, Top
3726 @chapter What Goes in a Distribution
3727
3728 @section Basics of distribution
3729
3730 @cindex make dist
3731
3732 The @code{dist} target in the generated @file{Makefile.in} can be used
3733 to generate a gzip'd @code{tar} file and other flavors of archive for
3734 distribution.  The files is named based on the @samp{PACKAGE} and
3735 @samp{VERSION} variables defined by @code{AM_INIT_AUTOMAKE}
3736 (@pxref{Macros}); more precisely the gzip'd @code{tar} file is named
3737 @samp{@var{package}-@var{version}.tar.gz}.
3738 @cvindex PACKAGE
3739 @cvindex VERSION
3740 @trindex dist
3741 You can use the @code{make} variable @samp{GZIP_ENV} to control how gzip
3742 is run.  The default setting is @samp{--best}.
3743
3744 For the most part, the files to distribute are automatically found by
3745 Automake: all source files are automatically included in a distribution,
3746 as are all @file{Makefile.am}s and @file{Makefile.in}s.  Automake also
3747 has a built-in list of commonly used files which are automatically
3748 included if they are found in the current directory (either physically,
3749 or as the target of a @file{Makefile.am} rule).  This list is printed by
3750 @samp{automake --help}.  Also, files which are read by @code{configure}
3751 (i.e. the source files corresponding to the files specified in various
3752 Autoconf macros such as @code{AC_CONFIG_FILES} and siblings) are
3753 automatically distributed.
3754
3755 Still, sometimes there are files which must be distributed, but which
3756 are not covered in the automatic rules.  These files should be listed in
3757 the @code{EXTRA_DIST} variable.  You can mention files from
3758 subdirectories in @code{EXTRA_DIST}.
3759
3760 You can also mention a directory in @code{EXTRA_DIST}; in this case the
3761 entire directory will be recursively copied into the distribution.
3762 Please note that this will also copy @emph{everything} in the directory,
3763 including CVS/RCS version control files.  We recommend against using
3764 this feature.
3765
3766 @vindex EXTRA_DIST
3767
3768 @section Fine-grained distribution control
3769
3770 Sometimes you need tighter control over what does @emph{not} go into the
3771 distribution; for instance you might have source files which are
3772 generated and which you do not want to distribute.  In this case
3773 Automake gives fine-grained control using the @samp{dist} and
3774 @samp{nodist} prefixes.  Any primary or @samp{_SOURCES} variable can be
3775 prefixed with @samp{dist_} to add the listed files to the distribution.
3776 Similarly, @samp{nodist_} can be used to omit the files from the
3777 distribution.
3778 @vindex dist_
3779 @vindex nodist_
3780
3781 As an example, here is how you would cause some data to be distributed
3782 while leaving some source code out of the distribution:
3783
3784 @example
3785 dist_data_DATA = distribute-this
3786 bin_PROGRAMS = foo
3787 nodist_foo_SOURCES = do-not-distribute.c
3788 @end example
3789
3790 @section The dist hook
3791
3792 Another way to to use this is for removing unnecessary files that get
3793 recursively included by specifying a directory in EXTRA_DIST:
3794
3795 @example
3796 EXTRA_DIST = doc
3797
3798 dist-hook:
3799         rm -rf `find $(distdir)/doc -name CVS`
3800 @end example
3801
3802 If you define @code{SUBDIRS}, Automake will recursively include the
3803 subdirectories in the distribution.  If @code{SUBDIRS} is defined
3804 conditionally (@pxref{Conditionals}), Automake will normally include all
3805 directories that could possibly appear in @code{SUBDIRS} in the
3806 distribution.  If you need to specify the set of directories
3807 conditionally, you can set the variable @code{DIST_SUBDIRS} to the exact
3808 list of subdirectories to include in the distribution.
3809 @vindex DIST_SUBDIRS
3810
3811 @trindex dist-hook
3812
3813 Occasionally it is useful to be able to change the distribution before
3814 it is packaged up.  If the @code{dist-hook} target exists, it is run
3815 after the distribution directory is filled, but before the actual tar
3816 (or shar) file is created.  One way to use this is for distributing
3817 files in subdirectories for which a new @file{Makefile.am} is overkill:
3818
3819 @example
3820 dist-hook:
3821         mkdir $(distdir)/random
3822         cp -p $(srcdir)/random/a1 $(srcdir)/random/a2 $(distdir)/random
3823 @end example
3824
3825 @section Checking the distribution
3826
3827 @cindex make distcheck
3828 @cindex make distcleancheck
3829 @vindex distcleancheck_listfiles
3830
3831 Automake also generates a @code{distcheck} target which can be of help
3832 to ensure that a given distribution will actually work.
3833 @code{distcheck} makes a distribution, then tries to do a @code{VPATH}
3834 build, run the testsuite, and finally make another tarfile to ensure the
3835 distribution is self-contained.
3836 @trindex distcheck
3837
3838 Building the package involves running @code{./configure}.  If you need
3839 to supply additional flags to @code{configure}, define them in the
3840 @code{DISTCHECK_CONFIGURE_FLAGS} variable, either in your top-level
3841 @file{Makefile.am}, or on the commande line when invoking @code{make}.
3842 @vindex DISTCHECK_CONFIGURE_FLAGS
3843
3844 If the target @code{distcheck-hook} is defined in your
3845 @file{Makefile.am}, then it will be invoked by @code{distcheck} after
3846 the new distribution has been unpacked, but before the unpacked copy is
3847 configured and built.  Your @code{distcheck-hook} can do almost
3848 anything, though as always caution is advised.  Generally this hook is
3849 used to check for potential distribution errors not caught by the
3850 standard mechanism.
3851
3852 Speaking about potential distribution errors, @code{distcheck} will also
3853 ensure that the @code{distclean} target actually removes all built
3854 files.  This is done by running @code{make distcleancheck} at the end of
3855 the @code{VPATH} build.  By default, @code{distcleancheck} will run
3856 @code{distclean} and then make sure the build tree has been emptied by
3857 running @code{$(distcleancheck_listfiles)}.  Usually this check will
3858 find generated files that you forgot to add to the @code{DISTCLEANFILES}
3859 variable (@pxref{Clean}).
3860 @trindex distcleancheck
3861
3862 The @code{distcleancheck} behaviour should be ok for most packages,
3863 otherwise you have the possibility to override the definitition of
3864 either the @code{distcleancheck} target, or the
3865 @code{$(distcleancheck_listfiles)} variable.  For instance to disable
3866 @code{distcleancheck} completely, add the following rule to your
3867 top-level @file{Makefile.am}:
3868 @vindex distcleancheck_listfiles
3869
3870 @example
3871 distcleancheck:
3872         @@:
3873 @end example
3874
3875 If you want @code{distcleancheck} to ignore built files which have not
3876 been cleaned because they are also part of the distribution, add the
3877 following definition instead:
3878
3879 @example
3880 distcleancheck_listfiles = \
3881   find -type f -exec sh -c 'test -f $(scrdir)/@{@} || echo @{@}'
3882 @end example
3883
3884 The above definition is not the default because it's usually an error if
3885 your Makefiles cause some distributed files to be rebuilt when the user
3886 build the package.  (Think about the user missing the tool required to
3887 build the file; or if the required tool is built by your package,
3888 consider the cross-compilation case where it can't be run.)
3889
3890 @section The types of distributions
3891
3892 @trindex dist-gzip
3893 Automake generates a @samp{.tar.gz} file when asked to create a
3894 distribution and other archives formats, @ref{Options}.  The target
3895 @code{dist-gzip} generates the @samp{.tar.gz} file only.
3896
3897
3898 @node Tests, Options, Dist, Top
3899 @chapter Support for test suites
3900
3901 @cindex Test suites
3902 @cindex make check
3903
3904 Automake supports two forms of test suites.
3905
3906 @section Simple Tests
3907
3908 If the variable @code{TESTS} is defined, its value is taken to be a list
3909 of programs to run in order to do the testing.  The programs can either
3910 be derived objects or source objects; the generated rule will look both
3911 in @code{srcdir} and @file{.}.  Programs needing data files should look
3912 for them in @code{srcdir} (which is both an environment variable and a
3913 make variable) so they work when building in a separate directory
3914 (@pxref{Build Directories, , Build Directories , autoconf, The Autoconf
3915 Manual}), and in particular for the @code{distcheck} target
3916 (@pxref{Dist}).
3917
3918 @cindex Exit status 77, special interpretation
3919
3920 The number of failures will be printed at the end of the run.  If a
3921 given test program exits with a status of 77, then its result is ignored
3922 in the final count.  This feature allows non-portable tests to be
3923 ignored in environments where they don't make sense.
3924
3925 The variable @code{TESTS_ENVIRONMENT} can be used to set environment
3926 variables for the test run; the environment variable @code{srcdir} is
3927 set in the rule.  If all your test programs are scripts, you can also
3928 set @code{TESTS_ENVIRONMENT} to an invocation of the shell (e.g.
3929 @samp{$(SHELL) -x}); this can be useful for debugging the tests.
3930 @vindex TESTS
3931 @vindex TESTS_ENVIRONMENT
3932
3933 @cindex Tests, expected failure
3934 @cindex Expected test failure
3935
3936 You may define the variable @code{XFAIL_TESTS} to a list of tests
3937 (usually a subset of @code{TESTS}) that are expected to fail.  This will
3938 reverse the result of those tests.
3939 @vindex XFAIL_TESTS
3940
3941 Automake ensures that each program listed in @code{TESTS} is built
3942 before any tests are run; you can list both source and derived programs
3943 in @code{TESTS}.  For instance, you might want to run a C program as a
3944 test.  To do this you would list its name in @code{TESTS} and also in
3945 @code{check_PROGRAMS}, and then specify it as you would any other
3946 program.
3947
3948 @section DejaGNU Tests
3949
3950 If @uref{ftp://prep.ai.mit.edu/pub/gnu/dejagnu-1.3.tar.gz,
3951 @samp{dejagnu}} appears in @code{AUTOMAKE_OPTIONS}, then a
3952 @code{dejagnu}-based test suite is assumed.  The variable
3953 @code{DEJATOOL} is a list of names which are passed, one at a time, as
3954 the @code{--tool} argument to @code{runtest} invocations; it defaults to
3955 the name of the package.
3956
3957 The variable @code{RUNTESTDEFAULTFLAGS} holds the @code{--tool} and
3958 @code{--srcdir} flags that are passed to dejagnu by default; this can be
3959 overridden if necessary.
3960 @vindex RUNTESTDEFAULTFLAGS
3961
3962 The variables @code{EXPECT} and @code{RUNTEST} can
3963 also be overridden to provide project-specific values.  For instance,
3964 you will need to do this if you are testing a compiler toolchain,
3965 because the default values do not take into account host and target
3966 names.
3967 @opindex dejagnu
3968 @vindex DEJATOOL
3969 @vindex EXPECT
3970 @vindex RUNTEST
3971
3972 The contents of the variable @code{RUNTESTFLAGS} are passed to the
3973 @code{runtest} invocation.  This is considered a ``user variable''
3974 (@pxref{User Variables}).  If you need to set @code{runtest} flags in
3975 @file{Makefile.am}, you can use @code{AM_RUNTESTFLAGS} instead.
3976 @vindex RUNTESTFLAGS
3977 @vindex AM_RUNTESTFLAGS
3978 @c FIXME xref dejagnu
3979
3980 In either case, the testing is done via @samp{make check}.
3981
3982 @section Install Tests
3983
3984 The @code{installcheck} target is available to the user as a way to run
3985 any tests after the package has been installed.  You can add tests to
3986 this by writing an @code{installcheck-local} target.
3987
3988
3989 @node Options, Miscellaneous, Tests, Top
3990 @chapter Changing Automake's Behavior
3991
3992 Various features of Automake can be controlled by options in the
3993 @file{Makefile.am}.  Such options are applied on a per-@file{Makefile}
3994 basis when listed in a special @file{Makefile} variable named
3995 @code{AUTOMAKE_OPTIONS}.  They are applied globally to all processed
3996 @file{Makefiles} when listed in the first argument of
3997 @code{AM_INIT_AUTOMAKE} in @file{configure.in}.  Currently understood
3998 options are:
3999 @vindex AUTOMAKE_OPTIONS
4000
4001 @table @asis
4002 @item @code{gnits}
4003 @itemx @code{gnu}
4004 @itemx @code{foreign}
4005 @itemx @code{cygnus}
4006 @cindex Option, gnits
4007 @cindex Option, gnu
4008 @cindex Option, foreign
4009 @cindex Option, cygnus
4010
4011 Set the strictness as appropriate.  The @code{gnits} option also implies
4012 @code{readme-alpha} and @code{check-news}.
4013
4014 @item @code{ansi2knr}
4015 @itemx @code{@var{path}/ansi2knr}
4016 @cindex Option, ansi2knr
4017 Turn on automatic de-ANSI-fication.  @xref{ANSI}.  If preceded by a
4018 path, the generated @file{Makefile.in} will look in the specified
4019 directory to find the @file{ansi2knr} program.  The path should be a
4020 relative path to another directory in the same distribution (Automake
4021 currently does not check this).
4022
4023 @item @code{check-news}
4024 @cindex Option, check-news
4025 Cause @code{make dist} to fail unless the current version number appears
4026 in the first few lines of the @file{NEWS} file.
4027
4028 @item @code{dejagnu}
4029 @cindex Option, dejagnu
4030 Cause @code{dejagnu}-specific rules to be generated.  @xref{Tests}.
4031
4032 @item @code{dist-bzip2}
4033 @cindex Option, dist-bzip2
4034 Generate a @code{dist-bzip2} target, creating a bzip2 tar archive of the
4035 distribution.  @code{dist} will create it in addition to the other
4036 formats.  bzip2 archives are frequently smaller than gzipped archives.
4037 @trindex dist-bzip2
4038
4039 @item @code{dist-shar}
4040 @cindex Option, dist-shar
4041 Generate a @code{dist-shar} target, creating a shar archive of the
4042 distribution.  @code{dist} will create it in addition to the other
4043 formats.
4044 @trindex dist-shar
4045
4046 @item @code{dist-zip}
4047 @cindex Option, dist-zip
4048 Generate a @code{dist-zip} target, creating a zip archive of the
4049 distribution.  @code{dist} will create it in addition to the other
4050 formats.
4051 @trindex dist-zip
4052
4053 @item @code{dist-tarZ}
4054 @cindex Option, dist-tarZ
4055 Generate a @code{dist-tarZ} target, creating a compressed tar archive of
4056 the distribution.  @code{dist} will create it in addition to the other
4057 formats.
4058 @trindex dist-tarZ
4059
4060 @item @code{no-define}
4061 @cindex Option, no-define
4062 This options is meaningful only when passed as an argument to
4063 AM_INIT_AUTOMAKE.  It will prevent the @code{PACKAGE} and @code{VERSION}
4064 variable to be @code{AC_DEFINE}d.
4065
4066 @item @code{no-dependencies}
4067 @cindex Option, no-dependencies
4068 This is similar to using @samp{--include-deps} on the command line, but
4069 is useful for those situations where you don't have the necessary bits
4070 to make automatic dependency tracking work @xref{Dependencies}.  In this
4071 case the effect is to effectively disable automatic dependency tracking.
4072
4073 @item @code{no-exeext}
4074 @cindex Option, no-exeext
4075 If your @file{Makefile.am} defines a target @samp{foo}, it will override
4076 a target named @samp{foo$(EXEEXT)}.  This is necessary when
4077 @code{EXEEXT} is found to be empty.  However, by default automake will
4078 generate an error for this use.  The @code{no-exeext} option will
4079 disable this error.  This is intended for use only where it is known in
4080 advance that the package will not be ported to Windows, or any other
4081 operating system using extensions on executables.
4082
4083 @item @code{no-installinfo}
4084 @cindex Option, no-installinfo
4085 The generated @file{Makefile.in} will not cause info pages to be built
4086 or installed by default.  However, @code{info} and @code{install-info}
4087 targets will still be available.  This option is disallowed at
4088 @samp{GNU} strictness and above.
4089 @trindex info
4090 @trindex install-info
4091
4092 @item @code{no-installman}
4093 @cindex Option, no-installman
4094 The generated @file{Makefile.in} will not cause man pages to be
4095 installed by default.  However, an @code{install-man} target will still
4096 be available for optional installation.  This option is disallowed at
4097 @samp{GNU} strictness and above.
4098 @trindex install-man
4099
4100 @item @code{nostdinc}
4101 @cindex Option, nostdinc
4102 This option can be used to disable the standard @samp{-I} options which
4103 are ordinarily automatically provided by Automake.
4104
4105 @item @code{no-texinfo.tex}
4106 @cindex Option, no-texinfo
4107 Don't require @file{texinfo.tex}, even if there are texinfo files in
4108 this directory.
4109
4110 @item @code{readme-alpha}
4111 @cindex Option, readme-alpha
4112 If this release is an alpha release, and the file @file{README-alpha}
4113 exists, then it will be added to the distribution.  If this option is
4114 given, version numbers are expected to follow one of two forms.  The
4115 first form is @samp{@var{MAJOR}.@var{MINOR}.@var{ALPHA}}, where each
4116 element is a number; the final period and number should be left off for
4117 non-alpha releases.  The second form is
4118 @samp{@var{MAJOR}.@var{MINOR}@var{ALPHA}}, where @var{ALPHA} is a
4119 letter; it should be omitted for non-alpha releases.
4120
4121 @item @code{subdir-objects}
4122 If this option is specified, then objects are placed into the
4123 subdirectory of the build directory corresponding to the subdirectory of
4124 the source file.  For instance if the source file is
4125 @file{subdir/file.cxx}, then the output file would be
4126 @file{subdir/file.o}.
4127
4128 @item @var{version}
4129 @cindex Option, version
4130 A version number (e.g. @samp{0.30}) can be specified.  If Automake is not
4131 newer than the version specified, creation of the @file{Makefile.in}
4132 will be suppressed.
4133 @end table
4134
4135 Unrecognized options are diagnosed by @code{automake}.
4136
4137 If you want an option to apply to all the files in the tree, you can use
4138 the @code{AM_AUTOMAKE_OPTIONS} macro in @file{configure.in}.
4139 @xref{Macros}.
4140
4141
4142 @node Miscellaneous, Include, Options, Top
4143 @chapter Miscellaneous Rules
4144
4145 There are a few rules and variables that didn't fit anywhere else.
4146
4147 @menu
4148 * Tags::                        Interfacing to etags and mkid
4149 * Suffixes::                    Handling new file extensions
4150 * Multilibs::                   Support for multilibbing.
4151 @end menu
4152
4153
4154 @node Tags, Suffixes, Miscellaneous, Miscellaneous
4155 @section Interfacing to @code{etags}
4156
4157 @cindex TAGS support
4158
4159 Automake will generate rules to generate @file{TAGS} files for use with
4160 GNU Emacs under some circumstances.
4161
4162 If any C, C++ or Fortran 77 source code or headers are present, then
4163 @code{tags} and @code{TAGS} targets will be generated for the directory.
4164 @trindex tags
4165
4166 At the topmost directory of a multi-directory package, a @code{tags}
4167 target file will be generated which, when run, will generate a
4168 @file{TAGS} file that includes by reference all @file{TAGS} files from
4169 subdirectories.
4170
4171 The @code{tags} target will also be generated if the variable
4172 @code{ETAGS_ARGS} is defined.  This variable is intended for use in
4173 directories which contain taggable source that @code{etags} does not
4174 understand.  The user can use the @code{ETAGSFLAGS} to pass additional
4175 flags to @code{etags}; @code{AM_ETAGSFLAGS} is also available for use in
4176 @file{Makefile.am}.
4177 @vindex ETAGS_ARGS
4178 @vindex ETAGSFLAGS
4179 @vindex AM_ETAGSFLAGS
4180
4181 Here is how Automake generates tags for its source, and for nodes in its
4182 Texinfo file:
4183
4184 @example
4185 ETAGS_ARGS = automake.in --lang=none \
4186  --regex='/^@@node[ \t]+\([^,]+\)/\1/' automake.texi
4187 @end example
4188
4189 If you add filenames to @samp{ETAGS_ARGS}, you will probably also
4190 want to set @samp{TAGS_DEPENDENCIES}.  The contents of this variable
4191 are added directly to the dependencies for the @code{tags} target.
4192 @vindex TAGS_DEPENDENCIES
4193
4194 Automake will also generate an @code{ID} target which will run
4195 @code{mkid} on the source.  This is only supported on a
4196 directory-by-directory basis.
4197 @trindex id
4198
4199 Automake also supports the @uref{http://www.gnu.org/software/global/,
4200 GNU Global Tags program}.  The @code{GTAGS} target runs Global Tags
4201 automatically and puts the result in the top build directory.  The
4202 variable @code{GTAGS_ARGS} holds arguments which are passed to
4203 @code{gtags}.
4204 @vindex GTAGS_ARGS
4205
4206
4207 @node Suffixes, Multilibs, Tags, Miscellaneous
4208 @section Handling new file extensions
4209
4210 @cindex Adding new SUFFIXES
4211 @cindex SUFFIXES, adding
4212 @vindex SUFFIXES
4213
4214 It is sometimes useful to introduce a new implicit rule to handle a file
4215 type that Automake does not know about.
4216
4217 For instance, suppose you had a compiler which could compile @samp{.foo}
4218 files to @samp{.o} files.  You would simply define an suffix rule for
4219 your language:
4220
4221 @example
4222 .foo.o:
4223         foocc -c -o $@@ $<
4224 @end example
4225
4226 Then you could directly use a @samp{.foo} file in a @samp{_SOURCES}
4227 variable and expect the correct results:
4228
4229 @example
4230 bin_PROGRAMS = doit
4231 doit_SOURCES = doit.foo
4232 @end example
4233
4234 This was the simpler and more common case.  In other cases, you will
4235 have to help Automake to figure which extensions you are defining your
4236 suffix rule for.  This usually happens when your extensions does not
4237 start with a dot.  Then, all you have to do is to put a list of new
4238 suffixes in the @code{SUFFIXES} variable @strong{before} you define your
4239 implicit rule.
4240
4241 For instance the following definition prevents Automake to misinterpret
4242 @samp{.idlC.cpp:} as an attemp to transform @samp{.idlC} into
4243 @samp{.cpp}.
4244
4245 @example
4246 SUFFIXES = .idl C.cpp
4247 .idlC.cpp:
4248         # whatever
4249 @end example
4250
4251 As you may have noted, the @code{SUFFIXES} macro behaves like the
4252 @code{.SUFFIXES} special target of @code{make}.  You should not touch
4253 @code{.SUFFIXES} yourself, but use @code{SUFFIXES} instead and let
4254 Automake generate the suffix list for @code{.SUFFIXES}.  Any given
4255 @code{SUFFIXES} go at the start of the generated suffixes list, followed
4256 by Automake generated suffixes not already in the list.
4257
4258 @node Multilibs,  , Suffixes, Miscellaneous
4259 @section Support for Multilibs
4260
4261 Automake has support for an obscure feature called multilibs.  A
4262 @dfn{multilib} is a library which is built for multiple different ABIs
4263 at a single time; each time the library is built with a different target
4264 flag combination.  This is only useful when the library is intended to
4265 be cross-compiled, and it is almost exclusively used for compiler
4266 support libraries.
4267
4268 The multilib support is still experimental.  Only use it if you are
4269 familiar with multilibs and can debug problems you might encounter.
4270
4271
4272 @node Include, Conditionals, Miscellaneous, Top
4273 @chapter Include
4274
4275 @cmindex include
4276 @cindex Including Makefile fragment
4277 @cindex Makefile fragment, including
4278
4279 Automake supports an @code{include} directive which can be used to
4280 include other @file{Makefile} fragments when @code{automake} is run.
4281 Note that these fragments are read and interpreted by @code{automake},
4282 not by @code{make}.  As with conditionals, @code{make} has no idea that
4283 @code{include} is in use.
4284
4285 There are two forms of @code{include}:
4286
4287 @table @code
4288 @item include $(srcdir)/file
4289 Include a fragment which is found relative to the current source
4290 directory.
4291
4292 @item include $(top_srcdir)/file
4293 Include a fragment which is found relative to the top source directory.
4294 @end table
4295
4296 Note that if a fragment is included inside a conditional, then the
4297 condition applies to the entire contents of that fragment.
4298
4299
4300 @node Conditionals, Gnits, Include, Top
4301 @chapter Conditionals
4302
4303 @cindex Conditionals
4304
4305 Automake supports a simple type of conditionals.
4306
4307 @cvindex AM_CONDITIONAL
4308 Before using a conditional, you must define it by using
4309 @code{AM_CONDITIONAL} in the @code{configure.in} file (@pxref{Macros}).
4310
4311 @defmac AM_CONDITIONAL (@var{conditional}, @var{condition})
4312 The conditional name, @var{conditional}, should be a simple string
4313 starting with a letter and containing only letters, digits, and
4314 underscores.  It must be different from @samp{TRUE} and @samp{FALSE}
4315 which are reserved by Automake.
4316
4317 The shell @var{condition} (suitable for use in a shell @code{if}
4318 statement) is evaluated when @code{configure} is run.  Note that you
4319 must arrange for @emph{every} @code{AM_CONDITIONAL} to be invoked every
4320 time @code{configure} is run -- if @code{AM_CONDITIONAL} is run
4321 conditionally (e.g., in a shell @code{if} statement), then the result
4322 will confuse automake.
4323 @end defmac
4324
4325 @cindex --enable-debug, example
4326 @cindex Example conditional --enable-debug
4327 @cindex Conditional example,  --enable-debug
4328
4329 Conditionals typically depend upon options which the user provides to
4330 the @code{configure} script.  Here is an example of how to write a
4331 conditional which is true if the user uses the @samp{--enable-debug}
4332 option.
4333
4334 @example
4335 AC_ARG_ENABLE(debug,
4336 [  --enable-debug    Turn on debugging],
4337 [case "$@{enableval@}" in
4338   yes) debug=true ;;
4339   no)  debug=false ;;
4340   *) AC_MSG_ERROR(bad value $@{enableval@} for --enable-debug) ;;
4341 esac],[debug=false])
4342 AM_CONDITIONAL(DEBUG, test x$debug = xtrue)
4343 @end example
4344
4345 Here is an example of how to use that conditional in @file{Makefile.am}:
4346
4347 @cmindex if
4348 @cmindex endif
4349 @cmindex else
4350
4351 @example
4352 if DEBUG
4353 DBG = debug
4354 else
4355 DBG =
4356 endif
4357 noinst_PROGRAMS = $(DBG)
4358 @end example
4359
4360 This trivial example could also be handled using EXTRA_PROGRAMS
4361 (@pxref{A Program}).
4362
4363 You may only test a single variable in an @code{if} statement, possibly
4364 negated using @samp{!}.  The @code{else} statement may be omitted.
4365 Conditionals may be nested to any depth.  You may specify an argument to
4366 @code{else} in which case it must be the negation of the condition used
4367 for the current @code{if}.  Similarly you may specify the condition
4368 which is closed by an @code{end}:
4369
4370 @example
4371 if DEBUG
4372 DBG = debug
4373 else !DEBUG
4374 DBG =
4375 endif !DEBUG
4376 @end example
4377
4378 @noindent
4379 Unbalanced conditions are errors.
4380
4381 Note that conditionals in Automake are not the same as conditionals in
4382 GNU Make.  Automake conditionals are checked at configure time by the
4383 @file{configure} script, and affect the translation from
4384 @file{Makefile.in} to @file{Makefile}.  They are based on options passed
4385 to @file{configure} and on results that @file{configure} has discovered
4386 about the host system.  GNU Make conditionals are checked at @code{make}
4387 time, and are based on variables passed to the make program or defined
4388 in the @file{Makefile}.
4389
4390 Automake conditionals will work with any make program.
4391
4392
4393 @node Gnits, Cygnus, Conditionals, Top
4394 @chapter The effect of @code{--gnu} and @code{--gnits}
4395
4396 @cindex --gnu, required files
4397 @cindex --gnu, complete description
4398
4399 The @samp{--gnu} option (or @samp{gnu} in the @samp{AUTOMAKE_OPTIONS}
4400 variable) causes @code{automake} to check the following:
4401
4402 @itemize @bullet
4403 @item
4404 The files @file{INSTALL}, @file{NEWS}, @file{README}, @file{COPYING},
4405 @file{AUTHORS}, and @file{ChangeLog} are required at the topmost
4406 directory of the package.
4407
4408 @item
4409 The options @samp{no-installman} and @samp{no-installinfo} are
4410 prohibited.
4411 @end itemize
4412
4413 Note that this option will be extended in the future to do even more
4414 checking; it is advisable to be familiar with the precise requirements
4415 of the GNU standards.  Also, @samp{--gnu} can require certain
4416 non-standard GNU programs to exist for use by various maintainer-only
4417 targets; for instance in the future @code{pathchk} might be required for
4418 @samp{make dist}.
4419
4420 @cindex --gnits, complete description
4421
4422 The @samp{--gnits} option does everything that @samp{--gnu} does, and
4423 checks the following as well:
4424
4425 @itemize @bullet
4426 @item
4427 @samp{make dist} will check to make sure the @file{NEWS} file has been
4428 updated to the current version.
4429
4430 @item
4431 @samp{VERSION} is checked to make sure its format complies with Gnits
4432 standards.
4433 @c FIXME xref when standards are finished
4434
4435 @item
4436 @cindex README-alpha
4437 If @samp{VERSION} indicates that this is an alpha release, and the file
4438 @file{README-alpha} appears in the topmost directory of a package, then
4439 it is included in the distribution.  This is done in @samp{--gnits}
4440 mode, and no other, because this mode is the only one where version
4441 number formats are constrained, and hence the only mode where Automake
4442 can automatically determine whether @file{README-alpha} should be
4443 included.
4444
4445 @item
4446 The file @file{THANKS} is required.
4447 @end itemize
4448
4449
4450 @node Cygnus, Extending, Gnits, Top
4451 @chapter The effect of @code{--cygnus}
4452
4453 @cindex Cygnus strictness
4454
4455 Some packages, notably GNU GCC and GNU gdb, have a build environment
4456 originally written at Cygnus Support (subsequently renamed Cygnus
4457 Solutions, and then later purchased by Red Hat).  Packages with this
4458 ancestry are sometimes referred to as ``Cygnus'' trees.
4459
4460 A Cygnus tree has slightly different rules for how a @file{Makefile.in}
4461 is to be constructed.  Passing @samp{--cygnus} to @code{automake} will
4462 cause any generated @file{Makefile.in} to comply with Cygnus rules.
4463
4464 Here are the precise effects of @samp{--cygnus}:
4465
4466 @itemize @bullet
4467 @item
4468 Info files are always created in the build directory, and not in the
4469 source directory.
4470
4471 @item
4472 @file{texinfo.tex} is not required if a Texinfo source file is
4473 specified.  The assumption is that the file will be supplied, but in a
4474 place that Automake cannot find.  This assumption is an artifact of how
4475 Cygnus packages are typically bundled.
4476
4477 @item
4478 @samp{make dist} is not supported, and the rules for it are not
4479 generated.  Cygnus-style trees use their own distribution mechanism.
4480
4481 @item
4482 Certain tools will be searched for in the build tree as well as in the
4483 user's @samp{PATH}.  These tools are @code{runtest}, @code{expect},
4484 @code{makeinfo} and @code{texi2dvi}.
4485
4486 @item
4487 @code{--foreign} is implied.
4488
4489 @item
4490 The options @samp{no-installinfo} and @samp{no-dependencies} are
4491 implied.
4492
4493 @item
4494 The macros @samp{AM_MAINTAINER_MODE} and @samp{AM_CYGWIN32} are
4495 required.
4496
4497 @item
4498 The @code{check} target doesn't depend on @code{all}.
4499 @end itemize
4500
4501 GNU maintainers are advised to use @samp{gnu} strictness in preference
4502 to the special Cygnus mode.  Some day, perhaps, the differences between
4503 Cygnus trees and GNU trees will disappear (for instance, as GCC is made
4504 more standards compliant).  At that time the special Cygnus mode will be
4505 removed.
4506
4507
4508 @node Extending, Distributing, Cygnus, Top
4509 @chapter When Automake Isn't Enough
4510
4511 Automake's implicit copying semantics means that many problems can be
4512 worked around by simply adding some @code{make} targets and rules to
4513 @file{Makefile.in}.  Automake will ignore these additions.
4514
4515 @cindex -local targets
4516 @cindex local targets
4517
4518 There are some caveats to doing this.  Although you can overload a
4519 target already used by Automake, it is often inadvisable, particularly
4520 in the topmost directory of a package with subdirectories.  However,
4521 various useful targets have a @samp{-local} version you can specify in
4522 your @file{Makefile.in}.  Automake will supplement the standard target
4523 with these user-supplied targets.
4524
4525 @trindex  all-local
4526 @trindex  info-local
4527 @trindex  dvi-local
4528 @trindex  check-local
4529 @trindex  install-data-local
4530 @trindex  install-exec-local
4531 @trindex  uninstall-local
4532 @trindex  mostlyclean-local
4533 @trindex  clean-local
4534 @trindex  distclean-local
4535 @trindex  installdirs-local
4536 @trindex  installcheck-local
4537
4538 The targets that support a local version are @code{all}, @code{info},
4539 @code{dvi}, @code{check}, @code{install-data}, @code{install-exec},
4540 @code{uninstall}, @code{installdirs}, @code{installcheck} and the
4541 various @code{clean} targets (@code{mostlyclean}, @code{clean},
4542 @code{distclean}, and @code{maintainer-clean}).  Note that there are no
4543 @code{uninstall-exec-local} or @code{uninstall-data-local} targets; just
4544 use @code{uninstall-local}.  It doesn't make sense to uninstall just
4545 data or just executables.
4546 @trindex all
4547 @trindex info
4548 @trindex dvi
4549 @trindex check
4550 @trindex install-data
4551 @trindex install-exec
4552 @trindex uninstall
4553
4554 For instance, here is one way to install a file in @file{/etc}:
4555
4556 @example
4557 install-data-local:
4558         $(INSTALL_DATA) $(srcdir)/afile $(DESTDIR)/etc/afile
4559 @end example
4560
4561 @cindex -hook targets
4562 @cindex hook targets
4563
4564 Some targets also have a way to run another target, called a @dfn{hook},
4565 after their work is done.  The hook is named after the principal target,
4566 with @samp{-hook} appended.  The targets allowing hooks are
4567 @code{install-data}, @code{install-exec}, @code{uninstall}, @code{dist},
4568 and @code{distcheck}.
4569 @trindex install-data-hook
4570 @trindex install-exec-hook
4571 @trindex uninstall-hook
4572 @trindex dist-hook
4573
4574 For instance, here is how to create a hard link to an installed program:
4575
4576 @example
4577 install-exec-hook:
4578         ln $(DESTDIR)$(bindir)/program $(DESTDIR)$(bindir)/proglink
4579 @end example
4580
4581 @c FIXME should include discussion of variables you can use in these
4582 @c rules
4583
4584 @node Distributing, API versioning, Extending, Top
4585 @chapter Distributing @file{Makefile.in}s
4586
4587 Automake places no restrictions on the distribution of the resulting
4588 @file{Makefile.in}s.  We still encourage software authors to distribute
4589 their work under terms like those of the GPL, but doing so is not
4590 required to use Automake.
4591
4592 Some of the files that can be automatically installed via the
4593 @code{--add-missing} switch do fall under the GPL.  However, these also
4594 have a special exception allowing you to distribute them with your
4595 package, regardless of the licensing you choose.
4596
4597
4598 @node API versioning, Macro and Variable Index, Distributing, Top
4599 @chapter Automake API versioning
4600
4601 New Automake releases usually include bug fixes and new features.
4602 Unfortunately they may also introduce new bugs and incompatibilities.
4603 This make four reasons why a package may require a particular Automake
4604 version.
4605
4606 Things get worse when maintaining a large tree of packages, each one
4607 requiring a different version of Automake.  In the past, this meant that
4608 any developer (and sometime users) had to install several versions of
4609 Automake in different places, and switch @samp{$PATH} appropriately for
4610 each package.
4611
4612 Starting with version 1.6, Automake installs versioned binaries.  This
4613 means you can install several versions of Automake in the same
4614 @samp{$prefix}, and can select an arbitrary Automake version by running
4615 @samp{automake-1.6} or @samp{automake-1.7} without juggling with
4616 @samp{$PATH}.  Furthermore, @file{Makefile}'s generated by Automake 1.6
4617 will use @samp{automake-1.6} explicitely in their rebuild rules.
4618
4619 Note that @samp{1.6} in @samp{automake-1.6} is Automake's API version,
4620 not Automake's version.  If a bug fix release is made, for instance
4621 Automake 1.6.1, the API version will remain 1.6.  This means that a
4622 package which work with Automake 1.6 should also work with 1.6.1; after
4623 all, this is what people expect from bug fix releases.
4624
4625 Note that if your package relies on a feature or a bug fix introduced in
4626 a release, you can pass this version as an option to Automake to ensure
4627 older releases will not be used.  For instance, use this in your
4628 @file{configure.in}:
4629
4630 @example
4631   AM_INIT_AUTOMAKE(1.6.1)    dnl Require Automake 1.6.1 or better.
4632 @end example
4633 @noindent
4634 or, in a particular @file{Makefile.am}:
4635
4636 @example
4637   AUTOMAKE_OPTIONS = 1.6.1   # Require Automake 1.6.1 or better.
4638 @end example
4639 @noindent
4640 Automake will print an error message if its version is
4641 older than the requested version.
4642
4643
4644 @heading What is in the API
4645
4646 Automake's programing interface is not easy to define.  Basically it
4647 should include at least all @strong{documented} variables and targets
4648 that a @samp{Makefile.am} authors can use, the behaviours associated to
4649 them (e.g. the places where @samp{-hook}'s are run), the command line
4650 interface of @samp{automake} and @samp{aclocal}, ...
4651
4652 @heading What is not in the API
4653
4654 Every undocumented variable, target, or command line option, is not part
4655 of the API.  You should avoid using them, as they could change from one
4656 version to the other (even in bug fix releases, if this helps to fix a
4657 bug).
4658
4659 If it turns out you need to use such a undocumented feature, contact
4660 @email{automake@@gnu.org} and try to get it documented and exercised by
4661 the test-suite.
4662
4663 @page
4664 @node Macro and Variable Index, General Index, API versioning, Top
4665 @unnumbered Macro and Variable Index
4666
4667 @printindex vr
4668
4669
4670 @page
4671 @node General Index,  , Macro and Variable Index, Top
4672 @unnumbered General Index
4673
4674 @printindex cp
4675
4676
4677 @page
4678 @contents
4679 @bye