1 | This is automake.info, produced by makeinfo version 4.8 from
|
---|
2 | automake.texi.
|
---|
3 |
|
---|
4 | This manual is for GNU Automake (version 1.10, 15 October 2006), a
|
---|
5 | program that creates GNU standards-compliant Makefiles from template
|
---|
6 | files.
|
---|
7 |
|
---|
8 | Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
|
---|
9 | 2004, 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 |
|
---|
23 | INFO-DIR-SECTION Software development
|
---|
24 | START-INFO-DIR-ENTRY
|
---|
25 | * Automake: (automake). Making GNU standards-compliant Makefiles.
|
---|
26 | END-INFO-DIR-ENTRY
|
---|
27 |
|
---|
28 | INFO-DIR-SECTION Individual utilities
|
---|
29 | START-INFO-DIR-ENTRY
|
---|
30 | * aclocal: (automake)Invoking aclocal. Generating aclocal.m4.
|
---|
31 | * automake: (automake)Invoking Automake. Generating Makefile.in.
|
---|
32 | END-INFO-DIR-ENTRY
|
---|
33 |
|
---|
34 |
|
---|
35 | File: automake.info, Node: Suffixes, Next: Multilibs, Prev: Tags, Up: Miscellaneous
|
---|
36 |
|
---|
37 | 18.2 Handling new file extensions
|
---|
38 | =================================
|
---|
39 |
|
---|
40 | It is sometimes useful to introduce a new implicit rule to handle a file
|
---|
41 | type that Automake does not know about.
|
---|
42 |
|
---|
43 | For instance, suppose you had a compiler that could compile `.foo'
|
---|
44 | files to `.o' files. You would simply define an suffix rule for your
|
---|
45 | language:
|
---|
46 |
|
---|
47 | .foo.o:
|
---|
48 | foocc -c -o $@ $<
|
---|
49 |
|
---|
50 | Then you could directly use a `.foo' file in a `_SOURCES' variable
|
---|
51 | and 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
|
---|
57 | have to help Automake to figure which extensions you are defining your
|
---|
58 | suffix rule for. This usually happens when your extensions does not
|
---|
59 | start with a dot. Then, all you have to do is to put a list of new
|
---|
60 | suffixes in the `SUFFIXES' variable *before* you define your implicit
|
---|
61 | rule.
|
---|
62 |
|
---|
63 | For instance, the following definition prevents Automake to
|
---|
64 | misinterpret `.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'
|
---|
73 | yourself, but use `SUFFIXES' instead and let Automake generate the
|
---|
74 | suffix list for `.SUFFIXES'. Any given `SUFFIXES' go at the start of
|
---|
75 | the generated suffixes list, followed by Automake generated suffixes
|
---|
76 | not already in the list.
|
---|
77 |
|
---|
78 |
|
---|
79 | File: automake.info, Node: Multilibs, Prev: Suffixes, Up: Miscellaneous
|
---|
80 |
|
---|
81 | 18.3 Support for Multilibs
|
---|
82 | ==========================
|
---|
83 |
|
---|
84 | Automake has support for an obscure feature called multilibs. A
|
---|
85 | "multilib" is a library that is built for multiple different ABIs at a
|
---|
86 | single time; each time the library is built with a different target
|
---|
87 | flag combination. This is only useful when the library is intended to
|
---|
88 | be cross-compiled, and it is almost exclusively used for compiler
|
---|
89 | support libraries.
|
---|
90 |
|
---|
91 | The multilib support is still experimental. Only use it if you are
|
---|
92 | familiar with multilibs and can debug problems you might encounter.
|
---|
93 |
|
---|
94 |
|
---|
95 | File: automake.info, Node: Include, Next: Conditionals, Prev: Miscellaneous, Up: Top
|
---|
96 |
|
---|
97 | 19 Include
|
---|
98 | **********
|
---|
99 |
|
---|
100 | Automake supports an `include' directive that can be used to include
|
---|
101 | other `Makefile' fragments when `automake' is run. Note that these
|
---|
102 | fragments are read and interpreted by `automake', not by `make'. As
|
---|
103 | with 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
|
---|
116 | condition applies to the entire contents of that fragment.
|
---|
117 |
|
---|
118 | Makefile fragments included this way are always distributed because
|
---|
119 | they are needed to rebuild `Makefile.in'.
|
---|
120 |
|
---|
121 |
|
---|
122 | File: automake.info, Node: Conditionals, Next: Gnits, Prev: Include, Up: Top
|
---|
123 |
|
---|
124 | 20 Conditionals
|
---|
125 | ***************
|
---|
126 |
|
---|
127 | Automake supports a simple type of conditionals.
|
---|
128 |
|
---|
129 | Usage
|
---|
130 | =====
|
---|
131 |
|
---|
132 | Before 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
|
---|
148 | the `configure' script. Here is an example of how to write a
|
---|
149 | conditional 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
|
---|
173 | negated using `!'. The `else' statement may be omitted. Conditionals
|
---|
174 | may be nested to any depth. You may specify an argument to `else' in
|
---|
175 | which case it must be the negation of the condition used for the
|
---|
176 | current `if'. Similarly you may specify the condition that is closed
|
---|
177 | by an `end':
|
---|
178 |
|
---|
179 | if DEBUG
|
---|
180 | DBG = debug
|
---|
181 | else !DEBUG
|
---|
182 | DBG =
|
---|
183 | endif !DEBUG
|
---|
184 |
|
---|
185 | Unbalanced conditions are errors.
|
---|
186 |
|
---|
187 | The `else' branch of the above two examples could be omitted, since
|
---|
188 | assigning the empty string to an otherwise undefined variable makes no
|
---|
189 | difference.
|
---|
190 |
|
---|
191 | Portability
|
---|
192 | ===========
|
---|
193 |
|
---|
194 | Note that conditionals in Automake are not the same as conditionals in
|
---|
195 | GNU 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
|
---|
198 | results that `configure' has discovered about the host system. GNU
|
---|
199 | Make conditionals are checked at `make' time, and are based on
|
---|
200 | variables passed to the make program or defined in the `Makefile'.
|
---|
201 |
|
---|
202 | Automake conditionals will work with any make program.
|
---|
203 |
|
---|
204 | Limits
|
---|
205 | ======
|
---|
206 |
|
---|
207 | Conditionals should enclose complete statements like variables or rules
|
---|
208 | definitions. Automake cannot deal with conditionals used inside a
|
---|
209 | variable definition, for instance, and is not even able to diagnose
|
---|
210 | this 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 |
|
---|
227 | or
|
---|
228 |
|
---|
229 | AM_CPPFLAGS = -DFEATURE_A
|
---|
230 | if WANT_DEBUG
|
---|
231 | AM_CPPFLAGS += -DDEBUG
|
---|
232 | endif
|
---|
233 | AM_CPPFLAGS += -DFEATURE_B
|
---|
234 |
|
---|
235 |
|
---|
236 | File: automake.info, Node: Gnits, Next: Cygnus, Prev: Conditionals, Up: Top
|
---|
237 |
|
---|
238 | 21 The effect of `--gnu' and `--gnits'
|
---|
239 | **************************************
|
---|
240 |
|
---|
241 | The `--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
|
---|
251 | checking; it is advisable to be familiar with the precise requirements
|
---|
252 | of the GNU standards. Also, `--gnu' can require certain non-standard
|
---|
253 | GNU programs to exist for use by various maintainer-only rules; for
|
---|
254 | instance, in the future `pathchk' might be required for `make dist'.
|
---|
255 |
|
---|
256 | The `--gnits' option does everything that `--gnu' does, and checks
|
---|
257 | the 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 |
|
---|
280 | File: automake.info, Node: Cygnus, Next: Not Enough, Prev: Gnits, Up: Top
|
---|
281 |
|
---|
282 | 22 The effect of `--cygnus'
|
---|
283 | ***************************
|
---|
284 |
|
---|
285 | Some packages, notably GNU GCC and GNU gdb, have a build environment
|
---|
286 | originally written at Cygnus Support (subsequently renamed Cygnus
|
---|
287 | Solutions, and then later purchased by Red Hat). Packages with this
|
---|
288 | ancestry are sometimes referred to as "Cygnus" trees.
|
---|
289 |
|
---|
290 | A Cygnus tree has slightly different rules for how a `Makefile.in'
|
---|
291 | is to be constructed. Passing `--cygnus' to `automake' will cause any
|
---|
292 | generated `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
|
---|
321 | the special Cygnus mode. Some day, perhaps, the differences between
|
---|
322 | Cygnus trees and GNU trees will disappear (for instance, as GCC is made
|
---|
323 | more standards compliant). At that time the special Cygnus mode will be
|
---|
324 | removed.
|
---|
325 |
|
---|
326 |
|
---|
327 | File: automake.info, Node: Not Enough, Next: Distributing, Prev: Cygnus, Up: Top
|
---|
328 |
|
---|
329 | 23 When Automake Isn't Enough
|
---|
330 | *****************************
|
---|
331 |
|
---|
332 | In some situations, where Automake is not up to one task, one has to
|
---|
333 | resort 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 |
|
---|
341 | File: automake.info, Node: Extending, Next: Third-Party Makefiles, Up: Not Enough
|
---|
342 |
|
---|
343 | 23.1 Extending Automake Rules
|
---|
344 | =============================
|
---|
345 |
|
---|
346 | With some minor exceptions (like `_PROGRAMS' variables being rewritten
|
---|
347 | to 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
|
---|
351 | by simply adding some `make' variables and rules to `Makefile.am'.
|
---|
352 | Automake will ignore these additions.
|
---|
353 |
|
---|
354 | Since a `Makefile.in' is built from data gathered from three
|
---|
355 | different places (`Makefile.am', `configure.ac', and `automake'
|
---|
356 | itself), it is possible to have conflicting definitions of rules or
|
---|
357 | variables. When building `Makefile.in' the following priorities are
|
---|
358 | respected by `automake' to ensure the user always have the last word.
|
---|
359 | User defined variables in `Makefile.am' have priority over variables
|
---|
360 | `AC_SUBST'ed from `configure.ac', and `AC_SUBST'ed variables have
|
---|
361 | priority over `automake'-defined variables. As far rules are
|
---|
362 | concerned, a user-defined rule overrides any `automake'-defined rule
|
---|
363 | for the same target.
|
---|
364 |
|
---|
365 | These overriding semantics make it possible to fine tune some default
|
---|
366 | settings of Automake, or replace some of its rules. Overriding
|
---|
367 | Automake rules is often inadvisable, particularly in the topmost
|
---|
368 | directory 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
|
---|
372 | commands and rules that only specify dependencies. So it is not
|
---|
373 | possible to append new dependencies to an `automake'-defined target
|
---|
374 | without redefining the entire rule.
|
---|
375 |
|
---|
376 | However, various useful targets have a `-local' version you can
|
---|
377 | specify in your `Makefile.am'. Automake will supplement the standard
|
---|
378 | target 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
|
---|
384 | various `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
|
---|
389 | make sense to uninstall just data or just executables.
|
---|
390 |
|
---|
391 | For instance, here is one way to erase a subdirectory during `make
|
---|
392 | clean' (*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
|
---|
399 | you should avoid this. (*note Hard-Coded Install Paths::)
|
---|
400 |
|
---|
401 | Some rule also have a way to run another rule, called a "hook",
|
---|
402 | after their work is done. The hook is named after the principal target,
|
---|
403 | with `-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
|
---|
407 | program:
|
---|
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
|
---|
414 | will not work everywhere (for instance, OS/2 does not have `ln').
|
---|
415 | Ideally you should fall back to `cp -p' when `ln' does not work. An
|
---|
416 | easy 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
|
---|
421 | program 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
|
---|
429 | symbolic link, not the real binary. Also we `cd' into the destination
|
---|
430 | directory in order to create relative links.
|
---|
431 |
|
---|
432 | When writing `install-exec-hook' or `install-data-hook', please bear
|
---|
433 | in mind that the exec/data distinction is based on the installation
|
---|
434 | directory, 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
|
---|
437 | define your hooks consequently.
|
---|
438 |
|
---|
439 |
|
---|
440 | File: automake.info, Node: Third-Party Makefiles, Prev: Extending, Up: Not Enough
|
---|
441 |
|
---|
442 | 23.2 Third-Party `Makefile's
|
---|
443 | ============================
|
---|
444 |
|
---|
445 | In most projects all `Makefile's are generated by Automake. In some
|
---|
446 | cases, however, projects need to embed subdirectories with handwritten
|
---|
447 | `Makefile's. For instance, one subdirectory could be a third-party
|
---|
448 | project 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
|
---|
452 | recognizes all the following recursive targets.
|
---|
453 |
|
---|
454 | When a user runs one of these targets, that target is run recursively
|
---|
455 | in all subdirectories. This is why it is important that even
|
---|
456 | third-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
|
---|
512 | how 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
|
---|
515 | added 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'
|
---|
519 | rules (*note Conditional Subdirectories::).
|
---|
520 |
|
---|
521 | Usually, many of these rules are irrelevant to the third-party
|
---|
522 | subproject, but they are required for the whole package to work. It's
|
---|
523 | OK to have a rule that does nothing, so if you are integrating a
|
---|
524 | third-party project with no documentation or tag support, you could
|
---|
525 | simply 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
|
---|
532 | they support VPATH builds (*note VPATH Builds::). Obviously if the
|
---|
533 | subpackage does not support VPATH builds the whole package will not
|
---|
534 | support VPATH builds. This in turns means that `make distcheck' will
|
---|
535 | not work, because it relies on VPATH builds. Some people can live
|
---|
536 | without this (actually, many Automake users have never heard of `make
|
---|
537 | distcheck'). Other people may prefer to revamp the existing
|
---|
538 | `Makefile's to support VPATH. Doing so does not necessarily require
|
---|
539 | Automake, 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
|
---|
543 | Variables: (autoconf)Preset Output Variables.), they are not computed
|
---|
544 | by the Makefile like the aforementioned `$(distdir)' and
|
---|
545 | `$(top_distdir)' variables..
|
---|
546 |
|
---|
547 | It is sometimes inconvenient to modify a third-party `Makefile' to
|
---|
548 | introduce the above required targets. For instance, one may want to
|
---|
549 | keep 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
|
---|
552 | to add to that subdirectory a `GNUmakefile' that defines the required
|
---|
553 | targets and include the third-party `Makefile'. For this to work in
|
---|
554 | VPATH builds, `GNUmakefile' must lie in the build directory; the
|
---|
555 | easiest way to do this is to write a `GNUmakefile.in' instead, and have
|
---|
556 | it processed with `AC_CONFIG_FILES' from the outer package. For
|
---|
557 | example if we assume `Makefile' defines all targets except the
|
---|
558 | documentation 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
|
---|
571 | the original `Makefile') or with `cd subdir && $(MAKE) $(AM_MAKEFLAGS)
|
---|
572 | target' (if it's OK to store the subdirectory project one directory
|
---|
573 | deeper). The good news is that this proxy `Makefile' can be generated
|
---|
574 | with Automake. All we need are `-local' targets (*note Extending::)
|
---|
575 | that perform the dispatch. Of course the other Automake features are
|
---|
576 | available, so you could decide to let Automake perform distribution or
|
---|
577 | installation. 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
|
---|
598 | subproject build system and build everything from this proxy
|
---|
599 | `Makefile.am'. This might sounds very sensible if you need VPATH
|
---|
600 | builds but the subproject does not support them.
|
---|
601 |
|
---|
602 |
|
---|
603 | File: automake.info, Node: Distributing, Next: API versioning, Prev: Not Enough, Up: Top
|
---|
604 |
|
---|
605 | 24 Distributing `Makefile.in's
|
---|
606 | ******************************
|
---|
607 |
|
---|
608 | Automake places no restrictions on the distribution of the resulting
|
---|
609 | `Makefile.in's. We still encourage software authors to distribute
|
---|
610 | their work under terms like those of the GPL, but doing so is not
|
---|
611 | required 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
|
---|
615 | a special exception allowing you to distribute them with your package,
|
---|
616 | regardless of the licensing you choose.
|
---|
617 |
|
---|
618 |
|
---|
619 | File: automake.info, Node: API versioning, Next: Upgrading, Prev: Distributing, Up: Top
|
---|
620 |
|
---|
621 | 25 Automake API versioning
|
---|
622 | **************************
|
---|
623 |
|
---|
624 | New Automake releases usually include bug fixes and new features.
|
---|
625 | Unfortunately they may also introduce new bugs and incompatibilities.
|
---|
626 | This makes four reasons why a package may require a particular Automake
|
---|
627 | version.
|
---|
628 |
|
---|
629 | Things get worse when maintaining a large tree of packages, each one
|
---|
630 | requiring a different version of Automake. In the past, this meant that
|
---|
631 | any developer (and sometime users) had to install several versions of
|
---|
632 | Automake in different places, and switch `$PATH' appropriately for each
|
---|
633 | package.
|
---|
634 |
|
---|
635 | Starting with version 1.6, Automake installs versioned binaries.
|
---|
636 | This 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'.
|
---|
639 | Furthermore, `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
|
---|
643 | Automake's version. If a bug fix release is made, for instance
|
---|
644 | Automake 1.6.1, the API version will remain 1.6. This means that a
|
---|
645 | package that works with Automake 1.6 should also work with 1.6.1; after
|
---|
646 | all, 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
|
---|
649 | release, you can pass this version as an option to Automake to ensure
|
---|
650 | older 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
|
---|
658 | the requested version.
|
---|
659 |
|
---|
660 | What is in the API
|
---|
661 | ==================
|
---|
662 |
|
---|
663 | Automake's programming interface is not easy to define. Basically it
|
---|
664 | should include at least all *documented* variables and targets that a
|
---|
665 | `Makefile.am' author can use, any behavior associated with them (e.g.,
|
---|
666 | the places where `-hook''s are run), the command line interface of
|
---|
667 | `automake' and `aclocal', ...
|
---|
668 |
|
---|
669 | What is not in the API
|
---|
670 | ======================
|
---|
671 |
|
---|
672 | Every undocumented variable, target, or command line option, is not part
|
---|
673 | of the API. You should avoid using them, as they could change from one
|
---|
674 | version to the other (even in bug fix releases, if this helps to fix a
|
---|
675 | bug).
|
---|
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
|
---|
679 | test-suite.
|
---|
680 |
|
---|
681 |
|
---|
682 | File: automake.info, Node: Upgrading, Next: FAQ, Prev: API versioning, Up: Top
|
---|
683 |
|
---|
684 | 26 Upgrading a Package to a Newer Automake Version
|
---|
685 | **************************************************
|
---|
686 |
|
---|
687 | Automake 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
|
---|
696 | Automake-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
|
---|
699 | macros put in `aclocal.m4' as well as the behavior of the auxiliary
|
---|
700 | tools installed.
|
---|
701 |
|
---|
702 | Because all these files are closely related, it is important to
|
---|
703 | regenerate all of them when upgrading to a newer Automake release. The
|
---|
704 | usual 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 |
|
---|
710 | or more conveniently:
|
---|
711 |
|
---|
712 | autoreconf -vfi
|
---|
713 |
|
---|
714 | The use of `--force-missing' ensures that auxiliary tools will be
|
---|
715 | overridden by new versions (*note Invoking Automake::).
|
---|
716 |
|
---|
717 | It is important to regenerate all these files each time Automake is
|
---|
718 | upgraded, even between bug fixes releases. For instance, it is not
|
---|
719 | unusual 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'.
|
---|
724 | However it never checks whether auxiliary scripts are up-to-date. In
|
---|
725 | other words, `automake' will tell you when `aclocal' needs to be rerun,
|
---|
726 | but it will never diagnose a missing `--force-missing'.
|
---|
727 |
|
---|
728 | Before upgrading to a new major release, it is a good idea to read
|
---|
729 | the file `NEWS'. This file lists all changes between releases: new
|
---|
730 | features, obsolete constructs, known incompatibilities, and workarounds.
|
---|
731 |
|
---|
732 |
|
---|
733 | File: automake.info, Node: FAQ, Next: History, Prev: Upgrading, Up: Top
|
---|
734 |
|
---|
735 | 27 Frequently Asked Questions about Automake
|
---|
736 | ********************************************
|
---|
737 |
|
---|
738 | This chapter covers some questions that often come up on the mailing
|
---|
739 | lists.
|
---|
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 |
|
---|
755 | File: automake.info, Node: CVS, Next: maintainer-mode, Up: FAQ
|
---|
756 |
|
---|
757 | 27.1 CVS and generated files
|
---|
758 | ============================
|
---|
759 |
|
---|
760 | 27.1.1 Background: distributed generated files
|
---|
761 | ----------------------------------------------
|
---|
762 |
|
---|
763 | Packages made with Autoconf and Automake ship with some generated files
|
---|
764 | like `configure' or `Makefile.in'. These files were generated on the
|
---|
765 | developer's host and are distributed so that end-users do not have to
|
---|
766 | install the maintainer tools required to rebuild them. Other generated
|
---|
767 | files like Lex scanners, Yacc parsers, or Info documentation, are
|
---|
768 | usually distributed on similar grounds.
|
---|
769 |
|
---|
770 | Automake outputs rules in `Makefile's to rebuild these files. For
|
---|
771 | instance, `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
|
---|
777 | a user unpacks and builds a package.
|
---|
778 |
|
---|
779 | 27.1.2 Background: CVS and timestamps
|
---|
780 | -------------------------------------
|
---|
781 |
|
---|
782 | Unless you use CVS keywords (in which case files must be updated at
|
---|
783 | commit time), CVS preserves timestamp during `cvs commit' and `cvs
|
---|
784 | import -d' operations.
|
---|
785 |
|
---|
786 | When you check out a file using `cvs checkout' its timestamp is set
|
---|
787 | to that of the revision that is being checked out.
|
---|
788 |
|
---|
789 | However, during `cvs update', files will have the date of the
|
---|
790 | update, not the original timestamp of this revision. This is meant to
|
---|
791 | make sure that `make' notices sources files have been updated.
|
---|
792 |
|
---|
793 | This timestamp shift is troublesome when both sources and generated
|
---|
794 | files are kept under CVS. Because CVS processes files in alphabetical
|
---|
795 | order, `configure.ac' will appear older than `configure' after a `cvs
|
---|
796 | update' that updates both files, even if `configure' was newer than
|
---|
797 | `configure.ac' when it was checked in. Calling `make' will then
|
---|
798 | trigger a spurious rebuild of `configure'.
|
---|
799 |
|
---|
800 | 27.1.3 Living with CVS in Autoconfiscated projects
|
---|
801 | --------------------------------------------------
|
---|
802 |
|
---|
803 | There are basically two clans amongst maintainers: those who keep all
|
---|
804 | distributed files under CVS, including generated files, and those who
|
---|
805 | keep generated files _out_ of CVS.
|
---|
806 |
|
---|
807 | All 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 |
|
---|
864 | Generated files out of CVS
|
---|
865 | ..........................
|
---|
866 |
|
---|
867 | One way to get CVS and `make' working peacefully is to never store
|
---|
868 | generated 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.
|
---|
872 | It does not matter if they all have different versions (assuming they
|
---|
873 | are compatible, of course). And finally, timestamps are not lost,
|
---|
874 | changes 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
|
---|
878 | is distributed and that users now need to install various development
|
---|
879 | tools (maybe even specific versions) before they can build a checkout.
|
---|
880 | But, after all, CVS's job is versioning, not distribution.
|
---|
881 |
|
---|
882 | Allowing developers to use different versions of their tools can also
|
---|
883 | hide bugs during distributed development. Indeed, developers will be
|
---|
884 | using (hence testing) their own generated files, instead of the
|
---|
885 | generated files that will be released actually. The developer who
|
---|
886 | prepares the tarball might be using a version of the tool that produces
|
---|
887 | bogus output (for instance a non-portable C file), something other
|
---|
888 | developers could have noticed if they weren't using their own versions
|
---|
889 | of this tool.
|
---|
890 |
|
---|
891 | 27.1.4 Third-party files
|
---|
892 | ------------------------
|
---|
893 |
|
---|
894 | Another class of files not discussed here (because they do not cause
|
---|
895 | timestamp issues) are files that are shipped with a package, but
|
---|
896 | maintained elsewhere. For instance, tools like `gettextize' and
|
---|
897 | `autopoint' (from Gettext) or `libtoolize' (from Libtool), will install
|
---|
898 | or update files in your package.
|
---|
899 |
|
---|
900 | These files, whether they are kept under CVS or not, raise similar
|
---|
901 | concerns about version mismatch between developers' tools. The Gettext
|
---|
902 | manual has a section about this, see *Note CVS Issues: (gettext)CVS
|
---|
903 | Issues.
|
---|
904 |
|
---|
905 |
|
---|
906 | File: automake.info, Node: maintainer-mode, Next: wildcards, Prev: CVS, Up: FAQ
|
---|
907 |
|
---|
908 | 27.2 `missing' and `AM_MAINTAINER_MODE'
|
---|
909 | =======================================
|
---|
910 |
|
---|
911 | 27.2.1 `missing'
|
---|
912 | ----------------
|
---|
913 |
|
---|
914 | The `missing' script is a wrapper around several maintainer tools,
|
---|
915 | designed to warn users if a maintainer tool is required but missing.
|
---|
916 | Typical maintainer tools are `autoconf', `automake', `bison', etc.
|
---|
917 | Because file generated by these tools are shipped with the other
|
---|
918 | sources of a package, these tools shouldn't be required during a user
|
---|
919 | build and they are not checked for in `configure'.
|
---|
920 |
|
---|
921 | However, if for some reason a rebuild rule is triggered and involves
|
---|
922 | a missing tool, `missing' will notice it and warn the user. Besides
|
---|
923 | the warning, when a tool is missing, `missing' will attempt to fix
|
---|
924 | timestamps in a way that allows the build to continue. For instance,
|
---|
925 | `missing' will touch `configure' if `autoconf' is not installed. When
|
---|
926 | all distributed files are kept under CVS, this feature of `missing'
|
---|
927 | allows user _with no maintainer tools_ to build a package off CVS,
|
---|
928 | bypassing any timestamp inconsistency implied by `cvs update'.
|
---|
929 |
|
---|
930 | If the required tool is installed, `missing' will run it and won't
|
---|
931 | attempt to continue after failures. This is correct during
|
---|
932 | development: developers love fixing failures. However, users with
|
---|
933 | wrong versions of maintainer tools may get an error when the rebuild
|
---|
934 | rule is spuriously triggered, halting the build. This failure to let
|
---|
935 | the build continue is one of the arguments of the `AM_MAINTAINER_MODE'
|
---|
936 | advocates.
|
---|
937 |
|
---|
938 | 27.2.2 `AM_MAINTAINER_MODE'
|
---|
939 | ---------------------------
|
---|
940 |
|
---|
941 | `AM_MAINTAINER_MODE' disables the so called "rebuild rules" by default.
|
---|
942 | If 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
|
---|
945 | disables build rules for files that are usually distributed and that
|
---|
946 | users should normally not have to update.
|
---|
947 |
|
---|
948 | If you run `./configure --enable-maintainer-mode', then these
|
---|
949 | rebuild rules will be active.
|
---|
950 |
|
---|
951 | People use `AM_MAINTAINER_MODE' either because they do want their
|
---|
952 | users (or themselves) annoyed by timestamps lossage (*note CVS::), or
|
---|
953 | because they simply can't stand the rebuild rules and prefer running
|
---|
954 | maintainer tools explicitly.
|
---|
955 |
|
---|
956 | `AM_MAINTAINER_MODE' also allows you to disable some custom build
|
---|
957 | rules conditionally. Some developers use this feature to disable rules
|
---|
958 | that need exotic tools that users may not have available.
|
---|
959 |
|
---|
960 | Several years ago Franc,ois Pinard pointed out several arguments
|
---|
961 | against this `AM_MAINTAINER_MODE' macro. Most of them relate to
|
---|
962 | insecurity. By removing dependencies you get non-dependable builds:
|
---|
963 | change to sources files can have no effect on generated files and this
|
---|
964 | can be very confusing when unnoticed. He adds that security shouldn't
|
---|
965 | be reserved to maintainers (what `--enable-maintainer-mode' suggests),
|
---|
966 | on the contrary. If one user has to modify a `Makefile.am', then
|
---|
967 | either `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
|
---|
969 | is that nothing happens and the user doesn't notice it (this is what
|
---|
970 | happens when rebuild rules are disabled by `AM_MAINTAINER_MODE').
|
---|
971 |
|
---|
972 | Jim Meyering, the inventor of the `AM_MAINTAINER_MODE' macro was
|
---|
973 | swayed by Franc,ois's arguments, and got rid of `AM_MAINTAINER_MODE' in
|
---|
974 | all of his packages.
|
---|
975 |
|
---|
976 | Still many people continue to use `AM_MAINTAINER_MODE', because it
|
---|
977 | helps them working on projects where all files are kept under CVS, and
|
---|
978 | because `missing' isn't enough if you have the wrong version of the
|
---|
979 | tools.
|
---|
980 |
|
---|
981 |
|
---|
982 | File: automake.info, Node: wildcards, Next: limitations on file names, Prev: maintainer-mode, Up: FAQ
|
---|
983 |
|
---|
984 | 27.3 Why doesn't Automake support wildcards?
|
---|
985 | ============================================
|
---|
986 |
|
---|
987 | Developers 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
|
---|
1020 | disagree, or find enough value in wildcards to dismiss all of them.
|
---|
1021 | Before you start writing a patch against Automake to teach it about
|
---|
1022 | wildcards, let's see the main technical issue: portability.
|
---|
1023 |
|
---|
1024 | Although `$(wildcard ...)' works with GNU `make', it is not portable
|
---|
1025 | to other `make' implementations.
|
---|
1026 |
|
---|
1027 | The only way Automake could support `$(wildcard ...)' is by
|
---|
1028 | expending `$(wildcard ...)' when `automake' is run. Resulting
|
---|
1029 | `Makefile.in's would be portable since they would list all files and
|
---|
1030 | not use `$(wildcard ...)'. However that means developers need to
|
---|
1031 | remember they must run `automake' each time they add, delete, or rename
|
---|
1032 | files.
|
---|
1033 |
|
---|
1034 | Compared to editing `Makefile.am', this is really little win. Sure,
|
---|
1035 | it's easier and faster to type `automake; make' than to type `emacs
|
---|
1036 | Makefile.am; make'. But nobody bothered enough to write a patch add
|
---|
1037 | support for this syntax. Some people use scripts to generated file
|
---|
1038 | lists 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
|
---|
1042 | know there are many places where Automake need to know exactly which
|
---|
1043 | files 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
|
---|
1046 | Automake is concerned.
|
---|
1047 |
|
---|
1048 | You can get warnings about `$(wildcard ...') constructs using the
|
---|
1049 | `-Wportability' flag.
|
---|
1050 |
|
---|
1051 |
|
---|
1052 | File: automake.info, Node: limitations on file names, Next: distcleancheck, Prev: wildcards, Up: FAQ
|
---|
1053 |
|
---|
1054 | 27.4 Limitations on file names
|
---|
1055 | ==============================
|
---|
1056 |
|
---|
1057 | Automake attempts to support all kinds of file names, even those that
|
---|
1058 | contain unusual characters or are unusually long. However, some
|
---|
1059 | limitations are imposed by the underlying operating system and tools.
|
---|
1060 |
|
---|
1061 | Most operating systems prohibit the use of the null byte in file
|
---|
1062 | names, and reserve `/' as a directory separator. Also, they require
|
---|
1063 | that file names are properly encoded for the user's locale. Automake
|
---|
1064 | is subject to these limits.
|
---|
1065 |
|
---|
1066 | Portable packages should limit themselves to POSIX file names.
|
---|
1067 | These can contain ASCII letters and digits, `_', `.', and `-'. File
|
---|
1068 | names consist of components separated by `/'. File name components
|
---|
1069 | cannot begin with `-'.
|
---|
1070 |
|
---|
1071 | Portable POSIX file names cannot contain components that exceed a
|
---|
1072 | 14-byte limit, but nowadays it's normally safe to assume the
|
---|
1073 | more-generous XOPEN limit of 255 bytes. POSIX limits file names to 255
|
---|
1074 | bytes (XOPEN allows 1023 bytes), but you may want to limit a source
|
---|
1075 | tarball to file names to 99 bytes to avoid interoperability problems
|
---|
1076 | with old versions of `tar'.
|
---|
1077 |
|
---|
1078 | If you depart from these rules (e.g., by using non-ASCII characters
|
---|
1079 | in file names, or by using lengthy file names), your installers may
|
---|
1080 | have problems for reasons unrelated to Automake. However, if this does
|
---|
1081 | not concern you, you should know about the limitations imposed by
|
---|
1082 | Automake itself. These limitations are undesirable, but some of them
|
---|
1083 | seem to be inherent to underlying tools like Autoconf, Make, M4, and
|
---|
1084 | the shell. They fall into three categories: install directories, build
|
---|
1085 | directories, and file names.
|
---|
1086 |
|
---|
1087 | The following characters:
|
---|
1088 |
|
---|
1089 | newline " # $ ' `
|
---|
1090 |
|
---|
1091 | should not appear in the names of install directories. For example,
|
---|
1092 | the operand of `configure''s `--prefix' option should not contain these
|
---|
1093 | characters.
|
---|
1094 |
|
---|
1095 | Build directories suffer the same limitations as install directories,
|
---|
1096 | and in addition should not contain the following characters:
|
---|
1097 |
|
---|
1098 | & @ \
|
---|
1099 |
|
---|
1100 | For example, the full name of the directory containing the source
|
---|
1101 | files should not contain these characters.
|
---|
1102 |
|
---|
1103 | Source and installation file names like `main.c' are limited even
|
---|
1104 | further: they should conform to the POSIX/XOPEN rules described above.
|
---|
1105 | In addition, if you plan to port to non-POSIX environments, you should
|
---|
1106 | avoid file names that differ only in case (e.g., `makefile' and
|
---|
1107 | `Makefile'). Nowadays it is no longer worth worrying about the 8.3
|
---|
1108 | limits of DOS file systems.
|
---|
1109 |
|
---|
1110 |
|
---|
1111 | File: automake.info, Node: distcleancheck, Next: Flag Variables Ordering, Prev: limitations on file names, Up: FAQ
|
---|
1112 |
|
---|
1113 | 27.5 Files left in build directory after distclean
|
---|
1114 | ==================================================
|
---|
1115 |
|
---|
1116 | This is a diagnostic you might encounter while running `make distcheck'.
|
---|
1117 |
|
---|
1118 | As explained in *Note Dist::, `make distcheck' attempts to build and
|
---|
1119 | check your package for errors like this one.
|
---|
1120 |
|
---|
1121 | `make distcheck' will perform a `VPATH' build of your package (*note
|
---|
1122 | VPATH Builds::), and then call `make distclean'. Files left in the
|
---|
1123 | build directory after `make distclean' has run are listed after this
|
---|
1124 | error.
|
---|
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
|
---|
1133 | them for cleaning (*note Clean::), this is obvious and doesn't deserve
|
---|
1134 | more explanations.
|
---|
1135 |
|
---|
1136 | The latter bug is not always easy to understand and fix, so let's
|
---|
1137 | proceed with an example. Suppose our package contains a program for
|
---|
1138 | which we want to build a man page using `help2man'. GNU `help2man'
|
---|
1139 | produces simple manual pages from the `--help' and `--version' output
|
---|
1140 | of other commands (*note Overview: (help2man)Top.). Because we don't
|
---|
1141 | to force want our users to install `help2man', we decide to distribute
|
---|
1142 | the 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
|
---|
1153 | distcheck' 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'
|
---|
1159 | depends on a non-distributed built file: `foo$(EXEEXT)'.
|
---|
1160 | `foo$(EXEEXT)' is built by the user, so it will always appear to be
|
---|
1161 | newer than the distributed `foo.1'.
|
---|
1162 |
|
---|
1163 | `make distcheck' caught an inconsistency in our package. Our intent
|
---|
1164 | was to distribute `foo.1' so users do not need installing `help2man',
|
---|
1165 | however since this our rule causes this file to be always rebuilt,
|
---|
1166 | users _do_ need `help2man'. Either we should ensure that `foo.1' is
|
---|
1167 | not rebuilt by users, or there is no point in distributing `foo.1'.
|
---|
1168 |
|
---|
1169 | More generally, the rule is that distributed files should never
|
---|
1170 | depend on non-distributed built files. If you distribute something
|
---|
1171 | generated, distribute its sources.
|
---|
1172 |
|
---|
1173 | One way to fix the above example, while still distributing `foo.1'
|
---|
1174 | is 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)'
|
---|
1187 | changes. The `make' call makes sure `foo$(EXEEXT)' is up-to-date
|
---|
1188 | before `help2man'. Another way to ensure this would be to use separate
|
---|
1189 | directories for binaries and man pages, and set `SUBDIRS' so that
|
---|
1190 | binaries are built before man pages.
|
---|
1191 |
|
---|
1192 | We could also decide not to distribute `foo.1'. In this case it's
|
---|
1193 | fine to have `foo.1' dependent upon `foo$(EXEEXT)', since both will
|
---|
1194 | have to be rebuilt. However it would be impossible to build the
|
---|
1195 | package 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
|
---|
1199 | files are built by tools that are built by the package. The pattern is
|
---|
1200 | similar:
|
---|
1201 |
|
---|
1202 | distributed-file: built-tools distributed-sources
|
---|
1203 | build-command
|
---|
1204 |
|
---|
1205 | should be changed to
|
---|
1206 |
|
---|
1207 | distributed-file: distributed-sources
|
---|
1208 | $(MAKE) $(AM_MAKEFLAGS) built-tools
|
---|
1209 | build-command
|
---|
1210 |
|
---|
1211 | or you could choose not to distribute `distributed-file', if
|
---|
1212 | cross-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
|
---|
1226 | setting `distcleancheck_listfiles' as documented in *Note Dist::. Make
|
---|
1227 | sure you do understand the reason why `make distcheck' complains before
|
---|
1228 | you do this. `distcleancheck_listfiles' is a way to _hide_ errors, not
|
---|
1229 | to fix them. You can always do better.
|
---|
1230 |
|
---|
1231 |
|
---|
1232 | File: automake.info, Node: Flag Variables Ordering, Next: renamed objects, Prev: distcleancheck, Up: FAQ
|
---|
1233 |
|
---|
1234 | 27.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 |
|
---|
1248 | 27.6.1 Compile Flag Variables
|
---|
1249 | -----------------------------
|
---|
1250 |
|
---|
1251 | This section attempts to answer all the above questions. We will
|
---|
1252 | mostly discuss `CPPFLAGS' in our examples, but actually the answer
|
---|
1253 | holds for all the compile flags used in Automake: `CCASFLAGS',
|
---|
1254 | `CFLAGS', `CPPFLAGS', `CXXFLAGS', `FCFLAGS', `FFLAGS', `GCJFLAGS',
|
---|
1255 | `LDFLAGS', `LFLAGS', `LIBTOOLFLAGS', `OBJCFLAGS', `RFLAGS', `UPCFLAGS',
|
---|
1256 | and `YFLAGS'.
|
---|
1257 |
|
---|
1258 | `CPPFLAGS', `AM_CPPFLAGS', and `mumble_CPPFLAGS' are three variables
|
---|
1259 | that can be used to pass flags to the C preprocessor (actually these
|
---|
1260 | variables are also used for other languages like C++ or preprocessed
|
---|
1261 | Fortran). `CPPFLAGS' is the user variable (*note User Variables::),
|
---|
1262 | `AM_CPPFLAGS' is the Automake variable, and `mumble_CPPFLAGS' is the
|
---|
1263 | variable specific to the `mumble' target (we call this a per-target
|
---|
1264 | variable, *note Program and Library Variables::).
|
---|
1265 |
|
---|
1266 | Automake always uses two of these variables when compiling C sources
|
---|
1267 | files. When compiling an object file for the `mumble' target, the
|
---|
1268 | first 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
|
---|
1281 | with `$(AM_CPPFLAGS) $(CPPFLAGS)' (because there is no per-target
|
---|
1282 | variable for target `bar').
|
---|
1283 |
|
---|
1284 | The difference between `mumble_CPPFLAGS' and `AM_CPPFLAGS' being
|
---|
1285 | clear enough, let's focus on `CPPFLAGS'. `CPPFLAGS' is a user
|
---|
1286 | variable, i.e., a variable that users are entitled to modify in order
|
---|
1287 | to compile the package. This variable, like many others, is documented
|
---|
1288 | at the end of the output of `configure --help'.
|
---|
1289 |
|
---|
1290 | For instance, someone who needs to add `/home/my/usr/include' to the
|
---|
1291 | C compiler's search path would configure a package with
|
---|
1292 |
|
---|
1293 | ./configure CPPFLAGS='-I /home/my/usr/include'
|
---|
1294 |
|
---|
1295 | and 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.
|
---|
1299 | Many installers do this with `prefix', but this can be useful with
|
---|
1300 | compiler flags too. For instance, if, while debugging a C++ project,
|
---|
1301 | you need to disable optimization in one specific object file, you can
|
---|
1302 | run 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
|
---|
1310 | have the last say. It probably makes more sense if you think about it
|
---|
1311 | while looking at the `CXXFLAGS=-O0' above, which should supersede any
|
---|
1312 | other switch from `AM_CXXFLAGS' or `mumble_CXXFLAGS' (and this of
|
---|
1313 | course 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.
|
---|
1317 | Even something like
|
---|
1318 |
|
---|
1319 | CPPFLAGS = -DDATADIR=\"$(datadir)\" @CPPFLAGS@
|
---|
1320 |
|
---|
1321 | is erroneous. Although this preserves `configure''s value of
|
---|
1322 | `CPPFLAGS', the definition of `DATADIR' will disappear if a user
|
---|
1323 | attempts to override `CPPFLAGS' from the `make' command line.
|
---|
1324 |
|
---|
1325 | AM_CPPFLAGS = -DDATADIR=\"$(datadir)\"
|
---|
1326 |
|
---|
1327 | is 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
|
---|
1331 | modify these variables to perform a test, but you should reset their
|
---|
1332 | values afterwards. In contrast, it is OK to modify the `AM_' variables
|
---|
1333 | within `configure' if you `AC_SUBST' them, but it is rather rare that
|
---|
1334 | you need to do this, unless you really want to change the default
|
---|
1335 | definitions of the `AM_' variables in all `Makefile's.
|
---|
1336 |
|
---|
1337 | What we recommend is that you define extra flags in separate
|
---|
1338 | variables. For instance, you may write an Autoconf macro that computes
|
---|
1339 | a set of warning options for the C compiler, and `AC_SUBST' them in
|
---|
1340 | `WARNINGCFLAGS'; you may also have an Autoconf macro that determines
|
---|
1341 | which compiler and which linker flags should be used to link with
|
---|
1342 | library `libfoo', and `AC_SUBST' these in `LIBFOOCFLAGS' and
|
---|
1343 | `LIBFOOLDFLAGS'. Then, a `Makefile.am' could use these variables as
|
---|
1344 | follows:
|
---|
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
|
---|
1354 | substituted into `$(WARNINGCFLAGS)', and `prog2' will additionally be
|
---|
1355 | compiled with the flags required to link with `libfoo'.
|
---|
1356 |
|
---|
1357 | Note that listing `AM_CFLAGS' in a per-target `CFLAGS' variable is a
|
---|
1358 | common 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
|
---|
1362 | the flags. For instance, if there is a flag in $(WARNINGCFLAGS) that
|
---|
1363 | you 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
|
---|
1365 | forcefully appended to `CFLAGS', there would be no way to disable one
|
---|
1366 | flag. 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
|
---|
1370 | to think that this is actually a per-target variable (like
|
---|
1371 | `mumble_LDFLAGS') for some non-declared `LIBFOO' target.
|
---|
1372 |
|
---|
1373 | 27.6.2 Other Variables
|
---|
1374 | ----------------------
|
---|
1375 |
|
---|
1376 | There are other variables in Automake that follow similar principles to
|
---|
1377 | allow 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'.
|
---|
1380 | The tags and ctags rules (*note Tags::) use `ETAGSFLAGS',
|
---|
1381 | `AM_ETAGSFLAGS', `CTAGSFLAGS', and `AM_CTAGSFLAGS'. Java rules (*note
|
---|
1382 | Java::) use `JAVACFLAGS' and `AM_JAVACFLAGS'. None of these rules do
|
---|
1383 | support per-target flags (yet).
|
---|
1384 |
|
---|
1385 | To some extent, even `AM_MAKEFLAGS' (*note Subdirectories::) obeys
|
---|
1386 | this naming scheme. The slight difference is that `MAKEFLAGS' is
|
---|
1387 | passed to sub-`make's implicitly by `make' itself.
|
---|
1388 |
|
---|
1389 | However you should not think that all variables ending with `FLAGS'
|
---|
1390 | follow this convention. For instance, `DISTCHECK_CONFIGURE_FLAGS'
|
---|
1391 | (*note Dist::), `ACLOCAL_AMFLAGS' (see *Note Rebuilding:: and *Note
|
---|
1392 | Local Macros::), are two variables that are only useful to the
|
---|
1393 | maintainer and have no user counterpart.
|
---|
1394 |
|
---|
1395 | `ARFLAGS' (*note A Library::) is usually defined by Automake and has
|
---|
1396 | neither `AM_' nor per-target cousin.
|
---|
1397 |
|
---|
1398 | Finally you should not think either that the existence of a
|
---|
1399 | per-target variable implies that of an `AM_' variable or that of a user
|
---|
1400 | variable. For instance, the `mumble_LDADD' per-target variable
|
---|
1401 | overrides the global `LDADD' variable (which is not a user variable),
|
---|
1402 | and `mumble_LIBADD' exists only as a per-target variable. *Note
|
---|
1403 | Program and Library Variables::.
|
---|
1404 |
|
---|
1405 |
|
---|
1406 | File: automake.info, Node: renamed objects, Next: Per-Object Flags, Prev: Flag Variables Ordering, Up: FAQ
|
---|
1407 |
|
---|
1408 | 27.7 Why are object files sometimes renamed?
|
---|
1409 | ============================================
|
---|
1410 |
|
---|
1411 | This happens when per-target compilation flags are used. Object files
|
---|
1412 | need to be renamed just in case they would clash with object files
|
---|
1413 | compiled from the same sources, but with different flags. Consider the
|
---|
1414 | following 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
|
---|
1422 | would be bad if they shared the same object, because `generic.o' cannot
|
---|
1423 | be 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
|
---|
1428 | decide if it must rename objects. It will just rename all objects of a
|
---|
1429 | target 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
|
---|
1432 | not used. For instance, `true' and `false' will both use `version.o'
|
---|
1433 | in 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 |
|
---|
1444 | File: automake.info, Node: Per-Object Flags, Next: Multiple Outputs, Prev: renamed objects, Up: FAQ
|
---|
1445 |
|
---|
1446 | 27.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
|
---|
1454 | Ordering::). With this you can define compilation flags that apply to
|
---|
1455 | all 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,
|
---|
1463 | see *Note renamed objects::.) Note that `foo_CFLAGS' gives the flags
|
---|
1464 | to use when compiling all the C sources of the _program_ `foo', it has
|
---|
1465 | nothing 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
|
---|
1468 | specific flags, that none of the other files require? Obviously
|
---|
1469 | per-program flags are not directly applicable here. Something like
|
---|
1470 | per-object flags are expected, i.e., flags that would be used only when
|
---|
1471 | creating `foo-foo.o'. Automake does not support that, however this is
|
---|
1472 | easy to simulate using a library that contains only that object, and
|
---|
1473 | compiling 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,
|
---|
1488 | for instance `noinst_LTLIBRARIES = libfoo.la' (*note Libtool
|
---|
1489 | Convenience Libraries::).
|
---|
1490 |
|
---|
1491 | Another tempting idea to implement per-object flags is to override
|
---|
1492 | the compile rules `automake' would output for these files. Automake
|
---|
1493 | will not define a rule for a target you have defined, so you could
|
---|
1494 | think about defining the `foo-foo.o: foo.c' rule yourself. We
|
---|
1495 | recommend against this, because this is error prone. For instance, if
|
---|
1496 | you add such a rule to the first example, it will break the day you
|
---|
1497 | decide 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
|
---|
1499 | order to support dependency tracking, the two `.o'/`.obj' extensions,
|
---|
1500 | and all the other flags variables involved in a compilation, you will
|
---|
1501 | end up modifying a copy of the rule previously output by `automake' for
|
---|
1502 | this file. If a new release of Automake generates a different rule,
|
---|
1503 | your copy will need to be updated by hand.
|
---|
1504 |
|
---|
1505 |
|
---|
1506 | File: automake.info, Node: Multiple Outputs, Next: Hard-Coded Install Paths, Prev: Per-Object Flags, Up: FAQ
|
---|
1507 |
|
---|
1508 | 27.9 Handling Tools that Produce Many Outputs
|
---|
1509 | =============================================
|
---|
1510 |
|
---|
1511 | This section describes a `make' idiom that can be used when a tool
|
---|
1512 | produces multiple output files. It is not specific to Automake and can
|
---|
1513 | be used in ordinary `Makefile's.
|
---|
1514 |
|
---|
1515 | Suppose we have a program called `foo' that will read one file
|
---|
1516 | called `data.foo' and produce two files named `data.c' and `data.h'.
|
---|
1517 | We want to write a `Makefile' rule that captures this one-to-two
|
---|
1518 | dependency.
|
---|
1519 |
|
---|
1520 | The naive rule is incorrect:
|
---|
1521 |
|
---|
1522 | # This is incorrect.
|
---|
1523 | data.c data.h: data.foo
|
---|
1524 | foo data.foo
|
---|
1525 |
|
---|
1526 | What the above rule really says is that `data.c' and `data.h' each
|
---|
1527 | depend on `data.foo', and can each be built by running `foo data.foo'.
|
---|
1528 | In 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 |
|
---|
1536 | which means that `foo' can be run twice. Usually it will not be run
|
---|
1537 | twice, because `make' implementations are smart enough to check for the
|
---|
1538 | existence of the second file after the first one has been built; they
|
---|
1539 | will therefore detect that it already exists. However there are a few
|
---|
1540 | situations 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
|
---|
1550 | dependencies is the following:
|
---|
1551 |
|
---|
1552 | data.c data.h: data.foo
|
---|
1553 | foo data.foo
|
---|
1554 | data.h: data.c
|
---|
1555 |
|
---|
1556 | The 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
|
---|
1564 | needed once the first is over.
|
---|
1565 |
|
---|
1566 | Using this pattern is probably enough for most cases. However it
|
---|
1567 | does not scale easily to more output files (in this scheme all output
|
---|
1568 | files must be totally ordered by the dependency relation), so we will
|
---|
1569 | explore 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 |
|
---|
1578 | The idea is that `foo data.foo' is run only when `data.c' needs to be
|
---|
1579 | updated, but we further state that `data.h' depends upon `data.c'.
|
---|
1580 | That way, if `data.h' is required and `data.foo' is out of date, the
|
---|
1581 | dependency 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
|
---|
1585 | not rebuild `data.h'. The above rules just state that `data.c' must be
|
---|
1586 | up-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
|
---|
1589 | missing. 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
|
---|
1601 | inputs. One of the outputs is selected to serve as a witness to the
|
---|
1602 | successful completion of the command, it depends upon all inputs, and
|
---|
1603 | all other outputs depend upon it. For instance, if `foo' should
|
---|
1604 | additionally read `data.bar' and also produce `data.w' and `data.x', we
|
---|
1605 | would 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
|
---|
1617 | related 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'
|
---|
1619 | attempts to run multiple instances of the recover block at once.
|
---|
1620 |
|
---|
1621 | Let us deal with the first problem. `foo' outputs four files, but
|
---|
1622 | we 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.
|
---|
1624 | The next time `make' is run, `data.h' will appear older than `data.c',
|
---|
1625 | the second rule will be triggered, a shell will be started to execute
|
---|
1626 | the `if...fi' command, but actually it will just execute the `then'
|
---|
1627 | branch, that is: nothing. In other words, because the witness we
|
---|
1628 | selected is not the first file created by `foo', `make' will start a
|
---|
1629 | shell 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,
|
---|
1645 | rather 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
|
---|
1660 | older 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
|
---|
1665 | condition in the recover rule. If, after a successful build, a user
|
---|
1666 | erases `data.c' and `data.h', and runs `make -j', then `make' may start
|
---|
1667 | both recover rules in parallel. If the two instances of the rule
|
---|
1668 | execute `$(MAKE) $(AM_MAKEFLAGS) data.stamp' concurrently the build is
|
---|
1669 | likely to fail (for instance, the two rules will create `data.tmp', but
|
---|
1670 | only one can rename it).
|
---|
1671 |
|
---|
1672 | Admittedly, such a weird situation does not arise during ordinary
|
---|
1673 | builds. It occurs only when the build tree is mutilated. Here
|
---|
1674 | `data.c' and `data.h' have been explicitly removed without also
|
---|
1675 | removing `data.stamp' and the other output files. `make clean; make'
|
---|
1676 | will always recover from these situations even with parallel makes, so
|
---|
1677 | you may decide that the recover rule is solely to help non-parallel
|
---|
1678 | make users and leave things as-is. Fixing this requires some locking
|
---|
1679 | mechanism 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
|
---|
1701 | list of output files is not known beforehand. As an illustration,
|
---|
1702 | consider the following rules to compile many `*.el' files into `*.elc'
|
---|
1703 | files 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
|
---|
1734 | express rules with multiple output files using pattern rules (*note
|
---|
1735 | Pattern Rule Examples: (make)Pattern Examples.). We do not discuss
|
---|
1736 | pattern rules here because they are not portable, but they can be
|
---|
1737 | convenient in packages that assume GNU `make'.
|
---|
1738 |
|
---|
1739 |
|
---|
1740 | File: automake.info, Node: Hard-Coded Install Paths, Prev: Multiple Outputs, Up: FAQ
|
---|
1741 |
|
---|
1742 | 27.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
|
---|
1757 | because they are installing files to hard-coded paths. In the later
|
---|
1758 | case the path is not really hard-coded in the package, but we can
|
---|
1759 | consider it to be hard-coded in the system (or in whichever tool that
|
---|
1760 | supplies the path). As long as the path does not use any of the
|
---|
1761 | standard directory variables (`$(prefix)', `$(bindir)', `$(datadir)',
|
---|
1762 | etc.), 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
|
---|
1765 | right to install anything in `/usr' or `/usr/local'. So he does
|
---|
1766 | something like `./configure --prefix ~/usr' to install package in his
|
---|
1767 | own `~/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
|
---|
1771 | installation will fail. `make distcheck' performs such a `--prefix'
|
---|
1772 | installation, 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'
|
---|
1777 | would be better replaced by
|
---|
1778 |
|
---|
1779 | sysconf_DATA = afile
|
---|
1780 |
|
---|
1781 | by default `sysconfdir' will be `$(prefix)/etc', because this is what
|
---|
1782 | the GNU Standards require. When such a package is installed on a FHS
|
---|
1783 | compliant system, the installer will have to set `--sysconfdir=/etc'.
|
---|
1784 | As the maintainer of the package you should not be concerned by such
|
---|
1785 | site policies: use the appropriate standard directory variable to
|
---|
1786 | install your files so that installer can easily redefine these
|
---|
1787 | variables to match their site conventions.
|
---|
1788 |
|
---|
1789 | Installing files that should be used by another package, is slightly
|
---|
1790 | more involved. Let's take an example and assume you want to install
|
---|
1791 | shared library that is a Python extension module. If you ask Python
|
---|
1792 | where 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,
|
---|
1799 | non-root users will not be able to install the package, hence distcheck
|
---|
1800 | fails.
|
---|
1801 |
|
---|
1802 | Let's do better. The `sysconfig.get_python_lib()' function actually
|
---|
1803 | accepts 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
|
---|
1824 | substitution of PREFIX. So another strategy is to figure the part of
|
---|
1825 | the of the installation directory that must be preserved. For
|
---|
1826 | instance, 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
|
---|
1844 | path of emacs, and then substitutes `${libdir}' or `${datadir}'
|
---|
1845 | appropriately.
|
---|
1846 |
|
---|
1847 | The emacs case looks complicated because it processes a list and
|
---|
1848 | expect two possible layouts, otherwise it's easy, and the benefit for
|
---|
1849 | non-root users are really worth the extra `sed' invocation.
|
---|
1850 |
|
---|
1851 |
|
---|
1852 | File: automake.info, Node: History, Next: Copying This Manual, Prev: FAQ, Up: Top
|
---|
1853 |
|
---|
1854 | 28 History of Automake
|
---|
1855 | **********************
|
---|
1856 |
|
---|
1857 | This chapter presents various aspects of the history of Automake. The
|
---|
1858 | exhausted reader can safely skip it; this will be more of interest to
|
---|
1859 | nostalgic people, or to those curious to learn about the evolution of
|
---|
1860 | Automake.
|
---|
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 |
|
---|
1869 | File: automake.info, Node: Timeline, Next: Dependency Tracking Evolution, Up: History
|
---|
1870 |
|
---|
1871 | 28.1 Timeline
|
---|
1872 | =============
|
---|
1873 |
|
---|
1874 | 1994-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 |
|
---|
1916 | 1994-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 |
|
---|
1942 | 1995-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 |
|
---|
1965 | 1995-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 |
|
---|
2022 | 1995-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 |
|
---|
2035 | 1995-11-28 Automake 0.22
|
---|
2036 | 1995-11-29 Automake 0.23
|
---|
2037 | Bug fixes.
|
---|
2038 |
|
---|
2039 | 1995-12-08 Automake 0.24
|
---|
2040 | 1995-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 |
|
---|
2054 | 1995-12-18 Jim Meyering starts using Automake in GNU Textutils.
|
---|
2055 |
|
---|
2056 | 1995-12-31 Franc,ois Pinard starts using Automake in GNU tar.
|
---|
2057 |
|
---|
2058 | 1996-01-03 Automake 0.26
|
---|
2059 | 1996-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 |
|
---|
2070 | 1996-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 |
|
---|
2086 | 1996-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 |
|
---|
2093 | 1996-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 |
|
---|
2106 | 1996-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 |
|
---|
2114 | 1996-03-15 Gordon Matzigkeit starts writing libtool.
|
---|
2115 |
|
---|
2116 | 1996-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 |
|
---|
2124 | 1996-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 |
|
---|
2138 | 1996-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 |
|
---|
2150 | 1996-10-10 Kevin Dalley packages Automake 1.0 for Debian GNU/Linux.
|
---|
2151 |
|
---|
2152 | 1996-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 |
|
---|
2160 | 1997-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 |
|
---|
2190 | 1997-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 |
|
---|
2231 | 1997-07-08 Gordon Matzigkeit releases Libtool 1.0.
|
---|
2232 |
|
---|
2233 | 1998-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 |
|
---|
2240 | 1998-09-06 `sourceware.cygnus.com' is on-line.
|
---|
2241 | Sourceware was setup by Jason Molenda to host open source projects.
|
---|
2242 |
|
---|
2243 | 1998-09-19 Automake CVS repository moved to `sourceware.cygnus.com'
|
---|
2244 | 1998-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 |
|
---|
2262 | 1999-01-05 Ben Elliston releases Autoconf 2.13.
|
---|
2263 |
|
---|
2264 | 1999-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 |
|
---|
2276 | 1999-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 |
|
---|
2287 | 1999-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 |
|
---|
2291 | 2000-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 |
|
---|
2306 | 2001-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 |
|
---|
2311 | 2001-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 |
|
---|
2360 | 2001-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 |
|
---|
2366 | 2001-05-08 Automake 1.4-p1
|
---|
2367 | 2001-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 |
|
---|
2377 | 2001-05-21 Akim Demaille releases Autoconf 2.50
|
---|
2378 |
|
---|
2379 | 2001-06-07 Automake 1.4-p3
|
---|
2380 | 2001-06-10 Automake 1.4-p4
|
---|
2381 | 2001-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 |
|
---|
2387 | 2001-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 |
|
---|
2432 | 2002-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 |
|
---|
2464 | 2002-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 |
|
---|
2476 | 2002-06-14 Automake 1.6.2
|
---|
2477 |
|
---|
2478 | 2002-07-28 Automake 1.6.3
|
---|
2479 | 2002-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 |
|
---|
2486 | 2002-09-25 Automake 1.7
|
---|
2487 | This release switches to the new `configure.ac' scanner Akim was
|
---|
2488 | experimenting in 1.5.
|
---|
2489 |
|
---|
2490 | 2002-10-16 Automake 1.7.1
|
---|
2491 | 2002-12-06 Automake 1.7.2
|
---|
2492 | 2003-02-20 Automake 1.7.3
|
---|
2493 | 2003-04-23 Automake 1.7.4
|
---|
2494 | 2003-05-18 Automake 1.7.5
|
---|
2495 | 2003-07-10 Automake 1.7.6
|
---|
2496 | 2003-09-07 Automake 1.7.7
|
---|
2497 | 2003-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 |
|
---|
2501 | 2003-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 |
|
---|
2510 | 2003-11-09 Automake 1.7.9
|
---|
2511 |
|
---|
2512 | 2003-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 |
|
---|
2540 | 2004-01-11 Automake 1.8.1
|
---|
2541 | 2004-01-12 Automake 1.8.2
|
---|
2542 | 2004-03-07 Automake 1.8.3
|
---|
2543 | 2004-04-25 Automake 1.8.4
|
---|
2544 | 2004-05-16 Automake 1.8.5
|
---|
2545 |
|
---|
2546 | 2004-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 |
|
---|
2556 | 2004-08-11 Automake 1.9.1
|
---|
2557 | 2004-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 |
|
---|
2563 | File: automake.info, Node: Dependency Tracking Evolution, Next: Releases, Prev: Timeline, Up: History
|
---|
2564 |
|
---|
2565 | 28.2 Dependency Tracking in Automake
|
---|
2566 | ====================================
|
---|
2567 |
|
---|
2568 | Over the years Automake has deployed three different dependency
|
---|
2569 | tracking methods. Each method, including the current one, has had
|
---|
2570 | flaws of various sorts. Here we lay out the different dependency
|
---|
2571 | tracking methods, their flaws, and their fixes. We conclude with
|
---|
2572 | recommendations for tool writers, and by indicating future directions
|
---|
2573 | for dependency tracking work in Automake.
|
---|
2574 |
|
---|
2575 | 28.2.1 First Take
|
---|
2576 | -----------------
|
---|
2577 |
|
---|
2578 | Description
|
---|
2579 | ...........
|
---|
2580 |
|
---|
2581 | Our first attempt at automatic dependency tracking was based on the
|
---|
2582 | method recommended by GNU `make'. (*note Generating Prerequisites
|
---|
2583 | Automatically: (make)Automatic Prerequisites.)
|
---|
2584 |
|
---|
2585 | This version worked by precomputing dependencies ahead of time. For
|
---|
2586 | each source file, it had a special `.P' file that held the
|
---|
2587 | dependencies. There was a rule to generate a `.P' file by invoking the
|
---|
2588 | compiler appropriately. All such `.P' files were included by the
|
---|
2589 | `Makefile', thus implicitly becoming dependencies of `Makefile'.
|
---|
2590 |
|
---|
2591 | Bugs
|
---|
2592 | ....
|
---|
2593 |
|
---|
2594 | This 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 |
|
---|
2624 | Historical Note
|
---|
2625 | ...............
|
---|
2626 |
|
---|
2627 | The code generated by Automake is often inspired by the `Makefile'
|
---|
2628 | style of a particular author. In the case of the first implementation
|
---|
2629 | of dependency tracking, I believe the impetus and inspiration was Jim
|
---|
2630 | Meyering. (I could be mistaken. If you know otherwise feel free to
|
---|
2631 | correct me.)
|
---|
2632 |
|
---|
2633 | 28.2.2 Dependencies As Side Effects
|
---|
2634 | -----------------------------------
|
---|
2635 |
|
---|
2636 | Description
|
---|
2637 | ...........
|
---|
2638 |
|
---|
2639 | The next refinement of Automake's automatic dependency tracking scheme
|
---|
2640 | was to implement dependencies as side effects of the compilation. This
|
---|
2641 | was aimed at solving the most commonly reported problems with the first
|
---|
2642 | approach. In particular we were most concerned with eliminating the
|
---|
2643 | weird rebuilding effect associated with make clean.
|
---|
2644 |
|
---|
2645 | In this approach, the `.P' files were included using the `-include'
|
---|
2646 | command, 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.
|
---|
2650 | This avoided the performance penalty associated with scanning each file
|
---|
2651 | twice. It also let us avoid the other problems associated with the
|
---|
2652 | first, eager, implementation. For instance, dependencies would never
|
---|
2653 | be generated for a source file that was not compilable on a given
|
---|
2654 | architecture (because it in fact would never be compiled).
|
---|
2655 |
|
---|
2656 | Bugs
|
---|
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 |
|
---|
2680 | 28.2.3 Dependencies for the User
|
---|
2681 | --------------------------------
|
---|
2682 |
|
---|
2683 | Description
|
---|
2684 | ...........
|
---|
2685 |
|
---|
2686 | The bugs associated with `make dist', over time, became a real problem.
|
---|
2687 | Packages using Automake were being built on a large number of
|
---|
2688 | platforms, and were becoming increasingly complex. Broken dependencies
|
---|
2689 | were distributed in "portable" `Makefile.in's, leading to user
|
---|
2690 | complaints. Also, the requirement for `gcc' and GNU `make' was a
|
---|
2691 | constant source of bug reports. The next implementation of dependency
|
---|
2692 | tracking aimed to remove these problems.
|
---|
2693 |
|
---|
2694 | We realized that the only truly reliable way to automatically track
|
---|
2695 | dependencies was to do it when the package itself was built. This
|
---|
2696 | meant discovering a method portable to any version of make and any
|
---|
2697 | compiler. Also, we wanted to preserve what we saw as the best point of
|
---|
2698 | the second implementation: dependency computation as a side effect of
|
---|
2699 | compilation.
|
---|
2700 |
|
---|
2701 | In the end we found that most modern make implementations support
|
---|
2702 | some form of include directive. Also, we wrote a wrapper script that
|
---|
2703 | let us abstract away differences between dependency tracking methods for
|
---|
2704 | compilers. For instance, some compilers cannot generate dependencies
|
---|
2705 | as a side effect of compilation. In this case we simply have the
|
---|
2706 | script 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,
|
---|
2709 | which is assumed to be a standard Unix-like C compiler with no way to
|
---|
2710 | do dependency tracking).
|
---|
2711 |
|
---|
2712 | Bugs
|
---|
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
|
---|
2765 | command-line options to help Automake more efficiently do its job. We
|
---|
2766 | hoped this would let us avoid the use of a wrapper script when
|
---|
2767 | Automake's automatic dependency tracking was used with `gcc'.
|
---|
2768 |
|
---|
2769 | Unfortunately, this code doesn't quite do what we want. In
|
---|
2770 | particular, it removes the dependency file if the compilation fails;
|
---|
2771 | we'd prefer that it instead only touch the file in any way if the
|
---|
2772 | compilation 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
|
---|
2776 | use the `depcomp' wrapper script. This makes compilations faster for
|
---|
2777 | those using this compiler (probably our primary user base). The
|
---|
2778 | counterpart is that because we have to encode two compilation rules in
|
---|
2779 | `Makefile' (with or without `depcomp'), the produced `Makefile's are
|
---|
2780 | larger.
|
---|
2781 |
|
---|
2782 | 28.2.4 Techniques for Computing Dependencies
|
---|
2783 | --------------------------------------------
|
---|
2784 |
|
---|
2785 | There are actually several ways for a build tool like Automake to cause
|
---|
2786 | tools 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 |
|
---|
2795 | The 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 |
|
---|
2802 | The 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 |
|
---|
2816 | 28.2.5 Recommendations for Tool Writers
|
---|
2817 | ---------------------------------------
|
---|
2818 |
|
---|
2819 | We think that every compilation tool ought to be able to generate
|
---|
2820 | dependencies as a side effect of compilation. Furthermore, at least
|
---|
2821 | while `make'-based tools are nearly universally in use (at least in the
|
---|
2822 | free software community), the tool itself should generate dummy
|
---|
2823 | dependencies for header files, to avoid the deleted header file bug.
|
---|
2824 | Finally, the tool should generate a dependency for each probe, instead
|
---|
2825 | of each successful file open, in order to avoid the duplicated new
|
---|
2826 | header bug.
|
---|
2827 |
|
---|
2828 | 28.2.6 Future Directions for Automake's Dependency Tracking
|
---|
2829 | -----------------------------------------------------------
|
---|
2830 |
|
---|
2831 | Currently, only languages and compilers understood by Automake can have
|
---|
2832 | dependency tracking enabled. We would like to see if it is practical
|
---|
2833 | (and worthwhile) to let this support be extended by the user to
|
---|
2834 | languages unknown to Automake.
|
---|
2835 |
|
---|
2836 |
|
---|
2837 | File: automake.info, Node: Releases, Prev: Dependency Tracking Evolution, Up: History
|
---|
2838 |
|
---|
2839 | 28.3 Release Statistics
|
---|
2840 | =======================
|
---|
2841 |
|
---|
2842 | The following table (inspired by `perlhist(1)') quantifies the
|
---|
2843 | evolution of Automake using these metrics:
|
---|
2844 |
|
---|
2845 | Date, Rel
|
---|
2846 | The date and version of the release.
|
---|
2847 |
|
---|
2848 | am
|
---|
2849 | The number of lines of the `automake' script.
|
---|
2850 |
|
---|
2851 | acl
|
---|
2852 | The number of lines of the `aclocal' script.
|
---|
2853 |
|
---|
2854 | pm
|
---|
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 |
|
---|
2861 | m4
|
---|
2862 | The number of lines (and files) of Autoconf macros.
|
---|
2863 |
|
---|
2864 | doc
|
---|
2865 | The number of pages of the documentation (the Postscript version).
|
---|
2866 |
|
---|
2867 | t
|
---|
2868 | The number of test cases in the test suite.
|
---|
2869 |
|
---|
2870 | Date Rel am acl pm `*.am' m4 doc t
|
---|
2871 | -------------------------------------------------------------------------------
|
---|
2872 | 1994-09-19 CVS 141 299 (24)
|
---|
2873 | 1994-11-05 CVS 208 332 (28)
|
---|
2874 | 1995-11-23 0.20 533 458 (35) 9
|
---|
2875 | 1995-11-26 0.21 613 480 (36) 11
|
---|
2876 | 1995-11-28 0.22 1116 539 (38) 12
|
---|
2877 | 1995-11-29 0.23 1240 541 (38) 12
|
---|
2878 | 1995-12-08 0.24 1462 504 (33) 14
|
---|
2879 | 1995-12-10 0.25 1513 511 (37) 15
|
---|
2880 | 1996-01-03 0.26 1706 438 (36) 16
|
---|
2881 | 1996-01-03 0.27 1706 438 (36) 16
|
---|
2882 | 1996-01-13 0.28 1964 934 (33) 16
|
---|
2883 | 1996-02-07 0.29 2299 936 (33) 17
|
---|
2884 | 1996-02-24 0.30 2544 919 (32) 85 (1) 20 9
|
---|
2885 | 1996-03-11 0.31 2877 919 (32) 85 (1) 29 17
|
---|
2886 | 1996-04-27 0.32 3058 921 (31) 85 (1) 30 26
|
---|
2887 | 1996-05-18 0.33 3110 926 (31) 105 (1) 30 35
|
---|
2888 | 1996-05-28 1.0 3134 973 (32) 105 (1) 30 38
|
---|
2889 | 1997-06-22 1.2 6089 385 1294 (36) 592 (20) 37 126
|
---|
2890 | 1998-04-05 1.3 6415 422 1470 (39) 741 (23) 39 156
|
---|
2891 | 1999-01-14 1.4 7240 426 1591 (40) 734 (20) 51 197
|
---|
2892 | 2001-05-08 1.4-p1 7251 426 1591 (40) 734 (20) 51 197
|
---|
2893 | 2001-05-24 1.4-p2 7268 439 1591 (40) 734 (20) 49 197
|
---|
2894 | 2001-06-07 1.4-p3 7312 439 1591 (40) 734 (20) 49 197
|
---|
2895 | 2001-06-10 1.4-p4 7321 439 1591 (40) 734 (20) 49 198
|
---|
2896 | 2001-07-15 1.4-p5 7228 426 1596 (40) 734 (20) 51 198
|
---|
2897 | 2001-08-23 1.5 8016 475 600 2654 (39) 1166 (29) 63 327
|
---|
2898 | 2002-03-05 1.6 8465 475 1136 2732 (39) 1603 (27) 66 365
|
---|
2899 | 2002-04-11 1.6.1 8544 475 1136 2741 (39) 1603 (27) 66 372
|
---|
2900 | 2002-06-14 1.6.2 8575 475 1136 2800 (39) 1609 (27) 67 386
|
---|
2901 | 2002-07-28 1.6.3 8600 475 1153 2809 (39) 1609 (27) 67 391
|
---|
2902 | 2002-07-28 1.4-p6 7332 455 1596 (40) 735 (20) 49 197
|
---|
2903 | 2002-09-25 1.7 9189 471 1790 2965 (39) 1606 (28) 73 430
|
---|
2904 | 2002-10-16 1.7.1 9229 475 1790 2977 (39) 1606 (28) 73 437
|
---|
2905 | 2002-12-06 1.7.2 9334 475 1790 2988 (39) 1606 (28) 77 445
|
---|
2906 | 2003-02-20 1.7.3 9389 475 1790 3023 (39) 1651 (29) 84 448
|
---|
2907 | 2003-04-23 1.7.4 9429 475 1790 3031 (39) 1644 (29) 85 458
|
---|
2908 | 2003-05-18 1.7.5 9429 475 1790 3033 (39) 1645 (29) 85 459
|
---|
2909 | 2003-07-10 1.7.6 9442 475 1790 3033 (39) 1660 (29) 85 461
|
---|
2910 | 2003-09-07 1.7.7 9443 475 1790 3041 (39) 1660 (29) 90 467
|
---|
2911 | 2003-10-07 1.7.8 9444 475 1790 3041 (39) 1660 (29) 90 468
|
---|
2912 | 2003-11-09 1.7.9 9444 475 1790 3048 (39) 1660 (29) 90 468
|
---|
2913 | 2003-12-10 1.8 7171 585 7730 3236 (39) 1666 (31) 104 521
|
---|
2914 | 2004-01-11 1.8.1 7217 663 7726 3287 (39) 1686 (31) 104 525
|
---|
2915 | 2004-01-12 1.8.2 7217 663 7726 3288 (39) 1686 (31) 104 526
|
---|
2916 | 2004-03-07 1.8.3 7214 686 7735 3303 (39) 1695 (31) 111 530
|
---|
2917 | 2004-04-25 1.8.4 7214 686 7736 3310 (39) 1701 (31) 112 531
|
---|
2918 | 2004-05-16 1.8.5 7240 686 7736 3299 (39) 1701 (31) 112 533
|
---|
2919 | 2004-07-28 1.9 7508 715 7794 3352 (40) 1812 (32) 115 551
|
---|
2920 | 2004-08-11 1.9.1 7512 715 7794 3354 (40) 1812 (32) 115 552
|
---|
2921 | 2004-09-19 1.9.2 7512 715 7794 3354 (40) 1812 (32) 132 554
|
---|
2922 | 2004-11-01 1.9.3 7507 718 7804 3354 (40) 1812 (32) 134 556
|
---|
2923 | 2004-12-18 1.9.4 7508 718 7856 3361 (40) 1811 (32) 140 560
|
---|
2924 | 2005-02-13 1.9.5 7523 719 7859 3373 (40) 1453 (32) 142 562
|
---|
2925 | 2005-07-10 1.9.6 7539 699 7867 3400 (40) 1453 (32) 144 570
|
---|
2926 | 2006-10-15 1.10 7859 1072 8024 3512 (40) 1496 (34) 172 604
|
---|
2927 |
|
---|
2928 |
|
---|
2929 | File: automake.info, Node: Copying This Manual, Next: Indices, Prev: History, Up: Top
|
---|
2930 |
|
---|
2931 | Appendix A Copying This Manual
|
---|
2932 | ******************************
|
---|
2933 |
|
---|
2934 | * Menu:
|
---|
2935 |
|
---|
2936 | * GNU Free Documentation License:: License for copying this manual
|
---|
2937 |
|
---|
2938 |
|
---|
2939 | File: automake.info, Node: GNU Free Documentation License, Up: Copying This Manual
|
---|
2940 |
|
---|
2941 | A.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 |
|
---|
3339 | A.1.1 ADDENDUM: How to use this License for your documents
|
---|
3340 | ----------------------------------------------------------
|
---|
3341 |
|
---|
3342 | To use this License in a document you have written, include a copy of
|
---|
3343 | the License in the document and put the following copyright and license
|
---|
3344 | notices 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
|
---|
3355 | Texts, 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
|
---|
3362 | combination of the three, merge those two alternatives to suit the
|
---|
3363 | situation.
|
---|
3364 |
|
---|
3365 | If your document contains nontrivial examples of program code, we
|
---|
3366 | recommend releasing these examples in parallel under your choice of
|
---|
3367 | free software license, such as the GNU General Public License, to
|
---|
3368 | permit their use in free software.
|
---|
3369 |
|
---|
3370 |
|
---|
3371 | File: automake.info, Node: Indices, Prev: Copying This Manual, Up: Top
|
---|
3372 |
|
---|
3373 | Appendix 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 |
|
---|
3383 | File: automake.info, Node: Macro Index, Next: Variable Index, Up: Indices
|
---|
3384 |
|
---|
3385 | B.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 |
|
---|
3461 | File: automake.info, Node: Variable Index, Next: General Index, Prev: Macro Index, Up: Indices
|
---|
3462 |
|
---|
3463 | B.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 |
|
---|
3776 | File: automake.info, Node: General Index, Prev: Variable Index, Up: Indices
|
---|
3777 |
|
---|
3778 | B.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 |
|
---|