*** empty log message ***
[automake.git] / automake.texi
blob6d5f349973bddd58d915e17f77a73c847d50b841
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 @ifinfo
11 This file documents GNU automake @value{VERSION}
13 Copyright (C) 1995 Free Software Foundation, Inc.
15 Permission is granted to make and distribute verbatim copies of
16 this manual provided the copyright notice and this permission notice
17 are preserved on all copies.
19 @ignore
20 Permission is granted to process this file through TeX and print the
21 results, provided the printed document carries copying permission
22 notice identical to this one except for the removal of this paragraph
25 @end ignore
26 Permission is granted to copy and distribute modified versions of this
27 manual under the conditions for verbatim copying, provided that the entire
28 resulting derived work is distributed under the terms of a permission
29 notice identical to this one.
31 Permission is granted to copy and distribute translations of this manual
32 into another language, under the above conditions for modified versions,
33 except that this permission notice may be stated in a translation approved
34 by the Foundation.
35 @end ifinfo
38 @titlepage
39 @title GNU AutoMake
40 @subtitle For version @value{VERSION}, @value{UPDATED}
41 @c copyright page
42 @page
43 @vskip 0pt plus 1filll
44 Copyright @copyright{} 1995 Free Software Foundation, Inc.
45 @sp 2
46 This is the first edition of the GNU AutoMake documentation,@*
47 and is consistent with GNU AutoMake @value{VERSION}.@*
48 @sp 2
49 Published by the Free Software Foundation @*
50 675 Massachusetts Avenue, @*
51 Cambridge, MA 02139 USA @*
53 Permission is granted to make and distribute verbatim copies of
54 this manual provided the copyright notice and this permission notice
55 are preserved on all copies.
57 Permission is granted to copy and distribute modified versions of this
58 manual under the conditions for verbatim copying, provided that the entire
59 resulting derived work is distributed under the terms of a permission
60 notice identical to this one.
62 Permission is granted to copy and distribute translations of this manual
63 into another language, under the above conditions for modified versions,
64 except that this permission notice may be stated in a translation
65 approved by the Free Software Foundation.
66 @end titlepage
68 @ifinfo
69 @node Top, Introduction, (dir), (dir)
70 @comment  node-name,  next,  previous,  up
71 @top
73 This file documents the GNU AutoMake package for creating GNU
74 Standards-compliant Makefiles from template files.  This edition
75 documents version @value{VERSION}.
77 @menu
78 * Introduction::                AutoMake's purpose
79 * Details::                     Creating an AutoMake template file
80 * Invoking automake::           Creating a Makefile.in
81 * Future::                      Some ideas for the future.
82 * Some index::                  Index of variables
83 @end menu
85 @end ifinfo
87 @node Introduction
88 @chapter Introduction
90 The GNU Makefile Standards Document
91 (@pxref{Makefile Conventions, , Makefile Conventions, standards.info, The
92 GNU Coding Standards})
93 is long, complicated,
94 and subject to change.  The goal of AutoMake is to remove the burden of
95 Makefile maintenance from back the individual GNU maintainer (and put it
96 on the back of the AutoMake maintainer)
98 Typical AutoMake input files are simply a series of macro definitions.
99 AutoMake processes these files to produce @file{Makefile.in}s which are
100 distribution-ready.
102 AutoMake does force some structure on the package maintainer.  However,
103 it is felt that this (minor) inconvenience is more than offset by
104 AutoMake's convenience.
107 @node Details
108 @chapter Making @code{automake} templates
110 @menu
111 * configure::                   AutoMake and configure
112 * Depth::                       Types of package hierarchy
113 * Programs::                    What gets built
114 * Source::                      Specifying source files
115 * Scripts::                     Building scripts
116 * Libraries::                   Building libraries
117 * Libstuff::                    Programs that aren't user-visible
118 * Data::                        Data files.
119 * Docs::                        Specifying documentation files
120 * ANSI::                        Automatic de-ANSI-fication
121 * Install::                     What gets installed
122 * Distribution::                What gets distributed
123 * Tags::                        TAGS files
124 * Dependencies::                Automatic dependency tracking
125 * Extending::                   If the defaults aren't enough
126 @end menu
128 @node configure
129 @section How @code{automake} and @code{configure} interact
131 AutoMake enforces a certain amount of structure on the package
132 maintainer.  One such item is its requirement that the
133 @file{configure.in} for the package define the variables @samp{PACKAGE}
134 and @samp{VERSION}.
136 @var{PACKAGE} should be the name of the package as it appears when
137 bundled for distribution.  For instance, AutoMake defines @samp{PACKAGE}
138 to be @samp{am}.
140 @var{VERSION} should be the version number of the release being worked
141 on.  We recommend that you make @file{configure.in} the only place you
142 define the version number for your package; this makes releases simpler.
144 Here is an example of what to put in @file{configure.in}:
146 @example
147 PACKAGE=cpio
148 VERSION=2.3.911
149 AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE")
150 AC_DEFINE_UNQUOTED(VERSION, "$VERSION")
151 AC_SUBST(PACKAGE)
152 AC_SUBST(VERSION)
153 @end example
155 If your @file{configure.in} uses @samp{AC_CONFIG_HEADER}, then in each
156 directory you should define the @samp{CONFIG_HEADER} variable to hold
157 the name of the header.
159 For instance, in cpio's @file{src/Makefile.am}, we see:
161 @example
162 CONFIG_HEADER = ../config.h
163 @end example
166 @code{automake} also assumes that your @file{configure} script will
167 define the variable @samp{INSTALL_SCRIPT}.  Until this is incorporated
168 in @code{autoconf}'s @samp{AC_PROG_INSTALL} macro, you can use this
169 replacement instead:
171 @example
172 ## --------------------------------------------------------- ##
173 ## Use AC_PROG_INSTALL, supplementing it with INSTALL_SCRIPT ##
174 ## substitution.                                             ##
175 ## --------------------------------------------------------- ##
177 AC_DEFUN(fp_PROG_INSTALL,
178 [AC_PROG_INSTALL
179 test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='$@{INSTALL@} -m 755'
180 AC_SUBST(INSTALL_SCRIPT)dnl
182 @end example
185 @code{automake} also assumes your @file{configure.in} calls
186 @samp{AC_ARG_PROGRAM}.
189 @node Depth
190 @section Types of directory hierarchy
192 @code{automake} supports three kinds of directory hierarcy: ``flat'',
193 ``shallow'', and ``deep''.
195 A flat package is one in which all the files are in a single directory.
196 The @file{Makefile.am} for such a package by definition lacks a
197 @samp{SUBDIRS} macro.  (There are not any @code{automake}-using packages
198 which are flat)
200 A deep package is one in which all the source lies in subdirectories;
201 the top level directory contains only configuration information.  GNU
202 cpio is a good example of such a package (as is GNU tar, although it
203 does not presently use @code{automake}).  The top level
204 @file{Makefile.am} for a deep package will contain a @samp{SUBDIRS}
205 macro, but no other macros to define objects which are built (eg
206 @samp{PROGRAMS}).
208 A shallow package is one in which the primary source resides in the
209 top-level directory, while various parts (typically libraries) reside in
210 subdirectories.  @code{automake} is one such package (as is GNU make,
211 which does not currently use @code{automake}).
214 The @samp{SUBDIRS} macro holds a list of subdirectories in which
215 building of various sorts can occur.  Many targets (eg @samp{all}) in
216 the generated @file{Makefile} will run both locally and in all specified
217 subdirectories.  Note that the directories listed in @samp{SUBDIRS} are
218 not expected to contain @file{Makefile.am}s; only @file{Makefile}s
219 (after configuration).  This allows inclusion of libraries from packages
220 which do not use @code{automake} (such as gettext).
222 FIXME supply complete list of recursive targets?
225 @node Programs
226 @section Which Programs Are Built
228 In a directory containing source that gets built into a program (as
229 opposed to a library), the @samp{PROGRAMS} variable is used:
231 @example
232 PROGRAMS = hello
233 @end example
235 In this simple case, the resulting @file{Makefile.in} will contain code
236 to generate a program named @code{hello}.  The variable
237 @samp{@var{prog}_SOURCE} is used to specify which source files get built
238 into an executable:
240 @example
241 hello_SOURCE = hello.c
242 @end example
244 This causes @file{hello.o} to be built from @code{hello.c} at compile
245 time, and then linked into @file{hello}.
247 Multiple programs can be built in a single directory -- simply list them
248 all in the @samp{PROGRAMS} definition.  Multiple programs can share a
249 single source file.  The source file must be listed in each ``_SOURCE''
250 definition.
252 Sometimes it is useful to determine the programs that are to be built at
253 configure time.  For instance, GNU cpio only builts @code{mt} and
254 @code{rmt} under special circumstances.
256 In this case, you must notify AutoMake of all the programs that can
257 possibly be built, but at the same time cause the generated
258 @file{Makefile.in} to use the programs specified by @code{configure}.
259 You can do this using the @code{AM_PROGRAMS} variable.  Here is the
260 relevant code from cpio:
262 @example
263 PROGRAMS = @@PROGS@@
264 AM_PROGRAMS = cpio pax mt rmt
265 @end example
268 If you need to link against libraries that are not found by
269 @code{configure}, you can use @samp{LDADD} to do so.  This variable
270 actually can be used to add any options to the linker command line.
272 Sometimes, multiple programs are built in one directory but do not share
273 the same link-time requirements.  In this case, you can use the
274 @samp{@var{prog}_LDADD} variable to override the global @samp{LDADD}.
275 (If this variable exists for a given program, then that program is not
276 linked using @samp{LDADD}).
278 For instance, in GNU cpio, @code{pax}, @code{cpio}, and @code{mt} are
279 linked against the library @file{libcpio.a}.  However, @code{rmt} is
280 built in the same directory, and has no such link requirement.  Thus:
282 @example
283 LDADD = ../lib/libcpio.a @@INTLLIBS@@
284 rmt_LDADD =
285 @end example
288 @node Source
289 @section Specifying Source Code
291 Any header files in your distribution must be listed in the
292 @samp{HEADERS} variable.  This is used both for making distributions,
293 and for automatic de-ANSI-fication.
295 @example
296 HEADERS = hello.h getopt.h rx.h
297 @end example
299 @samp{HEADERS} should also be used to list any sources files which are
300 conditionally built.  FIXME probably should use @samp{SOURCES} for this;
301 that support might even work.
304 @node Scripts
305 @section Programs Which are Scripts
307 It is possible to define and install programs which are scripts.  Such
308 programs should be listed in the @samp{SCRIPTS} variable.
309 @code{automake} doesn't define any dependencies for scripts; if a script
310 is not to be installed as-is, the @file{Makefile.am} should include the
311 appropriate rules.
313 @code{automake} itself is a script that is generated at configure time
314 from @file{automake.in}.  Here is how this is handled:
316 @example
317 SCRIPTS = automake
319 automake: automake.in
320         CONFIG_FILES=$@@ CONFIG_HEADERS= ./config.status
321 @end example
324 @node Libraries
325 @section Building Libraries
327 The @samp{LIBRARIES} variable holds the names of libraries to be built
328 in the current directory.  If the libraries to be built vary at
329 configure time, you may define @samp{AM_LIBRARIES} to supply
330 @code{automake} with the full static list of possible libraries.
332 For a given library @samp{zot}, the sources are taken to be in
333 @samp{@var{zot}_SOURCES}, just as for programs.  Note that libraries and
334 programs share one namespace in @code{automake}: one directory cannot
335 contain both a library (``liblob.a'') and a program (``lob'') with the
336 same name.
338 Here is how the @file{libcpio.a} library is built in the GNU cpio
339 distribution's @file{lib} subdirectory:
341 @example
342 LIBRARIES = cpio
343 cpio_SOURCES = dirname.c dstring.c error.c filemode.c \
344 getopt.c getopt1.c idcache.c makepath.c octal.c \
345 stpcpy.c stripslash.c userspec.c xmalloc.c xstrdup.c
346 @end example
349 @node Libstuff
350 @section Programs which are not User-Visible
352 @code{automake} allows for the automatic building and installation of
353 programs which are not actually used by the user, but are instead used
354 by other user-visible programs.  Such programs are installed in a
355 separate directory from user-visible programs.
357 For programs of this sort which are build from C source, define the
358 names in @samp{LIBPROGRAMS}.  For scripts, use @samp{LIBSCRIPTS}.  In
359 other respects, these variables are similar to @samp{PROGRAMS} and
360 @samp{SCRIPTS}.  Both of these variables have ``AM_'' override forms.
362 Here is how to generate a program named @code{goodbye}, a helper for
363 @code{hello}:
365 @example
366 LIBPROGRAMS = goodbye
367 goodbye_SOURCES = goodbye.c
368 @end example
371 @node Data
372 @section Architecture-independent data files
374 @code{automake} supports two different ways to install
375 architecture-independent data files.
377 The first variable that can be used is @samp{DATA}.  This is intended to
378 be used for only a small number of data files.  The files are installed
379 in @samp{$@{datadir@}}.
381 The second variable that can be used is @samp{PACKAGEDATA}.  This is
382 intended for a larger number of data files.  The files are installed in
383 @samp{$@{datadir@}/$@{PACKAGE@}}.  This variable is what @code{automake}
384 itself uses:
386 @example
387 PACKAGEDATA = clean-kr.am clean.am compile-kr.am compile-vars.am \
388 compile.am data.am depend.am dist-subd-top.am dist-subd-vars.am \
389 dist-subd.am dist-vars.am dist.am footer.am header-vars.am header.am \
390 libscripts.am libprograms.am libraries-vars.am libraries.am library.am \
391 mans-vars.am mans.am packagedata.am program.am programs.am remake-hdr.am \
392 remake-subd.am remake.am scripts.am subdirs.am tags.am tags-subd.am \
393 texinfos-vars.am texinfos.am hack-make.sed nl-remove.sed
394 @end example
396 All @samp{DATA} and @samp{PACKAGEDATA} files are included in a
397 distribution.
400 @node Docs
401 @section Texinfo and Man Pages
403 @subsection Texinfo
404 If the current directory contains Texinfo source, you must declare it
405 with the @samp{TEXINFOS} macro.
406 Note that any Texinfo source file must end in the @file{.texi} extension
407 (@file{.texinfo} won't work).
409 If the @file{.texi} file ``@@include''s @file{version.texi}, then that
410 file will be automatically generated.  @file{version.texi} defines three
411 Texinfo macros you can reference: @samp{EDITION}, @samp{VERSION}, and
412 @samp{UPDATED}.  The first two hold the version number of your package
413 (but are kept separate for clarity); the last is the date the primary
414 file was last modified.
415 The @file{version.texi} support requires a version of @code{date} that
416 accepts the @samp{-r} (read time from a file) option.
418 Sometimes an info file actually depends on more than one @file{.texi}
419 file.  For instance, in the @samp{xdvik} distribution,
420 @file{kpathsea.texi} includes the files @file{install.texi},
421 @file{copying.texi}, and @file{freedom.texi}.  You can tell
422 @code{automake} about these dependencies using the @samp{texi_TEXINFOS}
423 variable.  Here is how @samp{xdvik} could do it:
425 @example
426 TEXINFOS = kpathsea.texi
427 kpathsea_TEXINFOS = install.texi copying.texi freedom.texi
428 @end example
430 @code{automake} might be modified to detect these dependencies
431 automatically.
433 Currently @code{automake} can only handle one primary @file{.texi} file.
434 This restriction will be lifted if it proves too onerous.
436 @code{automake} will warn if a directory containing Texinfo source does
437 not also contain the file @file{texinfo.tex}.  (I'm not sure if this is
438 a good rule or not.  Comments?)
441 @subsection Man pages
442 A package can also include man pages.  (Though see the GNU standards on
443 this matter.  FIXME xref).
444 Man pages are declared using the @samp{MANS} macro.
447 Here is how the documentation is handled in GNU cpio (which includes
448 both Texinfo documentation and man pages):
450 @example
451 TEXINFOS = cpio.texi
452 MANS = cpio.1 mt.1
453 @end example
455 Texinfo source, info pages and man pages are all considered to be
456 ``source'' for the purposes of making a distribution.
459 @node ANSI
460 @section Automatic de-ANSI-fication of Source
462 If @file{Makefile.am} includes the text @samp{@@kr@@}, then code to
463 handle automatic de-ANSI-fication is included in the generated
464 @file{Makefile.in}.
466 This means that each C source file will be treated as ANSI C.  If no
467 ANSI C compiler is available on the build system, then the code will be
468 turned into K&R C before compilation.
470 Each directory that uses automatic de-ANSI-fication must include the
471 source files @file{ansi2knr.c} and @file{ansi2knr.1}.  Also, your
472 @file{configure} script must define the variables @samp{U} and
473 @samp{ANSI2KNR}.  Here is a snippet you can add to @file{aclocal.m4} to
474 achieve this:
476 @example
477 ## ------------------------------- ##
478 ## Check for function prototypes.  ##
479 ## ------------------------------- ##
481 AC_DEFUN(fp_C_PROTOTYPES,
482 [AC_REQUIRE([fp_PROG_CC_STDC])
483 AC_MSG_CHECKING([for function prototypes])
484 if test "$ac_cv_prog_cc_stdc" != no; then
485   AC_MSG_RESULT(yes)
486   AC_DEFINE(PROTOTYPES)
487   U= ANSI2KNR=
488 else
489   AC_MSG_RESULT(no)
490   U=_ ANSI2KNR=./ansi2knr
492 AC_SUBST(U)dnl
493 AC_SUBST(ANSI2KNR)dnl
497 ## ----------------------------------------- ##
498 ## ANSIfy the C compiler whenever possible.  ##
499 ## ----------------------------------------- ##
501 # @@defmac AC_PROG_CC_STDC
502 # @@maindex PROG_CC_STDC
503 # @@ovindex CC
504 # If the C compiler in not in ANSI C mode by default, try to add an option
505 # to output variable @@code@{CC@} to make it so.  This macro tries various
506 # options that select ANSI C on some system or another.  It considers the
507 # compiler to be in ANSI C mode if it defines @@code@{__STDC__@} to 1 and
508 # handles function prototypes correctly.
510 # If you use this macro, you should check after calling it whether the C
511 # compiler has been set to accept ANSI C; if not, the shell variable
512 # @@code@{ac_cv_prog_cc_stdc@} is set to @@samp@{no@}.  If you wrote your source
513 # code in ANSI C, you can make an un-ANSIfied copy of it by using the
514 # program @@code@{ansi2knr@}, which comes with Ghostscript.
515 # @@end defmac
517 AC_DEFUN(fp_PROG_CC_STDC,
518 [AC_MSG_CHECKING(for $@{CC-cc@} option to accept ANSI C)
519 AC_CACHE_VAL(ac_cv_prog_cc_stdc,
520 [ac_cv_prog_cc_stdc=no
521 ac_save_CFLAGS="$CFLAGS"
522 # Don't try gcc -ansi; that turns off useful extensions and
523 # breaks some systems' header files.
524 # AIX                   -qlanglvl=ansi
525 # Ultrix and OSF/1      -std1
526 # HP-UX                 -Aa -D_HPUX_SOURCE
527 # SVR4                  -Xc
528 for ac_arg in "" -qlanglvl=ansi -std1 "-Aa -D_HPUX_SOURCE" -Xc
530   CFLAGS="$ac_save_CFLAGS $ac_arg"
531   AC_TRY_COMPILE(
532 [#if !defined(__STDC__) || __STDC__ != 1
533 choke me
534 #endif  
535 ], [int test (int i, double x);
536 struct s1 @{int (*f) (int a);@};
537 struct s2 @{int (*f) (double a);@};],
538 [ac_cv_prog_cc_stdc="$ac_arg"; break])
539 done
540 CFLAGS="$ac_save_CFLAGS"
542 AC_MSG_RESULT($ac_cv_prog_cc_stdc)
543 case "x$ac_cv_prog_cc_stdc" in
544   x|xno) ;;
545   *) CC="$CC $ac_cv_prog_cc_stdc" ;;
546 esac
548 @end example
551 @node Install
552 @section What Gets Installed
554 Naturally, @code{automake} handles the details of actually installing
555 your program once it has been built.  Any objects specified in
556 @samp{PROGRAMS}, @samp{LIBPROGRAMS}, @samp{SCRIPTS}, @samp{LIBSCRIPTS},
557 @samp{DATA}, and @samp{PACKAGEDATA} are automatically installed in the
558 appropriate place.
560 @code{automake} also handles installing any specified info and man
561 pages.
563 FIXME xref to Extending node here; sometimes you need to install more.
565 @code{automake} generates separate @samp{install-data} and
566 @samp{install-exec} targets, in case the installer is installing on
567 multiple machines which share directory structure -- these targets allow
568 the machine-independent parts to be installed only once.
570 @code{automake} also generates an @samp{uninstall} target.
572 In the future @code{automake} will be extended to generate an
573 @samp{installdirs} target.
576 @node Distribution
577 @section Building a Release
579 The @samp{dist} target in the generated @file{Makefile.in} can be used
580 to generate a gzip'd tar file for distribution.  The tar file is named
581 based on the @var{PACKAGE} and @var{VERSION} variables.
583 For the most part, the files to distribute are automatically found by
584 @code{automake}: all source files are automatically included in a
585 distribution, as are all @file{Makefile.am}s and @file{Makefile.in}s.
586 @code{automake} also has a built-in list of commonly used files which,
587 if present in the current directory, are automatically included.  This
588 list is printed by @code{automake --help}.
590 Still, sometimes there are files which must be distributed, but which
591 are not covered in the automatic rules.  These files should be listed in
592 the @samp{DIST_OTHER} variable.
594 For instance, in the @code{automake} distribution, 
595 @file{automake.in} (the source to
596 @code{automake}) is not found automatically.  So in the
597 @file{Makefile.am}, we have:
599 @example
600 DIST_OTHER = automake.in
601 @end example
603 FIXME mention files that are found automatically but not printed by
604 --help.
605 FIXME: describe DIST_SUBDIRS or not?  It is a hack which might go away.
607 @node Tags
608 @section Interfacing to @code{etags}
610 @code{automake} will generate rules to generate @file{TAGS} files for
611 use with GNU Emacs under some circumstances.
613 If any C source code or headers are present, then a @file{TAGS} file
614 will be generated for the directory.
616 At the topmost directory of a multi-directory package, a @file{TAGS}
617 file will be generated that will include by reference all @file{TAGS}
618 files from subdirectories.
620 Also, if the variable @samp{ETAGS_ARGS} is defined, a @file{TAGS} file
621 will be generated.  This variable is intended for use in directories
622 which contain taggable source that @code{etags} does not understand.
623 (For instance, it could be set to a regexp to recognize node names in
624 Texinfo documentation)
627 @node Dependencies
628 @section Automatic dependency tracking
630 As a developer it is often painful to continually update the
631 @file{Makefile.in} whenever the include-file dependencies change in a
632 project.  @code{automake} supplies a way to automatically track
633 dependency changes, and distribute the dependencies in the generated
634 @file{Makefile.in}.
636 Currently this support requires the use of @code{GNU make} and
637 @code{gcc}.  It might become possible in the future to supply a
638 different dependency generating program, if there is enough demand.
640 This mode is enabled by default if any C program or library is defined
641 in the current directory.
643 When you decide to make a distribution, the @samp{dist} target will
644 re-run @code{automake} with the @samp{--include-deps} option.  This
645 causes the previously generated dependencies to be inserted into the
646 generated @file{Makefile.in}, and thus into the distribution.
647 @samp{--include-deps} also turns off inclusion of the dependency
648 generation code.
650 There should probably be a way to suppress this mode.
653 @node Extending
654 @section When AutoMake Isn't Enough
656 Sometimes @code{automake} isn't enough.  Then you just lose.
658 Actually, @code{automake}s implicit copying semantics means that many
659 problems can be worked around by simply adding some @code{make} targets
660 and rules to @file{Makefile.in}.  @code{automake} will ignore these
661 additions.
663 There are some caveats to doing this.  You can't overload a target
664 already used by @code{automake}.  However, various useful targets have a
665 ``-local'' version you can specify in your @file{Makefile.in}.
667 The targets that support a local version are @samp{all}, @samp{info},
668 @samp{dvi}, @samp{check}, @samp{install-data}, @samp{install-exec}, and
669 @samp{uninstall}.  (Currently @samp{install} is also supported, but this
670 might go away)
672 For instance, here is how to install a file in @file{/etc}:
674 @example
675 install-data-local:
676         $(INSTALL_DATA) $(srcdir)/afile /etc/afile
677 @end example
680 @node Invoking automake
681 @chapter Using @code{automake} to Create @file{Makefile.in}
683 There are basically two modes in which @code{automake} can be run.
685 In the first, most common, mode, @code{automake} is simply run without
686 any arguments.  It will determine which @file{Makefile.am}s exist by
687 looking in the current directory and immediate subdirectories, and will
688 automatically build @file{Makefile.in}s in these directories.
690 In the second mode, @code{automake} is run with the name of one or more
691 @file{Makefile}s as arguments.  It then rebuilds the corresponding
692 @file{Makefile.in}s from the (also) corresponding @file{Makefile.am}s.
693 This second mode is most often used by @code{make} itself, when it
694 notices that a @code{Makefile.in} is out of date.
697 @node Future
698 @chapter Some ideas for the future
700 Here are some things that might happen in the future:
702 @itemize @bullet
703 @item
704 Better error checking would be good.
705 @end itemize
707 @node Some index
708 @chapter Nothing yet
710 @bye
712 NOTES:
714 * Need section on operation of automake: it reads Makefile.am and COPIES
715 the contents...