6d5f349973bddd58d915e17f77a73c847d50b841
[platform/upstream/automake.git] / automake.texi
1 \input texinfo   @c -*-texinfo-*-
2 @c %**start of header
3 @setfilename automake.info
4 @settitle automake
5 @setchapternewpage off
6 @c %**end of header
7
8 @include version.texi
9
10 @ifinfo
11 This file documents GNU automake @value{VERSION}
12
13 Copyright (C) 1995 Free Software Foundation, Inc.
14
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.
18
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
23
24
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.
30
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
36
37
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 @*
52
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.
56
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.
61
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
67
68 @ifinfo
69 @node Top, Introduction, (dir), (dir)
70 @comment  node-name,  next,  previous,  up
71 @top
72
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}.
76
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
84
85 @end ifinfo
86
87 @node Introduction
88 @chapter Introduction
89
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)
97
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.
101
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.
105
106
107 @node Details
108 @chapter Making @code{automake} templates
109
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
127
128 @node configure
129 @section How @code{automake} and @code{configure} interact
130
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}.
135
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}.
139
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.
143
144 Here is an example of what to put in @file{configure.in}:
145
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
154
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.
158
159 For instance, in cpio's @file{src/Makefile.am}, we see:
160
161 @example
162 CONFIG_HEADER = ../config.h
163 @end example
164
165
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:
170
171 @example
172 ## --------------------------------------------------------- ##
173 ## Use AC_PROG_INSTALL, supplementing it with INSTALL_SCRIPT ##
174 ## substitution.                                             ##
175 ## --------------------------------------------------------- ##
176
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
181 ])
182 @end example
183
184
185 @code{automake} also assumes your @file{configure.in} calls
186 @samp{AC_ARG_PROGRAM}.
187
188
189 @node Depth
190 @section Types of directory hierarchy
191
192 @code{automake} supports three kinds of directory hierarcy: ``flat'',
193 ``shallow'', and ``deep''.
194
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)
199
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}).
207
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}).
212
213
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).
221
222 FIXME supply complete list of recursive targets?
223
224
225 @node Programs
226 @section Which Programs Are Built
227
228 In a directory containing source that gets built into a program (as
229 opposed to a library), the @samp{PROGRAMS} variable is used:
230
231 @example
232 PROGRAMS = hello
233 @end example
234
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:
239
240 @example
241 hello_SOURCE = hello.c
242 @end example
243
244 This causes @file{hello.o} to be built from @code{hello.c} at compile
245 time, and then linked into @file{hello}.
246
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.
251
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.
255
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:
261
262 @example
263 PROGRAMS = @@PROGS@@
264 AM_PROGRAMS = cpio pax mt rmt
265 @end example
266
267
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.
271
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}).
277
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:
281
282 @example
283 LDADD = ../lib/libcpio.a @@INTLLIBS@@
284 rmt_LDADD =
285 @end example
286
287
288 @node Source
289 @section Specifying Source Code
290
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.
294
295 @example
296 HEADERS = hello.h getopt.h rx.h
297 @end example
298
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.
302
303
304 @node Scripts
305 @section Programs Which are Scripts
306
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.
312
313 @code{automake} itself is a script that is generated at configure time
314 from @file{automake.in}.  Here is how this is handled:
315
316 @example
317 SCRIPTS = automake
318
319 automake: automake.in
320         CONFIG_FILES=$@@ CONFIG_HEADERS= ./config.status
321 @end example
322
323
324 @node Libraries
325 @section Building Libraries
326
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.
331
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.
337
338 Here is how the @file{libcpio.a} library is built in the GNU cpio
339 distribution's @file{lib} subdirectory:
340
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
347
348
349 @node Libstuff
350 @section Programs which are not User-Visible
351
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.
356
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.
361
362 Here is how to generate a program named @code{goodbye}, a helper for
363 @code{hello}:
364
365 @example
366 LIBPROGRAMS = goodbye
367 goodbye_SOURCES = goodbye.c
368 @end example
369
370
371 @node Data
372 @section Architecture-independent data files
373
374 @code{automake} supports two different ways to install
375 architecture-independent data files.
376
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@}}.
380
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:
385
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
395
396 All @samp{DATA} and @samp{PACKAGEDATA} files are included in a
397 distribution.
398
399
400 @node Docs
401 @section Texinfo and Man Pages
402
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).
408
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.
417
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:
424
425 @example
426 TEXINFOS = kpathsea.texi
427 kpathsea_TEXINFOS = install.texi copying.texi freedom.texi
428 @end example
429
430 @code{automake} might be modified to detect these dependencies
431 automatically.
432
433 Currently @code{automake} can only handle one primary @file{.texi} file.
434 This restriction will be lifted if it proves too onerous.
435
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?)
439
440
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.
445
446
447 Here is how the documentation is handled in GNU cpio (which includes
448 both Texinfo documentation and man pages):
449
450 @example
451 TEXINFOS = cpio.texi
452 MANS = cpio.1 mt.1
453 @end example
454
455 Texinfo source, info pages and man pages are all considered to be
456 ``source'' for the purposes of making a distribution.
457
458
459 @node ANSI
460 @section Automatic de-ANSI-fication of Source
461
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}.
465
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.
469
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:
475
476 @example
477 ## ------------------------------- ##
478 ## Check for function prototypes.  ##
479 ## ------------------------------- ##
480
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
491 fi
492 AC_SUBST(U)dnl
493 AC_SUBST(ANSI2KNR)dnl
494 ])
495
496
497 ## ----------------------------------------- ##
498 ## ANSIfy the C compiler whenever possible.  ##
499 ## ----------------------------------------- ##
500
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.
509 #
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
516
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
529 do
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"
541 ])
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
547 ])
548 @end example
549
550
551 @node Install
552 @section What Gets Installed
553
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.
559
560 @code{automake} also handles installing any specified info and man
561 pages.
562
563 FIXME xref to Extending node here; sometimes you need to install more.
564
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.
569
570 @code{automake} also generates an @samp{uninstall} target.
571
572 In the future @code{automake} will be extended to generate an
573 @samp{installdirs} target.
574
575
576 @node Distribution
577 @section Building a Release
578
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.
582
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}.
589
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.
593
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:
598
599 @example
600 DIST_OTHER = automake.in
601 @end example
602
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.
606
607 @node Tags
608 @section Interfacing to @code{etags}
609
610 @code{automake} will generate rules to generate @file{TAGS} files for
611 use with GNU Emacs under some circumstances.
612
613 If any C source code or headers are present, then a @file{TAGS} file
614 will be generated for the directory.
615
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.
619
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)
625
626
627 @node Dependencies
628 @section Automatic dependency tracking
629
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}.
635
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.
639
640 This mode is enabled by default if any C program or library is defined
641 in the current directory.
642
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.
649
650 There should probably be a way to suppress this mode.
651
652
653 @node Extending
654 @section When AutoMake Isn't Enough
655
656 Sometimes @code{automake} isn't enough.  Then you just lose.
657
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.
662
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}.
666
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)
671
672 For instance, here is how to install a file in @file{/etc}:
673
674 @example
675 install-data-local:
676         $(INSTALL_DATA) $(srcdir)/afile /etc/afile
677 @end example
678
679
680 @node Invoking automake
681 @chapter Using @code{automake} to Create @file{Makefile.in}
682
683 There are basically two modes in which @code{automake} can be run.
684
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.
689
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.
695
696
697 @node Future
698 @chapter Some ideas for the future
699
700 Here are some things that might happen in the future:
701
702 @itemize @bullet
703 @item
704 Better error checking would be good.
705 @end itemize
706
707 @node Some index
708 @chapter Nothing yet
709
710 @bye
711
712 NOTES:
713
714 * Need section on operation of automake: it reads Makefile.am and COPIES
715 the contents...