Merged from user-dep-gen-branch.
[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 admin
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 (C) 1995, 96, 97, 98, 99 Free Software Foundation, Inc.
24
25 Permission is granted to make and distribute verbatim copies of
26 this manual provided the copyright notice and this permission notice
27 are preserved on all copies.
28
29 @ignore
30 Permission is granted to process this file through TeX and print the
31 results, provided the printed document carries copying permission
32 notice identical to this one except for the removal of this paragraph
33
34
35 @end ignore
36 Permission is granted to copy and distribute modified versions of this
37 manual under the conditions for verbatim copying, provided that the entire
38 resulting derived work is distributed under the terms of a permission
39 notice identical to this one.
40
41 Permission is granted to copy and distribute translations of this manual
42 into another language, under the above conditions for modified versions,
43 except that this permission notice may be stated in a translation approved
44 by the Foundation.
45 @end ifinfo
46
47
48 @titlepage
49 @title GNU Automake
50 @subtitle For version @value{VERSION}, @value{UPDATED}
51 @author David MacKenzie and Tom Tromey
52
53 @page
54 @vskip 0pt plus 1filll
55 Copyright @copyright{} 1995, 96 Free Software Foundation, Inc.
56 @sp 2
57 This is the first edition of the GNU Automake documentation,@*
58 and is consistent with GNU Automake @value{VERSION}.@*
59 @sp 2
60 Published by the Free Software Foundation @*
61 59 Temple Place - Suite 330, @*
62 Boston, MA 02111-1307 USA @*
63
64 Permission is granted to make and distribute verbatim copies of
65 this manual provided the copyright notice and this permission notice
66 are preserved on all copies.
67
68 Permission is granted to copy and distribute modified versions of this
69 manual under the conditions for verbatim copying, provided that the entire
70 resulting derived work is distributed under the terms of a permission
71 notice identical to this one.
72
73 Permission is granted to copy and distribute translations of this manual
74 into another language, under the above conditions for modified versions,
75 except that this permission notice may be stated in a translation
76 approved by the Free Software Foundation.
77 @end titlepage
78
79 @c Define an index of configure output variables.
80 @defcodeindex ov
81 @c Define an index of configure variables.
82 @defcodeindex cv
83 @c Define an index of options.
84 @defcodeindex op
85 @c Define an index of targets.
86 @defcodeindex tr
87 @c Define an index of commands.
88 @defcodeindex cm
89
90 @c Put the macros and variables into their own index.
91 @c @syncodeindex fn cp
92 @syncodeindex ov vr
93 @syncodeindex cv vr
94 @syncodeindex fn vr
95
96 @c Put everything else into one index (arbitrarily chosen to be the concept index).
97 @syncodeindex op cp
98 @syncodeindex tr cp
99 @syncodeindex cm cp
100
101 @ifinfo
102 @node Top, Introduction, (dir), (dir)
103 @comment  node-name,  next,  previous,  up
104 @top GNU Automake
105
106 This file documents the GNU Automake package.  Automake is a program
107 which creates GNU standards-compliant Makefiles from template files.
108 This edition documents version @value{VERSION}.
109
110 @menu
111 * Introduction::                Automake's purpose
112 * Generalities::                General ideas
113 * Examples::                    Some example packages
114 * Invoking Automake::           Creating a Makefile.in
115 * configure::                   Scanning configure.in
116 * Top level::                   The top-level Makefile.am
117 * Programs::                    Building programs and libraries
118 * Other objects::               Other derived objects
119 * Other GNU Tools::             Other GNU Tools
120 * Documentation::               Building documentation
121 * Install::                     What gets installed
122 * Clean::                       What gets cleaned
123 * Dist::                        What goes in a distribution
124 * Tests::                       Support for test suites
125 * Options::                     Changing Automake's behavior
126 * Miscellaneous::               Miscellaneous rules
127 * Include::                     Including extra files in an Automake template.
128 * Conditionals::                Conditionals
129 * Gnits::                       The effect of @code{--gnu} and @code{--gnits}
130 * Cygnus::                      The effect of @code{--cygnus}
131 * Extending::                   Extending Automake
132 * Distributing::                Distributing the Makefile.in
133 * Future::                      Some ideas for the future
134 * Macro and Variable Index::    
135 * General Index::               
136 @end menu
137
138 @end ifinfo
139
140
141 @node Introduction, Generalities, Top, Top
142 @chapter Introduction
143
144 Automake is a tool for automatically generating @file{Makefile.in}s from
145 files called @file{Makefile.am}.  Each @file{Makefile.am} is basically a
146 series of @code{make} macro definitions (with rules being thrown in
147 occasionally).  The generated @file{Makefile.in}s are compliant with the
148 GNU Makefile standards.
149
150 @cindex GNU Makefile standards
151
152 The GNU Makefile Standards Document
153 (@pxref{Makefile Conventions, , , standards, The GNU Coding Standards})
154 is long, complicated, and subject to change.  The goal of Automake is to
155 remove the burden of Makefile maintenance from the back of the
156 individual GNU maintainer (and put it on the back of the Automake
157 maintainer).
158
159 The typical Automake input file is simply a series of macro definitions.
160 Each such file is processed to create a @file{Makefile.in}.  There
161 should generally be one @file{Makefile.am} per directory of a project.
162
163 @cindex Constraints of Automake
164 @cindex Automake constraints
165
166 Automake does constrain a project in certain ways; for instance it
167 assumes that the project uses Autoconf (@pxref{Top, , Introduction,
168 autoconf, The Autoconf Manual}), and enforces certain restrictions on
169 the @file{configure.in} contents.
170
171 @cindex Automake requirements
172 @cindex Requirements, Automake
173
174 Automake requires @code{perl} in order to generate the
175 @file{Makefile.in}s.  However, the distributions created by Automake are
176 fully GNU standards-compliant, and do not require @code{perl} in order
177 to be built.
178
179 @cindex BUGS, reporting
180 @cindex Reporting BUGS
181 @cindex E-mail, bug reports
182
183 Mail suggestions and bug reports for Automake to
184 @email{bug-automake@@gnu.org}.
185
186
187 @node Generalities, Examples, Introduction, Top
188 @chapter General ideas
189
190 The following sections cover a few basic ideas that will help you
191 understand how Automake works.
192
193 @menu
194 * General Operation::           General operation of Automake
195 * Depth::                       The kinds of packages
196 * Strictness::                  Standards conformance checking
197 * Uniform::                     The Uniform Naming Scheme
198 * Canonicalization::            How derived variables are named
199 @end menu
200
201
202 @node General Operation, Depth, Generalities, Generalities
203 @section General Operation
204
205 Automake works by reading a @file{Makefile.am} and generating a
206 @file{Makefile.in}.  Certain macros and targets defined in the
207 @file{Makefile.am} instruct Automake to generate more specialized code;
208 for instance, a @samp{bin_PROGRAMS} macro definition will cause targets
209 for compiling and linking programs to be generated.
210
211 @cindex Non-standard targets
212 @cindex cvs-dist, non-standard example
213 @trindex cvs-dist
214
215 The macro definitions and targets in the @file{Makefile.am} are copied
216 verbatim into the generated file.  This allows you to add arbitrary code
217 into the generated @file{Makefile.in}.  For instance the Automake
218 distribution includes a non-standard @code{cvs-dist} target, which the
219 Automake maintainer uses to make distributions from his source control
220 system.
221
222 @cindex GNU make extensions
223
224 Note that GNU make extensions are not recognized by Automake.  Using
225 such extensions in a @file{Makefile.am} will lead to errors or confusing
226 behavior.
227
228 Automake tries to group comments with adjoining targets and macro
229 definitions in an intelligent way.
230
231 @cindex Make targets, overriding
232 @cindex Overriding make targets
233
234 A target defined in @file{Makefile.am} generally overrides any such
235 target of a similar name that would be automatically generated by
236 @code{automake}.  Although this is a supported feature, it is generally
237 best to avoid making use of it, as sometimes the generated rules are
238 very particular.
239
240 @cindex Macros, overriding
241 @cindex Overriding make macros
242
243 Similarly, a macro defined in @file{Makefile.am} will override any
244 definition of the macro that @code{automake} would ordinarily create.
245 This feature is more often useful than the ability to override a target
246 definition.  Be warned that many of the macros generated by
247 @code{automake} are considered to be for internal use only, and their
248 names might change in future releases.
249
250 @cindex Recursive operation of Automake
251 @cindex Automake, recursive operation
252 @cindex Example of recursive operation
253
254 When examining a macro definition, Automake will recursively examine
255 macros referenced in the definition.  For example, if Automake is
256 looking at the content of @code{foo_SOURCES} in this snippet
257
258 @example
259 xs = a.c b.c
260 foo_SOURCES = c.c $(xs)
261 @end example
262
263 it would use the files @file{a.c}, @file{b.c}, and @file{c.c} as the
264 contents of @code{foo_SOURCES}.
265
266 @cindex ## (special Automake comment)
267 @cindex Special Automake comment
268 @cindex Comment, special to Automake
269
270 Automake also allows a form of comment which is @emph{not} copied into
271 the output; all lines beginning with @samp{##} are completely ignored by
272 Automake.
273
274 It is customary to make the first line of @file{Makefile.am} read:
275
276 @cindex Makefile.am, first line
277 @cindex First line of Makefile.am
278
279 @example
280 ## Process this file with automake to produce Makefile.in
281 @end example
282
283 @c FIXME discuss putting a copyright into Makefile.am here?  I would but
284 @c I don't know quite what to say.
285
286 @c FIXME document customary ordering of Makefile.am here!
287
288
289 @node Depth, Strictness, General Operation, Generalities
290 @section Depth
291
292 @cindex Flat package
293 @cindex Package, Flat
294 @cindex Shallow package
295 @cindex Package, shallow
296 @cindex Deep package
297 @cindex Package, deep
298
299 @code{automake} supports three kinds of directory hierarchy:
300 @samp{flat}, @samp{shallow}, and @samp{deep}.
301
302 A @dfn{flat} package is one in which all the files are in a single
303 directory.  The @file{Makefile.am} for such a package by definition
304 lacks a @code{SUBDIRS} macro.  An example of such a package is
305 @code{termutils}.
306 @vindex SUBDIRS
307
308 @cindex SUBDIRS, deep package
309
310 A @dfn{deep} package is one in which all the source lies in
311 subdirectories; the top level directory contains mainly configuration
312 information.  GNU @code{cpio} is a good example of such a package, as is
313 GNU @code{tar}.  The top level @file{Makefile.am} for a deep package
314 will contain a @code{SUBDIRS} macro, but no other macros to define
315 objects which are built.
316
317 A @dfn{shallow} package is one in which the primary source resides in
318 the top-level directory, while various parts (typically libraries)
319 reside in subdirectories.  Automake is one such package (as is GNU
320 @code{make}, which does not currently use @code{automake}).
321
322
323 @node Strictness, Uniform, Depth, Generalities
324 @section Strictness
325
326 @cindex Non-GNU packages
327
328 While Automake is intended to be used by maintainers of GNU packages, it
329 does make some effort to accommodate those who wish to use it, but do
330 not want to use all the GNU conventions.
331
332 @cindex Strictness, defined
333 @cindex Strictness, foreign
334 @cindex foreign strictness
335 @cindex Strictness, gnu
336 @cindex gnits strictness
337 @cindex Strictness, gnits
338 @cindex gnits strictness
339
340 To this end, Automake supports three levels of @dfn{strictness}---the
341 strictness indicating how stringently Automake should check standards
342 conformance.
343
344 The valid strictness levels are:
345
346 @table @samp
347 @item foreign
348 Automake will check for only those things which are absolutely
349 required for proper operations.  For instance, whereas GNU standards
350 dictate the existence of a @file{NEWS} file, it will not be required in
351 this mode.  The name comes from the fact that Automake is intended to be
352 used for GNU programs; these relaxed rules are not the standard mode of
353 operation.
354
355 @item gnu
356 Automake will check---as much as possible---for compliance to the GNU
357 standards for packages.  This is the default.
358
359 @item gnits
360 Automake will check for compliance to the as-yet-unwritten @dfn{Gnits
361 standards}.  These are based on the GNU standards, but are even more
362 detailed.  Unless you are a Gnits standards contributor, it is
363 recommended that you avoid this option until such time as the Gnits
364 standard is actually published.
365 @end table
366
367 For more information on the precise implications of the strictness
368 level, see @ref{Gnits}.
369
370
371 @node Uniform, Canonicalization, Strictness, Generalities
372 @section The Uniform Naming Scheme
373
374 @cindex Uniform naming scheme
375
376 Automake macros (from here on referred to as @emph{variables}) generally
377 follow a @dfn{uniform naming scheme} that makes it easy to decide how
378 programs (and other derived objects) are built, and how they are
379 installed.  This scheme also supports @code{configure} time
380 determination of what should be built.
381
382 @cindex _PROGRAMS primary variable
383 @cindex PROGRAMS primary variable
384 @cindex Primary variable, PROGRAMS
385
386 @cindex Primary variable, defined
387
388 At @code{make} time, certain variables are used to determine which
389 objects are to be built.  These variables are called @dfn{primary
390 variables}.  For instance, the primary variable @code{PROGRAMS} holds a
391 list of programs which are to be compiled and linked.
392 @vindex PROGRAMS
393
394 @cindex pkglibdir, defined
395 @cindex pkgincludedir, defined
396 @cindex pkgdatadir, defined
397
398 @vindex pkglibdir
399 @vindex pkgincludedir
400 @vindex pkgdatadir
401
402 A different set of variables is used to decide where the built objects
403 should be installed.  These variables are named after the primary
404 variables, but have a prefix indicating which standard directory should
405 be used as the installation directory.  The standard directory names are
406 given in the GNU standards (@pxref{Directory Variables, , , standards,
407 The GNU Coding Standards}).  Automake extends this list with
408 @code{pkglibdir}, @code{pkgincludedir}, and @code{pkgdatadir}; these are
409 the same as the non-@samp{pkg} versions, but with @samp{@@PACKAGE@@}
410 appended.  For instance, @code{pkglibdir} is defined as
411 @code{$(datadir)/@@PACKAGE@@}.
412 @cvindex PACKAGE
413
414 @cindex EXTRA_, prepending
415
416 For each primary, there is one additional variable named by prepending
417 @samp{EXTRA_} to the primary name.  This variable is used to list
418 objects which may or may not be built, depending on what
419 @code{configure} decides.  This variable is required because Automake
420 must statically know the entire list of objects that may be built in
421 order to generate a @file{Makefile.in} that will work in all cases.
422
423 @cindex EXTRA_PROGRAMS, defined
424 @cindex Example, EXTRA_PROGRAMS
425 @cindex cpio example
426
427 For instance, @code{cpio} decides at configure time which programs are
428 built.  Some of the programs are installed in @code{bindir}, and some
429 are installed in @code{sbindir}:
430
431 @example
432 EXTRA_PROGRAMS = mt rmt
433 bin_PROGRAMS = cpio pax
434 sbin_PROGRAMS = @@PROGRAMS@@
435 @end example
436
437 Defining a primary variable without a prefix (e.g. @code{PROGRAMS}) is
438 an error.
439
440 Note that the common @samp{dir} suffix is left off when constructing the
441 variable names; thus one writes @samp{bin_PROGRAMS} and not
442 @samp{bindir_PROGRAMS}.
443
444 Not every sort of object can be installed in every directory.  Automake
445 will flag those attempts it finds in error.  Automake will also diagnose
446 obvious misspellings in directory names.
447
448 @cindex Extending list of installation directories
449 @cindex Installation directories, extending list
450
451 Sometimes the standard directories---even as augmented by Automake---
452 are not enough.  In particular it is sometimes useful, for clarity, to
453 install objects in a subdirectory of some predefined directory.  To this
454 end, Automake allows you to extend the list of possible installation
455 directories.  A given prefix (e.g. @samp{zar}) is valid if a variable of
456 the same name with @samp{dir} appended is defined (e.g. @code{zardir}).
457
458 @cindex HTML support, example
459
460 For instance, until HTML support is part of Automake, you could use this
461 to install raw HTML documentation:
462
463 @example
464 htmldir = $(prefix)/html
465 html_DATA = automake.html
466 @end example
467
468 @cindex noinst primary prefix, definition
469
470 The special prefix @samp{noinst} indicates that the objects in question
471 should not be installed at all.
472
473 @cindex check primary prefix, definition
474
475 The special prefix @samp{check} indicates that the objects in question
476 should not be built until the @code{make check} command is run.
477
478 Possible primary names are @samp{PROGRAMS}, @samp{LIBRARIES},
479 @samp{LISP}, @samp{SCRIPTS}, @samp{DATA}, @samp{HEADERS}, @samp{MANS},
480 and @samp{TEXINFOS}.
481 @vindex PROGRAMS
482 @vindex LIBRARIES
483 @vindex LISP
484 @vindex SCRIPTS
485 @vindex DATA
486 @vindex HEADERS
487 @vindex MANS
488 @vindex TEXINFOS
489
490
491 @node Canonicalization,  , Uniform, Generalities
492 @section How derived variables are named
493
494 @cindex canonicalizing Automake macros
495
496 Sometimes a Makefile variable name is derived from some text the user
497 supplies.  For instance, program names are rewritten into Makefile macro
498 names.  Automake canonicalizes this text, so that it does not have to
499 follow Makefile macro naming rules.  All characters in the name except
500 for letters, numbers, and the underscore are turned into underscores
501 when making macro references.  For example, if your program is named
502 @code{sniff-glue}, the derived variable name would be
503 @code{sniff_glue_SOURCES}, not @code{sniff-glue_SOURCES}.
504
505 @node Examples, Invoking Automake, Generalities, Top
506 @chapter Some example packages
507
508 @menu
509 * Complete::                    A simple example, start to finish
510 * Hello::                       A classic program
511 * etags::                       Building etags and ctags
512 @end menu
513
514
515 @node Complete, Hello, Examples, Examples
516 @section A simple example, start to finish
517
518 @cindex Complete example
519
520 Let's suppose you just finished writing @code{zardoz}, a program to make
521 your head float from vortex to vortex.  You've been using Autoconf to
522 provide a portability framework, but your @file{Makefile.in}s have been
523 ad-hoc.  You want to make them bulletproof, so you turn to Automake.
524
525 @cindex AM_INIT_AUTOMAKE, example use
526
527 The first step is to update your @file{configure.in} to include the
528 commands that @code{automake} needs.  The simplest way to do this is to
529 add an @code{AM_INIT_AUTOMAKE} call just after @code{AC_INIT}:
530
531 @example
532 AM_INIT_AUTOMAKE(zardoz, 1.0)
533 @end example
534
535 Since your program doesn't have any complicating factors (e.g., it
536 doesn't use @code{gettext}, it doesn't want to build a shared library),
537 you're done with this part.  That was easy!
538
539 @cindex aclocal program, introduction
540 @cindex aclocal.m4, preexisting
541 @cindex acinclude.m4, defined
542
543 Now you must regenerate @file{configure}.  But to do that, you'll need
544 to tell @code{autoconf} how to find the new macro you've used.  The
545 easiest way to do this is to use the @code{aclocal} program to generate
546 your @file{aclocal.m4} for you.  But wait... you already have an
547 @file{aclocal.m4}, because you had to write some hairy macros for your
548 program.  The @code{aclocal} program lets you put your own macros into
549 @file{acinclude.m4}, so simply rename and then run:
550
551 @example
552 mv aclocal.m4 acinclude.m4
553 aclocal
554 autoconf
555 @end example
556
557 @cindex zardoz example
558
559 Now it is time to write your @file{Makefile.am} for @code{zardoz}.
560 Since @code{zardoz} is a user program, you want to install it where the
561 rest of the user programs go.  Additionally, @code{zardoz} has some
562 Texinfo documentation.  Your @file{configure.in} script uses
563 @code{AC_REPLACE_FUNCS}, so you need to link against @samp{@@LIBOBJS@@}.
564 So here's what you'd write:
565
566 @example
567 bin_PROGRAMS = zardoz
568 zardoz_SOURCES = main.c head.c float.c vortex9.c gun.c
569 zardoz_LDADD = @@LIBOBJS@@
570
571 info_TEXINFOS = zardoz.texi
572 @end example
573
574 Now you can run @code{automake --add-missing} to generate your
575 @file{Makefile.in} and grab any auxiliary files you might need, and
576 you're done!
577
578
579 @node Hello, etags, Complete, Examples
580 @section A classic program
581
582 @cindex Example, GNU Hello
583 @cindex Hello example
584 @cindex GNU Hello, example
585
586 @uref{ftp://prep.ai.mit.edu/pub/gnu/hello-1.3.tar.gz, GNU hello} is
587 renowned for its classic simplicity and versatility.  This section shows
588 how Automake could be used with the GNU Hello package.  The examples
589 below are from the latest beta version of GNU Hello, but with all of the
590 maintainer-only code stripped out, as well as all copyright comments.
591
592 Of course, GNU Hello is somewhat more featureful than your traditional
593 two-liner.  GNU Hello is internationalized, does option processing, and
594 has a manual and a test suite.  GNU Hello is a deep package.
595
596 @cindex configure.in, from GNU Hello
597 @cindex GNU Hello, configure.in
598 @cindex Hello, configure.in
599
600 Here is the @file{configure.in} from GNU Hello:
601
602 @example
603 dnl Process this file with autoconf to produce a configure script.
604 AC_INIT(src/hello.c)
605 AM_INIT_AUTOMAKE(hello, 1.3.11)
606 AM_CONFIG_HEADER(config.h)
607
608 dnl Set of available languages.
609 ALL_LINGUAS="de fr es ko nl no pl pt sl sv"
610
611 dnl Checks for programs.
612 AC_PROG_CC
613 AC_ISC_POSIX
614
615 dnl Checks for libraries.
616
617 dnl Checks for header files.
618 AC_STDC_HEADERS
619 AC_HAVE_HEADERS(string.h fcntl.h sys/file.h sys/param.h)
620
621 dnl Checks for library functions.
622 AC_FUNC_ALLOCA
623
624 dnl Check for st_blksize in struct stat
625 AC_ST_BLKSIZE
626
627 dnl internationalization macros
628 AM_GNU_GETTEXT
629 AC_OUTPUT([Makefile doc/Makefile intl/Makefile po/Makefile.in \
630            src/Makefile tests/Makefile tests/hello],
631    [chmod +x tests/hello])
632 @end example
633
634 The @samp{AM_} macros are provided by Automake (or the Gettext library);
635 the rest are standard Autoconf macros.
636
637
638 The top-level @file{Makefile.am}:
639
640 @example
641 EXTRA_DIST = BUGS ChangeLog.O
642 SUBDIRS = doc intl po src tests
643 @end example
644
645 As you can see, all the work here is really done in subdirectories.
646
647 The @file{po} and @file{intl} directories are automatically generated
648 using @code{gettextize}; they will not be discussed here.
649
650 @cindex Texinfo file handling example
651 @cindex Example, handling Texinfo files
652
653 In @file{doc/Makefile.am} we see:
654
655 @example
656 info_TEXINFOS = hello.texi
657 hello_TEXINFOS = gpl.texi
658 @end example
659
660 This is sufficient to build, install, and distribute the GNU Hello
661 manual.
662
663 @cindex Regression test example
664 @cindex Example, regression test
665
666 Here is @file{tests/Makefile.am}:
667
668 @example
669 TESTS = hello
670 EXTRA_DIST = hello.in testdata
671 @end example
672
673 The script @file{hello} is generated by @code{configure}, and is the
674 only test case.  @code{make check} will run this test.
675
676 @cindex INCLUDES, example usage
677
678 Last we have @file{src/Makefile.am}, where all the real work is done:
679
680 @example
681 bin_PROGRAMS = hello
682 hello_SOURCES = hello.c version.c getopt.c getopt1.c getopt.h system.h 
683 hello_LDADD = @@INTLLIBS@@ @@ALLOCA@@
684 localedir = $(datadir)/locale
685 INCLUDES = -I../intl -DLOCALEDIR=\"$(localedir)\"
686 @end example
687
688
689 @node etags,  , Hello, Examples
690 @section Building etags and ctags
691
692 @cindex Example, ctags and etags
693 @cindex ctags Example
694 @cindex etags Example
695
696 Here is another, trickier example.  It shows how to generate two
697 programs (@code{ctags} and @code{etags}) from the same source file
698 (@file{etags.c}).  The difficult part is that each compilation of
699 @file{etags.c} requires different @code{cpp} flags.
700
701 @example
702 bin_PROGRAMS = etags ctags
703 ctags_SOURCES =
704 ctags_LDADD = ctags.o
705
706 etags.o: etags.c
707         $(COMPILE) -DETAGS_REGEXPS -c etags.c
708
709 ctags.o: etags.c
710         $(COMPILE) -DCTAGS -o ctags.o -c etags.c
711 @end example
712
713 Note that @code{ctags_SOURCES} is defined to be empty---that way no
714 implicit value is substituted.  The implicit value, however, is used to
715 generate @code{etags} from @file{etags.o}.
716
717 @code{ctags_LDADD} is used to get @file{ctags.o} into the link line.
718 @code{ctags_DEPENDENCIES} is generated by Automake.
719
720 The above rules won't work if your compiler doesn't accept both
721 @samp{-c} and @samp{-o}.  The simplest fix for this is to introduce a
722 bogus dependency (to avoid problems with a parallel @code{make}):
723
724 @example
725 etags.o: etags.c ctags.o
726         $(COMPILE) -DETAGS_REGEXPS -c etags.c
727
728 ctags.o: etags.c
729         $(COMPILE) -DCTAGS -c etags.c && mv etags.o ctags.o
730 @end example
731
732 Also, these explicit rules do not work if the de-ANSI-fication feature
733 is used (@pxref{ANSI}).  Supporting de-ANSI-fication requires a little
734 more work:
735
736 @example
737 etags._o: etags._c ctags.o
738         $(COMPILE) -DETAGS_REGEXPS -c etags.c
739
740 ctags._o: etags._c
741         $(COMPILE) -DCTAGS -c etags.c && mv etags._o ctags.o
742 @end example
743
744
745 @node Invoking Automake, configure, Examples, Top
746 @chapter Creating a @file{Makefile.in}
747
748 @cindex Multiple configure.in files
749 @cindex Invoking Automake
750 @cindex Automake, invoking
751
752 To create all the @file{Makefile.in}s for a package, run the
753 @code{automake} program in the top level directory, with no arguments.
754 @code{automake} will automatically find each appropriate
755 @file{Makefile.am} (by scanning @file{configure.in}; @pxref{configure})
756 and generate the corresponding @file{Makefile.in}.  Note that
757 @code{automake} has a rather simplistic view of what constitutes a
758 package; it assumes that a package has only one @file{configure.in}, at
759 the top.  If your package has multiple @file{configure.in}s, then you
760 must run @code{automake} in each directory holding a
761 @file{configure.in}.
762
763 You can optionally give @code{automake} an argument; @file{.am} is
764 appended to the argument and the result is used as the name of the input
765 file.  This feature is generally only used to automatically rebuild an
766 out-of-date @file{Makefile.in}.  Note that @code{automake} must always
767 be run from the topmost directory of a project, even if being used to
768 regenerate the @file{Makefile.in} in some subdirectory.  This is
769 necessary because @code{automake} must scan @file{configure.in}, and
770 because @code{automake} uses the knowledge that a @file{Makefile.in} is
771 in a subdirectory to change its behavior in some cases.
772
773 @cindex Automake options
774 @cindex Options, Automake
775
776 @code{automake} accepts the following options:
777
778 @cindex Extra files distributed with Automake
779 @cindex Files distributed with Automake
780 @cindex config.guess
781
782 @table @samp
783 @item -a
784 @itemx --add-missing
785 @opindex -a
786 @opindex --add-missing
787 Automake requires certain common files to exist in certain situations;
788 for instance @file{config.guess} is required if @file{configure.in} runs
789 @code{AC_CANONICAL_HOST}.  Automake is distributed with several of these
790 files; this option will cause the missing ones to be automatically added
791 to the package, whenever possible.  In general if Automake tells you a
792 file is missing, try using this option.  By default Automake tries to
793 make a symbolic link pointing to its own copy of the missing file; this
794 can be changed with @code{--copy}.
795
796 @item --amdir=@var{dir}
797 @opindex --amdir
798 Look for Automake data files in directory @var{dir} instead of in the
799 installation directory.  This is typically used for debugging.
800
801 @item --build-dir=@var{dir}
802 @opindex --build-dir
803 Tell Automake where the build directory is.  This option is used when
804 including dependencies into a @file{Makefile.in} generated by @code{make
805 dist}; it should not be used otherwise.
806
807 @item -c
808 @item --copy
809 When used with @code{--add-missing}, causes installed files to be
810 copied.  The default is to make a symbolic link.
811
812 @item --cygnus
813 @opindex --cygnus
814 Causes the generated @file{Makefile.in}s to follow Cygnus rules, instead
815 of GNU or Gnits rules.  For more information, see @ref{Cygnus}.
816
817 @item --foreign
818 @opindex --foreign
819 Set the global strictness to @samp{foreign}.  For more information, see
820 @ref{Strictness}.
821
822 @item --gnits
823 @opindex --gnits
824 Set the global strictness to @samp{gnits}.  For more information, see
825 @ref{Gnits}.
826
827 @item --gnu
828 @opindex --gnu
829 Set the global strictness to @samp{gnu}.  For more information, see
830 @ref{Gnits}.  This is the default strictness.
831
832 @item --help
833 @opindex --help
834 Print a summary of the command line options and exit.
835
836 @item -i
837 @itemx --include-deps
838 @opindex -i
839 @opindex --include-deps
840 Include all automatically generated dependency information
841 (@pxref{Dependencies}) in the generated
842 @file{Makefile.in}.  This is generally done when making a distribution;
843 see @ref{Dist}.
844
845 @item --generate-deps
846 @opindex --generate-deps
847 Generate a file concatenating all automatically generated dependency
848 information (@pxref{Dependencies}) into one file, @file{.dep_segment}.
849 This is generally done when making a distribution; see @ref{Dist}.  It
850 is useful when maintaining a @file{SMakefile} or makefiles for other
851 platforms (@file{Makefile.DOS}, etc.)  It can only be used in
852 conjunction with @samp{--include-deps}, @samp{--srcdir-name}, and
853 @samp{--build-dir}.  Note that if this option is given, no other
854 processing is done.
855
856 @item --no-force
857 @opindex --no-force
858 Ordinarily @code{automake} creates all @file{Makefile.in}s mentioned in
859 @file{configure.in}.  This option causes it to only update those
860 @file{Makefile.in}s which are out of date with respect to one of their
861 dependents.
862
863 @item -o @var{dir}
864 @itemx --output-dir=@var{dir}
865 @opindex -o
866 @opindex --output-dir
867 Put the generated @file{Makefile.in} in the directory @var{dir}.
868 Ordinarily each @file{Makefile.in} is created in the directory of the
869 corresponding @file{Makefile.am}.  This option is used when making
870 distributions.
871
872 @item --srcdir-name=@var{dir}
873 @opindex --srcdir-name
874 Tell Automake the name of the source directory associated with the
875 current build.  This option is used when including dependencies into a
876 @file{Makefile.in} generated by @code{make dist}; it should not be used
877 otherwise.
878
879 @item -v
880 @itemx --verbose
881 @opindex -v
882 @opindex --verbose
883 Cause Automake to print information about which files are being read or
884 created.
885
886 @item --version
887 @opindex --version
888 Print the version number of Automake and exit.
889 @end table
890
891
892 @node configure, Top level, Invoking Automake, Top
893 @chapter Scanning @file{configure.in}
894
895 @cindex configure.in, scanning
896 @cindex Scanning configure.in
897
898 Automake scans the package's @file{configure.in} to determine certain
899 information about the package.  Some @code{autoconf} macros are required
900 and some variables must be defined in @file{configure.in}.  Automake
901 will also use information from @file{configure.in} to further tailor its
902 output.
903
904 Automake also supplies some Autoconf macros to make the maintenance
905 easier.  These macros can automatically be put into your
906 @file{aclocal.m4} using the @code{aclocal} program.
907
908 @menu
909 * Requirements::                Configuration requirements
910 * Optional::                    Other things Automake recognizes
911 * Invoking aclocal::            Auto-generating aclocal.m4
912 * Macros::                      Autoconf macros supplied with Automake
913 * Extending aclocal::           Writing your own aclocal macros
914 @end menu
915
916
917 @node Requirements, Optional, configure, configure
918 @section Configuration requirements
919
920 @cindex Automake requirements
921 @cindex Requirements of Automake
922
923 The simplest way to meet the basic Automake requirements is to use the
924 macro @code{AM_INIT_AUTOMAKE} (@pxref{Macros}).  But if you prefer, you
925 can do the required steps by hand:
926 @cvindex AM_INIT_AUTOMAKE
927
928 @itemize @bullet
929 @item
930 Define the variables @code{PACKAGE} and @code{VERSION} with
931 @code{AC_SUBST}.
932 @cvindex PACKAGE
933 @cvindex VERSION
934 @code{PACKAGE} should be the name of the package as it appears when
935 bundled for distribution.  For instance, Automake defines @code{PACKAGE}
936 to be @samp{automake}.  @code{VERSION} should be the version number of
937 the release that is being developed.  We recommend that you make
938 @file{configure.in} the only place in your package where the version
939 number is defined; this makes releases simpler.
940
941 Automake doesn't do any interpretation of @code{PACKAGE} or
942 @code{VERSION}, except in @samp{Gnits} mode (@pxref{Gnits}).
943
944 @item
945 Use the macro @code{AC_ARG_PROGRAM} if a program or script is installed.
946 @xref{Transforming Names, , Transforming Program Names When Installing,
947 autoconf, The Autoconf}.
948 @cvindex AC_ARG_PROGRAM
949
950 @item
951 Use @code{AC_PROG_MAKE_SET} if the package is not flat.  @xref{Output, ,
952 Creating Output Files, autoconf, The Autoconf Manual}.
953 @cvindex AC_PROG_MAKE_SET
954
955 @item
956 Use @code{AM_SANITY_CHECK} to make sure the build environment is sane.
957
958 @item
959 Call @code{AC_PROG_INSTALL}
960 (@pxref{Particular Programs, , Particular Program Checks, autoconf, The
961 Autoconf Manual}).
962 @cvindex AC_PROG_INSTALL
963
964 @item
965 Use @code{AM_MISSING_PROG} to see whether the programs @code{aclocal},
966 @code{autoconf}, @code{automake}, @code{autoheader}, and @code{makeinfo}
967 are in the build environment.  Here is how this is done:
968 @example
969 AM_MISSING_PROG(ACLOCAL, aclocal)
970 AM_MISSING_PROG(AUTOCONF, autoconf)
971 AM_MISSING_PROG(AUTOMAKE, automake)
972 AM_MISSING_PROG(AUTOHEADER, autoheader)
973 AM_MISSING_PROG(MAKEINFO, makeinfo)
974 @end example
975 @end itemize
976
977
978 Here are the other macros which Automake requires but which are not run
979 by @code{AM_INIT_AUTOMAKE}:
980
981 @cindex AC_OUTPUT, scanning
982
983 @table @code
984 @item AC_OUTPUT
985 Automake uses this to determine which files to create (@pxref{Output, ,
986 Creating Output Files, autoconf, The Autoconf Manual}).  Listed files
987 named @code{Makefile} are treated as @file{Makefile}s.  Other listed
988 files are treated differently.  Currently the only difference is that a
989 @file{Makefile} is removed by @code{make distclean}, while other files
990 are removed by @code{make clean}.
991 @c FIXME: this is in violation of standards!
992 @cvindex AC_OUTPUT
993 @end table
994
995
996 @node Optional, Invoking aclocal, Requirements, configure
997 @section Other things Automake recognizes
998
999 @cindex Macros Automake recognizes
1000 @cindex Recognized macros by Automake
1001
1002 Automake will also recognize the use of certain macros and tailor the
1003 generated @file{Makefile.in} appropriately.  Currently recognized macros
1004 and their effects are:
1005
1006 @table @code
1007 @item AC_CONFIG_HEADER
1008 Automake requires the use of @code{AM_CONFIG_HEADER}, which is similar
1009 to @code{AC_CONFIG_HEADER} (@pxref{Configuration Headers, ,
1010 Configuration Header Files, autoconf, The Autoconf Manual}), but does
1011 some useful Automake-specific work.
1012 @cvindex AC_CONFIG_HEADER
1013
1014 @item AC_CONFIG_AUX_DIR
1015 Automake will look for various helper scripts, such as
1016 @file{mkinstalldirs}, in the directory named in this macro invocation.
1017 If not seen, the scripts are looked for in their @samp{standard}
1018 locations (either the top source directory, or in the source directory
1019 corresponding to the current @file{Makefile.am}, whichever is
1020 appropriate).  @xref{Input, , Finding `configure' Input, autoconf, The
1021 Autoconf Manual}.
1022 @cvindex AC_CONFIG_AUX_DIR
1023 FIXME: give complete list of things looked for in this directory
1024
1025 @item AC_PATH_XTRA
1026 Automake will insert definitions for the variables defined by
1027 @code{AC_PATH_XTRA} into each @file{Makefile.in} that builds a C program
1028 or library.  @xref{System Services, , System Services, autoconf, The
1029 Autoconf Manual}.
1030 @cvindex AC_PATH_XTRA
1031
1032 @item AC_CANONICAL_HOST
1033 @itemx AC_CHECK_TOOL
1034 Automake will ensure that @file{config.guess} and @file{config.sub}
1035 exist.  Also, the @file{Makefile} variables @samp{host_alias} and
1036 @samp{host_triplet} are introduced.  See both @ref{Canonicalizing, ,
1037 Getting the Canonical System Type, autoconf, The Autoconf Manual}, and
1038 @ref{Generic Programs, , Generic Program Checks, autoconf, The Autoconf
1039 Manual}.
1040 @c fixme xref autoconf docs.
1041 @cvindex AC_CANONICAL_HOST
1042 @cvindex AC_CHECK_TOOL
1043 @vindex host_alias
1044 @vindex host_triplet
1045
1046 @item AC_CANONICAL_SYSTEM
1047 This is similar to @code{AC_CANONICAL_HOST}, but also defines the
1048 @file{Makefile} variables @samp{build_alias} and @samp{target_alias}.
1049 @xref{Canonicalizing, , Getting the Canonical System Type, autoconf, The
1050 Autoconf Manual}.
1051 @cvindex AC_CANONICAL_SYSTEM
1052 @vindex build_alias
1053 @vindex target_alias
1054
1055 @item AC_FUNC_ALLOCA
1056 @itemx AC_FUNC_GETLOADAVG
1057 @itemx AC_FUNC_MEMCMP
1058 @itemx AC_STRUCT_ST_BLOCKS
1059 @itemx AC_FUNC_FNMATCH
1060 @itemx AC_FUNC_MKTIME
1061 @itemx AM_FUNC_STRTOD
1062 @itemx AC_REPLACE_FUNCS
1063 @itemx AC_REPLACE_GNU_GETOPT
1064 @itemx AM_WITH_REGEX
1065 Automake will ensure that the appropriate dependencies are generated for
1066 the objects corresponding to these macros.  Also, Automake will verify
1067 that the appropriate source files are part of the distribution.  Note
1068 that Automake does not come with any of the C sources required to use
1069 these macros, so @code{automake -a} will not install the sources.
1070 @xref{A Library}, for more information.  Also, see @ref{Particular
1071 Functions, , Particular Function Checks, autoconf, The Autoconf Manual}.
1072 @cvindex AC_FUNC_ALLOCA
1073 @cvindex AC_FUNC_GETLOADAVG
1074 @cvindex AC_FUNC_MEMCMP
1075 @cvindex AC_STRUCT_ST_BLOCKS
1076 @cvindex AC_FUNC_FNMATCH
1077 @cvindex AC_FUNC_FNMATCH
1078 @cvindex AC_REPLACE_FUNCS
1079 @cvindex AC_REPLACE_GNU_GETOPT
1080 @cvindex AM_FUNC_STRTOD
1081 @cvindex AM_WITH_REGEX
1082 @cvindex AC_FUNC_MKTIME
1083
1084 @item LIBOBJS
1085 Automake will detect statements which put @file{.o} files into
1086 @code{LIBOBJS}, and will treat these additional files as if they were
1087 discovered via @code{AC_REPLACE_FUNCS}.  @xref{Generic Functions, ,
1088 Generic Function Checks, autoconf, The Autoconf Manual}.
1089 @cvindex LIBOBJS
1090
1091 @item AC_PROG_RANLIB
1092 This is required if any libraries are built in the package.
1093 @xref{Particular Programs, , Particular Program Checks, autoconf, The
1094 Autoconf Manual}.
1095 @cvindex AC_PROG_RANLIB
1096
1097 @item AC_PROG_CXX
1098 This is required if any C++ source is included.  @xref{Particular
1099 Programs, , Particular Program Checks, autoconf, The Autoconf Manual}.
1100 @cvindex AC_PROG_CXX
1101
1102 @item AC_PROG_F77
1103 This is required if any Fortran 77 source is included.  This macro is
1104 distributed with Autoconf version 2.13 and later.  @xref{Particular
1105 Programs, , Particular Program Checks, autoconf, The Autoconf Manual}.
1106 @cvindex AC_PROG_F77
1107
1108 @item AC_F77_LIBRARY_LDFLAGS
1109 This is required for programs and shared libraries that are a mixture of
1110 languages that include Fortran 77 (@pxref{Mixing Fortran 77 With C and
1111 C++}).  @xref{Macros, , Autoconf macros supplied with Automake}.
1112 @cvindex AC_F77_LIBRARY_LDFLAGS
1113
1114 @item AC_PROG_LIBTOOL
1115 Automake will turn on processing for @code{libtool} (@pxref{Top, ,
1116 Introduction, libtool, The Libtool Manual}).
1117 @cvindex AC_PROG_LIBTOOL
1118
1119 @item AC_PROG_YACC
1120 If a Yacc source file is seen, then you must either use this macro or
1121 define the variable @samp{YACC} in @file{configure.in}.  The former is
1122 preferred (@pxref{Particular Programs, , Particular Program Checks,
1123 autoconf, The Autoconf Manual}).
1124 @cvindex AC_PROG_YACC
1125 @cvindex YACC
1126
1127 @item AC_DECL_YYTEXT
1128 This macro is required if there is Lex source in the package.
1129 @xref{Particular Programs, , Particular Program Checks, autoconf, The
1130 Autoconf Manual}.
1131 @cvindex AC_DECL_YYTEXT
1132
1133 @item AC_PROG_LEX
1134 If a Lex source file is seen, then this macro must be used.
1135 @xref{Particular Programs, , Particular Program Checks, autoconf, The
1136 Autoconf Manual}.
1137 @cvindex AC_PROG_LEX
1138
1139 @item ALL_LINGUAS
1140 If Automake sees that this variable is set in @file{configure.in}, it
1141 will check the @file{po} directory to ensure that all the named
1142 @samp{.po} files exist, and that all the @samp{.po} files that exist are
1143 named.
1144 @cvindex ALL_LINGUAS
1145
1146 @item AM_C_PROTOTYPES
1147 This is required when using automatic de-ANSI-fication; see @ref{ANSI}.
1148 @cvindex AM_C_PROTOTYPES
1149
1150 @item AM_GNU_GETTEXT
1151 This macro is required for packages which use GNU gettext
1152 (@pxref{gettext}).  It is distributed with gettext.  If Automake sees
1153 this macro it ensures that the package meets some of gettext's
1154 requirements.
1155 @cvindex AM_GNU_GETTEXT
1156
1157 @item AM_MAINTAINER_MODE
1158 @opindex --enable-maintainer-mode
1159 This macro adds a @samp{--enable-maintainer-mode} option to
1160 @code{configure}.  If this is used, @code{automake} will cause
1161 @samp{maintainer-only} rules to be turned off by default in the
1162 generated @file{Makefile.in}s.  This macro is disallowed in @samp{Gnits}
1163 mode (@pxref{Gnits}).  This macro defines the @samp{MAINTAINER_MODE}
1164 conditional, which you can use in your own @file{Makefile.am}.
1165 @cvindex AM_MAINTAINER_MODE
1166
1167 @item AC_SUBST
1168 @itemx AC_CHECK_TOOL
1169 @itemx AC_CHECK_PROG
1170 @itemx AC_CHECK_PROGS
1171 @itemx AC_PATH_PROG
1172 @itemx AC_PATH_PROGS
1173 For each of these macros, the first argument is automatically defined as
1174 a variable in each generated @file{Makefile.in}.  @xref{Setting Output
1175 Variables, , Setting Output Variables, autoconf, The Autoconf Manual},
1176 and @ref{Generic Programs, , Generic Program Checks, autoconf, The
1177 Autoconf Manual}.
1178 @cvindex AC_SUBST
1179 @cvindex AC_CHECK_TOOL
1180 @cvindex AC_CHECK_PROG
1181 @cvindex AC_CHECK_PROGS
1182 @cvindex AC_PATH_PROG
1183 @cvindex AC_PATH_PROGS
1184
1185 @end table
1186
1187
1188 @node Invoking aclocal, Macros, Optional, configure
1189 @section Auto-generating aclocal.m4
1190
1191 @cindex Invoking aclocal
1192 @cindex aclocal, Invoking
1193
1194 Automake includes a number of Autoconf macros which can be used in your
1195 package; some of them are actually required by Automake in certain
1196 situations.  These macros must be defined in your @file{aclocal.m4};
1197 otherwise they will not be seen by @code{autoconf}.
1198
1199 The @code{aclocal} program will automatically generate @file{aclocal.m4}
1200 files based on the contents of @file{configure.in}.  This provides a
1201 convenient way to get Automake-provided macros, without having to
1202 search around.  Also, the @code{aclocal} mechanism is extensible for use
1203 by other packages.
1204
1205 At startup, @code{aclocal} scans all the @file{.m4} files it can find,
1206 looking for macro definitions.  Then it scans @file{configure.in}.  Any
1207 mention of one of the macros found in the first step causes that macro,
1208 and any macros it in turn requires, to be put into @file{aclocal.m4}.
1209
1210 The contents of @file{acinclude.m4}, if it exists, are also
1211 automatically included in @file{aclocal.m4}.  This is useful for
1212 incorporating local macros into @file{configure}.
1213
1214 @code{aclocal} accepts the following options:
1215
1216 @table @code
1217 @item --acdir=@var{dir}
1218 @opindex --acdir
1219 Look for the macro files in @var{dir} instead of the installation
1220 directory.  This is typically used for debugging.
1221
1222 @item --help
1223 @opindex --help
1224 Print a summary of the command line options and exit.
1225
1226 @item -I @var{dir}
1227 @opindex -I
1228 Add the directory @var{dir} to the list of directories searched for
1229 @file{.m4} files.
1230
1231 @item --output=@var{file}
1232 @opindex --output
1233 Cause the output to be put into @var{file} instead of @file{aclocal.m4}.
1234
1235 @item --print-ac-dir
1236 @opindex --print-ac-dir
1237 Prints the name of the directory which @code{aclocal} will search to
1238 find the @file{.m4} files.  When this option is given, normal processing
1239 is suppressed.  This option can be used by a package to determine where
1240 to install a macro file.
1241
1242 @item --verbose
1243 @opindex --verbose
1244 Print the names of the files it examines.
1245
1246 @item --version
1247 @opindex --version
1248 Print the version number of Automake and exit.
1249 @end table
1250
1251
1252 @node Macros, Extending aclocal, Invoking aclocal, configure
1253 @section Autoconf macros supplied with Automake
1254
1255 @c consider generating this node automatically from m4 files.
1256
1257 @table @code
1258 @item AM_CONFIG_HEADER
1259 Automake will generate rules to automatically regenerate the config
1260 header.  If you do use this macro, you must create the file
1261 @file{stamp-h.in} in your source directory.  It can be empty.
1262 @cvindex AM_CONFIG_HEADER
1263
1264 @item AM_ENABLE_MULTILIB
1265 This is used when a ``multilib'' library is being built.  A
1266 @dfn{multilib} library is one that is built multiple times, once per
1267 target flag combination.  This is only useful when the library is
1268 intended to be cross-compiled.  The first optional argument is the name
1269 of the @file{Makefile} being generated; it defaults to @samp{Makefile}.
1270 The second option argument is used to find the top source directory; it
1271 defaults to the empty string (generally this should not be used unless
1272 you are familiar with the internals).
1273
1274 @item AM_FUNC_STRTOD
1275 If the @code{strtod} function is not available, or does not work
1276 correctly (like the one on SunOS 5.4), add @file{strtod.o} to output
1277 variable @code{LIBOBJS}.
1278 @cvindex AM_FUNC_STRTOD
1279
1280 @item AM_FUNC_ERROR_AT_LINE
1281 If the function @code{error_at_line} is not found, then add
1282 @file{error.o} to @code{LIBOBJS}.
1283 @cvindex AM_FUNC_ERROR_AT_LINE
1284
1285 @item AM_FUNC_OBSTACK
1286 Check for the GNU obstacks code; if not found, add @file{obstack.o} to
1287 @samp{LIBOBJS}.
1288 @cvindex AM_FUNC_OBSTACK
1289
1290 @item AM_C_PROTOTYPES
1291 Check to see if function prototypes are understood by the compiler.  If
1292 so, define @samp{PROTOTYPES} and set the output variables @samp{U} and
1293 @samp{ANSI2KNR} to the empty string.  Otherwise, set @samp{U} to
1294 @samp{_} and @samp{ANSI2KNR} to @samp{./ansi2knr}.  Automake uses these
1295 values to implement automatic de-ANSI-fication.
1296 @cvindex AM_C_PROTOTYPES
1297
1298 @item AM_HEADER_TIOCGWINSZ_NEEDS_SYS_IOCTL
1299 If the use of @code{TIOCGWINSZ} requires @file{<sys/ioctl.h>}, then
1300 define @code{GWINSZ_IN_SYS_IOCTL}.  Otherwise @code{TIOCGWINSZ} can be
1301 found in @file{<termios.h>}.
1302 @cvindex AM_HEADER_TIOCGWINSZ_NEEDS_SYS_IOCTL
1303
1304 @item AM_INIT_AUTOMAKE
1305 Runs many macros that most @file{configure.in}'s need.  This macro has
1306 two required arguments, the package and the version number.  By default
1307 this macro @code{AC_DEFINE}'s @samp{PACKAGE} and @samp{VERSION}.  This
1308 can be avoided by passing in a non-empty third argument.
1309
1310 @item AM_PATH_LISPDIR
1311 Searches for the program @code{emacs}, and, if found, sets the output
1312 variable @code{lispdir} to the full path to Emacs' site-lisp directory.
1313 @cvindex AM_PATH_LISPDIR
1314
1315 @item AM_PROG_CC_STDC
1316 If the C compiler in not in ANSI C mode by default, try to add an option
1317 to output variable @code{CC} to make it so.  This macro tries various
1318 options that select ANSI C on some system or another.  It considers the
1319 compiler to be in ANSI C mode if it handles function prototypes correctly.
1320
1321 If you use this macro, you should check after calling it whether the C
1322 compiler has been set to accept ANSI C; if not, the shell variable
1323 @code{am_cv_prog_cc_stdc} is set to @samp{no}.  If you wrote your source
1324 code in ANSI C, you can make an un-ANSIfied copy of it by using the
1325 @code{ansi2knr} option (@pxref{ANSI}).
1326
1327 @item AM_PROG_LEX
1328 @cindex HP-UX 10, lex problems
1329 @cindex lex problems with HP-UX 10
1330 Like @code{AC_PROG_LEX} with @code{AC_DECL_YYTEXT} (@pxref{Particular
1331 Programs, , Particular Program Checks, autoconf, The Autoconf Manual}),
1332 but uses the @code{missing} script on systems that do not have
1333 @code{lex}.  @samp{HP-UX 10} is one such system.
1334
1335 @item AM_PROG_GCJ
1336 This macro finds the @code{gcj} program or causes an error.  It sets
1337 @samp{GCJ} and @samp{GCJFLAGS}.  @code{gcj} is the Java front-end to the
1338 GNU C compiler.
1339 @cvindex AM_PROG_GCJ
1340
1341 @item AM_SANITY_CHECK
1342 This checks to make sure that a file created in the build directory is
1343 newer than a file in the source directory.  This can fail on systems
1344 where the clock is set incorrectly.  This macro is automatically run
1345 from @code{AM_INIT_AUTOMAKE}.
1346
1347 @item AM_SYS_POSIX_TERMIOS
1348 @cvindex am_cv_sys_posix_termios
1349 @cindex POSIX termios headers
1350 @cindex termios POSIX headers
1351 Check to see if POSIX termios headers and functions are available on the
1352 system.  If so, set the shell variable @code{am_cv_sys_posix_termios} to
1353 @samp{yes}.  If not, set the variable to @samp{no}.
1354
1355 @item AM_TYPE_PTRDIFF_T
1356 @cvindex HAVE_PTRDIFF_T
1357 @vindex ptrdiff_t
1358 Define @samp{HAVE_PTRDIFF_T} if the type @samp{ptrdiff_t} is defined in
1359 @file{<stddef.h>}.
1360
1361 @item AM_WITH_DMALLOC
1362 @cvindex WITH_DMALLOC
1363 @cindex dmalloc, support for
1364 @opindex --with-dmalloc
1365 Add support for the
1366 @uref{ftp://ftp.letters.com/src/dmalloc/dmalloc.tar.gz, dmalloc}
1367 package.  If the user configures with @samp{--with-dmalloc}, then define
1368 @code{WITH_DMALLOC} and add @samp{-ldmalloc} to @code{LIBS}.
1369
1370 @item AM_WITH_REGEX
1371 @cvindex WITH_REGEX
1372 @opindex --with-regex
1373 @cindex regex package
1374 @cindex rx package
1375 Adds @samp{--with-regex} to the @code{configure} command line.  If
1376 specified (the default), then the @samp{regex} regular expression
1377 library is used, @file{regex.o} is put into @samp{LIBOBJS}, and
1378 @samp{WITH_REGEX} is defined..  If @samp{--without-regex} is given, then
1379 the @samp{rx} regular expression library is used, and @file{rx.o} is put
1380 into @samp{LIBOBJS}.
1381
1382 @end table
1383
1384
1385 @node Extending aclocal,  , Macros, configure
1386 @section Writing your own aclocal macros
1387
1388 @cindex aclocal, extending
1389 @cindex Extending aclocal
1390
1391 The @code{aclocal} program doesn't have any built-in knowledge of any
1392 macros, so it is easy to extend it with your own macros.
1393
1394 This is mostly used for libraries which want to supply their own
1395 Autoconf macros for use by other programs.  For instance the
1396 @code{gettext} library supplies a macro @code{AM_GNU_GETTEXT} which
1397 should be used by any package using @code{gettext}.  When the library is
1398 installed, it installs this macro so that @code{aclocal} will find it.
1399
1400 A file of macros should be a series of @code{AC_DEFUN}'s.  The
1401 @code{aclocal} programs also understands @code{AC_REQUIRE}, so it is
1402 safe to put each macro in a separate file.  @xref{Prerequisite Macros, ,
1403 , autoconf, The Autoconf Manual}, and @ref{Macro Definitions, , ,
1404 autoconf, The Autoconf Manual}.
1405
1406 A macro file's name should end in @file{.m4}.  Such files should be
1407 installed in @file{$(datadir)/aclocal}.
1408
1409
1410 @node Top level, Programs, configure, Top
1411 @chapter The top-level @file{Makefile.am}
1412
1413 @cindex SUBDIRS, explained
1414
1415 In non-flat packages, the top level @file{Makefile.am} must tell
1416 Automake which subdirectories are to be built.  This is done via the
1417 @code{SUBDIRS} variable.
1418 @vindex SUBDIRS
1419
1420 The @code{SUBDIRS} macro holds a list of subdirectories in which
1421 building of various sorts can occur.  Many targets (e.g. @code{all}) in
1422 the generated @file{Makefile} will run both locally and in all specified
1423 subdirectories.  Note that the directories listed in @code{SUBDIRS} are
1424 not required to contain @file{Makefile.am}s; only @file{Makefile}s
1425 (after configuration).  This allows inclusion of libraries from packages
1426 which do not use Automake (such as @code{gettext}).  The directories
1427 mentioned in @code{SUBDIRS} must be direct children of the current
1428 directory.  For instance, you cannot put @samp{src/subdir} into
1429 @code{SUBDIRS}.
1430
1431 In a deep package, the top-level @file{Makefile.am} is often very short.
1432 For instance, here is the @file{Makefile.am} from the GNU Hello
1433 distribution:
1434
1435 @example
1436 EXTRA_DIST = BUGS ChangeLog.O README-alpha
1437 SUBDIRS = doc intl po src tests
1438 @end example
1439
1440 @cindex SUBDIRS, overriding
1441 @cindex Overriding SUBDIRS
1442
1443 It is possible to override the @code{SUBDIRS} variable if, like in the
1444 case of GNU @code{Inetutils}, you want to only build a subset of the
1445 entire package.  In your @file{Makefile.am} include:
1446
1447 @example
1448 SUBDIRS = @@MY_SUBDIRS@@
1449 @end example
1450
1451 Then in your @file{configure.in} you can specify:
1452
1453 @example
1454 MY_SUBDIRS = "src doc lib po"
1455 AC_SUBST(MY_SUBDIRS)
1456 @end example
1457
1458 (Note that we don't use the variable name @code{SUBDIRS} in our
1459 @file{configure.in}; that would cause Automake to believe that every
1460 @file{Makefile.in} should recurse into the listed subdirectories.)
1461
1462 The upshot of this is that Automake is tricked into building the package
1463 to take the subdirs, but doesn't actually bind that list until
1464 @code{configure} is run.
1465
1466 Although the @code{SUBDIRS} macro can contain configure substitutions
1467 (e.g. @samp{@@DIRS@@}); Automake itself does not actually examine the
1468 contents of this variable.
1469
1470 If @code{SUBDIRS} is defined, then your @file{configure.in} must include
1471 @code{AC_PROG_MAKE_SET}.
1472
1473 The use of @code{SUBDIRS} is not restricted to just the top-level
1474 @file{Makefile.am}.  Automake can be used to construct packages of
1475 arbitrary depth.
1476
1477 By default, Automake generates @file{Makefiles} which work depth-first
1478 (@samp{postfix}).  However, it is possible to change this ordering.  You
1479 can do this by putting @samp{.} into @code{SUBDIRS}.  For instance,
1480 putting @samp{.}  first will cause a @samp{prefix} ordering of
1481 directories.
1482
1483
1484 @node Programs, Other objects, Top level, Top
1485 @chapter Building Programs and Libraries
1486
1487 A large part of Automake's functionality is dedicated to making it easy
1488 to build programs and libraries.
1489
1490 @menu
1491 * A Program::                   Building a program
1492 * A Library::                   Building a library
1493 * LIBOBJS::                     Special handling for LIBOBJS and ALLOCA
1494 * A Shared Library::            Building a Libtool library
1495 * Program variables::           Variables used when building a program
1496 * Yacc and Lex::                Yacc and Lex support
1497 * C++ Support::                 
1498 * Fortran 77 Support::          
1499 * Java Support::
1500 * Support for Other Languages::  
1501 * ANSI::                        Automatic de-ANSI-fication
1502 * Dependencies::                Automatic dependency tracking
1503 @end menu
1504
1505
1506 @node A Program, A Library, Programs, Programs
1507 @section Building a program
1508
1509 @cindex PROGRAMS, bindir
1510 @vindex bin_PROGRAMS
1511 @vindex sbin_PROGRAMS
1512 @vindex libexec_PROGRAMS
1513 @vindex pkglib_PROGRAMS
1514 @vindex noinst_PROGRAMS
1515
1516 In a directory containing source that gets built into a program (as
1517 opposed to a library), the @samp{PROGRAMS} primary is used.  Programs
1518 can be installed in @code{bindir}, @code{sbindir}, @code{libexecdir},
1519 @code{pkglibdir}, or not at all (@samp{noinst}).
1520
1521 For instance:
1522
1523 @example
1524 bin_PROGRAMS = hello
1525 @end example
1526
1527 In this simple case, the resulting @file{Makefile.in} will contain code
1528 to generate a program named @code{hello}.  The variable
1529 @code{hello_SOURCES} is used to specify which source files get built
1530 into an executable:
1531
1532 @example
1533 hello_SOURCES = hello.c version.c getopt.c getopt1.c getopt.h system.h 
1534 @end example
1535
1536 This causes each mentioned @samp{.c} file to be compiled into the
1537 corresponding @samp{.o}.  Then all are linked to produce @file{hello}.
1538
1539 @cindex _SOURCES primary, defined
1540 @cindex SOURCES primary, defined
1541 @cindex Primary variable, SOURCES
1542
1543 If @samp{@var{prog}_SOURCES} is needed, but not specified, then it
1544 defaults to the single file @file{prog.c}.
1545 @vindex _SOURCES
1546 @vindex SOURCES
1547
1548 Multiple programs can be built in a single directory.  Multiple programs
1549 can share a single source file, which must be listed in each
1550 @samp{_SOURCES} definition.
1551
1552 @cindex Header files in _SOURCES
1553 @cindex _SOURCES and header files
1554
1555 Header files listed in a @samp{_SOURCES} definition will be included in
1556 the distribution but otherwise ignored.  In case it isn't obvious, you
1557 should not include the header file generated by @file{configure} in an
1558 @samp{_SOURCES} variable; this file should not be distributed.  Lex
1559 (@samp{.l}) and Yacc (@samp{.y}) files can also be listed; see @ref{Yacc
1560 and Lex}.
1561
1562 @cindex EXTRA_prog_SOURCES, defined
1563
1564 Automake must know all the source files that could possibly go into a
1565 program, even if not all the files are built in every circumstance.
1566 Any files which are only conditionally built should be listed in the
1567 appropriate @samp{EXTRA_} variable.  For instance, if
1568 @file{hello-linux.c} were conditionally included in @code{hello}, the
1569 @file{Makefile.am} would contain:
1570
1571 @example
1572 EXTRA_hello_SOURCES = hello-linux.c
1573 @end example
1574
1575 Similarly, sometimes it is useful to determine the programs that are to
1576 be built at configure time.  For instance, GNU @code{cpio} only builds
1577 @code{mt} and @code{rmt} under special circumstances.
1578
1579 @cindex EXTRA_PROGRAMS, defined
1580
1581 In this case, you must notify Automake of all the programs that can
1582 possibly be built, but at the same time cause the generated
1583 @file{Makefile.in} to use the programs specified by @code{configure}.
1584 This is done by having @code{configure} substitute values into each
1585 @samp{_PROGRAMS} definition, while listing all optionally built programs
1586 in @code{EXTRA_PROGRAMS}.
1587 @vindex EXTRA_PROGRAMS
1588
1589 If you need to link against libraries that are not found by
1590 @code{configure}, you can use @code{LDADD} to do so.  This variable
1591 actually can be used to add any options to the linker command line.
1592 @vindex LDADD
1593
1594 @cindex prog_LDADD, defined
1595
1596 Sometimes, multiple programs are built in one directory but do not share
1597 the same link-time requirements.  In this case, you can use the
1598 @samp{@var{prog}_LDADD} variable (where @var{prog} is the name of the
1599 program as it appears in some @samp{_PROGRAMS} variable, and usually
1600 written in lowercase) to override the global @code{LDADD}.  If this
1601 variable exists for a given program, then that program is not linked
1602 using @code{LDADD}.
1603 @vindex _LDADD
1604
1605 For instance, in GNU cpio, @code{pax}, @code{cpio} and @code{mt} are
1606 linked against the library @file{libcpio.a}.  However, @code{rmt} is
1607 built in the same directory, and has no such link requirement.  Also,
1608 @code{mt} and @code{rmt} are only built on certain architectures.  Here
1609 is what cpio's @file{src/Makefile.am} looks like (abridged):
1610
1611 @example
1612 bin_PROGRAMS = cpio pax @@MT@@
1613 libexec_PROGRAMS = @@RMT@@
1614 EXTRA_PROGRAMS = mt rmt
1615
1616 LDADD = ../lib/libcpio.a @@INTLLIBS@@
1617 rmt_LDADD =
1618
1619 cpio_SOURCES = @dots{}
1620 pax_SOURCES = @dots{}
1621 mt_SOURCES = @dots{}
1622 rmt_SOURCES = @dots{}
1623 @end example
1624
1625 @cindex _LDFLAGS, defined
1626
1627 @samp{@var{prog}_LDADD} is inappropriate for passing program-specific
1628 linker flags (except for @samp{-l}, @samp{-L}, @samp{-dlopen} and
1629 @samp{-dlpreopen}).  So, use the @samp{@var{prog}_LDFLAGS} variable for
1630 this purpose.
1631 @vindex _LDFLAGS
1632
1633 @cindex _DEPENDENCIES, defined
1634
1635 It is also occasionally useful to have a program depend on some other
1636 target which is not actually part of that program.  This can be done
1637 using the @samp{@var{prog}_DEPENDENCIES} variable.  Each program depends
1638 on the contents of such a variable, but no further interpretation is
1639 done.
1640
1641 If @samp{@var{prog}_DEPENDENCIES} is not supplied, it is computed by
1642 Automake.  The automatically-assigned value is the contents of
1643 @samp{@var{prog}_LDADD}, with most configure substitutions, @samp{-l},
1644 @samp{-L}, @samp{-dlopen} and @samp{-dlpreopen} options removed.  The
1645 configure substitutions that are left in are only @samp{@@LIBOBJS@@} and
1646 @samp{@@ALLOCA@@}; these are left because it is known that they will not
1647 cause an invalid value for @samp{@var{prog}_DEPENDENCIES} to be
1648 generated.
1649
1650
1651 @node A Library, LIBOBJS, A Program, Programs
1652 @section Building a library
1653
1654 @cindex _LIBRARIES primary, defined
1655 @cindex LIBRARIES primary, defined
1656 @cindex Primary variable, LIBRARIES
1657
1658 @vindex lib_LIBRARIES
1659 @vindex pkglib_LIBRARIES
1660 @vindex noinst_LIBRARIES
1661
1662 Building a library is much like building a program.  In this case, the
1663 name of the primary is @samp{LIBRARIES}.  Libraries can be installed in
1664 @code{libdir} or @code{pkglibdir}.
1665
1666 @xref{A Shared Library}, for information on how to build shared
1667 libraries using Libtool and the @samp{LTLIBRARIES} primary.
1668
1669 Each @samp{_LIBRARIES} variable is a list of the libraries to be built.
1670 For instance to create a library named @file{libcpio.a}, but not install
1671 it, you would write:
1672
1673 @example
1674 noinst_LIBRARIES = libcpio.a
1675 @end example
1676
1677 The sources that go into a library are determined exactly as they are
1678 for programs, via the @samp{_SOURCES} variables.  Note that the library
1679 name is canonicalized (@pxref{Canonicalization}), so the @samp{_SOURCES}
1680 variable corresponding to @file{liblob.a} is @samp{liblob_a_SOURCES},
1681 not @samp{liblob.a_SOURCES}.
1682
1683 @cindex _LIBADD primary, defined
1684 @cindex LIBADD primary, defined
1685 @cindex Primary variable, LIBADD
1686
1687 Extra objects can be added to a library using the
1688 @samp{@var{library}_LIBADD} variable.  This should be used for objects
1689 determined by @code{configure}.  Again from @code{cpio}:
1690 @vindex _LIBADD
1691 @vindex LIBADD
1692
1693 @example
1694 libcpio_a_LIBADD = @@LIBOBJS@@ @@ALLOCA@@
1695 @end example
1696
1697 In addition, sources for extra objects that will not exist until
1698 configure-time must be added to the @code{BUILT_SOURCES} variable
1699 (@pxref{Sources}).
1700
1701
1702 @node LIBOBJS, A Shared Library, A Library, Programs
1703 @section Special handling for LIBOBJS and ALLOCA
1704
1705 @cindex @@LIBOBJS@@, special handling
1706 @cindex @@ALLOCA@@, special handling
1707
1708 Automake explicitly recognizes the use of @code{@@LIBOBJS@@} and
1709 @code{@@ALLOCA@@}, and uses this information, plus the list of
1710 @code{LIBOBJS} files derived from @file{configure.in} to automatically
1711 include the appropriate source files in the distribution (@pxref{Dist}).
1712 These source files are also automatically handled in the
1713 dependency-tracking scheme; see @xref{Dependencies}.
1714
1715 @code{@@LIBOBJS@@} and @code{@@ALLOCA@@} are specially recognized in any
1716 @samp{_LDADD} or @samp{_LIBADD} variable.
1717
1718
1719 @node A Shared Library, Program variables, LIBOBJS, Programs
1720 @section Building a Shared Library
1721
1722 @cindex Shared libraries, support for
1723
1724 Building shared libraries is a relatively complex matter.  For this
1725 reason, GNU Libtool (@pxref{Top, , Introduction, libtool, The
1726 Libtool Manual}) was created to help build shared libraries in a
1727 platform-independent way.
1728
1729 @cindex _LTLIBRARIES primary, defined
1730 @cindex LTLIBRARIES primary, defined
1731 @cindex Primary variable, LTLIBRARIES
1732 @cindex Example of shared libraries
1733
1734 @cindex suffix .la, defined
1735
1736 Automake uses Libtool to build libraries declared with the
1737 @samp{LTLIBRARIES} primary.  Each @samp{_LTLIBRARIES} variable is a list
1738 of shared libraries to build.  For instance, to create a library named
1739 @file{libgettext.a} and its corresponding shared libraries, and install
1740 them in @samp{libdir}, write:
1741
1742 @example
1743 lib_LTLIBRARIES = libgettext.la
1744 @end example
1745
1746 @vindex lib_LTLIBRARIES
1747 @vindex pkglib_LTLIBRARIES
1748 @vindex noinst_LTLIBRARIES
1749 @vindex check_LTLIBRARIES
1750
1751 @cindex check_LTLIBRARIES, not allowed
1752
1753 Note that shared libraries @emph{must} be installed, so
1754 @code{check_LTLIBRARIES} is not allowed.  However,
1755 @code{noinst_LTLIBRARIES} is allowed.  This feature should be used for
1756 libtool ``convenience libraries''.
1757
1758 @cindex suffix .lo, defined
1759
1760 For each library, the @samp{@var{library}_LIBADD} variable contains the
1761 names of extra libtool objects (@file{.lo} files) to add to the shared
1762 library.  The @samp{@var{library}_LDFLAGS} variable contains any
1763 additional libtool flags, such as @samp{-version-info} or
1764 @samp{-static}.
1765
1766 @cindex @@LTLIBOBJS@@, special handling
1767
1768 Where an ordinary library might include @code{@@LIBOBJS@@}, a libtool
1769 library must use @code{@@LTLIBOBJS@@}.  This is required because the
1770 object files that libtool operates on do not necessarily end in
1771 @file{.o}.  The libtool manual contains more details on this topic.
1772
1773 For libraries installed in some directory, Automake will automatically
1774 supply the appropriate @samp{-rpath} option.  However, for libraries
1775 determined at configure time (and thus mentioned in
1776 @code{EXTRA_LTLIBRARIES}), Automake does not know the eventual
1777 installation directory; for such libraries you must add the
1778 @samp{-rpath} option to the appropriate @samp{_LDFLAGS} variable by
1779 hand.
1780
1781 @xref{Using Automake, Using Automake with Libtool, The Libtool Manual,
1782 libtool, The Libtool Manual}, for more information.
1783
1784
1785 @node Program variables, Yacc and Lex, A Shared Library, Programs
1786 @section Variables used when building a program
1787
1788 Occasionally it is useful to know which @file{Makefile} variables
1789 Automake uses for compilations; for instance you might need to do your
1790 own compilation in some special cases.
1791
1792 Some variables are inherited from Autoconf; these are @code{CC},
1793 @code{CFLAGS}, @code{CPPFLAGS}, @code{DEFS}, @code{LDFLAGS}, and
1794 @code{LIBS}.
1795 @vindex LDFLAGS
1796
1797 There are some additional variables which Automake itself defines:
1798
1799 @vtable @code
1800 @item INCLUDES
1801 A list of @samp{-I} options.  This can be set in your @file{Makefile.am}
1802 if you have special directories you want to look in.  Automake already
1803 provides some @samp{-I} options automatically.  In particular it
1804 generates @samp{-I$(srcdir)} and a @samp{-I} pointing to the directory
1805 holding @file{config.h} (if you've used @code{AC_CONFIG_HEADER} or
1806 @code{AM_CONFIG_HEADER}).
1807
1808 @code{INCLUDES} can actually be used for other @code{cpp} options
1809 besides @samp{-I}.  For instance, it is sometimes used to pass arbitrary
1810 @samp{-D} options to the compiler.
1811
1812 @item COMPILE
1813 This is the command used to actually compile a C source file.  The
1814 filename is appended to form the complete command line.
1815
1816 @item LINK
1817 This is the command used to actually link a C program.
1818 @end vtable
1819
1820
1821 @node Yacc and Lex, C++ Support, Program variables, Programs
1822 @section Yacc and Lex support
1823
1824 Automake has somewhat idiosyncratic support for Yacc and Lex.
1825
1826 Automake assumes that the @file{.c} file generated by @code{yacc} (or
1827 @code{lex}) should be named using the basename of the input file.  That
1828 is, for a yacc source file @file{foo.y}, Automake will cause the
1829 intermediate file to be named @file{foo.c} (as opposed to
1830 @file{y.tab.c}, which is more traditional).
1831
1832 The extension of a yacc source file is used to determine the extension
1833 of the resulting @samp{C} or @samp{C++} file.  Files with the extension
1834 @samp{.y} will be turned into @samp{.c} files; likewise, @samp{.yy} will
1835 become @samp{.cc}; @samp{.y++}, @samp{c++}; and @samp{.yxx},
1836 @samp{.cxx}.
1837
1838 Likewise, lex source files can be used to generate @samp{C} or
1839 @samp{C++}; the extensions @samp{.l}, @samp{.ll}, @samp{.l++}, and
1840 @samp{.lxx} are recognized.
1841
1842 You should never explicitly mention the intermediate (@samp{C} or
1843 @samp{C++}) file in any @samp{SOURCES} variable; only list the source
1844 file.
1845
1846 The intermediate files generated by @code{yacc} (or @code{lex}) will be
1847 included in any distribution that is made.  That way the user doesn't
1848 need to have @code{yacc} or @code{lex}.
1849
1850 If a @code{yacc} source file is seen, then your @file{configure.in} must
1851 define the variable @samp{YACC}.  This is most easily done by invoking
1852 the macro @samp{AC_PROG_YACC} (@pxref{Particular Programs, , Particular
1853 Program Checks, autoconf, The Autoconf Manual}).
1854
1855 Similarly, if a @code{lex} source file is seen, then your
1856 @file{configure.in} must define the variable @samp{LEX}.  You can use
1857 @samp{AC_PROG_LEX} to do this (@pxref{Particular Programs, , Particular
1858 Program Checks, autoconf, The Autoconf Manual}).  Automake's @code{lex}
1859 support also requires that you use the @samp{AC_DECL_YYTEXT}
1860 macro---automake needs to know the value of @samp{LEX_OUTPUT_ROOT}.
1861 This is all handled for you if you use the @code{AM_PROG_LEX} macro
1862 (@pxref{Macros}).
1863
1864 @cindex ylwrap
1865 @cindex yacc, multiple parsers
1866 @cindex Multiple yacc parsers
1867 @cindex Multiple lex lexers
1868 @cindex lex, multiple lexers
1869
1870
1871 Automake makes it possible to include multiple @code{yacc} (or
1872 @code{lex}) source files in a single program.  Automake uses a small
1873 program called @code{ylwrap} to run @code{yacc} (or @code{lex}) in a
1874 subdirectory.  This is necessary because yacc's output filename is
1875 fixed, and a parallel make could conceivably invoke more than one
1876 instance of @code{yacc} simultaneously.  The @code{ylwrap} program is
1877 distributed with Automake.  It should appear in the directory specified
1878 by @samp{AC_CONFIG_AUX_DIR} (@pxref{Input, , Finding `configure' Input,
1879 autoconf, The Autoconf Manual}), or the current directory if that macro
1880 is not used in @file{configure.in}.
1881
1882 For @code{yacc}, simply managing locking is insufficient.  The output of
1883 @code{yacc} always uses the same symbol names internally, so it isn't
1884 possible to link two @code{yacc} parsers into the same executable.
1885
1886 We recommend using the following renaming hack used in @code{gdb}:
1887 @example
1888 #define yymaxdepth c_maxdepth
1889 #define yyparse c_parse
1890 #define yylex   c_lex
1891 #define yyerror c_error
1892 #define yylval  c_lval
1893 #define yychar  c_char
1894 #define yydebug c_debug
1895 #define yypact  c_pact  
1896 #define yyr1    c_r1                    
1897 #define yyr2    c_r2                    
1898 #define yydef   c_def           
1899 #define yychk   c_chk           
1900 #define yypgo   c_pgo           
1901 #define yyact   c_act           
1902 #define yyexca  c_exca
1903 #define yyerrflag c_errflag
1904 #define yynerrs c_nerrs
1905 #define yyps    c_ps
1906 #define yypv    c_pv
1907 #define yys     c_s
1908 #define yy_yys  c_yys
1909 #define yystate c_state
1910 #define yytmp   c_tmp
1911 #define yyv     c_v
1912 #define yy_yyv  c_yyv
1913 #define yyval   c_val
1914 #define yylloc  c_lloc
1915 #define yyreds  c_reds
1916 #define yytoks  c_toks
1917 #define yylhs   c_yylhs
1918 #define yylen   c_yylen
1919 #define yydefred c_yydefred
1920 #define yydgoto c_yydgoto
1921 #define yysindex c_yysindex
1922 #define yyrindex c_yyrindex
1923 #define yygindex c_yygindex
1924 #define yytable  c_yytable
1925 #define yycheck  c_yycheck
1926 #define yyname   c_yyname
1927 #define yyrule   c_yyrule
1928 @end example
1929
1930 For each define, replace the @samp{c_} prefix with whatever you like.
1931 These defines work for @code{bison}, @code{byacc}, and traditional
1932 @code{yacc}s.  If you find a parser generator that uses a symbol not
1933 covered here, please report the new name so it can be added to the list.
1934
1935
1936 @node C++ Support, Fortran 77 Support, Yacc and Lex, Programs
1937 @section C++ Support
1938
1939 @cindex C++ support
1940 @cindex Support for C++
1941
1942 Automake includes full support for C++.
1943
1944 Any package including C++ code must define the output variable
1945 @samp{CXX} in @file{configure.in}; the simplest way to do this is to use
1946 the @code{AC_PROG_CXX} macro (@pxref{Particular Programs, , Particular
1947 Program Checks, autoconf, The Autoconf Manual}).
1948
1949 A few additional variables are defined when a C++ source file is seen:
1950
1951 @vtable @code
1952 @item CXX
1953 The name of the C++ compiler.
1954
1955 @item CXXFLAGS
1956 Any flags to pass to the C++ compiler.
1957
1958 @item CXXCOMPILE
1959 The command used to actually compile a C++ source file.  The file name
1960 is appended to form the complete command line.
1961
1962 @item CXXLINK
1963 The command used to actually link a C++ program.
1964 @end vtable
1965
1966
1967 @node Fortran 77 Support, Java Support, C++ Support, Programs
1968 @comment  node-name,  next,  previous,  up
1969 @section Fortran 77 Support
1970
1971 @cindex Fortran 77 support
1972 @cindex Support for Fortran 77
1973
1974 Automake includes full support for Fortran 77.
1975
1976 Any package including Fortran 77 code must define the output variable
1977 @samp{F77} in @file{configure.in}; the simplest way to do this is to use
1978 the @code{AC_PROG_F77} macro (@pxref{Particular Programs, , Particular
1979 Program Checks, autoconf, The Autoconf Manual}).  @xref{Fortran 77 and
1980 Autoconf}.
1981
1982 A few additional variables are defined when a Fortran 77 source file is
1983 seen:
1984
1985 @vtable @code
1986
1987 @item F77
1988 The name of the Fortran 77 compiler.
1989
1990 @item FFLAGS
1991 Any flags to pass to the Fortran 77 compiler.
1992
1993 @item RFLAGS
1994 Any flags to pass to the Ratfor compiler.
1995
1996 @item F77COMPILE
1997 The command used to actually compile a Fortran 77 source file.  The file
1998 name is appended to form the complete command line.
1999
2000 @item FLINK
2001 The command used to actually link a pure Fortran 77 program or shared
2002 library.
2003
2004 @end vtable
2005
2006 Automake can handle preprocessing Fortran 77 and Ratfor source files in
2007 addition to compiling them@footnote{Much, if not most, of the
2008 information in the following sections pertaining to preprocessing
2009 Fortran 77 programs was taken almost verbatim from @ref{Catalogue of
2010 Rules, , Catalogue of Rules, make, The GNU Make Manual}.}.  Automake
2011 also contains some support for creating programs and shared libraries
2012 that are a mixture of Fortran 77 and other languages (@pxref{Mixing
2013 Fortran 77 With C and C++}).
2014
2015 These issues are covered in the following sections.
2016
2017 @menu
2018 * Preprocessing Fortran 77::    
2019 * Compiling Fortran 77 Files::  
2020 * Mixing Fortran 77 With C and C++::  
2021 * Fortran 77 and Autoconf::     
2022 @end menu
2023
2024
2025 @node Preprocessing Fortran 77, Compiling Fortran 77 Files, Fortran 77 Support, Fortran 77 Support
2026 @comment  node-name,  next,  previous,  up
2027 @subsection Preprocessing Fortran 77
2028
2029 @cindex Preprocessing Fortran 77
2030 @cindex Fortran 77, Preprocessing
2031 @cindex Ratfor programs
2032
2033 @file{N.f} is made automatically from @file{N.F} or @file{N.r}.  This
2034 rule runs just the preprocessor to convert a preprocessable Fortran 77
2035 or Ratfor source file into a strict Fortran 77 source file.  The precise
2036 command used is as follows:
2037
2038 @table @file
2039
2040 @item .F
2041 @code{$(F77) -F $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_FFLAGS) $(FFLAGS)}
2042
2043 @item .r
2044 @code{$(F77) -F $(AM_FFLAGS) $(FFLAGS) $(AM_RFLAGS) $(RFLAGS)}
2045
2046 @end table
2047
2048
2049 @node Compiling Fortran 77 Files, Mixing Fortran 77 With C and C++, Preprocessing Fortran 77, Fortran 77 Support
2050 @comment  node-name,  next,  previous,  up
2051 @subsection Compiling Fortran 77 Files
2052
2053 @file{N.o} is made automatically from @file{N.f}, @file{N.F} or
2054 @file{N.r} by running the Fortran 77 compiler.  The precise command used
2055 is as follows:
2056
2057 @table @file
2058
2059 @item .f
2060 @code{$(F77) -c $(AM_FFLAGS) $(FFLAGS)}
2061
2062 @item .F
2063 @code{$(F77) -c $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_FFLAGS) $(FFLAGS)}
2064
2065 @item .r
2066 @code{$(F77) -c $(AM_FFLAGS) $(FFLAGS) $(AM_RFLAGS) $(RFLAGS)}
2067
2068 @end table
2069
2070
2071 @node Mixing Fortran 77 With C and C++, Fortran 77 and Autoconf, Compiling Fortran 77 Files, Fortran 77 Support
2072 @comment  node-name,  next,  previous,  up
2073 @subsection Mixing Fortran 77 With C and C++
2074
2075 @cindex Fortran 77, mixing with C and C++
2076 @cindex Mixing Fortran 77 with C and C++
2077 @cindex Linking Fortran 77 with C and C++
2078 @cindex cfortran
2079 @cindex Mixing Fortran 77 with C and/or C++
2080
2081 Automake currently provides @emph{limited} support for creating programs
2082 and shared libraries that are a mixture of Fortran 77 and C and/or C++.
2083 However, there are many other issues related to mixing Fortran 77 with
2084 other languages that are @emph{not} (currently) handled by Automake, but
2085 that are handled by other packages@footnote{For example,
2086 @uref{http://www-zeus.desy.de/~burow/cfortran/, the cfortran package}
2087 addresses all of these inter-language issues, and runs under nearly all
2088 Fortran 77, C and C++ compilers on nearly all platforms.  However,
2089 @code{cfortran} is not yet Free Software, but it will be in the next
2090 major release.}.
2091
2092 @page
2093 Automake can help in two ways:
2094
2095 @enumerate
2096 @item
2097 Automatic selection of the linker depending on which combinations of
2098 source code.
2099
2100 @item
2101 Automatic selection of the appropriate linker flags (e.g. @samp{-L} and
2102 @samp{-l}) to pass to the automatically selected linker in order to link
2103 in the appropriate Fortran 77 intrinsic and run-time libraries.
2104
2105 @cindex FLIBS, defined
2106 These extra Fortran 77 linker flags are supplied in the output variable
2107 @code{FLIBS} by the @code{AC_F77_LIBRARY_LDFLAGS} Autoconf macro
2108 supplied with newer versions of Autoconf (Autoconf version 2.13 and
2109 later).  @xref{Fortran 77 Compiler Characteristics, , , autoconf, The
2110 Autoconf}.
2111 @end enumerate
2112
2113 If Automake detects that a program or shared library (as mentioned in
2114 some @code{_PROGRAMS} or @code{_LTLIBRARIES} primary) contains source
2115 code that is a mixture of Fortran 77 and C and/or C++, then it requires
2116 that the macro @code{AC_F77_LIBRARY_LDFLAGS} be called in
2117 @file{configure.in}, and that either @code{$(FLIBS)} or @code{@@FLIBS@@}
2118 appear in the appropriate @code{_LDADD} (for programs) or @code{_LIBADD}
2119 (for shared libraries) variables.  It is the responsibility of the
2120 person writing the @file{Makefile.am} to make sure that @code{$(FLIBS)}
2121 or @code{@@FLIBS@@} appears in the appropriate @code{_LDADD} or
2122 @code{_LIBADD} variable.
2123
2124 @cindex Mixed language example
2125 @cindex Example, mixed language
2126
2127 For example, consider the following @file{Makefile.am}:
2128
2129 @example
2130 bin_PROGRAMS = foo
2131 foo_SOURCES  = main.cc foo.f
2132 foo_LDADD    = libfoo.la @@FLIBS@@
2133
2134 pkglib_LTLIBRARIES = libfoo.la
2135 libfoo_la_SOURCES  = bar.f baz.c zardoz.cc
2136 libfoo_la_LIBADD   = $(FLIBS)
2137 @end example
2138
2139 In this case, Automake will insist that @code{AC_F77_LIBRARY_LDFLAGS}
2140 is mentioned in @file{configure.in}.  Also, if @code{@@FLIBS@@} hadn't
2141 been mentioned in @code{foo_LDADD} and @code{libfoo_la_LIBADD}, then
2142 Automake would have issued a warning.
2143
2144
2145 @page
2146 @menu
2147 * How the Linker is Chosen::    
2148 @end menu
2149
2150 @node How the Linker is Chosen,  , Mixing Fortran 77 With C and C++, Mixing Fortran 77 With C and C++
2151 @comment  node-name,  next,  previous,  up
2152 @subsubsection How the Linker is Chosen
2153
2154 @cindex Automatic linker selection
2155 @cindex Selecting the linker automatically
2156
2157 The following diagram demonstrates under what conditions a particular
2158 linker is chosen by Automake.
2159
2160 For example, if Fortran 77, C and C++ source code were to be compiled
2161 into a program, then the C++ linker will be used.  In this case, if the
2162 C or Fortran 77 linkers required any special libraries that weren't
2163 included by the C++ linker, then they must be manually added to an
2164 @code{_LDADD} or @code{_LIBADD} variable by the user writing the
2165 @file{Makefile.am}.
2166
2167 @example
2168                      \              Linker
2169           source      \
2170            code        \     C        C++     Fortran
2171      -----------------  +---------+---------+---------+
2172                         |         |         |         |
2173      C                  |    x    |         |         |
2174                         |         |         |         |
2175                         +---------+---------+---------+
2176                         |         |         |         |
2177          C++            |         |    x    |         |
2178                         |         |         |         |
2179                         +---------+---------+---------+
2180                         |         |         |         |
2181                Fortran  |         |         |    x    |
2182                         |         |         |         |
2183                         +---------+---------+---------+
2184                         |         |         |         |
2185      C + C++            |         |    x    |         |
2186                         |         |         |         |
2187                         +---------+---------+---------+
2188                         |         |         |         |
2189      C +       Fortran  |         |         |    x    |
2190                         |         |         |         |
2191                         +---------+---------+---------+
2192                         |         |         |         |
2193          C++ + Fortran  |         |    x    |         |
2194                         |         |         |         |
2195                         +---------+---------+---------+
2196                         |         |         |         |
2197      C + C++ + Fortran  |         |    x    |         |
2198                         |         |         |         |
2199                         +---------+---------+---------+
2200 @end example
2201
2202
2203 @node Fortran 77 and Autoconf,  , Mixing Fortran 77 With C and C++, Fortran 77 Support
2204 @comment  node-name,  next,  previous,  up
2205 @subsection Fortran 77 and Autoconf
2206
2207 The current Automake support for Fortran 77 requires a recent enough
2208 version Autoconf that also includes support for Fortran 77.  Full
2209 Fortran 77 support was added to Autoconf 2.13, so you will want to use
2210 that version of Autoconf or later.
2211
2212
2213 @node Java Support, Support for Other Languages, Fortran 77 Support, Programs
2214 @comment  node-name,  next,  previous,  up
2215
2216 Automake includes support for compiled Java, using @code{gcj}, the Java
2217 front end to the GNU C compiler.
2218
2219 Any package including Java code to be compiled must define the output
2220 variable @samp{GCJ} in @file{configure.in}; the variable @samp{GCJFLAGS}
2221 must also be defined somehow (either in @file{configure.in} or
2222 @file{Makefile.am}).  The simplest way to do this is to use the
2223 @code{AM_PROG_GCJ} macro.
2224
2225 By default, programs including Java source files are linked with
2226 @code{gcj}.
2227
2228
2229 @node Support for Other Languages, ANSI, Java Support, Programs
2230 @comment  node-name,  next,  previous,  up
2231 @section Support for Other Languages
2232
2233 Automake currently only includes full support for C, C++ (@pxref{C++
2234 Support}), Fortran 77 (@pxref{Fortran 77 Support}), and Java
2235 (@pxref{Java Support}).  There is only rudimentary support for other
2236 languages, support for which will be improved based on user demand.
2237
2238 @c FIXME: mention suffix rule processing here.
2239
2240
2241 @node ANSI, Dependencies, Support for Other Languages, Programs
2242 @section Automatic de-ANSI-fication
2243
2244 @cindex de-ANSI-fication, defined
2245
2246 Although the GNU standards allow the use of ANSI C, this can have the
2247 effect of limiting portability of a package to some older compilers
2248 (notably SunOS).
2249
2250 Automake allows you to work around this problem on such machines by
2251 @dfn{de-ANSI-fying} each source file before the actual compilation takes
2252 place.
2253
2254 @vindex AUTOMAKE_OPTIONS
2255 @opindex ansi2knr
2256
2257 If the @file{Makefile.am} variable @code{AUTOMAKE_OPTIONS}
2258 (@pxref{Options}) contains the option @code{ansi2knr} then code to
2259 handle de-ANSI-fication is inserted into the generated
2260 @file{Makefile.in}.
2261
2262 This causes each C source file in the directory to be treated as ANSI C.
2263 If an ANSI C compiler is available, it is used.  If no ANSI C compiler
2264 is available, the @code{ansi2knr} program is used to convert the source
2265 files into K&R C, which is then compiled.
2266
2267 The @code{ansi2knr} program is simple-minded.  It assumes the source
2268 code will be formatted in a particular way; see the @code{ansi2knr} man
2269 page for details.
2270
2271 Support for de-ANSI-fication requires the source files @file{ansi2knr.c}
2272 and @file{ansi2knr.1} to be in the same package as the ANSI C source;
2273 these files are distributed with Automake.  Also, the package
2274 @file{configure.in} must call the macro @code{AM_C_PROTOTYPES}
2275 (@pxref{Macros}).
2276 @cvindex AM_C_PROTOTYPES
2277
2278 Automake also handles finding the @code{ansi2knr} support files in some
2279 other directory in the current package.  This is done by prepending the
2280 relative path to the appropriate directory to the @code{ansi2knr}
2281 option.  For instance, suppose the package has ANSI C code in the
2282 @file{src} and @file{lib} subdirs.  The files @file{ansi2knr.c} and
2283 @file{ansi2knr.1} appear in @file{lib}.  Then this could appear in
2284 @file{src/Makefile.am}:
2285
2286 @example
2287 AUTOMAKE_OPTIONS = ../lib/ansi2knr
2288 @end example
2289
2290 If no directory prefix is given, the files are assumed to be in the
2291 current directory.
2292
2293 Files mentioned in @code{LIBOBJS} which need de-ANSI-fication will not
2294 be automatically handled.  That's because @code{configure} will generate
2295 an object name like @file{regex.o}, while @code{make} will be looking
2296 for @file{regex_.o} (when de-ANSI-fying).  Eventually this problem will
2297 be fixed via @code{autoconf} magic, but for now you must put this code
2298 into your @file{configure.in}, just before the @code{AC_OUTPUT} call:
2299
2300 @example
2301 # This is necessary so that .o files in LIBOBJS are also built via
2302 # the ANSI2KNR-filtering rules.
2303 LIBOBJS=`echo $LIBOBJS|sed 's/\.o /\$U.o /g;s/\.o$/\$U.o/'`
2304 @end example
2305
2306
2307 @node Dependencies,  , ANSI, Programs
2308 @section Automatic dependency tracking
2309
2310 As a developer it is often painful to continually update the
2311 @file{Makefile.in} whenever the include-file dependencies change in a
2312 project.  Automake supplies a way to automatically track dependency
2313 changes, and distribute the dependencies in the generated
2314 @file{Makefile.in}.
2315
2316 Currently this support requires the use of GNU @code{make} and
2317 @code{gcc}.  It might become possible in the future to supply a
2318 different dependency generating program, if there is enough demand.  In
2319 the meantime, this mode is enabled by default if any C program or
2320 library is defined in the current directory, so you may get a @samp{Must
2321 be a separator} error from non-GNU make.
2322
2323 @trindex dist
2324
2325 When you decide to make a distribution, the @code{dist} target will
2326 re-run @code{automake} with @samp{--include-deps} and other options.
2327 @xref{Invoking Automake}, and @ref{Options}.  This will cause the
2328 previously generated dependencies to be inserted into the generated
2329 @file{Makefile.in}, and thus into the distribution.  This step also
2330 turns off inclusion of the dependency generation code, so that those who
2331 download your distribution but don't use GNU @code{make} and @code{gcc}
2332 will not get errors.
2333
2334 @vindex OMIT_DEPENDENCIES
2335
2336 When added to the @file{Makefile.in}, the dependencies have all
2337 system-specific dependencies automatically removed.  This can be done by
2338 listing the files in @samp{OMIT_DEPENDENCIES}.  For instance all
2339 references to system header files are removed by Automake.  Sometimes it
2340 is useful to specify that a certain header file should be removed.  For
2341 instance if your @file{configure.in} uses @samp{AM_WITH_REGEX}, then any
2342 dependency on @file{rx.h} or @file{regex.h} should be removed, because
2343 the correct one cannot be known until the user configures the package.
2344
2345 As it turns out, Automake is actually smart enough to handle the
2346 particular case of the regular expression header.  It will also
2347 automatically omit @file{libintl.h} if @samp{AM_GNU_GETTEXT} is used.
2348
2349 @vindex AUTOMAKE_OPTIONS
2350 @opindex no-dependencies
2351
2352 Automatic dependency tracking can be suppressed by putting
2353 @code{no-dependencies} in the variable @code{AUTOMAKE_OPTIONS}.
2354
2355 If you unpack a distribution made by @code{make dist}, and you want to
2356 turn on the dependency-tracking code again, simply re-run
2357 @code{automake}.
2358
2359 The actual dependency files are put under the build directory, in a
2360 subdirectory named @file{.deps}.  These dependencies are machine
2361 specific.  It is safe to delete them if you like; they will be
2362 automatically recreated during the next build.
2363
2364
2365 @node Other objects, Other GNU Tools, Programs, Top
2366 @chapter Other Derived Objects
2367
2368 Automake can handle derived objects which are not C programs.  Sometimes
2369 the support for actually building such objects must be explicitly
2370 supplied, but Automake will still automatically handle installation and
2371 distribution.
2372
2373 @menu
2374 * Scripts::                     Executable scripts
2375 * Headers::                     Header files
2376 * Data::                        Architecture-independent data files
2377 * Sources::                     Derived sources
2378 @end menu
2379
2380
2381 @node Scripts, Headers, Other objects, Other objects
2382 @section Executable Scripts
2383
2384 @cindex _SCRIPTS primary, defined
2385 @cindex SCRIPTS primary, defined
2386 @cindex Primary variable, SCRIPTS
2387
2388 It is possible to define and install programs which are scripts.  Such
2389 programs are listed using the @samp{SCRIPTS} primary name.  Automake
2390 doesn't define any dependencies for scripts; the @file{Makefile.am}
2391 should include the appropriate rules.
2392 @vindex SCRIPTS
2393
2394 Automake does not assume that scripts are derived objects; such objects
2395 must be deleted by hand (@pxref{Clean}).
2396
2397 The @code{automake} program itself is a Perl script that is generated at
2398 configure time from @file{automake.in}.  Here is how this is handled:
2399
2400 @example
2401 bin_SCRIPTS = automake
2402 @end example
2403
2404 Since @code{automake} appears in the @code{AC_OUTPUT} macro, a target
2405 for it is automatically generated.
2406
2407 @cindex SCRIPTS, installation directories
2408 @cindex Installing scripts
2409
2410 @vindex bin_SCRIPTS
2411 @vindex sbin_SCRIPTS
2412 @vindex libexec_SCRIPTS
2413 @vindex pkgdata_SCRIPTS
2414 @vindex noinst_SCRIPTS
2415
2416 Script objects can be installed in @code{bindir}, @code{sbindir},
2417 @code{libexecdir}, or @code{pkgdatadir}.
2418
2419
2420 @node Headers, Data, Scripts, Other objects
2421 @section Header files
2422
2423 @cindex _HEADERS primary, defined
2424 @cindex HEADERS primary, defined
2425 @cindex Primary variable, HEADERS
2426
2427 @vindex noinst_HEADERS
2428
2429 Header files are specified by the @samp{HEADERS} family of variables.
2430 Generally header files are not installed, so the @code{noinst_HEADERS}
2431 variable will be the most used.
2432 @vindex HEADERS
2433
2434 All header files must be listed somewhere; missing ones will not appear
2435 in the distribution.  Often it is clearest to list uninstalled headers
2436 with the rest of the sources for a program.  @xref{A Program}.  Headers
2437 listed in a @samp{_SOURCES} variable need not be listed in any
2438 @samp{_HEADERS} variable.
2439
2440 @cindex HEADERS, installation directories
2441 @cindex Installing headers
2442
2443 @vindex include_HEADERS
2444 @vindex oldinclude_HEADERS
2445 @vindex pkginclude_HEADERS
2446
2447 Headers can be installed in @code{includedir}, @code{oldincludedir}, or
2448 @code{pkgincludedir}.
2449
2450
2451 @node Data, Sources, Headers, Other objects
2452 @section Architecture-independent data files
2453
2454 @cindex _DATA primary, defined
2455 @cindex DATA primary, defined
2456 @cindex Primary variable, DATA
2457
2458 Automake supports the installation of miscellaneous data files using the
2459 @samp{DATA} family of variables.
2460 @vindex DATA
2461
2462 @vindex data_DATA
2463 @vindex sysconf_DATA
2464 @vindex sharedstate_DATA
2465 @vindex localstate_DATA
2466 @vindex pkgdata_DATA
2467
2468 Such data can be installed in the directories @code{datadir},
2469 @code{sysconfdir}, @code{sharedstatedir}, @code{localstatedir}, or
2470 @code{pkgdatadir}.
2471
2472 By default, data files are @emph{not} included in a distribution.
2473
2474 Here is how Automake installs its auxiliary data files:
2475
2476 @example
2477 pkgdata_DATA = clean-kr.am clean.am @dots{}
2478 @end example
2479
2480
2481 @node Sources,  , Data, Other objects
2482 @section Built sources
2483
2484 @cindex BUILT_SOURCES, defined
2485
2486 Occasionally a file which would otherwise be called @samp{source}
2487 (e.g. a C @samp{.h} file) is actually derived from some other file.
2488 Such files should be listed in the @code{BUILT_SOURCES} variable.
2489 @vindex BUILT_SOURCES
2490
2491 Built sources are also not compiled by default.  You must explicitly
2492 mention them in some other @samp{_SOURCES} variable for this to happen.
2493
2494 Note that, in some cases, @code{BUILT_SOURCES} will work in somewhat
2495 surprising ways.  In order to get the built sources to work with
2496 automatic dependency tracking, the @file{Makefile} must depend on
2497 @code{$(BUILT_SOURCES)}.  This can cause these sources to be rebuilt at
2498 what might seem like funny times.
2499
2500
2501 @node Other GNU Tools, Documentation, Other objects, Top
2502 @chapter Other GNU Tools
2503
2504 Since Automake is primarily intended to generate @file{Makefile.in}s for
2505 use in GNU programs, it tries hard to interoperate with other GNU tools.
2506
2507 @menu
2508 * Emacs Lisp::                  Emacs Lisp
2509 * gettext::                     Gettext
2510 * Guile::                       Guile
2511 * Libtool::                     Libtool
2512 * Java::                        Java
2513 @end menu
2514
2515
2516 @node Emacs Lisp, gettext, Other GNU Tools, Other GNU Tools
2517 @section Emacs Lisp
2518
2519 @cindex _LISP primary, defined
2520 @cindex LISP primary, defined
2521 @cindex Primary variable, LISP
2522
2523 @vindex LISP
2524 @vindex lisp_LISP
2525 @vindex noinst_LISP
2526
2527 Automake provides some support for Emacs Lisp.  The @samp{LISP} primary
2528 is used to hold a list of @file{.el} files.  Possible prefixes for this
2529 primary are @samp{lisp_} and @samp{noinst_}.  Note that if
2530 @code{lisp_LISP} is defined, then @file{configure.in} must run
2531 @code{AM_PATH_LISPDIR} (@pxref{Macros}).
2532
2533 @vindex ELCFILES
2534
2535 By default Automake will byte-compile all Emacs Lisp source files using
2536 the Emacs found by @code{AM_PATH_LISPDIR}.  If you wish to avoid
2537 byte-compiling, simply define the variable @code{ELCFILES} to be empty.
2538 Byte-compiled Emacs Lisp files are not portable among all versions of
2539 Emacs, so it makes sense to turn this off if you expect sites to have
2540 more than one version of Emacs installed.  Furthermore, many packages
2541 don't actually benefit from byte-compilation.  Still, we recommend that
2542 you leave it enabled by default.  It is probably better for sites with
2543 strange setups to cope for themselves than to make the installation less
2544 nice for everybody else.
2545
2546
2547 @node gettext, Guile, Emacs Lisp, Other GNU Tools
2548 @section Gettext
2549
2550 @cindex GNU Gettext support
2551 @cindex Gettext support
2552 @cindex Support for GNU Gettext
2553
2554 If @code{AM_GNU_GETTEXT} is seen in @file{configure.in}, then Automake
2555 turns on support for GNU gettext, a message catalog system for
2556 internationalization
2557 (@pxref{GNU Gettext, , , gettext, GNU gettext utilities}).
2558
2559 The @code{gettext} support in Automake requires the addition of two
2560 subdirectories to the package, @file{intl} and @file{po}.  Automake
2561 insures that these directories exist and are mentioned in
2562 @code{SUBDIRS}.
2563
2564 Furthermore, Automake checks that the definition of @code{ALL_LINGUAS}
2565 in @file{configure.in} corresponds to all the valid @file{.po} files,
2566 and nothing more.
2567
2568
2569 @node Guile, Libtool, gettext, Other GNU Tools
2570 @section Guile
2571
2572 Automake provides some automatic support for writing Guile modules.
2573 Automake will turn on Guile support if the @code{AM_INIT_GUILE_MODULE}
2574 macro is used in @file{configure.in}.
2575
2576 Right now Guile support just means that the @code{AM_INIT_GUILE_MODULE}
2577 macro is understood to mean:
2578 @itemize @bullet
2579 @item
2580 @code{AM_INIT_AUTOMAKE} is run.
2581
2582 @item
2583 @code{AC_CONFIG_AUX_DIR} is run, with a path of @file{..}.
2584 @end itemize
2585
2586 As the Guile module code matures, no doubt the Automake support will
2587 grow as well.
2588
2589
2590 @node Libtool, Java, Guile, Other GNU Tools
2591 @section Libtool
2592
2593 Automake provides support for GNU Libtool (@pxref{Top, , Introduction,
2594 libtool, The Libtool Manual}) with the @samp{LTLIBRARIES} primary.
2595 @xref{A Shared Library}.
2596
2597
2598 @node Java,  , Libtool, Other GNU Tools
2599 @section Java
2600
2601 @cindex _JAVA primary, defined
2602 @cindex JAVA primary, defined
2603 @cindex Primary variable, JAVA
2604
2605 Automake provides some minimal support for Java compilation with the
2606 @samp{JAVA} primary.
2607
2608 Any @file{.java} files listed in a @samp{_JAVA} variable will be
2609 compiled with @code{JAVAC} at build time.  By default, @file{.class}
2610 files are not included in the distribution.
2611
2612 @cindex JAVA restrictions
2613 @cindex Restrictions for JAVA
2614
2615 Currently Automake enforces the restriction that only one @samp{_JAVA}
2616 primary can be used in a given @file{Makefile.am}.  The reason for this
2617 restriction is that, in general, it isn't possible to know which
2618 @file{.class} files were generated from which @file{.java} files -- so
2619 it would be impossible to know which files to install where.
2620
2621
2622 @node Documentation, Install, Other GNU Tools, Top
2623 @chapter Building documentation
2624
2625 Currently Automake provides support for Texinfo and man pages.
2626
2627 @menu
2628 * Texinfo::                     Texinfo
2629 * Man pages::                   Man pages
2630 @end menu
2631
2632
2633 @node Texinfo, Man pages, Documentation, Documentation
2634 @section Texinfo
2635
2636 @cindex _TEXINFOS primary, defined
2637 @cindex TEXINFOS primary, defined
2638 @cindex Primary variable, TEXINFOS
2639
2640 If the current directory contains Texinfo source, you must declare it
2641 with the @samp{TEXINFOS} primary.  Generally Texinfo files are converted
2642 into info, and thus the @code{info_TEXINFOS} macro is most commonly used
2643 here.  Note that any Texinfo source file must end in the @file{.texi} or
2644 @file{.texinfo} extension.
2645 @vindex TEXINFOS
2646 @vindex info_TEXINFOS
2647
2648 @cindex Texinfo macro, VERSION
2649 @cindex Texinfo macro, UPDATED
2650 @cindex Texinfo macro, EDITION
2651
2652 @cindex VERSION Texinfo macro
2653 @cindex UPDATED Texinfo macro
2654 @cindex EDITION Texinfo macro
2655
2656 @cindex mdate-sh
2657
2658 If the @file{.texi} file @code{@@include}s @file{version.texi}, then
2659 that file will be automatically generated.  The file @file{version.texi}
2660 defines three Texinfo macros you can reference: @code{EDITION},
2661 @code{VERSION}, and @code{UPDATED}.  The first two hold the version
2662 number of your package (but are kept separate for clarity); the last is
2663 the date the primary file was last modified.  The @file{version.texi}
2664 support requires the @code{mdate-sh} program; this program is supplied
2665 with Automake and automatically included when @code{automake} is invoked
2666 with the @code{--add-missing} option.
2667
2668 Sometimes an info file actually depends on more than one @file{.texi}
2669 file.  For instance, in GNU Hello, @file{hello.texi} includes the file
2670 @file{gpl.texi}.  You can tell Automake about these dependencies using
2671 the @code{@var{texi}_TEXINFOS} variable.  Here is how GNU Hello does it:
2672 @vindex TEXINFOS
2673 @vindex _TEXINFOS
2674
2675 @example
2676 info_TEXINFOS = hello.texi
2677 hello_TEXINFOS = gpl.texi
2678 @end example
2679
2680 @cindex texinfo.tex
2681
2682 By default, Automake requires the file @file{texinfo.tex} to appear in
2683 the same directory as the Texinfo source.  However, if you used
2684 @code{AC_CONFIG_AUX_DIR} in @file{configure.in} (@pxref{Input, , Finding
2685 `configure' Input, autoconf, The Autoconf Manual}), then
2686 @file{texinfo.tex} is looked for there.  Automake supplies
2687 @file{texinfo.tex} if @samp{--add-missing} is given.
2688
2689 @vindex TEXINFO_TEX
2690
2691 If your package has Texinfo files in many directories, you can use the
2692 variable @code{TEXINFO_TEX} to tell Automake where to find the canonical
2693 @file{texinfo.tex} for your package.  The value of this variable should
2694 be the relative path from the current @file{Makefile.am} to
2695 @file{texinfo.tex}:
2696
2697 @example
2698 TEXINFO_TEX = ../doc/texinfo.tex
2699 @end example
2700
2701 @opindex no-texinfo.tex
2702
2703 The option @samp{no-texinfo.tex} can be used to eliminate the
2704 requirement for @file{texinfo.tex}.  Use of the variable
2705 @code{TEXINFO_TEX} is preferable, however, because that allows the
2706 @code{dvi} target to still work.
2707
2708 @cindex Target, install-info
2709 @cindex Target, noinstall-info
2710 @cindex install-info target
2711 @cindex noinstall-info target
2712
2713 @opindex no-installinfo
2714 @trindex install-info
2715
2716 Automake generates an @code{install-info} target; some people apparently
2717 use this.  By default, info pages are installed by @samp{make install}.
2718 This can be prevented via the @code{no-installinfo} option.
2719
2720
2721 @node Man pages,  , Texinfo, Documentation
2722 @section Man pages
2723
2724 @cindex _MANS primary, defined
2725 @cindex MANS primary, defined
2726 @cindex Primary variable, MANS
2727
2728 A package can also include man pages (but see the GNU standards on this
2729 matter, @ref{Man Pages, , , standards, The GNU Coding Standards}.)  Man
2730 pages are declared using the @samp{MANS} primary.  Generally the
2731 @code{man_MANS} macro is used.  Man pages are automatically installed in
2732 the correct subdirectory of @code{mandir}, based on the file extension.
2733 They are not automatically included in the distribution.
2734 @vindex MANS
2735 @vindex man_MANS
2736
2737 @cindex Target, install-man
2738 @cindex Target, noinstall-man
2739 @cindex install-man target
2740 @cindex noinstall-man target
2741
2742 @c Use @samp{make install} per documentation: (texi)code.
2743 By default, man pages are installed by @samp{make install}.  However,
2744 since the GNU project does not require man pages, many maintainers do
2745 not expend effort to keep the man pages up to date.  In these cases, the
2746 @code{no-installman} option will prevent the man pages from being
2747 installed by default.  The user can still explicitly install them via
2748 @samp{make install-man}.
2749 @opindex no-installman
2750 @trindex install-man
2751
2752 Here is how the documentation is handled in GNU @code{cpio} (which
2753 includes both Texinfo documentation and man pages):
2754
2755 @example
2756 info_TEXINFOS = cpio.texi
2757 man_MANS = cpio.1 mt.1
2758 EXTRA_DIST = $(man_MANS)
2759 @end example
2760
2761 Texinfo source and info pages are all considered to be source for the
2762 purposes of making a distribution.
2763
2764 Man pages are not currently considered to be source, because it is not
2765 uncommon for man pages to be automatically generated.  For the same
2766 reason, they are not automatically included in the distribution.
2767
2768
2769 @node Install, Clean, Documentation, Top
2770 @chapter What Gets Installed
2771
2772 @cindex Installation support
2773 @cindex make install support
2774
2775 Naturally, Automake handles the details of actually installing your
2776 program once it has been built.  All @code{PROGRAMS}, @code{SCRIPTS},
2777 @code{LIBRARIES}, @code{LISP}, @code{DATA} and @code{HEADERS} are
2778 automatically installed in the appropriate places.
2779
2780 Automake also handles installing any specified info and man pages.
2781
2782 Automake generates separate @code{install-data} and @code{install-exec}
2783 targets, in case the installer is installing on multiple machines which
2784 share directory structure---these targets allow the machine-independent
2785 parts to be installed only once.  The @code{install} target depends on
2786 both of these targets.
2787 @trindex install-data
2788 @trindex install-exec
2789 @trindex install
2790
2791 Automake also generates an @code{uninstall} target, an
2792 @code{installdirs} target, and an @code{install-strip} target.
2793 @trindex uninstall
2794 @trindex installdirs
2795 @trindex install-strip
2796
2797 It is possible to extend this mechanism by defining an
2798 @code{install-exec-local} or @code{install-data-local} target.  If these
2799 targets exist, they will be run at @samp{make install} time.
2800 @trindex install-exec-local
2801 @trindex install-data-local
2802
2803 Variables using the standard directory prefixes @samp{data},
2804 @samp{info}, @samp{man}, @samp{include}, @samp{oldinclude},
2805 @samp{pkgdata}, or @samp{pkginclude} (e.g. @samp{data_DATA}) are
2806 installed by @samp{install-data}.
2807
2808 Variables using the standard directory prefixes @samp{bin}, @samp{sbin},
2809 @samp{libexec}, @samp{sysconf}, @samp{localstate}, @samp{lib}, or
2810 @samp{pkglib} (e.g. @samp{bin_PROGRAMS}) are installed by
2811 @samp{install-exec}.
2812
2813 Any variable using a user-defined directory prefix with @samp{exec} in
2814 the name (e.g. @samp{myexecbin_PROGRAMS} is installed by
2815 @samp{install-exec}.  All other user-defined prefixes are installed by
2816 @samp{install-data}.
2817
2818 @vindex DESTDIR
2819 Automake generates support for the @samp{DESTDIR} variable in all
2820 install rules.  @samp{DESTDIR} is used during the @samp{make install}
2821 step to relocate install objects into a staging area.  Each object and
2822 path is prefixed with the value of @samp{DESTDIR} before being copied
2823 into the install area.  Here is an example of typical DESTDIR usage:
2824
2825 @example
2826 make DESTDIR=/tmp/staging install
2827 @end example
2828
2829 This places install objects in a directory tree built under
2830 @file{/tmp/staging}.  If @file{/gnu/bin/foo} and
2831 @file{/gnu/share/aclocal/foo.m4} are to be installed, the above command
2832 would install @file{/tmp/staging/gnu/bin/foo} and
2833 @file{/tmp/staging/gnu/share/aclocal/foo.m4}.
2834
2835 This feature is commonly used to build install images and packages.  For
2836 more information, see @ref{Makefile Conventions, , , standards, The GNU
2837 Coding Standards}.
2838
2839
2840 @node Clean, Dist, Install, Top
2841 @chapter What Gets Cleaned
2842
2843 @cindex make clean support
2844
2845 The GNU Makefile Standards specify a number of different clean rules.
2846 @c FIXME xref
2847 Generally the files that can be cleaned are determined automatically by
2848 Automake.  Of course, Automake also recognizes some variables that can
2849 be defined to specify additional files to clean.  These variables are
2850 @code{MOSTLYCLEANFILES}, @code{CLEANFILES}, @code{DISTCLEANFILES}, and
2851 @code{MAINTAINERCLEANFILES}.
2852 @vindex MOSTLYCLEANFILES
2853 @vindex CLEANFILES
2854 @vindex DISTCLEANFILES
2855 @vindex MAINTAINERCLEANFILES
2856
2857
2858 @node Dist, Tests, Clean, Top
2859 @chapter What Goes in a Distribution
2860
2861 @cindex make dist
2862 @cindex make distcheck
2863
2864 The @code{dist} target in the generated @file{Makefile.in} can be used
2865 to generate a gzip'd @code{tar} file for distribution.  The tar file is
2866 named based on the @samp{PACKAGE} and @samp{VERSION} variables; more
2867 precisely it is named @samp{@var{package}-@var{version}.tar.gz}.
2868 @cvindex PACKAGE
2869 @cvindex VERSION
2870 @trindex dist
2871 You can use the @code{make} variable @samp{GZIP_ENV} to control how gzip
2872 is run.  The default setting is @samp{--best}.
2873
2874 For the most part, the files to distribute are automatically found by
2875 Automake: all source files are automatically included in a distribution,
2876 as are all @file{Makefile.am}s and @file{Makefile.in}s.  Automake also
2877 has a built-in list of commonly used files which, if present in the
2878 current directory, are automatically included.  This list is printed by
2879 @samp{automake --help}.  Also, files which are read by @code{configure}
2880 (i.e. the source files corresponding to the files specified in the
2881 @code{AC_OUTPUT} invocation) are automatically distributed.
2882
2883 Still, sometimes there are files which must be distributed, but which
2884 are not covered in the automatic rules.  These files should be listed in
2885 the @code{EXTRA_DIST} variable.  You can mention files from
2886 subdirectories in @code{EXTRA_DIST}.  You can also mention a directory
2887 there; in this case the entire directory will be recursively copied into
2888 the distribution.
2889 @vindex EXTRA_DIST
2890
2891 Sometimes you need tighter control over what does @emph{not} go into the
2892 distribution; for instance you might have source files which are
2893 generated and which you do not want to distribute.  In this case
2894 Automake gives fine-grained control using the @samp{dist} and
2895 @samp{nodist} prefixes.  Any primary or @samp{_SOURCES} variable can be
2896 prefixed with @samp{dist_} to add the listed files to the distribution.
2897 Similarly, @samp{nodist_} can be used to omit the files from the
2898 distribution.
2899 @vindex dist_
2900 @vindex nodist_
2901
2902 As an example, here is how you would cause some data to be distributed
2903 while leaving some source code out of the distribution:
2904
2905 @example
2906 dist_data_DATA = distribute-this
2907 bin_PROGRAMS = foo
2908 nodist_foo_SOURCES = do-not-distribute.c
2909 @end example
2910
2911 If you define @code{SUBDIRS}, Automake will recursively include the
2912 subdirectories in the distribution.  If @code{SUBDIRS} is defined
2913 conditionally (@pxref{Conditionals}), Automake will normally include all
2914 directories that could possibly appear in @code{SUBDIRS} in the
2915 distribution.  If you need to specify the set of directories
2916 conditionally, you can set the variable @code{DIST_SUBDIRS} to the exact
2917 list of subdirectories to include in the distribution.
2918 @vindex DIST_SUBDIRS
2919
2920 @trindex dist-hook
2921
2922 Occasionally it is useful to be able to change the distribution before
2923 it is packaged up.  If the @code{dist-hook} target exists, it is run
2924 after the distribution directory is filled, but before the actual tar
2925 (or shar) file is created.  One way to use this is for distributing
2926 files in subdirectories for which a new @file{Makefile.am} is overkill:
2927
2928 @example
2929 dist-hook:
2930         mkdir $(distdir)/random
2931         cp -p $(srcdir)/random/a1 $(srcdir)/random/a2 $(distdir)/random
2932 @end example
2933
2934 Automake also generates a @code{distcheck} target which can be of help
2935 to ensure that a given distribution will actually work.
2936 @code{distcheck} makes a distribution, and then tries to do a
2937 @code{VPATH} build.
2938 @trindex distcheck
2939 @c FIXME: document distcheck-hook here
2940
2941
2942 @node Tests, Options, Dist, Top
2943 @chapter Support for test suites
2944
2945 @cindex Test suites
2946 @cindex make check
2947
2948 Automake supports two forms of test suites.
2949
2950 If the variable @code{TESTS} is defined, its value is taken to be a list
2951 of programs to run in order to do the testing.  The programs can either
2952 be derived objects or source objects; the generated rule will look both
2953 in @code{srcdir} and @file{.}.  Programs needing data files should look
2954 for them in @code{srcdir} (which is both an environment variable and a
2955 make variable) so they work when building in a separate directory
2956 (@pxref{Build Directories, , Build Directories , autoconf, The Autoconf
2957 Manual}), and in particular for the @code{distcheck} target
2958 (@pxref{Dist}).
2959
2960 @cindex Exit status 77, special interpretation
2961
2962 The number of failures will be printed at the end of the run.  If a
2963 given test program exits with a status of 77, then its result is ignored
2964 in the final count.  This feature allows non-portable tests to be
2965 ignored in environments where they don't make sense.
2966
2967 The variable @code{TESTS_ENVIRONMENT} can be used to set environment
2968 variables for the test run; the environment variable @code{srcdir} is
2969 set in the rule.  If all your test programs are scripts, you can also
2970 set @code{TESTS_ENVIRONMENT} to an invocation of the shell (e.g.
2971 @samp{$(SHELL) -x}); this can be useful for debugging the tests.
2972 @vindex TESTS
2973 @vindex TESTS_ENVIRONMENT
2974
2975 If @uref{ftp://prep.ai.mit.edu/pub/gnu/dejagnu-1.3.tar.gz,
2976 @samp{dejagnu}} appears in @code{AUTOMAKE_OPTIONS}, then a
2977 @code{dejagnu}-based test suite is assumed.  The value of the variable
2978 @code{DEJATOOL} is passed as the @code{--tool} argument to
2979 @code{runtest}; it defaults to the name of the package.
2980
2981 The variable @code{RUNTESTDEFAULTFLAGS} holds the @code{--tool} and
2982 @code{--srcdir} flags that are passed to dejagnu by default; this can be
2983 overridden if necessary.
2984 @vindex RUNTESTDEFAULTFLAGS
2985
2986 The variables @code{EXPECT}, @code{RUNTEST} and @code{RUNTESTFLAGS} can
2987 also be overridden to provide project-specific values.  For instance,
2988 you will need to do this if you are testing a compiler toolchain,
2989 because the default values do not take into account host and target
2990 names.
2991 @opindex dejagnu
2992 @vindex DEJATOOL
2993 @vindex EXPECT
2994 @vindex RUNTEST
2995 @vindex RUNTESTFLAGS
2996 @c FIXME xref dejagnu
2997
2998 If you're not using dejagnu, you may define the variable
2999 @samp{XFAIL_TESTS} to a list of tests (usually a subset of @samp{TESTS})
3000 that are expected to fail.  This will reverse the result of those tests.
3001
3002 In either case, the testing is done via @samp{make check}.
3003
3004
3005 @node Options, Miscellaneous, Tests, Top
3006 @chapter Changing Automake's Behavior
3007
3008 Various features of Automake can be controlled by options in the
3009 @file{Makefile.am}.  Such options are listed in a special variable named
3010 @code{AUTOMAKE_OPTIONS}.  Currently understood options are:
3011 @vindex AUTOMAKE_OPTIONS
3012
3013 @table @asis
3014 @item @code{gnits}
3015 @itemx @code{gnu}
3016 @itemx @code{foreign}
3017 @item @code{cygnus}
3018 @cindex Option, gnits
3019 @cindex Option, gnu
3020 @cindex Option, foreign
3021 @cindex Option, cygnus
3022
3023 Set the strictness as appropriate.  The @code{gnits} option also implies
3024 @code{readme-alpha} and @code{check-news}.
3025
3026 @item @code{ansi2knr}
3027 @itemx @code{path/ansi2knr}
3028 @cindex Option, ansi2knr
3029 Turn on automatic de-ANSI-fication.  @xref{ANSI}.  If preceded by a
3030 path, the generated @file{Makefile.in} will look in the specified
3031 directory to find the @file{ansi2knr} program.  Generally the path
3032 should be a relative path to another directory in the same distribution
3033 (though Automake currently does not check this).
3034
3035 @item @code{check-news}
3036 @cindex Option, check-news
3037 Cause @code{make dist} to fail unless the current version number appears
3038 in the first few lines of the @file{NEWS} file.
3039
3040 @item @code{dejagnu}
3041 @cindex Option, dejagnu
3042 Cause @code{dejagnu}-specific rules to be generated.  @xref{Tests}.
3043
3044 @item @code{dist-bzip2}
3045 @cindex Option, dist-bzip2
3046 Generate a @code{dist-bzip2} target as well as the ordinary @code{dist}
3047 target.  This new target will create a bzip2 tar archive of the
3048 distribution.  bzip2 archives are frequently smaller than even gzipped
3049 archives.
3050 @trindex dist-bzip2
3051
3052 @item @code{dist-shar}
3053 @cindex Option, dist-shar
3054 Generate a @code{dist-shar} target as well as the ordinary @code{dist}
3055 target.  This new target will create a shar archive of the
3056 distribution.
3057 @trindex dist-shar
3058
3059 @item @code{dist-zip}
3060 @cindex Option, dist-zip
3061 Generate a @code{dist-zip} target as well as the ordinary @code{dist}
3062 target.  This new target will create a zip archive of the distribution.
3063 @trindex dist-zip
3064
3065 @item @code{dist-tarZ}
3066 @cindex Option, dist-tarZ
3067 Generate a @code{dist-tarZ} target as well as the ordinary @code{dist}
3068 target.  This new target will create a compressed tar archive of the
3069 distribution.
3070 @trindex dist-tarZ
3071
3072 @item @code{no-dependencies}
3073 @cindex Option, no-dependencies
3074 This is similar to using @samp{--include-deps} on the command line, but
3075 is useful for those situations where you don't have the necessary bits
3076 to make automatic dependency tracking work @xref{Dependencies}.  In this
3077 case the effect is to effectively disable automatic dependency tracking.
3078
3079 @item @code{no-installinfo}
3080 @cindex Option, no-installinfo
3081 The generated @file{Makefile.in} will not cause info pages to be built
3082 or installed by default.  However, @code{info} and @code{install-info}
3083 targets will still be available.  This option is disallowed at
3084 @samp{GNU} strictness and above.
3085 @trindex info
3086 @trindex install-info
3087
3088 @item @code{no-installman}
3089 @cindex Option, no-installman
3090 The generated @file{Makefile.in} will not cause man pages to be
3091 installed by default.  However, an @code{install-man} target will still
3092 be available for optional installation.  This option is disallowed at
3093 @samp{GNU} strictness and above.
3094 @trindex install-man
3095
3096 @item @code{no-texinfo.tex}
3097 @cindex Option, no-texinfo
3098 Don't require @file{texinfo.tex}, even if there are texinfo files in
3099 this directory.
3100
3101 @item @code{readme-alpha}
3102 @cindex Option, readme-alpha
3103 If this release is an alpha release, and the file @file{README-alpha}
3104 exists, then it will be added to the distribution.  If this option is
3105 given, version numbers are expected to follow one of two forms.  The
3106 first form is @samp{@var{MAJOR}.@var{MINOR}.@var{ALPHA}}, where each
3107 element is a number; the final period and number should be left off for
3108 non-alpha releases.  The second form is
3109 @samp{@var{MAJOR}.@var{MINOR}@var{ALPHA}}, where @var{ALPHA} is a
3110 letter; it should be omitted for non-alpha releases.
3111
3112 @item @var{version}
3113 @cindex Option, version
3114 A version number (e.g. @samp{0.30}) can be specified.  If Automake is not
3115 newer than the version specified, creation of the @file{Makefile.in}
3116 will be suppressed.
3117 @end table
3118
3119 Unrecognized options are diagnosed by @code{automake}.
3120
3121
3122 @node Miscellaneous, Include, Options, Top
3123 @chapter Miscellaneous Rules
3124
3125 There are a few rules and variables that didn't fit anywhere else.
3126
3127 @menu
3128 * Tags::                        Interfacing to etags and mkid
3129 * Suffixes::                    Handling new file extensions
3130 @end menu
3131
3132
3133 @node Tags, Suffixes, Miscellaneous, Miscellaneous
3134 @section Interfacing to @code{etags}
3135
3136 @cindex TAGS support
3137
3138 Automake will generate rules to generate @file{TAGS} files for use with
3139 GNU Emacs under some circumstances.
3140
3141 If any C, C++ or Fortran 77 source code or headers are present, then
3142 @code{tags} and @code{TAGS} targets will be generated for the directory.
3143 @trindex tags
3144
3145 At the topmost directory of a multi-directory package, a @code{tags}
3146 target file will be generated which, when run, will generate a
3147 @file{TAGS} file that includes by reference all @file{TAGS} files from
3148 subdirectories.
3149
3150 Also, if the variable @code{ETAGS_ARGS} is defined, a @code{tags} target
3151 will be generated.  This variable is intended for use in directories
3152 which contain taggable source that @code{etags} does not understand.
3153 @vindex ETAGS_ARGS
3154
3155 Here is how Automake generates tags for its source, and for nodes in its
3156 Texinfo file:
3157
3158 @example
3159 ETAGS_ARGS = automake.in --lang=none \
3160  --regex='/^@@node[ \t]+\([^,]+\)/\1/' automake.texi
3161 @end example
3162
3163 If you add filenames to @samp{ETAGS_ARGS}, you will probably also
3164 want to set @samp{TAGS_DEPENDENCIES}.  The contents of this variable
3165 are added directly to the dependencies for the @code{tags} target.
3166 @vindex TAGS_DEPENDENCIES
3167
3168 Automake will also generate an @code{ID} target which will run
3169 @code{mkid} on the source.  This is only supported on a
3170 directory-by-directory basis.
3171 @trindex id
3172
3173
3174 @node Suffixes,  , Tags, Miscellaneous
3175 @section Handling new file extensions
3176
3177 @cindex Adding new SUFFIXES
3178 @cindex SUFFIXES, adding
3179
3180 It is sometimes useful to introduce a new implicit rule to handle a file
3181 type that Automake does not know about.  If this is done, you must
3182 notify GNU Make of the new suffixes.  This can be done by putting a list
3183 of new suffixes in the @code{SUFFIXES} variable.
3184 @vindex SUFFIXES
3185
3186 For instance, currently Automake does not provide any Java support.  If
3187 you wrote a macro to generate @samp{.class} files from @samp{.java}
3188 source files, you would also need to add these suffixes to the list:
3189
3190 @example
3191 SUFFIXES = .java .class
3192 @end example
3193
3194
3195 @node Include, Conditionals, Miscellaneous, Top
3196 @chapter Include
3197
3198 @cmindex include
3199 To include another file (perhaps for common rules),
3200 the following syntax is supported:
3201
3202 include ($(srcdir)|$(top_srcdir))/filename
3203
3204 Using files in the current directory:
3205 @example
3206 include $(srcdir)/Makefile.extra
3207 @end example
3208
3209 @example
3210 include Makefile.generated
3211 @end example
3212
3213 Using a file in the top level directory:
3214 @example
3215 include $(top_srcdir)/filename
3216 @end example
3217
3218
3219 @node Conditionals, Gnits, Include, Top
3220 @chapter Conditionals
3221
3222 @cindex Conditionals
3223
3224 Automake supports a simple type of conditionals.
3225
3226 @cvindex AM_CONDITIONAL
3227 Before using a conditional, you must define it by using
3228 @code{AM_CONDITIONAL} in the @code{configure.in} file (@pxref{Macros}).
3229 The @code{AM_CONDITIONAL} macro takes two arguments.
3230
3231 The first argument to @code{AM_CONDITIONAL} is the name of the
3232 conditional.  This should be a simple string starting with a letter and
3233 containing only letters, digits, and underscores.
3234
3235 The second argument to @code{AM_CONDITIONAL} is a shell condition,
3236 suitable for use in a shell @code{if} statement.  The condition is
3237 evaluated when @code{configure} is run.
3238
3239 @cindex --enable-debug, example
3240 @cindex Example conditional --enable-debug
3241 @cindex Conditional example,  --enable-debug
3242
3243 Conditionals typically depend upon options which the user provides to
3244 the @code{configure} script.  Here is an example of how to write a
3245 conditional which is true if the user uses the @samp{--enable-debug}
3246 option.
3247
3248 @example
3249 AC_ARG_ENABLE(debug,
3250 [  --enable-debug    Turn on debugging],
3251 [case "$@{enableval@}" in
3252   yes) debug=true ;;
3253   no)  debug=false ;;
3254   *) AC_MSG_ERROR(bad value $@{enableval@} for --enable-debug) ;;
3255 esac],[debug=false])
3256 AM_CONDITIONAL(DEBUG, test x$debug = xtrue)
3257 @end example
3258
3259 Here is an example of how to use that conditional in @file{Makefile.am}:
3260
3261 @cmindex if
3262 @cmindex endif
3263 @cmindex else
3264
3265 @example
3266 if DEBUG
3267 DBG = debug
3268 else
3269 DBG =
3270 endif
3271 noinst_PROGRAMS = $(DBG)
3272 @end example
3273
3274 This trivial example could also be handled using EXTRA_PROGRAMS
3275 (@pxref{A Program}).
3276
3277 You may only test a single variable in an @code{if} statement.  The
3278 @code{else} statement may be omitted.  Conditionals may be nested to any
3279 depth.
3280
3281 Note that conditionals in Automake are not the same as conditionals in
3282 GNU Make.  Automake conditionals are checked at configure time by the
3283 @file{configure} script, and affect the translation from
3284 @file{Makefile.in} to @file{Makefile}.  They are based on options passed
3285 to @file{configure} and on results that @file{configure} has discovered
3286 about the host system.  GNU Make conditionals are checked at @code{make}
3287 time, and are based on variables passed to the make program or defined
3288 in the @file{Makefile}.
3289
3290 Automake conditionals will work with any make program.
3291
3292
3293 @node Gnits, Cygnus, Conditionals, Top
3294 @chapter The effect of @code{--gnu} and @code{--gnits}
3295
3296 @cindex --gnu, required files
3297 @cindex --gnu, complete description
3298
3299 The @samp{--gnu} option (or @samp{gnu} in the @samp{AUTOMAKE_OPTIONS}
3300 variable) causes @code{automake} to check the following:
3301
3302 @itemize @bullet
3303 @item
3304 The files @file{INSTALL}, @file{NEWS}, @file{README}, @file{COPYING},
3305 @file{AUTHORS}, and @file{ChangeLog} are required at the topmost
3306 directory of the package.
3307
3308 @item
3309 The options @samp{no-installman} and @samp{no-installinfo} are
3310 prohibited.
3311 @end itemize
3312
3313 Note that this option will be extended in the future to do even more
3314 checking; it is advisable to be familiar with the precise requirements
3315 of the GNU standards.  Also, @samp{--gnu} can require certain
3316 non-standard GNU programs to exist for use by various maintainer-only
3317 targets; for instance in the future @code{pathchk} might be required for
3318 @samp{make dist}.
3319
3320 @cindex --gnits, complete description
3321
3322 The @samp{--gnits} option does everything that @samp{--gnu} does, and
3323 checks the following as well:
3324
3325 @itemize @bullet
3326 @item
3327 @samp{make dist} will check to make sure the @file{NEWS} file has been
3328 updated to the current version.
3329
3330 @item
3331 @samp{VERSION} is checked to make sure its format complies with Gnits
3332 standards.
3333 @c FIXME xref when standards are finished
3334
3335 @item
3336 @cindex README-alpha
3337 If @samp{VERSION} indicates that this is an alpha release, and the file
3338 @file{README-alpha} appears in the topmost directory of a package, then
3339 it is included in the distribution.  This is done in @samp{--gnits}
3340 mode, and no other, because this mode is the only one where version
3341 number formats are constrained, and hence the only mode where Automake
3342 can automatically determine whether @file{README-alpha} should be
3343 included.
3344
3345 @item
3346 The file @file{THANKS} is required.
3347 @end itemize
3348
3349
3350 @node Cygnus, Extending, Gnits, Top
3351 @chapter The effect of @code{--cygnus}
3352
3353 @cindex Cygnus strictness
3354
3355 Cygnus Solutions has slightly different rules for how a
3356 @file{Makefile.in} is to be constructed.  Passing @samp{--cygnus} to
3357 @code{automake} will cause any generated @file{Makefile.in} to comply
3358 with Cygnus rules.
3359
3360 Here are the precise effects of @samp{--cygnus}:
3361
3362 @itemize @bullet
3363 @item
3364 Info files are always created in the build directory, and not in the
3365 source directory.
3366
3367 @item
3368 @file{texinfo.tex} is not required if a Texinfo source file is
3369 specified.  The assumption is that the file will be supplied, but in a
3370 place that Automake cannot find.  This assumption is an artifact of how
3371 Cygnus packages are typically bundled.
3372
3373 @item
3374 @samp{make dist} will look for files in the build directory as well as
3375 the source directory.  This is required to support putting info files
3376 into the build directory.
3377
3378 @item
3379 Certain tools will be searched for in the build tree as well as in the
3380 user's @samp{PATH}.  These tools are @code{runtest}, @code{expect},
3381 @code{makeinfo} and @code{texi2dvi}.
3382
3383 @item
3384 @code{--foreign} is implied.
3385
3386 @item
3387 The options @samp{no-installinfo} and @samp{no-dependencies} are
3388 implied.
3389
3390 @item
3391 The macros @samp{AM_MAINTAINER_MODE} and @samp{AM_CYGWIN32} are
3392 required.
3393
3394 @item
3395 The @code{check} target doesn't depend on @code{all}.
3396 @end itemize
3397
3398 GNU maintainers are advised to use @samp{gnu} strictness in preference
3399 to the special Cygnus mode.
3400
3401
3402 @node Extending, Distributing, Cygnus, Top
3403 @chapter When Automake Isn't Enough
3404
3405 Automake's implicit copying semantics means that many problems can be
3406 worked around by simply adding some @code{make} targets and rules to
3407 @file{Makefile.in}.  Automake will ignore these additions.
3408
3409 @cindex -local targets
3410 @cindex local targets
3411
3412 There are some caveats to doing this.  Although you can overload a
3413 target already used by Automake, it is often inadvisable, particularly
3414 in the topmost directory of a non-flat package.  However, various useful
3415 targets have a @samp{-local} version you can specify in your
3416 @file{Makefile.in}.  Automake will supplement the standard target with
3417 these user-supplied targets.
3418
3419 @trindex  all-local
3420 @trindex  info-local
3421 @trindex  dvi-local
3422 @trindex  check-local
3423 @trindex  install-data-local
3424 @trindex  install-exec-local
3425 @trindex  uninstall-local
3426 @trindex  mostlyclean-local
3427 @trindex  clean-local
3428 @trindex  distclean-local
3429
3430 The targets that support a local version are @code{all}, @code{info},
3431 @code{dvi}, @code{check}, @code{install-data}, @code{install-exec},
3432 @code{uninstall}, and the various @code{clean} targets
3433 (@code{mostlyclean}, @code{clean}, @code{distclean}, and
3434 @code{maintainer-clean}).  Note that there are no
3435 @code{uninstall-exec-local} or @code{uninstall-data-local} targets; just
3436 use @code{uninstall-local}.  It doesn't make sense to uninstall just
3437 data or just executables.
3438 @trindex all
3439 @trindex info
3440 @trindex dvi
3441 @trindex check
3442 @trindex install-data
3443 @trindex install-exec
3444 @trindex uninstall
3445
3446 For instance, here is one way to install a file in @file{/etc}:
3447
3448 @example
3449 install-data-local:
3450         $(INSTALL_DATA) $(srcdir)/afile /etc/afile
3451 @end example
3452
3453 @cindex -hook targets
3454 @cindex hook targets
3455
3456 Some targets also have a way to run another target, called a @dfn{hook},
3457 after their work is done.  The hook is named after the principal target,
3458 with @samp{-hook} appended.  The targets allowing hooks are
3459 @code{install-data}, @code{install-exec}, @code{dist}, and
3460 @code{distcheck}.
3461 @trindex install-data-hook
3462 @trindex install-exec-hook
3463 @trindex dist-hook
3464
3465 For instance, here is how to create a hard link to an installed program:
3466
3467 @example
3468 install-exec-hook:
3469         ln $(bindir)/program $(bindir)/proglink
3470 @end example
3471
3472 @c FIXME should include discussion of variables you can use in these
3473 @c rules
3474
3475
3476 @node Distributing, Future, Extending, Top
3477 @chapter Distributing @file{Makefile.in}s
3478
3479 Automake places no restrictions on the distribution of the resulting
3480 @file{Makefile.in}s.  We still encourage software authors to distribute
3481 their work under terms like those of the GPL, but doing so is not
3482 required to use Automake.
3483
3484 Some of the files that can be automatically installed via the
3485 @code{--add-missing} switch do fall under the GPL; examine each file
3486 to see.
3487
3488
3489 @node Future, Macro and Variable Index, Distributing, Top
3490 @chapter Some ideas for the future
3491
3492 @cindex Future directions
3493
3494 Here are some things that might happen in the future:
3495
3496 @itemize @bullet
3497 @item
3498 HTML support.
3499
3500 @item
3501 The output will be cleaned up.  For instance, only variables which are
3502 actually used will appear in the generated @file{Makefile.in}.
3503
3504 @item
3505 There will be support for automatically recoding a distribution.  The
3506 intent is to allow a maintainer to use whatever character set is most
3507 convenient locally, but for all distributions to be Unicode or
3508 @w{ISO 10646} with the UTF-8 encoding.
3509
3510 @cindex Guile rewrite
3511
3512 @item
3513 Rewrite in Guile.  This won't happen in the near future, but it will
3514 eventually happen.
3515 @end itemize
3516
3517
3518 @page
3519 @node Macro and Variable Index, General Index, Future, Top
3520 @unnumbered Macro and Variable Index
3521
3522 @printindex vr
3523
3524
3525 @page
3526 @node General Index,  , Macro and Variable Index, Top
3527 @unnumbered General Index
3528
3529 @printindex cp
3530
3531
3532 @page
3533 @contents
3534 @bye