1 \input texinfo @c -*-texinfo-*-
3 @setfilename automake.info
10 @dircategory GNU programming tools
12 * automake: (automake). Making Makefile.in's
15 @dircategory Individual utilities
17 * aclocal: (automake)Invoking aclocal. Generating aclocal.m4
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.
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
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
50 @subtitle For version @value{VERSION}, @value{UPDATED}
51 @author David MacKenzie and Tom Tromey
54 @vskip 0pt plus 1filll
55 Copyright @copyright{} 1995, 1996, 2000, 2001 Free Software Foundation, Inc.
57 This is the first edition of the GNU Automake documentation,@*
58 and is consistent with GNU Automake @value{VERSION}.@*
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.
79 @c Define an index of configure output variables.
81 @c Define an index of configure variables.
83 @c Define an index of options.
85 @c Define an index of targets.
87 @c Define an index of commands.
90 @c Put the macros and variables into their own index.
91 @c @syncodeindex fn cp
96 @c Put everything else into one index (arbitrarily chosen to be the concept index).
102 @node Top, Introduction, (dir), (dir)
103 @comment node-name, next, previous, up
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}.
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.ac or configure.in
116 * Top level:: The top-level Makefile.am
117 * Alternative:: An alternative approach to subdirectories
118 * Rebuilding:: Automatic rebuilding of Makefile
119 * Programs:: Building programs and libraries
120 * Other objects:: Other derived objects
121 * Other GNU Tools:: Other GNU Tools
122 * Documentation:: Building documentation
123 * Install:: What gets installed
124 * Clean:: What gets cleaned
125 * Dist:: What goes in a distribution
126 * Tests:: Support for test suites
127 * Options:: Changing Automake's behavior
128 * Miscellaneous:: Miscellaneous rules
129 * Include:: Including extra files in an Automake template.
130 * Conditionals:: Conditionals
131 * Gnits:: The effect of @code{--gnu} and @code{--gnits}
132 * Cygnus:: The effect of @code{--cygnus}
133 * Extending:: Extending Automake
134 * Distributing:: Distributing the Makefile.in
135 * Macro and Variable Index::
142 @node Introduction, Generalities, Top, Top
143 @chapter Introduction
145 Automake is a tool for automatically generating @file{Makefile.in}s from
146 files called @file{Makefile.am}. Each @file{Makefile.am} is basically a
147 series of @code{make} macro definitions (with rules being thrown in
148 occasionally). The generated @file{Makefile.in}s are compliant with the
149 GNU Makefile standards.
151 @cindex GNU Makefile standards
153 The GNU Makefile Standards Document
154 (@pxref{Makefile Conventions, , , standards, The GNU Coding Standards})
155 is long, complicated, and subject to change. The goal of Automake is to
156 remove the burden of Makefile maintenance from the back of the
157 individual GNU maintainer (and put it on the back of the Automake
160 The typical Automake input file is simply a series of macro definitions.
161 Each such file is processed to create a @file{Makefile.in}. There
162 should generally be one @file{Makefile.am} per directory of a project.
164 @cindex Constraints of Automake
165 @cindex Automake constraints
167 Automake does constrain a project in certain ways; for instance it
168 assumes that the project uses Autoconf (@pxref{Top, , Introduction,
169 autoconf, The Autoconf Manual}), and enforces certain restrictions on
170 the @file{configure.in} contents@footnote{Autoconf 2.50 promotes
171 @file{configure.ac} over @file{configure.in}. The rest of this
172 documentation will refer to @file{configure.in} as this use is not yet
173 spread, but Automake supports @file{configure.ac} too.}.
175 @cindex Automake requirements
176 @cindex Requirements, Automake
178 Automake requires @code{perl} in order to generate the
179 @file{Makefile.in}s. However, the distributions created by Automake are
180 fully GNU standards-compliant, and do not require @code{perl} in order
183 @cindex BUGS, reporting
184 @cindex Reporting BUGS
185 @cindex E-mail, bug reports
187 Mail suggestions and bug reports for Automake to
188 @email{bug-automake@@gnu.org}.
191 @node Generalities, Examples, Introduction, Top
192 @chapter General ideas
194 The following sections cover a few basic ideas that will help you
195 understand how Automake works.
198 * General Operation:: General operation of Automake
199 * Strictness:: Standards conformance checking
200 * Uniform:: The Uniform Naming Scheme
201 * Canonicalization:: How derived variables are named
202 * User Variables:: Variables reserved for the user
206 @node General Operation, Strictness, Generalities, Generalities
207 @section General Operation
209 Automake works by reading a @file{Makefile.am} and generating a
210 @file{Makefile.in}. Certain macros and targets defined in the
211 @file{Makefile.am} instruct Automake to generate more specialized code;
212 for instance, a @samp{bin_PROGRAMS} macro definition will cause targets
213 for compiling and linking programs to be generated.
215 @cindex Non-standard targets
216 @cindex cvs-dist, non-standard example
219 The macro definitions and targets in the @file{Makefile.am} are copied
220 verbatim into the generated file. This allows you to add arbitrary code
221 into the generated @file{Makefile.in}. For instance the Automake
222 distribution includes a non-standard @code{cvs-dist} target, which the
223 Automake maintainer uses to make distributions from his source control
226 @cindex GNU make extensions
228 Note that GNU make extensions are not recognized by Automake. Using
229 such extensions in a @file{Makefile.am} will lead to errors or confusing
232 Automake tries to group comments with adjoining targets and macro
233 definitions in an intelligent way.
235 @cindex Make targets, overriding
236 @cindex Overriding make targets
238 A target defined in @file{Makefile.am} generally overrides any such
239 target of a similar name that would be automatically generated by
240 @code{automake}. Although this is a supported feature, it is generally
241 best to avoid making use of it, as sometimes the generated rules are
244 @cindex Macros, overriding
245 @cindex Overriding make macros
247 Similarly, a macro defined in @file{Makefile.am} will override any
248 definition of the macro that @code{automake} would ordinarily create.
249 This feature is more often useful than the ability to override a target
250 definition. Be warned that many of the macros generated by
251 @code{automake} are considered to be for internal use only, and their
252 names might change in future releases.
254 @cindex Recursive operation of Automake
255 @cindex Automake, recursive operation
256 @cindex Example of recursive operation
258 When examining a macro definition, Automake will recursively examine
259 macros referenced in the definition. For example, if Automake is
260 looking at the content of @code{foo_SOURCES} in this snippet
264 foo_SOURCES = c.c $(xs)
267 it would use the files @file{a.c}, @file{b.c}, and @file{c.c} as the
268 contents of @code{foo_SOURCES}.
270 @cindex ## (special Automake comment)
271 @cindex Special Automake comment
272 @cindex Comment, special to Automake
274 Automake also allows a form of comment which is @emph{not} copied into
275 the output; all lines beginning with @samp{##} (leading spaces allowed)
276 are completely ignored by Automake.
278 It is customary to make the first line of @file{Makefile.am} read:
280 @cindex Makefile.am, first line
281 @cindex First line of Makefile.am
284 ## Process this file with automake to produce Makefile.in
287 @c FIXME discuss putting a copyright into Makefile.am here? I would but
288 @c I don't know quite what to say.
290 @c FIXME document customary ordering of Makefile.am here!
293 @node Strictness, Uniform, General Operation, Generalities
296 @cindex Non-GNU packages
298 While Automake is intended to be used by maintainers of GNU packages, it
299 does make some effort to accommodate those who wish to use it, but do
300 not want to use all the GNU conventions.
302 @cindex Strictness, defined
303 @cindex Strictness, foreign
304 @cindex foreign strictness
305 @cindex Strictness, gnu
306 @cindex gnits strictness
307 @cindex Strictness, gnits
308 @cindex gnits strictness
310 To this end, Automake supports three levels of @dfn{strictness}---the
311 strictness indicating how stringently Automake should check standards
314 The valid strictness levels are:
318 Automake will check for only those things which are absolutely
319 required for proper operations. For instance, whereas GNU standards
320 dictate the existence of a @file{NEWS} file, it will not be required in
321 this mode. The name comes from the fact that Automake is intended to be
322 used for GNU programs; these relaxed rules are not the standard mode of
326 Automake will check---as much as possible---for compliance to the GNU
327 standards for packages. This is the default.
330 Automake will check for compliance to the as-yet-unwritten @dfn{Gnits
331 standards}. These are based on the GNU standards, but are even more
332 detailed. Unless you are a Gnits standards contributor, it is
333 recommended that you avoid this option until such time as the Gnits
334 standard is actually published (which may never happen).
337 For more information on the precise implications of the strictness
338 level, see @ref{Gnits}.
341 @node Uniform, Canonicalization, Strictness, Generalities
342 @section The Uniform Naming Scheme
344 @cindex Uniform naming scheme
346 Automake macros (from here on referred to as @emph{variables}) generally
347 follow a @dfn{uniform naming scheme} that makes it easy to decide how
348 programs (and other derived objects) are built, and how they are
349 installed. This scheme also supports @code{configure} time
350 determination of what should be built.
352 @cindex _PROGRAMS primary variable
353 @cindex PROGRAMS primary variable
354 @cindex Primary variable, PROGRAMS
356 @cindex Primary variable, defined
358 At @code{make} time, certain variables are used to determine which
359 objects are to be built. These variables are called @dfn{primary
360 variables}. For instance, the primary variable @code{PROGRAMS} holds a
361 list of programs which are to be compiled and linked.
364 @cindex pkglibdir, defined
365 @cindex pkgincludedir, defined
366 @cindex pkgdatadir, defined
369 @vindex pkgincludedir
372 A different set of variables is used to decide where the built objects
373 should be installed. These variables are named after the primary
374 variables, but have a prefix indicating which standard directory should
375 be used as the installation directory. The standard directory names are
376 given in the GNU standards (@pxref{Directory Variables, , , standards,
377 The GNU Coding Standards}). Automake extends this list with
378 @code{pkglibdir}, @code{pkgincludedir}, and @code{pkgdatadir}; these are
379 the same as the non-@samp{pkg} versions, but with @samp{@@PACKAGE@@}
380 appended. For instance, @code{pkglibdir} is defined as
381 @code{$(libdir)/@@PACKAGE@@}.
384 @cindex EXTRA_, prepending
386 For each primary, there is one additional variable named by prepending
387 @samp{EXTRA_} to the primary name. This variable is used to list
388 objects which may or may not be built, depending on what
389 @code{configure} decides. This variable is required because Automake
390 must statically know the entire list of objects that may be built in
391 order to generate a @file{Makefile.in} that will work in all cases.
393 @cindex EXTRA_PROGRAMS, defined
394 @cindex Example, EXTRA_PROGRAMS
397 For instance, @code{cpio} decides at configure time which programs are
398 built. Some of the programs are installed in @code{bindir}, and some
399 are installed in @code{sbindir}:
402 EXTRA_PROGRAMS = mt rmt
403 bin_PROGRAMS = cpio pax
404 sbin_PROGRAMS = @@MORE_PROGRAMS@@
407 Defining a primary variable without a prefix (e.g. @code{PROGRAMS}) is
410 Note that the common @samp{dir} suffix is left off when constructing the
411 variable names; thus one writes @samp{bin_PROGRAMS} and not
412 @samp{bindir_PROGRAMS}.
414 Not every sort of object can be installed in every directory. Automake
415 will flag those attempts it finds in error. Automake will also diagnose
416 obvious misspellings in directory names.
418 @cindex Extending list of installation directories
419 @cindex Installation directories, extending list
421 Sometimes the standard directories---even as augmented by Automake---
422 are not enough. In particular it is sometimes useful, for clarity, to
423 install objects in a subdirectory of some predefined directory. To this
424 end, Automake allows you to extend the list of possible installation
425 directories. A given prefix (e.g. @samp{zar}) is valid if a variable of
426 the same name with @samp{dir} appended is defined (e.g. @code{zardir}).
428 @cindex HTML support, example
430 For instance, until HTML support is part of Automake, you could use this
431 to install raw HTML documentation:
434 htmldir = $(prefix)/html
435 html_DATA = automake.html
438 @cindex noinst primary prefix, definition
440 The special prefix @samp{noinst} indicates that the objects in question
441 should not be installed at all.
443 @cindex check primary prefix, definition
445 The special prefix @samp{check} indicates that the objects in question
446 should not be built until the @code{make check} command is run.
448 Possible primary names are @samp{PROGRAMS}, @samp{LIBRARIES},
449 @samp{LISP}, @samp{PYTHON}, @samp{JAVA}, @samp{SCRIPTS}, @samp{DATA},
450 @samp{HEADERS}, @samp{MANS}, and @samp{TEXINFOS}.
462 Some primaries also allow additional prefixes which control other
463 aspects of @code{automake}'s behavior. The currently defined prefixes
464 are @samp{dist_}, @samp{nodist_}, and @samp{nobase_}. These prefixes
468 @node Canonicalization, User Variables, Uniform, Generalities
469 @section How derived variables are named
471 @cindex canonicalizing Automake macros
473 Sometimes a Makefile variable name is derived from some text the user
474 supplies. For instance, program names are rewritten into Makefile macro
475 names. Automake canonicalizes this text, so that it does not have to
476 follow Makefile macro naming rules. All characters in the name except
477 for letters, numbers, the strudel (@@), and the underscore are turned into
478 underscores when making macro references. For example, if your program
479 is named @code{sniff-glue}, the derived variable name would be
480 @code{sniff_glue_SOURCES}, not @code{sniff-glue_SOURCES}. The strudel
481 is an addition since Automake 1.4c, to make the use of Autoconf
482 substitutions in macro names less obfuscating.
485 @node User Variables, , Canonicalization, Generalities
486 @section Variables reserved for the user
488 @cindex variables, reserved for the user
489 @cindex user variables
491 Some @code{Makefile} variables are reserved by the GNU Coding Standards
492 for the use of the ``user'' -- the person building the package. For
493 instance, @code{CFLAGS} is one such variable.
495 Sometimes package developers are tempted to set user variables such as
496 @code{CFLAGS} because it appears to make their job easier -- they don't
497 have to introduce a second variable into every target.
499 However, the package itself should never set a user variable,
500 particularly not to include switches which are required for proper
501 compilation of the package. Since these variables are documented as
502 being for the package builder, that person rightfully expects to be able
503 to override any of these variables at build time.
505 To get around this problem, automake introduces an automake-specific
506 shadow variable for each user flag variable. (Shadow variables are not
507 introduced for variables like @code{CC}, where they would make no
508 sense.) The shadow variable is named by prepending @samp{AM_} to the
509 user variable's name. For instance, the shadow variable for
510 @code{YFLAGS} is @code{AM_YFLAGS}.
514 @node Examples, Invoking Automake, Generalities, Top
515 @chapter Some example packages
518 * Complete:: A simple example, start to finish
519 * Hello:: A classic program
520 * etags:: Building etags and ctags
524 @node Complete, Hello, Examples, Examples
525 @section A simple example, start to finish
527 @cindex Complete example
529 Let's suppose you just finished writing @code{zardoz}, a program to make
530 your head float from vortex to vortex. You've been using Autoconf to
531 provide a portability framework, but your @file{Makefile.in}s have been
532 ad-hoc. You want to make them bulletproof, so you turn to Automake.
534 @cindex AM_INIT_AUTOMAKE, example use
536 The first step is to update your @file{configure.in} to include the
537 commands that @code{automake} needs. The way to do this is to add an
538 @code{AM_INIT_AUTOMAKE} call just after @code{AC_INIT}:
541 AM_INIT_AUTOMAKE(zardoz, 1.0)
544 Since your program doesn't have any complicating factors (e.g., it
545 doesn't use @code{gettext}, it doesn't want to build a shared library),
546 you're done with this part. That was easy!
548 @cindex aclocal program, introduction
549 @cindex aclocal.m4, preexisting
550 @cindex acinclude.m4, defined
552 Now you must regenerate @file{configure}. But to do that, you'll need
553 to tell @code{autoconf} how to find the new macro you've used. The
554 easiest way to do this is to use the @code{aclocal} program to generate
555 your @file{aclocal.m4} for you. But wait... you already have an
556 @file{aclocal.m4}, because you had to write some hairy macros for your
557 program. The @code{aclocal} program lets you put your own macros into
558 @file{acinclude.m4}, so simply rename and then run:
561 mv aclocal.m4 acinclude.m4
566 @cindex zardoz example
568 Now it is time to write your @file{Makefile.am} for @code{zardoz}.
569 Since @code{zardoz} is a user program, you want to install it where the
570 rest of the user programs go. Additionally, @code{zardoz} has some
571 Texinfo documentation. Your @file{configure.in} script uses
572 @code{AC_REPLACE_FUNCS}, so you need to link against @samp{@@LIBOBJS@@}.
573 So here's what you'd write:
576 bin_PROGRAMS = zardoz
577 zardoz_SOURCES = main.c head.c float.c vortex9.c gun.c
578 zardoz_LDADD = @@LIBOBJS@@
580 info_TEXINFOS = zardoz.texi
583 Now you can run @code{automake --add-missing} to generate your
584 @file{Makefile.in} and grab any auxiliary files you might need, and
588 @node Hello, etags, Complete, Examples
589 @section A classic program
591 @cindex Example, GNU Hello
592 @cindex Hello example
593 @cindex GNU Hello, example
595 @uref{ftp://prep.ai.mit.edu/pub/gnu/hello-1.3.tar.gz, GNU hello} is
596 renowned for its classic simplicity and versatility. This section shows
597 how Automake could be used with the GNU Hello package. The examples
598 below are from the latest beta version of GNU Hello, but with all of the
599 maintainer-only code stripped out, as well as all copyright comments.
601 Of course, GNU Hello is somewhat more featureful than your traditional
602 two-liner. GNU Hello is internationalized, does option processing, and
603 has a manual and a test suite.
605 @cindex configure.in, from GNU Hello
606 @cindex GNU Hello, configure.in
607 @cindex Hello, configure.in
609 Here is the @file{configure.in} from GNU Hello:
612 dnl Process this file with autoconf to produce a configure script.
614 AM_INIT_AUTOMAKE(hello, 1.3.11)
615 AM_CONFIG_HEADER(config.h)
617 dnl Set of available languages.
618 ALL_LINGUAS="de fr es ko nl no pl pt sl sv"
620 dnl Checks for programs.
624 dnl Checks for libraries.
626 dnl Checks for header files.
628 AC_HAVE_HEADERS(string.h fcntl.h sys/file.h sys/param.h)
630 dnl Checks for library functions.
633 dnl Check for st_blksize in struct stat
636 dnl internationalization macros
638 AC_OUTPUT([Makefile doc/Makefile intl/Makefile po/Makefile.in \
639 src/Makefile tests/Makefile tests/hello],
640 [chmod +x tests/hello])
643 The @samp{AM_} macros are provided by Automake (or the Gettext library);
644 the rest are standard Autoconf macros.
647 The top-level @file{Makefile.am}:
650 EXTRA_DIST = BUGS ChangeLog.O
651 SUBDIRS = doc intl po src tests
654 As you can see, all the work here is really done in subdirectories.
656 The @file{po} and @file{intl} directories are automatically generated
657 using @code{gettextize}; they will not be discussed here.
659 @cindex Texinfo file handling example
660 @cindex Example, handling Texinfo files
662 In @file{doc/Makefile.am} we see:
665 info_TEXINFOS = hello.texi
666 hello_TEXINFOS = gpl.texi
669 This is sufficient to build, install, and distribute the GNU Hello
672 @cindex Regression test example
673 @cindex Example, regression test
675 Here is @file{tests/Makefile.am}:
679 EXTRA_DIST = hello.in testdata
682 The script @file{hello} is generated by @code{configure}, and is the
683 only test case. @code{make check} will run this test.
685 @cindex INCLUDES, example usage
687 Last we have @file{src/Makefile.am}, where all the real work is done:
691 hello_SOURCES = hello.c version.c getopt.c getopt1.c getopt.h system.h
692 hello_LDADD = @@INTLLIBS@@ @@ALLOCA@@
693 localedir = $(datadir)/locale
694 INCLUDES = -I../intl -DLOCALEDIR=\"$(localedir)\"
698 @node etags, , Hello, Examples
699 @section Building etags and ctags
701 @cindex Example, ctags and etags
702 @cindex ctags Example
703 @cindex etags Example
705 Here is another, trickier example. It shows how to generate two
706 programs (@code{ctags} and @code{etags}) from the same source file
707 (@file{etags.c}). The difficult part is that each compilation of
708 @file{etags.c} requires different @code{cpp} flags.
711 bin_PROGRAMS = etags ctags
713 ctags_LDADD = ctags.o
716 $(COMPILE) -DETAGS_REGEXPS -c etags.c
719 $(COMPILE) -DCTAGS -o ctags.o -c etags.c
722 Note that @code{ctags_SOURCES} is defined to be empty---that way no
723 implicit value is substituted. The implicit value, however, is used to
724 generate @code{etags} from @file{etags.o}.
726 @code{ctags_LDADD} is used to get @file{ctags.o} into the link line.
727 @code{ctags_DEPENDENCIES} is generated by Automake.
729 The above rules won't work if your compiler doesn't accept both
730 @samp{-c} and @samp{-o}. The simplest fix for this is to introduce a
731 bogus dependency (to avoid problems with a parallel @code{make}):
734 etags.o: etags.c ctags.o
735 $(COMPILE) -DETAGS_REGEXPS -c etags.c
738 $(COMPILE) -DCTAGS -c etags.c && mv etags.o ctags.o
741 Also, these explicit rules do not work if the de-ANSI-fication feature
742 is used (@pxref{ANSI}). Supporting de-ANSI-fication requires a little
746 etags._o: etags._c ctags.o
747 $(COMPILE) -DETAGS_REGEXPS -c etags.c
750 $(COMPILE) -DCTAGS -c etags.c && mv etags._o ctags.o
753 As it turns out, there is also a much easier way to do this same task.
754 Some of the above techniques are useful enough that we've kept the
755 example in the manual. However if you were to build @code{etags} and
756 @code{ctags} in real life, you would probably use per-program
757 compilation flags, like so:
760 bin_PROGRAMS = ctags etags
762 ctags_SOURCES = etags.c
763 ctags_CFLAGS = -DCTAGS
765 etags_SOURCES = etags.c
766 etags_CFLAGS = -DETAGS_REGEXPS
769 In this case Automake will cause @file{etags.c} to be compiled twice,
770 with different flags. De-ANSI-fication will work automatically. In
771 this instance, the names of the object files would be chosen by
772 automake; they would be @file{ctags-etags.c} and @file{etags-etags.o}.
773 (The name of the object files rarely matters.)
776 @node Invoking Automake, configure, Examples, Top
777 @chapter Creating a @file{Makefile.in}
779 @cindex Multiple configure.in files
780 @cindex Invoking Automake
781 @cindex Automake, invoking
783 To create all the @file{Makefile.in}s for a package, run the
784 @code{automake} program in the top level directory, with no arguments.
785 @code{automake} will automatically find each appropriate
786 @file{Makefile.am} (by scanning @file{configure.in}; @pxref{configure})
787 and generate the corresponding @file{Makefile.in}. Note that
788 @code{automake} has a rather simplistic view of what constitutes a
789 package; it assumes that a package has only one @file{configure.in}, at
790 the top. If your package has multiple @file{configure.in}s, then you
791 must run @code{automake} in each directory holding a
794 You can optionally give @code{automake} an argument; @file{.am} is
795 appended to the argument and the result is used as the name of the input
796 file. This feature is generally only used to automatically rebuild an
797 out-of-date @file{Makefile.in}. Note that @code{automake} must always
798 be run from the topmost directory of a project, even if being used to
799 regenerate the @file{Makefile.in} in some subdirectory. This is
800 necessary because @code{automake} must scan @file{configure.in}, and
801 because @code{automake} uses the knowledge that a @file{Makefile.in} is
802 in a subdirectory to change its behavior in some cases.
804 @cindex Automake options
805 @cindex Options, Automake
807 @code{automake} accepts the following options:
809 @cindex Extra files distributed with Automake
810 @cindex Files distributed with Automake
817 @opindex --add-missing
818 Automake requires certain common files to exist in certain situations;
819 for instance @file{config.guess} is required if @file{configure.in} runs
820 @code{AC_CANONICAL_HOST}. Automake is distributed with several of these
821 files; this option will cause the missing ones to be automatically added
822 to the package, whenever possible. In general if Automake tells you a
823 file is missing, try using this option. By default Automake tries to
824 make a symbolic link pointing to its own copy of the missing file; this
825 can be changed with @code{--copy}.
827 @item --libdir=@var{dir}
829 Look for Automake data files in directory @var{dir} instead of in the
830 installation directory. This is typically used for debugging.
836 When used with @code{--add-missing}, causes installed files to be
837 copied. The default is to make a symbolic link.
841 Causes the generated @file{Makefile.in}s to follow Cygnus rules, instead
842 of GNU or Gnits rules. For more information, see @ref{Cygnus}.
846 @itemx --force-missing
847 @opindex --force-missing
848 When used with @code{--add-missing}, causes standard files to be rebuilt
849 even if they already exist in the source tree. This involves removing
850 the file from the source tree before creating the new symlink (or, with
851 @code{--copy}, copying the new file).
855 Set the global strictness to @samp{foreign}. For more information, see
860 Set the global strictness to @samp{gnits}. For more information, see
865 Set the global strictness to @samp{gnu}. For more information, see
866 @ref{Gnits}. This is the default strictness.
870 Print a summary of the command line options and exit.
875 This disables the dependency tracking feature; see @ref{Dependencies}.
878 @opindex --include-deps
879 This enables the dependency tracking feature. This feature is enabled
880 by default. This option is provided for historical reasons only and
881 probably should not be used.
885 Ordinarily @code{automake} creates all @file{Makefile.in}s mentioned in
886 @file{configure.in}. This option causes it to only update those
887 @file{Makefile.in}s which are out of date with respect to one of their
891 @itemx --output-dir=@var{dir}
893 @opindex --output-dir
894 Put the generated @file{Makefile.in} in the directory @var{dir}.
895 Ordinarily each @file{Makefile.in} is created in the directory of the
896 corresponding @file{Makefile.am}. This option is used when making
903 Cause Automake to print information about which files are being read or
908 Print the version number of Automake and exit.
912 @node configure, Top level, Invoking Automake, Top
913 @chapter Scanning @file{configure.in}
915 @cindex configure.in, scanning
916 @cindex Scanning configure.in
918 Automake scans the package's @file{configure.in} to determine certain
919 information about the package. Some @code{autoconf} macros are required
920 and some variables must be defined in @file{configure.in}. Automake
921 will also use information from @file{configure.in} to further tailor its
924 Automake also supplies some Autoconf macros to make the maintenance
925 easier. These macros can automatically be put into your
926 @file{aclocal.m4} using the @code{aclocal} program.
929 * Requirements:: Configuration requirements
930 * Optional:: Other things Automake recognizes
931 * Invoking aclocal:: Auto-generating aclocal.m4
932 * Macros:: Autoconf macros supplied with Automake
933 * Extending aclocal:: Writing your own aclocal macros
937 @node Requirements, Optional, configure, configure
938 @section Configuration requirements
940 @cindex Automake requirements
941 @cindex Requirements of Automake
943 The one real requirement of Automake is that your @file{configure.in}
944 call @code{AM_INIT_AUTOMAKE}. This macro does several things which are
945 required for proper Automake operation.
946 @cvindex AM_INIT_AUTOMAKE
948 Here are the other macros which Automake requires but which are not run
949 by @code{AM_INIT_AUTOMAKE}:
951 @cindex AC_OUTPUT, scanning
955 Automake uses this to determine which files to create (@pxref{Output, ,
956 Creating Output Files, autoconf, The Autoconf Manual}). Listed files
957 named @code{Makefile} are treated as @file{Makefile}s. Other listed
958 files are treated differently. Currently the only difference is that a
959 @file{Makefile} is removed by @code{make distclean}, while other files
960 are removed by @code{make clean}.
961 @c FIXME: this is in violation of standards!
965 You may need the following macros in some conditions, even though they
969 @item AC_CHECK_TOOL([STRIP],[strip])
970 @cindex STRIP, how to setup
971 @cindex install-strip and STRIP
972 @cvindex AC_CHECK_TOOL([STRIP],[strip])
973 Installed binaries are usually stripped using @code{strip} when you run
974 @code{make install-strip}. However @code{strip} might not be the
975 right tool to use in cross-compilation environments, therefore
976 Automake will honor the @code{STRIP} environment variable to overrule
977 the program used to perform stripping. Automake will not set @code{STRIP}
978 itself. If your package is not setup for cross-compilation you do not
979 have to care (@code{strip} is ok), otherwise you can set @code{STRIP}
980 automatically by calling @code{AC_CHECK_TOOL([STRIP],[strip])} from
981 your @file{configure.in}.
985 @node Optional, Invoking aclocal, Requirements, configure
986 @section Other things Automake recognizes
988 @cindex Macros Automake recognizes
989 @cindex Recognized macros by Automake
991 Automake will also recognize the use of certain macros and tailor the
992 generated @file{Makefile.in} appropriately. Currently recognized macros
993 and their effects are:
996 @item AC_CONFIG_HEADER
997 Automake requires the use of @code{AM_CONFIG_HEADER}, which is similar
998 to @code{AC_CONFIG_HEADER} (@pxref{Configuration Headers, ,
999 Configuration Header Files, autoconf, The Autoconf Manual}), but does
1000 some useful Automake-specific work.
1001 @cvindex AC_CONFIG_HEADER
1003 @item AC_CONFIG_AUX_DIR
1004 Automake will look for various helper scripts, such as
1005 @file{mkinstalldirs}, in the directory named in this macro invocation.
1006 If not seen, the scripts are looked for in their @samp{standard}
1007 locations (either the top source directory, or in the source directory
1008 corresponding to the current @file{Makefile.am}, whichever is
1009 appropriate). @xref{Input, , Finding `configure' Input, autoconf, The
1011 @cvindex AC_CONFIG_AUX_DIR
1012 FIXME: give complete list of things looked for in this directory
1015 Automake will insert definitions for the variables defined by
1016 @code{AC_PATH_XTRA} into each @file{Makefile.in} that builds a C program
1017 or library. @xref{System Services, , System Services, autoconf, The
1019 @cvindex AC_PATH_XTRA
1021 @item AC_CANONICAL_HOST
1022 @itemx AC_CHECK_TOOL
1023 Automake will ensure that @file{config.guess} and @file{config.sub}
1024 exist. Also, the @file{Makefile} variables @samp{host_alias} and
1025 @samp{host_triplet} are introduced. See both @ref{Canonicalizing, ,
1026 Getting the Canonical System Type, autoconf, The Autoconf Manual}, and
1027 @ref{Generic Programs, , Generic Program Checks, autoconf, The Autoconf
1029 @c fixme xref autoconf docs.
1030 @cvindex AC_CANONICAL_HOST
1031 @cvindex AC_CHECK_TOOL
1033 @vindex host_triplet
1035 @item AC_CANONICAL_SYSTEM
1036 This is similar to @code{AC_CANONICAL_HOST}, but also defines the
1037 @file{Makefile} variables @samp{build_alias} and @samp{target_alias}.
1038 @xref{Canonicalizing, , Getting the Canonical System Type, autoconf, The
1040 @cvindex AC_CANONICAL_SYSTEM
1042 @vindex target_alias
1044 @item AC_FUNC_ALLOCA
1045 @itemx AC_FUNC_GETLOADAVG
1046 @itemx AC_FUNC_MEMCMP
1047 @itemx AC_STRUCT_ST_BLOCKS
1048 @itemx AC_FUNC_FNMATCH
1049 @itemx AC_FUNC_MKTIME
1050 @itemx AM_FUNC_STRTOD
1051 @itemx AC_REPLACE_FUNCS
1052 @itemx AC_REPLACE_GNU_GETOPT
1053 @itemx AM_WITH_REGEX
1054 Automake will ensure that the appropriate dependencies are generated for
1055 the objects corresponding to these macros. Also, Automake will verify
1056 that the appropriate source files are part of the distribution. Note
1057 that Automake does not come with any of the C sources required to use
1058 these macros, so @code{automake -a} will not install the sources.
1059 @xref{A Library}, for more information. Also, see @ref{Particular
1060 Functions, , Particular Function Checks, autoconf, The Autoconf Manual}.
1061 @cvindex AC_FUNC_ALLOCA
1062 @cvindex AC_FUNC_GETLOADAVG
1063 @cvindex AC_FUNC_MEMCMP
1064 @cvindex AC_STRUCT_ST_BLOCKS
1065 @cvindex AC_FUNC_FNMATCH
1066 @cvindex AC_FUNC_FNMATCH
1067 @cvindex AC_REPLACE_FUNCS
1068 @cvindex AC_REPLACE_GNU_GETOPT
1069 @cvindex AM_FUNC_STRTOD
1070 @cvindex AM_WITH_REGEX
1071 @cvindex AC_FUNC_MKTIME
1074 Automake will detect statements which put @file{.o} files into
1075 @code{LIBOBJS}, and will treat these additional files as if they were
1076 discovered via @code{AC_REPLACE_FUNCS}. @xref{Generic Functions, ,
1077 Generic Function Checks, autoconf, The Autoconf Manual}.
1080 @item AC_PROG_RANLIB
1081 This is required if any libraries are built in the package.
1082 @xref{Particular Programs, , Particular Program Checks, autoconf, The
1084 @cvindex AC_PROG_RANLIB
1087 This is required if any C++ source is included. @xref{Particular
1088 Programs, , Particular Program Checks, autoconf, The Autoconf Manual}.
1089 @cvindex AC_PROG_CXX
1092 This is required if any Fortran 77 source is included. This macro is
1093 distributed with Autoconf version 2.13 and later. @xref{Particular
1094 Programs, , Particular Program Checks, autoconf, The Autoconf Manual}.
1095 @cvindex AC_PROG_F77
1097 @item AC_F77_LIBRARY_LDFLAGS
1098 This is required for programs and shared libraries that are a mixture of
1099 languages that include Fortran 77 (@pxref{Mixing Fortran 77 With C and
1100 C++}). @xref{Macros, , Autoconf macros supplied with Automake}.
1101 @cvindex AC_F77_LIBRARY_LDFLAGS
1103 @item AC_PROG_LIBTOOL
1104 Automake will turn on processing for @code{libtool} (@pxref{Top, ,
1105 Introduction, libtool, The Libtool Manual}).
1106 @cvindex AC_PROG_LIBTOOL
1109 If a Yacc source file is seen, then you must either use this macro or
1110 define the variable @samp{YACC} in @file{configure.in}. The former is
1111 preferred (@pxref{Particular Programs, , Particular Program Checks,
1112 autoconf, The Autoconf Manual}).
1113 @cvindex AC_PROG_YACC
1116 @item AC_DECL_YYTEXT
1117 This macro is required if there is Lex source in the package.
1118 @xref{Particular Programs, , Particular Program Checks, autoconf, The
1120 @cvindex AC_DECL_YYTEXT
1123 If a Lex source file is seen, then this macro must be used.
1124 @xref{Particular Programs, , Particular Program Checks, autoconf, The
1126 @cvindex AC_PROG_LEX
1129 If Automake sees that this variable is set in @file{configure.in}, it
1130 will check the @file{po} directory to ensure that all the named
1131 @samp{.po} files exist, and that all the @samp{.po} files that exist are
1133 @cvindex ALL_LINGUAS
1135 @item AM_C_PROTOTYPES
1136 This is required when using automatic de-ANSI-fication; see @ref{ANSI}.
1137 @cvindex AM_C_PROTOTYPES
1139 @item AM_GNU_GETTEXT
1140 This macro is required for packages which use GNU gettext
1141 (@pxref{gettext}). It is distributed with gettext. If Automake sees
1142 this macro it ensures that the package meets some of gettext's
1144 @cvindex AM_GNU_GETTEXT
1146 @item AM_MAINTAINER_MODE
1147 @opindex --enable-maintainer-mode
1148 This macro adds a @samp{--enable-maintainer-mode} option to
1149 @code{configure}. If this is used, @code{automake} will cause
1150 @samp{maintainer-only} rules to be turned off by default in the
1151 generated @file{Makefile.in}s. This macro is disallowed in @samp{Gnits}
1152 mode (@pxref{Gnits}). This macro defines the @samp{MAINTAINER_MODE}
1153 conditional, which you can use in your own @file{Makefile.am}.
1154 @cvindex AM_MAINTAINER_MODE
1157 @itemx AC_CHECK_TOOL
1158 @itemx AC_CHECK_PROG
1159 @itemx AC_CHECK_PROGS
1161 @itemx AC_PATH_PROGS
1162 For each of these macros, the first argument is automatically defined as
1163 a variable in each generated @file{Makefile.in}. @xref{Setting Output
1164 Variables, , Setting Output Variables, autoconf, The Autoconf Manual},
1165 and @ref{Generic Programs, , Generic Program Checks, autoconf, The
1168 @cvindex AC_CHECK_TOOL
1169 @cvindex AC_CHECK_PROG
1170 @cvindex AC_CHECK_PROGS
1171 @cvindex AC_PATH_PROG
1172 @cvindex AC_PATH_PROGS
1177 @node Invoking aclocal, Macros, Optional, configure
1178 @section Auto-generating aclocal.m4
1180 @cindex Invoking aclocal
1181 @cindex aclocal, Invoking
1183 Automake includes a number of Autoconf macros which can be used in your
1184 package; some of them are actually required by Automake in certain
1185 situations. These macros must be defined in your @file{aclocal.m4};
1186 otherwise they will not be seen by @code{autoconf}.
1188 The @code{aclocal} program will automatically generate @file{aclocal.m4}
1189 files based on the contents of @file{configure.in}. This provides a
1190 convenient way to get Automake-provided macros, without having to
1191 search around. Also, the @code{aclocal} mechanism is extensible for use
1194 At startup, @code{aclocal} scans all the @file{.m4} files it can find,
1195 looking for macro definitions. Then it scans @file{configure.in}. Any
1196 mention of one of the macros found in the first step causes that macro,
1197 and any macros it in turn requires, to be put into @file{aclocal.m4}.
1199 The contents of @file{acinclude.m4}, if it exists, are also
1200 automatically included in @file{aclocal.m4}. This is useful for
1201 incorporating local macros into @file{configure}.
1203 @code{aclocal} tries to be smart about looking for new @code{AC_DEFUN}s
1204 in the files it scans. It will warn if it finds duplicates. It also
1205 tries to copy the full text of the scanned file into @file{aclocal.m4},
1206 including both @samp{#} and @samp{dnl} comments. If you want to make a
1207 comment which will be completely ignored by @code{aclocal}, use
1208 @samp{##} as the comment leader.
1210 @code{aclocal} accepts the following options:
1213 @item --acdir=@var{dir}
1215 Look for the macro files in @var{dir} instead of the installation
1216 directory. This is typically used for debugging.
1220 Print a summary of the command line options and exit.
1224 Add the directory @var{dir} to the list of directories searched for
1227 @item --output=@var{file}
1229 Cause the output to be put into @var{file} instead of @file{aclocal.m4}.
1231 @item --print-ac-dir
1232 @opindex --print-ac-dir
1233 Prints the name of the directory which @code{aclocal} will search to
1234 find the @file{.m4} files. When this option is given, normal processing
1235 is suppressed. This option can be used by a package to determine where
1236 to install a macro file.
1240 Print the names of the files it examines.
1244 Print the version number of Automake and exit.
1248 @node Macros, Extending aclocal, Invoking aclocal, configure
1249 @section Autoconf macros supplied with Automake
1251 @c consider generating this node automatically from m4 files.
1254 @item AM_CONFIG_HEADER
1255 Automake will generate rules to automatically regenerate the config
1256 header. If you do use this macro, you must create the file
1257 @file{stamp-h.in} in your source directory. It can be empty.
1258 @cvindex AM_CONFIG_HEADER
1260 @item AM_ENABLE_MULTILIB
1261 This is used when a ``multilib'' library is being built. A
1262 @dfn{multilib} library is one that is built multiple times, once per
1263 target flag combination. This is only useful when the library is
1264 intended to be cross-compiled. The first optional argument is the name
1265 of the @file{Makefile} being generated; it defaults to @samp{Makefile}.
1266 The second option argument is used to find the top source directory; it
1267 defaults to the empty string (generally this should not be used unless
1268 you are familiar with the internals).
1270 @item AM_FUNC_STRTOD
1271 If the @code{strtod} function is not available, or does not work
1272 correctly (like the one on SunOS 5.4), add @file{strtod.o} to output
1273 variable @code{LIBOBJS}.
1274 @cvindex AM_FUNC_STRTOD
1276 @item AM_FUNC_ERROR_AT_LINE
1277 If the function @code{error_at_line} is not found, then add
1278 @file{error.o} to @code{LIBOBJS}.
1279 @cvindex AM_FUNC_ERROR_AT_LINE
1281 @item AM_FUNC_OBSTACK
1282 Check for the GNU obstacks code; if not found, add @file{obstack.o} to
1284 @cvindex AM_FUNC_OBSTACK
1286 @item AM_C_PROTOTYPES
1287 Check to see if function prototypes are understood by the compiler. If
1288 so, define @samp{PROTOTYPES} and set the output variables @samp{U} and
1289 @samp{ANSI2KNR} to the empty string. Otherwise, set @samp{U} to
1290 @samp{_} and @samp{ANSI2KNR} to @samp{./ansi2knr}. Automake uses these
1291 values to implement automatic de-ANSI-fication.
1292 @cvindex AM_C_PROTOTYPES
1294 @item AM_HEADER_TIOCGWINSZ_NEEDS_SYS_IOCTL
1295 If the use of @code{TIOCGWINSZ} requires @file{<sys/ioctl.h>}, then
1296 define @code{GWINSZ_IN_SYS_IOCTL}. Otherwise @code{TIOCGWINSZ} can be
1297 found in @file{<termios.h>}.
1298 @cvindex AM_HEADER_TIOCGWINSZ_NEEDS_SYS_IOCTL
1300 @item AM_INIT_AUTOMAKE
1301 Runs many macros that most @file{configure.in}'s need. This macro has
1302 two required arguments, the package and the version number. By default
1303 this macro @code{AC_DEFINE}'s @samp{PACKAGE} and @samp{VERSION}. This
1304 can be avoided by passing in a non-empty third argument.
1306 @item AM_PATH_LISPDIR
1307 Searches for the program @code{emacs}, and, if found, sets the output
1308 variable @code{lispdir} to the full path to Emacs' site-lisp directory.
1309 @cvindex AM_PATH_LISPDIR
1311 @item AM_PROG_CC_STDC
1312 If the C compiler in not in ANSI C mode by default, try to add an option
1313 to output variable @code{CC} to make it so. This macro tries various
1314 options that select ANSI C on some system or another. It considers the
1315 compiler to be in ANSI C mode if it handles function prototypes correctly.
1317 If you use this macro, you should check after calling it whether the C
1318 compiler has been set to accept ANSI C; if not, the shell variable
1319 @code{am_cv_prog_cc_stdc} is set to @samp{no}. If you wrote your source
1320 code in ANSI C, you can make an un-ANSIfied copy of it by using the
1321 @code{ansi2knr} option (@pxref{ANSI}).
1324 @cindex HP-UX 10, lex problems
1325 @cindex lex problems with HP-UX 10
1326 Like @code{AC_PROG_LEX} with @code{AC_DECL_YYTEXT} (@pxref{Particular
1327 Programs, , Particular Program Checks, autoconf, The Autoconf Manual}),
1328 but uses the @code{missing} script on systems that do not have
1329 @code{lex}. @samp{HP-UX 10} is one such system.
1331 Autoconf 2.50 and higher, in order to simplify the interface, includes
1332 the body of @code{AC_DECL_YYTEXT} in @code{AC_PROG_LEX}. To ensure
1333 backward compatibility, @code{AC_DECL_YYTEXT} is nevertheless defined as
1334 an invocation of @code{AC_PROG_LEX}. Since @code{AM_PROG_LEX} invokes
1335 both, it causes an annoying but benign warning (@code{AC_PROG_LEX}
1336 invoked multiple times) which you should just ignore. In the future,
1337 once Automake requires Autoconf 2.50, this issue will be fixed, but the
1338 current compatibility with Autoconf 2.13 prevents this.
1341 This macro finds the @code{gcj} program or causes an error. It sets
1342 @samp{GCJ} and @samp{GCJFLAGS}. @code{gcj} is the Java front-end to the
1343 GNU Compiler Collection.
1344 @cvindex AM_PROG_GCJ
1346 @item AM_SANITY_CHECK
1347 This checks to make sure that a file created in the build directory is
1348 newer than a file in the source directory. This can fail on systems
1349 where the clock is set incorrectly. This macro is automatically run
1350 from @code{AM_INIT_AUTOMAKE}.
1352 @item AM_SYS_POSIX_TERMIOS
1353 @cvindex am_cv_sys_posix_termios
1354 @cindex POSIX termios headers
1355 @cindex termios POSIX headers
1356 Check to see if POSIX termios headers and functions are available on the
1357 system. If so, set the shell variable @code{am_cv_sys_posix_termios} to
1358 @samp{yes}. If not, set the variable to @samp{no}.
1360 @item AM_TYPE_PTRDIFF_T
1361 @cvindex HAVE_PTRDIFF_T
1363 Define @samp{HAVE_PTRDIFF_T} if the type @samp{ptrdiff_t} is defined in
1366 @item AM_WITH_DMALLOC
1367 @cvindex WITH_DMALLOC
1368 @cindex dmalloc, support for
1369 @opindex --with-dmalloc
1371 @uref{ftp://ftp.letters.com/src/dmalloc/dmalloc.tar.gz, dmalloc}
1372 package. If the user configures with @samp{--with-dmalloc}, then define
1373 @code{WITH_DMALLOC} and add @samp{-ldmalloc} to @code{LIBS}.
1377 @opindex --with-regex
1378 @cindex regex package
1380 Adds @samp{--with-regex} to the @code{configure} command line. If
1381 specified (the default), then the @samp{regex} regular expression
1382 library is used, @file{regex.o} is put into @samp{LIBOBJS}, and
1383 @samp{WITH_REGEX} is defined.. If @samp{--without-regex} is given, then
1384 the @samp{rx} regular expression library is used, and @file{rx.o} is put
1385 into @samp{LIBOBJS}.
1390 @node Extending aclocal, , Macros, configure
1391 @section Writing your own aclocal macros
1393 @cindex aclocal, extending
1394 @cindex Extending aclocal
1396 The @code{aclocal} program doesn't have any built-in knowledge of any
1397 macros, so it is easy to extend it with your own macros.
1399 This is mostly used for libraries which want to supply their own
1400 Autoconf macros for use by other programs. For instance the
1401 @code{gettext} library supplies a macro @code{AM_GNU_GETTEXT} which
1402 should be used by any package using @code{gettext}. When the library is
1403 installed, it installs this macro so that @code{aclocal} will find it.
1405 A file of macros should be a series of @code{AC_DEFUN}'s. The
1406 @code{aclocal} programs also understands @code{AC_REQUIRE}, so it is
1407 safe to put each macro in a separate file. @xref{Prerequisite Macros, ,
1408 , autoconf, The Autoconf Manual}, and @ref{Macro Definitions, , ,
1409 autoconf, The Autoconf Manual}.
1411 A macro file's name should end in @file{.m4}. Such files should be
1412 installed in @file{$(datadir)/aclocal}.
1415 @node Top level, Alternative, configure, Top
1416 @chapter The top-level @file{Makefile.am}
1418 @cindex SUBDIRS, explained
1420 In packages with subdirectories, the top level @file{Makefile.am} must
1421 tell Automake which subdirectories are to be built. This is done via
1422 the @code{SUBDIRS} variable.
1425 The @code{SUBDIRS} macro holds a list of subdirectories in which
1426 building of various sorts can occur. Many targets (e.g. @code{all}) in
1427 the generated @file{Makefile} will run both locally and in all specified
1428 subdirectories. Note that the directories listed in @code{SUBDIRS} are
1429 not required to contain @file{Makefile.am}s; only @file{Makefile}s
1430 (after configuration). This allows inclusion of libraries from packages
1431 which do not use Automake (such as @code{gettext}). The directories
1432 mentioned in @code{SUBDIRS} must be direct children of the current
1433 directory. For instance, you cannot put @samp{src/subdir} into
1436 In packages that use subdirectories, the top-level @file{Makefile.am} is
1437 often very short. For instance, here is the @file{Makefile.am} from the
1438 GNU Hello distribution:
1441 EXTRA_DIST = BUGS ChangeLog.O README-alpha
1442 SUBDIRS = doc intl po src tests
1445 @cindex SUBDIRS, overriding
1446 @cindex Overriding SUBDIRS
1448 It is possible to override the @code{SUBDIRS} variable if, like in the
1449 case of GNU @code{Inetutils}, you want to only build a subset of the
1450 entire package. In your @file{Makefile.am} include:
1453 SUBDIRS = @@MY_SUBDIRS@@
1456 Then in your @file{configure.in} you can specify:
1459 MY_SUBDIRS="src doc lib po"
1460 AC_SUBST(MY_SUBDIRS)
1463 (Note that we don't use the variable name @code{SUBDIRS} in our
1464 @file{configure.in}; that would cause Automake to believe that every
1465 @file{Makefile.in} should recurse into the listed subdirectories.)
1467 The upshot of this is that Automake is tricked into building the package
1468 to take the subdirs, but doesn't actually bind that list until
1469 @code{configure} is run.
1471 Although the @code{SUBDIRS} macro can contain configure substitutions
1472 (e.g. @samp{@@DIRS@@}); Automake itself does not actually examine the
1473 contents of this variable.
1475 If @code{SUBDIRS} is defined, then your @file{configure.in} must include
1476 @code{AC_PROG_MAKE_SET}. When Automake invokes @code{make} in a
1477 subdirectory, it uses the value of the @code{MAKE} variable. It passes
1478 the value of the variable @code{AM_MAKEFLAGS} to the @code{make}
1479 invocation; this can be set in @file{Makefile.am} if there are flags you
1480 must always pass to @code{make}.
1484 The use of @code{SUBDIRS} is not restricted to just the top-level
1485 @file{Makefile.am}. Automake can be used to construct packages of
1488 By default, Automake generates @file{Makefiles} which work depth-first
1489 (@samp{postfix}). However, it is possible to change this ordering. You
1490 can do this by putting @samp{.} into @code{SUBDIRS}. For instance,
1491 putting @samp{.} first will cause a @samp{prefix} ordering of
1492 directories. All @samp{clean} targets are run in reverse order of build
1495 Sometimes, such as when running @code{make dist}, you want all possible
1496 subdirectories to be examined. In this case Automake will use
1497 @code{DIST_SUBDIRS}, instead of @code{SUBDIRS}, to determine where to
1498 recurse. This variable will also be used when the user runs
1499 @code{distclean} or @code{maintainer-clean}. It should be set to the
1500 full list of subdirectories in the project. If this macro is not set,
1501 Automake will attempt to set it for you.
1504 @node Alternative, Rebuilding, Top level, Top
1505 @chapter An Alternative Approach to Subdirectories
1507 If you've ever read Peter Miller's excellent paper,
1508 @uref{http://www.pcug.org.au/~millerp/rmch/recu-make-cons-harm.html,
1509 Recursive Make Considered Harmful}, the preceding section on the use of
1510 subdirectories will probably come as unwelcome advice. For those who
1511 haven't read the paper, Miller's main thesis is that recursive
1512 @code{make} invocations are both slow and error-prone.
1514 Automake provides sufficient cross-directory support @footnote{We
1515 believe. This work is new and there are probably warts.
1516 @xref{Introduction}, for information on reporting bugs.} to enable you
1517 to write a single @file{Makefile.am} for a complex multi-directory
1521 By default an installable file specified in a subdirectory will have its
1522 directory name stripped before installation. For instance, in this
1523 example, the header file will be installed as
1524 @file{$(includedir)/stdio.h}:
1527 include_HEADERS = inc/stdio.h
1531 @cindex Path stripping, avoiding
1532 @cindex Avoiding path stripping
1534 However, the @samp{nobase_} prefix can be used to circumvent this path
1535 stripping. In this example, the header file will be installed as
1536 @file{$(includedir)/sys/types.h}:
1539 nobase_include_HEADERS = sys/types.h
1543 @node Rebuilding, Programs, Alternative, Top
1544 @chapter Rebuilding Makefiles
1546 Automake generates rules to automatically rebuild @file{Makefile}s,
1547 @file{configure}, and other derived files like @file{Makefile.in}.
1549 If you are using @code{AM_MAINTAINER_MODE} in @file{configure.in}, then
1550 these automatic rebuilding rules are only enabled in maintainer mode.
1552 Sometimes you need to run @code{aclocal} with an argument like @code{-I}
1553 to tell it where to find @file{.m4} files. Since sometimes @code{make}
1554 will automatically run @code{aclocal}, you need a way to specify these
1555 arguments. You can do this by defining @code{ACLOCAL_AMFLAGS}; this
1556 holds arguments which are passed verbatim to @code{aclocal}. This macro
1557 is only useful in the top-level @file{Makefile.am}.
1558 @cindex ACLOCAL_AMFLAGS
1561 @node Programs, Other objects, Rebuilding, Top
1562 @chapter Building Programs and Libraries
1564 A large part of Automake's functionality is dedicated to making it easy
1565 to build programs and libraries.
1568 * A Program:: Building a program
1569 * A Library:: Building a library
1570 * Program and Library Variables::
1571 Variables controlling program and
1573 * LIBOBJS:: Special handling for LIBOBJS and ALLOCA
1574 * A Shared Library:: Building a Libtool library
1575 * Program variables:: Variables used when building a program
1576 * Yacc and Lex:: Yacc and Lex support
1578 * Fortran 77 Support::
1580 * Support for Other Languages::
1581 * ANSI:: Automatic de-ANSI-fication
1582 * Dependencies:: Automatic dependency tracking
1586 @node A Program, A Library, Programs, Programs
1587 @section Building a program
1589 @cindex PROGRAMS, bindir
1590 @vindex bin_PROGRAMS
1591 @vindex sbin_PROGRAMS
1592 @vindex libexec_PROGRAMS
1593 @vindex pkglib_PROGRAMS
1594 @vindex noinst_PROGRAMS
1596 In a directory containing source that gets built into a program (as
1597 opposed to a library), the @samp{PROGRAMS} primary is used. Programs
1598 can be installed in @code{bindir}, @code{sbindir}, @code{libexecdir},
1599 @code{pkglibdir}, or not at all (@samp{noinst}). They can also be built
1600 only for @code{make check}, in which case the prefix is @samp{check}.
1605 bin_PROGRAMS = hello
1608 In this simple case, the resulting @file{Makefile.in} will contain code
1609 to generate a program named @code{hello}.
1611 Associated with each program are several assisting variables which are
1612 named after the program. These variables are all optional, and have
1613 reasonable defaults. Each variable, its use, and default is spelled out
1614 below; we use the ``hello'' example throughout.
1616 The variable @code{hello_SOURCES} is used to specify which source files
1617 get built into an executable:
1620 hello_SOURCES = hello.c version.c getopt.c getopt1.c getopt.h system.h
1623 This causes each mentioned @samp{.c} file to be compiled into the
1624 corresponding @samp{.o}. Then all are linked to produce @file{hello}.
1626 @cindex _SOURCES primary, defined
1627 @cindex SOURCES primary, defined
1628 @cindex Primary variable, SOURCES
1630 If @samp{hello_SOURCES} is not specified, then it defaults to the single
1631 file @file{hello.c}; that is, the default is to compile a single C file
1632 whose base name is the name of the program itself. (This is a terrible
1633 default but we are stuck with it for historical reasons.)
1637 Multiple programs can be built in a single directory. Multiple programs
1638 can share a single source file, which must be listed in each
1639 @samp{_SOURCES} definition.
1641 @cindex Header files in _SOURCES
1642 @cindex _SOURCES and header files
1644 Header files listed in a @samp{_SOURCES} definition will be included in
1645 the distribution but otherwise ignored. In case it isn't obvious, you
1646 should not include the header file generated by @file{configure} in an
1647 @samp{_SOURCES} variable; this file should not be distributed. Lex
1648 (@samp{.l}) and Yacc (@samp{.y}) files can also be listed; see @ref{Yacc
1651 You can't put a configure substitution (e.g., @samp{@@FOO@@}) into a
1652 @samp{_SOURCES} variable. The reason for this is a bit hard to explain,
1653 but suffice to say that it simply won't work. Automake will give an
1654 error if you try to do this.
1656 @cindex EXTRA_prog_SOURCES, defined
1658 Automake must know all the source files that could possibly go into a
1659 program, even if not all the files are built in every circumstance.
1660 Any files which are only conditionally built should be listed in the
1661 appropriate @samp{EXTRA_} variable. For instance, if
1662 @file{hello-linux.c} were conditionally included in @code{hello}, the
1663 @file{Makefile.am} would contain:
1666 EXTRA_hello_SOURCES = hello-linux.c
1669 Similarly, sometimes it is useful to determine the programs that are to
1670 be built at configure time. For instance, GNU @code{cpio} only builds
1671 @code{mt} and @code{rmt} under special circumstances.
1673 @cindex EXTRA_PROGRAMS, defined
1675 In this case, you must notify Automake of all the programs that can
1676 possibly be built, but at the same time cause the generated
1677 @file{Makefile.in} to use the programs specified by @code{configure}.
1678 This is done by having @code{configure} substitute values into each
1679 @samp{_PROGRAMS} definition, while listing all optionally built programs
1680 in @code{EXTRA_PROGRAMS}.
1681 @vindex EXTRA_PROGRAMS
1683 If you need to link against libraries that are not found by
1684 @code{configure}, you can use @code{LDADD} to do so. This variable
1685 actually can be used to add any options to the linker command line.
1688 @cindex prog_LDADD, defined
1690 Sometimes, multiple programs are built in one directory but do not share
1691 the same link-time requirements. In this case, you can use the
1692 @samp{@var{prog}_LDADD} variable (where @var{prog} is the name of the
1693 program as it appears in some @samp{_PROGRAMS} variable, and usually
1694 written in lowercase) to override the global @code{LDADD}. If this
1695 variable exists for a given program, then that program is not linked
1699 For instance, in GNU cpio, @code{pax}, @code{cpio} and @code{mt} are
1700 linked against the library @file{libcpio.a}. However, @code{rmt} is
1701 built in the same directory, and has no such link requirement. Also,
1702 @code{mt} and @code{rmt} are only built on certain architectures. Here
1703 is what cpio's @file{src/Makefile.am} looks like (abridged):
1706 bin_PROGRAMS = cpio pax @@MT@@
1707 libexec_PROGRAMS = @@RMT@@
1708 EXTRA_PROGRAMS = mt rmt
1710 LDADD = ../lib/libcpio.a @@INTLLIBS@@
1713 cpio_SOURCES = @dots{}
1714 pax_SOURCES = @dots{}
1715 mt_SOURCES = @dots{}
1716 rmt_SOURCES = @dots{}
1719 @cindex _LDFLAGS, defined
1721 @samp{@var{prog}_LDADD} is inappropriate for passing program-specific
1722 linker flags (except for @samp{-l}, @samp{-L}, @samp{-dlopen} and
1723 @samp{-dlpreopen}). So, use the @samp{@var{prog}_LDFLAGS} variable for
1727 @cindex _DEPENDENCIES, defined
1729 It is also occasionally useful to have a program depend on some other
1730 target which is not actually part of that program. This can be done
1731 using the @samp{@var{prog}_DEPENDENCIES} variable. Each program depends
1732 on the contents of such a variable, but no further interpretation is
1735 If @samp{@var{prog}_DEPENDENCIES} is not supplied, it is computed by
1736 Automake. The automatically-assigned value is the contents of
1737 @samp{@var{prog}_LDADD}, with most configure substitutions, @samp{-l},
1738 @samp{-L}, @samp{-dlopen} and @samp{-dlpreopen} options removed. The
1739 configure substitutions that are left in are only @samp{@@LIBOBJS@@} and
1740 @samp{@@ALLOCA@@}; these are left because it is known that they will not
1741 cause an invalid value for @samp{@var{prog}_DEPENDENCIES} to be
1745 @node A Library, Program and Library Variables, A Program, Programs
1746 @section Building a library
1748 @cindex _LIBRARIES primary, defined
1749 @cindex LIBRARIES primary, defined
1750 @cindex Primary variable, LIBRARIES
1752 @vindex lib_LIBRARIES
1753 @vindex pkglib_LIBRARIES
1754 @vindex noinst_LIBRARIES
1756 Building a library is much like building a program. In this case, the
1757 name of the primary is @samp{LIBRARIES}. Libraries can be installed in
1758 @code{libdir} or @code{pkglibdir}.
1760 @xref{A Shared Library}, for information on how to build shared
1761 libraries using Libtool and the @samp{LTLIBRARIES} primary.
1763 Each @samp{_LIBRARIES} variable is a list of the libraries to be built.
1764 For instance to create a library named @file{libcpio.a}, but not install
1765 it, you would write:
1768 noinst_LIBRARIES = libcpio.a
1771 The sources that go into a library are determined exactly as they are
1772 for programs, via the @samp{_SOURCES} variables. Note that the library
1773 name is canonicalized (@pxref{Canonicalization}), so the @samp{_SOURCES}
1774 variable corresponding to @file{liblob.a} is @samp{liblob_a_SOURCES},
1775 not @samp{liblob.a_SOURCES}.
1777 @cindex _LIBADD primary, defined
1778 @cindex LIBADD primary, defined
1779 @cindex Primary variable, LIBADD
1781 Extra objects can be added to a library using the
1782 @samp{@var{library}_LIBADD} variable. This should be used for objects
1783 determined by @code{configure}. Again from @code{cpio}:
1788 libcpio_a_LIBADD = @@LIBOBJS@@ @@ALLOCA@@
1791 In addition, sources for extra objects that will not exist until
1792 configure-time must be added to the @code{BUILT_SOURCES} variable
1796 @node Program and Library Variables, LIBOBJS, A Library, Programs
1797 @section Program and Library Variables
1799 Associated with each program are a collection of variables which can be
1800 used to modify how that program is built. There is a similar list of
1801 such variables for each library. The canonical name of the program (or
1802 library) is used as a base for naming these variables.
1804 In the list below, we use the name ``maude'' to refer to the program or
1805 library. In your @file{Makefile.am} you would replace this with the
1806 canonical name of your program. This list also refers to ``maude'' as a
1807 program, but in general the same rules apply for both static and dynamic
1808 libraries; the documentation below notes situations where programs and
1813 This variable, if it exists, lists all the source files which are
1814 compiled to build the program. These files are added to the
1815 distribution by default. When building the program, Automake will cause
1816 each source file to be compiled to a single @file{.o} file (or
1817 @file{.lo} when using libtool). Normally these object files are named
1818 after the source file, but other factors can change this. If a file in
1819 the @samp{_SOURCES} variable has an unrecognized extension, Automake
1820 will do one of two things with it. If a suffix rule exists for turning
1821 files with the unrecognized extension into @file{.o} files, then
1822 automake will treat this file as it will any other source file
1823 (@pxref{Support for Other Languages}). Otherwise, the file will be
1824 ignored as though it were a header file.
1826 The prefixes @samp{dist_} and @samp{nodist_} can be used to control
1827 whether files listed in a @samp{_SOURCES} variable are distributed.
1828 @samp{dist_} is redundant, as sources are distributed by default, but it
1829 can be specified for clarity if desired.
1831 It is possible to have both @samp{dist_} and @samp{nodist_} variants of
1832 a given @samp{_SOURCES} variable at once; this lets you easily
1833 distribute some files and not others, for instance:
1836 nodist_maude_SOURCES = nodist.c
1837 dist_maude_SOURCES = dist-me.c
1841 @item EXTRA_maude_SOURCES
1842 Automake needs to know the list of files you intend to compile
1843 @emph{statically}. For one thing, this is the only way Automake has of
1844 knowing what sort of language support a given @file{Makefile.in}
1845 requires. @footnote{There are other, more obscure reasons reasons for
1846 this limitation as well.} This means that, for example, you can't put a
1847 configure substitution like @samp{@@my_sources@@} into a @samp{_SOURCES}
1848 variable. If you intend to conditionally compile source files and use
1849 @file{configure} to substitute the appropriate object names into, e.g.,
1850 @samp{_LDADD} (see below), then you should list the corresponding source
1851 files in the @samp{EXTRA_} variable.
1853 This variable also supports @samp{dist_} and @samp{nodist_} prefixes,
1854 e.g., @samp{nodist_EXTRA_maude_SOURCES}.
1857 A static library is created by default by invoking @code{$(AR) cru}
1858 followed by the name of the library and then the objects being put into
1859 the library. You can override this by setting the @samp{_AR} variable.
1860 This is usually used with C++; some C++ compilers require a special
1861 invocation in order to instantiate all the templates which should go
1865 Extra objects can be added to a static library using the @samp{_LIBADD}
1866 variable. This should be used for objects determined by
1867 @code{configure}. Note that @samp{_LIBADD} is not used for shared
1868 libraries; there you must use @samp{_LDADD}.
1871 Extra objects can be added to a shared library or a program by listing
1872 them in the @samp{_LDADD} variable. This should be used for objects
1873 determined by @code{configure}.
1875 @samp{_LDADD} is inappropriate for passing program-specific linker flags
1876 (except for @samp{-l}, @samp{-L}, @samp{-dlopen} and @samp{-dlpreopen}).
1877 Use the @samp{_LDFLAGS} variable for this purpose.
1880 This variable is used to pass extra flags to the link step of a program
1881 or a shared library.
1884 Automake allows you to set compilation flags on a per-program (or
1885 per-library) basis. A single source file can be included in several
1886 programs, and it will potentially be compiled with different flags for
1887 each program. This works for any language directly supported by
1888 Automake. The flags are @samp{_CFLAGS}, @samp{_CXXFLAGS},
1889 @samp{_OBJCFLAGS}, @samp{_YFLAGS}, @samp{_ASFLAGS}, @samp{_FFLAGS},
1890 @samp{_RFLAGS}, and @samp{_GCJFLAGS}.
1892 When using a per-program compilation flag, Automake will choose a
1893 different name for the intermediate object files. Ordinarily a file
1894 like @file{sample.c} will be compiled to produce @file{sample.o}.
1895 However, if the program's @samp{_CFLAGS} variable is set, then the
1896 object file will be named, for instance, @file{maude-sample.o}.
1898 @item maude_DEPENDENCIES
1899 It is also occasionally useful to have a program depend on some other
1900 target which is not actually part of that program. This can be done
1901 using the @samp{_DEPENDENCIES} variable. Each program depends on the
1902 contents of such a variable, but no further interpretation is done.
1904 If @samp{_DEPENDENCIES} is not supplied, it is computed by Automake.
1905 The automatically-assigned value is the contents of @samp{_LDADD}, with
1906 most configure substitutions, @samp{-l}, @samp{-L}, @samp{-dlopen} and
1907 @samp{-dlpreopen} options removed. The configure substitutions that are
1908 left in are only @samp{@@LIBOBJS@@} and @samp{@@ALLOCA@@}; these are
1909 left because it is known that they will not cause an invalid value for
1910 @samp{_DEPENDENCIES} to be generated.
1912 @item maude_SHORTNAME
1913 On some platforms the allowable file names are very short. In order to
1914 support these systems and per-program compilation flags at the same
1915 time, Automake allows you to set a ``short name'' which will influence
1916 how intermediate object files are named. For instance, if you set
1917 @samp{maude_SHORTNAME} to @samp{m}, then in the above per-program
1918 compilation flag example the object file would be named
1919 @file{m-sample.o} rather than @file{maude-sample.o}. This facility is
1920 rarely needed in practice, and we recommend avoiding it until you find
1925 @node LIBOBJS, A Shared Library, Program and Library Variables, Programs
1926 @section Special handling for LIBOBJS and ALLOCA
1928 @cindex @@LIBOBJS@@, special handling
1929 @cindex @@ALLOCA@@, special handling
1931 Automake explicitly recognizes the use of @code{@@LIBOBJS@@} and
1932 @code{@@ALLOCA@@}, and uses this information, plus the list of
1933 @code{LIBOBJS} files derived from @file{configure.in} to automatically
1934 include the appropriate source files in the distribution (@pxref{Dist}).
1935 These source files are also automatically handled in the
1936 dependency-tracking scheme; see @xref{Dependencies}.
1938 @code{@@LIBOBJS@@} and @code{@@ALLOCA@@} are specially recognized in any
1939 @samp{_LDADD} or @samp{_LIBADD} variable.
1942 @node A Shared Library, Program variables, LIBOBJS, Programs
1943 @section Building a Shared Library
1945 @cindex Shared libraries, support for
1947 Building shared libraries is a relatively complex matter. For this
1948 reason, GNU Libtool (@pxref{Top, , Introduction, libtool, The
1949 Libtool Manual}) was created to help build shared libraries in a
1950 platform-independent way.
1952 @cindex _LTLIBRARIES primary, defined
1953 @cindex LTLIBRARIES primary, defined
1954 @cindex Primary variable, LTLIBRARIES
1955 @cindex Example of shared libraries
1957 @cindex suffix .la, defined
1959 Automake uses Libtool to build libraries declared with the
1960 @samp{LTLIBRARIES} primary. Each @samp{_LTLIBRARIES} variable is a list
1961 of shared libraries to build. For instance, to create a library named
1962 @file{libgettext.a} and its corresponding shared libraries, and install
1963 them in @samp{libdir}, write:
1966 lib_LTLIBRARIES = libgettext.la
1969 @vindex lib_LTLIBRARIES
1970 @vindex pkglib_LTLIBRARIES
1971 @vindex noinst_LTLIBRARIES
1972 @vindex check_LTLIBRARIES
1974 @cindex check_LTLIBRARIES, not allowed
1976 Note that shared libraries @emph{must} be installed, so
1977 @code{check_LTLIBRARIES} is not allowed. However,
1978 @code{noinst_LTLIBRARIES} is allowed. This feature should be used for
1979 libtool ``convenience libraries''.
1981 @cindex suffix .lo, defined
1983 For each library, the @samp{@var{library}_LIBADD} variable contains the
1984 names of extra libtool objects (@file{.lo} files) to add to the shared
1985 library. The @samp{@var{library}_LDFLAGS} variable contains any
1986 additional libtool flags, such as @samp{-version-info} or
1989 @cindex @@LTLIBOBJS@@, special handling
1991 Where an ordinary library might include @code{@@LIBOBJS@@}, a libtool
1992 library must use @code{@@LTLIBOBJS@@}. This is required because the
1993 object files that libtool operates on do not necessarily end in
1994 @file{.o}. The libtool manual contains more details on this topic.
1996 For libraries installed in some directory, Automake will automatically
1997 supply the appropriate @samp{-rpath} option. However, for libraries
1998 determined at configure time (and thus mentioned in
1999 @code{EXTRA_LTLIBRARIES}), Automake does not know the eventual
2000 installation directory; for such libraries you must add the
2001 @samp{-rpath} option to the appropriate @samp{_LDFLAGS} variable by
2004 Ordinarily, Automake requires that a shared library's name start with
2005 @samp{lib}. However, if you are building a dynamically loadable module
2006 then you might wish to use a "nonstandard" name. In this case, put
2007 @code{-module} into the @samp{_LDFLAGS} variable.
2009 @xref{Using Automake, Using Automake with Libtool, The Libtool Manual,
2010 libtool, The Libtool Manual}, for more information.
2013 @node Program variables, Yacc and Lex, A Shared Library, Programs
2014 @section Variables used when building a program
2016 Occasionally it is useful to know which @file{Makefile} variables
2017 Automake uses for compilations; for instance you might need to do your
2018 own compilation in some special cases.
2020 Some variables are inherited from Autoconf; these are @code{CC},
2021 @code{CFLAGS}, @code{CPPFLAGS}, @code{DEFS}, @code{LDFLAGS}, and
2025 There are some additional variables which Automake itself defines:
2029 The contents of this macro are passed to every compilation which invokes
2030 the C preprocessor; it is a list of arguments to the preprocessor. For
2031 instance, @samp{-I} and @samp{-D} options should be listed here.
2033 Automake already provides some @samp{-I} options automatically. In
2034 particular it generates @samp{-I$(srcdir)}, @samp{-I.}, and a @samp{-I}
2035 pointing to the directory holding @file{config.h} (if you've used
2036 @code{AC_CONFIG_HEADER} or @code{AM_CONFIG_HEADER}). You can disable
2037 the default @samp{-I} options using the @samp{nostdinc} option.
2040 This does the same job as @samp{AM_CPPFLAGS}. It is an older name for
2041 the same functionality. This macro is deprecated; we suggest using
2042 @samp{AM_CPPFLAGS} instead.
2045 This is the command used to actually compile a C source file. The
2046 filename is appended to form the complete command line.
2049 This is the command used to actually link a C program.
2053 @node Yacc and Lex, C++ Support, Program variables, Programs
2054 @section Yacc and Lex support
2056 Automake has somewhat idiosyncratic support for Yacc and Lex.
2058 Automake assumes that the @file{.c} file generated by @code{yacc} (or
2059 @code{lex}) should be named using the basename of the input file. That
2060 is, for a yacc source file @file{foo.y}, Automake will cause the
2061 intermediate file to be named @file{foo.c} (as opposed to
2062 @file{y.tab.c}, which is more traditional).
2064 The extension of a yacc source file is used to determine the extension
2065 of the resulting @samp{C} or @samp{C++} file. Files with the extension
2066 @samp{.y} will be turned into @samp{.c} files; likewise, @samp{.yy} will
2067 become @samp{.cc}; @samp{.y++}, @samp{c++}; and @samp{.yxx},
2070 Likewise, lex source files can be used to generate @samp{C} or
2071 @samp{C++}; the extensions @samp{.l}, @samp{.ll}, @samp{.l++}, and
2072 @samp{.lxx} are recognized.
2074 You should never explicitly mention the intermediate (@samp{C} or
2075 @samp{C++}) file in any @samp{SOURCES} variable; only list the source
2078 The intermediate files generated by @code{yacc} (or @code{lex}) will be
2079 included in any distribution that is made. That way the user doesn't
2080 need to have @code{yacc} or @code{lex}.
2082 If a @code{yacc} source file is seen, then your @file{configure.in} must
2083 define the variable @samp{YACC}. This is most easily done by invoking
2084 the macro @samp{AC_PROG_YACC} (@pxref{Particular Programs, , Particular
2085 Program Checks, autoconf, The Autoconf Manual}).
2087 Similarly, if a @code{lex} source file is seen, then your
2088 @file{configure.in} must define the variable @samp{LEX}. You can use
2089 @samp{AC_PROG_LEX} to do this (@pxref{Particular Programs, , Particular
2090 Program Checks, autoconf, The Autoconf Manual}). Automake's @code{lex}
2091 support also requires that you use the @samp{AC_DECL_YYTEXT}
2092 macro---automake needs to know the value of @samp{LEX_OUTPUT_ROOT}.
2093 This is all handled for you if you use the @code{AM_PROG_LEX} macro
2097 @cindex yacc, multiple parsers
2098 @cindex Multiple yacc parsers
2099 @cindex Multiple lex lexers
2100 @cindex lex, multiple lexers
2103 Automake makes it possible to include multiple @code{yacc} (or
2104 @code{lex}) source files in a single program. Automake uses a small
2105 program called @code{ylwrap} to run @code{yacc} (or @code{lex}) in a
2106 subdirectory. This is necessary because yacc's output filename is
2107 fixed, and a parallel make could conceivably invoke more than one
2108 instance of @code{yacc} simultaneously. The @code{ylwrap} program is
2109 distributed with Automake. It should appear in the directory specified
2110 by @samp{AC_CONFIG_AUX_DIR} (@pxref{Input, , Finding `configure' Input,
2111 autoconf, The Autoconf Manual}), or the current directory if that macro
2112 is not used in @file{configure.in}.
2114 For @code{yacc}, simply managing locking is insufficient. The output of
2115 @code{yacc} always uses the same symbol names internally, so it isn't
2116 possible to link two @code{yacc} parsers into the same executable.
2118 We recommend using the following renaming hack used in @code{gdb}:
2120 #define yymaxdepth c_maxdepth
2121 #define yyparse c_parse
2123 #define yyerror c_error
2124 #define yylval c_lval
2125 #define yychar c_char
2126 #define yydebug c_debug
2127 #define yypact c_pact
2134 #define yyexca c_exca
2135 #define yyerrflag c_errflag
2136 #define yynerrs c_nerrs
2140 #define yy_yys c_yys
2141 #define yystate c_state
2144 #define yy_yyv c_yyv
2146 #define yylloc c_lloc
2147 #define yyreds c_reds
2148 #define yytoks c_toks
2149 #define yylhs c_yylhs
2150 #define yylen c_yylen
2151 #define yydefred c_yydefred
2152 #define yydgoto c_yydgoto
2153 #define yysindex c_yysindex
2154 #define yyrindex c_yyrindex
2155 #define yygindex c_yygindex
2156 #define yytable c_yytable
2157 #define yycheck c_yycheck
2158 #define yyname c_yyname
2159 #define yyrule c_yyrule
2162 For each define, replace the @samp{c_} prefix with whatever you like.
2163 These defines work for @code{bison}, @code{byacc}, and traditional
2164 @code{yacc}s. If you find a parser generator that uses a symbol not
2165 covered here, please report the new name so it can be added to the list.
2168 @node C++ Support, Fortran 77 Support, Yacc and Lex, Programs
2169 @section C++ Support
2172 @cindex Support for C++
2174 Automake includes full support for C++.
2176 Any package including C++ code must define the output variable
2177 @samp{CXX} in @file{configure.in}; the simplest way to do this is to use
2178 the @code{AC_PROG_CXX} macro (@pxref{Particular Programs, , Particular
2179 Program Checks, autoconf, The Autoconf Manual}).
2181 A few additional variables are defined when a C++ source file is seen:
2185 The name of the C++ compiler.
2188 Any flags to pass to the C++ compiler.
2191 The command used to actually compile a C++ source file. The file name
2192 is appended to form the complete command line.
2195 The command used to actually link a C++ program.
2199 @node Fortran 77 Support, Java Support, C++ Support, Programs
2200 @comment node-name, next, previous, up
2201 @section Fortran 77 Support
2203 @cindex Fortran 77 support
2204 @cindex Support for Fortran 77
2206 Automake includes full support for Fortran 77.
2208 Any package including Fortran 77 code must define the output variable
2209 @samp{F77} in @file{configure.in}; the simplest way to do this is to use
2210 the @code{AC_PROG_F77} macro (@pxref{Particular Programs, , Particular
2211 Program Checks, autoconf, The Autoconf Manual}). @xref{Fortran 77 and
2214 A few additional variables are defined when a Fortran 77 source file is
2220 The name of the Fortran 77 compiler.
2223 Any flags to pass to the Fortran 77 compiler.
2226 Any flags to pass to the Ratfor compiler.
2229 The command used to actually compile a Fortran 77 source file. The file
2230 name is appended to form the complete command line.
2233 The command used to actually link a pure Fortran 77 program or shared
2238 Automake can handle preprocessing Fortran 77 and Ratfor source files in
2239 addition to compiling them@footnote{Much, if not most, of the
2240 information in the following sections pertaining to preprocessing
2241 Fortran 77 programs was taken almost verbatim from @ref{Catalogue of
2242 Rules, , Catalogue of Rules, make, The GNU Make Manual}.}. Automake
2243 also contains some support for creating programs and shared libraries
2244 that are a mixture of Fortran 77 and other languages (@pxref{Mixing
2245 Fortran 77 With C and C++}).
2247 These issues are covered in the following sections.
2250 * Preprocessing Fortran 77::
2251 * Compiling Fortran 77 Files::
2252 * Mixing Fortran 77 With C and C++::
2253 * Fortran 77 and Autoconf::
2257 @node Preprocessing Fortran 77, Compiling Fortran 77 Files, Fortran 77 Support, Fortran 77 Support
2258 @comment node-name, next, previous, up
2259 @subsection Preprocessing Fortran 77
2261 @cindex Preprocessing Fortran 77
2262 @cindex Fortran 77, Preprocessing
2263 @cindex Ratfor programs
2265 @file{N.f} is made automatically from @file{N.F} or @file{N.r}. This
2266 rule runs just the preprocessor to convert a preprocessable Fortran 77
2267 or Ratfor source file into a strict Fortran 77 source file. The precise
2268 command used is as follows:
2273 @code{$(F77) -F $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_FFLAGS) $(FFLAGS)}
2276 @code{$(F77) -F $(AM_FFLAGS) $(FFLAGS) $(AM_RFLAGS) $(RFLAGS)}
2281 @node Compiling Fortran 77 Files, Mixing Fortran 77 With C and C++, Preprocessing Fortran 77, Fortran 77 Support
2282 @comment node-name, next, previous, up
2283 @subsection Compiling Fortran 77 Files
2285 @file{N.o} is made automatically from @file{N.f}, @file{N.F} or
2286 @file{N.r} by running the Fortran 77 compiler. The precise command used
2292 @code{$(F77) -c $(AM_FFLAGS) $(FFLAGS)}
2295 @code{$(F77) -c $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_FFLAGS) $(FFLAGS)}
2298 @code{$(F77) -c $(AM_FFLAGS) $(FFLAGS) $(AM_RFLAGS) $(RFLAGS)}
2303 @node Mixing Fortran 77 With C and C++, Fortran 77 and Autoconf, Compiling Fortran 77 Files, Fortran 77 Support
2304 @comment node-name, next, previous, up
2305 @subsection Mixing Fortran 77 With C and C++
2307 @cindex Fortran 77, mixing with C and C++
2308 @cindex Mixing Fortran 77 with C and C++
2309 @cindex Linking Fortran 77 with C and C++
2311 @cindex Mixing Fortran 77 with C and/or C++
2313 Automake currently provides @emph{limited} support for creating programs
2314 and shared libraries that are a mixture of Fortran 77 and C and/or C++.
2315 However, there are many other issues related to mixing Fortran 77 with
2316 other languages that are @emph{not} (currently) handled by Automake, but
2317 that are handled by other packages@footnote{For example,
2318 @uref{http://www-zeus.desy.de/~burow/cfortran/, the cfortran package}
2319 addresses all of these inter-language issues, and runs under nearly all
2320 Fortran 77, C and C++ compilers on nearly all platforms. However,
2321 @code{cfortran} is not yet Free Software, but it will be in the next
2325 Automake can help in two ways:
2329 Automatic selection of the linker depending on which combinations of
2333 Automatic selection of the appropriate linker flags (e.g. @samp{-L} and
2334 @samp{-l}) to pass to the automatically selected linker in order to link
2335 in the appropriate Fortran 77 intrinsic and run-time libraries.
2337 @cindex FLIBS, defined
2338 These extra Fortran 77 linker flags are supplied in the output variable
2339 @code{FLIBS} by the @code{AC_F77_LIBRARY_LDFLAGS} Autoconf macro
2340 supplied with newer versions of Autoconf (Autoconf version 2.13 and
2341 later). @xref{Fortran 77 Compiler Characteristics, , , autoconf, The
2345 If Automake detects that a program or shared library (as mentioned in
2346 some @code{_PROGRAMS} or @code{_LTLIBRARIES} primary) contains source
2347 code that is a mixture of Fortran 77 and C and/or C++, then it requires
2348 that the macro @code{AC_F77_LIBRARY_LDFLAGS} be called in
2349 @file{configure.in}, and that either @code{$(FLIBS)} or @code{@@FLIBS@@}
2350 appear in the appropriate @code{_LDADD} (for programs) or @code{_LIBADD}
2351 (for shared libraries) variables. It is the responsibility of the
2352 person writing the @file{Makefile.am} to make sure that @code{$(FLIBS)}
2353 or @code{@@FLIBS@@} appears in the appropriate @code{_LDADD} or
2354 @code{_LIBADD} variable.
2356 @cindex Mixed language example
2357 @cindex Example, mixed language
2359 For example, consider the following @file{Makefile.am}:
2363 foo_SOURCES = main.cc foo.f
2364 foo_LDADD = libfoo.la @@FLIBS@@
2366 pkglib_LTLIBRARIES = libfoo.la
2367 libfoo_la_SOURCES = bar.f baz.c zardoz.cc
2368 libfoo_la_LIBADD = $(FLIBS)
2371 In this case, Automake will insist that @code{AC_F77_LIBRARY_LDFLAGS}
2372 is mentioned in @file{configure.in}. Also, if @code{@@FLIBS@@} hadn't
2373 been mentioned in @code{foo_LDADD} and @code{libfoo_la_LIBADD}, then
2374 Automake would have issued a warning.
2379 * How the Linker is Chosen::
2382 @node How the Linker is Chosen, , Mixing Fortran 77 With C and C++, Mixing Fortran 77 With C and C++
2383 @comment node-name, next, previous, up
2384 @subsubsection How the Linker is Chosen
2386 @cindex Automatic linker selection
2387 @cindex Selecting the linker automatically
2389 The following diagram demonstrates under what conditions a particular
2390 linker is chosen by Automake.
2392 For example, if Fortran 77, C and C++ source code were to be compiled
2393 into a program, then the C++ linker will be used. In this case, if the
2394 C or Fortran 77 linkers required any special libraries that weren't
2395 included by the C++ linker, then they must be manually added to an
2396 @code{_LDADD} or @code{_LIBADD} variable by the user writing the
2402 code \ C C++ Fortran
2403 ----------------- +---------+---------+---------+
2407 +---------+---------+---------+
2411 +---------+---------+---------+
2415 +---------+---------+---------+
2419 +---------+---------+---------+
2421 C + Fortran | | | x |
2423 +---------+---------+---------+
2425 C++ + Fortran | | x | |
2427 +---------+---------+---------+
2429 C + C++ + Fortran | | x | |
2431 +---------+---------+---------+
2435 @node Fortran 77 and Autoconf, , Mixing Fortran 77 With C and C++, Fortran 77 Support
2436 @comment node-name, next, previous, up
2437 @subsection Fortran 77 and Autoconf
2439 The current Automake support for Fortran 77 requires a recent enough
2440 version Autoconf that also includes support for Fortran 77. Full
2441 Fortran 77 support was added to Autoconf 2.13, so you will want to use
2442 that version of Autoconf or later.
2445 @node Java Support, Support for Other Languages, Fortran 77 Support, Programs
2446 @comment node-name, next, previous, up
2447 @section Java Support
2449 @cindex Java support
2450 @cindex Support for Java
2452 Automake includes support for compiled Java, using @code{gcj}, the Java
2453 front end to the GNU Compiler Collection.
2455 Any package including Java code to be compiled must define the output
2456 variable @samp{GCJ} in @file{configure.in}; the variable @samp{GCJFLAGS}
2457 must also be defined somehow (either in @file{configure.in} or
2458 @file{Makefile.am}). The simplest way to do this is to use the
2459 @code{AM_PROG_GCJ} macro.
2463 By default, programs including Java source files are linked with
2466 As always, the contents of @samp{AM_GCJFLAGS} are passed to every
2467 compilation invoking @code{gcj} (in its role as an ahead-of-time
2468 compiler -- when invoking it to create @file{.class} files,
2469 @samp{AM_JAVACFLAGS} is used instead). If it is necessary to pass
2470 options to @code{gcj} from @file{Makefile.am}, this macro, and not the
2471 user macro @samp{GCJFLAGS}, should be used.
2475 @code{gcj} can be used to compile @file{.java}, @file{.class},
2476 @file{.zip}, or @file{.jar} files.
2479 @node Support for Other Languages, ANSI, Java Support, Programs
2480 @comment node-name, next, previous, up
2481 @section Support for Other Languages
2483 Automake currently only includes full support for C, C++ (@pxref{C++
2484 Support}), Fortran 77 (@pxref{Fortran 77 Support}), and Java
2485 (@pxref{Java Support}). There is only rudimentary support for other
2486 languages, support for which will be improved based on user demand.
2488 Some limited support for adding your own languages is available via the
2489 suffix rule handling; see @ref{Suffixes}.
2492 @node ANSI, Dependencies, Support for Other Languages, Programs
2493 @section Automatic de-ANSI-fication
2495 @cindex de-ANSI-fication, defined
2497 Although the GNU standards allow the use of ANSI C, this can have the
2498 effect of limiting portability of a package to some older compilers
2499 (notably the SunOS C compiler).
2501 Automake allows you to work around this problem on such machines by
2502 @dfn{de-ANSI-fying} each source file before the actual compilation takes
2505 @vindex AUTOMAKE_OPTIONS
2508 If the @file{Makefile.am} variable @code{AUTOMAKE_OPTIONS}
2509 (@pxref{Options}) contains the option @code{ansi2knr} then code to
2510 handle de-ANSI-fication is inserted into the generated
2513 This causes each C source file in the directory to be treated as ANSI C.
2514 If an ANSI C compiler is available, it is used. If no ANSI C compiler
2515 is available, the @code{ansi2knr} program is used to convert the source
2516 files into K&R C, which is then compiled.
2518 The @code{ansi2knr} program is simple-minded. It assumes the source
2519 code will be formatted in a particular way; see the @code{ansi2knr} man
2522 Support for de-ANSI-fication requires the source files @file{ansi2knr.c}
2523 and @file{ansi2knr.1} to be in the same package as the ANSI C source;
2524 these files are distributed with Automake. Also, the package
2525 @file{configure.in} must call the macro @code{AM_C_PROTOTYPES}
2527 @cvindex AM_C_PROTOTYPES
2529 Automake also handles finding the @code{ansi2knr} support files in some
2530 other directory in the current package. This is done by prepending the
2531 relative path to the appropriate directory to the @code{ansi2knr}
2532 option. For instance, suppose the package has ANSI C code in the
2533 @file{src} and @file{lib} subdirs. The files @file{ansi2knr.c} and
2534 @file{ansi2knr.1} appear in @file{lib}. Then this could appear in
2535 @file{src/Makefile.am}:
2538 AUTOMAKE_OPTIONS = ../lib/ansi2knr
2541 If no directory prefix is given, the files are assumed to be in the
2544 Files mentioned in @code{LIBOBJS} which need de-ANSI-fication will not
2545 be automatically handled. That's because @code{configure} will generate
2546 an object name like @file{regex.o}, while @code{make} will be looking
2547 for @file{regex_.o} (when de-ANSI-fying). Eventually this problem will
2548 be fixed via @code{autoconf} magic, but for now you must put this code
2549 into your @file{configure.in}, just before the @code{AC_OUTPUT} call:
2552 # This is necessary so that .o files in LIBOBJS are also built via
2553 # the ANSI2KNR-filtering rules.
2554 LIBOBJS=`echo $LIBOBJS|sed 's/\.o /\$U.o /g;s/\.o$/\$U.o/'`
2558 @node Dependencies, , ANSI, Programs
2559 @section Automatic dependency tracking
2561 As a developer it is often painful to continually update the
2562 @file{Makefile.in} whenever the include-file dependencies change in a
2563 project. Automake supplies a way to automatically track dependency
2566 @cindex Dependency tracking
2567 @cindex Automatic dependency tracking
2569 Automake always uses complete dependencies for a compilation, including
2570 system headers. Automake's model is that dependency computation should
2571 be a side effect of the build. To this end, dependencies are computed
2572 by running all compilations through a special wrapper program called
2573 @code{depcomp}. @code{depcomp} understands how to coax many different C
2574 and C++ compilers into generating dependency information in the format
2575 it requires. @code{automake -a} will install @code{depcomp} into your
2576 source tree for you. If @code{depcomp} can't figure out how to properly
2577 invoke your compiler, dependency tracking will simply be disabled for
2582 Experience with earlier versions of Automake taught us that it is not
2583 reliable to generate dependencies only on the maintainer's system, as
2584 configurations vary too much. So instead Automake implements dependency
2585 tracking at build time.
2587 Automatic dependency tracking can be suppressed by putting
2588 @code{no-dependencies} in the variable @code{AUTOMAKE_OPTIONS}. Or, you
2589 can invoke @code{automake} with the @code{-i} option. Dependency
2590 tracking is enabled by default.
2592 @vindex AUTOMAKE_OPTIONS
2593 @opindex no-dependencies
2595 The person building your package also can choose to disable dependency
2596 tracking by configuring with @code{--disable-dependency-tracking}.
2598 @cindex Disabling dependency tracking
2599 @cindex Dependency tracking, disabling
2602 @node Other objects, Other GNU Tools, Programs, Top
2603 @chapter Other Derived Objects
2605 Automake can handle derived objects which are not C programs. Sometimes
2606 the support for actually building such objects must be explicitly
2607 supplied, but Automake will still automatically handle installation and
2611 * Scripts:: Executable scripts
2612 * Headers:: Header files
2613 * Data:: Architecture-independent data files
2614 * Sources:: Derived sources
2618 @node Scripts, Headers, Other objects, Other objects
2619 @section Executable Scripts
2621 @cindex _SCRIPTS primary, defined
2622 @cindex SCRIPTS primary, defined
2623 @cindex Primary variable, SCRIPTS
2625 It is possible to define and install programs which are scripts. Such
2626 programs are listed using the @samp{SCRIPTS} primary name. Automake
2627 doesn't define any dependencies for scripts; the @file{Makefile.am}
2628 should include the appropriate rules.
2631 Automake does not assume that scripts are derived objects; such objects
2632 must be deleted by hand (@pxref{Clean}).
2634 The @code{automake} program itself is a Perl script that is generated at
2635 configure time from @file{automake.in}. Here is how this is handled:
2638 bin_SCRIPTS = automake
2641 Since @code{automake} appears in the @code{AC_OUTPUT} macro, a target
2642 for it is automatically generated.
2644 @cindex SCRIPTS, installation directories
2645 @cindex Installing scripts
2648 @vindex sbin_SCRIPTS
2649 @vindex libexec_SCRIPTS
2650 @vindex pkgdata_SCRIPTS
2651 @vindex noinst_SCRIPTS
2653 Script objects can be installed in @code{bindir}, @code{sbindir},
2654 @code{libexecdir}, or @code{pkgdatadir}.
2657 @node Headers, Data, Scripts, Other objects
2658 @section Header files
2660 @cindex _HEADERS primary, defined
2661 @cindex HEADERS primary, defined
2662 @cindex Primary variable, HEADERS
2664 @vindex noinst_HEADERS
2666 Header files are specified by the @samp{HEADERS} family of variables.
2667 Generally header files are not installed, so the @code{noinst_HEADERS}
2668 variable will be the most used.
2671 All header files must be listed somewhere; missing ones will not appear
2672 in the distribution. Often it is clearest to list uninstalled headers
2673 with the rest of the sources for a program. @xref{A Program}. Headers
2674 listed in a @samp{_SOURCES} variable need not be listed in any
2675 @samp{_HEADERS} variable.
2677 @cindex HEADERS, installation directories
2678 @cindex Installing headers
2680 @vindex include_HEADERS
2681 @vindex oldinclude_HEADERS
2682 @vindex pkginclude_HEADERS
2684 Headers can be installed in @code{includedir}, @code{oldincludedir}, or
2685 @code{pkgincludedir}.
2688 @node Data, Sources, Headers, Other objects
2689 @section Architecture-independent data files
2691 @cindex _DATA primary, defined
2692 @cindex DATA primary, defined
2693 @cindex Primary variable, DATA
2695 Automake supports the installation of miscellaneous data files using the
2696 @samp{DATA} family of variables.
2700 @vindex sysconf_DATA
2701 @vindex sharedstate_DATA
2702 @vindex localstate_DATA
2703 @vindex pkgdata_DATA
2705 Such data can be installed in the directories @code{datadir},
2706 @code{sysconfdir}, @code{sharedstatedir}, @code{localstatedir}, or
2709 By default, data files are @emph{not} included in a distribution.
2711 Here is how Automake installs its auxiliary data files:
2714 pkgdata_DATA = clean-kr.am clean.am @dots{}
2718 @node Sources, , Data, Other objects
2719 @section Built sources
2721 @cindex BUILT_SOURCES, defined
2723 Occasionally a file which would otherwise be called @samp{source}
2724 (e.g. a C @samp{.h} file) is actually derived from some other file.
2725 Such files should be listed in the @code{BUILT_SOURCES} variable.
2726 @vindex BUILT_SOURCES
2728 @code{BUILT_SOURCES} is actually a bit of a misnomer, as any file which
2729 must be created early in the build process can be listed in this
2732 A source file listed in @code{BUILT_SOURCES} is created before the other
2733 @code{all} targets are made. However, such a source file is not
2734 compiled unless explicitly requested by mentioning it in some other
2735 @samp{_SOURCES} variable.
2737 So, for instance, if you had header files which were created by a script
2738 run at build time, then you would list these headers in
2739 @code{BUILT_SOURCES}, to ensure that they would be built before any
2740 other compilations (perhaps ones using these headers) were started.
2743 @node Other GNU Tools, Documentation, Other objects, Top
2744 @chapter Other GNU Tools
2746 Since Automake is primarily intended to generate @file{Makefile.in}s for
2747 use in GNU programs, it tries hard to interoperate with other GNU tools.
2750 * Emacs Lisp:: Emacs Lisp
2758 @node Emacs Lisp, gettext, Other GNU Tools, Other GNU Tools
2761 @cindex _LISP primary, defined
2762 @cindex LISP primary, defined
2763 @cindex Primary variable, LISP
2769 Automake provides some support for Emacs Lisp. The @samp{LISP} primary
2770 is used to hold a list of @file{.el} files. Possible prefixes for this
2771 primary are @samp{lisp_} and @samp{noinst_}. Note that if
2772 @code{lisp_LISP} is defined, then @file{configure.in} must run
2773 @code{AM_PATH_LISPDIR} (@pxref{Macros}).
2777 By default Automake will byte-compile all Emacs Lisp source files using
2778 the Emacs found by @code{AM_PATH_LISPDIR}. If you wish to avoid
2779 byte-compiling, simply define the variable @code{ELCFILES} to be empty.
2780 Byte-compiled Emacs Lisp files are not portable among all versions of
2781 Emacs, so it makes sense to turn this off if you expect sites to have
2782 more than one version of Emacs installed. Furthermore, many packages
2783 don't actually benefit from byte-compilation. Still, we recommend that
2784 you leave it enabled by default. It is probably better for sites with
2785 strange setups to cope for themselves than to make the installation less
2786 nice for everybody else.
2789 @node gettext, Libtool, Emacs Lisp, Other GNU Tools
2792 @cindex GNU Gettext support
2793 @cindex Gettext support
2794 @cindex Support for GNU Gettext
2796 If @code{AM_GNU_GETTEXT} is seen in @file{configure.in}, then Automake
2797 turns on support for GNU gettext, a message catalog system for
2798 internationalization
2799 (@pxref{GNU Gettext, , , gettext, GNU gettext utilities}).
2801 The @code{gettext} support in Automake requires the addition of two
2802 subdirectories to the package, @file{intl} and @file{po}. Automake
2803 insures that these directories exist and are mentioned in
2806 Furthermore, Automake checks that the definition of @code{ALL_LINGUAS}
2807 in @file{configure.in} corresponds to all the valid @file{.po} files,
2811 @node Libtool, Java, gettext, Other GNU Tools
2814 Automake provides support for GNU Libtool (@pxref{Top, , Introduction,
2815 libtool, The Libtool Manual}) with the @samp{LTLIBRARIES} primary.
2816 @xref{A Shared Library}.
2819 @node Java, Python, Libtool, Other GNU Tools
2822 @cindex _JAVA primary, defined
2823 @cindex JAVA primary, defined
2824 @cindex Primary variable, JAVA
2826 Automake provides some minimal support for Java compilation with the
2827 @samp{JAVA} primary.
2829 Any @file{.java} files listed in a @samp{_JAVA} variable will be
2830 compiled with @code{JAVAC} at build time. By default, @file{.class}
2831 files are not included in the distribution.
2833 @cindex JAVA restrictions
2834 @cindex Restrictions for JAVA
2836 Currently Automake enforces the restriction that only one @samp{_JAVA}
2837 primary can be used in a given @file{Makefile.am}. The reason for this
2838 restriction is that, in general, it isn't possible to know which
2839 @file{.class} files were generated from which @file{.java} files -- so
2840 it would be impossible to know which files to install where. For
2841 instance, a @file{.java} file can define multiple classes; the resulting
2842 @file{.class} file names cannot be predicted without parsing the
2845 There are a few variables which are used when compiling Java sources:
2849 The name of the Java compiler. This defaults to @samp{javac}.
2852 The flags to pass to the compiler. This is considered to be a user
2853 variable (@pxref{User Variables}).
2856 More flags to pass to the Java compiler. This, and not
2857 @code{JAVACFLAGS}, should be used when it is necessary to put Java
2858 compiler flags into @file{Makefile.am}.
2861 The value of this variable is passed to the @samp{-d} option to
2862 @code{javac}. It defaults to @samp{$(top_builddir)}.
2865 This variable is an @code{sh} expression which is used to set the
2866 @code{CLASSPATH} environment variable on the @code{javac} command line.
2867 (In the future we will probably handle class path setting differently.)
2871 @node Python, , Java, Other GNU Tools
2874 @cindex _PYTHON primary, defined
2875 @cindex PYTHON primary, defined
2876 @cindex Primary variable, PYTHON
2879 Automake provides support for Python modules. Automake will turn on
2880 Python support if the @code{AM_PATH_PYTHON} macro is used in
2881 @file{configure.in}. The @samp{PYTHON} primary is used to hold a list
2882 of @file{.py} files. Possible prefixes for this primary are
2883 @samp{python_} and @samp{noinst_}. Note that if @code{python_PYTHON} is
2884 defined, then @file{configure.in} must run @code{AM_PATH_PYTHON}.
2885 Python source files are included in the distribution by default.
2887 @code{AM_PATH_PYTHON} takes a single optional argument. This argument,
2888 if present, is the minimum version of Python which can be used for this
2889 package. If the version of Python found on the system is older than the
2890 required version, then @code{AM_PATH_PYTHON} will cause an error.
2892 @code{AM_PATH_PYTHON} creates several output variables based on the
2893 Python installation found during configuration.
2897 The name of the Python executable.
2899 @item PYTHON_VERSION
2900 The Python version number, in the form @var{major}.@var{minor}
2901 (e.g. @samp{1.5}). This is currently the value of
2902 @code{sys.version[:3]}.
2905 The string @code{$prefix}. This term may be used in future work
2906 which needs the contents of Python's @code{sys.prefix}, but general
2907 consensus is to always use the value from configure.
2909 @item PYTHON_EXEC_PREFIX
2910 The string @code{$exec_prefix}. This term may be used in future work
2911 which needs the contents of Python's @code{sys.exec_prefix}, but general
2912 consensus is to always use the value from configure.
2914 @item PYTHON_PLATFORM
2915 The canonical name used by Python to describe the operating system, as
2916 given by @code{sys.platform}. This value is sometimes needed when
2917 building Python extensions.
2920 The directory name for the @file{site-packages} subdirectory of the
2921 standard Python install tree.
2924 This is is the directory under @code{pythondir} which is named after the
2925 package. That is, it is @samp{$(pythondir)/$(PACKAGE)}. It is provided
2929 This is the directory where Python extension modules (shared libraries)
2930 should be installed.
2933 This is a convenience variable which is defined as
2934 @samp{$(pyexecdir)/$(PACKAGE)}.
2940 By default Automake will byte-compile all Python source files to both
2941 @file{.pyc} and @file{.pyo} forms. If you wish to avoid generating the
2942 optimized byte-code files, simply define the variable @code{PYOFILES} to
2943 be empty. Similarly, if you don't wish to generate the standard
2944 byte-compiled files, define the variable @code{PYCFILES} to be empty.
2947 @node Documentation, Install, Other GNU Tools, Top
2948 @chapter Building documentation
2950 Currently Automake provides support for Texinfo and man pages.
2954 * Man pages:: Man pages
2958 @node Texinfo, Man pages, Documentation, Documentation
2961 @cindex _TEXINFOS primary, defined
2962 @cindex TEXINFOS primary, defined
2963 @cindex Primary variable, TEXINFOS
2965 If the current directory contains Texinfo source, you must declare it
2966 with the @samp{TEXINFOS} primary. Generally Texinfo files are converted
2967 into info, and thus the @code{info_TEXINFOS} macro is most commonly used
2968 here. Any Texinfo source file must end in the @file{.texi},
2969 @file{.txi}, or @file{.texinfo} extension. We recommend @file{.texi}
2972 @vindex info_TEXINFOS
2974 @cindex Texinfo macro, VERSION
2975 @cindex Texinfo macro, UPDATED
2976 @cindex Texinfo macro, EDITION
2977 @cindex Texinfo macro, UPDATED-MONTH
2979 @cindex VERSION Texinfo macro
2980 @cindex UPDATED Texinfo macro
2981 @cindex EDITION Texinfo macro
2982 @cindex UPDATED-MONTH Texinfo macro
2986 If the @file{.texi} file @code{@@include}s @file{version.texi}, then
2987 that file will be automatically generated. The file @file{version.texi}
2988 defines four Texinfo macros you can reference:
2993 Both of these macros hold the version number of your program. They are
2994 kept separate for clarity.
2997 This holds the date the primary @file{.texi} file was last modified.
3000 This holds the name of the month in which the primary @file{.texi} file
3004 The @file{version.texi} support requires the @code{mdate-sh} program;
3005 this program is supplied with Automake and automatically included when
3006 @code{automake} is invoked with the @code{--add-missing} option.
3008 If you have multiple Texinfo files, and you want to use the
3009 @file{version.texi} feature, then you have to have a separate version
3010 file for each Texinfo file. Automake will treat any include in a
3011 Texinfo file that matches @samp{vers*.texi} just as an automatically
3012 generated version file.
3014 When an info file is rebuilt, the program named by the @code{MAKEINFO}
3015 variable is used to invoke it. If the @code{makeinfo} program is found
3016 on the system then it will be used by default; otherwise @code{missing}
3017 will be used instead. The flags in the variables @code{MAKEINFOFLAGS}
3018 and @code{AM_MAKEINFOFLAGS} will be passed to the @code{makeinfo}
3019 invocation; the first of these is intended for use by the user
3020 (@pxref{User Variables}) and the second by the @file{Makefile.am}
3023 @vindex MAKEINFOFLAGS
3024 @vindex AM_MAKEINFOFLAGS
3026 Sometimes an info file actually depends on more than one @file{.texi}
3027 file. For instance, in GNU Hello, @file{hello.texi} includes the file
3028 @file{gpl.texi}. You can tell Automake about these dependencies using
3029 the @code{@var{texi}_TEXINFOS} variable. Here is how GNU Hello does it:
3034 info_TEXINFOS = hello.texi
3035 hello_TEXINFOS = gpl.texi
3040 By default, Automake requires the file @file{texinfo.tex} to appear in
3041 the same directory as the Texinfo source. However, if you used
3042 @code{AC_CONFIG_AUX_DIR} in @file{configure.in} (@pxref{Input, , Finding
3043 `configure' Input, autoconf, The Autoconf Manual}), then
3044 @file{texinfo.tex} is looked for there. Automake supplies
3045 @file{texinfo.tex} if @samp{--add-missing} is given.
3049 If your package has Texinfo files in many directories, you can use the
3050 variable @code{TEXINFO_TEX} to tell Automake where to find the canonical
3051 @file{texinfo.tex} for your package. The value of this variable should
3052 be the relative path from the current @file{Makefile.am} to
3056 TEXINFO_TEX = ../doc/texinfo.tex
3059 @opindex no-texinfo.tex
3061 The option @samp{no-texinfo.tex} can be used to eliminate the
3062 requirement for @file{texinfo.tex}. Use of the variable
3063 @code{TEXINFO_TEX} is preferable, however, because that allows the
3064 @code{dvi} target to still work.
3066 @cindex Target, install-info
3067 @cindex Target, noinstall-info
3068 @cindex install-info target
3069 @cindex noinstall-info target
3071 @opindex no-installinfo
3072 @trindex install-info
3074 Automake generates an @code{install-info} target; some people apparently
3075 use this. By default, info pages are installed by @samp{make install}.
3076 This can be prevented via the @code{no-installinfo} option.
3079 @node Man pages, , Texinfo, Documentation
3082 @cindex _MANS primary, defined
3083 @cindex MANS primary, defined
3084 @cindex Primary variable, MANS
3086 A package can also include man pages (but see the GNU standards on this
3087 matter, @ref{Man Pages, , , standards, The GNU Coding Standards}.) Man
3088 pages are declared using the @samp{MANS} primary. Generally the
3089 @code{man_MANS} macro is used. Man pages are automatically installed in
3090 the correct subdirectory of @code{mandir}, based on the file extension.
3094 File extensions such as @samp{.1c} are handled by looking for the valid
3095 part of the extension and using that to determine the correct
3096 subdirectory of @code{mandir}. Valid section names are the digits
3097 @samp{0} through @samp{9}, and the letters @samp{l} and @samp{n}.
3099 Sometimes developers prefer to name a man page something like
3100 @file{foo.man} in the source, and then rename it to have the correct
3101 suffix, e.g. @file{foo.1}, when installing the file. Automake also
3102 supports this mode. For a valid section named @var{SECTION}, there is a
3103 corresponding directory named @samp{man@var{SECTION}dir}, and a
3104 corresponding @samp{_MANS} variable. Files listed in such a variable
3105 are installed in the indicated section. If the file already has a
3106 valid suffix, then it is installed as-is; otherwise the file suffix is
3107 changed to match the section.
3109 For instance, consider this example:
3111 man1_MANS = rename.man thesame.1 alsothesame.1c
3114 In this case, @file{rename.man} will be renamed to @file{rename.1} when
3115 installed, but the other files will keep their names.
3117 @cindex Target, install-man
3118 @cindex Target, noinstall-man
3119 @cindex install-man target
3120 @cindex noinstall-man target
3122 @c Use @samp{make install} per documentation: (texi)code.
3123 By default, man pages are installed by @samp{make install}. However,
3124 since the GNU project does not require man pages, many maintainers do
3125 not expend effort to keep the man pages up to date. In these cases, the
3126 @code{no-installman} option will prevent the man pages from being
3127 installed by default. The user can still explicitly install them via
3128 @samp{make install-man}.
3129 @opindex no-installman
3130 @trindex install-man
3132 Here is how the man pages are handled in GNU @code{cpio} (which includes
3133 both Texinfo documentation and man pages):
3136 man_MANS = cpio.1 mt.1
3137 EXTRA_DIST = $(man_MANS)
3140 Man pages are not currently considered to be source, because it is not
3141 uncommon for man pages to be automatically generated. Therefore they
3142 are not automatically included in the distribution. However, this can
3143 be changed by use of the @samp{dist_} prefix.
3145 The @samp{nobase_} prefix is meaningless for man pages and is
3149 @node Install, Clean, Documentation, Top
3150 @chapter What Gets Installed
3152 @cindex Installation support
3153 @cindex make install support
3155 Naturally, Automake handles the details of actually installing your
3156 program once it has been built. All files named by the various
3157 primaries are automatically installed in the appropriate places when the
3158 user runs @code{make install}.
3160 Automake generates separate @code{install-data} and @code{install-exec}
3161 targets, in case the installer is installing on multiple machines which
3162 share directory structure---these targets allow the machine-independent
3163 parts to be installed only once. The @code{install} target depends on
3164 both of these targets.
3165 @trindex install-data
3166 @trindex install-exec
3169 Automake also generates an @code{uninstall} target, an
3170 @code{installdirs} target, and an @code{install-strip} target.
3172 @trindex installdirs
3173 @trindex install-strip
3175 It is possible to extend this mechanism by defining an
3176 @code{install-exec-local} or @code{install-data-local} target. If these
3177 targets exist, they will be run at @samp{make install} time.
3178 @trindex install-exec-local
3179 @trindex install-data-local
3181 Variables using the standard directory prefixes @samp{data},
3182 @samp{info}, @samp{man}, @samp{include}, @samp{oldinclude},
3183 @samp{pkgdata}, or @samp{pkginclude} (e.g. @samp{data_DATA}) are
3184 installed by @samp{install-data}.
3186 Variables using the standard directory prefixes @samp{bin}, @samp{sbin},
3187 @samp{libexec}, @samp{sysconf}, @samp{localstate}, @samp{lib}, or
3188 @samp{pkglib} (e.g. @samp{bin_PROGRAMS}) are installed by
3189 @samp{install-exec}.
3191 Any variable using a user-defined directory prefix with @samp{exec} in
3192 the name (e.g. @samp{myexecbin_PROGRAMS} is installed by
3193 @samp{install-exec}. All other user-defined prefixes are installed by
3194 @samp{install-data}.
3197 Automake generates support for the @samp{DESTDIR} variable in all
3198 install rules. @samp{DESTDIR} is used during the @samp{make install}
3199 step to relocate install objects into a staging area. Each object and
3200 path is prefixed with the value of @samp{DESTDIR} before being copied
3201 into the install area. Here is an example of typical DESTDIR usage:
3204 make DESTDIR=/tmp/staging install
3207 This places install objects in a directory tree built under
3208 @file{/tmp/staging}. If @file{/gnu/bin/foo} and
3209 @file{/gnu/share/aclocal/foo.m4} are to be installed, the above command
3210 would install @file{/tmp/staging/gnu/bin/foo} and
3211 @file{/tmp/staging/gnu/share/aclocal/foo.m4}.
3213 This feature is commonly used to build install images and packages. For
3214 more information, see @ref{Makefile Conventions, , , standards, The GNU
3218 @node Clean, Dist, Install, Top
3219 @chapter What Gets Cleaned
3221 @cindex make clean support
3223 The GNU Makefile Standards specify a number of different clean rules.
3225 Generally the files that can be cleaned are determined automatically by
3226 Automake. Of course, Automake also recognizes some variables that can
3227 be defined to specify additional files to clean. These variables are
3228 @code{MOSTLYCLEANFILES}, @code{CLEANFILES}, @code{DISTCLEANFILES}, and
3229 @code{MAINTAINERCLEANFILES}.
3230 @vindex MOSTLYCLEANFILES
3232 @vindex DISTCLEANFILES
3233 @vindex MAINTAINERCLEANFILES
3236 @node Dist, Tests, Clean, Top
3237 @chapter What Goes in a Distribution
3240 @cindex make distcheck
3242 The @code{dist} target in the generated @file{Makefile.in} can be used
3243 to generate a gzip'd @code{tar} file for distribution. The tar file is
3244 named based on the @samp{PACKAGE} and @samp{VERSION} variables; more
3245 precisely it is named @samp{@var{package}-@var{version}.tar.gz}.
3249 You can use the @code{make} variable @samp{GZIP_ENV} to control how gzip
3250 is run. The default setting is @samp{--best}.
3252 For the most part, the files to distribute are automatically found by
3253 Automake: all source files are automatically included in a distribution,
3254 as are all @file{Makefile.am}s and @file{Makefile.in}s. Automake also
3255 has a built-in list of commonly used files which, if present in the
3256 current directory, are automatically included. This list is printed by
3257 @samp{automake --help}. Also, files which are read by @code{configure}
3258 (i.e. the source files corresponding to the files specified in the
3259 @code{AC_OUTPUT} invocation) are automatically distributed.
3261 Still, sometimes there are files which must be distributed, but which
3262 are not covered in the automatic rules. These files should be listed in
3263 the @code{EXTRA_DIST} variable. You can mention files from
3264 subdirectories in @code{EXTRA_DIST}. You can also mention a directory
3265 there; in this case the entire directory will be recursively copied into
3266 the distribution. Please note that this will also copy
3267 @emph{everything} in the directory, including CVS/RCS version control
3272 Sometimes you need tighter control over what does @emph{not} go into the
3273 distribution; for instance you might have source files which are
3274 generated and which you do not want to distribute. In this case
3275 Automake gives fine-grained control using the @samp{dist} and
3276 @samp{nodist} prefixes. Any primary or @samp{_SOURCES} variable can be
3277 prefixed with @samp{dist_} to add the listed files to the distribution.
3278 Similarly, @samp{nodist_} can be used to omit the files from the
3283 As an example, here is how you would cause some data to be distributed
3284 while leaving some source code out of the distribution:
3287 dist_data_DATA = distribute-this
3289 nodist_foo_SOURCES = do-not-distribute.c
3292 Another way to to use this is for removing unnecessary files that get
3293 recursively included by specifying a directory in EXTRA_DIST:
3299 rm -rf `find $(distdir)/doc -name CVS`
3302 If you define @code{SUBDIRS}, Automake will recursively include the
3303 subdirectories in the distribution. If @code{SUBDIRS} is defined
3304 conditionally (@pxref{Conditionals}), Automake will normally include all
3305 directories that could possibly appear in @code{SUBDIRS} in the
3306 distribution. If you need to specify the set of directories
3307 conditionally, you can set the variable @code{DIST_SUBDIRS} to the exact
3308 list of subdirectories to include in the distribution.
3309 @vindex DIST_SUBDIRS
3313 Occasionally it is useful to be able to change the distribution before
3314 it is packaged up. If the @code{dist-hook} target exists, it is run
3315 after the distribution directory is filled, but before the actual tar
3316 (or shar) file is created. One way to use this is for distributing
3317 files in subdirectories for which a new @file{Makefile.am} is overkill:
3321 mkdir $(distdir)/random
3322 cp -p $(srcdir)/random/a1 $(srcdir)/random/a2 $(distdir)/random
3325 Automake also generates a @code{distcheck} target which can be of help
3326 to ensure that a given distribution will actually work.
3327 @code{distcheck} makes a distribution, and then tries to do a
3331 If the target @code{distcheck-hook} is defined in your
3332 @file{Makefile.am}, then it will be invoked by @code{distcheck} after
3333 the new distribution has been unpacked, but before the unpacked copy is
3334 configured and built. Your @code{distcheck-hook} can do almost
3335 anything, though as always caution is advised. Generally this hook is
3336 used to check for potential distribution errors not caught by the
3340 @node Tests, Options, Dist, Top
3341 @chapter Support for test suites
3346 Automake supports two forms of test suites.
3348 @section Simple Tests
3350 If the variable @code{TESTS} is defined, its value is taken to be a list
3351 of programs to run in order to do the testing. The programs can either
3352 be derived objects or source objects; the generated rule will look both
3353 in @code{srcdir} and @file{.}. Programs needing data files should look
3354 for them in @code{srcdir} (which is both an environment variable and a
3355 make variable) so they work when building in a separate directory
3356 (@pxref{Build Directories, , Build Directories , autoconf, The Autoconf
3357 Manual}), and in particular for the @code{distcheck} target
3360 @cindex Exit status 77, special interpretation
3362 The number of failures will be printed at the end of the run. If a
3363 given test program exits with a status of 77, then its result is ignored
3364 in the final count. This feature allows non-portable tests to be
3365 ignored in environments where they don't make sense.
3367 The variable @code{TESTS_ENVIRONMENT} can be used to set environment
3368 variables for the test run; the environment variable @code{srcdir} is
3369 set in the rule. If all your test programs are scripts, you can also
3370 set @code{TESTS_ENVIRONMENT} to an invocation of the shell (e.g.
3371 @samp{$(SHELL) -x}); this can be useful for debugging the tests.
3373 @vindex TESTS_ENVIRONMENT
3375 @cindex Tests, expected failure
3376 @cindex Expected test failure
3378 You may define the variable @code{XFAIL_TESTS} to a list of tests
3379 (usually a subset of @code{TESTS}) that are expected to fail. This will
3380 reverse the result of those tests.
3383 Automake ensures that each program listed in @code{TESTS} is built
3384 before any tests are run; you can list both source and derived programs
3385 in @code{TESTS}. For instance, you might want to run a C program as a
3386 test. To do this you would list its name in @code{TESTS} and also in
3387 @code{check_PROGRAMS}, and then specify it as you would any other
3390 @section DejaGNU Tests
3392 If @uref{ftp://prep.ai.mit.edu/pub/gnu/dejagnu-1.3.tar.gz,
3393 @samp{dejagnu}} appears in @code{AUTOMAKE_OPTIONS}, then a
3394 @code{dejagnu}-based test suite is assumed. The variable
3395 @code{DEJATOOL} is a list of names which are passed, one at a time, as
3396 the @code{--tool} argument to @code{runtest} invocations; it defaults to
3397 the name of the package.
3399 The variable @code{RUNTESTDEFAULTFLAGS} holds the @code{--tool} and
3400 @code{--srcdir} flags that are passed to dejagnu by default; this can be
3401 overridden if necessary.
3402 @vindex RUNTESTDEFAULTFLAGS
3404 The variables @code{EXPECT} and @code{RUNTEST} can
3405 also be overridden to provide project-specific values. For instance,
3406 you will need to do this if you are testing a compiler toolchain,
3407 because the default values do not take into account host and target
3414 The contents of the variable @code{RUNTESTFLAGS} are passed to the
3415 @code{runtest} invocation. This is considered a ``user variable''
3416 (@pxref{User Variables}). If you need to set @code{runtest} flags in
3417 @file{Makefile.am}, you can use @code{AM_RUNTESTFLAGS} instead.
3418 @vindex RUNTESTFLAGS
3419 @vindex AM_RUNTESTFLAGS
3420 @c FIXME xref dejagnu
3422 In either case, the testing is done via @samp{make check}.
3425 @node Options, Miscellaneous, Tests, Top
3426 @chapter Changing Automake's Behavior
3428 Various features of Automake can be controlled by options in the
3429 @file{Makefile.am}. Such options are listed in a special variable named
3430 @code{AUTOMAKE_OPTIONS}. Currently understood options are:
3431 @vindex AUTOMAKE_OPTIONS
3436 @itemx @code{foreign}
3438 @cindex Option, gnits
3440 @cindex Option, foreign
3441 @cindex Option, cygnus
3443 Set the strictness as appropriate. The @code{gnits} option also implies
3444 @code{readme-alpha} and @code{check-news}.
3446 @item @code{ansi2knr}
3447 @itemx @code{path/ansi2knr}
3448 @cindex Option, ansi2knr
3449 Turn on automatic de-ANSI-fication. @xref{ANSI}. If preceded by a
3450 path, the generated @file{Makefile.in} will look in the specified
3451 directory to find the @file{ansi2knr} program. Generally the path
3452 should be a relative path to another directory in the same distribution
3453 (though Automake currently does not check this).
3455 @item @code{check-news}
3456 @cindex Option, check-news
3457 Cause @code{make dist} to fail unless the current version number appears
3458 in the first few lines of the @file{NEWS} file.
3460 @item @code{dejagnu}
3461 @cindex Option, dejagnu
3462 Cause @code{dejagnu}-specific rules to be generated. @xref{Tests}.
3464 @item @code{dist-bzip2}
3465 @cindex Option, dist-bzip2
3466 Generate a @code{dist-bzip2} target as well as the ordinary @code{dist}
3467 target. This new target will create a bzip2 tar archive of the
3468 distribution. bzip2 archives are frequently smaller than even gzipped
3472 @item @code{dist-shar}
3473 @cindex Option, dist-shar
3474 Generate a @code{dist-shar} target as well as the ordinary @code{dist}
3475 target. This new target will create a shar archive of the
3479 @item @code{dist-zip}
3480 @cindex Option, dist-zip
3481 Generate a @code{dist-zip} target as well as the ordinary @code{dist}
3482 target. This new target will create a zip archive of the distribution.
3485 @item @code{dist-tarZ}
3486 @cindex Option, dist-tarZ
3487 Generate a @code{dist-tarZ} target as well as the ordinary @code{dist}
3488 target. This new target will create a compressed tar archive of the
3492 @item @code{no-dependencies}
3493 @cindex Option, no-dependencies
3494 This is similar to using @samp{--include-deps} on the command line, but
3495 is useful for those situations where you don't have the necessary bits
3496 to make automatic dependency tracking work @xref{Dependencies}. In this
3497 case the effect is to effectively disable automatic dependency tracking.
3499 @item @code{no-installinfo}
3500 @cindex Option, no-installinfo
3501 The generated @file{Makefile.in} will not cause info pages to be built
3502 or installed by default. However, @code{info} and @code{install-info}
3503 targets will still be available. This option is disallowed at
3504 @samp{GNU} strictness and above.
3506 @trindex install-info
3508 @item @code{no-installman}
3509 @cindex Option, no-installman
3510 The generated @file{Makefile.in} will not cause man pages to be
3511 installed by default. However, an @code{install-man} target will still
3512 be available for optional installation. This option is disallowed at
3513 @samp{GNU} strictness and above.
3514 @trindex install-man
3516 @item @code{nostdinc}
3517 @cindex Option, nostdinc
3518 This option can be used to disable the standard @samp{-I} options which
3519 are ordinarily automatically provided by Automake.
3521 @item @code{no-texinfo.tex}
3522 @cindex Option, no-texinfo
3523 Don't require @file{texinfo.tex}, even if there are texinfo files in
3526 @item @code{readme-alpha}
3527 @cindex Option, readme-alpha
3528 If this release is an alpha release, and the file @file{README-alpha}
3529 exists, then it will be added to the distribution. If this option is
3530 given, version numbers are expected to follow one of two forms. The
3531 first form is @samp{@var{MAJOR}.@var{MINOR}.@var{ALPHA}}, where each
3532 element is a number; the final period and number should be left off for
3533 non-alpha releases. The second form is
3534 @samp{@var{MAJOR}.@var{MINOR}@var{ALPHA}}, where @var{ALPHA} is a
3535 letter; it should be omitted for non-alpha releases.
3538 @cindex Option, version
3539 A version number (e.g. @samp{0.30}) can be specified. If Automake is not
3540 newer than the version specified, creation of the @file{Makefile.in}
3544 Unrecognized options are diagnosed by @code{automake}.
3547 @node Miscellaneous, Include, Options, Top
3548 @chapter Miscellaneous Rules
3550 There are a few rules and variables that didn't fit anywhere else.
3553 * Tags:: Interfacing to etags and mkid
3554 * Suffixes:: Handling new file extensions
3558 @node Tags, Suffixes, Miscellaneous, Miscellaneous
3559 @section Interfacing to @code{etags}
3561 @cindex TAGS support
3563 Automake will generate rules to generate @file{TAGS} files for use with
3564 GNU Emacs under some circumstances.
3566 If any C, C++ or Fortran 77 source code or headers are present, then
3567 @code{tags} and @code{TAGS} targets will be generated for the directory.
3570 At the topmost directory of a multi-directory package, a @code{tags}
3571 target file will be generated which, when run, will generate a
3572 @file{TAGS} file that includes by reference all @file{TAGS} files from
3575 Also, if the variable @code{ETAGS_ARGS} is defined, a @code{tags} target
3576 will be generated. This variable is intended for use in directories
3577 which contain taggable source that @code{etags} does not understand.
3580 Here is how Automake generates tags for its source, and for nodes in its
3584 ETAGS_ARGS = automake.in --lang=none \
3585 --regex='/^@@node[ \t]+\([^,]+\)/\1/' automake.texi
3588 If you add filenames to @samp{ETAGS_ARGS}, you will probably also
3589 want to set @samp{TAGS_DEPENDENCIES}. The contents of this variable
3590 are added directly to the dependencies for the @code{tags} target.
3591 @vindex TAGS_DEPENDENCIES
3593 Automake will also generate an @code{ID} target which will run
3594 @code{mkid} on the source. This is only supported on a
3595 directory-by-directory basis.
3598 Automake also supports the GNU Global Tags program. The @code{GTAGS}
3599 target runs Global Tags automatically and puts the result in the top
3603 @node Suffixes, , Tags, Miscellaneous
3604 @section Handling new file extensions
3606 @cindex Adding new SUFFIXES
3607 @cindex SUFFIXES, adding
3609 It is sometimes useful to introduce a new implicit rule to handle a file
3610 type that Automake does not know about. If this is done, you must
3611 notify GNU Make of the new suffixes. This can be done by putting a list
3612 of new suffixes in the @code{SUFFIXES} variable.
3615 For instance, suppose you had a compiler which could compile @samp{.foo}
3616 files to @samp{.o} files. Then you would add @samp{.foo} to your suffix
3623 Then you could directly use a @samp{.foo} file in a @samp{_SOURCES}
3624 variable and expect the correct results:
3628 doit_SOURCES = doit.foo
3631 Any given @code{SUFFIXES} go at the start of the generated suffixes
3632 list, followed by automake generated suffixes not already in the list.
3635 @node Include, Conditionals, Miscellaneous, Top
3639 @cindex Including Makefile fragment
3640 @cindex Makefile fragment, including
3642 Automake supports an @code{include} directive which can be used to
3643 include other @file{Makefile} fragments when @code{automake} is run.
3644 Note that these fragments are read and interpreted by @code{automake},
3645 not by @code{make}. As with conditionals, @code{make} has no idea that
3646 @code{include} is in use.
3648 There are two forms of @code{include}:
3651 @item include $(srcdir)/file
3652 Include a fragment which is found relative to the current source
3655 @item include $(top_srcdir)/file
3656 Include a fragment which is found relative to the top source directory.
3659 Note that if a fragment is included inside a conditional, then the
3660 condition applies to the entire contents of that fragment.
3663 @node Conditionals, Gnits, Include, Top
3664 @chapter Conditionals
3666 @cindex Conditionals
3668 Automake supports a simple type of conditionals.
3670 @cvindex AM_CONDITIONAL
3671 Before using a conditional, you must define it by using
3672 @code{AM_CONDITIONAL} in the @code{configure.in} file (@pxref{Macros}).
3674 @defmac AM_CONDITIONAL (@var{conditional}, @var{condition})
3675 The conditional name, @var{conditional}, should be a simple string
3676 starting with a letter and containing only letters, digits, and
3677 underscores. It must be different from @samp{TRUE} and @samp{FALSE}
3678 which are reserved by Automake.
3680 The shell @var{condition} (suitable for use in a shell @code{if}
3681 statement) is evaluated when @code{configure} is run.
3684 @cindex --enable-debug, example
3685 @cindex Example conditional --enable-debug
3686 @cindex Conditional example, --enable-debug
3688 Conditionals typically depend upon options which the user provides to
3689 the @code{configure} script. Here is an example of how to write a
3690 conditional which is true if the user uses the @samp{--enable-debug}
3694 AC_ARG_ENABLE(debug,
3695 [ --enable-debug Turn on debugging],
3696 [case "$@{enableval@}" in
3699 *) AC_MSG_ERROR(bad value $@{enableval@} for --enable-debug) ;;
3700 esac],[debug=false])
3701 AM_CONDITIONAL(DEBUG, test x$debug = xtrue)
3704 Here is an example of how to use that conditional in @file{Makefile.am}:
3716 noinst_PROGRAMS = $(DBG)
3719 This trivial example could also be handled using EXTRA_PROGRAMS
3720 (@pxref{A Program}).
3722 You may only test a single variable in an @code{if} statement, possibly
3723 negated using @samp{!}. The @code{else} statement may be omitted.
3724 Conditionals may be nested to any depth. You may specify an argument to
3725 @code{else} in which case it must be the negation of the condition used
3726 for the current @code{if}. Similarly you may specify the condition
3727 which is closed by an @code{end}:
3738 Unbalanced conditions are errors.
3740 Note that conditionals in Automake are not the same as conditionals in
3741 GNU Make. Automake conditionals are checked at configure time by the
3742 @file{configure} script, and affect the translation from
3743 @file{Makefile.in} to @file{Makefile}. They are based on options passed
3744 to @file{configure} and on results that @file{configure} has discovered
3745 about the host system. GNU Make conditionals are checked at @code{make}
3746 time, and are based on variables passed to the make program or defined
3747 in the @file{Makefile}.
3749 Automake conditionals will work with any make program.
3752 @node Gnits, Cygnus, Conditionals, Top
3753 @chapter The effect of @code{--gnu} and @code{--gnits}
3755 @cindex --gnu, required files
3756 @cindex --gnu, complete description
3758 The @samp{--gnu} option (or @samp{gnu} in the @samp{AUTOMAKE_OPTIONS}
3759 variable) causes @code{automake} to check the following:
3763 The files @file{INSTALL}, @file{NEWS}, @file{README}, @file{COPYING},
3764 @file{AUTHORS}, and @file{ChangeLog} are required at the topmost
3765 directory of the package.
3768 The options @samp{no-installman} and @samp{no-installinfo} are
3772 Note that this option will be extended in the future to do even more
3773 checking; it is advisable to be familiar with the precise requirements
3774 of the GNU standards. Also, @samp{--gnu} can require certain
3775 non-standard GNU programs to exist for use by various maintainer-only
3776 targets; for instance in the future @code{pathchk} might be required for
3779 @cindex --gnits, complete description
3781 The @samp{--gnits} option does everything that @samp{--gnu} does, and
3782 checks the following as well:
3786 @samp{make dist} will check to make sure the @file{NEWS} file has been
3787 updated to the current version.
3790 @samp{VERSION} is checked to make sure its format complies with Gnits
3792 @c FIXME xref when standards are finished
3795 @cindex README-alpha
3796 If @samp{VERSION} indicates that this is an alpha release, and the file
3797 @file{README-alpha} appears in the topmost directory of a package, then
3798 it is included in the distribution. This is done in @samp{--gnits}
3799 mode, and no other, because this mode is the only one where version
3800 number formats are constrained, and hence the only mode where Automake
3801 can automatically determine whether @file{README-alpha} should be
3805 The file @file{THANKS} is required.
3809 @node Cygnus, Extending, Gnits, Top
3810 @chapter The effect of @code{--cygnus}
3812 @cindex Cygnus strictness
3814 Cygnus Solutions has slightly different rules for how a
3815 @file{Makefile.in} is to be constructed. Passing @samp{--cygnus} to
3816 @code{automake} will cause any generated @file{Makefile.in} to comply
3819 Here are the precise effects of @samp{--cygnus}:
3823 Info files are always created in the build directory, and not in the
3827 @file{texinfo.tex} is not required if a Texinfo source file is
3828 specified. The assumption is that the file will be supplied, but in a
3829 place that Automake cannot find. This assumption is an artifact of how
3830 Cygnus packages are typically bundled.
3833 @samp{make dist} will look for files in the build directory as well as
3834 the source directory. This is required to support putting info files
3835 into the build directory.
3838 Certain tools will be searched for in the build tree as well as in the
3839 user's @samp{PATH}. These tools are @code{runtest}, @code{expect},
3840 @code{makeinfo} and @code{texi2dvi}.
3843 @code{--foreign} is implied.
3846 The options @samp{no-installinfo} and @samp{no-dependencies} are
3850 The macros @samp{AM_MAINTAINER_MODE} and @samp{AM_CYGWIN32} are
3854 The @code{check} target doesn't depend on @code{all}.
3857 GNU maintainers are advised to use @samp{gnu} strictness in preference
3858 to the special Cygnus mode.
3861 @node Extending, Distributing, Cygnus, Top
3862 @chapter When Automake Isn't Enough
3864 Automake's implicit copying semantics means that many problems can be
3865 worked around by simply adding some @code{make} targets and rules to
3866 @file{Makefile.in}. Automake will ignore these additions.
3868 @cindex -local targets
3869 @cindex local targets
3871 There are some caveats to doing this. Although you can overload a
3872 target already used by Automake, it is often inadvisable, particularly
3873 in the topmost directory of a package with subdirectories. However,
3874 various useful targets have a @samp{-local} version you can specify in
3875 your @file{Makefile.in}. Automake will supplement the standard target
3876 with these user-supplied targets.
3881 @trindex check-local
3882 @trindex install-data-local
3883 @trindex install-exec-local
3884 @trindex uninstall-local
3885 @trindex mostlyclean-local
3886 @trindex clean-local
3887 @trindex distclean-local
3889 The targets that support a local version are @code{all}, @code{info},
3890 @code{dvi}, @code{check}, @code{install-data}, @code{install-exec},
3891 @code{uninstall}, and the various @code{clean} targets
3892 (@code{mostlyclean}, @code{clean}, @code{distclean}, and
3893 @code{maintainer-clean}). Note that there are no
3894 @code{uninstall-exec-local} or @code{uninstall-data-local} targets; just
3895 use @code{uninstall-local}. It doesn't make sense to uninstall just
3896 data or just executables.
3901 @trindex install-data
3902 @trindex install-exec
3905 For instance, here is one way to install a file in @file{/etc}:
3909 $(INSTALL_DATA) $(srcdir)/afile /etc/afile
3912 @cindex -hook targets
3913 @cindex hook targets
3915 Some targets also have a way to run another target, called a @dfn{hook},
3916 after their work is done. The hook is named after the principal target,
3917 with @samp{-hook} appended. The targets allowing hooks are
3918 @code{install-data}, @code{install-exec}, @code{dist}, and
3920 @trindex install-data-hook
3921 @trindex install-exec-hook
3924 For instance, here is how to create a hard link to an installed program:
3928 ln $(bindir)/program $(bindir)/proglink
3931 @c FIXME should include discussion of variables you can use in these
3935 @node Distributing, Macro and Variable Index, Extending, Top
3936 @chapter Distributing @file{Makefile.in}s
3938 Automake places no restrictions on the distribution of the resulting
3939 @file{Makefile.in}s. We still encourage software authors to distribute
3940 their work under terms like those of the GPL, but doing so is not
3941 required to use Automake.
3943 Some of the files that can be automatically installed via the
3944 @code{--add-missing} switch do fall under the GPL; examine each file
3949 @node Macro and Variable Index, General Index, Distributing, Top
3950 @unnumbered Macro and Variable Index
3956 @node General Index, , Macro and Variable Index, Top
3957 @unnumbered General Index