source: trunk/essentials/sys-devel/automake-1.10/doc/automake.info-2

Last change on this file was 3147, checked in by bird, 18 years ago

automake 1.10

File size: 226.4 KB
Line 
1This is automake.info, produced by makeinfo version 4.8 from
2automake.texi.
3
4 This manual is for GNU Automake (version 1.10, 15 October 2006), a
5program that creates GNU standards-compliant Makefiles from template
6files.
7
8 Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
92004, 2005, 2006 Free Software Foundation, Inc.
10
11 Permission is granted to copy, distribute and/or modify this
12 document under the terms of the GNU Free Documentation License,
13 Version 1.2 or any later version published by the Free Software
14 Foundation; with no Invariant Sections, with the Front-Cover texts
15 being "A GNU Manual," and with the Back-Cover Texts as in (a)
16 below. A copy of the license is included in the section entitled
17 "GNU Free Documentation License."
18
19 (a) The FSF's Back-Cover Text is: "You have freedom to copy and
20 modify this GNU Manual, like GNU software. Copies published by
21 the Free Software Foundation raise funds for GNU development."
22
23INFO-DIR-SECTION Software development
24START-INFO-DIR-ENTRY
25* Automake: (automake). Making GNU standards-compliant Makefiles.
26END-INFO-DIR-ENTRY
27
28INFO-DIR-SECTION Individual utilities
29START-INFO-DIR-ENTRY
30* aclocal: (automake)Invoking aclocal. Generating aclocal.m4.
31* automake: (automake)Invoking Automake. Generating Makefile.in.
32END-INFO-DIR-ENTRY
33
34
35File: automake.info, Node: Suffixes, Next: Multilibs, Prev: Tags, Up: Miscellaneous
36
3718.2 Handling new file extensions
38=================================
39
40It is sometimes useful to introduce a new implicit rule to handle a file
41type that Automake does not know about.
42
43 For instance, suppose you had a compiler that could compile `.foo'
44files to `.o' files. You would simply define an suffix rule for your
45language:
46
47 .foo.o:
48 foocc -c -o $@ $<
49
50 Then you could directly use a `.foo' file in a `_SOURCES' variable
51and expect the correct results:
52
53 bin_PROGRAMS = doit
54 doit_SOURCES = doit.foo
55
56 This was the simpler and more common case. In other cases, you will
57have to help Automake to figure which extensions you are defining your
58suffix rule for. This usually happens when your extensions does not
59start with a dot. Then, all you have to do is to put a list of new
60suffixes in the `SUFFIXES' variable *before* you define your implicit
61rule.
62
63 For instance, the following definition prevents Automake to
64misinterpret `.idlC.cpp:' as an attempt to transform `.idlC' files into
65`.cpp' files.
66
67 SUFFIXES = .idl C.cpp
68 .idlC.cpp:
69 # whatever
70
71 As you may have noted, the `SUFFIXES' variable behaves like the
72`.SUFFIXES' special target of `make'. You should not touch `.SUFFIXES'
73yourself, but use `SUFFIXES' instead and let Automake generate the
74suffix list for `.SUFFIXES'. Any given `SUFFIXES' go at the start of
75the generated suffixes list, followed by Automake generated suffixes
76not already in the list.
77
78
79File: automake.info, Node: Multilibs, Prev: Suffixes, Up: Miscellaneous
80
8118.3 Support for Multilibs
82==========================
83
84Automake has support for an obscure feature called multilibs. A
85"multilib" is a library that is built for multiple different ABIs at a
86single time; each time the library is built with a different target
87flag combination. This is only useful when the library is intended to
88be cross-compiled, and it is almost exclusively used for compiler
89support libraries.
90
91 The multilib support is still experimental. Only use it if you are
92familiar with multilibs and can debug problems you might encounter.
93
94
95File: automake.info, Node: Include, Next: Conditionals, Prev: Miscellaneous, Up: Top
96
9719 Include
98**********
99
100Automake supports an `include' directive that can be used to include
101other `Makefile' fragments when `automake' is run. Note that these
102fragments are read and interpreted by `automake', not by `make'. As
103with conditionals, `make' has no idea that `include' is in use.
104
105 There are two forms of `include':
106
107`include $(srcdir)/file'
108 Include a fragment that is found relative to the current source
109 directory.
110
111`include $(top_srcdir)/file'
112 Include a fragment that is found relative to the top source
113 directory.
114
115 Note that if a fragment is included inside a conditional, then the
116condition applies to the entire contents of that fragment.
117
118 Makefile fragments included this way are always distributed because
119they are needed to rebuild `Makefile.in'.
120
121
122File: automake.info, Node: Conditionals, Next: Gnits, Prev: Include, Up: Top
123
12420 Conditionals
125***************
126
127Automake supports a simple type of conditionals.
128
129Usage
130=====
131
132Before using a conditional, you must define it by using
133`AM_CONDITIONAL' in the `configure.ac' file (*note Macros::).
134
135 -- Macro: AM_CONDITIONAL (CONDITIONAL, CONDITION)
136 The conditional name, CONDITIONAL, should be a simple string
137 starting with a letter and containing only letters, digits, and
138 underscores. It must be different from `TRUE' and `FALSE' that
139 are reserved by Automake.
140
141 The shell CONDITION (suitable for use in a shell `if' statement)
142 is evaluated when `configure' is run. Note that you must arrange
143 for _every_ `AM_CONDITIONAL' to be invoked every time `configure'
144 is run. If `AM_CONDITIONAL' is run conditionally (e.g., in a
145 shell `if' statement), then the result will confuse automake.
146
147 Conditionals typically depend upon options that the user provides to
148the `configure' script. Here is an example of how to write a
149conditional that is true if the user uses the `--enable-debug' option.
150
151 AC_ARG_ENABLE([debug],
152 [ --enable-debug Turn on debugging],
153 [case "${enableval}" in
154 yes) debug=true ;;
155 no) debug=false ;;
156 *) AC_MSG_ERROR([bad value ${enableval} for --enable-debug]) ;;
157 esac],[debug=false])
158 AM_CONDITIONAL([DEBUG], [test x$debug = xtrue])
159
160 Here is an example of how to use that conditional in `Makefile.am':
161
162 if DEBUG
163 DBG = debug
164 else
165 DBG =
166 endif
167 noinst_PROGRAMS = $(DBG)
168
169 This trivial example could also be handled using `EXTRA_PROGRAMS'
170(*note Conditional Programs::).
171
172 You may only test a single variable in an `if' statement, possibly
173negated using `!'. The `else' statement may be omitted. Conditionals
174may be nested to any depth. You may specify an argument to `else' in
175which case it must be the negation of the condition used for the
176current `if'. Similarly you may specify the condition that is closed
177by an `end':
178
179 if DEBUG
180 DBG = debug
181 else !DEBUG
182 DBG =
183 endif !DEBUG
184
185Unbalanced conditions are errors.
186
187 The `else' branch of the above two examples could be omitted, since
188assigning the empty string to an otherwise undefined variable makes no
189difference.
190
191Portability
192===========
193
194Note that conditionals in Automake are not the same as conditionals in
195GNU Make. Automake conditionals are checked at configure time by the
196`configure' script, and affect the translation from `Makefile.in' to
197`Makefile'. They are based on options passed to `configure' and on
198results that `configure' has discovered about the host system. GNU
199Make conditionals are checked at `make' time, and are based on
200variables passed to the make program or defined in the `Makefile'.
201
202 Automake conditionals will work with any make program.
203
204Limits
205======
206
207Conditionals should enclose complete statements like variables or rules
208definitions. Automake cannot deal with conditionals used inside a
209variable definition, for instance, and is not even able to diagnose
210this situation. The following example would not work:
211
212 # This syntax is not understood by Automake
213 AM_CPPFLAGS = \
214 -DFEATURE_A \
215 if WANT_DEBUG
216 -DDEBUG \
217 endif
218 -DFEATURE_B
219
220 However the intended definition of `AM_CPPFLAGS' can be achieved with
221
222 if WANT_DEBUG
223 DEBUGFLAGS = -DDEBUG
224 endif
225 AM_CPPFLAGS = -DFEATURE_A $(DEBUGFLAGS) -DFEATURE_B
226
227or
228
229 AM_CPPFLAGS = -DFEATURE_A
230 if WANT_DEBUG
231 AM_CPPFLAGS += -DDEBUG
232 endif
233 AM_CPPFLAGS += -DFEATURE_B
234
235
236File: automake.info, Node: Gnits, Next: Cygnus, Prev: Conditionals, Up: Top
237
23821 The effect of `--gnu' and `--gnits'
239**************************************
240
241The `--gnu' option (or `gnu' in the `AUTOMAKE_OPTIONS' variable) causes
242`automake' to check the following:
243
244 * The files `INSTALL', `NEWS', `README', `AUTHORS', and `ChangeLog',
245 plus one of `COPYING.LIB', `COPYING.LESSER' or `COPYING', are
246 required at the topmost directory of the package.
247
248 * The options `no-installman' and `no-installinfo' are prohibited.
249
250 Note that this option will be extended in the future to do even more
251checking; it is advisable to be familiar with the precise requirements
252of the GNU standards. Also, `--gnu' can require certain non-standard
253GNU programs to exist for use by various maintainer-only rules; for
254instance, in the future `pathchk' might be required for `make dist'.
255
256 The `--gnits' option does everything that `--gnu' does, and checks
257the following as well:
258
259 * `make installcheck' will check to make sure that the `--help' and
260 `--version' really print a usage message and a version string,
261 respectively. This is the `std-options' option (*note Options::).
262
263 * `make dist' will check to make sure the `NEWS' file has been
264 updated to the current version.
265
266 * `VERSION' is checked to make sure its format complies with Gnits
267 standards.
268
269 * If `VERSION' indicates that this is an alpha release, and the file
270 `README-alpha' appears in the topmost directory of a package, then
271 it is included in the distribution. This is done in `--gnits'
272 mode, and no other, because this mode is the only one where version
273 number formats are constrained, and hence the only mode where
274 Automake can automatically determine whether `README-alpha' should
275 be included.
276
277 * The file `THANKS' is required.
278
279
280File: automake.info, Node: Cygnus, Next: Not Enough, Prev: Gnits, Up: Top
281
28222 The effect of `--cygnus'
283***************************
284
285Some packages, notably GNU GCC and GNU gdb, have a build environment
286originally written at Cygnus Support (subsequently renamed Cygnus
287Solutions, and then later purchased by Red Hat). Packages with this
288ancestry are sometimes referred to as "Cygnus" trees.
289
290 A Cygnus tree has slightly different rules for how a `Makefile.in'
291is to be constructed. Passing `--cygnus' to `automake' will cause any
292generated `Makefile.in' to comply with Cygnus rules.
293
294 Here are the precise effects of `--cygnus':
295
296 * Info files are always created in the build directory, and not in
297 the source directory.
298
299 * `texinfo.tex' is not required if a Texinfo source file is
300 specified. The assumption is that the file will be supplied, but
301 in a place that Automake cannot find. This assumption is an
302 artifact of how Cygnus packages are typically bundled.
303
304 * `make dist' is not supported, and the rules for it are not
305 generated. Cygnus-style trees use their own distribution
306 mechanism.
307
308 * Certain tools will be searched for in the build tree as well as in
309 the user's `PATH'. These tools are `runtest', `expect',
310 `makeinfo' and `texi2dvi'.
311
312 * `--foreign' is implied.
313
314 * The options `no-installinfo' and `no-dependencies' are implied.
315
316 * The macros `AM_MAINTAINER_MODE' and `AM_CYGWIN32' are required.
317
318 * The `check' target doesn't depend on `all'.
319
320 GNU maintainers are advised to use `gnu' strictness in preference to
321the special Cygnus mode. Some day, perhaps, the differences between
322Cygnus trees and GNU trees will disappear (for instance, as GCC is made
323more standards compliant). At that time the special Cygnus mode will be
324removed.
325
326
327File: automake.info, Node: Not Enough, Next: Distributing, Prev: Cygnus, Up: Top
328
32923 When Automake Isn't Enough
330*****************************
331
332In some situations, where Automake is not up to one task, one has to
333resort to handwritten rules or even handwritten `Makefile's.
334
335* Menu:
336
337* Extending:: Adding new rules or overriding existing ones.
338* Third-Party Makefiles:: Integrating Non-Automake `Makefile's.
339
340
341File: automake.info, Node: Extending, Next: Third-Party Makefiles, Up: Not Enough
342
34323.1 Extending Automake Rules
344=============================
345
346With some minor exceptions (like `_PROGRAMS' variables being rewritten
347to append `$(EXEEXT)'), the contents of a `Makefile.am' is copied to
348`Makefile.in' verbatim.
349
350 These copying semantics means that many problems can be worked around
351by simply adding some `make' variables and rules to `Makefile.am'.
352Automake will ignore these additions.
353
354 Since a `Makefile.in' is built from data gathered from three
355different places (`Makefile.am', `configure.ac', and `automake'
356itself), it is possible to have conflicting definitions of rules or
357variables. When building `Makefile.in' the following priorities are
358respected by `automake' to ensure the user always have the last word.
359User defined variables in `Makefile.am' have priority over variables
360`AC_SUBST'ed from `configure.ac', and `AC_SUBST'ed variables have
361priority over `automake'-defined variables. As far rules are
362concerned, a user-defined rule overrides any `automake'-defined rule
363for the same target.
364
365 These overriding semantics make it possible to fine tune some default
366settings of Automake, or replace some of its rules. Overriding
367Automake rules is often inadvisable, particularly in the topmost
368directory of a package with subdirectories. The `-Woverride' option
369(*note Invoking Automake::) comes handy to catch overridden definitions.
370
371 Note that Automake does not make any difference between rules with
372commands and rules that only specify dependencies. So it is not
373possible to append new dependencies to an `automake'-defined target
374without redefining the entire rule.
375
376 However, various useful targets have a `-local' version you can
377specify in your `Makefile.am'. Automake will supplement the standard
378target with these user-supplied targets.
379
380 The targets that support a local version are `all', `info', `dvi',
381`ps', `pdf', `html', `check', `install-data', `install-dvi',
382`install-exec', `install-html', `install-info', `install-pdf',
383`install-ps', `uninstall', `installdirs', `installcheck' and the
384various `clean' targets (`mostlyclean', `clean', `distclean', and
385`maintainer-clean').
386
387 Note that there are no `uninstall-exec-local' or
388`uninstall-data-local' targets; just use `uninstall-local'. It doesn't
389make sense to uninstall just data or just executables.
390
391 For instance, here is one way to erase a subdirectory during `make
392clean' (*note Clean::).
393
394 clean-local:
395 -rm -rf testSubDir
396
397 Older version of this manual used to show how to use
398`install-data-local' to install a file to some hard-coded location, but
399you should avoid this. (*note Hard-Coded Install Paths::)
400
401 Some rule also have a way to run another rule, called a "hook",
402after their work is done. The hook is named after the principal target,
403with `-hook' appended. The targets allowing hooks are `install-data',
404`install-exec', `uninstall', `dist', and `distcheck'.
405
406 For instance, here is how to create a hard link to an installed
407program:
408
409 install-exec-hook:
410 ln $(DESTDIR)$(bindir)/program$(EXEEXT) \
411 $(DESTDIR)$(bindir)/proglink$(EXEEXT)
412
413 Although cheaper and more portable than symbolic links, hard links
414will not work everywhere (for instance, OS/2 does not have `ln').
415Ideally you should fall back to `cp -p' when `ln' does not work. An
416easy way, if symbolic links are acceptable to you, is to add
417`AC_PROG_LN_S' to `configure.ac' (*note Particular Program Checks:
418(autoconf)Particular Programs.) and use `$(LN_S)' in `Makefile.am'.
419
420 For instance, here is how you could install a versioned copy of a
421program using `$(LN_S)':
422
423 install-exec-hook:
424 cd $(DESTDIR)$(bindir) && \
425 mv -f prog$(EXEEXT) prog-$(VERSION)$(EXEEXT) && \
426 $(LN_S) prog-$(VERSION)$(EXEEXT) prog$(EXEEXT)
427
428 Note that we rename the program so that a new version will erase the
429symbolic link, not the real binary. Also we `cd' into the destination
430directory in order to create relative links.
431
432 When writing `install-exec-hook' or `install-data-hook', please bear
433in mind that the exec/data distinction is based on the installation
434directory, not on the primary used (*note Install::). So a
435`foo_SCRIPTS' will be installed by `install-data', and a
436`barexec_SCRIPTS' will be installed by `install-exec'. You should
437define your hooks consequently.
438
439
440File: automake.info, Node: Third-Party Makefiles, Prev: Extending, Up: Not Enough
441
44223.2 Third-Party `Makefile's
443============================
444
445In most projects all `Makefile's are generated by Automake. In some
446cases, however, projects need to embed subdirectories with handwritten
447`Makefile's. For instance, one subdirectory could be a third-party
448project with its own build system, not using Automake.
449
450 It is possible to list arbitrary directories in `SUBDIRS' or
451`DIST_SUBDIRS' provided each of these directories has a `Makefile' that
452recognizes all the following recursive targets.
453
454 When a user runs one of these targets, that target is run recursively
455in all subdirectories. This is why it is important that even
456third-party `Makefile's support them.
457
458`all'
459 Compile the entire package. This is the default target in
460 Automake-generated `Makefile's, but it does not need to be the
461 default in third-party `Makefile's.
462
463`distdir'
464 Copy files to distribute into `$(distdir)', before a tarball is
465 constructed. Of course this target is not required if the
466 `no-dist' option (*note Options::) is used.
467
468 The variables `$(top_distdir)' and `$(distdir)' (*note Dist::)
469 will be passed from the outer package to the subpackage when the
470 `distdir' target is invoked. These two variables have been
471 adjusted for the directory that is being recursed into, so they
472 are ready to use.
473
474`install'
475`install-data'
476`install-exec'
477`uninstall'
478 Install or uninstall files (*note Install::).
479
480`install-dvi'
481`install-html'
482`install-info'
483`install-ps'
484`install-pdf'
485 Install only some specific documentation format (*note Texinfo::).
486
487`installdirs'
488 Create install directories, but do not install any files.
489
490`check'
491`installcheck'
492 Check the package (*note Tests::).
493
494`mostlyclean'
495`clean'
496`distclean'
497`maintainer-clean'
498 Cleaning rules (*note Clean::).
499
500`dvi'
501`pdf'
502`ps'
503`info'
504`html'
505 Build the documentation in various formats (*note Texinfo::).
506
507`tags'
508`ctags'
509 Build `TAGS' and `CTAGS' (*note Tags::).
510
511 If you have ever used Gettext in a project, this is a good example of
512how third-party `Makefile's can be used with Automake. The `Makefile's
513`gettextize' puts in the `po/' and `intl/' directories are handwritten
514`Makefile's that implement all these targets. That way they can be
515added to `SUBDIRS' in Automake packages.
516
517 Directories that are only listed in `DIST_SUBDIRS' but not in
518`SUBDIRS' need only the `distclean', `maintainer-clean', and `distdir'
519rules (*note Conditional Subdirectories::).
520
521 Usually, many of these rules are irrelevant to the third-party
522subproject, but they are required for the whole package to work. It's
523OK to have a rule that does nothing, so if you are integrating a
524third-party project with no documentation or tag support, you could
525simply augment its `Makefile' as follows:
526
527 EMPTY_AUTOMAKE_TARGETS = dvi pdf ps info html tags ctags
528 .PHONY: $(EMPTY_AUTOMAKE_TARGETS)
529 $(EMPTY_AUTOMAKE_TARGETS):
530
531 Another aspect of integrating third-party build systems is whether
532they support VPATH builds (*note VPATH Builds::). Obviously if the
533subpackage does not support VPATH builds the whole package will not
534support VPATH builds. This in turns means that `make distcheck' will
535not work, because it relies on VPATH builds. Some people can live
536without this (actually, many Automake users have never heard of `make
537distcheck'). Other people may prefer to revamp the existing
538`Makefile's to support VPATH. Doing so does not necessarily require
539Automake, only Autoconf is needed (*note Build Directories:
540(autoconf)Build Directories.). The necessary substitutions:
541`@srcdir@', `@top_srcdir@', and `@top_builddir@' are defined by
542`configure' when it processes a `Makefile' (*note Preset Output
543Variables: (autoconf)Preset Output Variables.), they are not computed
544by the Makefile like the aforementioned `$(distdir)' and
545`$(top_distdir)' variables..
546
547 It is sometimes inconvenient to modify a third-party `Makefile' to
548introduce the above required targets. For instance, one may want to
549keep the third-party sources untouched to ease upgrades to new versions.
550
551 Here are two other ideas. If GNU make is assumed, one possibility is
552to add to that subdirectory a `GNUmakefile' that defines the required
553targets and include the third-party `Makefile'. For this to work in
554VPATH builds, `GNUmakefile' must lie in the build directory; the
555easiest way to do this is to write a `GNUmakefile.in' instead, and have
556it processed with `AC_CONFIG_FILES' from the outer package. For
557example if we assume `Makefile' defines all targets except the
558documentation targets, and that the `check' target is actually called
559`test', we could write `GNUmakefile' (or `GNUmakefile.in') like this:
560
561 # First, include the real Makefile
562 include Makefile
563 # Then, define the other targets needed by Automake Makefiles.
564 .PHONY: dvi pdf ps info html check
565 dvi pdf ps info html:
566 check: test
567
568 A similar idea that does not use `include' is to write a proxy
569`Makefile' that dispatches rules to the real `Makefile', either with
570`$(MAKE) -f Makefile.real $(AM_MAKEFLAGS) target' (if it's OK to rename
571the original `Makefile') or with `cd subdir && $(MAKE) $(AM_MAKEFLAGS)
572target' (if it's OK to store the subdirectory project one directory
573deeper). The good news is that this proxy `Makefile' can be generated
574with Automake. All we need are `-local' targets (*note Extending::)
575that perform the dispatch. Of course the other Automake features are
576available, so you could decide to let Automake perform distribution or
577installation. Here is a possible `Makefile.am':
578
579 all-local:
580 cd subdir && $(MAKE) $(AM_MAKEFLAGS) all
581 check-local:
582 cd subdir && $(MAKE) $(AM_MAKEFLAGS) test
583 clean-local:
584 cd subdir && $(MAKE) $(AM_MAKEFLAGS) clean
585
586 # Assuming the package knows how to install itself
587 install-data-local:
588 cd subdir && $(MAKE) $(AM_MAKEFLAGS) install-data
589 install-exec-local:
590 cd subdir && $(MAKE) $(AM_MAKEFLAGS) install-exec
591 uninstall-local:
592 cd subdir && $(MAKE) $(AM_MAKEFLAGS) uninstall
593
594 # Distribute files from here.
595 EXTRA_DIST = subdir/Makefile subdir/program.c ...
596
597 Pushing this idea to the extreme, it is also possible to ignore the
598subproject build system and build everything from this proxy
599`Makefile.am'. This might sounds very sensible if you need VPATH
600builds but the subproject does not support them.
601
602
603File: automake.info, Node: Distributing, Next: API versioning, Prev: Not Enough, Up: Top
604
60524 Distributing `Makefile.in's
606******************************
607
608Automake places no restrictions on the distribution of the resulting
609`Makefile.in's. We still encourage software authors to distribute
610their work under terms like those of the GPL, but doing so is not
611required to use Automake.
612
613 Some of the files that can be automatically installed via the
614`--add-missing' switch do fall under the GPL. However, these also have
615a special exception allowing you to distribute them with your package,
616regardless of the licensing you choose.
617
618
619File: automake.info, Node: API versioning, Next: Upgrading, Prev: Distributing, Up: Top
620
62125 Automake API versioning
622**************************
623
624New Automake releases usually include bug fixes and new features.
625Unfortunately they may also introduce new bugs and incompatibilities.
626This makes four reasons why a package may require a particular Automake
627version.
628
629 Things get worse when maintaining a large tree of packages, each one
630requiring a different version of Automake. In the past, this meant that
631any developer (and sometime users) had to install several versions of
632Automake in different places, and switch `$PATH' appropriately for each
633package.
634
635 Starting with version 1.6, Automake installs versioned binaries.
636This means you can install several versions of Automake in the same
637`$prefix', and can select an arbitrary Automake version by running
638`automake-1.6' or `automake-1.7' without juggling with `$PATH'.
639Furthermore, `Makefile''s generated by Automake 1.6 will use
640`automake-1.6' explicitly in their rebuild rules.
641
642 The number `1.6' in `automake-1.6' is Automake's API version, not
643Automake's version. If a bug fix release is made, for instance
644Automake 1.6.1, the API version will remain 1.6. This means that a
645package that works with Automake 1.6 should also work with 1.6.1; after
646all, this is what people expect from bug fix releases.
647
648 If your package relies on a feature or a bug fix introduced in a
649release, you can pass this version as an option to Automake to ensure
650older releases will not be used. For instance, use this in your
651`configure.ac':
652
653 AM_INIT_AUTOMAKE([1.6.1]) dnl Require Automake 1.6.1 or better.
654 or, in a particular `Makefile.am':
655
656 AUTOMAKE_OPTIONS = 1.6.1 # Require Automake 1.6.1 or better.
657 Automake will print an error message if its version is older than
658the requested version.
659
660What is in the API
661==================
662
663Automake's programming interface is not easy to define. Basically it
664should include at least all *documented* variables and targets that a
665`Makefile.am' author can use, any behavior associated with them (e.g.,
666the places where `-hook''s are run), the command line interface of
667`automake' and `aclocal', ...
668
669What is not in the API
670======================
671
672Every undocumented variable, target, or command line option, is not part
673of the API. You should avoid using them, as they could change from one
674version to the other (even in bug fix releases, if this helps to fix a
675bug).
676
677 If it turns out you need to use such a undocumented feature, contact
678<automake@gnu.org> and try to get it documented and exercised by the
679test-suite.
680
681
682File: automake.info, Node: Upgrading, Next: FAQ, Prev: API versioning, Up: Top
683
68426 Upgrading a Package to a Newer Automake Version
685**************************************************
686
687Automake maintains three kind of files in a package.
688
689 * `aclocal.m4'
690
691 * `Makefile.in's
692
693 * auxiliary tools like `install-sh' or `py-compile'
694
695 `aclocal.m4' is generated by `aclocal' and contains some
696Automake-supplied M4 macros. Auxiliary tools are installed by
697`automake --add-missing' when needed. `Makefile.in's are built from
698`Makefile.am' by `automake', and rely on the definitions of the M4
699macros put in `aclocal.m4' as well as the behavior of the auxiliary
700tools installed.
701
702 Because all these files are closely related, it is important to
703regenerate all of them when upgrading to a newer Automake release. The
704usual way to do that is
705
706 aclocal # with any option needed (such a -I m4)
707 autoconf
708 automake --add-missing --force-missing
709
710or more conveniently:
711
712 autoreconf -vfi
713
714 The use of `--force-missing' ensures that auxiliary tools will be
715overridden by new versions (*note Invoking Automake::).
716
717 It is important to regenerate all these files each time Automake is
718upgraded, even between bug fixes releases. For instance, it is not
719unusual for a bug fix to involve changes to both the rules generated in
720`Makefile.in' and the supporting M4 macros copied to `aclocal.m4'.
721
722 Presently `automake' is able to diagnose situations where
723`aclocal.m4' has been generated with another version of `aclocal'.
724However it never checks whether auxiliary scripts are up-to-date. In
725other words, `automake' will tell you when `aclocal' needs to be rerun,
726but it will never diagnose a missing `--force-missing'.
727
728 Before upgrading to a new major release, it is a good idea to read
729the file `NEWS'. This file lists all changes between releases: new
730features, obsolete constructs, known incompatibilities, and workarounds.
731
732
733File: automake.info, Node: FAQ, Next: History, Prev: Upgrading, Up: Top
734
73527 Frequently Asked Questions about Automake
736********************************************
737
738This chapter covers some questions that often come up on the mailing
739lists.
740
741* Menu:
742
743* CVS:: CVS and generated files
744* maintainer-mode:: missing and AM_MAINTAINER_MODE
745* wildcards:: Why doesn't Automake support wildcards?
746* limitations on file names:: Limitations on source and installed file names
747* distcleancheck:: Files left in build directory after distclean
748* Flag Variables Ordering:: CFLAGS vs. AM_CFLAGS vs. mumble_CFLAGS
749* renamed objects:: Why are object files sometimes renamed?
750* Per-Object Flags:: How to simulate per-object flags?
751* Multiple Outputs:: Writing rules for tools with many output files
752* Hard-Coded Install Paths:: Installing to Hard-Coded Locations
753
754
755File: automake.info, Node: CVS, Next: maintainer-mode, Up: FAQ
756
75727.1 CVS and generated files
758============================
759
76027.1.1 Background: distributed generated files
761----------------------------------------------
762
763Packages made with Autoconf and Automake ship with some generated files
764like `configure' or `Makefile.in'. These files were generated on the
765developer's host and are distributed so that end-users do not have to
766install the maintainer tools required to rebuild them. Other generated
767files like Lex scanners, Yacc parsers, or Info documentation, are
768usually distributed on similar grounds.
769
770 Automake outputs rules in `Makefile's to rebuild these files. For
771instance, `make' will run `autoconf' to rebuild `configure' whenever
772`configure.ac' is changed. This makes development safer by ensuring a
773`configure' is never out-of-date with respect to `configure.ac'.
774
775 As generated files shipped in packages are up-to-date, and because
776`tar' preserves times-tamps, these rebuild rules are not triggered when
777a user unpacks and builds a package.
778
77927.1.2 Background: CVS and timestamps
780-------------------------------------
781
782Unless you use CVS keywords (in which case files must be updated at
783commit time), CVS preserves timestamp during `cvs commit' and `cvs
784import -d' operations.
785
786 When you check out a file using `cvs checkout' its timestamp is set
787to that of the revision that is being checked out.
788
789 However, during `cvs update', files will have the date of the
790update, not the original timestamp of this revision. This is meant to
791make sure that `make' notices sources files have been updated.
792
793 This timestamp shift is troublesome when both sources and generated
794files are kept under CVS. Because CVS processes files in alphabetical
795order, `configure.ac' will appear older than `configure' after a `cvs
796update' that updates both files, even if `configure' was newer than
797`configure.ac' when it was checked in. Calling `make' will then
798trigger a spurious rebuild of `configure'.
799
80027.1.3 Living with CVS in Autoconfiscated projects
801--------------------------------------------------
802
803There are basically two clans amongst maintainers: those who keep all
804distributed files under CVS, including generated files, and those who
805keep generated files _out_ of CVS.
806
807All files in CVS
808................
809
810 * The CVS repository contains all distributed files so you know
811 exactly what is distributed, and you can checkout any prior
812 version entirely.
813
814 * Maintainers can see how generated files evolve (for instance, you
815 can see what happens to your `Makefile.in's when you upgrade
816 Automake and make sure they look OK).
817
818 * Users do not need the autotools to build a checkout of the
819 project, it works just like a released tarball.
820
821 * If users use `cvs update' to update their copy, instead of `cvs
822 checkout' to fetch a fresh one, timestamps will be inaccurate.
823 Some rebuild rules will be triggered and attempt to run developer
824 tools such as `autoconf' or `automake'.
825
826 Actually, calls to such tools are all wrapped into a call to the
827 `missing' script discussed later (*note maintainer-mode::).
828 `missing' will take care of fixing the timestamps when these tools
829 are not installed, so that the build can continue.
830
831 * In distributed development, developers are likely to have different
832 version of the maintainer tools installed. In this case rebuilds
833 triggered by timestamp lossage will lead to spurious changes to
834 generated files. There are several solutions to this:
835
836 * All developers should use the same versions, so that the
837 rebuilt files are identical to files in CVS. (This starts to
838 be difficult when each project you work on uses different
839 versions.)
840
841 * Or people use a script to fix the timestamp after a checkout
842 (the GCC folks have such a script).
843
844 * Or `configure.ac' uses `AM_MAINTAINER_MODE', which will
845 disable all these rebuild rules by default. This is further
846 discussed in *Note maintainer-mode::.
847
848 * Although we focused on spurious rebuilds, the converse can also
849 happen. CVS's timestamp handling can also let you think an
850 out-of-date file is up-to-date.
851
852 For instance, suppose a developer has modified `Makefile.am' and
853 has rebuilt `Makefile.in'. He then decide to do a last-minute
854 change to `Makefile.am' right before checking in both files
855 (without rebuilding `Makefile.in' to account for the change).
856
857 This last change to `Makefile.am' make the copy of `Makefile.in'
858 out-of-date. Since CVS processes files alphabetically, when
859 another developer `cvs update' his or her tree, `Makefile.in' will
860 happen to be newer than `Makefile.am'. This other developer will
861 not see `Makefile.in' is out-of-date.
862
863
864Generated files out of CVS
865..........................
866
867One way to get CVS and `make' working peacefully is to never store
868generated files in CVS, i.e., do not CVS-control files that are
869`Makefile' targets (also called _derived_ files).
870
871 This way developers are not annoyed by changes to generated files.
872It does not matter if they all have different versions (assuming they
873are compatible, of course). And finally, timestamps are not lost,
874changes to sources files can't be missed as in the
875`Makefile.am'/`Makefile.in' example discussed earlier.
876
877 The drawback is that the CVS repository is not an exact copy of what
878is distributed and that users now need to install various development
879tools (maybe even specific versions) before they can build a checkout.
880But, after all, CVS's job is versioning, not distribution.
881
882 Allowing developers to use different versions of their tools can also
883hide bugs during distributed development. Indeed, developers will be
884using (hence testing) their own generated files, instead of the
885generated files that will be released actually. The developer who
886prepares the tarball might be using a version of the tool that produces
887bogus output (for instance a non-portable C file), something other
888developers could have noticed if they weren't using their own versions
889of this tool.
890
89127.1.4 Third-party files
892------------------------
893
894Another class of files not discussed here (because they do not cause
895timestamp issues) are files that are shipped with a package, but
896maintained elsewhere. For instance, tools like `gettextize' and
897`autopoint' (from Gettext) or `libtoolize' (from Libtool), will install
898or update files in your package.
899
900 These files, whether they are kept under CVS or not, raise similar
901concerns about version mismatch between developers' tools. The Gettext
902manual has a section about this, see *Note CVS Issues: (gettext)CVS
903Issues.
904
905
906File: automake.info, Node: maintainer-mode, Next: wildcards, Prev: CVS, Up: FAQ
907
90827.2 `missing' and `AM_MAINTAINER_MODE'
909=======================================
910
91127.2.1 `missing'
912----------------
913
914The `missing' script is a wrapper around several maintainer tools,
915designed to warn users if a maintainer tool is required but missing.
916Typical maintainer tools are `autoconf', `automake', `bison', etc.
917Because file generated by these tools are shipped with the other
918sources of a package, these tools shouldn't be required during a user
919build and they are not checked for in `configure'.
920
921 However, if for some reason a rebuild rule is triggered and involves
922a missing tool, `missing' will notice it and warn the user. Besides
923the warning, when a tool is missing, `missing' will attempt to fix
924timestamps in a way that allows the build to continue. For instance,
925`missing' will touch `configure' if `autoconf' is not installed. When
926all distributed files are kept under CVS, this feature of `missing'
927allows user _with no maintainer tools_ to build a package off CVS,
928bypassing any timestamp inconsistency implied by `cvs update'.
929
930 If the required tool is installed, `missing' will run it and won't
931attempt to continue after failures. This is correct during
932development: developers love fixing failures. However, users with
933wrong versions of maintainer tools may get an error when the rebuild
934rule is spuriously triggered, halting the build. This failure to let
935the build continue is one of the arguments of the `AM_MAINTAINER_MODE'
936advocates.
937
93827.2.2 `AM_MAINTAINER_MODE'
939---------------------------
940
941`AM_MAINTAINER_MODE' disables the so called "rebuild rules" by default.
942If you have `AM_MAINTAINER_MODE' in `configure.ac', and run
943`./configure && make', then `make' will *never* attempt to rebuilt
944`configure', `Makefile.in's, Lex or Yacc outputs, etc. I.e., this
945disables build rules for files that are usually distributed and that
946users should normally not have to update.
947
948 If you run `./configure --enable-maintainer-mode', then these
949rebuild rules will be active.
950
951 People use `AM_MAINTAINER_MODE' either because they do want their
952users (or themselves) annoyed by timestamps lossage (*note CVS::), or
953because they simply can't stand the rebuild rules and prefer running
954maintainer tools explicitly.
955
956 `AM_MAINTAINER_MODE' also allows you to disable some custom build
957rules conditionally. Some developers use this feature to disable rules
958that need exotic tools that users may not have available.
959
960 Several years ago Franc,ois Pinard pointed out several arguments
961against this `AM_MAINTAINER_MODE' macro. Most of them relate to
962insecurity. By removing dependencies you get non-dependable builds:
963change to sources files can have no effect on generated files and this
964can be very confusing when unnoticed. He adds that security shouldn't
965be reserved to maintainers (what `--enable-maintainer-mode' suggests),
966on the contrary. If one user has to modify a `Makefile.am', then
967either `Makefile.in' should be updated or a warning should be output
968(this is what Automake uses `missing' for) but the last thing you want
969is that nothing happens and the user doesn't notice it (this is what
970happens when rebuild rules are disabled by `AM_MAINTAINER_MODE').
971
972 Jim Meyering, the inventor of the `AM_MAINTAINER_MODE' macro was
973swayed by Franc,ois's arguments, and got rid of `AM_MAINTAINER_MODE' in
974all of his packages.
975
976 Still many people continue to use `AM_MAINTAINER_MODE', because it
977helps them working on projects where all files are kept under CVS, and
978because `missing' isn't enough if you have the wrong version of the
979tools.
980
981
982File: automake.info, Node: wildcards, Next: limitations on file names, Prev: maintainer-mode, Up: FAQ
983
98427.3 Why doesn't Automake support wildcards?
985============================================
986
987Developers are lazy. They often would like to use wildcards in
988`Makefile.am's, so they don't need to remember they have to update
989`Makefile.am's every time they add, delete, or rename a file.
990
991 There are several objections to this:
992 * When using CVS (or similar) developers need to remember they have
993 to run `cvs add' or `cvs rm' anyway. Updating `Makefile.am'
994 accordingly quickly becomes a reflex.
995
996 Conversely, if your application doesn't compile because you forgot
997 to add a file in `Makefile.am', it will help you remember to `cvs
998 add' it.
999
1000 * Using wildcards makes easy to distribute files by mistake. For
1001 instance, some code a developer is experimenting with (a test case,
1002 say) but that should not be part of the distribution.
1003
1004 * Using wildcards it's easy to omit some files by mistake. For
1005 instance, one developer creates a new file, uses it at many places,
1006 but forget to commit it. Another developer then checkout the
1007 incomplete project and is able to run `make dist' successfully,
1008 even though a file is missing.
1009
1010 * Listing files, you control *exactly* what you distribute. If some
1011 file that should be distributed is missing from your tree, `make
1012 dist' will complain. Besides, you don't distribute more than what
1013 you listed.
1014
1015 * Finally it's really hard to `forget' adding a file to
1016 `Makefile.am', because if you don't add it, it doesn't get
1017 compiled nor installed, so you can't even test it.
1018
1019 Still, these are philosophical objections, and as such you may
1020disagree, or find enough value in wildcards to dismiss all of them.
1021Before you start writing a patch against Automake to teach it about
1022wildcards, let's see the main technical issue: portability.
1023
1024 Although `$(wildcard ...)' works with GNU `make', it is not portable
1025to other `make' implementations.
1026
1027 The only way Automake could support `$(wildcard ...)' is by
1028expending `$(wildcard ...)' when `automake' is run. Resulting
1029`Makefile.in's would be portable since they would list all files and
1030not use `$(wildcard ...)'. However that means developers need to
1031remember they must run `automake' each time they add, delete, or rename
1032files.
1033
1034 Compared to editing `Makefile.am', this is really little win. Sure,
1035it's easier and faster to type `automake; make' than to type `emacs
1036Makefile.am; make'. But nobody bothered enough to write a patch add
1037support for this syntax. Some people use scripts to generated file
1038lists in `Makefile.am' or in separate `Makefile' fragments.
1039
1040 Even if you don't care about portability, and are tempted to use
1041`$(wildcard ...)' anyway because you target only GNU Make, you should
1042know there are many places where Automake need to know exactly which
1043files should be processed. As Automake doesn't know how to expand
1044`$(wildcard ...)', you cannot use it in these places. `$(wildcard
1045...)' is a black box comparable to `AC_SUBST'ed variables as far
1046Automake is concerned.
1047
1048 You can get warnings about `$(wildcard ...') constructs using the
1049`-Wportability' flag.
1050
1051
1052File: automake.info, Node: limitations on file names, Next: distcleancheck, Prev: wildcards, Up: FAQ
1053
105427.4 Limitations on file names
1055==============================
1056
1057Automake attempts to support all kinds of file names, even those that
1058contain unusual characters or are unusually long. However, some
1059limitations are imposed by the underlying operating system and tools.
1060
1061 Most operating systems prohibit the use of the null byte in file
1062names, and reserve `/' as a directory separator. Also, they require
1063that file names are properly encoded for the user's locale. Automake
1064is subject to these limits.
1065
1066 Portable packages should limit themselves to POSIX file names.
1067These can contain ASCII letters and digits, `_', `.', and `-'. File
1068names consist of components separated by `/'. File name components
1069cannot begin with `-'.
1070
1071 Portable POSIX file names cannot contain components that exceed a
107214-byte limit, but nowadays it's normally safe to assume the
1073more-generous XOPEN limit of 255 bytes. POSIX limits file names to 255
1074bytes (XOPEN allows 1023 bytes), but you may want to limit a source
1075tarball to file names to 99 bytes to avoid interoperability problems
1076with old versions of `tar'.
1077
1078 If you depart from these rules (e.g., by using non-ASCII characters
1079in file names, or by using lengthy file names), your installers may
1080have problems for reasons unrelated to Automake. However, if this does
1081not concern you, you should know about the limitations imposed by
1082Automake itself. These limitations are undesirable, but some of them
1083seem to be inherent to underlying tools like Autoconf, Make, M4, and
1084the shell. They fall into three categories: install directories, build
1085directories, and file names.
1086
1087 The following characters:
1088
1089 newline " # $ ' `
1090
1091 should not appear in the names of install directories. For example,
1092the operand of `configure''s `--prefix' option should not contain these
1093characters.
1094
1095 Build directories suffer the same limitations as install directories,
1096and in addition should not contain the following characters:
1097
1098 & @ \
1099
1100 For example, the full name of the directory containing the source
1101files should not contain these characters.
1102
1103 Source and installation file names like `main.c' are limited even
1104further: they should conform to the POSIX/XOPEN rules described above.
1105In addition, if you plan to port to non-POSIX environments, you should
1106avoid file names that differ only in case (e.g., `makefile' and
1107`Makefile'). Nowadays it is no longer worth worrying about the 8.3
1108limits of DOS file systems.
1109
1110
1111File: automake.info, Node: distcleancheck, Next: Flag Variables Ordering, Prev: limitations on file names, Up: FAQ
1112
111327.5 Files left in build directory after distclean
1114==================================================
1115
1116This is a diagnostic you might encounter while running `make distcheck'.
1117
1118 As explained in *Note Dist::, `make distcheck' attempts to build and
1119check your package for errors like this one.
1120
1121 `make distcheck' will perform a `VPATH' build of your package (*note
1122VPATH Builds::), and then call `make distclean'. Files left in the
1123build directory after `make distclean' has run are listed after this
1124error.
1125
1126 This diagnostic really covers two kinds of errors:
1127
1128 * files that are forgotten by distclean;
1129
1130 * distributed files that are erroneously rebuilt.
1131
1132 The former left-over files are not distributed, so the fix is to mark
1133them for cleaning (*note Clean::), this is obvious and doesn't deserve
1134more explanations.
1135
1136 The latter bug is not always easy to understand and fix, so let's
1137proceed with an example. Suppose our package contains a program for
1138which we want to build a man page using `help2man'. GNU `help2man'
1139produces simple manual pages from the `--help' and `--version' output
1140of other commands (*note Overview: (help2man)Top.). Because we don't
1141to force want our users to install `help2man', we decide to distribute
1142the generated man page using the following setup.
1143
1144 # This Makefile.am is bogus.
1145 bin_PROGRAMS = foo
1146 foo_SOURCES = foo.c
1147 dist_man_MANS = foo.1
1148
1149 foo.1: foo$(EXEEXT)
1150 help2man --output=foo.1 ./foo$(EXEEXT)
1151
1152 This will effectively distribute the man page. However, `make
1153distcheck' will fail with:
1154
1155 ERROR: files left in build directory after distclean:
1156 ./foo.1
1157
1158 Why was `foo.1' rebuilt? Because although distributed, `foo.1'
1159depends on a non-distributed built file: `foo$(EXEEXT)'.
1160`foo$(EXEEXT)' is built by the user, so it will always appear to be
1161newer than the distributed `foo.1'.
1162
1163 `make distcheck' caught an inconsistency in our package. Our intent
1164was to distribute `foo.1' so users do not need installing `help2man',
1165however since this our rule causes this file to be always rebuilt,
1166users _do_ need `help2man'. Either we should ensure that `foo.1' is
1167not rebuilt by users, or there is no point in distributing `foo.1'.
1168
1169 More generally, the rule is that distributed files should never
1170depend on non-distributed built files. If you distribute something
1171generated, distribute its sources.
1172
1173 One way to fix the above example, while still distributing `foo.1'
1174is to not depend on `foo$(EXEEXT)'. For instance, assuming `foo
1175--version' and `foo --help' do not change unless `foo.c' or
1176`configure.ac' change, we could write the following `Makefile.am':
1177
1178 bin_PROGRAMS = foo
1179 foo_SOURCES = foo.c
1180 dist_man_MANS = foo.1
1181
1182 foo.1: foo.c $(top_srcdir)/configure.ac
1183 $(MAKE) $(AM_MAKEFLAGS) foo$(EXEEXT)
1184 help2man --output=foo.1 ./foo$(EXEEXT)
1185
1186 This way, `foo.1' will not get rebuilt every time `foo$(EXEEXT)'
1187changes. The `make' call makes sure `foo$(EXEEXT)' is up-to-date
1188before `help2man'. Another way to ensure this would be to use separate
1189directories for binaries and man pages, and set `SUBDIRS' so that
1190binaries are built before man pages.
1191
1192 We could also decide not to distribute `foo.1'. In this case it's
1193fine to have `foo.1' dependent upon `foo$(EXEEXT)', since both will
1194have to be rebuilt. However it would be impossible to build the
1195package in a cross-compilation, because building `foo.1' involves an
1196_execution_ of `foo$(EXEEXT)'.
1197
1198 Another context where such errors are common is when distributed
1199files are built by tools that are built by the package. The pattern is
1200similar:
1201
1202 distributed-file: built-tools distributed-sources
1203 build-command
1204
1205should be changed to
1206
1207 distributed-file: distributed-sources
1208 $(MAKE) $(AM_MAKEFLAGS) built-tools
1209 build-command
1210
1211or you could choose not to distribute `distributed-file', if
1212cross-compilation does not matter.
1213
1214 The points made through these examples are worth a summary:
1215
1216 * Distributed files should never depend upon non-distributed built
1217 files.
1218
1219 * Distributed files should be distributed with all their
1220 dependencies.
1221
1222 * If a file is _intended_ to be rebuilt by users, then there is no
1223 point in distributing it.
1224
1225 For desperate cases, it's always possible to disable this check by
1226setting `distcleancheck_listfiles' as documented in *Note Dist::. Make
1227sure you do understand the reason why `make distcheck' complains before
1228you do this. `distcleancheck_listfiles' is a way to _hide_ errors, not
1229to fix them. You can always do better.
1230
1231
1232File: automake.info, Node: Flag Variables Ordering, Next: renamed objects, Prev: distcleancheck, Up: FAQ
1233
123427.6 Flag Variables Ordering
1235============================
1236
1237 What is the difference between `AM_CFLAGS', `CFLAGS', and
1238 `mumble_CFLAGS'?
1239
1240 Why does `automake' output `CPPFLAGS' after
1241 `AM_CPPFLAGS' on compile lines? Shouldn't it be the converse?
1242
1243 My `configure' adds some warning flags into `CXXFLAGS'. In
1244 one `Makefile.am' I would like to append a new flag, however if I
1245 put the flag into `AM_CXXFLAGS' it is prepended to the other
1246 flags, not appended.
1247
124827.6.1 Compile Flag Variables
1249-----------------------------
1250
1251This section attempts to answer all the above questions. We will
1252mostly discuss `CPPFLAGS' in our examples, but actually the answer
1253holds for all the compile flags used in Automake: `CCASFLAGS',
1254`CFLAGS', `CPPFLAGS', `CXXFLAGS', `FCFLAGS', `FFLAGS', `GCJFLAGS',
1255`LDFLAGS', `LFLAGS', `LIBTOOLFLAGS', `OBJCFLAGS', `RFLAGS', `UPCFLAGS',
1256and `YFLAGS'.
1257
1258 `CPPFLAGS', `AM_CPPFLAGS', and `mumble_CPPFLAGS' are three variables
1259that can be used to pass flags to the C preprocessor (actually these
1260variables are also used for other languages like C++ or preprocessed
1261Fortran). `CPPFLAGS' is the user variable (*note User Variables::),
1262`AM_CPPFLAGS' is the Automake variable, and `mumble_CPPFLAGS' is the
1263variable specific to the `mumble' target (we call this a per-target
1264variable, *note Program and Library Variables::).
1265
1266 Automake always uses two of these variables when compiling C sources
1267files. When compiling an object file for the `mumble' target, the
1268first variable will be `mumble_CPPFLAGS' if it is defined, or
1269`AM_CPPFLAGS' otherwise. The second variable is always `CPPFLAGS'.
1270
1271 In the following example,
1272
1273 bin_PROGRAMS = foo bar
1274 foo_SOURCES = xyz.c
1275 bar_SOURCES = main.c
1276 foo_CPPFLAGS = -DFOO
1277 AM_CPPFLAGS = -DBAZ
1278
1279`xyz.o' will be compiled with `$(foo_CPPFLAGS) $(CPPFLAGS)', (because
1280`xyz.o' is part of the `foo' target), while `main.o' will be compiled
1281with `$(AM_CPPFLAGS) $(CPPFLAGS)' (because there is no per-target
1282variable for target `bar').
1283
1284 The difference between `mumble_CPPFLAGS' and `AM_CPPFLAGS' being
1285clear enough, let's focus on `CPPFLAGS'. `CPPFLAGS' is a user
1286variable, i.e., a variable that users are entitled to modify in order
1287to compile the package. This variable, like many others, is documented
1288at the end of the output of `configure --help'.
1289
1290 For instance, someone who needs to add `/home/my/usr/include' to the
1291C compiler's search path would configure a package with
1292
1293 ./configure CPPFLAGS='-I /home/my/usr/include'
1294
1295and this flag would be propagated to the compile rules of all
1296`Makefile's.
1297
1298 It is also not uncommon to override a user variable at `make'-time.
1299Many installers do this with `prefix', but this can be useful with
1300compiler flags too. For instance, if, while debugging a C++ project,
1301you need to disable optimization in one specific object file, you can
1302run something like
1303
1304 rm file.o
1305 make CXXFLAGS=-O0 file.o
1306 make
1307
1308 The reason `$(CPPFLAGS)' appears after `$(AM_CPPFLAGS)' or
1309`$(mumble_CPPFLAGS)' in the compile command is that users should always
1310have the last say. It probably makes more sense if you think about it
1311while looking at the `CXXFLAGS=-O0' above, which should supersede any
1312other switch from `AM_CXXFLAGS' or `mumble_CXXFLAGS' (and this of
1313course replaces the previous value of `CXXFLAGS').
1314
1315 You should never redefine a user variable such as `CPPFLAGS' in
1316`Makefile.am'. Use `automake -Woverride' to diagnose such mistakes.
1317Even something like
1318
1319 CPPFLAGS = -DDATADIR=\"$(datadir)\" @CPPFLAGS@
1320
1321is erroneous. Although this preserves `configure''s value of
1322`CPPFLAGS', the definition of `DATADIR' will disappear if a user
1323attempts to override `CPPFLAGS' from the `make' command line.
1324
1325 AM_CPPFLAGS = -DDATADIR=\"$(datadir)\"
1326
1327is all what is needed here if no per-target flags are used.
1328
1329 You should not add options to these user variables within
1330`configure' either, for the same reason. Occasionally you need to
1331modify these variables to perform a test, but you should reset their
1332values afterwards. In contrast, it is OK to modify the `AM_' variables
1333within `configure' if you `AC_SUBST' them, but it is rather rare that
1334you need to do this, unless you really want to change the default
1335definitions of the `AM_' variables in all `Makefile's.
1336
1337 What we recommend is that you define extra flags in separate
1338variables. For instance, you may write an Autoconf macro that computes
1339a set of warning options for the C compiler, and `AC_SUBST' them in
1340`WARNINGCFLAGS'; you may also have an Autoconf macro that determines
1341which compiler and which linker flags should be used to link with
1342library `libfoo', and `AC_SUBST' these in `LIBFOOCFLAGS' and
1343`LIBFOOLDFLAGS'. Then, a `Makefile.am' could use these variables as
1344follows:
1345
1346 AM_CFLAGS = $(WARNINGCFLAGS)
1347 bin_PROGRAMS = prog1 prog2
1348 prog1_SOURCES = ...
1349 prog2_SOURCES = ...
1350 prog2_CFLAGS = $(LIBFOOCFLAGS) $(AM_CFLAGS)
1351 prog2_LDFLAGS = $(LIBFOOLDFLAGS)
1352
1353 In this example both programs will be compiled with the flags
1354substituted into `$(WARNINGCFLAGS)', and `prog2' will additionally be
1355compiled with the flags required to link with `libfoo'.
1356
1357 Note that listing `AM_CFLAGS' in a per-target `CFLAGS' variable is a
1358common idiom to ensure that `AM_CFLAGS' applies to every target in a
1359`Makefile.in'.
1360
1361 Using variables like this gives you full control over the ordering of
1362the flags. For instance, if there is a flag in $(WARNINGCFLAGS) that
1363you want to negate for a particular target, you can use something like
1364`prog1_CFLAGS = $(AM_CFLAGS) -no-flag'. If all these flags had been
1365forcefully appended to `CFLAGS', there would be no way to disable one
1366flag. Yet another reason to leave user variables to users.
1367
1368 Finally, we have avoided naming the variable of the example
1369`LIBFOO_LDFLAGS' (with an underscore) because that would cause Automake
1370to think that this is actually a per-target variable (like
1371`mumble_LDFLAGS') for some non-declared `LIBFOO' target.
1372
137327.6.2 Other Variables
1374----------------------
1375
1376There are other variables in Automake that follow similar principles to
1377allow user options. For instance, Texinfo rules (*note Texinfo::) use
1378`MAKEINFOFLAGS' and `AM_MAKEINFOFLAGS'. Similarly, DejaGnu tests
1379(*note Tests::) use `RUNTESTDEFAULTFLAGS' and `AM_RUNTESTDEFAULTFLAGS'.
1380The tags and ctags rules (*note Tags::) use `ETAGSFLAGS',
1381`AM_ETAGSFLAGS', `CTAGSFLAGS', and `AM_CTAGSFLAGS'. Java rules (*note
1382Java::) use `JAVACFLAGS' and `AM_JAVACFLAGS'. None of these rules do
1383support per-target flags (yet).
1384
1385 To some extent, even `AM_MAKEFLAGS' (*note Subdirectories::) obeys
1386this naming scheme. The slight difference is that `MAKEFLAGS' is
1387passed to sub-`make's implicitly by `make' itself.
1388
1389 However you should not think that all variables ending with `FLAGS'
1390follow this convention. For instance, `DISTCHECK_CONFIGURE_FLAGS'
1391(*note Dist::), `ACLOCAL_AMFLAGS' (see *Note Rebuilding:: and *Note
1392Local Macros::), are two variables that are only useful to the
1393maintainer and have no user counterpart.
1394
1395 `ARFLAGS' (*note A Library::) is usually defined by Automake and has
1396neither `AM_' nor per-target cousin.
1397
1398 Finally you should not think either that the existence of a
1399per-target variable implies that of an `AM_' variable or that of a user
1400variable. For instance, the `mumble_LDADD' per-target variable
1401overrides the global `LDADD' variable (which is not a user variable),
1402and `mumble_LIBADD' exists only as a per-target variable. *Note
1403Program and Library Variables::.
1404
1405
1406File: automake.info, Node: renamed objects, Next: Per-Object Flags, Prev: Flag Variables Ordering, Up: FAQ
1407
140827.7 Why are object files sometimes renamed?
1409============================================
1410
1411This happens when per-target compilation flags are used. Object files
1412need to be renamed just in case they would clash with object files
1413compiled from the same sources, but with different flags. Consider the
1414following example.
1415
1416 bin_PROGRAMS = true false
1417 true_SOURCES = generic.c
1418 true_CPPFLAGS = -DEXIT_CODE=0
1419 false_SOURCES = generic.c
1420 false_CPPFLAGS = -DEXIT_CODE=1
1421 Obviously the two programs are built from the same source, but it
1422would be bad if they shared the same object, because `generic.o' cannot
1423be built with both `-DEXIT_CODE=0' _and_ `-DEXIT_CODE=1'. Therefore
1424`automake' outputs rules to build two different objects:
1425`true-generic.o' and `false-generic.o'.
1426
1427 `automake' doesn't actually look whether source files are shared to
1428decide if it must rename objects. It will just rename all objects of a
1429target as soon as it sees per-target compilation flags are used.
1430
1431 It's OK to share object files when per-target compilation flags are
1432not used. For instance, `true' and `false' will both use `version.o'
1433in the following example.
1434
1435 AM_CPPFLAGS = -DVERSION=1.0
1436 bin_PROGRAMS = true false
1437 true_SOURCES = true.c version.c
1438 false_SOURCES = false.c version.c
1439
1440 Note that the renaming of objects is also affected by the
1441`_SHORTNAME' variable (*note Program and Library Variables::).
1442
1443
1444File: automake.info, Node: Per-Object Flags, Next: Multiple Outputs, Prev: renamed objects, Up: FAQ
1445
144627.8 Per-Object Flags Emulation
1447===============================
1448
1449 One of my source files needs to be compiled with different flags. How
1450 do I do?
1451
1452 Automake supports per-program and per-library compilation flags (see
1453*Note Program and Library Variables:: and *Note Flag Variables
1454Ordering::). With this you can define compilation flags that apply to
1455all files compiled for a target. For instance, in
1456
1457 bin_PROGRAMS = foo
1458 foo_SOURCES = foo.c foo.h bar.c bar.h main.c
1459 foo_CFLAGS = -some -flags
1460
1461`foo-foo.o', `foo-bar.o', and `foo-main.o' will all be compiled with
1462`-some -flags'. (If you wonder about the names of these object files,
1463see *Note renamed objects::.) Note that `foo_CFLAGS' gives the flags
1464to use when compiling all the C sources of the _program_ `foo', it has
1465nothing to do with `foo.c' or `foo-foo.o' specifically.
1466
1467 What if `foo.c' needs to be compiled into `foo.o' using some
1468specific flags, that none of the other files require? Obviously
1469per-program flags are not directly applicable here. Something like
1470per-object flags are expected, i.e., flags that would be used only when
1471creating `foo-foo.o'. Automake does not support that, however this is
1472easy to simulate using a library that contains only that object, and
1473compiling this library with per-library flags.
1474
1475 bin_PROGRAMS = foo
1476 foo_SOURCES = bar.c bar.h main.c
1477 foo_CFLAGS = -some -flags
1478 foo_LDADD = libfoo.a
1479 noinst_LIBRARIES = libfoo.a
1480 libfoo_a_SOURCES = foo.c foo.h
1481 libfoo_a_CFLAGS = -some -other -flags
1482
1483 Here `foo-bar.o' and `foo-main.o' will all be compiled with `-some
1484-flags', while `libfoo_a-foo.o' will be compiled using `-some -other
1485-flags'. Eventually, all three objects will be linked to form `foo'.
1486
1487 This trick can also be achieved using Libtool convenience libraries,
1488for instance `noinst_LTLIBRARIES = libfoo.la' (*note Libtool
1489Convenience Libraries::).
1490
1491 Another tempting idea to implement per-object flags is to override
1492the compile rules `automake' would output for these files. Automake
1493will not define a rule for a target you have defined, so you could
1494think about defining the `foo-foo.o: foo.c' rule yourself. We
1495recommend against this, because this is error prone. For instance, if
1496you add such a rule to the first example, it will break the day you
1497decide to remove `foo_CFLAGS' (because `foo.c' will then be compiled as
1498`foo.o' instead of `foo-foo.o', *note renamed objects::). Also in
1499order to support dependency tracking, the two `.o'/`.obj' extensions,
1500and all the other flags variables involved in a compilation, you will
1501end up modifying a copy of the rule previously output by `automake' for
1502this file. If a new release of Automake generates a different rule,
1503your copy will need to be updated by hand.
1504
1505
1506File: automake.info, Node: Multiple Outputs, Next: Hard-Coded Install Paths, Prev: Per-Object Flags, Up: FAQ
1507
150827.9 Handling Tools that Produce Many Outputs
1509=============================================
1510
1511This section describes a `make' idiom that can be used when a tool
1512produces multiple output files. It is not specific to Automake and can
1513be used in ordinary `Makefile's.
1514
1515 Suppose we have a program called `foo' that will read one file
1516called `data.foo' and produce two files named `data.c' and `data.h'.
1517We want to write a `Makefile' rule that captures this one-to-two
1518dependency.
1519
1520 The naive rule is incorrect:
1521
1522 # This is incorrect.
1523 data.c data.h: data.foo
1524 foo data.foo
1525
1526What the above rule really says is that `data.c' and `data.h' each
1527depend on `data.foo', and can each be built by running `foo data.foo'.
1528In other words it is equivalent to:
1529
1530 # We do not want this.
1531 data.c: data.foo
1532 foo data.foo
1533 data.h: data.foo
1534 foo data.foo
1535
1536which means that `foo' can be run twice. Usually it will not be run
1537twice, because `make' implementations are smart enough to check for the
1538existence of the second file after the first one has been built; they
1539will therefore detect that it already exists. However there are a few
1540situations where it can run twice anyway:
1541
1542 * The most worrying case is when running a parallel `make'. If
1543 `data.c' and `data.h' are built in parallel, two `foo data.foo'
1544 commands will run concurrently. This is harmful.
1545
1546 * Another case is when the dependency (here `data.foo') is (or
1547 depends upon) a phony target.
1548
1549 A solution that works with parallel `make' but not with phony
1550dependencies is the following:
1551
1552 data.c data.h: data.foo
1553 foo data.foo
1554 data.h: data.c
1555
1556The above rules are equivalent to
1557
1558 data.c: data.foo
1559 foo data.foo
1560 data.h: data.foo data.c
1561 foo data.foo
1562 therefore a parallel `make' will have to serialize the builds of
1563`data.c' and `data.h', and will detect that the second is no longer
1564needed once the first is over.
1565
1566 Using this pattern is probably enough for most cases. However it
1567does not scale easily to more output files (in this scheme all output
1568files must be totally ordered by the dependency relation), so we will
1569explore a more complicated solution.
1570
1571 Another idea is to write the following:
1572
1573 # There is still a problem with this one.
1574 data.c: data.foo
1575 foo data.foo
1576 data.h: data.c
1577
1578The idea is that `foo data.foo' is run only when `data.c' needs to be
1579updated, but we further state that `data.h' depends upon `data.c'.
1580That way, if `data.h' is required and `data.foo' is out of date, the
1581dependency on `data.c' will trigger the build.
1582
1583 This is almost perfect, but suppose we have built `data.h' and
1584`data.c', and then we erase `data.h'. Then, running `make data.h' will
1585not rebuild `data.h'. The above rules just state that `data.c' must be
1586up-to-date with respect to `data.foo', and this is already the case.
1587
1588 What we need is a rule that forces a rebuild when `data.h' is
1589missing. Here it is:
1590
1591 data.c: data.foo
1592 foo data.foo
1593 data.h: data.c
1594 ## Recover from the removal of $@
1595 @if test -f $@; then :; else \
1596 rm -f data.c; \
1597 $(MAKE) $(AM_MAKEFLAGS) data.c; \
1598 fi
1599
1600 The above scheme can be extended to handle more outputs and more
1601inputs. One of the outputs is selected to serve as a witness to the
1602successful completion of the command, it depends upon all inputs, and
1603all other outputs depend upon it. For instance, if `foo' should
1604additionally read `data.bar' and also produce `data.w' and `data.x', we
1605would write:
1606
1607 data.c: data.foo data.bar
1608 foo data.foo data.bar
1609 data.h data.w data.x: data.c
1610 ## Recover from the removal of $@
1611 @if test -f $@; then :; else \
1612 rm -f data.c; \
1613 $(MAKE) $(AM_MAKEFLAGS) data.c; \
1614 fi
1615
1616 However there are now two minor problems in this setup. One is
1617related to the timestamp ordering of `data.h', `data.w', `data.x', and
1618`data.c'. The other one is a race condition if a parallel `make'
1619attempts to run multiple instances of the recover block at once.
1620
1621 Let us deal with the first problem. `foo' outputs four files, but
1622we do not know in which order these files are created. Suppose that
1623`data.h' is created before `data.c'. Then we have a weird situation.
1624The next time `make' is run, `data.h' will appear older than `data.c',
1625the second rule will be triggered, a shell will be started to execute
1626the `if...fi' command, but actually it will just execute the `then'
1627branch, that is: nothing. In other words, because the witness we
1628selected is not the first file created by `foo', `make' will start a
1629shell to do nothing each time it is run.
1630
1631 A simple riposte is to fix the timestamps when this happens.
1632
1633 data.c: data.foo data.bar
1634 foo data.foo data.bar
1635 data.h data.w data.x: data.c
1636 @if test -f $@; then \
1637 touch $@; \
1638 else \
1639 ## Recover from the removal of $@
1640 rm -f data.c; \
1641 $(MAKE) $(AM_MAKEFLAGS) data.c; \
1642 fi
1643
1644 Another solution is to use a different and dedicated file as witness,
1645rather than using any of `foo''s outputs.
1646
1647 data.stamp: data.foo data.bar
1648 @rm -f data.tmp
1649 @touch data.tmp
1650 foo data.foo data.bar
1651 @mv -f data.tmp $@
1652 data.c data.h data.w data.x: data.stamp
1653 ## Recover from the removal of $@
1654 @if test -f $@; then :; else \
1655 rm -f data.stamp; \
1656 $(MAKE) $(AM_MAKEFLAGS) data.stamp; \
1657 fi
1658
1659 `data.tmp' is created before `foo' is run, so it has a timestamp
1660older than output files output by `foo'. It is then renamed to
1661`data.stamp' after `foo' has run, because we do not want to update
1662`data.stamp' if `foo' fails.
1663
1664 This solution still suffers from the second problem: the race
1665condition in the recover rule. If, after a successful build, a user
1666erases `data.c' and `data.h', and runs `make -j', then `make' may start
1667both recover rules in parallel. If the two instances of the rule
1668execute `$(MAKE) $(AM_MAKEFLAGS) data.stamp' concurrently the build is
1669likely to fail (for instance, the two rules will create `data.tmp', but
1670only one can rename it).
1671
1672 Admittedly, such a weird situation does not arise during ordinary
1673builds. It occurs only when the build tree is mutilated. Here
1674`data.c' and `data.h' have been explicitly removed without also
1675removing `data.stamp' and the other output files. `make clean; make'
1676will always recover from these situations even with parallel makes, so
1677you may decide that the recover rule is solely to help non-parallel
1678make users and leave things as-is. Fixing this requires some locking
1679mechanism to ensure only one instance of the recover rule rebuilds
1680`data.stamp'. One could imagine something along the following lines.
1681
1682 data.c data.h data.w data.x: data.stamp
1683 ## Recover from the removal of $@
1684 @if test -f $@; then :; else \
1685 trap 'rm -rf data.lock data.stamp 1 2 13 15; \
1686 ## mkdir is a portable test-and-set
1687 if mkdir data.lock 2>/dev/null; then \
1688 ## This code is being executed by the first process.
1689 rm -f data.stamp; \
1690 $(MAKE) $(AM_MAKEFLAGS) data.stamp; \
1691 else \
1692 ## This code is being executed by the follower processes.
1693 ## Wait until the first process is done.
1694 while test -d data.lock; do sleep 1; done; \
1695 ## Succeed if and only if the first process succeeded.
1696 test -f data.stamp; exit $$?; \
1697 fi; \
1698 fi
1699
1700 Using a dedicated witness, like `data.stamp', is very handy when the
1701list of output files is not known beforehand. As an illustration,
1702consider the following rules to compile many `*.el' files into `*.elc'
1703files in a single command. It does not matter how `ELFILES' is defined
1704(as long as it is not empty: empty targets are not accepted by POSIX).
1705
1706 ELFILES = one.el two.el three.el ...
1707 ELCFILES = $(ELFILES:=c)
1708
1709 elc-stamp: $(ELFILES)
1710 @rm -f elc-temp
1711 @touch elc-temp
1712 $(elisp_comp) $(ELFILES)
1713 @mv -f elc-temp $@
1714
1715 $(ELCFILES): elc-stamp
1716 ## Recover from the removal of $@
1717 @if test -f $@; then :; else \
1718 trap 'rm -rf elc-lock elc-stamp' 1 2 13 15; \
1719 if mkdir elc-lock 2>/dev/null; then \
1720 ## This code is being executed by the first process.
1721 rm -f elc-stamp; \
1722 $(MAKE) $(AM_MAKEFLAGS) elc-stamp; \
1723 rmdir elc-lock; \
1724 else \
1725 ## This code is being executed by the follower processes.
1726 ## Wait until the first process is done.
1727 while test -d elc-lock; do sleep 1; done; \
1728 ## Succeed if and only if the first process succeeded.
1729 test -f elc-stamp; exit $$?; \
1730 fi; \
1731 fi
1732
1733 For completeness it should be noted that GNU `make' is able to
1734express rules with multiple output files using pattern rules (*note
1735Pattern Rule Examples: (make)Pattern Examples.). We do not discuss
1736pattern rules here because they are not portable, but they can be
1737convenient in packages that assume GNU `make'.
1738
1739
1740File: automake.info, Node: Hard-Coded Install Paths, Prev: Multiple Outputs, Up: FAQ
1741
174227.10 Installing to Hard-Coded Locations
1743========================================
1744
1745 My package needs to install some configuration file. I tried to use
1746 the following rule, but `make distcheck' fails. Why?
1747 # Do not do this.
1748 install-data-local:
1749 $(INSTALL_DATA) $(srcdir)/afile $(DESTDIR)/etc/afile
1750
1751 My package needs to populate the installation directory of another
1752 package at install-time. I can easily compute that installation
1753 directory in `configure', but if I install files therein,
1754 `make distcheck' fails. How else should I do?
1755
1756 These two setups share their symptoms: `make distcheck' fails
1757because they are installing files to hard-coded paths. In the later
1758case the path is not really hard-coded in the package, but we can
1759consider it to be hard-coded in the system (or in whichever tool that
1760supplies the path). As long as the path does not use any of the
1761standard directory variables (`$(prefix)', `$(bindir)', `$(datadir)',
1762etc.), the effect will be the same: user-installations are impossible.
1763
1764 When a (non-root) user wants to install a package, he usually has no
1765right to install anything in `/usr' or `/usr/local'. So he does
1766something like `./configure --prefix ~/usr' to install package in his
1767own `~/usr' tree.
1768
1769 If a package attempts to install something to some hard-coded path
1770(e.g., `/etc/afile'), regardless of this `--prefix' setting, then the
1771installation will fail. `make distcheck' performs such a `--prefix'
1772installation, hence it will fail too.
1773
1774 Now, there are some easy solutions.
1775
1776 The above `install-data-local' example for installing `/etc/afile'
1777would be better replaced by
1778
1779 sysconf_DATA = afile
1780
1781by default `sysconfdir' will be `$(prefix)/etc', because this is what
1782the GNU Standards require. When such a package is installed on a FHS
1783compliant system, the installer will have to set `--sysconfdir=/etc'.
1784As the maintainer of the package you should not be concerned by such
1785site policies: use the appropriate standard directory variable to
1786install your files so that installer can easily redefine these
1787variables to match their site conventions.
1788
1789 Installing files that should be used by another package, is slightly
1790more involved. Let's take an example and assume you want to install
1791shared library that is a Python extension module. If you ask Python
1792where to install the library, it will answer something like this:
1793
1794 % python -c 'from distutils import sysconfig;
1795 print sysconfig.get_python_lib(1,0)'
1796 /usr/lib/python2.3/site-packages
1797
1798 If you indeed use this absolute path to install your shared library,
1799non-root users will not be able to install the package, hence distcheck
1800fails.
1801
1802 Let's do better. The `sysconfig.get_python_lib()' function actually
1803accepts a third argument that will replace Python's installation prefix.
1804
1805 % python -c 'from distutils import sysconfig;
1806 print sysconfig.get_python_lib(1,0,"${exec_prefix}")'
1807 ${exec_prefix}/lib/python2.3/site-packages
1808
1809 You can also use this new path. If you do
1810 * root users can install your package with the same `--prefix' as
1811 Python (you get the behavior of the previous attempt)
1812
1813 * non-root users can install your package too, they will have the
1814 extension module in a place that is not searched by Python but they
1815 can work around this using environment variables (and if you
1816 installed scripts that use this shared library, it's easy to tell
1817 Python were to look in the beginning of your script, so the script
1818 works in both cases).
1819
1820 The `AM_PATH_PYTHON' macro uses similar commands to define
1821`$(pythondir)' and `$(pyexecdir)' (*note Python::).
1822
1823 Of course not all tools are as advanced as Python regarding that
1824substitution of PREFIX. So another strategy is to figure the part of
1825the of the installation directory that must be preserved. For
1826instance, here is how `AM_PATH_LISPDIR' (*note Emacs Lisp::) computes
1827`$(lispdir)':
1828
1829 $EMACS -batch -q -eval '(while load-path
1830 (princ (concat (car load-path) "\n"))
1831 (setq load-path (cdr load-path)))' >conftest.out
1832 lispdir=`sed -n
1833 -e 's,/$,,'
1834 -e '/.*\/lib\/x*emacs\/site-lisp$/{
1835 s,.*/lib/\(x*emacs/site-lisp\)$,${libdir}/\1,;p;q;
1836 }'
1837 -e '/.*\/share\/x*emacs\/site-lisp$/{
1838 s,.*/share/\(x*emacs/site-lisp\),${datarootdir}/\1,;p;q;
1839 }'
1840 conftest.out`
1841
1842 I.e., it just picks the first directory that looks like
1843`*/lib/*emacs/site-lisp' or `*/share/*emacs/site-lisp' in the search
1844path of emacs, and then substitutes `${libdir}' or `${datadir}'
1845appropriately.
1846
1847 The emacs case looks complicated because it processes a list and
1848expect two possible layouts, otherwise it's easy, and the benefit for
1849non-root users are really worth the extra `sed' invocation.
1850
1851
1852File: automake.info, Node: History, Next: Copying This Manual, Prev: FAQ, Up: Top
1853
185428 History of Automake
1855**********************
1856
1857This chapter presents various aspects of the history of Automake. The
1858exhausted reader can safely skip it; this will be more of interest to
1859nostalgic people, or to those curious to learn about the evolution of
1860Automake.
1861
1862* Menu:
1863
1864* Timeline:: The Automake story.
1865* Dependency Tracking Evolution:: Evolution of Automatic Dependency Tracking
1866* Releases:: Statistics about Automake Releases
1867
1868
1869File: automake.info, Node: Timeline, Next: Dependency Tracking Evolution, Up: History
1870
187128.1 Timeline
1872=============
1873
18741994-09-19 First CVS commit.
1875 If we can trust the CVS repository, David J. MacKenzie (djm)
1876 started working on Automake (or AutoMake, as it was spelt then)
1877 this Monday.
1878
1879 The first version of the `automake' script looks as follows.
1880
1881 #!/bin/sh
1882
1883 status=0
1884
1885 for makefile
1886 do
1887 if test ! -f ${makefile}.am; then
1888 echo "automake: ${makefile}.am: No such honkin' file"
1889 status=1
1890 continue
1891 fi
1892
1893 exec 4> ${makefile}.in
1894
1895 done
1896
1897 From this you can already see that Automake will be about reading
1898 `*.am' file and producing `*.in' files. You cannot see anything
1899 else, but if you also know that David is the one who created
1900 Autoconf two years before you can guess the rest.
1901
1902 Several commits follow, and by the end of the day Automake is
1903 reported to work for GNU fileutils and GNU m4.
1904
1905 The modus operandi is the one that is still used today: variables
1906 assignments in `Makefile.am' files trigger injections of precanned
1907 `Makefile' fragments into the generated `Makefile.in'. The use of
1908 `Makefile' fragments was inspired by the 4.4BSD `make' and include
1909 files, however Automake aims to be portable and to conform to the
1910 GNU standards for `Makefile' variables and targets.
1911
1912 At this point, the most recent release of Autoconf is version 1.11,
1913 and David is preparing to release Autoconf 2.0 in late October.
1914 As a matter of fact, he will barely touch Automake after September.
1915
19161994-11-05 David MacKenzie's last commit.
1917 At this point Automake is a 200 line portable shell script, plus
1918 332 lines of `Makefile' fragments. In the `README', David states
1919 his ambivalence between "portable shell" and "more appropriate
1920 language":
1921
1922 I wrote it keeping in mind the possibility of it becoming an
1923 Autoconf macro, so it would run at configure-time. That
1924 would slow configuration down a bit, but allow users to
1925 modify the Makefile.am without needing to fetch the AutoMake
1926 package. And, the Makefile.in files wouldn't need to be
1927 distributed. But all of AutoMake would. So I might
1928 reimplement AutoMake in Perl, m4, or some other more
1929 appropriate language.
1930
1931 Automake is described as "an experimental Makefile generator".
1932 There is no documentation. Adventurous users are referred to the
1933 examples and patches needed to use Automake with GNU m4 1.3,
1934 fileutils 3.9, time 1.6, and development versions of find and
1935 indent.
1936
1937 These examples seem to have been lost. However at the time of
1938 writing (10 years later in September, 2004) the FSF still
1939 distributes a package that uses this version of Automake: check
1940 out GNU termutils 2.0.
1941
19421995-11-12 Tom Tromey's first commit.
1943 After one year of inactivity, Tom Tromey takes over the package.
1944 Tom was working on GNU cpio back then, and doing this just for fun,
1945 having trouble finding a project to contribute to. So while
1946 hacking he wanted to bring the `Makefile.in' up to GNU standards.
1947 This was hard, and one day he saw Automake on
1948 `ftp://alpha.gnu.org/', grabbed it and tried it out.
1949
1950 Tom didn't talk to djm about it until later, just to make sure he
1951 didn't mind if he made a release. He did a bunch of early
1952 releases to the Gnits folks.
1953
1954 Gnits was (and still is) totally informal, just a few GNU friends
1955 who Franc,ois Pinard knew, who were all interested in making a
1956 common infrastructure for GNU projects, and shared a similar
1957 outlook on how to do it. So they were able to make some progress.
1958 It came along with Autoconf and extensions thereof, and then
1959 Automake from David and Tom (who were both gnitsians). One of
1960 their ideas was to write a document paralleling the GNU standards,
1961 that was more strict in some ways and more detailed. They never
1962 finished the GNITS standards, but the ideas mostly made their way
1963 into Automake.
1964
19651995-11-23 Automake 0.20
1966 Besides introducing automatic dependency tracking (*note
1967 Dependency Tracking Evolution::), this version also supplies a
1968 9-page manual.
1969
1970 At this time `aclocal' and `AM_INIT_AUTOMAKE' did not exist, so
1971 many things had to be done by hand. For instance, here is what a
1972 configure.in (this is the former name of the `configure.ac' we use
1973 today) must contain in order to use Automake 0.20:
1974
1975 PACKAGE=cpio
1976 VERSION=2.3.911
1977 AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE")
1978 AC_DEFINE_UNQUOTED(VERSION, "$VERSION")
1979 AC_SUBST(PACKAGE)
1980 AC_SUBST(VERSION)
1981 AC_ARG_PROGRAM
1982 AC_PROG_INSTALL
1983
1984 (Today all of the above is achieved by `AC_INIT' and
1985 `AM_INIT_AUTOMAKE'.)
1986
1987 Here is how programs are specified in `Makefile.am':
1988
1989 PROGRAMS = hello
1990 hello_SOURCES = hello.c
1991
1992 This looks pretty much like what we do today, except the
1993 `PROGRAMS' variable has no directory prefix specifying where
1994 `hello' should be installed: all programs are installed in
1995 `$(bindir)'. `LIBPROGRAMS' can be used to specify programs that
1996 must be built but not installed (it is called `noinst_PROGRAMS'
1997 nowadays).
1998
1999 Programs can be built conditionally using `AC_SUBST'itutions:
2000
2001 PROGRAMS = @progs@
2002 AM_PROGRAMS = foo bar baz
2003
2004 (`AM_PROGRAMS' has since then been renamed to `EXTRA_PROGRAMS'.)
2005
2006 Similarly scripts, static libraries, and data can built and
2007 installed using the `LIBRARIES', `SCRIPTS', and `DATA' variables.
2008 However `LIBRARIES' were treated a bit specially in that Automake
2009 did automatically supply the `lib' and `.a' prefixes. Therefore
2010 to build `libcpio.a', one had to write
2011
2012 LIBRARIES = cpio
2013 cpio_SOURCES = ...
2014
2015 Extra files to distribute must be listed in `DIST_OTHER' (the
2016 ancestor of `EXTRA_DIST'). Also extra directories that are to be
2017 distributed should appear in `DIST_SUBDIRS', but the manual
2018 describes this as a temporary ugly hack (today extra directories
2019 should also be listed in `EXTRA_DIST', and `DIST_SUBDIRS' is used
2020 for another purpose, *note Conditional Subdirectories::).
2021
20221995-11-26 Automake 0.21
2023 In less time that it takes to cook a frozen pizza, Tom rewrites
2024 Automake using Perl. At this time Perl 5 is only one year old, and
2025 Perl 4.036 is in use at many sites. Supporting several Perl
2026 versions has been a source of problems through the whole history
2027 of Automake.
2028
2029 If you never used Perl 4, imagine Perl 5 without objects, without
2030 `my' variables (only dynamically scoped `local' variables),
2031 without function prototypes, with function calls that needs to be
2032 prefixed with `&', etc. Traces of this old style can still be
2033 found in today's `automake'.
2034
20351995-11-28 Automake 0.22
20361995-11-29 Automake 0.23
2037 Bug fixes.
2038
20391995-12-08 Automake 0.24
20401995-12-10 Automake 0.25
2041 Releases are raining. 0.24 introduces the uniform naming scheme we
2042 use today, i.e., `bin_PROGRAMS' instead of `PROGRAMS',
2043 `noinst_LIBRARIES' instead of `LIBLIBRARIES', etc. (However
2044 `EXTRA_PROGRAMS' does not exist yet, `AM_PROGRAMS' is still in
2045 use; and `TEXINFOS' and `MANS' still have no directory prefixes.)
2046 Adding support for prefixes like that was one of the major ideas
2047 in automake; it has lasted pretty well.
2048
2049 AutoMake is renamed to Automake (Tom seems to recall it was
2050 Franc,ois Pinard's doing).
2051
2052 0.25 fixes a Perl 4 portability bug.
2053
20541995-12-18 Jim Meyering starts using Automake in GNU Textutils.
2055
20561995-12-31 Franc,ois Pinard starts using Automake in GNU tar.
2057
20581996-01-03 Automake 0.26
20591996-01-03 Automake 0.27
2060 Of the many change and suggestions sent by Franc,ois Pinard and
2061 included in 0.26, the most important is perhaps the advise that to
2062 ease customization a user rule or variable definition should always
2063 override an Automake rule or definition.
2064
2065 Gordon Matzigkeit and Jim Meyering are two other early contributors
2066 that have been sending fixes.
2067
2068 0.27 fixes yet another Perl 4 portability bug.
2069
20701996-01-13 Automake 0.28
2071 Automake starts scanning `configure.in' for `LIBOBJS' support.
2072 This is an important step because until this version Automake did
2073 only know about the `Makefile.am's it processed. `configure.in'
2074 was Autoconf's world and the link between Autoconf and Automake
2075 had to be done by the `Makefile.am' author. For instance, if
2076 `config.h' was generated by `configure', it was the package
2077 maintainer's responsibility to define the `CONFIG_HEADER' variable
2078 in each `Makefile.am'.
2079
2080 Succeeding releases will rely more and more on scanning
2081 `configure.in' to better automate the Autoconf integration.
2082
2083 0.28 also introduces the `AUTOMAKE_OPTIONS' variable and the
2084 `--gnu' and `--gnits' options, the latter being stricter.
2085
20861996-02-07 Automake 0.29
2087 Thanks to `configure.in' scanning, `CONFIG_HEADER' is gone, and
2088 rebuild rules for `configure'-generated file are automatically
2089 output.
2090
2091 `TEXINFOS' and `MANS' converted to the uniform naming scheme.
2092
20931996-02-24 Automake 0.30
2094 The test suite is born. It contains 9 tests. From now on test
2095 cases will be added pretty regularly (*note Releases::), and this
2096 proved to be really helpful later on.
2097
2098 `EXTRA_PROGRAMS' finally replaces `AM_PROGRAMS'.
2099
2100 All the third-party Autoconf macros, written mostly by Franc,ois
2101 Pinard (and later Jim Meyering), are distributed in Automake's
2102 hand-written `aclocal.m4' file. Package maintainers are expected
2103 to extract the necessary macros from this file. (In previous
2104 version you had to copy and paste them from the manual...)
2105
21061996-03-11 Automake 0.31
2107 The test suite in 0.30 was run via a long `check-local' rule. Upon
2108 Ulrich Drepper's suggestion, 0.31 makes it an Automake rule output
2109 whenever the `TESTS' variable is defined.
2110
2111 `DIST_OTHER' is renamed to `EXTRA_DIST', and the `check_' prefix
2112 is introduced. The syntax is now the same as today.
2113
21141996-03-15 Gordon Matzigkeit starts writing libtool.
2115
21161996-04-27 Automake 0.32
2117 `-hook' targets are introduced; an idea from Dieter Baron.
2118
2119 `*.info' files, which were output in the build directory are now
2120 built in the source directory, because they are distributed. It
2121 seems these files like to move back and forth as that will happen
2122 again in future versions.
2123
21241996-05-18 Automake 0.33
2125 Gord Matzigkeit's main two contributions:
2126
2127 * very preliminary libtool support
2128
2129 * the distcheck rule
2130
2131 Although they were very basic at this point, these are probably
2132 among the top features for Automake today.
2133
2134 Jim Meyering also provides the infamous `jm_MAINTAINER_MODE',
2135 since then renamed to `AM_MAINTAINER_MODE' and abandoned by its
2136 author (*note maintainer-mode::).
2137
21381996-05-28 Automake 1.0
2139 After only six months of heavy development, the automake script is
2140 3134 lines long, plus 973 lines of `Makefile' fragments. The
2141 package has 30 pages of documentation, and 38 test cases.
2142 `aclocal.m4' contains 4 macros.
2143
2144 From now on and until version 1.4, new releases will occur at a
2145 rate of about one a year. 1.1 did not exist, actually 1.1b to
2146 1.1p have been the name of beta releases for 1.2. This is the
2147 first time Automake uses suffix letters to designate beta
2148 releases, an habit that lasts.
2149
21501996-10-10 Kevin Dalley packages Automake 1.0 for Debian GNU/Linux.
2151
21521996-11-26 David J. MacKenzie releases Autoconf 2.12.
2153 Between June and October, the Autoconf development is almost
2154 staled. Roland McGrath has been working at the beginning of the
2155 year. David comes back in November to release 2.12, but he won't
2156 touch Autoconf anymore after this year, and Autoconf then really
2157 stagnates. The desolate Autoconf `ChangeLog' for 1997 lists only
2158 7 commits.
2159
21601997-02-28 <automake@gnu.ai.mit.edu> list alive
2161 The mailing list is announced as follows:
2162 I've created the "automake" mailing list. It is
2163 "automake@gnu.ai.mit.edu". Administrivia, as always, to
2164 automake-request@gnu.ai.mit.edu.
2165
2166 The charter of this list is discussion of automake, autoconf, and
2167 other configuration/portability tools (e.g., libtool). It is expected
2168 that discussion will range from pleas for help all the way up to
2169 patches.
2170
2171 This list is archived on the FSF machines. Offhand I don't know if
2172 you can get the archive without an account there.
2173
2174 This list is open to anybody who wants to join. Tell all your
2175 friends!
2176 -- Tom Tromey
2177
2178 Before that people were discussing Automake privately, on the Gnits
2179 mailing list (which is not public either), and less frequently on
2180 `gnu.misc.discuss'.
2181
2182 `gnu.ai.mit.edu' is now `gnu.org', in case you never noticed. The
2183 archives of the early years of the `automake@gnu.org' list have
2184 been lost, so today it is almost impossible to find traces of
2185 discussions that occurred before 1999. This has been annoying
2186 more than once, as such discussions can be useful to understand
2187 the rationale behind a piece of uncommented code that was
2188 introduced back then.
2189
21901997-06-22 Automake 1.2
2191 Automake developments continues, and more and more new Autoconf
2192 macros are required. Distributing them in `aclocal.m4' and
2193 requiring people to browse this file to extract the relevant
2194 macros becomes uncomfortable. Ideally, some of them should be
2195 contributed to Autoconf so that they can be used directly, however
2196 Autoconf is currently inactive. Automake 1.2 consequently
2197 introduces `aclocal' (`aclocal' was actually started on
2198 1996-07-28), a tool that automatically constructs an `aclocal.m4'
2199 file from a repository of third-party macros. Because Autoconf has
2200 stalled, Automake also becomes a kind of repository for such
2201 third-party macros, even macros completely unrelated to Automake
2202 (for instance macros that fix broken Autoconf macros).
2203
2204 The 1.2 release contains 20 macros, among which the
2205 `AM_INIT_AUTOMAKE' macro that simplifies the creation of
2206 `configure.in'.
2207
2208 Libtool is fully supported using `*_LTLIBRARIES'.
2209
2210 The missing script is introduced by Franc,ois Pinard; it is meant
2211 to be a better solution than `AM_MAINTAINER_MODE' (*note
2212 maintainer-mode::).
2213
2214 Conditionals support was implemented by Ian Lance Taylor. At the
2215 time, Tom and Ian were working on an internal project at Cygnus.
2216 They were using ILU, which is pretty similar to CORBA. They
2217 wanted to integrate ILU into their build, which was all
2218 `configure'-based, and Ian thought that adding conditionals to
2219 `automake' was simpler than doing all the work in `configure'
2220 (which was the standard at the time). So this was actually funded
2221 by Cygnus.
2222
2223 This very useful but tricky feature will take a lot of time to
2224 stabilize. (At the time this text is written, there are still
2225 primaries that have not been updated to support conditional
2226 definitions in Automake 1.9.)
2227
2228 The `automake' script has almost doubled: 6089 lines of Perl, plus
2229 1294 lines of `Makefile' fragments.
2230
22311997-07-08 Gordon Matzigkeit releases Libtool 1.0.
2232
22331998-04-05 Automake 1.3
2234 This is a small advance compared to 1.2. It add support for
2235 assembly, and preliminary support for Java.
2236
2237 Perl 5.004_04 is out, but fixes to support Perl 4 are still
2238 regularly submitted whenever Automake breaks it.
2239
22401998-09-06 `sourceware.cygnus.com' is on-line.
2241 Sourceware was setup by Jason Molenda to host open source projects.
2242
22431998-09-19 Automake CVS repository moved to `sourceware.cygnus.com'
22441998-10-26 `sourceware.cygnus.com' announces it hosts Automake
2245 Automake is now hosted on `sourceware.cygnus.com'. It has a
2246 publicly accessible CVS repository. This CVS repository is a copy
2247 of the one Tom was using on his machine, which in turn is based on
2248 a copy of the CVS repository of David MacKenzie. This is why we
2249 still have to full source history. (Automake is still on
2250 Sourceware today, but the host has been renamed to
2251 `sources.redhat.com'.)
2252
2253 The oldest file in the administrative directory of the CVS
2254 repository that was created on Sourceware is dated 1998-09-19,
2255 while the announcement that `automake' and `autoconf' had joined
2256 `sourceware' was made on 1998-10-26. They were among the first
2257 projects to be hosted there.
2258
2259 The heedful reader will have noticed Automake was exactly
2260 4-year-old on 1998-09-19.
2261
22621999-01-05 Ben Elliston releases Autoconf 2.13.
2263
22641999-01-14 Automake 1.4
2265 This release adds support for Fortran 77 and for the `include'
2266 statement. Also, `+=' assignments are introduced, but it is still
2267 quite easy to fool Automake when mixing this with conditionals.
2268
2269 These two releases, Automake 1.4 and Autoconf 2.13 makes a duo that
2270 will be used together for years.
2271
2272 `automake' is 7228 lines, plus 1591 lines of Makefile fragment, 20
2273 macros (some 1.3 macros were finally contributed back to
2274 Autoconf), 197 test cases, and 51 pages of documentation.
2275
22761999-03-27 The `user-dep-branch' is created on the CVS repository.
2277 This implements a new dependency tracking schemed that should be
2278 able to handle automatic dependency tracking using any compiler
2279 (not just gcc) and any make (not just GNU `make'). In addition,
2280 the new scheme should be more reliable than the old one, as
2281 dependencies are generated on the end user's machine. Alexandre
2282 Oliva creates depcomp for this purpose.
2283
2284 *Note Dependency Tracking Evolution::, for more details about the
2285 evolution of automatic dependency tracking in Automake.
2286
22871999-11-21 The `user-dep-branch' is merged into the main trunk.
2288 This was a huge problem since we also had patches going in on the
2289 trunk. The merge took a long time and was very painful.
2290
22912000-05-10
2292 Since September 1999 and until 2003, Akim Demaille will be
2293 zealously revamping Autoconf.
2294
2295 I think the next release should be called "3.0".
2296 Let's face it: you've basically rewritten autoconf.
2297 Every weekend there are 30 new patches.
2298 I don't see how we could call this "2.15" with a straight
2299 face.
2300 - Tom Tromey on <autoconf@gnu.org>
2301
2302 Actually Akim works like a submarine: he will pile up patches
2303 while he works off-line during the weekend, and flush them in
2304 batch when he resurfaces on Monday.
2305
23062001-01-24
2307 On this Wednesday, Autoconf 2.49c, the last beta before Autoconf
2308 2.50 is out, and Akim has to find something to do during his
2309 week-end :)
2310
23112001-01-28
2312 Akim sends a batch of 14 patches to <automake@gnu.org>.
2313
2314 Aiieeee! I was dreading the day that the Demaillator turned
2315 his sights on automake... and now it has arrived! - Tom Tromey
2316
2317 It's only the beginning: in two months he will send 192 patches.
2318 Then he would slow down so Tom can catch up and review all this.
2319 Initially Tom actually read all these patches, then he probably
2320 trustingly answered OK to most of them, and finally gave up and
2321 let Akim apply whatever he wanted. There was no way to keep up
2322 with that patch rate.
2323
2324 Anyway the patch below won't apply since it predates Akim's
2325 sourcequake; I have yet to figure where the relevant passage
2326 has been moved :) - Alexandre Duret-Lutz
2327
2328 All these patches were sent to and discussed on
2329 <automake@gnu.org>, so subscribed users were literally drown in
2330 technical mails. Eventually, the <automake-patches@gnu.org>
2331 mailing list was created in May.
2332
2333 Year after year, Automake had drifted away from its initial design:
2334 construct `Makefile.in' by assembling various `Makefile'
2335 fragments. In 1.4, lots of `Makefile' rules are being emitted at
2336 various places in the `automake' script itself; this does not help
2337 ensuring a consistent treatment of these rules (for instance
2338 making sure that user-defined rules override Automake's own rules).
2339 One of Akim's goal was moving all these hard-coded rules to
2340 separate `Makefile' fragments, so the logic could be centralized
2341 in a `Makefile' fragment processor.
2342
2343 Another significant contribution of Akim is the interface with the
2344 "trace" feature of Autoconf. The way to scan `configure.in' at
2345 this time was to read the file and grep the various macro of
2346 interest to Automake. Doing so could break in many unexpected
2347 ways; automake could miss some definition (for instance
2348 `AC_SUBST([$1], [$2])' where the arguments are known only when M4
2349 is run), or conversely it could detect some macro that was not
2350 expanded (because it is called conditionally). In the CVS version
2351 of Autoconf, Akim had implemented the `--trace' option, which
2352 provides accurate information about where macros are actually
2353 called and with what arguments. Akim will equip Automake with a
2354 second `configure.in' scanner that uses this `--trace' interface.
2355 Since it was not sensible to drop the Autoconf 2.13 compatibility
2356 yet, this experimental scanner was only used when an environment
2357 variable was set, the traditional grep-scanner being still the
2358 default.
2359
23602001-04-25 Gary V. Vaughan releases Libtool 1.4
2361 It has been more than two years since Automake 1.4, CVS Automake
2362 has suffered lot's of heavy changes and still is not ready for
2363 release. Libtool 1.4 had to be distributed with a patch against
2364 Automake 1.4.
2365
23662001-05-08 Automake 1.4-p1
23672001-05-24 Automake 1.4-p2
2368 Gary V. Vaughan, the principal Libtool maintainer, makes a "patch
2369 release" of Automake:
2370
2371 The main purpose of this release is to have a stable automake
2372 which is compatible with the latest stable libtool.
2373
2374 The release also contains obvious fixes for bugs in Automake 1.4,
2375 some of which were reported almost monthly.
2376
23772001-05-21 Akim Demaille releases Autoconf 2.50
2378
23792001-06-07 Automake 1.4-p3
23802001-06-10 Automake 1.4-p4
23812001-07-15 Automake 1.4-p5
2382 Gary continues his patch-release series. These also add support
2383 for some new Autoconf 2.50 idioms. Essentially, Autoconf now
2384 advocates `configure.ac' over `configure.in', and it introduces a
2385 new syntax for `AC_OUTPUT'ing files.
2386
23872001-08-23 Automake 1.5
2388 A major and long-awaited release, that comes more than two years
2389 after 1.4. It brings many changes, among which:
2390 * The new dependency tracking scheme that uses `depcomp'.
2391 Aside from the improvement on the dependency tracking itself
2392 (*note Dependency Tracking Evolution::), this also
2393 streamlines the use of automake generated `Makefile.in's as
2394 the `Makefile.in's used during development are now the same
2395 as those used in distributions. Before that the
2396 `Makefile.in's generated for maintainers required GNU `make'
2397 and GCC, they were different from the portable `Makefile'
2398 generated for distribution; this was causing some confusion.
2399
2400 * Support for per-target compilation flags.
2401
2402 * Support for reference to files in subdirectories in most
2403 `Makefile.am' variables.
2404
2405 * Introduction of the `dist_', `nodist_', and `nobase_'
2406 prefixes.
2407
2408 * Perl 4 support is finally dropped.
2409
2410 1.5 did broke several packages that worked with 1.4. Enough so
2411 that Linux distributions could not easily install the new Automake
2412 version without breaking many of the packages for which they had
2413 to run `automake'.
2414
2415 Some of these breakages were effectively bugs that would
2416 eventually be fixed in the next release. However, a lot of damage
2417 was caused by some changes made deliberately to render Automake
2418 stricter on some setup we did consider bogus. For instance, `make
2419 distcheck' was improved to check that `make uninstall' did remove
2420 all the files `make install' installed, that `make distclean' did
2421 not omit some file, and that a VPATH build would work even if the
2422 source directory was read-only. Similarly, Automake now rejects
2423 multiple definitions of the same variable (because that would mix
2424 very badly with conditionals), and `+=' assignments with no
2425 previous definition. Because these changes all occurred suddenly
2426 after 1.4 had been established for more than two years, it hurt
2427 users.
2428
2429 To make matter worse, meanwhile Autoconf (now at version 2.52) was
2430 facing similar troubles, for similar reasons.
2431
24322002-03-05 Automake 1.6
2433 This release introduced versioned installation (*note API
2434 versioning::). This was mainly pushed by Havoc Pennington, taking
2435 the GNOME source tree as motive: due to incompatibilities between
2436 the autotools it's impossible for the GNOME packages to switch to
2437 Autoconf 2.53 and Automake 1.5 all at once, so they are currently
2438 stuck with Autoconf 2.13 and Automake 1.4.
2439
2440 The idea was to call this version `automake-1.6', call all its
2441 bug-fix versions identically, and switch to `automake-1.7' for the
2442 next release that adds new features or changes some rules. This
2443 scheme implies maintaining a bug-fix branch in addition to the
2444 development trunk, which means more work from the maintainer, but
2445 providing regular bug-fix releases proved to be really worthwhile.
2446
2447 Like 1.5, 1.6 also introduced a bunch of incompatibilities, meant
2448 or not. Perhaps the more annoying was the dependence on the newly
2449 released Autoconf 2.53. Autoconf seemed to have stabilized enough
2450 since its explosive 2.50 release, and included changes required to
2451 fix some bugs in Automake. In order to upgrade to Automake 1.6,
2452 people now had to upgrade Autoconf too; for some packages it was
2453 no picnic.
2454
2455 While versioned installation helped people to upgrade, it also
2456 unfortunately allowed people not to upgrade. At the time of
2457 writing, some Linux distributions are shipping packages for
2458 Automake 1.4, 1.5, 1.6, 1.7, 1.8, and 1.9. Most of these still
2459 install 1.4 by default. Some distribution also call 1.4 the
2460 "stable" version, and present "1.9" as the development version;
2461 this does not really makes sense since 1.9 is way more solid than
2462 1.4. All this does not help the newcomer.
2463
24642002-04-11 Automake 1.6.1
2465 1.6, and the upcoming 1.4-p6 release were the last release by Tom.
2466 This one and those following will be handled by Alexandre
2467 Duret-Lutz. Tom is still around, and will be there until about
2468 1.7, but his interest into Automake is drifting away towards
2469 projects like `gcj'.
2470
2471 Alexandre has been using Automake since 2000, and started to
2472 contribute mostly on Akim's incitement (Akim and Alexandre have
2473 been working in the same room from 1999 to 2002). In 2001 and
2474 2002 he had a lot of free time to enjoy hacking Automake.
2475
24762002-06-14 Automake 1.6.2
2477
24782002-07-28 Automake 1.6.3
24792002-07-28 Automake 1.4-p6
2480 Two releases on the same day. 1.6.3 is a bug-fix release.
2481
2482 Tom Tromey backported the versioned installation mechanism on the
2483 1.4 branch, so that Automake 1.6.x and Automake 1.4-p6 could be
2484 installed side by side. Another request from the GNOME folks.
2485
24862002-09-25 Automake 1.7
2487 This release switches to the new `configure.ac' scanner Akim was
2488 experimenting in 1.5.
2489
24902002-10-16 Automake 1.7.1
24912002-12-06 Automake 1.7.2
24922003-02-20 Automake 1.7.3
24932003-04-23 Automake 1.7.4
24942003-05-18 Automake 1.7.5
24952003-07-10 Automake 1.7.6
24962003-09-07 Automake 1.7.7
24972003-10-07 Automake 1.7.8
2498 Many bug-fix releases. 1.7 lasted because the development version
2499 (upcoming 1.8) was suffering some major internal revamping.
2500
25012003-10-26 Automake on screen
2502 Episode 49, `Repercussions', in the third season of the `Alias' TV
2503 show is first aired.
2504
2505 Marshall, one of the character, is working on a computer virus
2506 that he has to modify before it gets into the wrong hands or
2507 something like that. The screenshots you see do not show any
2508 program code, they show a `Makefile.in' `generated by automake'...
2509
25102003-11-09 Automake 1.7.9
2511
25122003-12-10 Automake 1.8
2513 The most striking update is probably that of `aclocal'.
2514
2515 `aclocal' now uses `m4_include' in the produced `aclocal.m4' when
2516 the included macros are already distributed with the package (an
2517 idiom used in many packages), which reduces code duplication.
2518 Many people liked that, but in fact this change was really
2519 introduced to fix a bug in rebuild rules: `Makefile.in' must be
2520 rebuilt whenever a dependency of `configure' changes, but all the
2521 `m4' files included in `aclocal.m4' where unknown from `automake'.
2522 Now `automake' can just trace the `m4_include's to discover the
2523 dependencies.
2524
2525 `aclocal' also starts using the `--trace' Autoconf option in order
2526 to discover used macros more accurately. This will turn out to be
2527 very tricky (later releases will improve this) as people had
2528 devised many ways to cope with the limitation of previous
2529 `aclocal' versions, notably using handwritten `m4_include's:
2530 `aclocal' must make sure not to redefine a rule that is already
2531 included by such statement.
2532
2533 Automake also has seen its guts rewritten. Although this rewriting
2534 took a lot of efforts, it is only apparent to the users in that
2535 some constructions previously disallowed by the implementation now
2536 work nicely. Conditionals, Locations, Variable and Rule
2537 definitions, Options: these items on which Automake works have
2538 been rewritten as separate Perl modules, and documented.
2539
25402004-01-11 Automake 1.8.1
25412004-01-12 Automake 1.8.2
25422004-03-07 Automake 1.8.3
25432004-04-25 Automake 1.8.4
25442004-05-16 Automake 1.8.5
2545
25462004-07-28 Automake 1.9
2547 This release tries to simplify the compilation rules it outputs to
2548 reduce the size of the Makefile. The complaint initially come from
2549 the libgcj developers. Their `Makefile.in' generated with
2550 Automake 1.4 and custom build rules (1.4 did not support compiled
2551 Java) is 250KB. The one generated by 1.8 was over 9MB! 1.9 gets
2552 it down to 1.2MB.
2553
2554 Aside from this it contains mainly minor changes and bug-fixes.
2555
25562004-08-11 Automake 1.9.1
25572004-09-19 Automake 1.9.2
2558 Automake has ten years. This chapter of the manual was initially
2559 written for this occasion.
2560
2561
2562
2563File: automake.info, Node: Dependency Tracking Evolution, Next: Releases, Prev: Timeline, Up: History
2564
256528.2 Dependency Tracking in Automake
2566====================================
2567
2568Over the years Automake has deployed three different dependency
2569tracking methods. Each method, including the current one, has had
2570flaws of various sorts. Here we lay out the different dependency
2571tracking methods, their flaws, and their fixes. We conclude with
2572recommendations for tool writers, and by indicating future directions
2573for dependency tracking work in Automake.
2574
257528.2.1 First Take
2576-----------------
2577
2578Description
2579...........
2580
2581Our first attempt at automatic dependency tracking was based on the
2582method recommended by GNU `make'. (*note Generating Prerequisites
2583Automatically: (make)Automatic Prerequisites.)
2584
2585 This version worked by precomputing dependencies ahead of time. For
2586each source file, it had a special `.P' file that held the
2587dependencies. There was a rule to generate a `.P' file by invoking the
2588compiler appropriately. All such `.P' files were included by the
2589`Makefile', thus implicitly becoming dependencies of `Makefile'.
2590
2591Bugs
2592....
2593
2594This approach had several critical bugs.
2595
2596 * The code to generate the `.P' file relied on `gcc'. (A
2597 limitation, not technically a bug.)
2598
2599 * The dependency tracking mechanism itself relied on GNU `make'. (A
2600 limitation, not technically a bug.)
2601
2602 * Because each `.P' file was a dependency of `Makefile', this meant
2603 that dependency tracking was done eagerly by `make'. For
2604 instance, `make clean' would cause all the dependency files to be
2605 updated, and then immediately removed. This eagerness also caused
2606 problems with some configurations; if a certain source file could
2607 not be compiled on a given architecture for some reason,
2608 dependency tracking would fail, aborting the entire build.
2609
2610 * As dependency tracking was done as a pre-pass, compile times were
2611 doubled-the compiler had to be run twice per source file.
2612
2613 * `make dist' re-ran `automake' to generate a `Makefile' that did
2614 not have automatic dependency tracking (and that was thus portable
2615 to any version of `make'). In order to do this portably, Automake
2616 had to scan the dependency files and remove any reference that was
2617 to a source file not in the distribution. This process was
2618 error-prone. Also, if `make dist' was run in an environment where
2619 some object file had a dependency on a source file that was only
2620 conditionally created, Automake would generate a `Makefile' that
2621 referred to a file that might not appear in the end user's build.
2622 A special, hacky mechanism was required to work around this.
2623
2624Historical Note
2625...............
2626
2627The code generated by Automake is often inspired by the `Makefile'
2628style of a particular author. In the case of the first implementation
2629of dependency tracking, I believe the impetus and inspiration was Jim
2630Meyering. (I could be mistaken. If you know otherwise feel free to
2631correct me.)
2632
263328.2.2 Dependencies As Side Effects
2634-----------------------------------
2635
2636Description
2637...........
2638
2639The next refinement of Automake's automatic dependency tracking scheme
2640was to implement dependencies as side effects of the compilation. This
2641was aimed at solving the most commonly reported problems with the first
2642approach. In particular we were most concerned with eliminating the
2643weird rebuilding effect associated with make clean.
2644
2645 In this approach, the `.P' files were included using the `-include'
2646command, which let us create these files lazily. This avoided the
2647`make clean' problem.
2648
2649 We only computed dependencies when a file was actually compiled.
2650This avoided the performance penalty associated with scanning each file
2651twice. It also let us avoid the other problems associated with the
2652first, eager, implementation. For instance, dependencies would never
2653be generated for a source file that was not compilable on a given
2654architecture (because it in fact would never be compiled).
2655
2656Bugs
2657....
2658
2659 * This approach also relied on the existence of `gcc' and GNU
2660 `make'. (A limitation, not technically a bug.)
2661
2662 * Dependency tracking was still done by the developer, so the
2663 problems from the first implementation relating to massaging of
2664 dependencies by `make dist' were still in effect.
2665
2666 * This implementation suffered from the "deleted header file"
2667 problem. Suppose a lazily-created `.P' file includes a dependency
2668 on a given header file, like this:
2669
2670 maude.o: maude.c something.h
2671
2672 Now suppose that the developer removes `something.h' and updates
2673 `maude.c' so that this include is no longer needed. If he runs
2674 `make', he will get an error because there is no way to create
2675 `something.h'.
2676
2677 We fixed this problem in a later release by further massaging the
2678 output of `gcc' to include a dummy dependency for each header file.
2679
268028.2.3 Dependencies for the User
2681--------------------------------
2682
2683Description
2684...........
2685
2686The bugs associated with `make dist', over time, became a real problem.
2687Packages using Automake were being built on a large number of
2688platforms, and were becoming increasingly complex. Broken dependencies
2689were distributed in "portable" `Makefile.in's, leading to user
2690complaints. Also, the requirement for `gcc' and GNU `make' was a
2691constant source of bug reports. The next implementation of dependency
2692tracking aimed to remove these problems.
2693
2694 We realized that the only truly reliable way to automatically track
2695dependencies was to do it when the package itself was built. This
2696meant discovering a method portable to any version of make and any
2697compiler. Also, we wanted to preserve what we saw as the best point of
2698the second implementation: dependency computation as a side effect of
2699compilation.
2700
2701 In the end we found that most modern make implementations support
2702some form of include directive. Also, we wrote a wrapper script that
2703let us abstract away differences between dependency tracking methods for
2704compilers. For instance, some compilers cannot generate dependencies
2705as a side effect of compilation. In this case we simply have the
2706script run the compiler twice. Currently our wrapper script
2707(`depcomp') knows about twelve different compilers (including a
2708"compiler" that simply invokes `makedepend' and then the real compiler,
2709which is assumed to be a standard Unix-like C compiler with no way to
2710do dependency tracking).
2711
2712Bugs
2713....
2714
2715 * Running a wrapper script for each compilation slows down the build.
2716
2717 * Many users don't really care about precise dependencies.
2718
2719 * This implementation, like every other automatic dependency tracking
2720 scheme in common use today (indeed, every one we've ever heard of),
2721 suffers from the "duplicated new header" bug.
2722
2723 This bug occurs because dependency tracking tools, such as the
2724 compiler, only generate dependencies on the successful opening of a
2725 file, and not on every probe.
2726
2727 Suppose for instance that the compiler searches three directories
2728 for a given header, and that the header is found in the third
2729 directory. If the programmer erroneously adds a header file with
2730 the same name to the first directory, then a clean rebuild from
2731 scratch could fail (suppose the new header file is buggy), whereas
2732 an incremental rebuild will succeed.
2733
2734 What has happened here is that people have a misunderstanding of
2735 what a dependency is. Tool writers think a dependency encodes
2736 information about which files were read by the compiler. However,
2737 a dependency must actually encode information about what the
2738 compiler tried to do.
2739
2740 This problem is not serious in practice. Programmers typically do
2741 not use the same name for a header file twice in a given project.
2742 (At least, not in C or C++. This problem may be more troublesome
2743 in Java.) This problem is easy to fix, by modifying dependency
2744 generators to record every probe, instead of every successful open.
2745
2746 * Since automake generates dependencies as a side effect of
2747 compilation, there is a bootstrapping problem when header files
2748 are generated by running a program. The problem is that, the
2749 first time the build is done, there is no way by default to know
2750 that the headers are required, so make might try to run a
2751 compilation for which the headers have not yet been built.
2752
2753 This was also a problem in the previous dependency tracking
2754 implementation.
2755
2756 The current fix is to use `BUILT_SOURCES' to list built headers
2757 (*note Sources::). This causes them to be built before any other
2758 other build rules are run. This is unsatisfactory as a general
2759 solution, however in practice it seems sufficient for most actual
2760 programs.
2761
2762 This code is used since Automake 1.5.
2763
2764 In GCC 3.0, we managed to convince the maintainers to add special
2765command-line options to help Automake more efficiently do its job. We
2766hoped this would let us avoid the use of a wrapper script when
2767Automake's automatic dependency tracking was used with `gcc'.
2768
2769 Unfortunately, this code doesn't quite do what we want. In
2770particular, it removes the dependency file if the compilation fails;
2771we'd prefer that it instead only touch the file in any way if the
2772compilation succeeds.
2773
2774 Nevertheless, since Automake 1.7, when a recent `gcc' is detected at
2775`configure' time, we inline the dependency-generation code and do not
2776use the `depcomp' wrapper script. This makes compilations faster for
2777those using this compiler (probably our primary user base). The
2778counterpart is that because we have to encode two compilation rules in
2779`Makefile' (with or without `depcomp'), the produced `Makefile's are
2780larger.
2781
278228.2.4 Techniques for Computing Dependencies
2783--------------------------------------------
2784
2785There are actually several ways for a build tool like Automake to cause
2786tools to generate dependencies.
2787
2788`makedepend'
2789 This was a commonly-used method in the past. The idea is to run a
2790 special program over the source and have it generate dependency
2791 information. Traditional implementations of `makedepend' are not
2792 completely precise; ordinarily they were conservative and
2793 discovered too many dependencies.
2794
2795The tool
2796 An obvious way to generate dependencies is to simply write the
2797 tool so that it can generate the information needed by the build
2798 tool. This is also the most portable method. Many compilers have
2799 an option to generate dependencies. Unfortunately, not all tools
2800 provide such an option.
2801
2802The file system
2803 It is possible to write a special file system that tracks opens,
2804 reads, writes, etc, and then feed this information back to the
2805 build tool. `clearmake' does this. This is a very powerful
2806 technique, as it doesn't require cooperation from the tool.
2807 Unfortunately it is also very difficult to implement and also not
2808 practical in the general case.
2809
2810`LD_PRELOAD'
2811 Rather than use the file system, one could write a special library
2812 to intercept `open' and other syscalls. This technique is also
2813 quite powerful, but unfortunately it is not portable enough for
2814 use in `automake'.
2815
281628.2.5 Recommendations for Tool Writers
2817---------------------------------------
2818
2819We think that every compilation tool ought to be able to generate
2820dependencies as a side effect of compilation. Furthermore, at least
2821while `make'-based tools are nearly universally in use (at least in the
2822free software community), the tool itself should generate dummy
2823dependencies for header files, to avoid the deleted header file bug.
2824Finally, the tool should generate a dependency for each probe, instead
2825of each successful file open, in order to avoid the duplicated new
2826header bug.
2827
282828.2.6 Future Directions for Automake's Dependency Tracking
2829-----------------------------------------------------------
2830
2831Currently, only languages and compilers understood by Automake can have
2832dependency tracking enabled. We would like to see if it is practical
2833(and worthwhile) to let this support be extended by the user to
2834languages unknown to Automake.
2835
2836
2837File: automake.info, Node: Releases, Prev: Dependency Tracking Evolution, Up: History
2838
283928.3 Release Statistics
2840=======================
2841
2842The following table (inspired by `perlhist(1)') quantifies the
2843evolution of Automake using these metrics:
2844
2845Date, Rel
2846 The date and version of the release.
2847
2848am
2849 The number of lines of the `automake' script.
2850
2851acl
2852 The number of lines of the `aclocal' script.
2853
2854pm
2855 The number of lines of the `Perl' supporting modules.
2856
2857`*.am'
2858 The number of lines of the `Makefile' fragments. The number in
2859 parenthesis is the number of files.
2860
2861m4
2862 The number of lines (and files) of Autoconf macros.
2863
2864doc
2865 The number of pages of the documentation (the Postscript version).
2866
2867t
2868 The number of test cases in the test suite.
2869
2870Date Rel am acl pm `*.am' m4 doc t
2871-------------------------------------------------------------------------------
28721994-09-19 CVS 141 299 (24)
28731994-11-05 CVS 208 332 (28)
28741995-11-23 0.20 533 458 (35) 9
28751995-11-26 0.21 613 480 (36) 11
28761995-11-28 0.22 1116 539 (38) 12
28771995-11-29 0.23 1240 541 (38) 12
28781995-12-08 0.24 1462 504 (33) 14
28791995-12-10 0.25 1513 511 (37) 15
28801996-01-03 0.26 1706 438 (36) 16
28811996-01-03 0.27 1706 438 (36) 16
28821996-01-13 0.28 1964 934 (33) 16
28831996-02-07 0.29 2299 936 (33) 17
28841996-02-24 0.30 2544 919 (32) 85 (1) 20 9
28851996-03-11 0.31 2877 919 (32) 85 (1) 29 17
28861996-04-27 0.32 3058 921 (31) 85 (1) 30 26
28871996-05-18 0.33 3110 926 (31) 105 (1) 30 35
28881996-05-28 1.0 3134 973 (32) 105 (1) 30 38
28891997-06-22 1.2 6089 385 1294 (36) 592 (20) 37 126
28901998-04-05 1.3 6415 422 1470 (39) 741 (23) 39 156
28911999-01-14 1.4 7240 426 1591 (40) 734 (20) 51 197
28922001-05-08 1.4-p1 7251 426 1591 (40) 734 (20) 51 197
28932001-05-24 1.4-p2 7268 439 1591 (40) 734 (20) 49 197
28942001-06-07 1.4-p3 7312 439 1591 (40) 734 (20) 49 197
28952001-06-10 1.4-p4 7321 439 1591 (40) 734 (20) 49 198
28962001-07-15 1.4-p5 7228 426 1596 (40) 734 (20) 51 198
28972001-08-23 1.5 8016 475 600 2654 (39) 1166 (29) 63 327
28982002-03-05 1.6 8465 475 1136 2732 (39) 1603 (27) 66 365
28992002-04-11 1.6.1 8544 475 1136 2741 (39) 1603 (27) 66 372
29002002-06-14 1.6.2 8575 475 1136 2800 (39) 1609 (27) 67 386
29012002-07-28 1.6.3 8600 475 1153 2809 (39) 1609 (27) 67 391
29022002-07-28 1.4-p6 7332 455 1596 (40) 735 (20) 49 197
29032002-09-25 1.7 9189 471 1790 2965 (39) 1606 (28) 73 430
29042002-10-16 1.7.1 9229 475 1790 2977 (39) 1606 (28) 73 437
29052002-12-06 1.7.2 9334 475 1790 2988 (39) 1606 (28) 77 445
29062003-02-20 1.7.3 9389 475 1790 3023 (39) 1651 (29) 84 448
29072003-04-23 1.7.4 9429 475 1790 3031 (39) 1644 (29) 85 458
29082003-05-18 1.7.5 9429 475 1790 3033 (39) 1645 (29) 85 459
29092003-07-10 1.7.6 9442 475 1790 3033 (39) 1660 (29) 85 461
29102003-09-07 1.7.7 9443 475 1790 3041 (39) 1660 (29) 90 467
29112003-10-07 1.7.8 9444 475 1790 3041 (39) 1660 (29) 90 468
29122003-11-09 1.7.9 9444 475 1790 3048 (39) 1660 (29) 90 468
29132003-12-10 1.8 7171 585 7730 3236 (39) 1666 (31) 104 521
29142004-01-11 1.8.1 7217 663 7726 3287 (39) 1686 (31) 104 525
29152004-01-12 1.8.2 7217 663 7726 3288 (39) 1686 (31) 104 526
29162004-03-07 1.8.3 7214 686 7735 3303 (39) 1695 (31) 111 530
29172004-04-25 1.8.4 7214 686 7736 3310 (39) 1701 (31) 112 531
29182004-05-16 1.8.5 7240 686 7736 3299 (39) 1701 (31) 112 533
29192004-07-28 1.9 7508 715 7794 3352 (40) 1812 (32) 115 551
29202004-08-11 1.9.1 7512 715 7794 3354 (40) 1812 (32) 115 552
29212004-09-19 1.9.2 7512 715 7794 3354 (40) 1812 (32) 132 554
29222004-11-01 1.9.3 7507 718 7804 3354 (40) 1812 (32) 134 556
29232004-12-18 1.9.4 7508 718 7856 3361 (40) 1811 (32) 140 560
29242005-02-13 1.9.5 7523 719 7859 3373 (40) 1453 (32) 142 562
29252005-07-10 1.9.6 7539 699 7867 3400 (40) 1453 (32) 144 570
29262006-10-15 1.10 7859 1072 8024 3512 (40) 1496 (34) 172 604
2927
2928
2929File: automake.info, Node: Copying This Manual, Next: Indices, Prev: History, Up: Top
2930
2931Appendix A Copying This Manual
2932******************************
2933
2934* Menu:
2935
2936* GNU Free Documentation License:: License for copying this manual
2937
2938
2939File: automake.info, Node: GNU Free Documentation License, Up: Copying This Manual
2940
2941A.1 GNU Free Documentation License
2942==================================
2943
2944 Version 1.2, November 2002
2945
2946 Copyright (C) 2000,2001,2002 Free Software Foundation, Inc.
2947 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
2948
2949 Everyone is permitted to copy and distribute verbatim copies
2950 of this license document, but changing it is not allowed.
2951
2952 0. PREAMBLE
2953
2954 The purpose of this License is to make a manual, textbook, or other
2955 functional and useful document "free" in the sense of freedom: to
2956 assure everyone the effective freedom to copy and redistribute it,
2957 with or without modifying it, either commercially or
2958 noncommercially. Secondarily, this License preserves for the
2959 author and publisher a way to get credit for their work, while not
2960 being considered responsible for modifications made by others.
2961
2962 This License is a kind of "copyleft", which means that derivative
2963 works of the document must themselves be free in the same sense.
2964 It complements the GNU General Public License, which is a copyleft
2965 license designed for free software.
2966
2967 We have designed this License in order to use it for manuals for
2968 free software, because free software needs free documentation: a
2969 free program should come with manuals providing the same freedoms
2970 that the software does. But this License is not limited to
2971 software manuals; it can be used for any textual work, regardless
2972 of subject matter or whether it is published as a printed book.
2973 We recommend this License principally for works whose purpose is
2974 instruction or reference.
2975
2976 1. APPLICABILITY AND DEFINITIONS
2977
2978 This License applies to any manual or other work, in any medium,
2979 that contains a notice placed by the copyright holder saying it
2980 can be distributed under the terms of this License. Such a notice
2981 grants a world-wide, royalty-free license, unlimited in duration,
2982 to use that work under the conditions stated herein. The
2983 "Document", below, refers to any such manual or work. Any member
2984 of the public is a licensee, and is addressed as "you". You
2985 accept the license if you copy, modify or distribute the work in a
2986 way requiring permission under copyright law.
2987
2988 A "Modified Version" of the Document means any work containing the
2989 Document or a portion of it, either copied verbatim, or with
2990 modifications and/or translated into another language.
2991
2992 A "Secondary Section" is a named appendix or a front-matter section
2993 of the Document that deals exclusively with the relationship of the
2994 publishers or authors of the Document to the Document's overall
2995 subject (or to related matters) and contains nothing that could
2996 fall directly within that overall subject. (Thus, if the Document
2997 is in part a textbook of mathematics, a Secondary Section may not
2998 explain any mathematics.) The relationship could be a matter of
2999 historical connection with the subject or with related matters, or
3000 of legal, commercial, philosophical, ethical or political position
3001 regarding them.
3002
3003 The "Invariant Sections" are certain Secondary Sections whose
3004 titles are designated, as being those of Invariant Sections, in
3005 the notice that says that the Document is released under this
3006 License. If a section does not fit the above definition of
3007 Secondary then it is not allowed to be designated as Invariant.
3008 The Document may contain zero Invariant Sections. If the Document
3009 does not identify any Invariant Sections then there are none.
3010
3011 The "Cover Texts" are certain short passages of text that are
3012 listed, as Front-Cover Texts or Back-Cover Texts, in the notice
3013 that says that the Document is released under this License. A
3014 Front-Cover Text may be at most 5 words, and a Back-Cover Text may
3015 be at most 25 words.
3016
3017 A "Transparent" copy of the Document means a machine-readable copy,
3018 represented in a format whose specification is available to the
3019 general public, that is suitable for revising the document
3020 straightforwardly with generic text editors or (for images
3021 composed of pixels) generic paint programs or (for drawings) some
3022 widely available drawing editor, and that is suitable for input to
3023 text formatters or for automatic translation to a variety of
3024 formats suitable for input to text formatters. A copy made in an
3025 otherwise Transparent file format whose markup, or absence of
3026 markup, has been arranged to thwart or discourage subsequent
3027 modification by readers is not Transparent. An image format is
3028 not Transparent if used for any substantial amount of text. A
3029 copy that is not "Transparent" is called "Opaque".
3030
3031 Examples of suitable formats for Transparent copies include plain
3032 ASCII without markup, Texinfo input format, LaTeX input format,
3033 SGML or XML using a publicly available DTD, and
3034 standard-conforming simple HTML, PostScript or PDF designed for
3035 human modification. Examples of transparent image formats include
3036 PNG, XCF and JPG. Opaque formats include proprietary formats that
3037 can be read and edited only by proprietary word processors, SGML or
3038 XML for which the DTD and/or processing tools are not generally
3039 available, and the machine-generated HTML, PostScript or PDF
3040 produced by some word processors for output purposes only.
3041
3042 The "Title Page" means, for a printed book, the title page itself,
3043 plus such following pages as are needed to hold, legibly, the
3044 material this License requires to appear in the title page. For
3045 works in formats which do not have any title page as such, "Title
3046 Page" means the text near the most prominent appearance of the
3047 work's title, preceding the beginning of the body of the text.
3048
3049 A section "Entitled XYZ" means a named subunit of the Document
3050 whose title either is precisely XYZ or contains XYZ in parentheses
3051 following text that translates XYZ in another language. (Here XYZ
3052 stands for a specific section name mentioned below, such as
3053 "Acknowledgements", "Dedications", "Endorsements", or "History".)
3054 To "Preserve the Title" of such a section when you modify the
3055 Document means that it remains a section "Entitled XYZ" according
3056 to this definition.
3057
3058 The Document may include Warranty Disclaimers next to the notice
3059 which states that this License applies to the Document. These
3060 Warranty Disclaimers are considered to be included by reference in
3061 this License, but only as regards disclaiming warranties: any other
3062 implication that these Warranty Disclaimers may have is void and
3063 has no effect on the meaning of this License.
3064
3065 2. VERBATIM COPYING
3066
3067 You may copy and distribute the Document in any medium, either
3068 commercially or noncommercially, provided that this License, the
3069 copyright notices, and the license notice saying this License
3070 applies to the Document are reproduced in all copies, and that you
3071 add no other conditions whatsoever to those of this License. You
3072 may not use technical measures to obstruct or control the reading
3073 or further copying of the copies you make or distribute. However,
3074 you may accept compensation in exchange for copies. If you
3075 distribute a large enough number of copies you must also follow
3076 the conditions in section 3.
3077
3078 You may also lend copies, under the same conditions stated above,
3079 and you may publicly display copies.
3080
3081 3. COPYING IN QUANTITY
3082
3083 If you publish printed copies (or copies in media that commonly
3084 have printed covers) of the Document, numbering more than 100, and
3085 the Document's license notice requires Cover Texts, you must
3086 enclose the copies in covers that carry, clearly and legibly, all
3087 these Cover Texts: Front-Cover Texts on the front cover, and
3088 Back-Cover Texts on the back cover. Both covers must also clearly
3089 and legibly identify you as the publisher of these copies. The
3090 front cover must present the full title with all words of the
3091 title equally prominent and visible. You may add other material
3092 on the covers in addition. Copying with changes limited to the
3093 covers, as long as they preserve the title of the Document and
3094 satisfy these conditions, can be treated as verbatim copying in
3095 other respects.
3096
3097 If the required texts for either cover are too voluminous to fit
3098 legibly, you should put the first ones listed (as many as fit
3099 reasonably) on the actual cover, and continue the rest onto
3100 adjacent pages.
3101
3102 If you publish or distribute Opaque copies of the Document
3103 numbering more than 100, you must either include a
3104 machine-readable Transparent copy along with each Opaque copy, or
3105 state in or with each Opaque copy a computer-network location from
3106 which the general network-using public has access to download
3107 using public-standard network protocols a complete Transparent
3108 copy of the Document, free of added material. If you use the
3109 latter option, you must take reasonably prudent steps, when you
3110 begin distribution of Opaque copies in quantity, to ensure that
3111 this Transparent copy will remain thus accessible at the stated
3112 location until at least one year after the last time you
3113 distribute an Opaque copy (directly or through your agents or
3114 retailers) of that edition to the public.
3115
3116 It is requested, but not required, that you contact the authors of
3117 the Document well before redistributing any large number of
3118 copies, to give them a chance to provide you with an updated
3119 version of the Document.
3120
3121 4. MODIFICATIONS
3122
3123 You may copy and distribute a Modified Version of the Document
3124 under the conditions of sections 2 and 3 above, provided that you
3125 release the Modified Version under precisely this License, with
3126 the Modified Version filling the role of the Document, thus
3127 licensing distribution and modification of the Modified Version to
3128 whoever possesses a copy of it. In addition, you must do these
3129 things in the Modified Version:
3130
3131 A. Use in the Title Page (and on the covers, if any) a title
3132 distinct from that of the Document, and from those of
3133 previous versions (which should, if there were any, be listed
3134 in the History section of the Document). You may use the
3135 same title as a previous version if the original publisher of
3136 that version gives permission.
3137
3138 B. List on the Title Page, as authors, one or more persons or
3139 entities responsible for authorship of the modifications in
3140 the Modified Version, together with at least five of the
3141 principal authors of the Document (all of its principal
3142 authors, if it has fewer than five), unless they release you
3143 from this requirement.
3144
3145 C. State on the Title page the name of the publisher of the
3146 Modified Version, as the publisher.
3147
3148 D. Preserve all the copyright notices of the Document.
3149
3150 E. Add an appropriate copyright notice for your modifications
3151 adjacent to the other copyright notices.
3152
3153 F. Include, immediately after the copyright notices, a license
3154 notice giving the public permission to use the Modified
3155 Version under the terms of this License, in the form shown in
3156 the Addendum below.
3157
3158 G. Preserve in that license notice the full lists of Invariant
3159 Sections and required Cover Texts given in the Document's
3160 license notice.
3161
3162 H. Include an unaltered copy of this License.
3163
3164 I. Preserve the section Entitled "History", Preserve its Title,
3165 and add to it an item stating at least the title, year, new
3166 authors, and publisher of the Modified Version as given on
3167 the Title Page. If there is no section Entitled "History" in
3168 the Document, create one stating the title, year, authors,
3169 and publisher of the Document as given on its Title Page,
3170 then add an item describing the Modified Version as stated in
3171 the previous sentence.
3172
3173 J. Preserve the network location, if any, given in the Document
3174 for public access to a Transparent copy of the Document, and
3175 likewise the network locations given in the Document for
3176 previous versions it was based on. These may be placed in
3177 the "History" section. You may omit a network location for a
3178 work that was published at least four years before the
3179 Document itself, or if the original publisher of the version
3180 it refers to gives permission.
3181
3182 K. For any section Entitled "Acknowledgements" or "Dedications",
3183 Preserve the Title of the section, and preserve in the
3184 section all the substance and tone of each of the contributor
3185 acknowledgements and/or dedications given therein.
3186
3187 L. Preserve all the Invariant Sections of the Document,
3188 unaltered in their text and in their titles. Section numbers
3189 or the equivalent are not considered part of the section
3190 titles.
3191
3192 M. Delete any section Entitled "Endorsements". Such a section
3193 may not be included in the Modified Version.
3194
3195 N. Do not retitle any existing section to be Entitled
3196 "Endorsements" or to conflict in title with any Invariant
3197 Section.
3198
3199 O. Preserve any Warranty Disclaimers.
3200
3201 If the Modified Version includes new front-matter sections or
3202 appendices that qualify as Secondary Sections and contain no
3203 material copied from the Document, you may at your option
3204 designate some or all of these sections as invariant. To do this,
3205 add their titles to the list of Invariant Sections in the Modified
3206 Version's license notice. These titles must be distinct from any
3207 other section titles.
3208
3209 You may add a section Entitled "Endorsements", provided it contains
3210 nothing but endorsements of your Modified Version by various
3211 parties--for example, statements of peer review or that the text
3212 has been approved by an organization as the authoritative
3213 definition of a standard.
3214
3215 You may add a passage of up to five words as a Front-Cover Text,
3216 and a passage of up to 25 words as a Back-Cover Text, to the end
3217 of the list of Cover Texts in the Modified Version. Only one
3218 passage of Front-Cover Text and one of Back-Cover Text may be
3219 added by (or through arrangements made by) any one entity. If the
3220 Document already includes a cover text for the same cover,
3221 previously added by you or by arrangement made by the same entity
3222 you are acting on behalf of, you may not add another; but you may
3223 replace the old one, on explicit permission from the previous
3224 publisher that added the old one.
3225
3226 The author(s) and publisher(s) of the Document do not by this
3227 License give permission to use their names for publicity for or to
3228 assert or imply endorsement of any Modified Version.
3229
3230 5. COMBINING DOCUMENTS
3231
3232 You may combine the Document with other documents released under
3233 this License, under the terms defined in section 4 above for
3234 modified versions, provided that you include in the combination
3235 all of the Invariant Sections of all of the original documents,
3236 unmodified, and list them all as Invariant Sections of your
3237 combined work in its license notice, and that you preserve all
3238 their Warranty Disclaimers.
3239
3240 The combined work need only contain one copy of this License, and
3241 multiple identical Invariant Sections may be replaced with a single
3242 copy. If there are multiple Invariant Sections with the same name
3243 but different contents, make the title of each such section unique
3244 by adding at the end of it, in parentheses, the name of the
3245 original author or publisher of that section if known, or else a
3246 unique number. Make the same adjustment to the section titles in
3247 the list of Invariant Sections in the license notice of the
3248 combined work.
3249
3250 In the combination, you must combine any sections Entitled
3251 "History" in the various original documents, forming one section
3252 Entitled "History"; likewise combine any sections Entitled
3253 "Acknowledgements", and any sections Entitled "Dedications". You
3254 must delete all sections Entitled "Endorsements."
3255
3256 6. COLLECTIONS OF DOCUMENTS
3257
3258 You may make a collection consisting of the Document and other
3259 documents released under this License, and replace the individual
3260 copies of this License in the various documents with a single copy
3261 that is included in the collection, provided that you follow the
3262 rules of this License for verbatim copying of each of the
3263 documents in all other respects.
3264
3265 You may extract a single document from such a collection, and
3266 distribute it individually under this License, provided you insert
3267 a copy of this License into the extracted document, and follow
3268 this License in all other respects regarding verbatim copying of
3269 that document.
3270
3271 7. AGGREGATION WITH INDEPENDENT WORKS
3272
3273 A compilation of the Document or its derivatives with other
3274 separate and independent documents or works, in or on a volume of
3275 a storage or distribution medium, is called an "aggregate" if the
3276 copyright resulting from the compilation is not used to limit the
3277 legal rights of the compilation's users beyond what the individual
3278 works permit. When the Document is included in an aggregate, this
3279 License does not apply to the other works in the aggregate which
3280 are not themselves derivative works of the Document.
3281
3282 If the Cover Text requirement of section 3 is applicable to these
3283 copies of the Document, then if the Document is less than one half
3284 of the entire aggregate, the Document's Cover Texts may be placed
3285 on covers that bracket the Document within the aggregate, or the
3286 electronic equivalent of covers if the Document is in electronic
3287 form. Otherwise they must appear on printed covers that bracket
3288 the whole aggregate.
3289
3290 8. TRANSLATION
3291
3292 Translation is considered a kind of modification, so you may
3293 distribute translations of the Document under the terms of section
3294 4. Replacing Invariant Sections with translations requires special
3295 permission from their copyright holders, but you may include
3296 translations of some or all Invariant Sections in addition to the
3297 original versions of these Invariant Sections. You may include a
3298 translation of this License, and all the license notices in the
3299 Document, and any Warranty Disclaimers, provided that you also
3300 include the original English version of this License and the
3301 original versions of those notices and disclaimers. In case of a
3302 disagreement between the translation and the original version of
3303 this License or a notice or disclaimer, the original version will
3304 prevail.
3305
3306 If a section in the Document is Entitled "Acknowledgements",
3307 "Dedications", or "History", the requirement (section 4) to
3308 Preserve its Title (section 1) will typically require changing the
3309 actual title.
3310
3311 9. TERMINATION
3312
3313 You may not copy, modify, sublicense, or distribute the Document
3314 except as expressly provided for under this License. Any other
3315 attempt to copy, modify, sublicense or distribute the Document is
3316 void, and will automatically terminate your rights under this
3317 License. However, parties who have received copies, or rights,
3318 from you under this License will not have their licenses
3319 terminated so long as such parties remain in full compliance.
3320
3321 10. FUTURE REVISIONS OF THIS LICENSE
3322
3323 The Free Software Foundation may publish new, revised versions of
3324 the GNU Free Documentation License from time to time. Such new
3325 versions will be similar in spirit to the present version, but may
3326 differ in detail to address new problems or concerns. See
3327 `http://www.gnu.org/copyleft/'.
3328
3329 Each version of the License is given a distinguishing version
3330 number. If the Document specifies that a particular numbered
3331 version of this License "or any later version" applies to it, you
3332 have the option of following the terms and conditions either of
3333 that specified version or of any later version that has been
3334 published (not as a draft) by the Free Software Foundation. If
3335 the Document does not specify a version number of this License,
3336 you may choose any version ever published (not as a draft) by the
3337 Free Software Foundation.
3338
3339A.1.1 ADDENDUM: How to use this License for your documents
3340----------------------------------------------------------
3341
3342To use this License in a document you have written, include a copy of
3343the License in the document and put the following copyright and license
3344notices just after the title page:
3345
3346 Copyright (C) YEAR YOUR NAME.
3347 Permission is granted to copy, distribute and/or modify this document
3348 under the terms of the GNU Free Documentation License, Version 1.2
3349 or any later version published by the Free Software Foundation;
3350 with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
3351 Texts. A copy of the license is included in the section entitled ``GNU
3352 Free Documentation License''.
3353
3354 If you have Invariant Sections, Front-Cover Texts and Back-Cover
3355Texts, replace the "with...Texts." line with this:
3356
3357 with the Invariant Sections being LIST THEIR TITLES, with
3358 the Front-Cover Texts being LIST, and with the Back-Cover Texts
3359 being LIST.
3360
3361 If you have Invariant Sections without Cover Texts, or some other
3362combination of the three, merge those two alternatives to suit the
3363situation.
3364
3365 If your document contains nontrivial examples of program code, we
3366recommend releasing these examples in parallel under your choice of
3367free software license, such as the GNU General Public License, to
3368permit their use in free software.
3369
3370
3371File: automake.info, Node: Indices, Prev: Copying This Manual, Up: Top
3372
3373Appendix B Indices
3374******************
3375
3376* Menu:
3377
3378* Macro Index:: Index of Autoconf macros
3379* Variable Index:: Index of Makefile variables
3380* General Index:: General index
3381
3382
3383File: automake.info, Node: Macro Index, Next: Variable Index, Up: Indices
3384
3385B.1 Macro Index
3386===============
3387
3388[index]
3389* Menu:
3390
3391* _AM_DEPENDENCIES: Private macros. (line 12)
3392* AC_CANONICAL_BUILD: Optional. (line 11)
3393* AC_CANONICAL_HOST: Optional. (line 12)
3394* AC_CANONICAL_TARGET: Optional. (line 13)
3395* AC_CONFIG_AUX_DIR <1>: Subpackages. (line 6)
3396* AC_CONFIG_AUX_DIR: Optional. (line 19)
3397* AC_CONFIG_FILES: Requirements. (line 15)
3398* AC_CONFIG_HEADERS: Optional. (line 46)
3399* AC_CONFIG_LIBOBJ_DIR <1>: LIBOBJS. (line 48)
3400* AC_CONFIG_LIBOBJ_DIR: Optional. (line 41)
3401* AC_CONFIG_LINKS: Optional. (line 55)
3402* AC_CONFIG_SUBDIRS: Subpackages. (line 6)
3403* AC_DEFUN: Extending aclocal. (line 33)
3404* AC_F77_LIBRARY_LDFLAGS: Optional. (line 98)
3405* AC_INIT: Public macros. (line 25)
3406* AC_LIBOBJ <1>: LIBOBJS. (line 11)
3407* AC_LIBOBJ <2>: LTLIBOBJS. (line 6)
3408* AC_LIBOBJ: Optional. (line 65)
3409* AC_LIBSOURCE <1>: LIBOBJS. (line 17)
3410* AC_LIBSOURCE: Optional. (line 66)
3411* AC_LIBSOURCES: Optional. (line 67)
3412* AC_OUTPUT: Requirements. (line 15)
3413* AC_PREREQ: Extending aclocal. (line 33)
3414* AC_PROG_CC_C_O: Public macros. (line 80)
3415* AC_PROG_CXX: Optional. (line 85)
3416* AC_PROG_F77: Optional. (line 93)
3417* AC_PROG_FC: Optional. (line 104)
3418* AC_PROG_LEX <1>: Public macros. (line 86)
3419* AC_PROG_LEX: Optional. (line 119)
3420* AC_PROG_LIBTOOL: Optional. (line 109)
3421* AC_PROG_OBJC: Optional. (line 89)
3422* AC_PROG_RANLIB: Optional. (line 81)
3423* AC_PROG_YACC: Optional. (line 113)
3424* AC_REQUIRE_AUX_FILE: Optional. (line 123)
3425* AC_SUBST: Optional. (line 131)
3426* AM_C_PROTOTYPES <1>: ANSI. (line 34)
3427* AM_C_PROTOTYPES <2>: Obsolete macros. (line 13)
3428* AM_C_PROTOTYPES: Optional. (line 142)
3429* AM_CONDITIONAL: Conditionals. (line 11)
3430* AM_CONFIG_HEADER: Obsolete macros. (line 20)
3431* AM_DEP_TRACK: Private macros. (line 14)
3432* AM_ENABLE_MULTILIB: Public macros. (line 7)
3433* AM_GNU_GETTEXT: Optional. (line 146)
3434* AM_GNU_GETTEXT_INTL_SUBDIR: Optional. (line 152)
3435* AM_HEADER_TIOCGWINSZ_NEEDS_SYS_IOCTL: Obsolete macros. (line 25)
3436* AM_INIT_AUTOMAKE <1>: Public macros. (line 16)
3437* AM_INIT_AUTOMAKE: Requirements. (line 6)
3438* AM_MAINTAINER_MODE <1>: maintainer-mode. (line 36)
3439* AM_MAINTAINER_MODE <2>: Rebuilding. (line 9)
3440* AM_MAINTAINER_MODE: Optional. (line 157)
3441* AM_MAKE_INCLUDE: Private macros. (line 20)
3442* AM_OUTPUT_DEPENDENCY_COMMANDS: Private macros. (line 15)
3443* AM_PATH_LISPDIR: Public macros. (line 60)
3444* AM_PATH_PYTHON: Python. (line 29)
3445* AM_PROG_AS: Public macros. (line 75)
3446* AM_PROG_CC_C_O: Public macros. (line 80)
3447* AM_PROG_GCJ: Public macros. (line 91)
3448* AM_PROG_INSTALL_STRIP: Private macros. (line 25)
3449* AM_PROG_LEX: Public macros. (line 86)
3450* AM_PROG_MKDIR_P: Obsolete macros. (line 31)
3451* AM_PROG_UPC: Public macros. (line 96)
3452* AM_SANITY_CHECK: Private macros. (line 30)
3453* AM_SET_DEPDIR: Private macros. (line 13)
3454* AM_SYS_POSIX_TERMIOS: Obsolete macros. (line 53)
3455* AM_WITH_DMALLOC: Public macros. (line 102)
3456* AM_WITH_REGEX: Public macros. (line 107)
3457* m4_include <1>: Dist. (line 17)
3458* m4_include: Optional. (line 165)
3459
3460
3461File: automake.info, Node: Variable Index, Next: General Index, Prev: Macro Index, Up: Indices
3462
3463B.2 Variable Index
3464==================
3465
3466[index]
3467* Menu:
3468
3469* _DATA: Data. (line 6)
3470* _HEADERS: Headers. (line 6)
3471* _LIBRARIES: A Library. (line 6)
3472* _LISP: Emacs Lisp. (line 6)
3473* _LTLIBRARIES: Libtool Libraries. (line 6)
3474* _MANS: Man pages. (line 6)
3475* _PROGRAMS <1>: Program Sources. (line 6)
3476* _PROGRAMS: Uniform. (line 11)
3477* _PYTHON: Python. (line 6)
3478* _SCRIPTS: Scripts. (line 6)
3479* _SOURCES <1>: Default _SOURCES. (line 6)
3480* _SOURCES: Program Sources. (line 32)
3481* _TEXINFOS: Texinfo. (line 6)
3482* ACLOCAL_AMFLAGS <1>: Rebuilding. (line 12)
3483* ACLOCAL_AMFLAGS: Local Macros. (line 19)
3484* ALLOCA <1>: LIBOBJS. (line 6)
3485* ALLOCA: LTLIBOBJS. (line 6)
3486* AM_CCASFLAGS: Assembly Support. (line 9)
3487* AM_CFLAGS: Program variables. (line 36)
3488* AM_CPPFLAGS <1>: Assembly Support. (line 9)
3489* AM_CPPFLAGS: Program variables. (line 15)
3490* AM_CXXFLAGS: C++ Support. (line 22)
3491* AM_ETAGSFLAGS: Tags. (line 25)
3492* AM_FCFLAGS: Fortran 9x Support. (line 22)
3493* AM_FFLAGS: Fortran 77 Support. (line 22)
3494* AM_GCJFLAGS: Java Support. (line 24)
3495* AM_INSTALLCHECK_STD_OPTIONS_EXEMPT: Options. (line 120)
3496* AM_JAVACFLAGS: Java. (line 36)
3497* AM_LDFLAGS <1>: Program variables. (line 46)
3498* AM_LDFLAGS: Linking. (line 10)
3499* AM_LFLAGS: Yacc and Lex. (line 56)
3500* AM_LIBTOOLFLAGS: Libtool Flags. (line 6)
3501* AM_MAKEFLAGS: Subdirectories. (line 29)
3502* AM_MAKEINFOFLAGS: Texinfo. (line 101)
3503* AM_MAKEINFOHTMLFLAGS: Texinfo. (line 102)
3504* AM_OBJCFLAGS: Objective C Support. (line 22)
3505* AM_RFLAGS: Fortran 77 Support. (line 28)
3506* AM_RUNTESTFLAGS: Tests. (line 75)
3507* AM_UPCFLAGS: Unified Parallel C Support.
3508 (line 21)
3509* AM_YFLAGS: Yacc and Lex. (line 33)
3510* ANSI2KNR: Obsolete macros. (line 13)
3511* AUTOCONF: Invoking Automake. (line 28)
3512* AUTOM4TE: Invoking aclocal. (line 45)
3513* AUTOMAKE_OPTIONS <1>: Options. (line 11)
3514* AUTOMAKE_OPTIONS <2>: Dependencies. (line 34)
3515* AUTOMAKE_OPTIONS <3>: ANSI. (line 21)
3516* AUTOMAKE_OPTIONS: Public macros. (line 19)
3517* bin_PROGRAMS: Program Sources. (line 6)
3518* bin_SCRIPTS: Scripts. (line 18)
3519* build_triplet: Optional. (line 14)
3520* BUILT_SOURCES: Sources. (line 27)
3521* CC: Program variables. (line 11)
3522* CCAS <1>: Assembly Support. (line 9)
3523* CCAS: Public macros. (line 75)
3524* CCASFLAGS <1>: Assembly Support. (line 9)
3525* CCASFLAGS: Public macros. (line 75)
3526* CFLAGS: Program variables. (line 11)
3527* check_: Uniform. (line 74)
3528* check_LTLIBRARIES: Libtool Convenience Libraries.
3529 (line 6)
3530* check_PROGRAMS <1>: Default _SOURCES. (line 29)
3531* check_PROGRAMS: Program Sources. (line 6)
3532* check_SCRIPTS: Scripts. (line 18)
3533* CLASSPATH_ENV: Java. (line 45)
3534* CLEANFILES: Clean. (line 13)
3535* COMPILE: Program variables. (line 42)
3536* CONFIG_STATUS_DEPENDENCIES: Rebuilding. (line 19)
3537* CONFIGURE_DEPENDENCIES: Rebuilding. (line 19)
3538* CPPFLAGS <1>: Assembly Support. (line 9)
3539* CPPFLAGS: Program variables. (line 11)
3540* CXX: C++ Support. (line 16)
3541* CXXCOMPILE: C++ Support. (line 25)
3542* CXXFLAGS: C++ Support. (line 19)
3543* CXXLINK <1>: How the Linker is Chosen.
3544 (line 12)
3545* CXXLINK: C++ Support. (line 29)
3546* DATA <1>: Data. (line 7)
3547* DATA: Uniform. (line 79)
3548* data_DATA: Data. (line 9)
3549* DEFS: Program variables. (line 11)
3550* DEJATOOL: Tests. (line 70)
3551* DESTDIR <1>: Install. (line 79)
3552* DESTDIR: DESTDIR. (line 6)
3553* dist_ <1>: Dist. (line 53)
3554* dist_: Alternative. (line 30)
3555* dist_lisp_LISP: Emacs Lisp. (line 11)
3556* dist_noinst_LISP: Emacs Lisp. (line 11)
3557* DIST_SUBDIRS <1>: Dist. (line 41)
3558* DIST_SUBDIRS: Conditional Subdirectories.
3559 (line 84)
3560* DISTCHECK_CONFIGURE_FLAGS: Dist. (line 117)
3561* distcleancheck_listfiles <1>: distcleancheck. (line 115)
3562* distcleancheck_listfiles: Dist. (line 111)
3563* DISTCLEANFILES <1>: Dist. (line 133)
3564* DISTCLEANFILES: Clean. (line 13)
3565* distdir <1>: Third-Party Makefiles.
3566 (line 25)
3567* distdir: Dist. (line 89)
3568* distuninstallcheck_listfiles: Dist. (line 111)
3569* DVIPS: Texinfo. (line 127)
3570* EMACS: Public macros. (line 60)
3571* ETAGS_ARGS: Tags. (line 25)
3572* ETAGSFLAGS: Tags. (line 25)
3573* EXPECT: Tests. (line 70)
3574* EXTRA_DIST: Dist. (line 30)
3575* EXTRA_maude_SOURCES: Program and Library Variables.
3576 (line 53)
3577* EXTRA_PROGRAMS: Conditional Programs.
3578 (line 15)
3579* F77: Fortran 77 Support. (line 16)
3580* F77COMPILE: Fortran 77 Support. (line 31)
3581* F77LINK: How the Linker is Chosen.
3582 (line 14)
3583* FC: Fortran 9x Support. (line 16)
3584* FCCOMPILE: Fortran 9x Support. (line 25)
3585* FCFLAGS: Fortran 9x Support. (line 19)
3586* FCLINK <1>: Fortran 9x Support. (line 29)
3587* FCLINK: How the Linker is Chosen.
3588 (line 16)
3589* FFLAGS: Fortran 77 Support. (line 19)
3590* FLIBS: Mixing Fortran 77 With C and C++.
3591 (line 21)
3592* FLINK: Fortran 77 Support. (line 35)
3593* GCJ: Public macros. (line 91)
3594* GCJFLAGS <1>: Java Support. (line 14)
3595* GCJFLAGS: Public macros. (line 91)
3596* GCJLINK: How the Linker is Chosen.
3597 (line 10)
3598* GTAGS_ARGS: Tags. (line 49)
3599* GZIP_ENV: Dist. (line 13)
3600* HEADERS: Uniform. (line 79)
3601* host_triplet: Optional. (line 14)
3602* include_HEADERS: Headers. (line 6)
3603* INCLUDES: Program variables. (line 30)
3604* info_TEXINFOS: Texinfo. (line 6)
3605* JAVA: Uniform. (line 79)
3606* JAVAC: Java. (line 29)
3607* JAVACFLAGS: Java. (line 32)
3608* JAVAROOT: Java. (line 41)
3609* LDADD: Linking. (line 10)
3610* LDFLAGS: Program variables. (line 11)
3611* LFLAGS: Yacc and Lex. (line 56)
3612* lib_LIBRARIES: A Library. (line 6)
3613* lib_LTLIBRARIES: Libtool Libraries. (line 6)
3614* libexec_PROGRAMS: Program Sources. (line 6)
3615* libexec_SCRIPTS: Scripts. (line 18)
3616* LIBOBJS <1>: LIBOBJS. (line 6)
3617* LIBOBJS <2>: LTLIBOBJS. (line 6)
3618* LIBOBJS: Optional. (line 68)
3619* LIBRARIES: Uniform. (line 79)
3620* LIBS: Program variables. (line 11)
3621* LIBTOOLFLAGS: Libtool Flags. (line 6)
3622* LINK <1>: How the Linker is Chosen.
3623 (line 22)
3624* LINK: Program variables. (line 51)
3625* LISP: Uniform. (line 79)
3626* lisp_LISP: Emacs Lisp. (line 6)
3627* lispdir: Public macros. (line 60)
3628* localstate_DATA: Data. (line 9)
3629* LTALLOCA <1>: LIBOBJS. (line 6)
3630* LTALLOCA: LTLIBOBJS. (line 6)
3631* LTLIBOBJS <1>: LIBOBJS. (line 6)
3632* LTLIBOBJS: LTLIBOBJS. (line 6)
3633* MAINTAINERCLEANFILES: Clean. (line 13)
3634* MAKE: Subdirectories. (line 29)
3635* MAKEINFO: Texinfo. (line 85)
3636* MAKEINFOFLAGS: Texinfo. (line 95)
3637* MAKEINFOHTML: Texinfo. (line 91)
3638* man_MANS: Man pages. (line 6)
3639* MANS: Uniform. (line 79)
3640* maude_AR: Program and Library Variables.
3641 (line 68)
3642* maude_CCASFLAGS: Program and Library Variables.
3643 (line 160)
3644* maude_CFLAGS: Program and Library Variables.
3645 (line 161)
3646* maude_CPPFLAGS: Program and Library Variables.
3647 (line 162)
3648* maude_CXXFLAGS: Program and Library Variables.
3649 (line 163)
3650* maude_DEPENDENCIES <1>: Program and Library Variables.
3651 (line 118)
3652* maude_DEPENDENCIES: Linking. (line 41)
3653* maude_FFLAGS: Program and Library Variables.
3654 (line 164)
3655* maude_GCJFLAGS: Program and Library Variables.
3656 (line 165)
3657* maude_LDADD <1>: Program and Library Variables.
3658 (line 86)
3659* maude_LDADD: Linking. (line 17)
3660* maude_LDFLAGS <1>: Program and Library Variables.
3661 (line 106)
3662* maude_LDFLAGS: Linking. (line 37)
3663* maude_LFLAGS: Program and Library Variables.
3664 (line 166)
3665* maude_LIBADD <1>: Program and Library Variables.
3666 (line 78)
3667* maude_LIBADD: A Library. (line 26)
3668* maude_LIBTOOLFLAGS <1>: Program and Library Variables.
3669 (line 111)
3670* maude_LIBTOOLFLAGS: Libtool Flags. (line 6)
3671* maude_LINK: Program and Library Variables.
3672 (line 149)
3673* maude_OBJCFLAGS: Program and Library Variables.
3674 (line 167)
3675* maude_RFLAGS: Program and Library Variables.
3676 (line 168)
3677* maude_SHORTNAME: Program and Library Variables.
3678 (line 201)
3679* maude_SOURCES: Program and Library Variables.
3680 (line 18)
3681* maude_UPCFLAGS: Program and Library Variables.
3682 (line 169)
3683* maude_YFLAGS: Program and Library Variables.
3684 (line 170)
3685* mkdir_p: Obsolete macros. (line 31)
3686* MKDIR_P: Obsolete macros. (line 31)
3687* MOSTLYCLEANFILES: Clean. (line 13)
3688* nobase_: Alternative. (line 24)
3689* nodist_ <1>: Dist. (line 53)
3690* nodist_: Alternative. (line 30)
3691* noinst_: Uniform. (line 69)
3692* noinst_HEADERS: Headers. (line 6)
3693* noinst_LIBRARIES: A Library. (line 6)
3694* noinst_LISP: Emacs Lisp. (line 6)
3695* noinst_LTLIBRARIES: Libtool Convenience Libraries.
3696 (line 6)
3697* noinst_PROGRAMS: Program Sources. (line 6)
3698* noinst_SCRIPTS: Scripts. (line 18)
3699* OBJC: Objective C Support. (line 16)
3700* OBJCCOMPILE: Objective C Support. (line 25)
3701* OBJCFLAGS: Objective C Support. (line 19)
3702* OBJCLINK <1>: How the Linker is Chosen.
3703 (line 18)
3704* OBJCLINK: Objective C Support. (line 29)
3705* oldinclude_HEADERS: Headers. (line 6)
3706* PACKAGE: Dist. (line 9)
3707* pkgdata_DATA: Data. (line 9)
3708* pkgdata_SCRIPTS: Scripts. (line 18)
3709* pkgdatadir: Uniform. (line 19)
3710* pkginclude_HEADERS: Headers. (line 6)
3711* pkgincludedir: Uniform. (line 19)
3712* pkglib_LIBRARIES: A Library. (line 6)
3713* pkglib_LTLIBRARIES: Libtool Libraries. (line 6)
3714* pkglib_PROGRAMS: Program Sources. (line 6)
3715* pkglibdir: Uniform. (line 19)
3716* pkgpyexecdir: Python. (line 99)
3717* pkgpythondir: Python. (line 85)
3718* PROGRAMS: Uniform. (line 17)
3719* pyexecdir: Python. (line 90)
3720* PYTHON <1>: Python. (line 50)
3721* PYTHON: Uniform. (line 79)
3722* PYTHON_EXEC_PREFIX: Python. (line 71)
3723* PYTHON_PLATFORM: Python. (line 76)
3724* PYTHON_PREFIX: Python. (line 66)
3725* PYTHON_VERSION: Python. (line 62)
3726* pythondir: Python. (line 81)
3727* RFLAGS: Fortran 77 Support. (line 25)
3728* RUNTEST: Tests. (line 70)
3729* RUNTESTDEFAULTFLAGS: Tests. (line 65)
3730* RUNTESTFLAGS: Tests. (line 75)
3731* sbin_PROGRAMS: Program Sources. (line 6)
3732* sbin_SCRIPTS: Scripts. (line 18)
3733* SCRIPTS <1>: Scripts. (line 9)
3734* SCRIPTS: Uniform. (line 79)
3735* sharedstate_DATA: Data. (line 9)
3736* SOURCES <1>: Default _SOURCES. (line 6)
3737* SOURCES: Program Sources. (line 33)
3738* SUBDIRS <1>: Dist. (line 41)
3739* SUBDIRS: Subdirectories. (line 8)
3740* SUFFIXES: Suffixes. (line 6)
3741* sysconf_DATA: Data. (line 9)
3742* TAGS_DEPENDENCIES: Tags. (line 35)
3743* target_triplet: Optional. (line 14)
3744* TESTS: Tests. (line 24)
3745* TESTS_ENVIRONMENT: Tests. (line 24)
3746* TEXI2DVI: Texinfo. (line 118)
3747* TEXI2PDF: Texinfo. (line 123)
3748* TEXINFO_TEX: Texinfo. (line 131)
3749* TEXINFOS <1>: Texinfo. (line 59)
3750* TEXINFOS: Uniform. (line 79)
3751* top_distdir <1>: Third-Party Makefiles.
3752 (line 25)
3753* top_distdir: Dist. (line 89)
3754* U: Obsolete macros. (line 13)
3755* UPC <1>: Unified Parallel C Support.
3756 (line 15)
3757* UPC: Public macros. (line 96)
3758* UPCCOMPILE: Unified Parallel C Support.
3759 (line 24)
3760* UPCFLAGS: Unified Parallel C Support.
3761 (line 18)
3762* UPCLINK <1>: How the Linker is Chosen.
3763 (line 20)
3764* UPCLINK: Unified Parallel C Support.
3765 (line 28)
3766* VERSION: Dist. (line 9)
3767* WARNINGS <1>: aclocal options. (line 85)
3768* WARNINGS: Invoking Automake. (line 164)
3769* WITH_DMALLOC: Public macros. (line 102)
3770* WITH_REGEX: Public macros. (line 107)
3771* XFAIL_TESTS: Tests. (line 36)
3772* YACC: Optional. (line 114)
3773* YFLAGS: Yacc and Lex. (line 33)
3774
3775
3776File: automake.info, Node: General Index, Prev: Variable Index, Up: Indices
3777
3778B.3 General Index
3779=================
3780
3781[index]
3782* Menu:
3783
3784* ## (special Automake comment): General Operation. (line 54)
3785* #serial syntax: Serials. (line 6)
3786* $(LIBOBJS) and empty libraries: LIBOBJS. (line 69)
3787* +=: General Operation. (line 23)
3788* --acdir: aclocal options. (line 9)
3789* --add-missing: Invoking Automake. (line 41)
3790* --build=BUILD: Cross-Compilation. (line 14)
3791* --copy: Invoking Automake. (line 63)
3792* --cygnus: Invoking Automake. (line 67)
3793* --diff: aclocal options. (line 13)
3794* --disable-dependency-tracking: Dependency Tracking. (line 29)
3795* --dry-run: aclocal options. (line 18)
3796* --enable-debug, example: Conditionals. (line 26)
3797* --enable-dependency-tracking: Dependency Tracking. (line 39)
3798* --enable-maintainer-mode: Optional. (line 158)
3799* --force: aclocal options. (line 39)
3800* --force-missing: Invoking Automake. (line 72)
3801* --foreign: Invoking Automake. (line 78)
3802* --gnits: Invoking Automake. (line 82)
3803* --gnits, complete description: Gnits. (line 21)
3804* --gnu: Invoking Automake. (line 86)
3805* --gnu, complete description: Gnits. (line 6)
3806* --gnu, required files: Gnits. (line 6)
3807* --help <1>: aclocal options. (line 22)
3808* --help: Invoking Automake. (line 90)
3809* --help check: Options. (line 115)
3810* --help=recursive: Nested Packages. (line 30)
3811* --host=HOST: Cross-Compilation. (line 17)
3812* --include-deps: Invoking Automake. (line 98)
3813* --install: aclocal options. (line 29)
3814* --libdir: Invoking Automake. (line 58)
3815* --no-force: Invoking Automake. (line 103)
3816* --output: aclocal options. (line 49)
3817* --output-dir: Invoking Automake. (line 110)
3818* --prefix: Standard Directory Variables.
3819 (line 33)
3820* --print-ac-dir: aclocal options. (line 52)
3821* --program-prefix=PREFIX: Renaming. (line 16)
3822* --program-suffix=SUFFIX: Renaming. (line 19)
3823* --program-transform-name=PROGRAM: Renaming. (line 22)
3824* --target=TARGET: Cross-Compilation. (line 56)
3825* --verbose <1>: aclocal options. (line 58)
3826* --verbose: Invoking Automake. (line 117)
3827* --version <1>: aclocal options. (line 61)
3828* --version: Invoking Automake. (line 121)
3829* --version check: Options. (line 115)
3830* --warnings <1>: aclocal options. (line 66)
3831* --warnings: Invoking Automake. (line 126)
3832* --with-dmalloc: Public macros. (line 102)
3833* --with-regex: Public macros. (line 107)
3834* -a: Invoking Automake. (line 41)
3835* -c: Invoking Automake. (line 62)
3836* -f: Invoking Automake. (line 71)
3837* -hook targets: Extending. (line 61)
3838* -I: aclocal options. (line 25)
3839* -i: Invoking Automake. (line 94)
3840* -l and LDADD: Linking. (line 66)
3841* -local targets: Extending. (line 36)
3842* -module, libtool: Libtool Modules. (line 6)
3843* -o: Invoking Automake. (line 110)
3844* -v: Invoking Automake. (line 117)
3845* -W <1>: aclocal options. (line 66)
3846* -W: Invoking Automake. (line 126)
3847* -Wall: amhello Explained. (line 38)
3848* -Werror: amhello Explained. (line 38)
3849* .la suffix, defined: Libtool Concept. (line 6)
3850* _DATA primary, defined: Data. (line 6)
3851* _DEPENDENCIES, defined: Linking. (line 41)
3852* _HEADERS primary, defined: Headers. (line 6)
3853* _JAVA primary, defined: Java. (line 6)
3854* _LDFLAGS, defined: Linking. (line 37)
3855* _LDFLAGS, libtool: Libtool Flags. (line 6)
3856* _LIBADD, libtool: Libtool Flags. (line 6)
3857* _LIBRARIES primary, defined: A Library. (line 6)
3858* _LIBTOOLFLAGS, libtool: Libtool Flags. (line 6)
3859* _LISP primary, defined: Emacs Lisp. (line 6)
3860* _LTLIBRARIES primary, defined: Libtool Libraries. (line 6)
3861* _MANS primary, defined: Man pages. (line 6)
3862* _PROGRAMS primary variable: Uniform. (line 11)
3863* _PYTHON primary, defined: Python. (line 6)
3864* _SCRIPTS primary, defined: Scripts. (line 6)
3865* _SOURCES and header files: Program Sources. (line 39)
3866* _SOURCES primary, defined: Program Sources. (line 32)
3867* _SOURCES, default: Default _SOURCES. (line 6)
3868* _SOURCES, empty: Default _SOURCES. (line 43)
3869* _TEXINFOS primary, defined: Texinfo. (line 6)
3870* AC_SUBST and SUBDIRS: Conditional Subdirectories.
3871 (line 95)
3872* acinclude.m4, defined: Complete. (line 23)
3873* aclocal and serial numbers: Serials. (line 6)
3874* aclocal program, introduction: Complete. (line 23)
3875* aclocal search path: Macro search path. (line 6)
3876* aclocal's scheduled death: Future of aclocal. (line 6)
3877* aclocal, extending: Extending aclocal. (line 6)
3878* aclocal, Invoking: Invoking aclocal. (line 6)
3879* aclocal, Options: aclocal options. (line 6)
3880* aclocal.m4, preexisting: Complete. (line 23)
3881* Adding new SUFFIXES: Suffixes. (line 6)
3882* all <1>: Extending. (line 40)
3883* all: Standard Targets. (line 16)
3884* all-local: Extending. (line 40)
3885* ALLOCA, and Libtool: LTLIBOBJS. (line 6)
3886* ALLOCA, example: LIBOBJS. (line 6)
3887* ALLOCA, special handling: LIBOBJS. (line 6)
3888* AM_CCASFLAGS and CCASFLAGS: Flag Variables Ordering.
3889 (line 20)
3890* AM_CFLAGS and CFLAGS: Flag Variables Ordering.
3891 (line 20)
3892* AM_CONDITIONAL and SUBDIRS: Conditional Subdirectories.
3893 (line 65)
3894* AM_CPPFLAGS and CPPFLAGS: Flag Variables Ordering.
3895 (line 20)
3896* AM_CXXFLAGS and CXXFLAGS: Flag Variables Ordering.
3897 (line 20)
3898* AM_FCFLAGS and FCFLAGS: Flag Variables Ordering.
3899 (line 20)
3900* AM_FFLAGS and FFLAGS: Flag Variables Ordering.
3901 (line 20)
3902* AM_GCJFLAGS and GCJFLAGS: Flag Variables Ordering.
3903 (line 20)
3904* AM_INIT_AUTOMAKE, example use: Complete. (line 11)
3905* AM_LDFLAGS and LDFLAGS: Flag Variables Ordering.
3906 (line 20)
3907* AM_LFLAGS and LFLAGS: Flag Variables Ordering.
3908 (line 20)
3909* AM_LIBTOOLFLAGS and LIBTOOLFLAGS: Flag Variables Ordering.
3910 (line 20)
3911* AM_MAINTAINER_MODE, purpose: maintainer-mode. (line 36)
3912* AM_OBJCFLAGS and OBJCFLAGS: Flag Variables Ordering.
3913 (line 20)
3914* AM_RFLAGS and RFLAGS: Flag Variables Ordering.
3915 (line 20)
3916* AM_UPCFLAGS and UPCFLAGS: Flag Variables Ordering.
3917 (line 20)
3918* AM_YFLAGS and YFLAGS: Flag Variables Ordering.
3919 (line 20)
3920* amhello-1.0.tar.gz, creation: Hello World. (line 6)
3921* amhello-1.0.tar.gz, location: Use Cases. (line 6)
3922* amhello-1.0.tar.gz, use cases: Use Cases. (line 6)
3923* ansi2knr <1>: Options. (line 22)
3924* ansi2knr: ANSI. (line 21)
3925* ansi2knr and LIBOBJS: ANSI. (line 56)
3926* ansi2knr and LTLIBOBJS: ANSI. (line 56)
3927* Append operator: General Operation. (line 23)
3928* autogen.sh and autoreconf: Libtool Issues. (line 9)
3929* autom4te: Invoking aclocal. (line 45)
3930* Automake constraints: Introduction. (line 22)
3931* automake options: Invoking Automake. (line 37)
3932* Automake requirements <1>: Requirements. (line 6)
3933* Automake requirements: Introduction. (line 27)
3934* automake, invoking: Invoking Automake. (line 6)
3935* Automake, recursive operation: General Operation. (line 44)
3936* Automatic dependency tracking: Dependencies. (line 11)
3937* Automatic linker selection: How the Linker is Chosen.
3938 (line 6)
3939* autoreconf and libtoolize: Libtool Issues. (line 9)
3940* autoreconf, example: Creating amhello. (line 59)
3941* autoscan: amhello Explained. (line 90)
3942* Autotools, introduction: GNU Build System. (line 43)
3943* Autotools, purpose: Why Autotools. (line 6)
3944* autoupdate: Obsolete macros. (line 6)
3945* Auxiliary programs: Auxiliary Programs. (line 6)
3946* Avoiding path stripping: Alternative. (line 24)
3947* Binary package: DESTDIR. (line 22)
3948* bootstrap.sh and autoreconf: Libtool Issues. (line 9)
3949* Bugs, reporting: Introduction. (line 31)
3950* build tree and source tree: VPATH Builds. (line 6)
3951* BUILT_SOURCES, defined: Sources. (line 27)
3952* C++ support: C++ Support. (line 6)
3953* canonicalizing Automake variables: Canonicalization. (line 6)
3954* CCASFLAGS and AM_CCASFLAGS: Flag Variables Ordering.
3955 (line 20)
3956* CFLAGS and AM_CFLAGS: Flag Variables Ordering.
3957 (line 20)
3958* cfortran: Mixing Fortran 77 With C and C++.
3959 (line 6)
3960* check <1>: Extending. (line 40)
3961* check <2>: Tests. (line 6)
3962* check: Standard Targets. (line 37)
3963* check-local: Extending. (line 40)
3964* check-news: Options. (line 29)
3965* check_ primary prefix, definition: Uniform. (line 74)
3966* check_PROGRAMS example: Default _SOURCES. (line 29)
3967* clean <1>: Extending. (line 40)
3968* clean: Standard Targets. (line 31)
3969* clean-local <1>: Extending. (line 40)
3970* clean-local: Clean. (line 15)
3971* Comment, special to Automake: General Operation. (line 54)
3972* Compile Flag Variables: Flag Variables Ordering.
3973 (line 20)
3974* Complete example: Complete. (line 6)
3975* Conditional example, --enable-debug: Conditionals. (line 26)
3976* conditional libtool libraries: Conditional Libtool Libraries.
3977 (line 6)
3978* Conditional programs: Conditional Programs.
3979 (line 6)
3980* Conditional subdirectories: Conditional Subdirectories.
3981 (line 6)
3982* Conditional SUBDIRS: Conditional Subdirectories.
3983 (line 6)
3984* Conditionals: Conditionals. (line 6)
3985* config.guess: Invoking Automake. (line 39)
3986* config.site example: config.site. (line 6)
3987* configuration variables, overriding: Standard Configuration Variables.
3988 (line 6)
3989* Configuration, basics: Basic Installation. (line 6)
3990* configure.ac, scanning: configure. (line 6)
3991* conflicting definitions: Extending. (line 14)
3992* Constraints of Automake: Introduction. (line 22)
3993* convenience libraries, libtool: Libtool Convenience Libraries.
3994 (line 6)
3995* copying semantics: Extending. (line 10)
3996* cpio example: Uniform. (line 36)
3997* CPPFLAGS and AM_CPPFLAGS: Flag Variables Ordering.
3998 (line 20)
3999* cross-compilation: Cross-Compilation. (line 6)
4000* cross-compilation example: Cross-Compilation. (line 26)
4001* CVS and generated files: CVS. (line 49)
4002* CVS and third-party files: CVS. (line 140)
4003* CVS and timestamps: CVS. (line 28)
4004* cvs-dist: General Operation. (line 12)
4005* cvs-dist, non-standard example: General Operation. (line 12)
4006* CXXFLAGS and AM_CXXFLAGS: Flag Variables Ordering.
4007 (line 20)
4008* cygnus: Options. (line 17)
4009* cygnus strictness: Cygnus. (line 6)
4010* DATA primary, defined: Data. (line 6)
4011* de-ANSI-fication, defined: ANSI. (line 6)
4012* debug build, example: VPATH Builds. (line 47)
4013* default _SOURCES: Default _SOURCES. (line 6)
4014* default source, Libtool modules example: Default _SOURCES. (line 37)
4015* definitions, conflicts: Extending. (line 14)
4016* dejagnu <1>: Options. (line 33)
4017* dejagnu: Tests. (line 70)
4018* depcomp: Dependencies. (line 22)
4019* dependencies and distributed files: distcleancheck. (line 6)
4020* Dependency tracking <1>: Dependencies. (line 11)
4021* Dependency tracking: Dependency Tracking. (line 6)
4022* Dependency tracking, disabling: Dependencies. (line 37)
4023* directory variables: Standard Directory Variables.
4024 (line 6)
4025* dirlist: Macro search path. (line 62)
4026* Disabling dependency tracking: Dependencies. (line 37)
4027* dist <1>: Dist. (line 9)
4028* dist: Standard Targets. (line 43)
4029* dist-bzip2 <1>: Options. (line 36)
4030* dist-bzip2: Dist. (line 192)
4031* dist-gzip: Dist. (line 195)
4032* dist-hook <1>: Extending. (line 64)
4033* dist-hook: Dist. (line 71)
4034* dist-shar <1>: Options. (line 39)
4035* dist-shar: Dist. (line 198)
4036* dist-tarZ <1>: Options. (line 45)
4037* dist-tarZ: Dist. (line 204)
4038* dist-zip <1>: Options. (line 42)
4039* dist-zip: Dist. (line 201)
4040* dist_ and nobase_: Alternative. (line 30)
4041* DIST_SUBDIRS, explained: Conditional Subdirectories.
4042 (line 34)
4043* distcheck <1>: Dist. (line 111)
4044* distcheck: Creating amhello. (line 99)
4045* distcheck better than dist: Preparing Distributions.
4046 (line 10)
4047* distcheck example: Creating amhello. (line 99)
4048* distcheck-hook: Dist. (line 122)
4049* distclean <1>: distcleancheck. (line 6)
4050* distclean <2>: Extending. (line 40)
4051* distclean: Standard Targets. (line 34)
4052* distclean, diagnostic: distcleancheck. (line 6)
4053* distclean-local <1>: Extending. (line 40)
4054* distclean-local: Clean. (line 15)
4055* distcleancheck <1>: distcleancheck. (line 6)
4056* distcleancheck: Dist. (line 133)
4057* distdir: Third-Party Makefiles.
4058 (line 25)
4059* Distributions, preparation: Preparing Distributions.
4060 (line 6)
4061* dmalloc, support for: Public macros. (line 102)
4062* dvi <1>: Extending. (line 40)
4063* dvi: Texinfo. (line 19)
4064* DVI output using Texinfo: Texinfo. (line 6)
4065* dvi-local: Extending. (line 40)
4066* E-mail, bug reports: Introduction. (line 31)
4067* EDITION Texinfo flag: Texinfo. (line 29)
4068* else: Conditionals. (line 41)
4069* empty _SOURCES: Default _SOURCES. (line 43)
4070* Empty libraries: A Library. (line 46)
4071* Empty libraries and $(LIBOBJS): LIBOBJS. (line 69)
4072* endif: Conditionals. (line 41)
4073* Example conditional --enable-debug: Conditionals. (line 26)
4074* Example Hello World: Hello World. (line 6)
4075* Example of recursive operation: General Operation. (line 44)
4076* Example of shared libraries: Libtool Libraries. (line 6)
4077* Example, EXTRA_PROGRAMS: Uniform. (line 36)
4078* Example, false and true: true. (line 6)
4079* Example, mixed language: Mixing Fortran 77 With C and C++.
4080 (line 36)
4081* Executable extension: EXEEXT. (line 6)
4082* Exit status 77, special interpretation: Tests. (line 19)
4083* Expected test failure: Tests. (line 34)
4084* Extending aclocal: Extending aclocal. (line 6)
4085* Extending list of installation directories: Uniform. (line 55)
4086* Extension, executable: EXEEXT. (line 6)
4087* Extra files distributed with Automake: Invoking Automake. (line 39)
4088* EXTRA_, prepending: Uniform. (line 29)
4089* EXTRA_prog_SOURCES, defined: Conditional Sources. (line 18)
4090* EXTRA_PROGRAMS, defined <1>: Conditional Programs.
4091 (line 15)
4092* EXTRA_PROGRAMS, defined: Uniform. (line 36)
4093* false Example: true. (line 6)
4094* FCFLAGS and AM_FCFLAGS: Flag Variables Ordering.
4095 (line 20)
4096* FDL, GNU Free Documentation License: GNU Free Documentation License.
4097 (line 6)
4098* Features of the GNU Build System: Use Cases. (line 6)
4099* FFLAGS and AM_FFLAGS: Flag Variables Ordering.
4100 (line 20)
4101* file names, limitations on: limitations on file names.
4102 (line 6)
4103* filename-length-max=99: Options. (line 48)
4104* Files distributed with Automake: Invoking Automake. (line 39)
4105* First line of Makefile.am: General Operation. (line 60)
4106* Flag Variables, Ordering: Flag Variables Ordering.
4107 (line 20)
4108* Flag variables, ordering: Flag Variables Ordering.
4109 (line 6)
4110* FLIBS, defined: Mixing Fortran 77 With C and C++.
4111 (line 21)
4112* foreign <1>: Options. (line 17)
4113* foreign: amhello Explained. (line 38)
4114* foreign strictness: Strictness. (line 10)
4115* Fortran 77 support: Fortran 77 Support. (line 6)
4116* Fortran 77, mixing with C and C++: Mixing Fortran 77 With C and C++.
4117 (line 6)
4118* Fortran 77, Preprocessing: Preprocessing Fortran 77.
4119 (line 6)
4120* Fortran 9x support: Fortran 9x Support. (line 6)
4121* GCJFLAGS and AM_GCJFLAGS: Flag Variables Ordering.
4122 (line 20)
4123* generated files and CVS: CVS. (line 49)
4124* generated files, distributed: CVS. (line 9)
4125* Gettext support: gettext. (line 6)
4126* gnits: Options. (line 17)
4127* gnits strictness: Strictness. (line 10)
4128* gnu: Options. (line 17)
4129* GNU Build System, basics: Basic Installation. (line 6)
4130* GNU Build System, features: Use Cases. (line 6)
4131* GNU Build System, introduction: GNU Build System. (line 6)
4132* GNU Build System, use cases: Use Cases. (line 6)
4133* GNU Coding Standards: GNU Build System. (line 29)
4134* GNU Gettext support: gettext. (line 6)
4135* GNU make extensions: General Operation. (line 19)
4136* GNU Makefile standards: Introduction. (line 12)
4137* gnu strictness: Strictness. (line 10)
4138* GNUmakefile including Makefile: Third-Party Makefiles.
4139 (line 112)
4140* Header files in _SOURCES: Program Sources. (line 39)
4141* HEADERS primary, defined: Headers. (line 6)
4142* HEADERS, installation directories: Headers. (line 6)
4143* Hello World example: Hello World. (line 6)
4144* hook targets: Extending. (line 61)
4145* HP-UX 10, lex problems: Public macros. (line 86)
4146* html <1>: Extending. (line 40)
4147* html: Texinfo. (line 19)
4148* HTML output using Texinfo: Texinfo. (line 6)
4149* html-local: Extending. (line 40)
4150* id: Tags. (line 44)
4151* if: Conditionals. (line 41)
4152* include <1>: Include. (line 6)
4153* include: Dist. (line 17)
4154* include, distribution: Dist. (line 17)
4155* Including Makefile fragment: Include. (line 6)
4156* info <1>: Extending. (line 40)
4157* info: Options. (line 89)
4158* info-local: Extending. (line 40)
4159* install <1>: Extending. (line 40)
4160* install <2>: Install. (line 45)
4161* install: Standard Targets. (line 19)
4162* Install hook: Install. (line 74)
4163* Install, two parts of: Install. (line 45)
4164* install-data <1>: Extending. (line 40)
4165* install-data <2>: Install. (line 45)
4166* install-data: Two-Part Install. (line 16)
4167* install-data-hook: Extending. (line 64)
4168* install-data-local <1>: Extending. (line 40)
4169* install-data-local: Install. (line 68)
4170* install-dvi <1>: Extending. (line 40)
4171* install-dvi: Texinfo. (line 19)
4172* install-dvi-local: Extending. (line 40)
4173* install-exec <1>: Extending. (line 40)
4174* install-exec <2>: Install. (line 45)
4175* install-exec: Two-Part Install. (line 16)
4176* install-exec-hook: Extending. (line 64)
4177* install-exec-local <1>: Extending. (line 40)
4178* install-exec-local: Install. (line 68)
4179* install-html <1>: Extending. (line 40)
4180* install-html: Texinfo. (line 19)
4181* install-html-local: Extending. (line 40)
4182* install-info <1>: Extending. (line 40)
4183* install-info <2>: Options. (line 89)
4184* install-info: Texinfo. (line 76)
4185* install-info target: Texinfo. (line 76)
4186* install-info-local: Extending. (line 40)
4187* install-man <1>: Options. (line 95)
4188* install-man: Man pages. (line 32)
4189* install-man target: Man pages. (line 32)
4190* install-pdf <1>: Extending. (line 40)
4191* install-pdf: Texinfo. (line 19)
4192* install-pdf-local: Extending. (line 40)
4193* install-ps <1>: Extending. (line 40)
4194* install-ps: Texinfo. (line 19)
4195* install-ps-local: Extending. (line 40)
4196* install-strip <1>: Install. (line 110)
4197* install-strip: Standard Targets. (line 23)
4198* Installation directories, extending list: Uniform. (line 55)
4199* Installation support: Install. (line 6)
4200* Installation, basics: Basic Installation. (line 6)
4201* installcheck <1>: Extending. (line 40)
4202* installcheck: Standard Targets. (line 40)
4203* installcheck-local: Extending. (line 40)
4204* installdirs <1>: Extending. (line 40)
4205* installdirs: Install. (line 110)
4206* installdirs-local: Extending. (line 40)
4207* Installing headers: Headers. (line 6)
4208* Installing scripts: Scripts. (line 6)
4209* installing versioned binaries: Extending. (line 80)
4210* Interfacing with third-party packages: Third-Party Makefiles.
4211 (line 6)
4212* Invoking aclocal: Invoking aclocal. (line 6)
4213* Invoking automake: Invoking Automake. (line 6)
4214* JAVA primary, defined: Java. (line 6)
4215* JAVA restrictions: Java. (line 19)
4216* Java support: Java Support. (line 6)
4217* LDADD and -l: Linking. (line 66)
4218* LDFLAGS and AM_LDFLAGS: Flag Variables Ordering.
4219 (line 20)
4220* lex problems with HP-UX 10: Public macros. (line 86)
4221* lex, multiple lexers: Yacc and Lex. (line 64)
4222* LFLAGS and AM_LFLAGS: Flag Variables Ordering.
4223 (line 20)
4224* libltdl, introduction: Libtool Concept. (line 30)
4225* LIBOBJS and ansi2knr: ANSI. (line 56)
4226* LIBOBJS, and Libtool: LTLIBOBJS. (line 6)
4227* LIBOBJS, example: LIBOBJS. (line 6)
4228* LIBOBJS, special handling: LIBOBJS. (line 6)
4229* LIBRARIES primary, defined: A Library. (line 6)
4230* libtool convenience libraries: Libtool Convenience Libraries.
4231 (line 6)
4232* libtool libraries, conditional: Conditional Libtool Libraries.
4233 (line 6)
4234* libtool library, definition: Libtool Concept. (line 6)
4235* libtool modules: Libtool Modules. (line 6)
4236* Libtool modules, default source example: Default _SOURCES. (line 37)
4237* libtool, introduction: Libtool Concept. (line 6)
4238* LIBTOOLFLAGS and AM_LIBTOOLFLAGS: Flag Variables Ordering.
4239 (line 20)
4240* libtoolize and autoreconf: Libtool Issues. (line 9)
4241* libtoolize, no longer run by automake: Libtool Issues. (line 9)
4242* Linking Fortran 77 with C and C++: Mixing Fortran 77 With C and C++.
4243 (line 6)
4244* LISP primary, defined: Emacs Lisp. (line 6)
4245* LN_S example: Extending. (line 80)
4246* local targets: Extending. (line 36)
4247* LTALLOCA, special handling: LTLIBOBJS. (line 6)
4248* LTLIBOBJS and ansi2knr: ANSI. (line 56)
4249* LTLIBOBJS, special handling: LTLIBOBJS. (line 6)
4250* LTLIBRARIES primary, defined: Libtool Libraries. (line 6)
4251* ltmain.sh not found: Libtool Issues. (line 9)
4252* m4_include, distribution: Dist. (line 17)
4253* Macro search path: Macro search path. (line 6)
4254* macro serial numbers: Serials. (line 6)
4255* Macros Automake recognizes: Optional. (line 6)
4256* maintainer-clean-local: Clean. (line 15)
4257* make check: Tests. (line 6)
4258* make clean support: Clean. (line 6)
4259* make dist: Dist. (line 9)
4260* make distcheck: Dist. (line 111)
4261* make distclean, diagnostic: distcleancheck. (line 6)
4262* make distcleancheck: Dist. (line 111)
4263* make distuninstallcheck: Dist. (line 111)
4264* make install support: Install. (line 6)
4265* make installcheck, testing --help and --version: Options. (line 115)
4266* Make rules, overriding: General Operation. (line 32)
4267* Make targets, overriding: General Operation. (line 32)
4268* Makefile fragment, including: Include. (line 6)
4269* Makefile.am, first line: General Operation. (line 60)
4270* Makefile.am, Hello World: amhello Explained. (line 96)
4271* MANS primary, defined: Man pages. (line 6)
4272* many outputs, rules with: Multiple Outputs. (line 6)
4273* mdate-sh: Texinfo. (line 29)
4274* MinGW cross-compilation example: Cross-Compilation. (line 26)
4275* missing, purpose: maintainer-mode. (line 9)
4276* Mixed language example: Mixing Fortran 77 With C and C++.
4277 (line 36)
4278* Mixing Fortran 77 with C and C++: Mixing Fortran 77 With C and C++.
4279 (line 6)
4280* Mixing Fortran 77 with C and/or C++: Mixing Fortran 77 With C and C++.
4281 (line 6)
4282* mkdir -p, macro check: Obsolete macros. (line 31)
4283* modules, libtool: Libtool Modules. (line 6)
4284* mostlyclean: Extending. (line 40)
4285* mostlyclean-local <1>: Extending. (line 40)
4286* mostlyclean-local: Clean. (line 15)
4287* multiple configurations, example: VPATH Builds. (line 47)
4288* Multiple configure.ac files: Invoking Automake. (line 6)
4289* Multiple lex lexers: Yacc and Lex. (line 64)
4290* multiple outputs, rules with: Multiple Outputs. (line 6)
4291* Multiple yacc parsers: Yacc and Lex. (line 64)
4292* Nested packages: Nested Packages. (line 6)
4293* Nesting packages: Subpackages. (line 6)
4294* no-define <1>: Options. (line 57)
4295* no-define: Public macros. (line 54)
4296* no-dependencies <1>: Options. (line 62)
4297* no-dependencies: Dependencies. (line 34)
4298* no-dist: Options. (line 69)
4299* no-dist-gzip: Options. (line 73)
4300* no-exeext: Options. (line 76)
4301* no-installinfo <1>: Options. (line 86)
4302* no-installinfo: Texinfo. (line 76)
4303* no-installinfo option: Texinfo. (line 76)
4304* no-installman <1>: Options. (line 92)
4305* no-installman: Man pages. (line 32)
4306* no-installman option: Man pages. (line 32)
4307* no-texinfo.tex <1>: Options. (line 102)
4308* no-texinfo.tex: Texinfo. (line 71)
4309* nobase_ and dist_ or nodist_: Alternative. (line 30)
4310* nobase_ prefix: Alternative. (line 24)
4311* nodist_ and nobase_: Alternative. (line 30)
4312* noinst_ primary prefix, definition: Uniform. (line 69)
4313* Non-GNU packages: Strictness. (line 6)
4314* Non-standard targets: General Operation. (line 12)
4315* nostdinc: Options. (line 98)
4316* OBJCFLAGS and AM_OBJCFLAGS: Flag Variables Ordering.
4317 (line 20)
4318* Objective C support: Objective C Support. (line 6)
4319* Objects in subdirectory: Program and Library Variables.
4320 (line 51)
4321* obsolete macros: Obsolete macros. (line 6)
4322* optimized build, example: VPATH Builds. (line 47)
4323* Option, --warnings=CATEGORY: Options. (line 197)
4324* Option, -WCATEGORY: Options. (line 197)
4325* Option, ansi2knr: Options. (line 22)
4326* Option, check-news: Options. (line 29)
4327* Option, cygnus: Options. (line 17)
4328* Option, dejagnu: Options. (line 33)
4329* Option, dist-bzip2: Options. (line 36)
4330* Option, dist-shar: Options. (line 39)
4331* Option, dist-tarZ: Options. (line 45)
4332* Option, dist-zip: Options. (line 42)
4333* Option, filename-length-max=99: Options. (line 48)
4334* Option, foreign: Options. (line 17)
4335* Option, gnits: Options. (line 17)
4336* Option, gnu: Options. (line 17)
4337* Option, no-define: Options. (line 57)
4338* Option, no-dependencies: Options. (line 62)
4339* Option, no-dist: Options. (line 69)
4340* Option, no-dist-gzip: Options. (line 73)
4341* Option, no-exeext: Options. (line 76)
4342* Option, no-installinfo <1>: Options. (line 86)
4343* Option, no-installinfo: Texinfo. (line 76)
4344* Option, no-installman <1>: Options. (line 92)
4345* Option, no-installman: Man pages. (line 32)
4346* Option, no-texinfo.tex: Options. (line 102)
4347* Option, nostdinc: Options. (line 98)
4348* Option, readme-alpha: Options. (line 106)
4349* Option, tar-pax: Options. (line 147)
4350* Option, tar-ustar: Options. (line 147)
4351* Option, tar-v7: Options. (line 147)
4352* Option, VERSION: Options. (line 192)
4353* Option, warnings: Options. (line 197)
4354* Options, aclocal: aclocal options. (line 6)
4355* Options, automake: Invoking Automake. (line 37)
4356* Options, std-options: Options. (line 115)
4357* Options, subdir-objects: Options. (line 135)
4358* Ordering flag variables: Flag Variables Ordering.
4359 (line 6)
4360* Overriding make rules: General Operation. (line 32)
4361* Overriding make targets: General Operation. (line 32)
4362* Overriding make variables: General Operation. (line 37)
4363* overriding rules: Extending. (line 25)
4364* overriding semantics: Extending. (line 25)
4365* PACKAGE, directory: Uniform. (line 19)
4366* PACKAGE, prevent definition: Public macros. (line 54)
4367* Packages, nested: Nested Packages. (line 6)
4368* Packages, preparation: Preparing Distributions.
4369 (line 6)
4370* Parallel build trees: VPATH Builds. (line 6)
4371* Path stripping, avoiding: Alternative. (line 24)
4372* pax format: Options. (line 147)
4373* pdf <1>: Extending. (line 40)
4374* pdf: Texinfo. (line 19)
4375* PDF output using Texinfo: Texinfo. (line 6)
4376* pdf-local: Extending. (line 40)
4377* Per-object flags, emulated: Per-Object Flags. (line 6)
4378* per-target compilation flags, defined: Program and Library Variables.
4379 (line 171)
4380* pkgdatadir, defined: Uniform. (line 19)
4381* pkgincludedir, defined: Uniform. (line 19)
4382* pkglibdir, defined: Uniform. (line 19)
4383* POSIX termios headers: Obsolete macros. (line 53)
4384* Preparing distributions: Preparing Distributions.
4385 (line 6)
4386* Preprocessing Fortran 77: Preprocessing Fortran 77.
4387 (line 6)
4388* Primary variable, DATA: Data. (line 6)
4389* Primary variable, defined: Uniform. (line 11)
4390* Primary variable, HEADERS: Headers. (line 6)
4391* Primary variable, JAVA: Java. (line 6)
4392* Primary variable, LIBRARIES: A Library. (line 6)
4393* Primary variable, LISP: Emacs Lisp. (line 6)
4394* Primary variable, LTLIBRARIES: Libtool Libraries. (line 6)
4395* Primary variable, MANS: Man pages. (line 6)
4396* Primary variable, PROGRAMS: Uniform. (line 11)
4397* Primary variable, PYTHON: Python. (line 6)
4398* Primary variable, SCRIPTS: Scripts. (line 6)
4399* Primary variable, SOURCES: Program Sources. (line 32)
4400* Primary variable, TEXINFOS: Texinfo. (line 6)
4401* prog_LDADD, defined: Linking. (line 12)
4402* PROGRAMS primary variable: Uniform. (line 11)
4403* Programs, auxiliary: Auxiliary Programs. (line 6)
4404* PROGRAMS, bindir: Program Sources. (line 6)
4405* Programs, conditional: Conditional Programs.
4406 (line 6)
4407* Programs, renaming during installation: Renaming. (line 6)
4408* Proxy Makefile for third-party packages: Third-Party Makefiles.
4409 (line 129)
4410* ps <1>: Extending. (line 40)
4411* ps: Texinfo. (line 19)
4412* PS output using Texinfo: Texinfo. (line 6)
4413* ps-local: Extending. (line 40)
4414* PYTHON primary, defined: Python. (line 6)
4415* Ratfor programs: Preprocessing Fortran 77.
4416 (line 6)
4417* read-only source tree: VPATH Builds. (line 90)
4418* README-alpha: Gnits. (line 34)
4419* readme-alpha: Options. (line 106)
4420* rebuild rules <1>: CVS. (line 9)
4421* rebuild rules: Rebuilding. (line 6)
4422* Recognized macros by Automake: Optional. (line 6)
4423* Recursive operation of Automake: General Operation. (line 44)
4424* recursive targets and third-party Makefiles: Third-Party Makefiles.
4425 (line 15)
4426* regex package: Public macros. (line 107)
4427* Renaming programs: Renaming. (line 6)
4428* Reporting bugs: Introduction. (line 31)
4429* Requirements of Automake: Requirements. (line 6)
4430* Requirements, Automake: Introduction. (line 27)
4431* Restrictions for JAVA: Java. (line 19)
4432* RFLAGS and AM_RFLAGS: Flag Variables Ordering.
4433 (line 20)
4434* rules with multiple outputs: Multiple Outputs. (line 6)
4435* rules, conflicting: Extending. (line 14)
4436* rules, overriding: Extending. (line 25)
4437* rx package: Public macros. (line 107)
4438* Scanning configure.ac: configure. (line 6)
4439* SCRIPTS primary, defined: Scripts. (line 6)
4440* SCRIPTS, installation directories: Scripts. (line 18)
4441* Selecting the linker automatically: How the Linker is Chosen.
4442 (line 6)
4443* serial number and --install: aclocal options. (line 32)
4444* serial numbers in macros: Serials. (line 6)
4445* Shared libraries, support for: A Shared Library. (line 6)
4446* site.exp: Tests. (line 77)
4447* source tree and build tree: VPATH Builds. (line 6)
4448* source tree, read-only: VPATH Builds. (line 90)
4449* SOURCES primary, defined: Program Sources. (line 32)
4450* Special Automake comment: General Operation. (line 54)
4451* Staged installation: DESTDIR. (line 14)
4452* std-options: Options. (line 115)
4453* Strictness, command line: Invoking Automake. (line 37)
4454* Strictness, defined: Strictness. (line 10)
4455* Strictness, foreign: Strictness. (line 10)
4456* Strictness, gnits: Strictness. (line 10)
4457* Strictness, gnu: Strictness. (line 10)
4458* su, before make install: Basic Installation. (line 50)
4459* subdir-objects: Options. (line 135)
4460* Subdirectories, building conditionally: Conditional Subdirectories.
4461 (line 6)
4462* Subdirectories, configured conditionally: Conditional Subdirectories.
4463 (line 119)
4464* Subdirectories, not distributed: Conditional Subdirectories.
4465 (line 170)
4466* Subdirectory, objects in: Program and Library Variables.
4467 (line 51)
4468* SUBDIRS and AC_SUBST: Conditional Subdirectories.
4469 (line 95)
4470* SUBDIRS and AM_CONDITIONAL: Conditional Subdirectories.
4471 (line 65)
4472* SUBDIRS, conditional: Conditional Subdirectories.
4473 (line 6)
4474* SUBDIRS, explained: Subdirectories. (line 6)
4475* Subpackages <1>: Subpackages. (line 6)
4476* Subpackages: Nested Packages. (line 6)
4477* suffix .la, defined: Libtool Concept. (line 6)
4478* suffix .lo, defined: Libtool Concept. (line 15)
4479* SUFFIXES, adding: Suffixes. (line 6)
4480* Support for C++: C++ Support. (line 6)
4481* Support for Fortran 77: Fortran 77 Support. (line 6)
4482* Support for Fortran 9x: Fortran 9x Support. (line 6)
4483* Support for GNU Gettext: gettext. (line 6)
4484* Support for Java: Java Support. (line 6)
4485* Support for Objective C: Objective C Support. (line 6)
4486* Support for Unified Parallel C: Unified Parallel C Support.
4487 (line 6)
4488* tags: Tags. (line 9)
4489* TAGS support: Tags. (line 6)
4490* tar formats: Options. (line 147)
4491* tar-pax: Options. (line 147)
4492* tar-ustar: Options. (line 147)
4493* tar-v7: Options. (line 147)
4494* Target, install-info: Texinfo. (line 76)
4495* Target, install-man: Man pages. (line 32)
4496* termios POSIX headers: Obsolete macros. (line 53)
4497* Test suites: Tests. (line 6)
4498* Tests, expected failure: Tests. (line 34)
4499* Texinfo flag, EDITION: Texinfo. (line 29)
4500* Texinfo flag, UPDATED: Texinfo. (line 29)
4501* Texinfo flag, UPDATED-MONTH: Texinfo. (line 29)
4502* Texinfo flag, VERSION: Texinfo. (line 29)
4503* texinfo.tex: Texinfo. (line 64)
4504* TEXINFOS primary, defined: Texinfo. (line 6)
4505* third-party files and CVS: CVS. (line 140)
4506* Third-party packages, interfacing with: Third-Party Makefiles.
4507 (line 6)
4508* timestamps and CVS: CVS. (line 28)
4509* Transforming program names: Renaming. (line 6)
4510* trees, source vs. build: VPATH Builds. (line 6)
4511* true Example: true. (line 6)
4512* underquoted AC_DEFUN: Extending aclocal. (line 33)
4513* Unified Parallel C support: Unified Parallel C Support.
4514 (line 6)
4515* Uniform naming scheme: Uniform. (line 6)
4516* uninstall <1>: Extending. (line 40)
4517* uninstall <2>: Install. (line 110)
4518* uninstall: Standard Targets. (line 27)
4519* uninstall-hook: Extending. (line 64)
4520* uninstall-local: Extending. (line 40)
4521* Unpacking: Basic Installation. (line 27)
4522* UPCFLAGS and AM_UPCFLAGS: Flag Variables Ordering.
4523 (line 20)
4524* UPDATED Texinfo flag: Texinfo. (line 29)
4525* UPDATED-MONTH Texinfo flag: Texinfo. (line 29)
4526* Use Cases for the GNU Build System: Use Cases. (line 6)
4527* user variables: User Variables. (line 6)
4528* ustar format: Options. (line 147)
4529* v7 tar format: Options. (line 147)
4530* variables, conflicting: Extending. (line 14)
4531* Variables, overriding: General Operation. (line 37)
4532* variables, reserved for the user: User Variables. (line 6)
4533* VERSION Texinfo flag: Texinfo. (line 29)
4534* VERSION, prevent definition: Public macros. (line 54)
4535* version.m4, example: Rebuilding. (line 19)
4536* version.sh, example: Rebuilding. (line 19)
4537* versioned binaries, installing: Extending. (line 80)
4538* VPATH builds: VPATH Builds. (line 6)
4539* wildcards: wildcards. (line 6)
4540* Windows: EXEEXT. (line 6)
4541* yacc, multiple parsers: Yacc and Lex. (line 64)
4542* YFLAGS and AM_YFLAGS: Flag Variables Ordering.
4543 (line 20)
4544* ylwrap: Yacc and Lex. (line 64)
4545* zardoz example: Complete. (line 35)
4546
4547
Note: See TracBrowser for help on using the repository browser.