Updated THANKS
[automake.git] / automake.texi
blob221199b4b2825d24d8af4eb46359014df3240dd5
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
8 @include version.texi
10 @dircategory GNU admin
11 @direntry
12 * automake: (automake).         Making Makefile.in's
13 @end direntry
15 @dircategory Individual utilities
16 @direntry
17 * aclocal: (automake)Invoking aclocal.          Generating aclocal.m4
18 @end direntry
20 @ifinfo
21 This file documents GNU automake @value{VERSION}
23 Copyright 1995, 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
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.
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
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.
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
48 @titlepage
49 @title GNU Automake
50 @subtitle For version @value{VERSION}, @value{UPDATED}
51 @author David MacKenzie and Tom Tromey
53 @page
54 @vskip 0pt plus 1filll
55 Copyright @copyright{} 1995, 1996, 2000 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 @*
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.
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.
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
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
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
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
101 @ifinfo
102 @node Top, Introduction, (dir), (dir)
103 @comment  node-name,  next,  previous,  up
104 @top GNU Automake
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}.
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
138 @end ifinfo
141 @node Introduction, Generalities, Top, Top
142 @chapter Introduction
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.
150 @cindex GNU Makefile standards
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).
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.
163 @cindex Constraints of Automake
164 @cindex Automake constraints
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.
171 @cindex Automake requirements
172 @cindex Requirements, Automake
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.
179 @cindex BUGS, reporting
180 @cindex Reporting BUGS
181 @cindex E-mail, bug reports
183 Mail suggestions and bug reports for Automake to
184 @email{bug-automake@@gnu.org}.
187 @node Generalities, Examples, Introduction, Top
188 @chapter General ideas
190 The following sections cover a few basic ideas that will help you
191 understand how Automake works.
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
202 @node General Operation, Depth, Generalities, Generalities
203 @section General Operation
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.
211 @cindex Non-standard targets
212 @cindex cvs-dist, non-standard example
213 @trindex cvs-dist
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.
222 @cindex GNU make extensions
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.
228 Automake tries to group comments with adjoining targets and macro
229 definitions in an intelligent way.
231 @cindex Make targets, overriding
232 @cindex Overriding make targets
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.
240 @cindex Macros, overriding
241 @cindex Overriding make macros
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.
250 @cindex Recursive operation of Automake
251 @cindex Automake, recursive operation
252 @cindex Example of recursive operation
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
258 @example
259 xs = a.c b.c
260 foo_SOURCES = c.c $(xs)
261 @end example
263 it would use the files @file{a.c}, @file{b.c}, and @file{c.c} as the
264 contents of @code{foo_SOURCES}.
266 @cindex ## (special Automake comment)
267 @cindex Special Automake comment
268 @cindex Comment, special to Automake
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.
274 It is customary to make the first line of @file{Makefile.am} read:
276 @cindex Makefile.am, first line
277 @cindex First line of Makefile.am
279 @example
280 ## Process this file with automake to produce Makefile.in
281 @end example
283 @c FIXME discuss putting a copyright into Makefile.am here?  I would but
284 @c I don't know quite what to say.
286 @c FIXME document customary ordering of Makefile.am here!
289 @node Depth, Strictness, General Operation, Generalities
290 @section Depth
292 @cindex Flat package
293 @cindex Package, Flat
294 @cindex Shallow package
295 @cindex Package, shallow
296 @cindex Deep package
297 @cindex Package, deep
299 @code{automake} supports three kinds of directory hierarchy:
300 @samp{flat}, @samp{shallow}, and @samp{deep}.
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
308 @cindex SUBDIRS, deep package
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.
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}).
323 @node Strictness, Uniform, Depth, Generalities
324 @section Strictness
326 @cindex Non-GNU packages
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.
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
340 To this end, Automake supports three levels of @dfn{strictness}---the
341 strictness indicating how stringently Automake should check standards
342 conformance.
344 The valid strictness levels are:
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.
355 @item gnu
356 Automake will check---as much as possible---for compliance to the GNU
357 standards for packages.  This is the default.
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
367 For more information on the precise implications of the strictness
368 level, see @ref{Gnits}.
371 @node Uniform, Canonicalization, Strictness, Generalities
372 @section The Uniform Naming Scheme
374 @cindex Uniform naming scheme
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.
382 @cindex _PROGRAMS primary variable
383 @cindex PROGRAMS primary variable
384 @cindex Primary variable, PROGRAMS
386 @cindex Primary variable, defined
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
394 @cindex pkglibdir, defined
395 @cindex pkgincludedir, defined
396 @cindex pkgdatadir, defined
398 @vindex pkglibdir
399 @vindex pkgincludedir
400 @vindex pkgdatadir
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{$(libdir)/@@PACKAGE@@}.
412 @cvindex PACKAGE
414 @cindex EXTRA_, prepending
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.
423 @cindex EXTRA_PROGRAMS, defined
424 @cindex Example, EXTRA_PROGRAMS
425 @cindex cpio example
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}:
431 @example
432 EXTRA_PROGRAMS = mt rmt
433 bin_PROGRAMS = cpio pax
434 sbin_PROGRAMS = @@PROGRAMS@@
435 @end example
437 Defining a primary variable without a prefix (e.g. @code{PROGRAMS}) is
438 an error.
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}.
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.
448 @cindex Extending list of installation directories
449 @cindex Installation directories, extending list
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}).
458 @cindex HTML support, example
460 For instance, until HTML support is part of Automake, you could use this
461 to install raw HTML documentation:
463 @example
464 htmldir = $(prefix)/html
465 html_DATA = automake.html
466 @end example
468 @cindex noinst primary prefix, definition
470 The special prefix @samp{noinst} indicates that the objects in question
471 should not be installed at all.
473 @cindex check primary prefix, definition
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.
478 Possible primary names are @samp{PROGRAMS}, @samp{LIBRARIES},
479 @samp{LISP}, @samp{PYTHON}, @samp{SCRIPTS}, @samp{DATA}, @samp{HEADERS},
480 @samp{MANS}, and @samp{TEXINFOS}.
481 @vindex PROGRAMS
482 @vindex LIBRARIES
483 @vindex LISP
484 @vindex PYTHON
485 @vindex SCRIPTS
486 @vindex DATA
487 @vindex HEADERS
488 @vindex MANS
489 @vindex TEXINFOS
492 @node Canonicalization,  , Uniform, Generalities
493 @section How derived variables are named
495 @cindex canonicalizing Automake macros
497 Sometimes a Makefile variable name is derived from some text the user
498 supplies.  For instance, program names are rewritten into Makefile macro
499 names.  Automake canonicalizes this text, so that it does not have to
500 follow Makefile macro naming rules.  All characters in the name except
501 for letters, numbers, and the underscore are turned into underscores
502 when making macro references.  For example, if your program is named
503 @code{sniff-glue}, the derived variable name would be
504 @code{sniff_glue_SOURCES}, not @code{sniff-glue_SOURCES}.
506 @node Examples, Invoking Automake, Generalities, Top
507 @chapter Some example packages
509 @menu
510 * Complete::                    A simple example, start to finish
511 * Hello::                       A classic program
512 * etags::                       Building etags and ctags
513 @end menu
516 @node Complete, Hello, Examples, Examples
517 @section A simple example, start to finish
519 @cindex Complete example
521 Let's suppose you just finished writing @code{zardoz}, a program to make
522 your head float from vortex to vortex.  You've been using Autoconf to
523 provide a portability framework, but your @file{Makefile.in}s have been
524 ad-hoc.  You want to make them bulletproof, so you turn to Automake.
526 @cindex AM_INIT_AUTOMAKE, example use
528 The first step is to update your @file{configure.in} to include the
529 commands that @code{automake} needs.  The way to do this is to add an
530 @code{AM_INIT_AUTOMAKE} call just after @code{AC_INIT}:
532 @example
533 AM_INIT_AUTOMAKE(zardoz, 1.0)
534 @end example
536 Since your program doesn't have any complicating factors (e.g., it
537 doesn't use @code{gettext}, it doesn't want to build a shared library),
538 you're done with this part.  That was easy!
540 @cindex aclocal program, introduction
541 @cindex aclocal.m4, preexisting
542 @cindex acinclude.m4, defined
544 Now you must regenerate @file{configure}.  But to do that, you'll need
545 to tell @code{autoconf} how to find the new macro you've used.  The
546 easiest way to do this is to use the @code{aclocal} program to generate
547 your @file{aclocal.m4} for you.  But wait... you already have an
548 @file{aclocal.m4}, because you had to write some hairy macros for your
549 program.  The @code{aclocal} program lets you put your own macros into
550 @file{acinclude.m4}, so simply rename and then run:
552 @example
553 mv aclocal.m4 acinclude.m4
554 aclocal
555 autoconf
556 @end example
558 @cindex zardoz example
560 Now it is time to write your @file{Makefile.am} for @code{zardoz}.
561 Since @code{zardoz} is a user program, you want to install it where the
562 rest of the user programs go.  Additionally, @code{zardoz} has some
563 Texinfo documentation.  Your @file{configure.in} script uses
564 @code{AC_REPLACE_FUNCS}, so you need to link against @samp{@@LIBOBJS@@}.
565 So here's what you'd write:
567 @example
568 bin_PROGRAMS = zardoz
569 zardoz_SOURCES = main.c head.c float.c vortex9.c gun.c
570 zardoz_LDADD = @@LIBOBJS@@
572 info_TEXINFOS = zardoz.texi
573 @end example
575 Now you can run @code{automake --add-missing} to generate your
576 @file{Makefile.in} and grab any auxiliary files you might need, and
577 you're done!
580 @node Hello, etags, Complete, Examples
581 @section A classic program
583 @cindex Example, GNU Hello
584 @cindex Hello example
585 @cindex GNU Hello, example
587 @uref{ftp://prep.ai.mit.edu/pub/gnu/hello-1.3.tar.gz, GNU hello} is
588 renowned for its classic simplicity and versatility.  This section shows
589 how Automake could be used with the GNU Hello package.  The examples
590 below are from the latest beta version of GNU Hello, but with all of the
591 maintainer-only code stripped out, as well as all copyright comments.
593 Of course, GNU Hello is somewhat more featureful than your traditional
594 two-liner.  GNU Hello is internationalized, does option processing, and
595 has a manual and a test suite.  GNU Hello is a deep package.
597 @cindex configure.in, from GNU Hello
598 @cindex GNU Hello, configure.in
599 @cindex Hello, configure.in
601 Here is the @file{configure.in} from GNU Hello:
603 @example
604 dnl Process this file with autoconf to produce a configure script.
605 AC_INIT(src/hello.c)
606 AM_INIT_AUTOMAKE(hello, 1.3.11)
607 AM_CONFIG_HEADER(config.h)
609 dnl Set of available languages.
610 ALL_LINGUAS="de fr es ko nl no pl pt sl sv"
612 dnl Checks for programs.
613 AC_PROG_CC
614 AC_ISC_POSIX
616 dnl Checks for libraries.
618 dnl Checks for header files.
619 AC_STDC_HEADERS
620 AC_HAVE_HEADERS(string.h fcntl.h sys/file.h sys/param.h)
622 dnl Checks for library functions.
623 AC_FUNC_ALLOCA
625 dnl Check for st_blksize in struct stat
626 AC_ST_BLKSIZE
628 dnl internationalization macros
629 AM_GNU_GETTEXT
630 AC_OUTPUT([Makefile doc/Makefile intl/Makefile po/Makefile.in \
631            src/Makefile tests/Makefile tests/hello],
632    [chmod +x tests/hello])
633 @end example
635 The @samp{AM_} macros are provided by Automake (or the Gettext library);
636 the rest are standard Autoconf macros.
639 The top-level @file{Makefile.am}:
641 @example
642 EXTRA_DIST = BUGS ChangeLog.O
643 SUBDIRS = doc intl po src tests
644 @end example
646 As you can see, all the work here is really done in subdirectories.
648 The @file{po} and @file{intl} directories are automatically generated
649 using @code{gettextize}; they will not be discussed here.
651 @cindex Texinfo file handling example
652 @cindex Example, handling Texinfo files
654 In @file{doc/Makefile.am} we see:
656 @example
657 info_TEXINFOS = hello.texi
658 hello_TEXINFOS = gpl.texi
659 @end example
661 This is sufficient to build, install, and distribute the GNU Hello
662 manual.
664 @cindex Regression test example
665 @cindex Example, regression test
667 Here is @file{tests/Makefile.am}:
669 @example
670 TESTS = hello
671 EXTRA_DIST = hello.in testdata
672 @end example
674 The script @file{hello} is generated by @code{configure}, and is the
675 only test case.  @code{make check} will run this test.
677 @cindex INCLUDES, example usage
679 Last we have @file{src/Makefile.am}, where all the real work is done:
681 @example
682 bin_PROGRAMS = hello
683 hello_SOURCES = hello.c version.c getopt.c getopt1.c getopt.h system.h 
684 hello_LDADD = @@INTLLIBS@@ @@ALLOCA@@
685 localedir = $(datadir)/locale
686 INCLUDES = -I../intl -DLOCALEDIR=\"$(localedir)\"
687 @end example
690 @node etags,  , Hello, Examples
691 @section Building etags and ctags
693 @cindex Example, ctags and etags
694 @cindex ctags Example
695 @cindex etags Example
697 Here is another, trickier example.  It shows how to generate two
698 programs (@code{ctags} and @code{etags}) from the same source file
699 (@file{etags.c}).  The difficult part is that each compilation of
700 @file{etags.c} requires different @code{cpp} flags.
702 @example
703 bin_PROGRAMS = etags ctags
704 ctags_SOURCES =
705 ctags_LDADD = ctags.o
707 etags.o: etags.c
708         $(COMPILE) -DETAGS_REGEXPS -c etags.c
710 ctags.o: etags.c
711         $(COMPILE) -DCTAGS -o ctags.o -c etags.c
712 @end example
714 Note that @code{ctags_SOURCES} is defined to be empty---that way no
715 implicit value is substituted.  The implicit value, however, is used to
716 generate @code{etags} from @file{etags.o}.
718 @code{ctags_LDADD} is used to get @file{ctags.o} into the link line.
719 @code{ctags_DEPENDENCIES} is generated by Automake.
721 The above rules won't work if your compiler doesn't accept both
722 @samp{-c} and @samp{-o}.  The simplest fix for this is to introduce a
723 bogus dependency (to avoid problems with a parallel @code{make}):
725 @example
726 etags.o: etags.c ctags.o
727         $(COMPILE) -DETAGS_REGEXPS -c etags.c
729 ctags.o: etags.c
730         $(COMPILE) -DCTAGS -c etags.c && mv etags.o ctags.o
731 @end example
733 Also, these explicit rules do not work if the de-ANSI-fication feature
734 is used (@pxref{ANSI}).  Supporting de-ANSI-fication requires a little
735 more work:
737 @example
738 etags._o: etags._c ctags.o
739         $(COMPILE) -DETAGS_REGEXPS -c etags.c
741 ctags._o: etags._c
742         $(COMPILE) -DCTAGS -c etags.c && mv etags._o ctags.o
743 @end example
746 @node Invoking Automake, configure, Examples, Top
747 @chapter Creating a @file{Makefile.in}
749 @cindex Multiple configure.in files
750 @cindex Invoking Automake
751 @cindex Automake, invoking
753 To create all the @file{Makefile.in}s for a package, run the
754 @code{automake} program in the top level directory, with no arguments.
755 @code{automake} will automatically find each appropriate
756 @file{Makefile.am} (by scanning @file{configure.in}; @pxref{configure})
757 and generate the corresponding @file{Makefile.in}.  Note that
758 @code{automake} has a rather simplistic view of what constitutes a
759 package; it assumes that a package has only one @file{configure.in}, at
760 the top.  If your package has multiple @file{configure.in}s, then you
761 must run @code{automake} in each directory holding a
762 @file{configure.in}.
764 You can optionally give @code{automake} an argument; @file{.am} is
765 appended to the argument and the result is used as the name of the input
766 file.  This feature is generally only used to automatically rebuild an
767 out-of-date @file{Makefile.in}.  Note that @code{automake} must always
768 be run from the topmost directory of a project, even if being used to
769 regenerate the @file{Makefile.in} in some subdirectory.  This is
770 necessary because @code{automake} must scan @file{configure.in}, and
771 because @code{automake} uses the knowledge that a @file{Makefile.in} is
772 in a subdirectory to change its behavior in some cases.
774 @cindex Automake options
775 @cindex Options, Automake
777 @code{automake} accepts the following options:
779 @cindex Extra files distributed with Automake
780 @cindex Files distributed with Automake
781 @cindex config.guess
783 @table @samp
784 @item -a
785 @itemx --add-missing
786 @opindex -a
787 @opindex --add-missing
788 Automake requires certain common files to exist in certain situations;
789 for instance @file{config.guess} is required if @file{configure.in} runs
790 @code{AC_CANONICAL_HOST}.  Automake is distributed with several of these
791 files; this option will cause the missing ones to be automatically added
792 to the package, whenever possible.  In general if Automake tells you a
793 file is missing, try using this option.  By default Automake tries to
794 make a symbolic link pointing to its own copy of the missing file; this
795 can be changed with @code{--copy}.
797 @item --amdir=@var{dir}
798 @opindex --amdir
799 Look for Automake data files in directory @var{dir} instead of in the
800 installation directory.  This is typically used for debugging.
802 @item --build-dir=@var{dir}
803 @opindex --build-dir
804 Tell Automake where the build directory is.  This option is used when
805 including dependencies into a @file{Makefile.in} generated by @code{make
806 dist}; it should not be used otherwise.
808 @item -c
809 @item --copy
810 When used with @code{--add-missing}, causes installed files to be
811 copied.  The default is to make a symbolic link.
813 @item --cygnus
814 @opindex --cygnus
815 Causes the generated @file{Makefile.in}s to follow Cygnus rules, instead
816 of GNU or Gnits rules.  For more information, see @ref{Cygnus}.
818 @item --force-missing
819 @opindex --force-missing
820 When used with @code{--add-missing}, causes standard files to be rebuilt
821 even if they already exist in the source tree.  This involves removing
822 the file from the source tree before creating the new symlink (or, with
823 @code{--copy}, copying the new file).
825 @item --foreign
826 @opindex --foreign
827 Set the global strictness to @samp{foreign}.  For more information, see
828 @ref{Strictness}.
830 @item --gnits
831 @opindex --gnits
832 Set the global strictness to @samp{gnits}.  For more information, see
833 @ref{Gnits}.
835 @item --gnu
836 @opindex --gnu
837 Set the global strictness to @samp{gnu}.  For more information, see
838 @ref{Gnits}.  This is the default strictness.
840 @item --help
841 @opindex --help
842 Print a summary of the command line options and exit.
844 @item -i
845 @itemx --include-deps
846 @opindex -i
847 @opindex --include-deps
848 Include all automatically generated dependency information
849 (@pxref{Dependencies}) in the generated
850 @file{Makefile.in}.  This is generally done when making a distribution;
851 see @ref{Dist}.
853 @item --generate-deps
854 @opindex --generate-deps
855 Generate a file concatenating all automatically generated dependency
856 information (@pxref{Dependencies}) into one file, @file{.dep_segment}.
857 This is generally done when making a distribution; see @ref{Dist}.  It
858 is useful when maintaining a @file{SMakefile} or makefiles for other
859 platforms (@file{Makefile.DOS}, etc.)  It can only be used in
860 conjunction with @samp{--include-deps}, @samp{--srcdir-name}, and
861 @samp{--build-dir}.  Note that if this option is given, no other
862 processing is done.
864 @item --no-force
865 @opindex --no-force
866 Ordinarily @code{automake} creates all @file{Makefile.in}s mentioned in
867 @file{configure.in}.  This option causes it to only update those
868 @file{Makefile.in}s which are out of date with respect to one of their
869 dependents.
871 @item -o @var{dir}
872 @itemx --output-dir=@var{dir}
873 @opindex -o
874 @opindex --output-dir
875 Put the generated @file{Makefile.in} in the directory @var{dir}.
876 Ordinarily each @file{Makefile.in} is created in the directory of the
877 corresponding @file{Makefile.am}.  This option is used when making
878 distributions.
880 @item --srcdir-name=@var{dir}
881 @opindex --srcdir-name
882 Tell Automake the name of the source directory associated with the
883 current build.  This option is used when including dependencies into a
884 @file{Makefile.in} generated by @code{make dist}; it should not be used
885 otherwise.
887 @item -v
888 @itemx --verbose
889 @opindex -v
890 @opindex --verbose
891 Cause Automake to print information about which files are being read or
892 created.
894 @item --version
895 @opindex --version
896 Print the version number of Automake and exit.
897 @end table
900 @node configure, Top level, Invoking Automake, Top
901 @chapter Scanning @file{configure.in}
903 @cindex configure.in, scanning
904 @cindex Scanning configure.in
906 Automake scans the package's @file{configure.in} to determine certain
907 information about the package.  Some @code{autoconf} macros are required
908 and some variables must be defined in @file{configure.in}.  Automake
909 will also use information from @file{configure.in} to further tailor its
910 output.
912 Automake also supplies some Autoconf macros to make the maintenance
913 easier.  These macros can automatically be put into your
914 @file{aclocal.m4} using the @code{aclocal} program.
916 @menu
917 * Requirements::                Configuration requirements
918 * Optional::                    Other things Automake recognizes
919 * Invoking aclocal::            Auto-generating aclocal.m4
920 * Macros::                      Autoconf macros supplied with Automake
921 * Extending aclocal::           Writing your own aclocal macros
922 @end menu
925 @node Requirements, Optional, configure, configure
926 @section Configuration requirements
928 @cindex Automake requirements
929 @cindex Requirements of Automake
931 The one real requirement of Automake is that your @file{configure.in}
932 call @code{AM_INIT_AUTOMAKE}.  This macro does several things which are
933 required for proper Automake operation.
934 @cvindex AM_INIT_AUTOMAKE
936 Here are the other macros which Automake requires but which are not run
937 by @code{AM_INIT_AUTOMAKE}:
939 @cindex AC_OUTPUT, scanning
941 @table @code
942 @item AC_OUTPUT
943 Automake uses this to determine which files to create (@pxref{Output, ,
944 Creating Output Files, autoconf, The Autoconf Manual}).  Listed files
945 named @code{Makefile} are treated as @file{Makefile}s.  Other listed
946 files are treated differently.  Currently the only difference is that a
947 @file{Makefile} is removed by @code{make distclean}, while other files
948 are removed by @code{make clean}.
949 @c FIXME: this is in violation of standards!
950 @cvindex AC_OUTPUT
951 @end table
954 @node Optional, Invoking aclocal, Requirements, configure
955 @section Other things Automake recognizes
957 @cindex Macros Automake recognizes
958 @cindex Recognized macros by Automake
960 Automake will also recognize the use of certain macros and tailor the
961 generated @file{Makefile.in} appropriately.  Currently recognized macros
962 and their effects are:
964 @table @code
965 @item AC_CONFIG_HEADER
966 Automake requires the use of @code{AM_CONFIG_HEADER}, which is similar
967 to @code{AC_CONFIG_HEADER} (@pxref{Configuration Headers, ,
968 Configuration Header Files, autoconf, The Autoconf Manual}), but does
969 some useful Automake-specific work.
970 @cvindex AC_CONFIG_HEADER
972 @item AC_CONFIG_AUX_DIR
973 Automake will look for various helper scripts, such as
974 @file{mkinstalldirs}, in the directory named in this macro invocation.
975 If not seen, the scripts are looked for in their @samp{standard}
976 locations (either the top source directory, or in the source directory
977 corresponding to the current @file{Makefile.am}, whichever is
978 appropriate).  @xref{Input, , Finding `configure' Input, autoconf, The
979 Autoconf Manual}.
980 @cvindex AC_CONFIG_AUX_DIR
981 FIXME: give complete list of things looked for in this directory
983 @item AC_PATH_XTRA
984 Automake will insert definitions for the variables defined by
985 @code{AC_PATH_XTRA} into each @file{Makefile.in} that builds a C program
986 or library.  @xref{System Services, , System Services, autoconf, The
987 Autoconf Manual}.
988 @cvindex AC_PATH_XTRA
990 @item AC_CANONICAL_HOST
991 @itemx AC_CHECK_TOOL
992 Automake will ensure that @file{config.guess} and @file{config.sub}
993 exist.  Also, the @file{Makefile} variables @samp{host_alias} and
994 @samp{host_triplet} are introduced.  See both @ref{Canonicalizing, ,
995 Getting the Canonical System Type, autoconf, The Autoconf Manual}, and
996 @ref{Generic Programs, , Generic Program Checks, autoconf, The Autoconf
997 Manual}.
998 @c fixme xref autoconf docs.
999 @cvindex AC_CANONICAL_HOST
1000 @cvindex AC_CHECK_TOOL
1001 @vindex host_alias
1002 @vindex host_triplet
1004 @item AC_CANONICAL_SYSTEM
1005 This is similar to @code{AC_CANONICAL_HOST}, but also defines the
1006 @file{Makefile} variables @samp{build_alias} and @samp{target_alias}.
1007 @xref{Canonicalizing, , Getting the Canonical System Type, autoconf, The
1008 Autoconf Manual}.
1009 @cvindex AC_CANONICAL_SYSTEM
1010 @vindex build_alias
1011 @vindex target_alias
1013 @item AC_FUNC_ALLOCA
1014 @itemx AC_FUNC_GETLOADAVG
1015 @itemx AC_FUNC_MEMCMP
1016 @itemx AC_STRUCT_ST_BLOCKS
1017 @itemx AC_FUNC_FNMATCH
1018 @itemx AC_FUNC_MKTIME
1019 @itemx AM_FUNC_STRTOD
1020 @itemx AC_REPLACE_FUNCS
1021 @itemx AC_REPLACE_GNU_GETOPT
1022 @itemx AM_WITH_REGEX
1023 Automake will ensure that the appropriate dependencies are generated for
1024 the objects corresponding to these macros.  Also, Automake will verify
1025 that the appropriate source files are part of the distribution.  Note
1026 that Automake does not come with any of the C sources required to use
1027 these macros, so @code{automake -a} will not install the sources.
1028 @xref{A Library}, for more information.  Also, see @ref{Particular
1029 Functions, , Particular Function Checks, autoconf, The Autoconf Manual}.
1030 @cvindex AC_FUNC_ALLOCA
1031 @cvindex AC_FUNC_GETLOADAVG
1032 @cvindex AC_FUNC_MEMCMP
1033 @cvindex AC_STRUCT_ST_BLOCKS
1034 @cvindex AC_FUNC_FNMATCH
1035 @cvindex AC_FUNC_FNMATCH
1036 @cvindex AC_REPLACE_FUNCS
1037 @cvindex AC_REPLACE_GNU_GETOPT
1038 @cvindex AM_FUNC_STRTOD
1039 @cvindex AM_WITH_REGEX
1040 @cvindex AC_FUNC_MKTIME
1042 @item LIBOBJS
1043 Automake will detect statements which put @file{.o} files into
1044 @code{LIBOBJS}, and will treat these additional files as if they were
1045 discovered via @code{AC_REPLACE_FUNCS}.  @xref{Generic Functions, ,
1046 Generic Function Checks, autoconf, The Autoconf Manual}.
1047 @cvindex LIBOBJS
1049 @item AC_PROG_RANLIB
1050 This is required if any libraries are built in the package.
1051 @xref{Particular Programs, , Particular Program Checks, autoconf, The
1052 Autoconf Manual}.
1053 @cvindex AC_PROG_RANLIB
1055 @item AC_PROG_CXX
1056 This is required if any C++ source is included.  @xref{Particular
1057 Programs, , Particular Program Checks, autoconf, The Autoconf Manual}.
1058 @cvindex AC_PROG_CXX
1060 @item AC_PROG_F77
1061 This is required if any Fortran 77 source is included.  This macro is
1062 distributed with Autoconf version 2.13 and later.  @xref{Particular
1063 Programs, , Particular Program Checks, autoconf, The Autoconf Manual}.
1064 @cvindex AC_PROG_F77
1066 @item AC_F77_LIBRARY_LDFLAGS
1067 This is required for programs and shared libraries that are a mixture of
1068 languages that include Fortran 77 (@pxref{Mixing Fortran 77 With C and
1069 C++}).  @xref{Macros, , Autoconf macros supplied with Automake}.
1070 @cvindex AC_F77_LIBRARY_LDFLAGS
1072 @item AC_PROG_LIBTOOL
1073 Automake will turn on processing for @code{libtool} (@pxref{Top, ,
1074 Introduction, libtool, The Libtool Manual}).
1075 @cvindex AC_PROG_LIBTOOL
1077 @item AC_PROG_YACC
1078 If a Yacc source file is seen, then you must either use this macro or
1079 define the variable @samp{YACC} in @file{configure.in}.  The former is
1080 preferred (@pxref{Particular Programs, , Particular Program Checks,
1081 autoconf, The Autoconf Manual}).
1082 @cvindex AC_PROG_YACC
1083 @cvindex YACC
1085 @item AC_DECL_YYTEXT
1086 This macro is required if there is Lex source in the package.
1087 @xref{Particular Programs, , Particular Program Checks, autoconf, The
1088 Autoconf Manual}.
1089 @cvindex AC_DECL_YYTEXT
1091 @item AC_PROG_LEX
1092 If a Lex source file is seen, then this macro must be used.
1093 @xref{Particular Programs, , Particular Program Checks, autoconf, The
1094 Autoconf Manual}.
1095 @cvindex AC_PROG_LEX
1097 @item ALL_LINGUAS
1098 If Automake sees that this variable is set in @file{configure.in}, it
1099 will check the @file{po} directory to ensure that all the named
1100 @samp{.po} files exist, and that all the @samp{.po} files that exist are
1101 named.
1102 @cvindex ALL_LINGUAS
1104 @item AM_C_PROTOTYPES
1105 This is required when using automatic de-ANSI-fication; see @ref{ANSI}.
1106 @cvindex AM_C_PROTOTYPES
1108 @item AM_GNU_GETTEXT
1109 This macro is required for packages which use GNU gettext
1110 (@pxref{gettext}).  It is distributed with gettext.  If Automake sees
1111 this macro it ensures that the package meets some of gettext's
1112 requirements.
1113 @cvindex AM_GNU_GETTEXT
1115 @item AM_MAINTAINER_MODE
1116 @opindex --enable-maintainer-mode
1117 This macro adds a @samp{--enable-maintainer-mode} option to
1118 @code{configure}.  If this is used, @code{automake} will cause
1119 @samp{maintainer-only} rules to be turned off by default in the
1120 generated @file{Makefile.in}s.  This macro is disallowed in @samp{Gnits}
1121 mode (@pxref{Gnits}).  This macro defines the @samp{MAINTAINER_MODE}
1122 conditional, which you can use in your own @file{Makefile.am}.
1123 @cvindex AM_MAINTAINER_MODE
1125 @item AC_SUBST
1126 @itemx AC_CHECK_TOOL
1127 @itemx AC_CHECK_PROG
1128 @itemx AC_CHECK_PROGS
1129 @itemx AC_PATH_PROG
1130 @itemx AC_PATH_PROGS
1131 For each of these macros, the first argument is automatically defined as
1132 a variable in each generated @file{Makefile.in}.  @xref{Setting Output
1133 Variables, , Setting Output Variables, autoconf, The Autoconf Manual},
1134 and @ref{Generic Programs, , Generic Program Checks, autoconf, The
1135 Autoconf Manual}.
1136 @cvindex AC_SUBST
1137 @cvindex AC_CHECK_TOOL
1138 @cvindex AC_CHECK_PROG
1139 @cvindex AC_CHECK_PROGS
1140 @cvindex AC_PATH_PROG
1141 @cvindex AC_PATH_PROGS
1143 @end table
1146 @node Invoking aclocal, Macros, Optional, configure
1147 @section Auto-generating aclocal.m4
1149 @cindex Invoking aclocal
1150 @cindex aclocal, Invoking
1152 Automake includes a number of Autoconf macros which can be used in your
1153 package; some of them are actually required by Automake in certain
1154 situations.  These macros must be defined in your @file{aclocal.m4};
1155 otherwise they will not be seen by @code{autoconf}.
1157 The @code{aclocal} program will automatically generate @file{aclocal.m4}
1158 files based on the contents of @file{configure.in}.  This provides a
1159 convenient way to get Automake-provided macros, without having to
1160 search around.  Also, the @code{aclocal} mechanism is extensible for use
1161 by other packages.
1163 At startup, @code{aclocal} scans all the @file{.m4} files it can find,
1164 looking for macro definitions.  Then it scans @file{configure.in}.  Any
1165 mention of one of the macros found in the first step causes that macro,
1166 and any macros it in turn requires, to be put into @file{aclocal.m4}.
1168 The contents of @file{acinclude.m4}, if it exists, are also
1169 automatically included in @file{aclocal.m4}.  This is useful for
1170 incorporating local macros into @file{configure}.
1172 @code{aclocal} tries to be smart about looking for new @code{AC_DEFUN}s
1173 in the files it scans.  It will warn if it finds duplicates.  It also
1174 tries to copy the full text of the scanned file into @file{aclocal.m4},
1175 including both @samp{#} and @samp{dnl} comments.  If you want to make a
1176 comment which will be completely ignored by @code{aclocal}, use
1177 @samp{##} as the comment leader.
1179 @code{aclocal} accepts the following options:
1181 @table @code
1182 @item --acdir=@var{dir}
1183 @opindex --acdir
1184 Look for the macro files in @var{dir} instead of the installation
1185 directory.  This is typically used for debugging.
1187 @item --help
1188 @opindex --help
1189 Print a summary of the command line options and exit.
1191 @item -I @var{dir}
1192 @opindex -I
1193 Add the directory @var{dir} to the list of directories searched for
1194 @file{.m4} files.
1196 @item --output=@var{file}
1197 @opindex --output
1198 Cause the output to be put into @var{file} instead of @file{aclocal.m4}.
1200 @item --print-ac-dir
1201 @opindex --print-ac-dir
1202 Prints the name of the directory which @code{aclocal} will search to
1203 find the @file{.m4} files.  When this option is given, normal processing
1204 is suppressed.  This option can be used by a package to determine where
1205 to install a macro file.
1207 @item --verbose
1208 @opindex --verbose
1209 Print the names of the files it examines.
1211 @item --version
1212 @opindex --version
1213 Print the version number of Automake and exit.
1214 @end table
1217 @node Macros, Extending aclocal, Invoking aclocal, configure
1218 @section Autoconf macros supplied with Automake
1220 @c consider generating this node automatically from m4 files.
1222 @table @code
1223 @item AM_CONFIG_HEADER
1224 Automake will generate rules to automatically regenerate the config
1225 header.  If you do use this macro, you must create the file
1226 @file{stamp-h.in} in your source directory.  It can be empty.
1227 @cvindex AM_CONFIG_HEADER
1229 @item AM_ENABLE_MULTILIB
1230 This is used when a ``multilib'' library is being built.  A
1231 @dfn{multilib} library is one that is built multiple times, once per
1232 target flag combination.  This is only useful when the library is
1233 intended to be cross-compiled.  The first optional argument is the name
1234 of the @file{Makefile} being generated; it defaults to @samp{Makefile}.
1235 The second option argument is used to find the top source directory; it
1236 defaults to the empty string (generally this should not be used unless
1237 you are familiar with the internals).
1239 @item AM_FUNC_STRTOD
1240 If the @code{strtod} function is not available, or does not work
1241 correctly (like the one on SunOS 5.4), add @file{strtod.o} to output
1242 variable @code{LIBOBJS}.
1243 @cvindex AM_FUNC_STRTOD
1245 @item AM_FUNC_ERROR_AT_LINE
1246 If the function @code{error_at_line} is not found, then add
1247 @file{error.o} to @code{LIBOBJS}.
1248 @cvindex AM_FUNC_ERROR_AT_LINE
1250 @item AM_FUNC_OBSTACK
1251 Check for the GNU obstacks code; if not found, add @file{obstack.o} to
1252 @samp{LIBOBJS}.
1253 @cvindex AM_FUNC_OBSTACK
1255 @item AM_C_PROTOTYPES
1256 Check to see if function prototypes are understood by the compiler.  If
1257 so, define @samp{PROTOTYPES} and set the output variables @samp{U} and
1258 @samp{ANSI2KNR} to the empty string.  Otherwise, set @samp{U} to
1259 @samp{_} and @samp{ANSI2KNR} to @samp{./ansi2knr}.  Automake uses these
1260 values to implement automatic de-ANSI-fication.
1261 @cvindex AM_C_PROTOTYPES
1263 @item AM_HEADER_TIOCGWINSZ_NEEDS_SYS_IOCTL
1264 If the use of @code{TIOCGWINSZ} requires @file{<sys/ioctl.h>}, then
1265 define @code{GWINSZ_IN_SYS_IOCTL}.  Otherwise @code{TIOCGWINSZ} can be
1266 found in @file{<termios.h>}.
1267 @cvindex AM_HEADER_TIOCGWINSZ_NEEDS_SYS_IOCTL
1269 @item AM_INIT_AUTOMAKE
1270 Runs many macros that most @file{configure.in}'s need.  This macro has
1271 two required arguments, the package and the version number.  By default
1272 this macro @code{AC_DEFINE}'s @samp{PACKAGE} and @samp{VERSION}.  This
1273 can be avoided by passing in a non-empty third argument.
1275 @item AM_PATH_LISPDIR
1276 Searches for the program @code{emacs}, and, if found, sets the output
1277 variable @code{lispdir} to the full path to Emacs' site-lisp directory.
1278 @cvindex AM_PATH_LISPDIR
1280 @item AM_PROG_CC_STDC
1281 If the C compiler in not in ANSI C mode by default, try to add an option
1282 to output variable @code{CC} to make it so.  This macro tries various
1283 options that select ANSI C on some system or another.  It considers the
1284 compiler to be in ANSI C mode if it handles function prototypes correctly.
1286 If you use this macro, you should check after calling it whether the C
1287 compiler has been set to accept ANSI C; if not, the shell variable
1288 @code{am_cv_prog_cc_stdc} is set to @samp{no}.  If you wrote your source
1289 code in ANSI C, you can make an un-ANSIfied copy of it by using the
1290 @code{ansi2knr} option (@pxref{ANSI}).
1292 @item AM_PROG_LEX
1293 @cindex HP-UX 10, lex problems
1294 @cindex lex problems with HP-UX 10
1295 Like @code{AC_PROG_LEX} with @code{AC_DECL_YYTEXT} (@pxref{Particular
1296 Programs, , Particular Program Checks, autoconf, The Autoconf Manual}),
1297 but uses the @code{missing} script on systems that do not have
1298 @code{lex}.  @samp{HP-UX 10} is one such system.
1300 @item AM_PROG_GCJ
1301 This macro finds the @code{gcj} program or causes an error.  It sets
1302 @samp{GCJ} and @samp{GCJFLAGS}.  @code{gcj} is the Java front-end to the
1303 GNU C compiler.
1304 @cvindex AM_PROG_GCJ
1306 @item AM_SANITY_CHECK
1307 This checks to make sure that a file created in the build directory is
1308 newer than a file in the source directory.  This can fail on systems
1309 where the clock is set incorrectly.  This macro is automatically run
1310 from @code{AM_INIT_AUTOMAKE}.
1312 @item AM_SYS_POSIX_TERMIOS
1313 @cvindex am_cv_sys_posix_termios
1314 @cindex POSIX termios headers
1315 @cindex termios POSIX headers
1316 Check to see if POSIX termios headers and functions are available on the
1317 system.  If so, set the shell variable @code{am_cv_sys_posix_termios} to
1318 @samp{yes}.  If not, set the variable to @samp{no}.
1320 @item AM_TYPE_PTRDIFF_T
1321 @cvindex HAVE_PTRDIFF_T
1322 @vindex ptrdiff_t
1323 Define @samp{HAVE_PTRDIFF_T} if the type @samp{ptrdiff_t} is defined in
1324 @file{<stddef.h>}.
1326 @item AM_WITH_DMALLOC
1327 @cvindex WITH_DMALLOC
1328 @cindex dmalloc, support for
1329 @opindex --with-dmalloc
1330 Add support for the
1331 @uref{ftp://ftp.letters.com/src/dmalloc/dmalloc.tar.gz, dmalloc}
1332 package.  If the user configures with @samp{--with-dmalloc}, then define
1333 @code{WITH_DMALLOC} and add @samp{-ldmalloc} to @code{LIBS}.
1335 @item AM_WITH_REGEX
1336 @cvindex WITH_REGEX
1337 @opindex --with-regex
1338 @cindex regex package
1339 @cindex rx package
1340 Adds @samp{--with-regex} to the @code{configure} command line.  If
1341 specified (the default), then the @samp{regex} regular expression
1342 library is used, @file{regex.o} is put into @samp{LIBOBJS}, and
1343 @samp{WITH_REGEX} is defined..  If @samp{--without-regex} is given, then
1344 the @samp{rx} regular expression library is used, and @file{rx.o} is put
1345 into @samp{LIBOBJS}.
1347 @end table
1350 @node Extending aclocal,  , Macros, configure
1351 @section Writing your own aclocal macros
1353 @cindex aclocal, extending
1354 @cindex Extending aclocal
1356 The @code{aclocal} program doesn't have any built-in knowledge of any
1357 macros, so it is easy to extend it with your own macros.
1359 This is mostly used for libraries which want to supply their own
1360 Autoconf macros for use by other programs.  For instance the
1361 @code{gettext} library supplies a macro @code{AM_GNU_GETTEXT} which
1362 should be used by any package using @code{gettext}.  When the library is
1363 installed, it installs this macro so that @code{aclocal} will find it.
1365 A file of macros should be a series of @code{AC_DEFUN}'s.  The
1366 @code{aclocal} programs also understands @code{AC_REQUIRE}, so it is
1367 safe to put each macro in a separate file.  @xref{Prerequisite Macros, ,
1368 , autoconf, The Autoconf Manual}, and @ref{Macro Definitions, , ,
1369 autoconf, The Autoconf Manual}.
1371 A macro file's name should end in @file{.m4}.  Such files should be
1372 installed in @file{$(datadir)/aclocal}.
1375 @node Top level, Programs, configure, Top
1376 @chapter The top-level @file{Makefile.am}
1378 @cindex SUBDIRS, explained
1380 In non-flat packages, the top level @file{Makefile.am} must tell
1381 Automake which subdirectories are to be built.  This is done via the
1382 @code{SUBDIRS} variable.
1383 @vindex SUBDIRS
1385 The @code{SUBDIRS} macro holds a list of subdirectories in which
1386 building of various sorts can occur.  Many targets (e.g. @code{all}) in
1387 the generated @file{Makefile} will run both locally and in all specified
1388 subdirectories.  Note that the directories listed in @code{SUBDIRS} are
1389 not required to contain @file{Makefile.am}s; only @file{Makefile}s
1390 (after configuration).  This allows inclusion of libraries from packages
1391 which do not use Automake (such as @code{gettext}).  The directories
1392 mentioned in @code{SUBDIRS} must be direct children of the current
1393 directory.  For instance, you cannot put @samp{src/subdir} into
1394 @code{SUBDIRS}.
1396 In a deep package, the top-level @file{Makefile.am} is often very short.
1397 For instance, here is the @file{Makefile.am} from the GNU Hello
1398 distribution:
1400 @example
1401 EXTRA_DIST = BUGS ChangeLog.O README-alpha
1402 SUBDIRS = doc intl po src tests
1403 @end example
1405 @cindex SUBDIRS, overriding
1406 @cindex Overriding SUBDIRS
1408 It is possible to override the @code{SUBDIRS} variable if, like in the
1409 case of GNU @code{Inetutils}, you want to only build a subset of the
1410 entire package.  In your @file{Makefile.am} include:
1412 @example
1413 SUBDIRS = @@MY_SUBDIRS@@
1414 @end example
1416 Then in your @file{configure.in} you can specify:
1418 @example
1419 MY_SUBDIRS = "src doc lib po"
1420 AC_SUBST(MY_SUBDIRS)
1421 @end example
1423 (Note that we don't use the variable name @code{SUBDIRS} in our
1424 @file{configure.in}; that would cause Automake to believe that every
1425 @file{Makefile.in} should recurse into the listed subdirectories.)
1427 The upshot of this is that Automake is tricked into building the package
1428 to take the subdirs, but doesn't actually bind that list until
1429 @code{configure} is run.
1431 Although the @code{SUBDIRS} macro can contain configure substitutions
1432 (e.g. @samp{@@DIRS@@}); Automake itself does not actually examine the
1433 contents of this variable.
1435 If @code{SUBDIRS} is defined, then your @file{configure.in} must include
1436 @code{AC_PROG_MAKE_SET}.
1438 The use of @code{SUBDIRS} is not restricted to just the top-level
1439 @file{Makefile.am}.  Automake can be used to construct packages of
1440 arbitrary depth.
1442 By default, Automake generates @file{Makefiles} which work depth-first
1443 (@samp{postfix}).  However, it is possible to change this ordering.  You
1444 can do this by putting @samp{.} into @code{SUBDIRS}.  For instance,
1445 putting @samp{.}  first will cause a @samp{prefix} ordering of
1446 directories.
1448 Sometimes, such as when running @code{make dist}, you want all possible
1449 subdirectories to be examined.  In this case Automake will use
1450 @code{DIST_SUBDIRS}, instead of @code{SUBDIRS}, to determine where to
1451 recurse.  This variable will also be used when the user runs
1452 @code{distclean} or @code{maintainer-clean}.  It should be set to the
1453 full list of subdirectories in the project.  If this macro is not set,
1454 Automake will attempt to set it for you.
1457 @node Programs, Other objects, Top level, Top
1458 @chapter Building Programs and Libraries
1460 A large part of Automake's functionality is dedicated to making it easy
1461 to build programs and libraries.
1463 @menu
1464 * A Program::                   Building a program
1465 * A Library::                   Building a library
1466 * LIBOBJS::                     Special handling for LIBOBJS and ALLOCA
1467 * A Shared Library::            Building a Libtool library
1468 * Program variables::           Variables used when building a program
1469 * Yacc and Lex::                Yacc and Lex support
1470 * C++ Support::                 
1471 * Fortran 77 Support::          
1472 * Java Support::
1473 * Support for Other Languages::  
1474 * ANSI::                        Automatic de-ANSI-fication
1475 * Dependencies::                Automatic dependency tracking
1476 @end menu
1479 @node A Program, A Library, Programs, Programs
1480 @section Building a program
1482 @cindex PROGRAMS, bindir
1483 @vindex bin_PROGRAMS
1484 @vindex sbin_PROGRAMS
1485 @vindex libexec_PROGRAMS
1486 @vindex pkglib_PROGRAMS
1487 @vindex noinst_PROGRAMS
1489 In a directory containing source that gets built into a program (as
1490 opposed to a library), the @samp{PROGRAMS} primary is used.  Programs
1491 can be installed in @code{bindir}, @code{sbindir}, @code{libexecdir},
1492 @code{pkglibdir}, or not at all (@samp{noinst}).
1494 For instance:
1496 @example
1497 bin_PROGRAMS = hello
1498 @end example
1500 In this simple case, the resulting @file{Makefile.in} will contain code
1501 to generate a program named @code{hello}.  The variable
1502 @code{hello_SOURCES} is used to specify which source files get built
1503 into an executable:
1505 @example
1506 hello_SOURCES = hello.c version.c getopt.c getopt1.c getopt.h system.h 
1507 @end example
1509 This causes each mentioned @samp{.c} file to be compiled into the
1510 corresponding @samp{.o}.  Then all are linked to produce @file{hello}.
1512 @cindex _SOURCES primary, defined
1513 @cindex SOURCES primary, defined
1514 @cindex Primary variable, SOURCES
1516 If @samp{@var{prog}_SOURCES} is needed, but not specified, then it
1517 defaults to the single file @file{prog.c}.
1518 @vindex _SOURCES
1519 @vindex SOURCES
1521 Multiple programs can be built in a single directory.  Multiple programs
1522 can share a single source file, which must be listed in each
1523 @samp{_SOURCES} definition.
1525 @cindex Header files in _SOURCES
1526 @cindex _SOURCES and header files
1528 Header files listed in a @samp{_SOURCES} definition will be included in
1529 the distribution but otherwise ignored.  In case it isn't obvious, you
1530 should not include the header file generated by @file{configure} in an
1531 @samp{_SOURCES} variable; this file should not be distributed.  Lex
1532 (@samp{.l}) and Yacc (@samp{.y}) files can also be listed; see @ref{Yacc
1533 and Lex}.
1535 @cindex EXTRA_prog_SOURCES, defined
1537 Automake must know all the source files that could possibly go into a
1538 program, even if not all the files are built in every circumstance.
1539 Any files which are only conditionally built should be listed in the
1540 appropriate @samp{EXTRA_} variable.  For instance, if
1541 @file{hello-linux.c} were conditionally included in @code{hello}, the
1542 @file{Makefile.am} would contain:
1544 @example
1545 EXTRA_hello_SOURCES = hello-linux.c
1546 @end example
1548 Similarly, sometimes it is useful to determine the programs that are to
1549 be built at configure time.  For instance, GNU @code{cpio} only builds
1550 @code{mt} and @code{rmt} under special circumstances.
1552 @cindex EXTRA_PROGRAMS, defined
1554 In this case, you must notify Automake of all the programs that can
1555 possibly be built, but at the same time cause the generated
1556 @file{Makefile.in} to use the programs specified by @code{configure}.
1557 This is done by having @code{configure} substitute values into each
1558 @samp{_PROGRAMS} definition, while listing all optionally built programs
1559 in @code{EXTRA_PROGRAMS}.
1560 @vindex EXTRA_PROGRAMS
1562 If you need to link against libraries that are not found by
1563 @code{configure}, you can use @code{LDADD} to do so.  This variable
1564 actually can be used to add any options to the linker command line.
1565 @vindex LDADD
1567 @cindex prog_LDADD, defined
1569 Sometimes, multiple programs are built in one directory but do not share
1570 the same link-time requirements.  In this case, you can use the
1571 @samp{@var{prog}_LDADD} variable (where @var{prog} is the name of the
1572 program as it appears in some @samp{_PROGRAMS} variable, and usually
1573 written in lowercase) to override the global @code{LDADD}.  If this
1574 variable exists for a given program, then that program is not linked
1575 using @code{LDADD}.
1576 @vindex _LDADD
1578 For instance, in GNU cpio, @code{pax}, @code{cpio} and @code{mt} are
1579 linked against the library @file{libcpio.a}.  However, @code{rmt} is
1580 built in the same directory, and has no such link requirement.  Also,
1581 @code{mt} and @code{rmt} are only built on certain architectures.  Here
1582 is what cpio's @file{src/Makefile.am} looks like (abridged):
1584 @example
1585 bin_PROGRAMS = cpio pax @@MT@@
1586 libexec_PROGRAMS = @@RMT@@
1587 EXTRA_PROGRAMS = mt rmt
1589 LDADD = ../lib/libcpio.a @@INTLLIBS@@
1590 rmt_LDADD =
1592 cpio_SOURCES = @dots{}
1593 pax_SOURCES = @dots{}
1594 mt_SOURCES = @dots{}
1595 rmt_SOURCES = @dots{}
1596 @end example
1598 @cindex _LDFLAGS, defined
1600 @samp{@var{prog}_LDADD} is inappropriate for passing program-specific
1601 linker flags (except for @samp{-l}, @samp{-L}, @samp{-dlopen} and
1602 @samp{-dlpreopen}).  So, use the @samp{@var{prog}_LDFLAGS} variable for
1603 this purpose.
1604 @vindex _LDFLAGS
1606 @cindex _DEPENDENCIES, defined
1608 It is also occasionally useful to have a program depend on some other
1609 target which is not actually part of that program.  This can be done
1610 using the @samp{@var{prog}_DEPENDENCIES} variable.  Each program depends
1611 on the contents of such a variable, but no further interpretation is
1612 done.
1614 If @samp{@var{prog}_DEPENDENCIES} is not supplied, it is computed by
1615 Automake.  The automatically-assigned value is the contents of
1616 @samp{@var{prog}_LDADD}, with most configure substitutions, @samp{-l},
1617 @samp{-L}, @samp{-dlopen} and @samp{-dlpreopen} options removed.  The
1618 configure substitutions that are left in are only @samp{@@LIBOBJS@@} and
1619 @samp{@@ALLOCA@@}; these are left because it is known that they will not
1620 cause an invalid value for @samp{@var{prog}_DEPENDENCIES} to be
1621 generated.
1624 @node A Library, LIBOBJS, A Program, Programs
1625 @section Building a library
1627 @cindex _LIBRARIES primary, defined
1628 @cindex LIBRARIES primary, defined
1629 @cindex Primary variable, LIBRARIES
1631 @vindex lib_LIBRARIES
1632 @vindex pkglib_LIBRARIES
1633 @vindex noinst_LIBRARIES
1635 Building a library is much like building a program.  In this case, the
1636 name of the primary is @samp{LIBRARIES}.  Libraries can be installed in
1637 @code{libdir} or @code{pkglibdir}.
1639 @xref{A Shared Library}, for information on how to build shared
1640 libraries using Libtool and the @samp{LTLIBRARIES} primary.
1642 Each @samp{_LIBRARIES} variable is a list of the libraries to be built.
1643 For instance to create a library named @file{libcpio.a}, but not install
1644 it, you would write:
1646 @example
1647 noinst_LIBRARIES = libcpio.a
1648 @end example
1650 The sources that go into a library are determined exactly as they are
1651 for programs, via the @samp{_SOURCES} variables.  Note that the library
1652 name is canonicalized (@pxref{Canonicalization}), so the @samp{_SOURCES}
1653 variable corresponding to @file{liblob.a} is @samp{liblob_a_SOURCES},
1654 not @samp{liblob.a_SOURCES}.
1656 @cindex _LIBADD primary, defined
1657 @cindex LIBADD primary, defined
1658 @cindex Primary variable, LIBADD
1660 Extra objects can be added to a library using the
1661 @samp{@var{library}_LIBADD} variable.  This should be used for objects
1662 determined by @code{configure}.  Again from @code{cpio}:
1663 @vindex _LIBADD
1664 @vindex LIBADD
1666 @example
1667 libcpio_a_LIBADD = @@LIBOBJS@@ @@ALLOCA@@
1668 @end example
1670 In addition, sources for extra objects that will not exist until
1671 configure-time must be added to the @code{BUILT_SOURCES} variable
1672 (@pxref{Sources}).
1675 @node LIBOBJS, A Shared Library, A Library, Programs
1676 @section Special handling for LIBOBJS and ALLOCA
1678 @cindex @@LIBOBJS@@, special handling
1679 @cindex @@ALLOCA@@, special handling
1681 Automake explicitly recognizes the use of @code{@@LIBOBJS@@} and
1682 @code{@@ALLOCA@@}, and uses this information, plus the list of
1683 @code{LIBOBJS} files derived from @file{configure.in} to automatically
1684 include the appropriate source files in the distribution (@pxref{Dist}).
1685 These source files are also automatically handled in the
1686 dependency-tracking scheme; see @xref{Dependencies}.
1688 @code{@@LIBOBJS@@} and @code{@@ALLOCA@@} are specially recognized in any
1689 @samp{_LDADD} or @samp{_LIBADD} variable.
1692 @node A Shared Library, Program variables, LIBOBJS, Programs
1693 @section Building a Shared Library
1695 @cindex Shared libraries, support for
1697 Building shared libraries is a relatively complex matter.  For this
1698 reason, GNU Libtool (@pxref{Top, , Introduction, libtool, The
1699 Libtool Manual}) was created to help build shared libraries in a
1700 platform-independent way.
1702 @cindex _LTLIBRARIES primary, defined
1703 @cindex LTLIBRARIES primary, defined
1704 @cindex Primary variable, LTLIBRARIES
1705 @cindex Example of shared libraries
1707 @cindex suffix .la, defined
1709 Automake uses Libtool to build libraries declared with the
1710 @samp{LTLIBRARIES} primary.  Each @samp{_LTLIBRARIES} variable is a list
1711 of shared libraries to build.  For instance, to create a library named
1712 @file{libgettext.a} and its corresponding shared libraries, and install
1713 them in @samp{libdir}, write:
1715 @example
1716 lib_LTLIBRARIES = libgettext.la
1717 @end example
1719 @vindex lib_LTLIBRARIES
1720 @vindex pkglib_LTLIBRARIES
1721 @vindex noinst_LTLIBRARIES
1722 @vindex check_LTLIBRARIES
1724 @cindex check_LTLIBRARIES, not allowed
1726 Note that shared libraries @emph{must} be installed, so
1727 @code{check_LTLIBRARIES} is not allowed.  However,
1728 @code{noinst_LTLIBRARIES} is allowed.  This feature should be used for
1729 libtool ``convenience libraries''.
1731 @cindex suffix .lo, defined
1733 For each library, the @samp{@var{library}_LIBADD} variable contains the
1734 names of extra libtool objects (@file{.lo} files) to add to the shared
1735 library.  The @samp{@var{library}_LDFLAGS} variable contains any
1736 additional libtool flags, such as @samp{-version-info} or
1737 @samp{-static}.
1739 @cindex @@LTLIBOBJS@@, special handling
1741 Where an ordinary library might include @code{@@LIBOBJS@@}, a libtool
1742 library must use @code{@@LTLIBOBJS@@}.  This is required because the
1743 object files that libtool operates on do not necessarily end in
1744 @file{.o}.  The libtool manual contains more details on this topic.
1746 For libraries installed in some directory, Automake will automatically
1747 supply the appropriate @samp{-rpath} option.  However, for libraries
1748 determined at configure time (and thus mentioned in
1749 @code{EXTRA_LTLIBRARIES}), Automake does not know the eventual
1750 installation directory; for such libraries you must add the
1751 @samp{-rpath} option to the appropriate @samp{_LDFLAGS} variable by
1752 hand.
1754 @xref{Using Automake, Using Automake with Libtool, The Libtool Manual,
1755 libtool, The Libtool Manual}, for more information.
1758 @node Program variables, Yacc and Lex, A Shared Library, Programs
1759 @section Variables used when building a program
1761 Occasionally it is useful to know which @file{Makefile} variables
1762 Automake uses for compilations; for instance you might need to do your
1763 own compilation in some special cases.
1765 Some variables are inherited from Autoconf; these are @code{CC},
1766 @code{CFLAGS}, @code{CPPFLAGS}, @code{DEFS}, @code{LDFLAGS}, and
1767 @code{LIBS}.
1768 @vindex LDFLAGS
1770 There are some additional variables which Automake itself defines:
1772 @vtable @code
1773 @item INCLUDES
1774 A list of @samp{-I} options.  This can be set in your @file{Makefile.am}
1775 if you have special directories you want to look in.  Automake already
1776 provides some @samp{-I} options automatically.  In particular it
1777 generates @samp{-I$(srcdir)}, @samp{-I.}, and a @samp{-I} pointing to
1778 the directory holding @file{config.h} (if you've used
1779 @code{AC_CONFIG_HEADER} or @code{AM_CONFIG_HEADER}).  You can disable
1780 the default @samp{-I} options using the @samp{nostdinc} option.
1782 @code{INCLUDES} can actually be used for other @code{cpp} options
1783 besides @samp{-I}.  For instance, it is sometimes used to pass arbitrary
1784 @samp{-D} options to the compiler.
1786 @item COMPILE
1787 This is the command used to actually compile a C source file.  The
1788 filename is appended to form the complete command line.
1790 @item LINK
1791 This is the command used to actually link a C program.
1792 @end vtable
1795 @node Yacc and Lex, C++ Support, Program variables, Programs
1796 @section Yacc and Lex support
1798 Automake has somewhat idiosyncratic support for Yacc and Lex.
1800 Automake assumes that the @file{.c} file generated by @code{yacc} (or
1801 @code{lex}) should be named using the basename of the input file.  That
1802 is, for a yacc source file @file{foo.y}, Automake will cause the
1803 intermediate file to be named @file{foo.c} (as opposed to
1804 @file{y.tab.c}, which is more traditional).
1806 The extension of a yacc source file is used to determine the extension
1807 of the resulting @samp{C} or @samp{C++} file.  Files with the extension
1808 @samp{.y} will be turned into @samp{.c} files; likewise, @samp{.yy} will
1809 become @samp{.cc}; @samp{.y++}, @samp{c++}; and @samp{.yxx},
1810 @samp{.cxx}.
1812 Likewise, lex source files can be used to generate @samp{C} or
1813 @samp{C++}; the extensions @samp{.l}, @samp{.ll}, @samp{.l++}, and
1814 @samp{.lxx} are recognized.
1816 You should never explicitly mention the intermediate (@samp{C} or
1817 @samp{C++}) file in any @samp{SOURCES} variable; only list the source
1818 file.
1820 The intermediate files generated by @code{yacc} (or @code{lex}) will be
1821 included in any distribution that is made.  That way the user doesn't
1822 need to have @code{yacc} or @code{lex}.
1824 If a @code{yacc} source file is seen, then your @file{configure.in} must
1825 define the variable @samp{YACC}.  This is most easily done by invoking
1826 the macro @samp{AC_PROG_YACC} (@pxref{Particular Programs, , Particular
1827 Program Checks, autoconf, The Autoconf Manual}).
1829 Similarly, if a @code{lex} source file is seen, then your
1830 @file{configure.in} must define the variable @samp{LEX}.  You can use
1831 @samp{AC_PROG_LEX} to do this (@pxref{Particular Programs, , Particular
1832 Program Checks, autoconf, The Autoconf Manual}).  Automake's @code{lex}
1833 support also requires that you use the @samp{AC_DECL_YYTEXT}
1834 macro---automake needs to know the value of @samp{LEX_OUTPUT_ROOT}.
1835 This is all handled for you if you use the @code{AM_PROG_LEX} macro
1836 (@pxref{Macros}).
1838 @cindex ylwrap
1839 @cindex yacc, multiple parsers
1840 @cindex Multiple yacc parsers
1841 @cindex Multiple lex lexers
1842 @cindex lex, multiple lexers
1845 Automake makes it possible to include multiple @code{yacc} (or
1846 @code{lex}) source files in a single program.  Automake uses a small
1847 program called @code{ylwrap} to run @code{yacc} (or @code{lex}) in a
1848 subdirectory.  This is necessary because yacc's output filename is
1849 fixed, and a parallel make could conceivably invoke more than one
1850 instance of @code{yacc} simultaneously.  The @code{ylwrap} program is
1851 distributed with Automake.  It should appear in the directory specified
1852 by @samp{AC_CONFIG_AUX_DIR} (@pxref{Input, , Finding `configure' Input,
1853 autoconf, The Autoconf Manual}), or the current directory if that macro
1854 is not used in @file{configure.in}.
1856 For @code{yacc}, simply managing locking is insufficient.  The output of
1857 @code{yacc} always uses the same symbol names internally, so it isn't
1858 possible to link two @code{yacc} parsers into the same executable.
1860 We recommend using the following renaming hack used in @code{gdb}:
1861 @example
1862 #define yymaxdepth c_maxdepth
1863 #define yyparse c_parse
1864 #define yylex   c_lex
1865 #define yyerror c_error
1866 #define yylval  c_lval
1867 #define yychar  c_char
1868 #define yydebug c_debug
1869 #define yypact  c_pact  
1870 #define yyr1    c_r1                    
1871 #define yyr2    c_r2                    
1872 #define yydef   c_def           
1873 #define yychk   c_chk           
1874 #define yypgo   c_pgo           
1875 #define yyact   c_act           
1876 #define yyexca  c_exca
1877 #define yyerrflag c_errflag
1878 #define yynerrs c_nerrs
1879 #define yyps    c_ps
1880 #define yypv    c_pv
1881 #define yys     c_s
1882 #define yy_yys  c_yys
1883 #define yystate c_state
1884 #define yytmp   c_tmp
1885 #define yyv     c_v
1886 #define yy_yyv  c_yyv
1887 #define yyval   c_val
1888 #define yylloc  c_lloc
1889 #define yyreds  c_reds
1890 #define yytoks  c_toks
1891 #define yylhs   c_yylhs
1892 #define yylen   c_yylen
1893 #define yydefred c_yydefred
1894 #define yydgoto c_yydgoto
1895 #define yysindex c_yysindex
1896 #define yyrindex c_yyrindex
1897 #define yygindex c_yygindex
1898 #define yytable  c_yytable
1899 #define yycheck  c_yycheck
1900 #define yyname   c_yyname
1901 #define yyrule   c_yyrule
1902 @end example
1904 For each define, replace the @samp{c_} prefix with whatever you like.
1905 These defines work for @code{bison}, @code{byacc}, and traditional
1906 @code{yacc}s.  If you find a parser generator that uses a symbol not
1907 covered here, please report the new name so it can be added to the list.
1910 @node C++ Support, Fortran 77 Support, Yacc and Lex, Programs
1911 @section C++ Support
1913 @cindex C++ support
1914 @cindex Support for C++
1916 Automake includes full support for C++.
1918 Any package including C++ code must define the output variable
1919 @samp{CXX} in @file{configure.in}; the simplest way to do this is to use
1920 the @code{AC_PROG_CXX} macro (@pxref{Particular Programs, , Particular
1921 Program Checks, autoconf, The Autoconf Manual}).
1923 A few additional variables are defined when a C++ source file is seen:
1925 @vtable @code
1926 @item CXX
1927 The name of the C++ compiler.
1929 @item CXXFLAGS
1930 Any flags to pass to the C++ compiler.
1932 @item CXXCOMPILE
1933 The command used to actually compile a C++ source file.  The file name
1934 is appended to form the complete command line.
1936 @item CXXLINK
1937 The command used to actually link a C++ program.
1938 @end vtable
1941 @node Fortran 77 Support, Java Support, C++ Support, Programs
1942 @comment  node-name,  next,  previous,  up
1943 @section Fortran 77 Support
1945 @cindex Fortran 77 support
1946 @cindex Support for Fortran 77
1948 Automake includes full support for Fortran 77.
1950 Any package including Fortran 77 code must define the output variable
1951 @samp{F77} in @file{configure.in}; the simplest way to do this is to use
1952 the @code{AC_PROG_F77} macro (@pxref{Particular Programs, , Particular
1953 Program Checks, autoconf, The Autoconf Manual}).  @xref{Fortran 77 and
1954 Autoconf}.
1956 A few additional variables are defined when a Fortran 77 source file is
1957 seen:
1959 @vtable @code
1961 @item F77
1962 The name of the Fortran 77 compiler.
1964 @item FFLAGS
1965 Any flags to pass to the Fortran 77 compiler.
1967 @item RFLAGS
1968 Any flags to pass to the Ratfor compiler.
1970 @item F77COMPILE
1971 The command used to actually compile a Fortran 77 source file.  The file
1972 name is appended to form the complete command line.
1974 @item FLINK
1975 The command used to actually link a pure Fortran 77 program or shared
1976 library.
1978 @end vtable
1980 Automake can handle preprocessing Fortran 77 and Ratfor source files in
1981 addition to compiling them@footnote{Much, if not most, of the
1982 information in the following sections pertaining to preprocessing
1983 Fortran 77 programs was taken almost verbatim from @ref{Catalogue of
1984 Rules, , Catalogue of Rules, make, The GNU Make Manual}.}.  Automake
1985 also contains some support for creating programs and shared libraries
1986 that are a mixture of Fortran 77 and other languages (@pxref{Mixing
1987 Fortran 77 With C and C++}).
1989 These issues are covered in the following sections.
1991 @menu
1992 * Preprocessing Fortran 77::    
1993 * Compiling Fortran 77 Files::  
1994 * Mixing Fortran 77 With C and C++::  
1995 * Fortran 77 and Autoconf::     
1996 @end menu
1999 @node Preprocessing Fortran 77, Compiling Fortran 77 Files, Fortran 77 Support, Fortran 77 Support
2000 @comment  node-name,  next,  previous,  up
2001 @subsection Preprocessing Fortran 77
2003 @cindex Preprocessing Fortran 77
2004 @cindex Fortran 77, Preprocessing
2005 @cindex Ratfor programs
2007 @file{N.f} is made automatically from @file{N.F} or @file{N.r}.  This
2008 rule runs just the preprocessor to convert a preprocessable Fortran 77
2009 or Ratfor source file into a strict Fortran 77 source file.  The precise
2010 command used is as follows:
2012 @table @file
2014 @item .F
2015 @code{$(F77) -F $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_FFLAGS) $(FFLAGS)}
2017 @item .r
2018 @code{$(F77) -F $(AM_FFLAGS) $(FFLAGS) $(AM_RFLAGS) $(RFLAGS)}
2020 @end table
2023 @node Compiling Fortran 77 Files, Mixing Fortran 77 With C and C++, Preprocessing Fortran 77, Fortran 77 Support
2024 @comment  node-name,  next,  previous,  up
2025 @subsection Compiling Fortran 77 Files
2027 @file{N.o} is made automatically from @file{N.f}, @file{N.F} or
2028 @file{N.r} by running the Fortran 77 compiler.  The precise command used
2029 is as follows:
2031 @table @file
2033 @item .f
2034 @code{$(F77) -c $(AM_FFLAGS) $(FFLAGS)}
2036 @item .F
2037 @code{$(F77) -c $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_FFLAGS) $(FFLAGS)}
2039 @item .r
2040 @code{$(F77) -c $(AM_FFLAGS) $(FFLAGS) $(AM_RFLAGS) $(RFLAGS)}
2042 @end table
2045 @node Mixing Fortran 77 With C and C++, Fortran 77 and Autoconf, Compiling Fortran 77 Files, Fortran 77 Support
2046 @comment  node-name,  next,  previous,  up
2047 @subsection Mixing Fortran 77 With C and C++
2049 @cindex Fortran 77, mixing with C and C++
2050 @cindex Mixing Fortran 77 with C and C++
2051 @cindex Linking Fortran 77 with C and C++
2052 @cindex cfortran
2053 @cindex Mixing Fortran 77 with C and/or C++
2055 Automake currently provides @emph{limited} support for creating programs
2056 and shared libraries that are a mixture of Fortran 77 and C and/or C++.
2057 However, there are many other issues related to mixing Fortran 77 with
2058 other languages that are @emph{not} (currently) handled by Automake, but
2059 that are handled by other packages@footnote{For example,
2060 @uref{http://www-zeus.desy.de/~burow/cfortran/, the cfortran package}
2061 addresses all of these inter-language issues, and runs under nearly all
2062 Fortran 77, C and C++ compilers on nearly all platforms.  However,
2063 @code{cfortran} is not yet Free Software, but it will be in the next
2064 major release.}.
2066 @page
2067 Automake can help in two ways:
2069 @enumerate
2070 @item
2071 Automatic selection of the linker depending on which combinations of
2072 source code.
2074 @item
2075 Automatic selection of the appropriate linker flags (e.g. @samp{-L} and
2076 @samp{-l}) to pass to the automatically selected linker in order to link
2077 in the appropriate Fortran 77 intrinsic and run-time libraries.
2079 @cindex FLIBS, defined
2080 These extra Fortran 77 linker flags are supplied in the output variable
2081 @code{FLIBS} by the @code{AC_F77_LIBRARY_LDFLAGS} Autoconf macro
2082 supplied with newer versions of Autoconf (Autoconf version 2.13 and
2083 later).  @xref{Fortran 77 Compiler Characteristics, , , autoconf, The
2084 Autoconf}.
2085 @end enumerate
2087 If Automake detects that a program or shared library (as mentioned in
2088 some @code{_PROGRAMS} or @code{_LTLIBRARIES} primary) contains source
2089 code that is a mixture of Fortran 77 and C and/or C++, then it requires
2090 that the macro @code{AC_F77_LIBRARY_LDFLAGS} be called in
2091 @file{configure.in}, and that either @code{$(FLIBS)} or @code{@@FLIBS@@}
2092 appear in the appropriate @code{_LDADD} (for programs) or @code{_LIBADD}
2093 (for shared libraries) variables.  It is the responsibility of the
2094 person writing the @file{Makefile.am} to make sure that @code{$(FLIBS)}
2095 or @code{@@FLIBS@@} appears in the appropriate @code{_LDADD} or
2096 @code{_LIBADD} variable.
2098 @cindex Mixed language example
2099 @cindex Example, mixed language
2101 For example, consider the following @file{Makefile.am}:
2103 @example
2104 bin_PROGRAMS = foo
2105 foo_SOURCES  = main.cc foo.f
2106 foo_LDADD    = libfoo.la @@FLIBS@@
2108 pkglib_LTLIBRARIES = libfoo.la
2109 libfoo_la_SOURCES  = bar.f baz.c zardoz.cc
2110 libfoo_la_LIBADD   = $(FLIBS)
2111 @end example
2113 In this case, Automake will insist that @code{AC_F77_LIBRARY_LDFLAGS}
2114 is mentioned in @file{configure.in}.  Also, if @code{@@FLIBS@@} hadn't
2115 been mentioned in @code{foo_LDADD} and @code{libfoo_la_LIBADD}, then
2116 Automake would have issued a warning.
2119 @page
2120 @menu
2121 * How the Linker is Chosen::    
2122 @end menu
2124 @node How the Linker is Chosen,  , Mixing Fortran 77 With C and C++, Mixing Fortran 77 With C and C++
2125 @comment  node-name,  next,  previous,  up
2126 @subsubsection How the Linker is Chosen
2128 @cindex Automatic linker selection
2129 @cindex Selecting the linker automatically
2131 The following diagram demonstrates under what conditions a particular
2132 linker is chosen by Automake.
2134 For example, if Fortran 77, C and C++ source code were to be compiled
2135 into a program, then the C++ linker will be used.  In this case, if the
2136 C or Fortran 77 linkers required any special libraries that weren't
2137 included by the C++ linker, then they must be manually added to an
2138 @code{_LDADD} or @code{_LIBADD} variable by the user writing the
2139 @file{Makefile.am}.
2141 @example
2142                      \              Linker
2143           source      \
2144            code        \     C        C++     Fortran
2145      -----------------  +---------+---------+---------+
2146                         |         |         |         |
2147      C                  |    x    |         |         |
2148                         |         |         |         |
2149                         +---------+---------+---------+
2150                         |         |         |         |
2151          C++            |         |    x    |         |
2152                         |         |         |         |
2153                         +---------+---------+---------+
2154                         |         |         |         |
2155                Fortran  |         |         |    x    |
2156                         |         |         |         |
2157                         +---------+---------+---------+
2158                         |         |         |         |
2159      C + C++            |         |    x    |         |
2160                         |         |         |         |
2161                         +---------+---------+---------+
2162                         |         |         |         |
2163      C +       Fortran  |         |         |    x    |
2164                         |         |         |         |
2165                         +---------+---------+---------+
2166                         |         |         |         |
2167          C++ + Fortran  |         |    x    |         |
2168                         |         |         |         |
2169                         +---------+---------+---------+
2170                         |         |         |         |
2171      C + C++ + Fortran  |         |    x    |         |
2172                         |         |         |         |
2173                         +---------+---------+---------+
2174 @end example
2177 @node Fortran 77 and Autoconf,  , Mixing Fortran 77 With C and C++, Fortran 77 Support
2178 @comment  node-name,  next,  previous,  up
2179 @subsection Fortran 77 and Autoconf
2181 The current Automake support for Fortran 77 requires a recent enough
2182 version Autoconf that also includes support for Fortran 77.  Full
2183 Fortran 77 support was added to Autoconf 2.13, so you will want to use
2184 that version of Autoconf or later.
2187 @node Java Support, Support for Other Languages, Fortran 77 Support, Programs
2188 @comment  node-name,  next,  previous,  up
2190 Automake includes support for compiled Java, using @code{gcj}, the Java
2191 front end to the GNU C compiler.
2193 Any package including Java code to be compiled must define the output
2194 variable @samp{GCJ} in @file{configure.in}; the variable @samp{GCJFLAGS}
2195 must also be defined somehow (either in @file{configure.in} or
2196 @file{Makefile.am}).  The simplest way to do this is to use the
2197 @code{AM_PROG_GCJ} macro.
2199 By default, programs including Java source files are linked with
2200 @code{gcj}.
2203 @node Support for Other Languages, ANSI, Java Support, Programs
2204 @comment  node-name,  next,  previous,  up
2205 @section Support for Other Languages
2207 Automake currently only includes full support for C, C++ (@pxref{C++
2208 Support}), Fortran 77 (@pxref{Fortran 77 Support}), and Java
2209 (@pxref{Java Support}).  There is only rudimentary support for other
2210 languages, support for which will be improved based on user demand.
2212 @c FIXME: mention suffix rule processing here.
2215 @node ANSI, Dependencies, Support for Other Languages, Programs
2216 @section Automatic de-ANSI-fication
2218 @cindex de-ANSI-fication, defined
2220 Although the GNU standards allow the use of ANSI C, this can have the
2221 effect of limiting portability of a package to some older compilers
2222 (notably SunOS).
2224 Automake allows you to work around this problem on such machines by
2225 @dfn{de-ANSI-fying} each source file before the actual compilation takes
2226 place.
2228 @vindex AUTOMAKE_OPTIONS
2229 @opindex ansi2knr
2231 If the @file{Makefile.am} variable @code{AUTOMAKE_OPTIONS}
2232 (@pxref{Options}) contains the option @code{ansi2knr} then code to
2233 handle de-ANSI-fication is inserted into the generated
2234 @file{Makefile.in}.
2236 This causes each C source file in the directory to be treated as ANSI C.
2237 If an ANSI C compiler is available, it is used.  If no ANSI C compiler
2238 is available, the @code{ansi2knr} program is used to convert the source
2239 files into K&R C, which is then compiled.
2241 The @code{ansi2knr} program is simple-minded.  It assumes the source
2242 code will be formatted in a particular way; see the @code{ansi2knr} man
2243 page for details.
2245 Support for de-ANSI-fication requires the source files @file{ansi2knr.c}
2246 and @file{ansi2knr.1} to be in the same package as the ANSI C source;
2247 these files are distributed with Automake.  Also, the package
2248 @file{configure.in} must call the macro @code{AM_C_PROTOTYPES}
2249 (@pxref{Macros}).
2250 @cvindex AM_C_PROTOTYPES
2252 Automake also handles finding the @code{ansi2knr} support files in some
2253 other directory in the current package.  This is done by prepending the
2254 relative path to the appropriate directory to the @code{ansi2knr}
2255 option.  For instance, suppose the package has ANSI C code in the
2256 @file{src} and @file{lib} subdirs.  The files @file{ansi2knr.c} and
2257 @file{ansi2knr.1} appear in @file{lib}.  Then this could appear in
2258 @file{src/Makefile.am}:
2260 @example
2261 AUTOMAKE_OPTIONS = ../lib/ansi2knr
2262 @end example
2264 If no directory prefix is given, the files are assumed to be in the
2265 current directory.
2267 Files mentioned in @code{LIBOBJS} which need de-ANSI-fication will not
2268 be automatically handled.  That's because @code{configure} will generate
2269 an object name like @file{regex.o}, while @code{make} will be looking
2270 for @file{regex_.o} (when de-ANSI-fying).  Eventually this problem will
2271 be fixed via @code{autoconf} magic, but for now you must put this code
2272 into your @file{configure.in}, just before the @code{AC_OUTPUT} call:
2274 @example
2275 # This is necessary so that .o files in LIBOBJS are also built via
2276 # the ANSI2KNR-filtering rules.
2277 LIBOBJS=`echo $LIBOBJS|sed 's/\.o /\$U.o /g;s/\.o$/\$U.o/'`
2278 @end example
2281 @node Dependencies,  , ANSI, Programs
2282 @section Automatic dependency tracking
2284 As a developer it is often painful to continually update the
2285 @file{Makefile.in} whenever the include-file dependencies change in a
2286 project.  Automake supplies a way to automatically track dependency
2287 changes, and distribute the dependencies in the generated
2288 @file{Makefile.in}.
2290 Currently this support requires the use of GNU @code{make} and
2291 @code{gcc}.  It might become possible in the future to supply a
2292 different dependency generating program, if there is enough demand.  In
2293 the meantime, this mode is enabled by default if any C program or
2294 library is defined in the current directory, so you may get a @samp{Must
2295 be a separator} error from non-GNU make.
2297 @trindex dist
2299 When you decide to make a distribution, the @code{dist} target will
2300 re-run @code{automake} with @samp{--include-deps} and other options.
2301 @xref{Invoking Automake}, and @ref{Options}.  This will cause the
2302 previously generated dependencies to be inserted into the generated
2303 @file{Makefile.in}, and thus into the distribution.  This step also
2304 turns off inclusion of the dependency generation code, so that those who
2305 download your distribution but don't use GNU @code{make} and @code{gcc}
2306 will not get errors.
2308 @vindex OMIT_DEPENDENCIES
2310 When added to the @file{Makefile.in}, the dependencies have all
2311 system-specific dependencies automatically removed.  This can be done by
2312 listing the files in @samp{OMIT_DEPENDENCIES}.  For instance all
2313 references to system header files are removed by Automake.  Sometimes it
2314 is useful to specify that a certain header file should be removed.  For
2315 instance if your @file{configure.in} uses @samp{AM_WITH_REGEX}, then any
2316 dependency on @file{rx.h} or @file{regex.h} should be removed, because
2317 the correct one cannot be known until the user configures the package.
2319 As it turns out, Automake is actually smart enough to handle the
2320 particular case of the regular expression header.  It will also
2321 automatically omit @file{libintl.h} if @samp{AM_GNU_GETTEXT} is used.
2323 @vindex AUTOMAKE_OPTIONS
2324 @opindex no-dependencies
2326 Automatic dependency tracking can be suppressed by putting
2327 @code{no-dependencies} in the variable @code{AUTOMAKE_OPTIONS}.
2329 If you unpack a distribution made by @code{make dist}, and you want to
2330 turn on the dependency-tracking code again, simply re-run
2331 @code{automake}.
2333 The actual dependency files are put under the build directory, in a
2334 subdirectory named @file{.deps}.  These dependencies are machine
2335 specific.  It is safe to delete them if you like; they will be
2336 automatically recreated during the next build.
2339 @node Other objects, Other GNU Tools, Programs, Top
2340 @chapter Other Derived Objects
2342 Automake can handle derived objects which are not C programs.  Sometimes
2343 the support for actually building such objects must be explicitly
2344 supplied, but Automake will still automatically handle installation and
2345 distribution.
2347 @menu
2348 * Scripts::                     Executable scripts
2349 * Headers::                     Header files
2350 * Data::                        Architecture-independent data files
2351 * Sources::                     Derived sources
2352 @end menu
2355 @node Scripts, Headers, Other objects, Other objects
2356 @section Executable Scripts
2358 @cindex _SCRIPTS primary, defined
2359 @cindex SCRIPTS primary, defined
2360 @cindex Primary variable, SCRIPTS
2362 It is possible to define and install programs which are scripts.  Such
2363 programs are listed using the @samp{SCRIPTS} primary name.  Automake
2364 doesn't define any dependencies for scripts; the @file{Makefile.am}
2365 should include the appropriate rules.
2366 @vindex SCRIPTS
2368 Automake does not assume that scripts are derived objects; such objects
2369 must be deleted by hand (@pxref{Clean}).
2371 The @code{automake} program itself is a Perl script that is generated at
2372 configure time from @file{automake.in}.  Here is how this is handled:
2374 @example
2375 bin_SCRIPTS = automake
2376 @end example
2378 Since @code{automake} appears in the @code{AC_OUTPUT} macro, a target
2379 for it is automatically generated.
2381 @cindex SCRIPTS, installation directories
2382 @cindex Installing scripts
2384 @vindex bin_SCRIPTS
2385 @vindex sbin_SCRIPTS
2386 @vindex libexec_SCRIPTS
2387 @vindex pkgdata_SCRIPTS
2388 @vindex noinst_SCRIPTS
2390 Script objects can be installed in @code{bindir}, @code{sbindir},
2391 @code{libexecdir}, or @code{pkgdatadir}.
2394 @node Headers, Data, Scripts, Other objects
2395 @section Header files
2397 @cindex _HEADERS primary, defined
2398 @cindex HEADERS primary, defined
2399 @cindex Primary variable, HEADERS
2401 @vindex noinst_HEADERS
2403 Header files are specified by the @samp{HEADERS} family of variables.
2404 Generally header files are not installed, so the @code{noinst_HEADERS}
2405 variable will be the most used.
2406 @vindex HEADERS
2408 All header files must be listed somewhere; missing ones will not appear
2409 in the distribution.  Often it is clearest to list uninstalled headers
2410 with the rest of the sources for a program.  @xref{A Program}.  Headers
2411 listed in a @samp{_SOURCES} variable need not be listed in any
2412 @samp{_HEADERS} variable.
2414 @cindex HEADERS, installation directories
2415 @cindex Installing headers
2417 @vindex include_HEADERS
2418 @vindex oldinclude_HEADERS
2419 @vindex pkginclude_HEADERS
2421 Headers can be installed in @code{includedir}, @code{oldincludedir}, or
2422 @code{pkgincludedir}.
2425 @node Data, Sources, Headers, Other objects
2426 @section Architecture-independent data files
2428 @cindex _DATA primary, defined
2429 @cindex DATA primary, defined
2430 @cindex Primary variable, DATA
2432 Automake supports the installation of miscellaneous data files using the
2433 @samp{DATA} family of variables.
2434 @vindex DATA
2436 @vindex data_DATA
2437 @vindex sysconf_DATA
2438 @vindex sharedstate_DATA
2439 @vindex localstate_DATA
2440 @vindex pkgdata_DATA
2442 Such data can be installed in the directories @code{datadir},
2443 @code{sysconfdir}, @code{sharedstatedir}, @code{localstatedir}, or
2444 @code{pkgdatadir}.
2446 By default, data files are @emph{not} included in a distribution.
2448 Here is how Automake installs its auxiliary data files:
2450 @example
2451 pkgdata_DATA = clean-kr.am clean.am @dots{}
2452 @end example
2455 @node Sources,  , Data, Other objects
2456 @section Built sources
2458 @cindex BUILT_SOURCES, defined
2460 Occasionally a file which would otherwise be called @samp{source}
2461 (e.g. a C @samp{.h} file) is actually derived from some other file.
2462 Such files should be listed in the @code{BUILT_SOURCES} variable.
2463 @vindex BUILT_SOURCES
2465 @code{BUILT_SOURCES} is actually a bit of a misnomer, as any file which
2466 must be created early in the build process can be listed in this
2467 variable.
2469 A source file listed in @code{BUILT_SOURCES} is created before the other
2470 @code{all} targets are made.  However, such a source file is not
2471 compiled unless explicitly requested by mentioning it in some other
2472 @samp{_SOURCES} variable.
2475 @node Other GNU Tools, Documentation, Other objects, Top
2476 @chapter Other GNU Tools
2478 Since Automake is primarily intended to generate @file{Makefile.in}s for
2479 use in GNU programs, it tries hard to interoperate with other GNU tools.
2481 @menu
2482 * Emacs Lisp::                  Emacs Lisp
2483 * gettext::                     Gettext
2484 * Guile::                       Guile
2485 * Libtool::                     Libtool
2486 * Java::                        Java
2487 * Python::                      Python
2488 @end menu
2491 @node Emacs Lisp, gettext, Other GNU Tools, Other GNU Tools
2492 @section Emacs Lisp
2494 @cindex _LISP primary, defined
2495 @cindex LISP primary, defined
2496 @cindex Primary variable, LISP
2498 @vindex LISP
2499 @vindex lisp_LISP
2500 @vindex noinst_LISP
2502 Automake provides some support for Emacs Lisp.  The @samp{LISP} primary
2503 is used to hold a list of @file{.el} files.  Possible prefixes for this
2504 primary are @samp{lisp_} and @samp{noinst_}.  Note that if
2505 @code{lisp_LISP} is defined, then @file{configure.in} must run
2506 @code{AM_PATH_LISPDIR} (@pxref{Macros}).
2508 @vindex ELCFILES
2510 By default Automake will byte-compile all Emacs Lisp source files using
2511 the Emacs found by @code{AM_PATH_LISPDIR}.  If you wish to avoid
2512 byte-compiling, simply define the variable @code{ELCFILES} to be empty.
2513 Byte-compiled Emacs Lisp files are not portable among all versions of
2514 Emacs, so it makes sense to turn this off if you expect sites to have
2515 more than one version of Emacs installed.  Furthermore, many packages
2516 don't actually benefit from byte-compilation.  Still, we recommend that
2517 you leave it enabled by default.  It is probably better for sites with
2518 strange setups to cope for themselves than to make the installation less
2519 nice for everybody else.
2522 @node gettext, Guile, Emacs Lisp, Other GNU Tools
2523 @section Gettext
2525 @cindex GNU Gettext support
2526 @cindex Gettext support
2527 @cindex Support for GNU Gettext
2529 If @code{AM_GNU_GETTEXT} is seen in @file{configure.in}, then Automake
2530 turns on support for GNU gettext, a message catalog system for
2531 internationalization
2532 (@pxref{GNU Gettext, , , gettext, GNU gettext utilities}).
2534 The @code{gettext} support in Automake requires the addition of two
2535 subdirectories to the package, @file{intl} and @file{po}.  Automake
2536 insures that these directories exist and are mentioned in
2537 @code{SUBDIRS}.
2539 Furthermore, Automake checks that the definition of @code{ALL_LINGUAS}
2540 in @file{configure.in} corresponds to all the valid @file{.po} files,
2541 and nothing more.
2544 @node Guile, Libtool, gettext, Other GNU Tools
2545 @section Guile
2547 Automake provides some automatic support for writing Guile modules.
2548 Automake will turn on Guile support if the @code{AM_INIT_GUILE_MODULE}
2549 macro is used in @file{configure.in}.
2551 Right now Guile support just means that the @code{AM_INIT_GUILE_MODULE}
2552 macro is understood to mean:
2553 @itemize @bullet
2554 @item
2555 @code{AM_INIT_AUTOMAKE} is run.
2557 @item
2558 @code{AC_CONFIG_AUX_DIR} is run, with a path of @file{..}.
2559 @end itemize
2561 As the Guile module code matures, no doubt the Automake support will
2562 grow as well.
2565 @node Libtool, Java, Guile, Other GNU Tools
2566 @section Libtool
2568 Automake provides support for GNU Libtool (@pxref{Top, , Introduction,
2569 libtool, The Libtool Manual}) with the @samp{LTLIBRARIES} primary.
2570 @xref{A Shared Library}.
2573 @node Java, Python, Libtool, Other GNU Tools
2574 @section Java
2576 @cindex _JAVA primary, defined
2577 @cindex JAVA primary, defined
2578 @cindex Primary variable, JAVA
2580 Automake provides some minimal support for Java compilation with the
2581 @samp{JAVA} primary.
2583 Any @file{.java} files listed in a @samp{_JAVA} variable will be
2584 compiled with @code{JAVAC} at build time.  By default, @file{.class}
2585 files are not included in the distribution.
2587 @cindex JAVA restrictions
2588 @cindex Restrictions for JAVA
2590 Currently Automake enforces the restriction that only one @samp{_JAVA}
2591 primary can be used in a given @file{Makefile.am}.  The reason for this
2592 restriction is that, in general, it isn't possible to know which
2593 @file{.class} files were generated from which @file{.java} files -- so
2594 it would be impossible to know which files to install where.
2596 @node Python,  , Java, Other GNU Tools
2597 @section Python
2599 @cindex _PYTHON primary, defined
2600 @cindex PYTHON primary, defined
2601 @cindex Primary variable, PYTHON
2604 Automake provides support for Python modules.  Automake will turn on
2605 Python support if the @code{AM_CHECK_PYTHON} macro is used in
2606 @file{configure.in}.  The @samp{PYTHON} primary is used to hold a list
2607 of @file{.py} files.  Possible prefixes for this primary are
2608 @samp{python_} and @samp{noinst_}.  Note that if @code{python_PYTHON} is
2609 defined, then @file{configure.in} must run @code{AM_CHECK_PYTHON}.
2611 @code{AM_CHECK_PYTHON} takes a single argument --- either the word
2612 @samp{module} or @samp{package}.  The first installs files directly into
2613 the @file{site-packages} directory and is used when the @file{.py[co]}
2614 files must be on the @code{PYTHONPATH}.  The second is used for modules
2615 distributed as a package, which should be installed in a subdirectory
2616 of @file{site-packages} and contain the @file{__init__.py} file.  The
2617 subdirectory name is the same as the name given by @samp{PACKAGE}.
2620 @code{AM_CHECK_PYTHON} creates several output variables based on the
2621 Python installation found during configuration.
2623 @table @samp
2624 @item PYTHON
2625 The name of the Python executable.
2627 @item PYTHON_VERSION
2628 The Python version number, in the form @var{major}.@var{minor}
2629 (e.g. @samp{1.5}).  This is currently the value of
2630 @code{sys.version[:3]}.
2632 @item PYTHON_PREFIX
2633 The string @code{$prefix}.  This term may be used in future work
2634 which needs the contents of Python's @code{sys.prefix}, but general
2635 consensus is to always use the value from configure.
2637 @item PYTHON_EXEC_PREFIX
2638 The string @code{$exec_prefix}.  This term may be used in future work
2639 which needs the contents of Python's @code{sys.exec_prefix}, but general
2640 consensus is to always use the value from configure.
2642 @item PYTHON_PLATFORM
2643 The canonical name used by Python to describe the operating system, as
2644 given by @code{sys.platform}.  This value is sometimes needed when
2645 building Python extensions.
2647 @item pythondir
2648 The directory name for the top of the standard Python library.
2650 @item PYTHON_SITE
2651 The location of the platform-independent @file{site-packages} directory,
2652 where `module' files are installed.  Note that older versions of Python
2653 (pre-1.5) used @file{$prefix/lib/site-python} so future versions of
2654 Automake's Python support may provide backwards compatibility.
2656 @item PYTHON_SITE_PACKAGE
2657 The string @code{$PYTHON_SITE/$PACKAGE}.  This is the default
2658 installation directory for a Python `package.'
2660 @item PYTHON_SITE_INSTALL
2661 The top-level directory in which the Python files will be installed.  It
2662 will be the value of either @samp{PYTHON_SITE} or @samp{PYTHON_PACKAGE}
2663 depending on the argument given to @code{AM_CHECK_PYTHON}.
2665 @item PYTHON_SITE_EXEC
2666 The location of the platform-dependent @file{site-packages} directory,
2667 where shared library extensions should be placed.  Note that older
2668 versions of Python (pre-1.5) used @file{sharedmodules} so future version
2669 of Automake's Python support may provide backwards compatibility.
2671 @end table
2673 @vindex PYCFILES
2674 @vindex PYOFILES
2676 By default Automake will byte-compile all Python source files to both
2677 @file{.pyc} and @file{.pyo} forms.  If you wish to avoid generating the
2678 optimized byte-code files, simply define the variable @code{PYOFILES} to
2679 be empty.  Similarly, if you don't wish to generate the standard
2680 byte-compiled files, define the variable @code{PYCFILES} to be empty.
2683 @node Documentation, Install, Other GNU Tools, Top
2684 @chapter Building documentation
2686 Currently Automake provides support for Texinfo and man pages.
2688 @menu
2689 * Texinfo::                     Texinfo
2690 * Man pages::                   Man pages
2691 @end menu
2694 @node Texinfo, Man pages, Documentation, Documentation
2695 @section Texinfo
2697 @cindex _TEXINFOS primary, defined
2698 @cindex TEXINFOS primary, defined
2699 @cindex Primary variable, TEXINFOS
2701 If the current directory contains Texinfo source, you must declare it
2702 with the @samp{TEXINFOS} primary.  Generally Texinfo files are converted
2703 into info, and thus the @code{info_TEXINFOS} macro is most commonly used
2704 here.  Note that any Texinfo source file must end in the @file{.texi} or
2705 @file{.texinfo} extension.
2706 @vindex TEXINFOS
2707 @vindex info_TEXINFOS
2709 @cindex Texinfo macro, VERSION
2710 @cindex Texinfo macro, UPDATED
2711 @cindex Texinfo macro, EDITION
2713 @cindex VERSION Texinfo macro
2714 @cindex UPDATED Texinfo macro
2715 @cindex EDITION Texinfo macro
2717 @cindex mdate-sh
2719 If the @file{.texi} file @code{@@include}s @file{version.texi}, then
2720 that file will be automatically generated.  The file @file{version.texi}
2721 defines three Texinfo macros you can reference: @code{EDITION},
2722 @code{VERSION}, and @code{UPDATED}.  The first two hold the version
2723 number of your package (but are kept separate for clarity); the last is
2724 the date the primary file was last modified.  The @file{version.texi}
2725 support requires the @code{mdate-sh} program; this program is supplied
2726 with Automake and automatically included when @code{automake} is invoked
2727 with the @code{--add-missing} option.
2729 If you have multiple Texinfo files, and you want to use the
2730 @file{version.texi} feature, then you have to have a separate version
2731 file for each Texinfo file.  Automake will treat any include in a
2732 Texinfo file that matches @samp{vers*.texi} just as an automatically
2733 generated version file.
2735 Sometimes an info file actually depends on more than one @file{.texi}
2736 file.  For instance, in GNU Hello, @file{hello.texi} includes the file
2737 @file{gpl.texi}.  You can tell Automake about these dependencies using
2738 the @code{@var{texi}_TEXINFOS} variable.  Here is how GNU Hello does it:
2739 @vindex TEXINFOS
2740 @vindex _TEXINFOS
2742 @example
2743 info_TEXINFOS = hello.texi
2744 hello_TEXINFOS = gpl.texi
2745 @end example
2747 @cindex texinfo.tex
2749 By default, Automake requires the file @file{texinfo.tex} to appear in
2750 the same directory as the Texinfo source.  However, if you used
2751 @code{AC_CONFIG_AUX_DIR} in @file{configure.in} (@pxref{Input, , Finding
2752 `configure' Input, autoconf, The Autoconf Manual}), then
2753 @file{texinfo.tex} is looked for there.  Automake supplies
2754 @file{texinfo.tex} if @samp{--add-missing} is given.
2756 @vindex TEXINFO_TEX
2758 If your package has Texinfo files in many directories, you can use the
2759 variable @code{TEXINFO_TEX} to tell Automake where to find the canonical
2760 @file{texinfo.tex} for your package.  The value of this variable should
2761 be the relative path from the current @file{Makefile.am} to
2762 @file{texinfo.tex}:
2764 @example
2765 TEXINFO_TEX = ../doc/texinfo.tex
2766 @end example
2768 @opindex no-texinfo.tex
2770 The option @samp{no-texinfo.tex} can be used to eliminate the
2771 requirement for @file{texinfo.tex}.  Use of the variable
2772 @code{TEXINFO_TEX} is preferable, however, because that allows the
2773 @code{dvi} target to still work.
2775 @cindex Target, install-info
2776 @cindex Target, noinstall-info
2777 @cindex install-info target
2778 @cindex noinstall-info target
2780 @opindex no-installinfo
2781 @trindex install-info
2783 Automake generates an @code{install-info} target; some people apparently
2784 use this.  By default, info pages are installed by @samp{make install}.
2785 This can be prevented via the @code{no-installinfo} option.
2788 @node Man pages,  , Texinfo, Documentation
2789 @section Man pages
2791 @cindex _MANS primary, defined
2792 @cindex MANS primary, defined
2793 @cindex Primary variable, MANS
2795 A package can also include man pages (but see the GNU standards on this
2796 matter, @ref{Man Pages, , , standards, The GNU Coding Standards}.)  Man
2797 pages are declared using the @samp{MANS} primary.  Generally the
2798 @code{man_MANS} macro is used.  Man pages are automatically installed in
2799 the correct subdirectory of @code{mandir}, based on the file extension.
2800 They are not automatically included in the distribution.
2801 @vindex MANS
2802 @vindex man_MANS
2804 @cindex Target, install-man
2805 @cindex Target, noinstall-man
2806 @cindex install-man target
2807 @cindex noinstall-man target
2809 @c Use @samp{make install} per documentation: (texi)code.
2810 By default, man pages are installed by @samp{make install}.  However,
2811 since the GNU project does not require man pages, many maintainers do
2812 not expend effort to keep the man pages up to date.  In these cases, the
2813 @code{no-installman} option will prevent the man pages from being
2814 installed by default.  The user can still explicitly install them via
2815 @samp{make install-man}.
2816 @opindex no-installman
2817 @trindex install-man
2819 Here is how the documentation is handled in GNU @code{cpio} (which
2820 includes both Texinfo documentation and man pages):
2822 @example
2823 info_TEXINFOS = cpio.texi
2824 man_MANS = cpio.1 mt.1
2825 EXTRA_DIST = $(man_MANS)
2826 @end example
2828 Texinfo source and info pages are all considered to be source for the
2829 purposes of making a distribution.
2831 Man pages are not currently considered to be source, because it is not
2832 uncommon for man pages to be automatically generated.  For the same
2833 reason, they are not automatically included in the distribution.
2836 @node Install, Clean, Documentation, Top
2837 @chapter What Gets Installed
2839 @cindex Installation support
2840 @cindex make install support
2842 Naturally, Automake handles the details of actually installing your
2843 program once it has been built.  All @code{PROGRAMS}, @code{SCRIPTS},
2844 @code{LIBRARIES}, @code{LISP}, @code{DATA} and @code{HEADERS} are
2845 automatically installed in the appropriate places.
2847 Automake also handles installing any specified info and man pages.
2849 Automake generates separate @code{install-data} and @code{install-exec}
2850 targets, in case the installer is installing on multiple machines which
2851 share directory structure---these targets allow the machine-independent
2852 parts to be installed only once.  The @code{install} target depends on
2853 both of these targets.
2854 @trindex install-data
2855 @trindex install-exec
2856 @trindex install
2858 Automake also generates an @code{uninstall} target, an
2859 @code{installdirs} target, and an @code{install-strip} target.
2860 @trindex uninstall
2861 @trindex installdirs
2862 @trindex install-strip
2864 It is possible to extend this mechanism by defining an
2865 @code{install-exec-local} or @code{install-data-local} target.  If these
2866 targets exist, they will be run at @samp{make install} time.
2867 @trindex install-exec-local
2868 @trindex install-data-local
2870 Variables using the standard directory prefixes @samp{data},
2871 @samp{info}, @samp{man}, @samp{include}, @samp{oldinclude},
2872 @samp{pkgdata}, or @samp{pkginclude} (e.g. @samp{data_DATA}) are
2873 installed by @samp{install-data}.
2875 Variables using the standard directory prefixes @samp{bin}, @samp{sbin},
2876 @samp{libexec}, @samp{sysconf}, @samp{localstate}, @samp{lib}, or
2877 @samp{pkglib} (e.g. @samp{bin_PROGRAMS}) are installed by
2878 @samp{install-exec}.
2880 Any variable using a user-defined directory prefix with @samp{exec} in
2881 the name (e.g. @samp{myexecbin_PROGRAMS} is installed by
2882 @samp{install-exec}.  All other user-defined prefixes are installed by
2883 @samp{install-data}.
2885 @vindex DESTDIR
2886 Automake generates support for the @samp{DESTDIR} variable in all
2887 install rules.  @samp{DESTDIR} is used during the @samp{make install}
2888 step to relocate install objects into a staging area.  Each object and
2889 path is prefixed with the value of @samp{DESTDIR} before being copied
2890 into the install area.  Here is an example of typical DESTDIR usage:
2892 @example
2893 make DESTDIR=/tmp/staging install
2894 @end example
2896 This places install objects in a directory tree built under
2897 @file{/tmp/staging}.  If @file{/gnu/bin/foo} and
2898 @file{/gnu/share/aclocal/foo.m4} are to be installed, the above command
2899 would install @file{/tmp/staging/gnu/bin/foo} and
2900 @file{/tmp/staging/gnu/share/aclocal/foo.m4}.
2902 This feature is commonly used to build install images and packages.  For
2903 more information, see @ref{Makefile Conventions, , , standards, The GNU
2904 Coding Standards}.
2907 @node Clean, Dist, Install, Top
2908 @chapter What Gets Cleaned
2910 @cindex make clean support
2912 The GNU Makefile Standards specify a number of different clean rules.
2913 @c FIXME xref
2914 Generally the files that can be cleaned are determined automatically by
2915 Automake.  Of course, Automake also recognizes some variables that can
2916 be defined to specify additional files to clean.  These variables are
2917 @code{MOSTLYCLEANFILES}, @code{CLEANFILES}, @code{DISTCLEANFILES}, and
2918 @code{MAINTAINERCLEANFILES}.
2919 @vindex MOSTLYCLEANFILES
2920 @vindex CLEANFILES
2921 @vindex DISTCLEANFILES
2922 @vindex MAINTAINERCLEANFILES
2925 @node Dist, Tests, Clean, Top
2926 @chapter What Goes in a Distribution
2928 @cindex make dist
2929 @cindex make distcheck
2931 The @code{dist} target in the generated @file{Makefile.in} can be used
2932 to generate a gzip'd @code{tar} file for distribution.  The tar file is
2933 named based on the @samp{PACKAGE} and @samp{VERSION} variables; more
2934 precisely it is named @samp{@var{package}-@var{version}.tar.gz}.
2935 @cvindex PACKAGE
2936 @cvindex VERSION
2937 @trindex dist
2938 You can use the @code{make} variable @samp{GZIP_ENV} to control how gzip
2939 is run.  The default setting is @samp{--best}.
2941 For the most part, the files to distribute are automatically found by
2942 Automake: all source files are automatically included in a distribution,
2943 as are all @file{Makefile.am}s and @file{Makefile.in}s.  Automake also
2944 has a built-in list of commonly used files which, if present in the
2945 current directory, are automatically included.  This list is printed by
2946 @samp{automake --help}.  Also, files which are read by @code{configure}
2947 (i.e. the source files corresponding to the files specified in the
2948 @code{AC_OUTPUT} invocation) are automatically distributed.
2950 Still, sometimes there are files which must be distributed, but which
2951 are not covered in the automatic rules.  These files should be listed in
2952 the @code{EXTRA_DIST} variable.  You can mention files from
2953 subdirectories in @code{EXTRA_DIST}.  You can also mention a directory
2954 there; in this case the entire directory will be recursively copied into
2955 the distribution.
2956 @vindex EXTRA_DIST
2958 Sometimes you need tighter control over what does @emph{not} go into the
2959 distribution; for instance you might have source files which are
2960 generated and which you do not want to distribute.  In this case
2961 Automake gives fine-grained control using the @samp{dist} and
2962 @samp{nodist} prefixes.  Any primary or @samp{_SOURCES} variable can be
2963 prefixed with @samp{dist_} to add the listed files to the distribution.
2964 Similarly, @samp{nodist_} can be used to omit the files from the
2965 distribution.
2966 @vindex dist_
2967 @vindex nodist_
2969 As an example, here is how you would cause some data to be distributed
2970 while leaving some source code out of the distribution:
2972 @example
2973 dist_data_DATA = distribute-this
2974 bin_PROGRAMS = foo
2975 nodist_foo_SOURCES = do-not-distribute.c
2976 @end example
2978 If you define @code{SUBDIRS}, Automake will recursively include the
2979 subdirectories in the distribution.  If @code{SUBDIRS} is defined
2980 conditionally (@pxref{Conditionals}), Automake will normally include all
2981 directories that could possibly appear in @code{SUBDIRS} in the
2982 distribution.  If you need to specify the set of directories
2983 conditionally, you can set the variable @code{DIST_SUBDIRS} to the exact
2984 list of subdirectories to include in the distribution.
2985 @vindex DIST_SUBDIRS
2987 @trindex dist-hook
2989 Occasionally it is useful to be able to change the distribution before
2990 it is packaged up.  If the @code{dist-hook} target exists, it is run
2991 after the distribution directory is filled, but before the actual tar
2992 (or shar) file is created.  One way to use this is for distributing
2993 files in subdirectories for which a new @file{Makefile.am} is overkill:
2995 @example
2996 dist-hook:
2997         mkdir $(distdir)/random
2998         cp -p $(srcdir)/random/a1 $(srcdir)/random/a2 $(distdir)/random
2999 @end example
3001 Automake also generates a @code{distcheck} target which can be of help
3002 to ensure that a given distribution will actually work.
3003 @code{distcheck} makes a distribution, and then tries to do a
3004 @code{VPATH} build.
3005 @trindex distcheck
3006 @c FIXME: document distcheck-hook here
3009 @node Tests, Options, Dist, Top
3010 @chapter Support for test suites
3012 @cindex Test suites
3013 @cindex make check
3015 Automake supports two forms of test suites.
3017 If the variable @code{TESTS} is defined, its value is taken to be a list
3018 of programs to run in order to do the testing.  The programs can either
3019 be derived objects or source objects; the generated rule will look both
3020 in @code{srcdir} and @file{.}.  Programs needing data files should look
3021 for them in @code{srcdir} (which is both an environment variable and a
3022 make variable) so they work when building in a separate directory
3023 (@pxref{Build Directories, , Build Directories , autoconf, The Autoconf
3024 Manual}), and in particular for the @code{distcheck} target
3025 (@pxref{Dist}).
3027 @cindex Exit status 77, special interpretation
3029 The number of failures will be printed at the end of the run.  If a
3030 given test program exits with a status of 77, then its result is ignored
3031 in the final count.  This feature allows non-portable tests to be
3032 ignored in environments where they don't make sense.
3034 The variable @code{TESTS_ENVIRONMENT} can be used to set environment
3035 variables for the test run; the environment variable @code{srcdir} is
3036 set in the rule.  If all your test programs are scripts, you can also
3037 set @code{TESTS_ENVIRONMENT} to an invocation of the shell (e.g.
3038 @samp{$(SHELL) -x}); this can be useful for debugging the tests.
3039 @vindex TESTS
3040 @vindex TESTS_ENVIRONMENT
3042 If @uref{ftp://prep.ai.mit.edu/pub/gnu/dejagnu-1.3.tar.gz,
3043 @samp{dejagnu}} appears in @code{AUTOMAKE_OPTIONS}, then a
3044 @code{dejagnu}-based test suite is assumed.  The variable
3045 @code{DEJATOOL} is a list of names which are passed, one at a time, as
3046 the @code{--tool} argument to @code{runtest} invocations; it defaults to
3047 the name of the package.
3049 The variable @code{RUNTESTDEFAULTFLAGS} holds the @code{--tool} and
3050 @code{--srcdir} flags that are passed to dejagnu by default; this can be
3051 overridden if necessary.
3052 @vindex RUNTESTDEFAULTFLAGS
3054 The variables @code{EXPECT}, @code{RUNTEST} and @code{RUNTESTFLAGS} can
3055 also be overridden to provide project-specific values.  For instance,
3056 you will need to do this if you are testing a compiler toolchain,
3057 because the default values do not take into account host and target
3058 names.
3059 @opindex dejagnu
3060 @vindex DEJATOOL
3061 @vindex EXPECT
3062 @vindex RUNTEST
3063 @vindex RUNTESTFLAGS
3064 @c FIXME xref dejagnu
3066 If you're not using dejagnu, you may define the variable
3067 @samp{XFAIL_TESTS} to a list of tests (usually a subset of @samp{TESTS})
3068 that are expected to fail.  This will reverse the result of those tests.
3070 In either case, the testing is done via @samp{make check}.
3073 @node Options, Miscellaneous, Tests, Top
3074 @chapter Changing Automake's Behavior
3076 Various features of Automake can be controlled by options in the
3077 @file{Makefile.am}.  Such options are listed in a special variable named
3078 @code{AUTOMAKE_OPTIONS}.  Currently understood options are:
3079 @vindex AUTOMAKE_OPTIONS
3081 @table @asis
3082 @item @code{gnits}
3083 @itemx @code{gnu}
3084 @itemx @code{foreign}
3085 @item @code{cygnus}
3086 @cindex Option, gnits
3087 @cindex Option, gnu
3088 @cindex Option, foreign
3089 @cindex Option, cygnus
3091 Set the strictness as appropriate.  The @code{gnits} option also implies
3092 @code{readme-alpha} and @code{check-news}.
3094 @item @code{ansi2knr}
3095 @itemx @code{path/ansi2knr}
3096 @cindex Option, ansi2knr
3097 Turn on automatic de-ANSI-fication.  @xref{ANSI}.  If preceded by a
3098 path, the generated @file{Makefile.in} will look in the specified
3099 directory to find the @file{ansi2knr} program.  Generally the path
3100 should be a relative path to another directory in the same distribution
3101 (though Automake currently does not check this).
3103 @item @code{check-news}
3104 @cindex Option, check-news
3105 Cause @code{make dist} to fail unless the current version number appears
3106 in the first few lines of the @file{NEWS} file.
3108 @item @code{dejagnu}
3109 @cindex Option, dejagnu
3110 Cause @code{dejagnu}-specific rules to be generated.  @xref{Tests}.
3112 @item @code{dist-bzip2}
3113 @cindex Option, dist-bzip2
3114 Generate a @code{dist-bzip2} target as well as the ordinary @code{dist}
3115 target.  This new target will create a bzip2 tar archive of the
3116 distribution.  bzip2 archives are frequently smaller than even gzipped
3117 archives.
3118 @trindex dist-bzip2
3120 @item @code{dist-shar}
3121 @cindex Option, dist-shar
3122 Generate a @code{dist-shar} target as well as the ordinary @code{dist}
3123 target.  This new target will create a shar archive of the
3124 distribution.
3125 @trindex dist-shar
3127 @item @code{dist-zip}
3128 @cindex Option, dist-zip
3129 Generate a @code{dist-zip} target as well as the ordinary @code{dist}
3130 target.  This new target will create a zip archive of the distribution.
3131 @trindex dist-zip
3133 @item @code{dist-tarZ}
3134 @cindex Option, dist-tarZ
3135 Generate a @code{dist-tarZ} target as well as the ordinary @code{dist}
3136 target.  This new target will create a compressed tar archive of the
3137 distribution.
3138 @trindex dist-tarZ
3140 @item @code{no-dependencies}
3141 @cindex Option, no-dependencies
3142 This is similar to using @samp{--include-deps} on the command line, but
3143 is useful for those situations where you don't have the necessary bits
3144 to make automatic dependency tracking work @xref{Dependencies}.  In this
3145 case the effect is to effectively disable automatic dependency tracking.
3147 @item @code{no-installinfo}
3148 @cindex Option, no-installinfo
3149 The generated @file{Makefile.in} will not cause info pages to be built
3150 or installed by default.  However, @code{info} and @code{install-info}
3151 targets will still be available.  This option is disallowed at
3152 @samp{GNU} strictness and above.
3153 @trindex info
3154 @trindex install-info
3156 @item @code{no-installman}
3157 @cindex Option, no-installman
3158 The generated @file{Makefile.in} will not cause man pages to be
3159 installed by default.  However, an @code{install-man} target will still
3160 be available for optional installation.  This option is disallowed at
3161 @samp{GNU} strictness and above.
3162 @trindex install-man
3164 @item @code{nostdinc}
3165 @cindex Option, nostdinc
3166 This option can be used to disable the standard @samp{-I} options which
3167 are ordinarily automatically provided by Automake.
3169 @item @code{no-texinfo.tex}
3170 @cindex Option, no-texinfo
3171 Don't require @file{texinfo.tex}, even if there are texinfo files in
3172 this directory.
3174 @item @code{readme-alpha}
3175 @cindex Option, readme-alpha
3176 If this release is an alpha release, and the file @file{README-alpha}
3177 exists, then it will be added to the distribution.  If this option is
3178 given, version numbers are expected to follow one of two forms.  The
3179 first form is @samp{@var{MAJOR}.@var{MINOR}.@var{ALPHA}}, where each
3180 element is a number; the final period and number should be left off for
3181 non-alpha releases.  The second form is
3182 @samp{@var{MAJOR}.@var{MINOR}@var{ALPHA}}, where @var{ALPHA} is a
3183 letter; it should be omitted for non-alpha releases.
3185 @item @var{version}
3186 @cindex Option, version
3187 A version number (e.g. @samp{0.30}) can be specified.  If Automake is not
3188 newer than the version specified, creation of the @file{Makefile.in}
3189 will be suppressed.
3190 @end table
3192 Unrecognized options are diagnosed by @code{automake}.
3195 @node Miscellaneous, Include, Options, Top
3196 @chapter Miscellaneous Rules
3198 There are a few rules and variables that didn't fit anywhere else.
3200 @menu
3201 * Tags::                        Interfacing to etags and mkid
3202 * Suffixes::                    Handling new file extensions
3203 @end menu
3206 @node Tags, Suffixes, Miscellaneous, Miscellaneous
3207 @section Interfacing to @code{etags}
3209 @cindex TAGS support
3211 Automake will generate rules to generate @file{TAGS} files for use with
3212 GNU Emacs under some circumstances.
3214 If any C, C++ or Fortran 77 source code or headers are present, then
3215 @code{tags} and @code{TAGS} targets will be generated for the directory.
3216 @trindex tags
3218 At the topmost directory of a multi-directory package, a @code{tags}
3219 target file will be generated which, when run, will generate a
3220 @file{TAGS} file that includes by reference all @file{TAGS} files from
3221 subdirectories.
3223 Also, if the variable @code{ETAGS_ARGS} is defined, a @code{tags} target
3224 will be generated.  This variable is intended for use in directories
3225 which contain taggable source that @code{etags} does not understand.
3226 @vindex ETAGS_ARGS
3228 Here is how Automake generates tags for its source, and for nodes in its
3229 Texinfo file:
3231 @example
3232 ETAGS_ARGS = automake.in --lang=none \
3233  --regex='/^@@node[ \t]+\([^,]+\)/\1/' automake.texi
3234 @end example
3236 If you add filenames to @samp{ETAGS_ARGS}, you will probably also
3237 want to set @samp{TAGS_DEPENDENCIES}.  The contents of this variable
3238 are added directly to the dependencies for the @code{tags} target.
3239 @vindex TAGS_DEPENDENCIES
3241 Automake will also generate an @code{ID} target which will run
3242 @code{mkid} on the source.  This is only supported on a
3243 directory-by-directory basis.
3244 @trindex id
3246 Automake also supports the GNU Global Tags program.  The @code{GTAGS}
3247 target runs Global Tags automatically and puts the result in the top
3248 build directory.
3251 @node Suffixes,  , Tags, Miscellaneous
3252 @section Handling new file extensions
3254 @cindex Adding new SUFFIXES
3255 @cindex SUFFIXES, adding
3257 It is sometimes useful to introduce a new implicit rule to handle a file
3258 type that Automake does not know about.  If this is done, you must
3259 notify GNU Make of the new suffixes.  This can be done by putting a list
3260 of new suffixes in the @code{SUFFIXES} variable.
3261 @vindex SUFFIXES
3263 For instance, currently Automake does not provide any Java support.  If
3264 you wrote a macro to generate @samp{.class} files from @samp{.java}
3265 source files, you would also need to add these suffixes to the list:
3267 @example
3268 SUFFIXES = .java .class
3269 @end example
3271 Any given @code{SUFFIXES} go at the start of the generated suffixes
3272 list, followed by automake generated suffixes not already in the list.
3275 @node Include, Conditionals, Miscellaneous, Top
3276 @chapter Include
3278 @cmindex include
3279 To include another file (perhaps for common rules),
3280 the following syntax is supported:
3282 include ($(srcdir)|$(top_srcdir))/filename
3284 Using files in the current directory:
3285 @example
3286 include $(srcdir)/Makefile.extra
3287 @end example
3289 @example
3290 include Makefile.generated
3291 @end example
3293 Using a file in the top level directory:
3294 @example
3295 include $(top_srcdir)/filename
3296 @end example
3299 @node Conditionals, Gnits, Include, Top
3300 @chapter Conditionals
3302 @cindex Conditionals
3304 Automake supports a simple type of conditionals.
3306 @cvindex AM_CONDITIONAL
3307 Before using a conditional, you must define it by using
3308 @code{AM_CONDITIONAL} in the @code{configure.in} file (@pxref{Macros}).
3309 The @code{AM_CONDITIONAL} macro takes two arguments.
3311 The first argument to @code{AM_CONDITIONAL} is the name of the
3312 conditional.  This should be a simple string starting with a letter and
3313 containing only letters, digits, and underscores.
3315 The second argument to @code{AM_CONDITIONAL} is a shell condition,
3316 suitable for use in a shell @code{if} statement.  The condition is
3317 evaluated when @code{configure} is run.
3319 @cindex --enable-debug, example
3320 @cindex Example conditional --enable-debug
3321 @cindex Conditional example,  --enable-debug
3323 Conditionals typically depend upon options which the user provides to
3324 the @code{configure} script.  Here is an example of how to write a
3325 conditional which is true if the user uses the @samp{--enable-debug}
3326 option.
3328 @example
3329 AC_ARG_ENABLE(debug,
3330 [  --enable-debug    Turn on debugging],
3331 [case "$@{enableval@}" in
3332   yes) debug=true ;;
3333   no)  debug=false ;;
3334   *) AC_MSG_ERROR(bad value $@{enableval@} for --enable-debug) ;;
3335 esac],[debug=false])
3336 AM_CONDITIONAL(DEBUG, test x$debug = xtrue)
3337 @end example
3339 Here is an example of how to use that conditional in @file{Makefile.am}:
3341 @cmindex if
3342 @cmindex endif
3343 @cmindex else
3345 @example
3346 if DEBUG
3347 DBG = debug
3348 else
3349 DBG =
3350 endif
3351 noinst_PROGRAMS = $(DBG)
3352 @end example
3354 This trivial example could also be handled using EXTRA_PROGRAMS
3355 (@pxref{A Program}).
3357 You may only test a single variable in an @code{if} statement.  The
3358 @code{else} statement may be omitted.  Conditionals may be nested to any
3359 depth.
3361 Note that conditionals in Automake are not the same as conditionals in
3362 GNU Make.  Automake conditionals are checked at configure time by the
3363 @file{configure} script, and affect the translation from
3364 @file{Makefile.in} to @file{Makefile}.  They are based on options passed
3365 to @file{configure} and on results that @file{configure} has discovered
3366 about the host system.  GNU Make conditionals are checked at @code{make}
3367 time, and are based on variables passed to the make program or defined
3368 in the @file{Makefile}.
3370 Automake conditionals will work with any make program.
3373 @node Gnits, Cygnus, Conditionals, Top
3374 @chapter The effect of @code{--gnu} and @code{--gnits}
3376 @cindex --gnu, required files
3377 @cindex --gnu, complete description
3379 The @samp{--gnu} option (or @samp{gnu} in the @samp{AUTOMAKE_OPTIONS}
3380 variable) causes @code{automake} to check the following:
3382 @itemize @bullet
3383 @item
3384 The files @file{INSTALL}, @file{NEWS}, @file{README}, @file{COPYING},
3385 @file{AUTHORS}, and @file{ChangeLog} are required at the topmost
3386 directory of the package.
3388 @item
3389 The options @samp{no-installman} and @samp{no-installinfo} are
3390 prohibited.
3391 @end itemize
3393 Note that this option will be extended in the future to do even more
3394 checking; it is advisable to be familiar with the precise requirements
3395 of the GNU standards.  Also, @samp{--gnu} can require certain
3396 non-standard GNU programs to exist for use by various maintainer-only
3397 targets; for instance in the future @code{pathchk} might be required for
3398 @samp{make dist}.
3400 @cindex --gnits, complete description
3402 The @samp{--gnits} option does everything that @samp{--gnu} does, and
3403 checks the following as well:
3405 @itemize @bullet
3406 @item
3407 @samp{make dist} will check to make sure the @file{NEWS} file has been
3408 updated to the current version.
3410 @item
3411 @samp{VERSION} is checked to make sure its format complies with Gnits
3412 standards.
3413 @c FIXME xref when standards are finished
3415 @item
3416 @cindex README-alpha
3417 If @samp{VERSION} indicates that this is an alpha release, and the file
3418 @file{README-alpha} appears in the topmost directory of a package, then
3419 it is included in the distribution.  This is done in @samp{--gnits}
3420 mode, and no other, because this mode is the only one where version
3421 number formats are constrained, and hence the only mode where Automake
3422 can automatically determine whether @file{README-alpha} should be
3423 included.
3425 @item
3426 The file @file{THANKS} is required.
3427 @end itemize
3430 @node Cygnus, Extending, Gnits, Top
3431 @chapter The effect of @code{--cygnus}
3433 @cindex Cygnus strictness
3435 Cygnus Solutions has slightly different rules for how a
3436 @file{Makefile.in} is to be constructed.  Passing @samp{--cygnus} to
3437 @code{automake} will cause any generated @file{Makefile.in} to comply
3438 with Cygnus rules.
3440 Here are the precise effects of @samp{--cygnus}:
3442 @itemize @bullet
3443 @item
3444 Info files are always created in the build directory, and not in the
3445 source directory.
3447 @item
3448 @file{texinfo.tex} is not required if a Texinfo source file is
3449 specified.  The assumption is that the file will be supplied, but in a
3450 place that Automake cannot find.  This assumption is an artifact of how
3451 Cygnus packages are typically bundled.
3453 @item
3454 @samp{make dist} will look for files in the build directory as well as
3455 the source directory.  This is required to support putting info files
3456 into the build directory.
3458 @item
3459 Certain tools will be searched for in the build tree as well as in the
3460 user's @samp{PATH}.  These tools are @code{runtest}, @code{expect},
3461 @code{makeinfo} and @code{texi2dvi}.
3463 @item
3464 @code{--foreign} is implied.
3466 @item
3467 The options @samp{no-installinfo} and @samp{no-dependencies} are
3468 implied.
3470 @item
3471 The macros @samp{AM_MAINTAINER_MODE} and @samp{AM_CYGWIN32} are
3472 required.
3474 @item
3475 The @code{check} target doesn't depend on @code{all}.
3476 @end itemize
3478 GNU maintainers are advised to use @samp{gnu} strictness in preference
3479 to the special Cygnus mode.
3482 @node Extending, Distributing, Cygnus, Top
3483 @chapter When Automake Isn't Enough
3485 Automake's implicit copying semantics means that many problems can be
3486 worked around by simply adding some @code{make} targets and rules to
3487 @file{Makefile.in}.  Automake will ignore these additions.
3489 @cindex -local targets
3490 @cindex local targets
3492 There are some caveats to doing this.  Although you can overload a
3493 target already used by Automake, it is often inadvisable, particularly
3494 in the topmost directory of a non-flat package.  However, various useful
3495 targets have a @samp{-local} version you can specify in your
3496 @file{Makefile.in}.  Automake will supplement the standard target with
3497 these user-supplied targets.
3499 @trindex  all-local
3500 @trindex  info-local
3501 @trindex  dvi-local
3502 @trindex  check-local
3503 @trindex  install-data-local
3504 @trindex  install-exec-local
3505 @trindex  uninstall-local
3506 @trindex  mostlyclean-local
3507 @trindex  clean-local
3508 @trindex  distclean-local
3510 The targets that support a local version are @code{all}, @code{info},
3511 @code{dvi}, @code{check}, @code{install-data}, @code{install-exec},
3512 @code{uninstall}, and the various @code{clean} targets
3513 (@code{mostlyclean}, @code{clean}, @code{distclean}, and
3514 @code{maintainer-clean}).  Note that there are no
3515 @code{uninstall-exec-local} or @code{uninstall-data-local} targets; just
3516 use @code{uninstall-local}.  It doesn't make sense to uninstall just
3517 data or just executables.
3518 @trindex all
3519 @trindex info
3520 @trindex dvi
3521 @trindex check
3522 @trindex install-data
3523 @trindex install-exec
3524 @trindex uninstall
3526 For instance, here is one way to install a file in @file{/etc}:
3528 @example
3529 install-data-local:
3530         $(INSTALL_DATA) $(srcdir)/afile /etc/afile
3531 @end example
3533 @cindex -hook targets
3534 @cindex hook targets
3536 Some targets also have a way to run another target, called a @dfn{hook},
3537 after their work is done.  The hook is named after the principal target,
3538 with @samp{-hook} appended.  The targets allowing hooks are
3539 @code{install-data}, @code{install-exec}, @code{dist}, and
3540 @code{distcheck}.
3541 @trindex install-data-hook
3542 @trindex install-exec-hook
3543 @trindex dist-hook
3545 For instance, here is how to create a hard link to an installed program:
3547 @example
3548 install-exec-hook:
3549         ln $(bindir)/program $(bindir)/proglink
3550 @end example
3552 @c FIXME should include discussion of variables you can use in these
3553 @c rules
3556 @node Distributing, Future, Extending, Top
3557 @chapter Distributing @file{Makefile.in}s
3559 Automake places no restrictions on the distribution of the resulting
3560 @file{Makefile.in}s.  We still encourage software authors to distribute
3561 their work under terms like those of the GPL, but doing so is not
3562 required to use Automake.
3564 Some of the files that can be automatically installed via the
3565 @code{--add-missing} switch do fall under the GPL; examine each file
3566 to see.
3569 @node Future, Macro and Variable Index, Distributing, Top
3570 @chapter Some ideas for the future
3572 @cindex Future directions
3574 Here are some things that might happen in the future:
3576 @itemize @bullet
3577 @item
3578 HTML support.
3580 @item
3581 The output will be cleaned up.  For instance, only variables which are
3582 actually used will appear in the generated @file{Makefile.in}.
3584 @item
3585 There will be support for automatically recoding a distribution.  The
3586 intent is to allow a maintainer to use whatever character set is most
3587 convenient locally, but for all distributions to be Unicode or
3588 @w{ISO 10646} with the UTF-8 encoding.
3590 @cindex Guile rewrite
3592 @item
3593 Rewrite in Guile.  This won't happen in the near future, but it will
3594 eventually happen.
3595 @end itemize
3598 @page
3599 @node Macro and Variable Index, General Index, Future, Top
3600 @unnumbered Macro and Variable Index
3602 @printindex vr
3605 @page
3606 @node General Index,  , Macro and Variable Index, Top
3607 @unnumbered General Index
3609 @printindex cp
3612 @page
3613 @contents
3614 @bye